ERP-node/frontend/lib/v2-core/init.ts

97 lines
2.0 KiB
TypeScript
Raw Normal View History

/**
* V2 Core
*
* V2 .
*/
import { v2EventBus } from "./events";
import { legacyEventAdapter } from "./adapters";
let isInitialized = false;
export interface V2CoreOptions {
/** 디버그 모드 활성화 */
debug?: boolean;
/** 레거시 이벤트 브릿지 설정 */
legacyBridge?: {
/** 레거시 → V2 브릿지 활성화 (기본값: true) */
legacyToV2?: boolean;
/** V2 → 레거시 브릿지 활성화 (기본값: true) */
v2ToLegacy?: boolean;
};
}
/**
* V2 Core
*
* @param options -
*
* @example
* ```typescript
* // app/layout.tsx 또는 진입점에서 호출
* import { initV2Core } from "@/lib/v2-core";
*
* // 기본 초기화
* initV2Core();
*
* // 디버그 모드 및 커스텀 설정
* initV2Core({
* debug: process.env.NODE_ENV === "development",
* legacyBridge: {
* legacyToV2: true,
* v2ToLegacy: true,
* },
* });
* ```
*/
export function initV2Core(options?: V2CoreOptions): void {
if (isInitialized) {
console.warn("[V2Core] 이미 초기화되어 있습니다.");
return;
}
const {
debug = process.env.NODE_ENV === "development",
legacyBridge = { legacyToV2: true, v2ToLegacy: true },
} = options ?? {};
// 디버그 모드 설정
v2EventBus.debug = debug;
// 레거시 이벤트 브릿지 초기화
legacyEventAdapter.init(legacyBridge);
isInitialized = true;
}
/**
* V2 Core
*
* V2
*/
export function cleanupV2Core(): void {
if (!isInitialized) {
return;
}
console.log("[V2Core] 정리 시작...");
// 레거시 어댑터 정리
legacyEventAdapter.destroy();
// 이벤트 버스 정리
v2EventBus.clear();
isInitialized = false;
console.log("[V2Core] 정리 완료");
}
/**
* V2 Core
*/
export function isV2CoreInitialized(): boolean {
return isInitialized;
}