Files
vexplor/frontend/lib/v2-core/init.ts
kjs b39c98c73f feat: V2 Core 및 이벤트 시스템 추가
- V2 Core 라이브러리를 추가하여 느슨한 결합 아키텍처를 지원합니다.
- V2 EventBus를 통해 타입 안전한 이벤트 발행 및 구독 기능을 구현하였습니다.
- V2ErrorBoundary 컴포넌트를 추가하여 각 컴포넌트의 에러를 격리하고, 사용자 정의 폴백 UI 및 재시도 기능을 제공합니다.
- UnifiedRepeater 및 ButtonPrimaryComponent에서 V2 EventBus를 활용하여 이벤트 처리 로직을 개선하였습니다.
- 레거시 이벤트와의 호환성을 위해 LegacyEventAdapter를 추가하여 점진적 마이그레이션을 지원합니다.
- V2 컴포넌트 간의 통신을 위한 이벤트 타입을 정의하였습니다.
2026-01-26 11:34:31 +09:00

104 lines
2.1 KiB
TypeScript

/**
* 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 ?? {};
console.log("[V2Core] 초기화 시작...");
// 디버그 모드 설정
v2EventBus.debug = debug;
// 레거시 이벤트 브릿지 초기화
legacyEventAdapter.init(legacyBridge);
isInitialized = true;
console.log("[V2Core] 초기화 완료", {
debug,
legacyBridge: legacyEventAdapter.active,
});
}
/**
* 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;
}