sales-frontend-bridge 0.0.62 → 0.0.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -33,8 +33,15 @@ var IframeBridgeCore = class extends CommonBridgeCore {
33
33
  __publicField(this, "pendingPromises", /* @__PURE__ */ new Map());
34
34
  __publicField(this, "responseHandler");
35
35
  if (!salesFrontendUtils.isClient()) {
36
+ console.warn("[IframeBridgeCore] \uD074\uB77C\uC774\uC5B8\uD2B8 \uD658\uACBD\uC774 \uC544\uB2D9\uB2C8\uB2E4.");
36
37
  return;
37
38
  }
39
+ const platform = salesFrontendUtils.getDspExecutionEnvironment();
40
+ if (platform !== "iframe") {
41
+ console.warn(`[IframeBridgeCore] iframe \uD658\uACBD\uC774 \uC544\uB2D9\uB2C8\uB2E4. (\uD604\uC7AC: ${platform})`);
42
+ return;
43
+ }
44
+ console.log("[IframeBridgeCore] iframe \uD658\uACBD\uC5D0\uC11C \uCD08\uAE30\uD654 \uC2DC\uC791");
38
45
  this.initializeIframeBridge();
39
46
  }
40
47
  /**
@@ -74,12 +81,13 @@ var IframeBridgeCore = class extends CommonBridgeCore {
74
81
  * @param event
75
82
  */
76
83
  handleMessageEventResponse(event) {
77
- const { promiseId, isSuccess, data } = event.data;
84
+ const { eventName, promiseId, isSuccess, data } = event.data;
85
+ console.log("[IframeBridgeCore] \uBA54\uC2DC\uC9C0 \uBC1B\uC74C:", { eventName, promiseId, isSuccess, data });
78
86
  if (this.responseHandler) {
79
- this.responseHandler({ promiseId, isSuccess, data });
87
+ this.responseHandler({ eventName, promiseId, isSuccess, data });
80
88
  }
81
89
  if (this.pendingPromises.has(promiseId)) {
82
- this.handleIframeBridgePromise({ promiseId, isSuccess, data });
90
+ this.handleIframeBridgePromise({ eventName, promiseId, isSuccess, data });
83
91
  }
84
92
  }
85
93
  /**
@@ -102,22 +110,13 @@ var IframeBridgeCore = class extends CommonBridgeCore {
102
110
  jsonParam: { ...restOption }
103
111
  };
104
112
  console.log("[IframeBridgeCore callToIframe] command::", command);
105
- const platform = salesFrontendUtils.getDspExecutionEnvironment();
106
- if (platform === "iframe") {
107
- console.log("[IframeBridgeCore callToIframe] \uBD80\uBAA8 \uD638\uCD9C \uC9C1\uC804");
108
- window.parent.postMessage(command, "*");
109
- const promise = this.pendingPromises.get(promiseId);
110
- if (promise) {
111
- this.pendingPromises.delete(promiseId);
112
- promise.resolve(true);
113
- }
114
- return;
113
+ console.log("[IframeBridgeCore callToIframe] \uBD80\uBAA8 \uD638\uCD9C \uC9C1\uC804");
114
+ window.parent.postMessage(command, "*");
115
+ const promise = this.pendingPromises.get(promiseId);
116
+ if (promise) {
117
+ this.pendingPromises.delete(promiseId);
118
+ promise.resolve(true);
115
119
  }
116
- console.warn(
117
- `[IframeBridgeCore callToIframe] \uD604\uC7AC \uD50C\uB7AB\uD3FC(${platform})\uC5D0\uC11C\uB294 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uC11C\uBE44\uC2A4(${eventName})\uC785\uB2C8\uB2E4.`
118
- );
119
- this.pendingPromises.delete(promiseId);
120
- reject(new Error(`[IframeBridgeCore callToIframe] Unsupported platform: ${platform}`));
121
120
  } catch (error) {
122
121
  console.error("[IframeBridgeCore callToIframe] error::", error);
123
122
  this.pendingPromises.delete(promiseId);
@@ -152,14 +151,6 @@ var IframeBridge = class extends CommonBridge {
152
151
  hello() {
153
152
  console.log("[IframeBridge] hello");
154
153
  }
155
- /**
156
- * 영업포탈 tab open
157
- * @param option
158
- * @returns
159
- */
160
- async openMdi(option) {
161
- return this.core.callToTarget("openMdi", option);
162
- }
163
154
  /**
164
155
  * 영업포털 부모의 세션연장, 오픈되어 있는 타 시스템 세션타임 연장
165
156
  * @returns
@@ -364,25 +355,6 @@ var NativeBridge = class extends CommonBridge {
364
355
  async getParameterMap() {
365
356
  return this.core.callToTarget("getParameterMap");
366
357
  }
367
- async dismissPopup(options) {
368
- return this.core.callToTarget("dismissPopup", options);
369
- }
370
- /**
371
- *
372
- * @param options
373
- * @returns
374
- */
375
- async showWebPopup(options) {
376
- return this.core.callToTarget("showWebPopup", options);
377
- }
378
- /**
379
- *
380
- * @param options
381
- * @returns
382
- */
383
- async jumpSafari(options) {
384
- return this.core.callToTarget("jumpSafari", options);
385
- }
386
358
  /**
387
359
  * 기능명: 본인인증 결과 정보 넘기기
388
360
  * 목적: NXL One 에서 본인인증 결과 값을 네이티브로 넘기기 위함
@@ -584,11 +556,11 @@ var NativeBridge = class extends CommonBridge {
584
556
  * @example
585
557
  * ```tsx
586
558
  * // 사용 예시
587
- * Bridge.native.openWeb()
559
+ * Bridge.native.openWeb({ url: 'url', headerTitle: '타이틀', headerType: 'APP', removeNavStack: true });
588
560
  * ```
589
561
  */
590
- openWeb(options) {
591
- return this.core.callToTarget("openWeb", options);
562
+ openWeb({ headerType = "APP", removeNavStack = false, ...rest }) {
563
+ return this.core.callToTarget("openWeb", { headerType, removeNavStack, ...rest });
592
564
  }
593
565
  /**
594
566
  * 웹뷰 닫기
@@ -623,6 +595,28 @@ var NativeBridge = class extends CommonBridge {
623
595
  getAppInfo() {
624
596
  return this.core.callToTarget("getAppInfo");
625
597
  }
598
+ /**
599
+ * 네이티브 헤더 타이틀 변경
600
+ * @example
601
+ * ```tsx
602
+ * // 사용 예시
603
+ * Bridge.native.setHeaderTitle({ headerTitle: '타이틀명' });
604
+ * ```
605
+ */
606
+ setHeaderTitle(options) {
607
+ return this.core.callToTarget("setHeaderTitle", options);
608
+ }
609
+ /**
610
+ * 네이티브 헤더 show / hide
611
+ * @example
612
+ * ```tsx
613
+ * // 사용 예시
614
+ * Bridge.native.hideHeader({ hideHeader: true });
615
+ * ```
616
+ */
617
+ hideHeader(options) {
618
+ return this.core.callToTarget("hideHeader", options);
619
+ }
626
620
  // TODO: 필요 플러그인들 추가
627
621
  };
628
622
 
@@ -868,6 +862,7 @@ var Bridge = {
868
862
  nativeCore: new NativeBridgeCore(),
869
863
  iframeCore: new IframeBridgeCore()
870
864
  };
865
+ //! 필요시 (부모 > 자식): hmpLogout(로그아웃처리), prxSessionExts(세션연장) 이벤트 구현
871
866
 
872
867
  exports.Bridge = Bridge;
873
868
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/common-bridge.ts","../src/common/common-bridge-core.ts","../src/iframe/core/iframe-bridge-core.ts","../src/iframe/bridge/iframe-bridge.ts","../src/native/core/native-bridge-core.ts","../src/native/bridge/native-bridge.ts","../src/native/bridge-oz/native-bridge-oz.ts","../src/bridge.ts"],"names":["isClient","MessageEventManager","getDspExecutionEnvironment","isStorybookEnv","isFpPlannerApp"],"mappings":"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","file":"index.cjs","sourcesContent":["import { ICommonBridge } from './common-bridge.types';\n\n/**\n * Business Layer Bridge\n * 비즈니스를 호출하는(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridge implements ICommonBridge {\n protected commonHello(): void {\n console.log('commonHello');\n }\n\n abstract hello(): void;\n}\n","/**\n * Core Layer Bridge\n * Core(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridgeCore {\n /**\n * 코어에서 사용할 프로미스 ID 생성 함수\n * @returns\n */\n protected generatePromiseId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).slice(2, 11);\n\n return `${timestamp}_${random}`;\n }\n\n /**\n * core에서 구현해야할 함수\n * @param action\n * @param options\n */\n abstract callToTarget<T>(action: string, options?: Record<string, unknown>): Promise<T>;\n}\n","import { getDspExecutionEnvironment, isClient } from 'sales-frontend-utils';\nimport { MessageEventManager } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport {\n IframeEventName,\n IframeBridgeCommand,\n IframeBridgeOptions,\n IframeBridgePromise,\n IframeBridgeResponseHandler,\n IframeBridgeResponseData\n} from './iframe-bridge-core.types';\n\n/**\n * Iframe Bridge 통신 위한 핵심 클래스\n * 담당: 부모 호출, Promise 관리\n */\nexport class IframeBridgeCore extends CommonBridgeCore {\n private pendingPromises = new Map<string, IframeBridgePromise>();\n private responseHandler?: IframeBridgeResponseHandler;\n\n constructor() {\n super();\n if (!isClient()) {\n return;\n }\n\n this.initializeIframeBridge();\n }\n\n /**\n * 사용하는 쪽에서 응답핸들러를 사용할 수 있도록 필요시, 응답 처리 핸들러 설정\n */\n setResponseHandler(handler: IframeBridgeResponseHandler): void {\n this.responseHandler = handler;\n }\n\n handleIframeBridgePromise(response: IframeBridgeResponseData): boolean {\n const { promiseId, isSuccess, data } = response;\n\n const promise = this.pendingPromises.get(promiseId);\n if (promise) {\n this.pendingPromises.delete(promiseId);\n\n if (isSuccess) {\n promise.resolve(data);\n } else {\n promise.reject(new Error(data));\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * 특정 Promise 존재 여부 확인\n */\n hasPromise(promiseId: string): boolean {\n return this.pendingPromises.has(promiseId);\n }\n\n /**\n * 네이티브 통신을 위해 window.n2bridge 객체 초기화\n */\n private initializeIframeBridge(): void {\n // MessageEventManager에 핸들러 등록(영업포털-웹간 주고받기)\n MessageEventManager.getInstance().registerHandler('iframe-bridge', this.handleMessageEventResponse.bind(this));\n }\n\n /**\n * 브릿지 메시지 이벤트 핸들러\n * @param event\n */\n private handleMessageEventResponse(event: MessageEvent): void {\n const { promiseId, isSuccess, data } = event.data as IframeBridgeResponseData;\n\n // 등록된 핸들러가 있으면 실행\n if (this.responseHandler) {\n this.responseHandler({ promiseId, isSuccess, data });\n }\n\n // 기본 처리\n if (this.pendingPromises.has(promiseId)) {\n this.handleIframeBridgePromise({ promiseId, isSuccess, data });\n }\n }\n\n /**\n * Iframe 통신\n * @param eventName\n * @param option\n * @returns\n */\n async callToTarget<T = boolean>(eventName: IframeEventName, option?: IframeBridgeOptions): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${eventName}_${this.generatePromiseId()}`;\n\n // Promise 등록\n this.pendingPromises.set(promiseId, { resolve, reject });\n\n const { menuUrl, menuNm, ...restOption } = option ?? {};\n\n try {\n const command: IframeBridgeCommand = {\n eventName,\n promiseId,\n menuUrl,\n menuNm,\n jsonParam: { ...restOption }\n };\n\n console.log('[IframeBridgeCore callToIframe] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'iframe') {\n console.log('[IframeBridgeCore callToIframe] 부모 호출 직전');\n\n window.parent.postMessage(command, '*');\n\n // TODO: 부모에서 event.source.postMessage({ promiseId, isSuccess, data }); 형태로 보내줄 수 있다면 소스 삭제\n const promise = this.pendingPromises.get(promiseId);\n if (promise) {\n this.pendingPromises.delete(promiseId);\n promise.resolve(true as T);\n }\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(\n `[IframeBridgeCore callToIframe] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${eventName})입니다.`\n );\n\n this.pendingPromises.delete(promiseId);\n reject(new Error(`[IframeBridgeCore callToIframe] Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[IframeBridgeCore callToIframe] error::', error);\n this.pendingPromises.delete(promiseId);\n reject(error);\n }\n });\n }\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { IframeBridgeCore } from '../core/iframe-bridge-core';\nimport { IframeBridgeResponseHandler, IframeBridgeResponseData } from '../core/iframe-bridge-core.types';\n\nimport { OpenMdiOption, DspMenuWindowOpenOption, dspSimpleWindowOpen } from './iframe-bridge-options.types';\nimport { IIframeBridge } from './iframe-bridge.types';\n\n/**\n * iframe(영업포탈) 전용 Bridge\n */\nexport class IframeBridge extends CommonBridge implements IIframeBridge {\n private core: IframeBridgeCore;\n\n constructor() {\n super();\n this.core = new IframeBridgeCore();\n }\n\n // 응답 핸들러 설정\n setResponseHandler(handler: IframeBridgeResponseHandler): void {\n this.core.setResponseHandler(handler);\n }\n\n // Promise 직접 제어 메서드들 추가\n handleIframeBridgePromise(response: IframeBridgeResponseData): boolean {\n return this.core.handleIframeBridgePromise(response);\n }\n\n // 유틸리티 메서드들도 추가\n hasPromise(promiseId: string): boolean {\n return this.core.hasPromise(promiseId);\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수(test)\n */\n hello(): void {\n console.log('[IframeBridge] hello');\n }\n\n /**\n * 영업포탈 tab open\n * @param option\n * @returns\n */\n async openMdi(option: OpenMdiOption): Promise<boolean> {\n return this.core.callToTarget('openMdi', option);\n }\n\n /**\n * 영업포털 부모의 세션연장, 오픈되어 있는 타 시스템 세션타임 연장\n * @returns\n */\n async dspKeepCallerSession(): Promise<boolean> {\n return this.core.callToTarget('dspKeepCallerSession');\n }\n\n /**\n * 영업포털 메뉴정보에 있는 메뉴 오픈(새탭 생성)\n * @param option\n * @returns\n */\n async dspMenuWindowOpen(option: DspMenuWindowOpenOption): Promise<boolean> {\n return this.core.callToTarget('dspMenuWindowOpen', option);\n }\n\n /**\n * 영업포털 메뉴정보에 없는 메뉴를 오픈(새탭 생성 & 약속된 타켓 메뉴정보를 해당 시스템에 전달)\n * @param option\n * @returns\n */\n async dspSimpleWindowOpen(option: dspSimpleWindowOpen): Promise<boolean> {\n return this.core.callToTarget('dspSimpleWindowOpen', option);\n }\n // TODO: 필요 플러그인들 추가\n}\n","import { getDspExecutionEnvironment, isClient, isStorybookEnv, isFpPlannerApp } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport type {\n NativeBridgeCommand,\n NativeBridgePromise,\n NativeBridgeOptions,\n PromiseHandleBridge,\n CallBridge\n} from './native-bridge-core.types';\n\n/**\n * Native <-> Web 처리를 위한 핵심 클래스\n * 담당: 앱 호출, Promise 관리\n */\nexport class NativeBridgeCore<TAction extends string> extends CommonBridgeCore {\n private promiseHandleName: string;\n private callBridgeName: string;\n\n constructor(callBridgeName = 'n2Bridge', promiseHandleName = 'n2bridge') {\n super();\n\n this.callBridgeName = callBridgeName;\n this.promiseHandleName = promiseHandleName;\n\n this.initializeWindowOzBridge();\n }\n\n /**\n * Promise 관리용 브릿지 객체 가져오기 (window.n2bridge)\n */\n private getPromiseHandleBridge(): PromiseHandleBridge {\n return (window as any)[this.promiseHandleName] as PromiseHandleBridge;\n }\n\n /**\n * 앱 호출용 브릿지 객체 가져오기 (window.n2Bridge)\n */\n private getCallBridge(): CallBridge {\n return (window as any)[this.callBridgeName] as CallBridge;\n }\n\n /**\n * 네이티브 통신을 위해 window.n2OzBridge 객체 초기화\n */\n private initializeWindowOzBridge(): void {\n if (!isClient()) {\n return;\n } // SSR 환경에서는 아무것도 하지 않음\n if (!(window as any)[this.promiseHandleName]) {\n (window as any)[this.promiseHandleName] = {\n promises: {},\n resolvePromise: () => {},\n finallyResolvePromise: () => {},\n callFromNative: () => {}\n };\n }\n\n const bridge = this.getPromiseHandleBridge();\n\n // 항상 최신 함수로 업데이트\n bridge.resolvePromise = this.createResolvePromiseHandler();\n bridge.finallyResolvePromise = this.createFinallyResolvePromiseHandler();\n\n if (isStorybookEnv() && window.parent) {\n // 스토리북에서는 현재 스토리가 iframe으로 로드되므로 앱에서 부모 프레임에 브릿지를 리턴해도 자식으로 전달되도록 보정하는 코드\n (window.parent as any)[this.promiseHandleName] = bridge;\n window.parent.dispatchEvent = (...args) => window.dispatchEvent.apply(null, args);\n }\n }\n\n /**\n * Promise 처리 함수(Native에서 호출)\n * @returns\n */\n private createResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n console.log('[NativeBridgeCore resolvePromise]::', promiseId, data, error);\n\n const bridge = this.getPromiseHandleBridge();\n\n const promise: NativeBridgePromise | undefined = bridge.promises[promiseId];\n if (!promise) {\n console.error('[NativeBridgeCore resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[NativeBridgeCore resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Promise 최종 처리 함수\n * @returns\n */\n private createFinallyResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n const bridge = this.getPromiseHandleBridge();\n\n const promise: NativeBridgePromise | undefined = bridge.promises[promiseId];\n if (!promise) {\n console.error('[NativeBridgeCore resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[NativeBridgeCore resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * 네이티브 통신\n * @param action\n * @param options\n * @returns\n */\n async callToTarget<T>(action: TAction, option: NativeBridgeOptions = {}): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${action}_${this.generatePromiseId()}`;\n console.log('[NativeBridgeCore callToNative] promiseId::', promiseId);\n\n const bridge = this.getPromiseHandleBridge();\n\n // 바로 window.promiseHandler에 promises에 저장\n bridge.promises[promiseId] = {\n resolve: (value: T) => {\n resolve(value);\n },\n reject: (reason?: any) => {\n reject(reason);\n }\n };\n\n try {\n const command: NativeBridgeCommand = {\n action,\n promiseId,\n option\n };\n\n console.log('[NativeBridgeCore callToNative] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'android-webview') {\n const callBridge = this.getCallBridge();\n callBridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios-webview') {\n const message = isFpPlannerApp()\n ? { ...command, service: 'native' } // 플래너: service 추가\n : command;\n\n (window.webkit?.messageHandlers as any)?.[this.callBridgeName]?.postMessage(JSON.stringify(message));\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(\n `[NativeBridgeCore callToNative] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${action})입니다.`\n );\n this.cleanupPromise(promiseId);\n reject(new Error(`[NativeBridgeCore callToNative] Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[NativeBridgeCore callToNative] error::', error);\n this.cleanupPromise(promiseId);\n reject(error);\n }\n });\n }\n\n /**\n * promiseId를 초기화 해줍니다.\n * @param promiseId\n */\n private cleanupPromise(promiseId: string): void {\n const bridge = this.getPromiseHandleBridge();\n delete bridge.promises[promiseId];\n }\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n OnAuthenticationResultRequest,\n OnAuthenticationResultResponse,\n GetAccessTokenResponse,\n GetAnalyticsUserPropertyResponse,\n GetOzFontParamResponse,\n GetAppInfoResponse\n} from './native-bridge-dto.types';\nimport type {\n ShowWebPopupOptions,\n CommonOzBridgetResponseType,\n DownloadOzdOptions,\n OpenBrowserOptions,\n CreateOZViewerOptions,\n OpenWebOptions,\n localFetchBridgeOptions\n} from './native-bridge-options.types';\nimport type { INativeBridge, NativeAction } from './native-bridge.types';\n\n/**\n * App - Web Bridge\n */\nexport class NativeBridge extends CommonBridge implements INativeBridge {\n private core: NativeBridgeCore<NativeAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeAction>();\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * getParameterMap\n * @returns\n */\n async getParameterMap<T = any>(): Promise<T> {\n return this.core.callToTarget<T>('getParameterMap');\n }\n\n async dismissPopup<T = any>(options?: any): Promise<T> {\n return this.core.callToTarget<T>('dismissPopup', options);\n }\n\n /**\n *\n * @param options\n * @returns\n */\n async showWebPopup<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToTarget<T>('showWebPopup', options);\n }\n\n /**\n *\n * @param options\n * @returns\n */\n async jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToTarget<T>('jumpSafari', options);\n }\n\n /**\n * 기능명: 본인인증 결과 정보 넘기기\n * 목적: NXL One 에서 본인인증 결과 값을 네이티브로 넘기기 위함\n * @param options\n * @returns\n */\n async onAuthenticationResult(options: OnAuthenticationResultRequest): Promise<OnAuthenticationResultResponse> {\n return this.core.callToTarget('onAuthenticationResult', options);\n }\n\n /**\n * Access Token 가져오기\n * @returns\n */\n async getAccessToken(): Promise<GetAccessTokenResponse> {\n return this.core.callToTarget('getAccessToken');\n }\n\n /**\n * ### Bridge for Oz\n * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.createReportEx({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n createOZViewer(options: CreateOZViewerOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'createOZViewer',\n // delimiter 미입력시 \\n 으로 기본값 처리\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * OZ 뷰어를 닫습니다\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideViewer();\n * ```\n */\n hideOZViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOZViewer');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 OZD를 다운받는 브릿지입니다\n * @example\n * ```tsx\n * const options = {\n * // 현재 증권번호\n * policyNumber: \"300034894\",\n * // FP 사번\n * fpInfo: { \"uniqNo\": \"2210000\" }\n * // 서식 목록들\n * data: [{\n * // 서식에 대한 정보들\n * \"name\": \"[A0010]청약서\",\n * \"complete\": false,\n * \"startPage\": 0,\n * \"endPage\": 0,\n * \"focus\": false,\n * \"doc\": [{\n * // 서식에 속한 OZD 파일들\n * \"docCode\": \"A0010\",\n * \"fileID\": \"1HLqZJCNt6idLKkAA\",\n * \"imageFormatCode\": \"RT003001\",\n * \"imageDocumentTypeCode\": \"IT00\",\n * // ozd 파일이 다운로드된 경로\n * \"filePath\": \"\",\n * \"startPage\": 0,\n * \"endPage\": 0\n * }]\n * }, ],\n * }\n * await Bridge.native.downloadDocument(options)\n * ```\n */\n async downloadDocument(options: DownloadOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<DownloadOzdOptions>>('downloadDocument', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getOzFontParam()\n * ```\n */\n async getOzFontParam() {\n return this.core.callToTarget<CommonOzBridgetResponseType<GetOzFontParamResponse>>('getOzFontParam');\n }\n\n /**\n * ### Bridge for Oz\n * 로더 컴포넌트 show\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.showLoader()\n * ```\n */\n async showLoader() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showLoader');\n }\n\n /**\n * ### Bridge for Oz\n * 로더 컴포넌트 hide\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideLoader()\n * ```\n */\n async hideLoader() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideLoader');\n }\n\n /**\n * ### Bridge for Oz\n * 태블릿 로컬에 있는 파일을 fetch하기 위한 url을 만들어주는 브릿지\n *\n * 파일의 절대경로는 saveSignImg 혹은 pdfExport시 확보할수 있다\n * @example\n * ```tsx\n * await Bridge.native.localFetchBridge({filePath: \"/data/0/~~~/file.ext\"});\n * ```\n */\n async localFetchBridge(options: localFetchBridgeOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('localFetchBridge', options);\n }\n\n /**\n * 홈 이동\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.goHome()\n * ```\n */\n goHome(): Promise<string> {\n return this.core.callToTarget('goHome');\n }\n\n /**\n * 전체메뉴 열기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.showMenu()\n * ```\n */\n showMenu(): Promise<string> {\n return this.core.callToTarget('showMenu');\n }\n\n /**\n * GA4 정보 얻기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAnalyticsUserProperty()\n * ```\n */\n getAnalyticsUserProperty(): Promise<GetAnalyticsUserPropertyResponse> {\n return this.core.callToTarget('getAnalyticsUserProperty');\n }\n\n /**\n *외부 브라우저 호출\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAnalyticsUserProperty()\n * ```\n */\n openBrowser(options: OpenBrowserOptions): Promise<string> {\n return this.core.callToTarget('openBrowser', options);\n }\n\n /**\n * 웹뷰 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideWebPopup()\n * ```\n */\n hideWebPopup(): Promise<string> {\n return this.core.callToTarget('hideWebPopup');\n }\n\n /**\n * OnePass 인증\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.requestAuthentication()\n * ```\n */\n requestAuthentication(): Promise<string> {\n return this.core.callToTarget('requestAuthentication');\n }\n\n /**\n * 웹뷰 띄우기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.openWeb()\n * ```\n */\n openWeb(options: OpenWebOptions): Promise<string> {\n return this.core.callToTarget('openWeb', options);\n }\n\n /**\n * 웹뷰 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.closeWeb()\n * ```\n */\n closeWeb(): Promise<string> {\n return this.core.callToTarget('closeWeb');\n }\n\n /**\n * 앱 종료\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.exitApp()\n * ```\n */\n exitApp(): Promise<string> {\n return this.core.callToTarget('exitApp');\n }\n\n /**\n * 앱 정보 가져오기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAppInfo()\n * ```\n */\n getAppInfo(): Promise<GetAppInfoResponse> {\n return this.core.callToTarget('getAppInfo');\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { CommonOzBridgetResponseType } from '../bridge/native-bridge-options.types';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n UpdateOzdOptions,\n createOzPdfViewerOptions,\n ShowAlertOptions\n} from './native-bridge-oz-options.types';\nimport type { INativeBridgeOz, NativeOzAction } from './native-bridge-oz.types';\n\n/**\n * App - Web Bridge(for OZ)\n */\nexport class NativeBridgeOz extends CommonBridge implements INativeBridgeOz {\n private core: NativeBridgeCore<NativeOzAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeOzAction>('n2OzBridge', 'n2ozBridge');\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 정보를 가져옵니다\n * @example\n * ```tsx\n * // 사용 예시:\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * // 리턴값이 null이 나올수 있음\n * const { data } = await Bridge.nativeOz.getInformation({ command: 'INPUT_JSON' });\n * ```\n */\n async getInformation(options: GetInformationOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getInformation', options);\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 가져옵니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * await Bridge.nativeOz.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal(options: GetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // value 자리에 string이 아닌 값을 넣어도 getGlobal시 string으로 변환되어 리턴됩니다\n * Bridge.nativeOz.setGlobal({ key: \"AAA\", value: \"myValue\" });\n * ```\n */\n setGlobal(options: SetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<boolean | null>>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * Bridge.nativeOz.script({ command });\n * ```\n */\n script(options: ScriptOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('script', options);\n }\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * Bridge.nativeOz.scriptEX({ command, param });\n * ```\n */\n scriptEx(options: ScriptExOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'scriptEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * - 서명이미지 크롭\n * - 중간저장 서명이미지 추출\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex(options: TriggerExternalEventByDocIndexOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.updateOzDocumentStatus(document);\n * ```\n */\n async updateOzDocumentStatus(options: UpdateOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('updateOzDocumentStatus', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식을 PDF로 export 요청\n * export 결과는 `OZViewerEvent.OZExportCommand`로 트리거 된다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.savePdf({ exportType: \"PDF\", fileName: \"test.pdf\", startPage: 1, endPage: 1 })\n * ```\n */\n async savePdf(options: SavePdfOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'savePdf',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.saveSignImg({ fileName: 'sign.png', signImageKey: 'A0010_mynm_sg', policyNumber });\n * ```\n */\n async saveSignImg(options: SaveSignImgOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.createOzPdfViewer({ filePath: \"/data/0/app/total.pdf\" });\n * ```\n */\n async createOzPdfViewer(options: createOzPdfViewerOptions) {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToTarget<CommonOzBridgetResponseType>('createOzPdfViewer', options);\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOzPdfViewer');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showSignatureShortcut();\n */\n async showSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideSignatureShortcut();\n */\n async hideSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showMissingFieldWarning();\n */\n async showMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideMissingFieldWarning();\n */\n async hideMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * Alert 표시용 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showAlert({\n * title: '모달 타이틀',\n * message: '모달 내용',\n * // 모달에 표시할 버튼들 설정\n * buttons: { close: false, main: \"확인\" }\n * })\n * ```\n */\n async showAlert(options: ShowAlertOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<keyof ShowAlertOptions[\"buttons\"]>>('showAlert', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { IframeBridge } from './iframe/bridge/iframe-bridge';\nimport { IframeBridgeCore } from './iframe/core/iframe-bridge-core';\nimport { NativeBridge } from './native/bridge/native-bridge';\nimport { NativeBridgeOz } from './native/bridge-oz/native-bridge-oz';\nimport { NativeBridgeCore } from './native/core/native-bridge-core';\n\nexport const Bridge = {\n native: new NativeBridge(),\n nativeOz: new NativeBridgeOz(),\n iframe: new IframeBridge(),\n nativeCore: new NativeBridgeCore(),\n iframeCore: new IframeBridgeCore()\n};\n\nexport type * from './native/bridge/native-bridge-dto.types';\nexport type * from \"./native/bridge/native-bridge-options.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-dto.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-options.types\";\n"]}
1
+ {"version":3,"sources":["../src/common/common-bridge.ts","../src/common/common-bridge-core.ts","../src/iframe/core/iframe-bridge-core.ts","../src/iframe/bridge/iframe-bridge.ts","../src/native/core/native-bridge-core.ts","../src/native/bridge/native-bridge.ts","../src/native/bridge-oz/native-bridge-oz.ts","../src/bridge.ts"],"names":["isClient","getDspExecutionEnvironment","MessageEventManager","isStorybookEnv","isFpPlannerApp"],"mappings":"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","file":"index.cjs","sourcesContent":["import { ICommonBridge } from './common-bridge.types';\n\n/**\n * Business Layer Bridge\n * 비즈니스를 호출하는(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridge implements ICommonBridge {\n protected commonHello(): void {\n console.log('commonHello');\n }\n\n abstract hello(): void;\n}\n","/**\n * Core Layer Bridge\n * Core(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridgeCore {\n /**\n * 코어에서 사용할 프로미스 ID 생성 함수\n * @returns\n */\n protected generatePromiseId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).slice(2, 11);\n\n return `${timestamp}_${random}`;\n }\n\n /**\n * core에서 구현해야할 함수\n * @param action\n * @param options\n */\n abstract callToTarget<T>(action: string, options?: Record<string, unknown>): Promise<T>;\n}\n","import { getDspExecutionEnvironment, isClient } from 'sales-frontend-utils';\nimport { MessageEventManager } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport {\n IframeEventName,\n IframeBridgeCommand,\n IframeBridgeOptions,\n IframeBridgePromise,\n IframeBridgeResponseHandler,\n IframeBridgeResponseData\n} from './iframe-bridge-core.types';\n\n/**\n * Iframe Bridge 통신 위한 핵심 클래스\n * 담당: 부모 호출, Promise 관리\n */\nexport class IframeBridgeCore extends CommonBridgeCore {\n private pendingPromises = new Map<string, IframeBridgePromise>();\n private responseHandler?: IframeBridgeResponseHandler;\n\n constructor() {\n super();\n\n if (!isClient()) {\n console.warn('[IframeBridgeCore] 클라이언트 환경이 아닙니다.');\n\n return;\n }\n\n const platform = getDspExecutionEnvironment();\n if (platform !== 'iframe') {\n console.warn(`[IframeBridgeCore] iframe 환경이 아닙니다. (현재: ${platform})`);\n\n return;\n }\n\n console.log('[IframeBridgeCore] iframe 환경에서 초기화 시작');\n this.initializeIframeBridge();\n }\n\n /**\n * 사용하는 쪽에서 응답핸들러를 사용할 수 있도록 필요시, 응답 처리 핸들러 설정\n */\n setResponseHandler(handler: IframeBridgeResponseHandler): void {\n this.responseHandler = handler;\n }\n\n handleIframeBridgePromise(response: IframeBridgeResponseData): boolean {\n const { promiseId, isSuccess, data } = response;\n\n const promise = this.pendingPromises.get(promiseId);\n if (promise) {\n this.pendingPromises.delete(promiseId);\n\n if (isSuccess) {\n promise.resolve(data);\n } else {\n promise.reject(new Error(data));\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * 특정 Promise 존재 여부 확인\n */\n hasPromise(promiseId: string): boolean {\n return this.pendingPromises.has(promiseId);\n }\n\n /**\n * 네이티브 통신을 위해 window.n2bridge 객체 초기화\n */\n private initializeIframeBridge(): void {\n // MessageEventManager에 핸들러 등록(영업포털-웹간 주고받기)\n MessageEventManager.getInstance().registerHandler('iframe-bridge', this.handleMessageEventResponse.bind(this));\n }\n\n /**\n * 브릿지 메시지 이벤트 핸들러\n * @param event\n */\n private handleMessageEventResponse(event: MessageEvent): void {\n const { eventName, promiseId, isSuccess, data } = event.data as IframeBridgeResponseData;\n\n console.log('[IframeBridgeCore] 메시지 받음:', { eventName, promiseId, isSuccess, data });\n\n //! 필요시 (부모 > 자식): hmpLogout(로그아웃처리), prxSessionExts(세션연장) 이벤트 구현\n // 등록된 핸들러가 있으면 실행\n if (this.responseHandler) {\n this.responseHandler({ eventName, promiseId, isSuccess, data });\n }\n\n // (부모 > 자식) 기본 Promise 처리\n if (this.pendingPromises.has(promiseId)) {\n this.handleIframeBridgePromise({ eventName, promiseId, isSuccess, data });\n }\n }\n\n /**\n * Iframe 통신\n * @param eventName\n * @param option\n * @returns\n */\n async callToTarget<T = boolean>(eventName: IframeEventName, option?: IframeBridgeOptions): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${eventName}_${this.generatePromiseId()}`;\n\n // Promise 등록\n this.pendingPromises.set(promiseId, { resolve, reject });\n\n const { menuUrl, menuNm, ...restOption } = option ?? {};\n\n try {\n const command: IframeBridgeCommand = {\n eventName,\n promiseId,\n menuUrl,\n menuNm,\n jsonParam: { ...restOption }\n };\n\n console.log('[IframeBridgeCore callToIframe] command::', command);\n console.log('[IframeBridgeCore callToIframe] 부모 호출 직전');\n\n window.parent.postMessage(command, '*');\n\n // TODO: 부모에서 event.source.postMessage({ promiseId, isSuccess, data }); 형태로 보내줄 수 있다면 소스 삭제\n const promise = this.pendingPromises.get(promiseId);\n if (promise) {\n this.pendingPromises.delete(promiseId);\n promise.resolve(true as T);\n }\n } catch (error) {\n console.error('[IframeBridgeCore callToIframe] error::', error);\n this.pendingPromises.delete(promiseId);\n reject(error);\n }\n });\n }\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { IframeBridgeCore } from '../core/iframe-bridge-core';\nimport { IframeBridgeResponseHandler, IframeBridgeResponseData } from '../core/iframe-bridge-core.types';\n\nimport { DspMenuWindowOpenOption, DspSimpleWindowOpen } from './iframe-bridge-options.types';\nimport { IIframeBridge } from './iframe-bridge.types';\n\n/**\n * iframe(영업포탈) 전용 Bridge\n */\nexport class IframeBridge extends CommonBridge implements IIframeBridge {\n private core: IframeBridgeCore;\n\n constructor() {\n super();\n this.core = new IframeBridgeCore();\n }\n\n // 응답 핸들러 설정\n setResponseHandler(handler: IframeBridgeResponseHandler): void {\n this.core.setResponseHandler(handler);\n }\n\n // Promise 직접 제어 메서드들 추가\n handleIframeBridgePromise(response: IframeBridgeResponseData): boolean {\n return this.core.handleIframeBridgePromise(response);\n }\n\n // 유틸리티 메서드들도 추가\n hasPromise(promiseId: string): boolean {\n return this.core.hasPromise(promiseId);\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수(test)\n */\n hello(): void {\n console.log('[IframeBridge] hello');\n }\n\n /**\n * 영업포털 부모의 세션연장, 오픈되어 있는 타 시스템 세션타임 연장\n * @returns\n */\n async dspKeepCallerSession(): Promise<boolean> {\n return this.core.callToTarget('dspKeepCallerSession');\n }\n\n /**\n * 영업포털 메뉴정보에 있는 메뉴 오픈(새탭 생성)\n * @param option\n * @returns\n */\n async dspMenuWindowOpen(option: DspMenuWindowOpenOption): Promise<boolean> {\n return this.core.callToTarget('dspMenuWindowOpen', option);\n }\n\n /**\n * 영업포털 메뉴정보에 없는 메뉴를 오픈(새탭 생성 & 약속된 타켓 메뉴정보를 해당 시스템에 전달)\n * @param option\n * @returns\n */\n async dspSimpleWindowOpen(option: DspSimpleWindowOpen): Promise<boolean> {\n return this.core.callToTarget('dspSimpleWindowOpen', option);\n }\n // TODO: 필요 플러그인들 추가\n}\n","import { getDspExecutionEnvironment, isClient, isStorybookEnv, isFpPlannerApp } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport type {\n NativeBridgeCommand,\n NativeBridgePromise,\n NativeBridgeOptions,\n PromiseHandleBridge,\n CallBridge\n} from './native-bridge-core.types';\n\n/**\n * Native <-> Web 처리를 위한 핵심 클래스\n * 담당: 앱 호출, Promise 관리\n */\nexport class NativeBridgeCore<TAction extends string> extends CommonBridgeCore {\n private promiseHandleName: string;\n private callBridgeName: string;\n\n constructor(callBridgeName = 'n2Bridge', promiseHandleName = 'n2bridge') {\n super();\n\n this.callBridgeName = callBridgeName;\n this.promiseHandleName = promiseHandleName;\n\n this.initializeWindowOzBridge();\n }\n\n /**\n * Promise 관리용 브릿지 객체 가져오기 (window.n2bridge)\n */\n private getPromiseHandleBridge(): PromiseHandleBridge {\n return (window as any)[this.promiseHandleName] as PromiseHandleBridge;\n }\n\n /**\n * 앱 호출용 브릿지 객체 가져오기 (window.n2Bridge)\n */\n private getCallBridge(): CallBridge {\n return (window as any)[this.callBridgeName] as CallBridge;\n }\n\n /**\n * 네이티브 통신을 위해 window.n2OzBridge 객체 초기화\n */\n private initializeWindowOzBridge(): void {\n if (!isClient()) {\n return;\n } // SSR 환경에서는 아무것도 하지 않음\n if (!(window as any)[this.promiseHandleName]) {\n (window as any)[this.promiseHandleName] = {\n promises: {},\n resolvePromise: () => {},\n finallyResolvePromise: () => {},\n callFromNative: () => {}\n };\n }\n\n const bridge = this.getPromiseHandleBridge();\n\n // 항상 최신 함수로 업데이트\n bridge.resolvePromise = this.createResolvePromiseHandler();\n bridge.finallyResolvePromise = this.createFinallyResolvePromiseHandler();\n\n if (isStorybookEnv() && window.parent) {\n // 스토리북에서는 현재 스토리가 iframe으로 로드되므로 앱에서 부모 프레임에 브릿지를 리턴해도 자식으로 전달되도록 보정하는 코드\n (window.parent as any)[this.promiseHandleName] = bridge;\n window.parent.dispatchEvent = (...args) => window.dispatchEvent.apply(null, args);\n }\n }\n\n /**\n * Promise 처리 함수(Native에서 호출)\n * @returns\n */\n private createResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n console.log('[NativeBridgeCore resolvePromise]::', promiseId, data, error);\n\n const bridge = this.getPromiseHandleBridge();\n\n const promise: NativeBridgePromise | undefined = bridge.promises[promiseId];\n if (!promise) {\n console.error('[NativeBridgeCore resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[NativeBridgeCore resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Promise 최종 처리 함수\n * @returns\n */\n private createFinallyResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n const bridge = this.getPromiseHandleBridge();\n\n const promise: NativeBridgePromise | undefined = bridge.promises[promiseId];\n if (!promise) {\n console.error('[NativeBridgeCore resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[NativeBridgeCore resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * 네이티브 통신\n * @param action\n * @param options\n * @returns\n */\n async callToTarget<T>(action: TAction, option: NativeBridgeOptions = {}): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${action}_${this.generatePromiseId()}`;\n console.log('[NativeBridgeCore callToNative] promiseId::', promiseId);\n\n const bridge = this.getPromiseHandleBridge();\n\n // 바로 window.promiseHandler에 promises에 저장\n bridge.promises[promiseId] = {\n resolve: (value: T) => {\n resolve(value);\n },\n reject: (reason?: any) => {\n reject(reason);\n }\n };\n\n try {\n const command: NativeBridgeCommand = {\n action,\n promiseId,\n option\n };\n\n console.log('[NativeBridgeCore callToNative] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'android-webview') {\n const callBridge = this.getCallBridge();\n callBridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios-webview') {\n const message = isFpPlannerApp()\n ? { ...command, service: 'native' } // 플래너: service 추가\n : command;\n\n (window.webkit?.messageHandlers as any)?.[this.callBridgeName]?.postMessage(JSON.stringify(message));\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(\n `[NativeBridgeCore callToNative] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${action})입니다.`\n );\n this.cleanupPromise(promiseId);\n reject(new Error(`[NativeBridgeCore callToNative] Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[NativeBridgeCore callToNative] error::', error);\n this.cleanupPromise(promiseId);\n reject(error);\n }\n });\n }\n\n /**\n * promiseId를 초기화 해줍니다.\n * @param promiseId\n */\n private cleanupPromise(promiseId: string): void {\n const bridge = this.getPromiseHandleBridge();\n delete bridge.promises[promiseId];\n }\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n OnAuthenticationResultRequest,\n OnAuthenticationResultResponse,\n GetAccessTokenResponse,\n GetAnalyticsUserPropertyResponse,\n GetOzFontParamResponse,\n GetAppInfoResponse\n} from './native-bridge-dto.types';\nimport type {\n CommonOzBridgetResponseType,\n DownloadOzdOptions,\n OpenBrowserOptions,\n CreateOZViewerOptions,\n OpenWebOptions,\n localFetchBridgeOptions,\n SetHeaderTitleOptions,\n HideHeaderOptions\n} from './native-bridge-options.types';\nimport type { INativeBridge, NativeAction } from './native-bridge.types';\n\n/**\n * App - Web Bridge\n */\nexport class NativeBridge extends CommonBridge implements INativeBridge {\n private core: NativeBridgeCore<NativeAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeAction>();\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * getParameterMap\n * @returns\n */\n async getParameterMap<T = any>(): Promise<T> {\n return this.core.callToTarget<T>('getParameterMap');\n }\n\n /**\n * 기능명: 본인인증 결과 정보 넘기기\n * 목적: NXL One 에서 본인인증 결과 값을 네이티브로 넘기기 위함\n * @param options\n * @returns\n */\n async onAuthenticationResult(options: OnAuthenticationResultRequest): Promise<OnAuthenticationResultResponse> {\n return this.core.callToTarget('onAuthenticationResult', options);\n }\n\n /**\n * Access Token 가져오기\n * @returns\n */\n async getAccessToken(): Promise<GetAccessTokenResponse> {\n return this.core.callToTarget('getAccessToken');\n }\n\n /**\n * ### Bridge for Oz\n * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.createReportEx({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n createOZViewer(options: CreateOZViewerOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'createOZViewer',\n // delimiter 미입력시 \\n 으로 기본값 처리\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * OZ 뷰어를 닫습니다\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideViewer();\n * ```\n */\n hideOZViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOZViewer');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 OZD를 다운받는 브릿지입니다\n * @example\n * ```tsx\n * const options = {\n * // 현재 증권번호\n * policyNumber: \"300034894\",\n * // FP 사번\n * fpInfo: { \"uniqNo\": \"2210000\" }\n * // 서식 목록들\n * data: [{\n * // 서식에 대한 정보들\n * \"name\": \"[A0010]청약서\",\n * \"complete\": false,\n * \"startPage\": 0,\n * \"endPage\": 0,\n * \"focus\": false,\n * \"doc\": [{\n * // 서식에 속한 OZD 파일들\n * \"docCode\": \"A0010\",\n * \"fileID\": \"1HLqZJCNt6idLKkAA\",\n * \"imageFormatCode\": \"RT003001\",\n * \"imageDocumentTypeCode\": \"IT00\",\n * // ozd 파일이 다운로드된 경로\n * \"filePath\": \"\",\n * \"startPage\": 0,\n * \"endPage\": 0\n * }]\n * }, ],\n * }\n * await Bridge.native.downloadDocument(options)\n * ```\n */\n async downloadDocument(options: DownloadOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<DownloadOzdOptions>>('downloadDocument', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getOzFontParam()\n * ```\n */\n async getOzFontParam() {\n return this.core.callToTarget<CommonOzBridgetResponseType<GetOzFontParamResponse>>('getOzFontParam');\n }\n\n /**\n * ### Bridge for Oz\n * 로더 컴포넌트 show\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.showLoader()\n * ```\n */\n async showLoader() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showLoader');\n }\n\n /**\n * ### Bridge for Oz\n * 로더 컴포넌트 hide\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideLoader()\n * ```\n */\n async hideLoader() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideLoader');\n }\n\n /**\n * ### Bridge for Oz\n * 태블릿 로컬에 있는 파일을 fetch하기 위한 url을 만들어주는 브릿지\n *\n * 파일의 절대경로는 saveSignImg 혹은 pdfExport시 확보할수 있다\n * @example\n * ```tsx\n * await Bridge.native.localFetchBridge({filePath: \"/data/0/~~~/file.ext\"});\n * ```\n */\n async localFetchBridge(options: localFetchBridgeOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('localFetchBridge', options);\n }\n\n /**\n * 홈 이동\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.goHome()\n * ```\n */\n goHome(): Promise<string> {\n return this.core.callToTarget('goHome');\n }\n\n /**\n * 전체메뉴 열기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.showMenu()\n * ```\n */\n showMenu(): Promise<string> {\n return this.core.callToTarget('showMenu');\n }\n\n /**\n * GA4 정보 얻기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAnalyticsUserProperty()\n * ```\n */\n getAnalyticsUserProperty(): Promise<GetAnalyticsUserPropertyResponse> {\n return this.core.callToTarget('getAnalyticsUserProperty');\n }\n\n /**\n *외부 브라우저 호출\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAnalyticsUserProperty()\n * ```\n */\n openBrowser(options: OpenBrowserOptions): Promise<string> {\n return this.core.callToTarget('openBrowser', options);\n }\n\n /**\n * 웹뷰 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideWebPopup()\n * ```\n */\n hideWebPopup(): Promise<string> {\n return this.core.callToTarget('hideWebPopup');\n }\n\n /**\n * OnePass 인증\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.requestAuthentication()\n * ```\n */\n requestAuthentication(): Promise<string> {\n return this.core.callToTarget('requestAuthentication');\n }\n\n /**\n * 웹뷰 띄우기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.openWeb({ url: 'url', headerTitle: '타이틀', headerType: 'APP', removeNavStack: true });\n * ```\n */\n openWeb({ headerType = 'APP', removeNavStack = false, ...rest }: OpenWebOptions): Promise<string> {\n return this.core.callToTarget('openWeb', { headerType, removeNavStack, ...rest });\n }\n\n /**\n * 웹뷰 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.closeWeb()\n * ```\n */\n closeWeb(): Promise<string> {\n return this.core.callToTarget('closeWeb');\n }\n\n /**\n * 앱 종료\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.exitApp()\n * ```\n */\n exitApp(): Promise<string> {\n return this.core.callToTarget('exitApp');\n }\n\n /**\n * 앱 정보 가져오기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAppInfo()\n * ```\n */\n getAppInfo(): Promise<GetAppInfoResponse> {\n return this.core.callToTarget('getAppInfo');\n }\n\n /**\n * 네이티브 헤더 타이틀 변경\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.setHeaderTitle({ headerTitle: '타이틀명' });\n * ```\n */\n setHeaderTitle(options: SetHeaderTitleOptions): Promise<string> {\n return this.core.callToTarget('setHeaderTitle', options);\n }\n\n /**\n * 네이티브 헤더 show / hide\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideHeader({ hideHeader: true });\n * ```\n */\n hideHeader(options: HideHeaderOptions): Promise<string> {\n return this.core.callToTarget('hideHeader', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { CommonOzBridgetResponseType } from '../bridge/native-bridge-options.types';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n UpdateOzdOptions,\n createOzPdfViewerOptions,\n ShowAlertOptions\n} from './native-bridge-oz-options.types';\nimport type { INativeBridgeOz, NativeOzAction } from './native-bridge-oz.types';\n\n/**\n * App - Web Bridge(for OZ)\n */\nexport class NativeBridgeOz extends CommonBridge implements INativeBridgeOz {\n private core: NativeBridgeCore<NativeOzAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeOzAction>('n2OzBridge', 'n2ozBridge');\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 정보를 가져옵니다\n * @example\n * ```tsx\n * // 사용 예시:\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * // 리턴값이 null이 나올수 있음\n * const { data } = await Bridge.nativeOz.getInformation({ command: 'INPUT_JSON' });\n * ```\n */\n async getInformation(options: GetInformationOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getInformation', options);\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 가져옵니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * await Bridge.nativeOz.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal(options: GetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // value 자리에 string이 아닌 값을 넣어도 getGlobal시 string으로 변환되어 리턴됩니다\n * Bridge.nativeOz.setGlobal({ key: \"AAA\", value: \"myValue\" });\n * ```\n */\n setGlobal(options: SetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<boolean | null>>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * Bridge.nativeOz.script({ command });\n * ```\n */\n script(options: ScriptOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('script', options);\n }\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * Bridge.nativeOz.scriptEX({ command, param });\n * ```\n */\n scriptEx(options: ScriptExOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'scriptEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * - 서명이미지 크롭\n * - 중간저장 서명이미지 추출\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex(options: TriggerExternalEventByDocIndexOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.updateOzDocumentStatus(document);\n * ```\n */\n async updateOzDocumentStatus(options: UpdateOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('updateOzDocumentStatus', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식을 PDF로 export 요청\n * export 결과는 `OZViewerEvent.OZExportCommand`로 트리거 된다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.savePdf({ exportType: \"PDF\", fileName: \"test.pdf\", startPage: 1, endPage: 1 })\n * ```\n */\n async savePdf(options: SavePdfOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'savePdf',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.saveSignImg({ fileName: 'sign.png', signImageKey: 'A0010_mynm_sg', policyNumber });\n * ```\n */\n async saveSignImg(options: SaveSignImgOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.createOzPdfViewer({ filePath: \"/data/0/app/total.pdf\" });\n * ```\n */\n async createOzPdfViewer(options: createOzPdfViewerOptions) {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToTarget<CommonOzBridgetResponseType>('createOzPdfViewer', options);\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOzPdfViewer');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showSignatureShortcut();\n */\n async showSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideSignatureShortcut();\n */\n async hideSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showMissingFieldWarning();\n */\n async showMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideMissingFieldWarning();\n */\n async hideMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * Alert 표시용 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showAlert({\n * title: '모달 타이틀',\n * message: '모달 내용',\n * // 모달에 표시할 버튼들 설정\n * buttons: { close: false, main: \"확인\" }\n * })\n * ```\n */\n async showAlert(options: ShowAlertOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<keyof ShowAlertOptions[\"buttons\"]>>('showAlert', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { IframeBridge } from './iframe/bridge/iframe-bridge';\nimport { IframeBridgeCore } from './iframe/core/iframe-bridge-core';\nimport { NativeBridge } from './native/bridge/native-bridge';\nimport { NativeBridgeOz } from './native/bridge-oz/native-bridge-oz';\nimport { NativeBridgeCore } from './native/core/native-bridge-core';\n\nexport const Bridge = {\n native: new NativeBridge(),\n nativeOz: new NativeBridgeOz(),\n iframe: new IframeBridge(),\n nativeCore: new NativeBridgeCore(),\n iframeCore: new IframeBridgeCore()\n};\n\nexport type * from './native/bridge/native-bridge-dto.types';\nexport type * from \"./native/bridge/native-bridge-options.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-dto.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-options.types\";\n"]}
package/dist/index.d.cts CHANGED
@@ -12,31 +12,26 @@ declare abstract class CommonBridge implements ICommonBridge {
12
12
  abstract hello(): void;
13
13
  }
14
14
 
15
- interface OpenMdiOption {
15
+ interface DspMenuWindowOpenOption extends Record<string, any> {
16
16
  menuUrl: string;
17
- menuNm: string;
18
- }
19
- interface DspMenuWindowOpenOption {
20
- menuUrl: string;
21
- polyNo: string;
17
+ polyNo?: string;
22
18
  }
23
- interface dspSimpleWindowOpen {
19
+ interface DspSimpleWindowOpen {
24
20
  menuUrl: string;
25
21
  menuNm: string;
26
22
  }
27
23
 
28
24
  interface IIframeBridge {
29
- /** FP월드 tab open */
30
- openMdi(options: OpenMdiOption): Promise<boolean>;
31
25
  dspKeepCallerSession(): Promise<boolean>;
32
26
  dspMenuWindowOpen(option: DspMenuWindowOpenOption): Promise<boolean>;
33
- dspSimpleWindowOpen(option: dspSimpleWindowOpen): Promise<boolean>;
27
+ dspSimpleWindowOpen(option: DspSimpleWindowOpen): Promise<boolean>;
34
28
  }
35
29
 
36
30
  type IframeEventName = keyof IIframeBridge;
37
31
  interface IframeBridgeOptions extends Record<string, any> {
38
32
  }
39
33
  interface IframeBridgeResponseData {
34
+ eventName: string;
40
35
  promiseId: string;
41
36
  isSuccess: boolean;
42
37
  data?: any;
@@ -58,12 +53,6 @@ declare class IframeBridge extends CommonBridge implements IIframeBridge {
58
53
  * Iframe, App 공통으로 구현해야할 함수(test)
59
54
  */
60
55
  hello(): void;
61
- /**
62
- * 영업포탈 tab open
63
- * @param option
64
- * @returns
65
- */
66
- openMdi(option: OpenMdiOption): Promise<boolean>;
67
56
  /**
68
57
  * 영업포털 부모의 세션연장, 오픈되어 있는 타 시스템 세션타임 연장
69
58
  * @returns
@@ -80,7 +69,7 @@ declare class IframeBridge extends CommonBridge implements IIframeBridge {
80
69
  * @param option
81
70
  * @returns
82
71
  */
83
- dspSimpleWindowOpen(option: dspSimpleWindowOpen): Promise<boolean>;
72
+ dspSimpleWindowOpen(option: DspSimpleWindowOpen): Promise<boolean>;
84
73
  }
85
74
 
86
75
  /**
@@ -197,19 +186,6 @@ interface GetAppInfoResponse {
197
186
  'X-Channel-PlatformVersion': string;
198
187
  }
199
188
 
200
- interface ShowWebPopupOptions {
201
- /** 0: fullscreen, 1: title bar, 2: size 지정 가능 팝업, 3: wk webview */
202
- popupType: 0 | 1 | 2 | 3;
203
- /** tㅏ이즈 */
204
- size?: {
205
- width: string;
206
- height: string;
207
- };
208
- /** URL */
209
- url: string;
210
- /** 파라미터 */
211
- param: Record<string, unknown>;
212
- }
213
189
  /**
214
190
  * 오즈 뷰어 함수 `CreateReport`를 호출할 때 사용하는 브릿지용 입력 옵션
215
191
  */
@@ -352,20 +328,31 @@ interface OpenBrowserOptions {
352
328
  url: string;
353
329
  }
354
330
  interface OpenWebOptions {
331
+ /** Web URL */
355
332
  url: string;
333
+ /** 임시토큰 타입 */
356
334
  type?: string;
335
+ /** 웹 헤더 타이틀 */
336
+ headerTitle?: string;
337
+ /** 헤더 타입(default APP) */
338
+ headerType?: 'WEB' | 'APP';
339
+ /** 부모 웹뷰 제거 여부(default false) */
357
340
  removeNavStack?: boolean;
341
+ /** 추가 파라미터 (거진... 가입설계에서 사용) */
358
342
  param?: Record<string, unknown>;
359
343
  }
344
+ interface SetHeaderTitleOptions {
345
+ headerTitle: string;
346
+ }
347
+ interface HideHeaderOptions {
348
+ hideHeader: boolean;
349
+ }
360
350
 
361
351
  /**
362
352
  * 네이티브 브릿지 구현 함수
363
353
  */
364
354
  interface INativeBridge {
365
355
  getParameterMap<T>(): Promise<T>;
366
- dismissPopup<T>(option: any): Promise<T>;
367
- showWebPopup<T>(options: ShowWebPopupOptions): Promise<T>;
368
- jumpSafari<T>(options: ShowWebPopupOptions): Promise<T>;
369
356
  createOZViewer(options: CreateOZViewerOptions): Promise<CommonOzBridgetResponseType>;
370
357
  hideOZViewer(): Promise<CommonOzBridgetResponseType>;
371
358
  downloadDocument(options: DownloadOzdOptions): Promise<CommonOzBridgetResponseType<DownloadOzdOptions>>;
@@ -385,6 +372,8 @@ interface INativeBridge {
385
372
  openWeb(options: OpenWebOptions): Promise<string>;
386
373
  exitApp(): Promise<string>;
387
374
  getAppInfo(): Promise<GetAppInfoResponse>;
375
+ setHeaderTitle(options: SetHeaderTitleOptions): Promise<string>;
376
+ hideHeader(options: HideHeaderOptions): Promise<string>;
388
377
  }
389
378
 
390
379
  /**
@@ -402,19 +391,6 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
402
391
  * @returns
403
392
  */
404
393
  getParameterMap<T = any>(): Promise<T>;
405
- dismissPopup<T = any>(options?: any): Promise<T>;
406
- /**
407
- *
408
- * @param options
409
- * @returns
410
- */
411
- showWebPopup<T = any>(options: ShowWebPopupOptions): Promise<T>;
412
- /**
413
- *
414
- * @param options
415
- * @returns
416
- */
417
- jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T>;
418
394
  /**
419
395
  * 기능명: 본인인증 결과 정보 넘기기
420
396
  * 목적: NXL One 에서 본인인증 결과 값을 네이티브로 넘기기 위함
@@ -582,10 +558,10 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
582
558
  * @example
583
559
  * ```tsx
584
560
  * // 사용 예시
585
- * Bridge.native.openWeb()
561
+ * Bridge.native.openWeb({ url: 'url', headerTitle: '타이틀', headerType: 'APP', removeNavStack: true });
586
562
  * ```
587
563
  */
588
- openWeb(options: OpenWebOptions): Promise<string>;
564
+ openWeb({ headerType, removeNavStack, ...rest }: OpenWebOptions): Promise<string>;
589
565
  /**
590
566
  * 웹뷰 닫기
591
567
  * @example
@@ -613,6 +589,24 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
613
589
  * ```
614
590
  */
615
591
  getAppInfo(): Promise<GetAppInfoResponse>;
592
+ /**
593
+ * 네이티브 헤더 타이틀 변경
594
+ * @example
595
+ * ```tsx
596
+ * // 사용 예시
597
+ * Bridge.native.setHeaderTitle({ headerTitle: '타이틀명' });
598
+ * ```
599
+ */
600
+ setHeaderTitle(options: SetHeaderTitleOptions): Promise<string>;
601
+ /**
602
+ * 네이티브 헤더 show / hide
603
+ * @example
604
+ * ```tsx
605
+ * // 사용 예시
606
+ * Bridge.native.hideHeader({ hideHeader: true });
607
+ * ```
608
+ */
609
+ hideHeader(options: HideHeaderOptions): Promise<string>;
616
610
  }
617
611
 
618
612
  /**
@@ -1052,4 +1046,4 @@ declare const Bridge: {
1052
1046
  iframeCore: IframeBridgeCore;
1053
1047
  };
1054
1048
 
1055
- export { Bridge, type CommonOzBridgetResponseType, type CreateOZViewerOptions, type DownloadOzdOptions, type FormInfo, type GetAccessTokenResponse, type GetAnalyticsUserPropertyResponse, type GetAppInfoResponse, type GetGlobalOptions, type GetInformationOptions, type GetOzFontParamResponse, type OnAuthenticationResultRequest, type OnAuthenticationResultResponse, type OpenBrowserOptions, type OpenWebOptions, type OzdFile, type RequestAuthenticationResponse, type SampleRequest, type SampleResponse, type SavePdfOptions, type SaveSignImgOptions, type ScriptExOptions, type ScriptOptions, type SetGlobalOptions, type ShowAlertOptions, type ShowWebPopupOptions, type TriggerExternalEventByDocIndexOptions, type UpdateOzdOptions, type createOzPdfViewerOptions, type localFetchBridgeOptions };
1049
+ export { Bridge, type CommonOzBridgetResponseType, type CreateOZViewerOptions, type DownloadOzdOptions, type FormInfo, type GetAccessTokenResponse, type GetAnalyticsUserPropertyResponse, type GetAppInfoResponse, type GetGlobalOptions, type GetInformationOptions, type GetOzFontParamResponse, type HideHeaderOptions, type OnAuthenticationResultRequest, type OnAuthenticationResultResponse, type OpenBrowserOptions, type OpenWebOptions, type OzdFile, type RequestAuthenticationResponse, type SampleRequest, type SampleResponse, type SavePdfOptions, type SaveSignImgOptions, type ScriptExOptions, type ScriptOptions, type SetGlobalOptions, type SetHeaderTitleOptions, type ShowAlertOptions, type TriggerExternalEventByDocIndexOptions, type UpdateOzdOptions, type createOzPdfViewerOptions, type localFetchBridgeOptions };
package/dist/index.d.ts CHANGED
@@ -12,31 +12,26 @@ declare abstract class CommonBridge implements ICommonBridge {
12
12
  abstract hello(): void;
13
13
  }
14
14
 
15
- interface OpenMdiOption {
15
+ interface DspMenuWindowOpenOption extends Record<string, any> {
16
16
  menuUrl: string;
17
- menuNm: string;
18
- }
19
- interface DspMenuWindowOpenOption {
20
- menuUrl: string;
21
- polyNo: string;
17
+ polyNo?: string;
22
18
  }
23
- interface dspSimpleWindowOpen {
19
+ interface DspSimpleWindowOpen {
24
20
  menuUrl: string;
25
21
  menuNm: string;
26
22
  }
27
23
 
28
24
  interface IIframeBridge {
29
- /** FP월드 tab open */
30
- openMdi(options: OpenMdiOption): Promise<boolean>;
31
25
  dspKeepCallerSession(): Promise<boolean>;
32
26
  dspMenuWindowOpen(option: DspMenuWindowOpenOption): Promise<boolean>;
33
- dspSimpleWindowOpen(option: dspSimpleWindowOpen): Promise<boolean>;
27
+ dspSimpleWindowOpen(option: DspSimpleWindowOpen): Promise<boolean>;
34
28
  }
35
29
 
36
30
  type IframeEventName = keyof IIframeBridge;
37
31
  interface IframeBridgeOptions extends Record<string, any> {
38
32
  }
39
33
  interface IframeBridgeResponseData {
34
+ eventName: string;
40
35
  promiseId: string;
41
36
  isSuccess: boolean;
42
37
  data?: any;
@@ -58,12 +53,6 @@ declare class IframeBridge extends CommonBridge implements IIframeBridge {
58
53
  * Iframe, App 공통으로 구현해야할 함수(test)
59
54
  */
60
55
  hello(): void;
61
- /**
62
- * 영업포탈 tab open
63
- * @param option
64
- * @returns
65
- */
66
- openMdi(option: OpenMdiOption): Promise<boolean>;
67
56
  /**
68
57
  * 영업포털 부모의 세션연장, 오픈되어 있는 타 시스템 세션타임 연장
69
58
  * @returns
@@ -80,7 +69,7 @@ declare class IframeBridge extends CommonBridge implements IIframeBridge {
80
69
  * @param option
81
70
  * @returns
82
71
  */
83
- dspSimpleWindowOpen(option: dspSimpleWindowOpen): Promise<boolean>;
72
+ dspSimpleWindowOpen(option: DspSimpleWindowOpen): Promise<boolean>;
84
73
  }
85
74
 
86
75
  /**
@@ -197,19 +186,6 @@ interface GetAppInfoResponse {
197
186
  'X-Channel-PlatformVersion': string;
198
187
  }
199
188
 
200
- interface ShowWebPopupOptions {
201
- /** 0: fullscreen, 1: title bar, 2: size 지정 가능 팝업, 3: wk webview */
202
- popupType: 0 | 1 | 2 | 3;
203
- /** tㅏ이즈 */
204
- size?: {
205
- width: string;
206
- height: string;
207
- };
208
- /** URL */
209
- url: string;
210
- /** 파라미터 */
211
- param: Record<string, unknown>;
212
- }
213
189
  /**
214
190
  * 오즈 뷰어 함수 `CreateReport`를 호출할 때 사용하는 브릿지용 입력 옵션
215
191
  */
@@ -352,20 +328,31 @@ interface OpenBrowserOptions {
352
328
  url: string;
353
329
  }
354
330
  interface OpenWebOptions {
331
+ /** Web URL */
355
332
  url: string;
333
+ /** 임시토큰 타입 */
356
334
  type?: string;
335
+ /** 웹 헤더 타이틀 */
336
+ headerTitle?: string;
337
+ /** 헤더 타입(default APP) */
338
+ headerType?: 'WEB' | 'APP';
339
+ /** 부모 웹뷰 제거 여부(default false) */
357
340
  removeNavStack?: boolean;
341
+ /** 추가 파라미터 (거진... 가입설계에서 사용) */
358
342
  param?: Record<string, unknown>;
359
343
  }
344
+ interface SetHeaderTitleOptions {
345
+ headerTitle: string;
346
+ }
347
+ interface HideHeaderOptions {
348
+ hideHeader: boolean;
349
+ }
360
350
 
361
351
  /**
362
352
  * 네이티브 브릿지 구현 함수
363
353
  */
364
354
  interface INativeBridge {
365
355
  getParameterMap<T>(): Promise<T>;
366
- dismissPopup<T>(option: any): Promise<T>;
367
- showWebPopup<T>(options: ShowWebPopupOptions): Promise<T>;
368
- jumpSafari<T>(options: ShowWebPopupOptions): Promise<T>;
369
356
  createOZViewer(options: CreateOZViewerOptions): Promise<CommonOzBridgetResponseType>;
370
357
  hideOZViewer(): Promise<CommonOzBridgetResponseType>;
371
358
  downloadDocument(options: DownloadOzdOptions): Promise<CommonOzBridgetResponseType<DownloadOzdOptions>>;
@@ -385,6 +372,8 @@ interface INativeBridge {
385
372
  openWeb(options: OpenWebOptions): Promise<string>;
386
373
  exitApp(): Promise<string>;
387
374
  getAppInfo(): Promise<GetAppInfoResponse>;
375
+ setHeaderTitle(options: SetHeaderTitleOptions): Promise<string>;
376
+ hideHeader(options: HideHeaderOptions): Promise<string>;
388
377
  }
389
378
 
390
379
  /**
@@ -402,19 +391,6 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
402
391
  * @returns
403
392
  */
404
393
  getParameterMap<T = any>(): Promise<T>;
405
- dismissPopup<T = any>(options?: any): Promise<T>;
406
- /**
407
- *
408
- * @param options
409
- * @returns
410
- */
411
- showWebPopup<T = any>(options: ShowWebPopupOptions): Promise<T>;
412
- /**
413
- *
414
- * @param options
415
- * @returns
416
- */
417
- jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T>;
418
394
  /**
419
395
  * 기능명: 본인인증 결과 정보 넘기기
420
396
  * 목적: NXL One 에서 본인인증 결과 값을 네이티브로 넘기기 위함
@@ -582,10 +558,10 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
582
558
  * @example
583
559
  * ```tsx
584
560
  * // 사용 예시
585
- * Bridge.native.openWeb()
561
+ * Bridge.native.openWeb({ url: 'url', headerTitle: '타이틀', headerType: 'APP', removeNavStack: true });
586
562
  * ```
587
563
  */
588
- openWeb(options: OpenWebOptions): Promise<string>;
564
+ openWeb({ headerType, removeNavStack, ...rest }: OpenWebOptions): Promise<string>;
589
565
  /**
590
566
  * 웹뷰 닫기
591
567
  * @example
@@ -613,6 +589,24 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
613
589
  * ```
614
590
  */
615
591
  getAppInfo(): Promise<GetAppInfoResponse>;
592
+ /**
593
+ * 네이티브 헤더 타이틀 변경
594
+ * @example
595
+ * ```tsx
596
+ * // 사용 예시
597
+ * Bridge.native.setHeaderTitle({ headerTitle: '타이틀명' });
598
+ * ```
599
+ */
600
+ setHeaderTitle(options: SetHeaderTitleOptions): Promise<string>;
601
+ /**
602
+ * 네이티브 헤더 show / hide
603
+ * @example
604
+ * ```tsx
605
+ * // 사용 예시
606
+ * Bridge.native.hideHeader({ hideHeader: true });
607
+ * ```
608
+ */
609
+ hideHeader(options: HideHeaderOptions): Promise<string>;
616
610
  }
617
611
 
618
612
  /**
@@ -1052,4 +1046,4 @@ declare const Bridge: {
1052
1046
  iframeCore: IframeBridgeCore;
1053
1047
  };
1054
1048
 
1055
- export { Bridge, type CommonOzBridgetResponseType, type CreateOZViewerOptions, type DownloadOzdOptions, type FormInfo, type GetAccessTokenResponse, type GetAnalyticsUserPropertyResponse, type GetAppInfoResponse, type GetGlobalOptions, type GetInformationOptions, type GetOzFontParamResponse, type OnAuthenticationResultRequest, type OnAuthenticationResultResponse, type OpenBrowserOptions, type OpenWebOptions, type OzdFile, type RequestAuthenticationResponse, type SampleRequest, type SampleResponse, type SavePdfOptions, type SaveSignImgOptions, type ScriptExOptions, type ScriptOptions, type SetGlobalOptions, type ShowAlertOptions, type ShowWebPopupOptions, type TriggerExternalEventByDocIndexOptions, type UpdateOzdOptions, type createOzPdfViewerOptions, type localFetchBridgeOptions };
1049
+ export { Bridge, type CommonOzBridgetResponseType, type CreateOZViewerOptions, type DownloadOzdOptions, type FormInfo, type GetAccessTokenResponse, type GetAnalyticsUserPropertyResponse, type GetAppInfoResponse, type GetGlobalOptions, type GetInformationOptions, type GetOzFontParamResponse, type HideHeaderOptions, type OnAuthenticationResultRequest, type OnAuthenticationResultResponse, type OpenBrowserOptions, type OpenWebOptions, type OzdFile, type RequestAuthenticationResponse, type SampleRequest, type SampleResponse, type SavePdfOptions, type SaveSignImgOptions, type ScriptExOptions, type ScriptOptions, type SetGlobalOptions, type SetHeaderTitleOptions, type ShowAlertOptions, type TriggerExternalEventByDocIndexOptions, type UpdateOzdOptions, type createOzPdfViewerOptions, type localFetchBridgeOptions };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { isClient, MessageEventManager, getDspExecutionEnvironment, isStorybookEnv, isFpPlannerApp } from 'sales-frontend-utils';
1
+ import { isClient, getDspExecutionEnvironment, MessageEventManager, isStorybookEnv, isFpPlannerApp } from 'sales-frontend-utils';
2
2
 
3
3
  var __defProp = Object.defineProperty;
4
4
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -31,8 +31,15 @@ var IframeBridgeCore = class extends CommonBridgeCore {
31
31
  __publicField(this, "pendingPromises", /* @__PURE__ */ new Map());
32
32
  __publicField(this, "responseHandler");
33
33
  if (!isClient()) {
34
+ console.warn("[IframeBridgeCore] \uD074\uB77C\uC774\uC5B8\uD2B8 \uD658\uACBD\uC774 \uC544\uB2D9\uB2C8\uB2E4.");
34
35
  return;
35
36
  }
37
+ const platform = getDspExecutionEnvironment();
38
+ if (platform !== "iframe") {
39
+ console.warn(`[IframeBridgeCore] iframe \uD658\uACBD\uC774 \uC544\uB2D9\uB2C8\uB2E4. (\uD604\uC7AC: ${platform})`);
40
+ return;
41
+ }
42
+ console.log("[IframeBridgeCore] iframe \uD658\uACBD\uC5D0\uC11C \uCD08\uAE30\uD654 \uC2DC\uC791");
36
43
  this.initializeIframeBridge();
37
44
  }
38
45
  /**
@@ -72,12 +79,13 @@ var IframeBridgeCore = class extends CommonBridgeCore {
72
79
  * @param event
73
80
  */
74
81
  handleMessageEventResponse(event) {
75
- const { promiseId, isSuccess, data } = event.data;
82
+ const { eventName, promiseId, isSuccess, data } = event.data;
83
+ console.log("[IframeBridgeCore] \uBA54\uC2DC\uC9C0 \uBC1B\uC74C:", { eventName, promiseId, isSuccess, data });
76
84
  if (this.responseHandler) {
77
- this.responseHandler({ promiseId, isSuccess, data });
85
+ this.responseHandler({ eventName, promiseId, isSuccess, data });
78
86
  }
79
87
  if (this.pendingPromises.has(promiseId)) {
80
- this.handleIframeBridgePromise({ promiseId, isSuccess, data });
88
+ this.handleIframeBridgePromise({ eventName, promiseId, isSuccess, data });
81
89
  }
82
90
  }
83
91
  /**
@@ -100,22 +108,13 @@ var IframeBridgeCore = class extends CommonBridgeCore {
100
108
  jsonParam: { ...restOption }
101
109
  };
102
110
  console.log("[IframeBridgeCore callToIframe] command::", command);
103
- const platform = getDspExecutionEnvironment();
104
- if (platform === "iframe") {
105
- console.log("[IframeBridgeCore callToIframe] \uBD80\uBAA8 \uD638\uCD9C \uC9C1\uC804");
106
- window.parent.postMessage(command, "*");
107
- const promise = this.pendingPromises.get(promiseId);
108
- if (promise) {
109
- this.pendingPromises.delete(promiseId);
110
- promise.resolve(true);
111
- }
112
- return;
111
+ console.log("[IframeBridgeCore callToIframe] \uBD80\uBAA8 \uD638\uCD9C \uC9C1\uC804");
112
+ window.parent.postMessage(command, "*");
113
+ const promise = this.pendingPromises.get(promiseId);
114
+ if (promise) {
115
+ this.pendingPromises.delete(promiseId);
116
+ promise.resolve(true);
113
117
  }
114
- console.warn(
115
- `[IframeBridgeCore callToIframe] \uD604\uC7AC \uD50C\uB7AB\uD3FC(${platform})\uC5D0\uC11C\uB294 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uC11C\uBE44\uC2A4(${eventName})\uC785\uB2C8\uB2E4.`
116
- );
117
- this.pendingPromises.delete(promiseId);
118
- reject(new Error(`[IframeBridgeCore callToIframe] Unsupported platform: ${platform}`));
119
118
  } catch (error) {
120
119
  console.error("[IframeBridgeCore callToIframe] error::", error);
121
120
  this.pendingPromises.delete(promiseId);
@@ -150,14 +149,6 @@ var IframeBridge = class extends CommonBridge {
150
149
  hello() {
151
150
  console.log("[IframeBridge] hello");
152
151
  }
153
- /**
154
- * 영업포탈 tab open
155
- * @param option
156
- * @returns
157
- */
158
- async openMdi(option) {
159
- return this.core.callToTarget("openMdi", option);
160
- }
161
152
  /**
162
153
  * 영업포털 부모의 세션연장, 오픈되어 있는 타 시스템 세션타임 연장
163
154
  * @returns
@@ -362,25 +353,6 @@ var NativeBridge = class extends CommonBridge {
362
353
  async getParameterMap() {
363
354
  return this.core.callToTarget("getParameterMap");
364
355
  }
365
- async dismissPopup(options) {
366
- return this.core.callToTarget("dismissPopup", options);
367
- }
368
- /**
369
- *
370
- * @param options
371
- * @returns
372
- */
373
- async showWebPopup(options) {
374
- return this.core.callToTarget("showWebPopup", options);
375
- }
376
- /**
377
- *
378
- * @param options
379
- * @returns
380
- */
381
- async jumpSafari(options) {
382
- return this.core.callToTarget("jumpSafari", options);
383
- }
384
356
  /**
385
357
  * 기능명: 본인인증 결과 정보 넘기기
386
358
  * 목적: NXL One 에서 본인인증 결과 값을 네이티브로 넘기기 위함
@@ -582,11 +554,11 @@ var NativeBridge = class extends CommonBridge {
582
554
  * @example
583
555
  * ```tsx
584
556
  * // 사용 예시
585
- * Bridge.native.openWeb()
557
+ * Bridge.native.openWeb({ url: 'url', headerTitle: '타이틀', headerType: 'APP', removeNavStack: true });
586
558
  * ```
587
559
  */
588
- openWeb(options) {
589
- return this.core.callToTarget("openWeb", options);
560
+ openWeb({ headerType = "APP", removeNavStack = false, ...rest }) {
561
+ return this.core.callToTarget("openWeb", { headerType, removeNavStack, ...rest });
590
562
  }
591
563
  /**
592
564
  * 웹뷰 닫기
@@ -621,6 +593,28 @@ var NativeBridge = class extends CommonBridge {
621
593
  getAppInfo() {
622
594
  return this.core.callToTarget("getAppInfo");
623
595
  }
596
+ /**
597
+ * 네이티브 헤더 타이틀 변경
598
+ * @example
599
+ * ```tsx
600
+ * // 사용 예시
601
+ * Bridge.native.setHeaderTitle({ headerTitle: '타이틀명' });
602
+ * ```
603
+ */
604
+ setHeaderTitle(options) {
605
+ return this.core.callToTarget("setHeaderTitle", options);
606
+ }
607
+ /**
608
+ * 네이티브 헤더 show / hide
609
+ * @example
610
+ * ```tsx
611
+ * // 사용 예시
612
+ * Bridge.native.hideHeader({ hideHeader: true });
613
+ * ```
614
+ */
615
+ hideHeader(options) {
616
+ return this.core.callToTarget("hideHeader", options);
617
+ }
624
618
  // TODO: 필요 플러그인들 추가
625
619
  };
626
620
 
@@ -866,6 +860,7 @@ var Bridge = {
866
860
  nativeCore: new NativeBridgeCore(),
867
861
  iframeCore: new IframeBridgeCore()
868
862
  };
863
+ //! 필요시 (부모 > 자식): hmpLogout(로그아웃처리), prxSessionExts(세션연장) 이벤트 구현
869
864
 
870
865
  export { Bridge };
871
866
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/common-bridge.ts","../src/common/common-bridge-core.ts","../src/iframe/core/iframe-bridge-core.ts","../src/iframe/bridge/iframe-bridge.ts","../src/native/core/native-bridge-core.ts","../src/native/bridge/native-bridge.ts","../src/native/bridge-oz/native-bridge-oz.ts","../src/bridge.ts"],"names":["isClient","getDspExecutionEnvironment"],"mappings":"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","file":"index.js","sourcesContent":["import { ICommonBridge } from './common-bridge.types';\n\n/**\n * Business Layer Bridge\n * 비즈니스를 호출하는(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridge implements ICommonBridge {\n protected commonHello(): void {\n console.log('commonHello');\n }\n\n abstract hello(): void;\n}\n","/**\n * Core Layer Bridge\n * Core(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridgeCore {\n /**\n * 코어에서 사용할 프로미스 ID 생성 함수\n * @returns\n */\n protected generatePromiseId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).slice(2, 11);\n\n return `${timestamp}_${random}`;\n }\n\n /**\n * core에서 구현해야할 함수\n * @param action\n * @param options\n */\n abstract callToTarget<T>(action: string, options?: Record<string, unknown>): Promise<T>;\n}\n","import { getDspExecutionEnvironment, isClient } from 'sales-frontend-utils';\nimport { MessageEventManager } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport {\n IframeEventName,\n IframeBridgeCommand,\n IframeBridgeOptions,\n IframeBridgePromise,\n IframeBridgeResponseHandler,\n IframeBridgeResponseData\n} from './iframe-bridge-core.types';\n\n/**\n * Iframe Bridge 통신 위한 핵심 클래스\n * 담당: 부모 호출, Promise 관리\n */\nexport class IframeBridgeCore extends CommonBridgeCore {\n private pendingPromises = new Map<string, IframeBridgePromise>();\n private responseHandler?: IframeBridgeResponseHandler;\n\n constructor() {\n super();\n if (!isClient()) {\n return;\n }\n\n this.initializeIframeBridge();\n }\n\n /**\n * 사용하는 쪽에서 응답핸들러를 사용할 수 있도록 필요시, 응답 처리 핸들러 설정\n */\n setResponseHandler(handler: IframeBridgeResponseHandler): void {\n this.responseHandler = handler;\n }\n\n handleIframeBridgePromise(response: IframeBridgeResponseData): boolean {\n const { promiseId, isSuccess, data } = response;\n\n const promise = this.pendingPromises.get(promiseId);\n if (promise) {\n this.pendingPromises.delete(promiseId);\n\n if (isSuccess) {\n promise.resolve(data);\n } else {\n promise.reject(new Error(data));\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * 특정 Promise 존재 여부 확인\n */\n hasPromise(promiseId: string): boolean {\n return this.pendingPromises.has(promiseId);\n }\n\n /**\n * 네이티브 통신을 위해 window.n2bridge 객체 초기화\n */\n private initializeIframeBridge(): void {\n // MessageEventManager에 핸들러 등록(영업포털-웹간 주고받기)\n MessageEventManager.getInstance().registerHandler('iframe-bridge', this.handleMessageEventResponse.bind(this));\n }\n\n /**\n * 브릿지 메시지 이벤트 핸들러\n * @param event\n */\n private handleMessageEventResponse(event: MessageEvent): void {\n const { promiseId, isSuccess, data } = event.data as IframeBridgeResponseData;\n\n // 등록된 핸들러가 있으면 실행\n if (this.responseHandler) {\n this.responseHandler({ promiseId, isSuccess, data });\n }\n\n // 기본 처리\n if (this.pendingPromises.has(promiseId)) {\n this.handleIframeBridgePromise({ promiseId, isSuccess, data });\n }\n }\n\n /**\n * Iframe 통신\n * @param eventName\n * @param option\n * @returns\n */\n async callToTarget<T = boolean>(eventName: IframeEventName, option?: IframeBridgeOptions): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${eventName}_${this.generatePromiseId()}`;\n\n // Promise 등록\n this.pendingPromises.set(promiseId, { resolve, reject });\n\n const { menuUrl, menuNm, ...restOption } = option ?? {};\n\n try {\n const command: IframeBridgeCommand = {\n eventName,\n promiseId,\n menuUrl,\n menuNm,\n jsonParam: { ...restOption }\n };\n\n console.log('[IframeBridgeCore callToIframe] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'iframe') {\n console.log('[IframeBridgeCore callToIframe] 부모 호출 직전');\n\n window.parent.postMessage(command, '*');\n\n // TODO: 부모에서 event.source.postMessage({ promiseId, isSuccess, data }); 형태로 보내줄 수 있다면 소스 삭제\n const promise = this.pendingPromises.get(promiseId);\n if (promise) {\n this.pendingPromises.delete(promiseId);\n promise.resolve(true as T);\n }\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(\n `[IframeBridgeCore callToIframe] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${eventName})입니다.`\n );\n\n this.pendingPromises.delete(promiseId);\n reject(new Error(`[IframeBridgeCore callToIframe] Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[IframeBridgeCore callToIframe] error::', error);\n this.pendingPromises.delete(promiseId);\n reject(error);\n }\n });\n }\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { IframeBridgeCore } from '../core/iframe-bridge-core';\nimport { IframeBridgeResponseHandler, IframeBridgeResponseData } from '../core/iframe-bridge-core.types';\n\nimport { OpenMdiOption, DspMenuWindowOpenOption, dspSimpleWindowOpen } from './iframe-bridge-options.types';\nimport { IIframeBridge } from './iframe-bridge.types';\n\n/**\n * iframe(영업포탈) 전용 Bridge\n */\nexport class IframeBridge extends CommonBridge implements IIframeBridge {\n private core: IframeBridgeCore;\n\n constructor() {\n super();\n this.core = new IframeBridgeCore();\n }\n\n // 응답 핸들러 설정\n setResponseHandler(handler: IframeBridgeResponseHandler): void {\n this.core.setResponseHandler(handler);\n }\n\n // Promise 직접 제어 메서드들 추가\n handleIframeBridgePromise(response: IframeBridgeResponseData): boolean {\n return this.core.handleIframeBridgePromise(response);\n }\n\n // 유틸리티 메서드들도 추가\n hasPromise(promiseId: string): boolean {\n return this.core.hasPromise(promiseId);\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수(test)\n */\n hello(): void {\n console.log('[IframeBridge] hello');\n }\n\n /**\n * 영업포탈 tab open\n * @param option\n * @returns\n */\n async openMdi(option: OpenMdiOption): Promise<boolean> {\n return this.core.callToTarget('openMdi', option);\n }\n\n /**\n * 영업포털 부모의 세션연장, 오픈되어 있는 타 시스템 세션타임 연장\n * @returns\n */\n async dspKeepCallerSession(): Promise<boolean> {\n return this.core.callToTarget('dspKeepCallerSession');\n }\n\n /**\n * 영업포털 메뉴정보에 있는 메뉴 오픈(새탭 생성)\n * @param option\n * @returns\n */\n async dspMenuWindowOpen(option: DspMenuWindowOpenOption): Promise<boolean> {\n return this.core.callToTarget('dspMenuWindowOpen', option);\n }\n\n /**\n * 영업포털 메뉴정보에 없는 메뉴를 오픈(새탭 생성 & 약속된 타켓 메뉴정보를 해당 시스템에 전달)\n * @param option\n * @returns\n */\n async dspSimpleWindowOpen(option: dspSimpleWindowOpen): Promise<boolean> {\n return this.core.callToTarget('dspSimpleWindowOpen', option);\n }\n // TODO: 필요 플러그인들 추가\n}\n","import { getDspExecutionEnvironment, isClient, isStorybookEnv, isFpPlannerApp } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport type {\n NativeBridgeCommand,\n NativeBridgePromise,\n NativeBridgeOptions,\n PromiseHandleBridge,\n CallBridge\n} from './native-bridge-core.types';\n\n/**\n * Native <-> Web 처리를 위한 핵심 클래스\n * 담당: 앱 호출, Promise 관리\n */\nexport class NativeBridgeCore<TAction extends string> extends CommonBridgeCore {\n private promiseHandleName: string;\n private callBridgeName: string;\n\n constructor(callBridgeName = 'n2Bridge', promiseHandleName = 'n2bridge') {\n super();\n\n this.callBridgeName = callBridgeName;\n this.promiseHandleName = promiseHandleName;\n\n this.initializeWindowOzBridge();\n }\n\n /**\n * Promise 관리용 브릿지 객체 가져오기 (window.n2bridge)\n */\n private getPromiseHandleBridge(): PromiseHandleBridge {\n return (window as any)[this.promiseHandleName] as PromiseHandleBridge;\n }\n\n /**\n * 앱 호출용 브릿지 객체 가져오기 (window.n2Bridge)\n */\n private getCallBridge(): CallBridge {\n return (window as any)[this.callBridgeName] as CallBridge;\n }\n\n /**\n * 네이티브 통신을 위해 window.n2OzBridge 객체 초기화\n */\n private initializeWindowOzBridge(): void {\n if (!isClient()) {\n return;\n } // SSR 환경에서는 아무것도 하지 않음\n if (!(window as any)[this.promiseHandleName]) {\n (window as any)[this.promiseHandleName] = {\n promises: {},\n resolvePromise: () => {},\n finallyResolvePromise: () => {},\n callFromNative: () => {}\n };\n }\n\n const bridge = this.getPromiseHandleBridge();\n\n // 항상 최신 함수로 업데이트\n bridge.resolvePromise = this.createResolvePromiseHandler();\n bridge.finallyResolvePromise = this.createFinallyResolvePromiseHandler();\n\n if (isStorybookEnv() && window.parent) {\n // 스토리북에서는 현재 스토리가 iframe으로 로드되므로 앱에서 부모 프레임에 브릿지를 리턴해도 자식으로 전달되도록 보정하는 코드\n (window.parent as any)[this.promiseHandleName] = bridge;\n window.parent.dispatchEvent = (...args) => window.dispatchEvent.apply(null, args);\n }\n }\n\n /**\n * Promise 처리 함수(Native에서 호출)\n * @returns\n */\n private createResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n console.log('[NativeBridgeCore resolvePromise]::', promiseId, data, error);\n\n const bridge = this.getPromiseHandleBridge();\n\n const promise: NativeBridgePromise | undefined = bridge.promises[promiseId];\n if (!promise) {\n console.error('[NativeBridgeCore resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[NativeBridgeCore resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Promise 최종 처리 함수\n * @returns\n */\n private createFinallyResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n const bridge = this.getPromiseHandleBridge();\n\n const promise: NativeBridgePromise | undefined = bridge.promises[promiseId];\n if (!promise) {\n console.error('[NativeBridgeCore resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[NativeBridgeCore resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * 네이티브 통신\n * @param action\n * @param options\n * @returns\n */\n async callToTarget<T>(action: TAction, option: NativeBridgeOptions = {}): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${action}_${this.generatePromiseId()}`;\n console.log('[NativeBridgeCore callToNative] promiseId::', promiseId);\n\n const bridge = this.getPromiseHandleBridge();\n\n // 바로 window.promiseHandler에 promises에 저장\n bridge.promises[promiseId] = {\n resolve: (value: T) => {\n resolve(value);\n },\n reject: (reason?: any) => {\n reject(reason);\n }\n };\n\n try {\n const command: NativeBridgeCommand = {\n action,\n promiseId,\n option\n };\n\n console.log('[NativeBridgeCore callToNative] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'android-webview') {\n const callBridge = this.getCallBridge();\n callBridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios-webview') {\n const message = isFpPlannerApp()\n ? { ...command, service: 'native' } // 플래너: service 추가\n : command;\n\n (window.webkit?.messageHandlers as any)?.[this.callBridgeName]?.postMessage(JSON.stringify(message));\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(\n `[NativeBridgeCore callToNative] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${action})입니다.`\n );\n this.cleanupPromise(promiseId);\n reject(new Error(`[NativeBridgeCore callToNative] Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[NativeBridgeCore callToNative] error::', error);\n this.cleanupPromise(promiseId);\n reject(error);\n }\n });\n }\n\n /**\n * promiseId를 초기화 해줍니다.\n * @param promiseId\n */\n private cleanupPromise(promiseId: string): void {\n const bridge = this.getPromiseHandleBridge();\n delete bridge.promises[promiseId];\n }\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n OnAuthenticationResultRequest,\n OnAuthenticationResultResponse,\n GetAccessTokenResponse,\n GetAnalyticsUserPropertyResponse,\n GetOzFontParamResponse,\n GetAppInfoResponse\n} from './native-bridge-dto.types';\nimport type {\n ShowWebPopupOptions,\n CommonOzBridgetResponseType,\n DownloadOzdOptions,\n OpenBrowserOptions,\n CreateOZViewerOptions,\n OpenWebOptions,\n localFetchBridgeOptions\n} from './native-bridge-options.types';\nimport type { INativeBridge, NativeAction } from './native-bridge.types';\n\n/**\n * App - Web Bridge\n */\nexport class NativeBridge extends CommonBridge implements INativeBridge {\n private core: NativeBridgeCore<NativeAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeAction>();\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * getParameterMap\n * @returns\n */\n async getParameterMap<T = any>(): Promise<T> {\n return this.core.callToTarget<T>('getParameterMap');\n }\n\n async dismissPopup<T = any>(options?: any): Promise<T> {\n return this.core.callToTarget<T>('dismissPopup', options);\n }\n\n /**\n *\n * @param options\n * @returns\n */\n async showWebPopup<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToTarget<T>('showWebPopup', options);\n }\n\n /**\n *\n * @param options\n * @returns\n */\n async jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToTarget<T>('jumpSafari', options);\n }\n\n /**\n * 기능명: 본인인증 결과 정보 넘기기\n * 목적: NXL One 에서 본인인증 결과 값을 네이티브로 넘기기 위함\n * @param options\n * @returns\n */\n async onAuthenticationResult(options: OnAuthenticationResultRequest): Promise<OnAuthenticationResultResponse> {\n return this.core.callToTarget('onAuthenticationResult', options);\n }\n\n /**\n * Access Token 가져오기\n * @returns\n */\n async getAccessToken(): Promise<GetAccessTokenResponse> {\n return this.core.callToTarget('getAccessToken');\n }\n\n /**\n * ### Bridge for Oz\n * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.createReportEx({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n createOZViewer(options: CreateOZViewerOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'createOZViewer',\n // delimiter 미입력시 \\n 으로 기본값 처리\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * OZ 뷰어를 닫습니다\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideViewer();\n * ```\n */\n hideOZViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOZViewer');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 OZD를 다운받는 브릿지입니다\n * @example\n * ```tsx\n * const options = {\n * // 현재 증권번호\n * policyNumber: \"300034894\",\n * // FP 사번\n * fpInfo: { \"uniqNo\": \"2210000\" }\n * // 서식 목록들\n * data: [{\n * // 서식에 대한 정보들\n * \"name\": \"[A0010]청약서\",\n * \"complete\": false,\n * \"startPage\": 0,\n * \"endPage\": 0,\n * \"focus\": false,\n * \"doc\": [{\n * // 서식에 속한 OZD 파일들\n * \"docCode\": \"A0010\",\n * \"fileID\": \"1HLqZJCNt6idLKkAA\",\n * \"imageFormatCode\": \"RT003001\",\n * \"imageDocumentTypeCode\": \"IT00\",\n * // ozd 파일이 다운로드된 경로\n * \"filePath\": \"\",\n * \"startPage\": 0,\n * \"endPage\": 0\n * }]\n * }, ],\n * }\n * await Bridge.native.downloadDocument(options)\n * ```\n */\n async downloadDocument(options: DownloadOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<DownloadOzdOptions>>('downloadDocument', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getOzFontParam()\n * ```\n */\n async getOzFontParam() {\n return this.core.callToTarget<CommonOzBridgetResponseType<GetOzFontParamResponse>>('getOzFontParam');\n }\n\n /**\n * ### Bridge for Oz\n * 로더 컴포넌트 show\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.showLoader()\n * ```\n */\n async showLoader() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showLoader');\n }\n\n /**\n * ### Bridge for Oz\n * 로더 컴포넌트 hide\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideLoader()\n * ```\n */\n async hideLoader() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideLoader');\n }\n\n /**\n * ### Bridge for Oz\n * 태블릿 로컬에 있는 파일을 fetch하기 위한 url을 만들어주는 브릿지\n *\n * 파일의 절대경로는 saveSignImg 혹은 pdfExport시 확보할수 있다\n * @example\n * ```tsx\n * await Bridge.native.localFetchBridge({filePath: \"/data/0/~~~/file.ext\"});\n * ```\n */\n async localFetchBridge(options: localFetchBridgeOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('localFetchBridge', options);\n }\n\n /**\n * 홈 이동\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.goHome()\n * ```\n */\n goHome(): Promise<string> {\n return this.core.callToTarget('goHome');\n }\n\n /**\n * 전체메뉴 열기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.showMenu()\n * ```\n */\n showMenu(): Promise<string> {\n return this.core.callToTarget('showMenu');\n }\n\n /**\n * GA4 정보 얻기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAnalyticsUserProperty()\n * ```\n */\n getAnalyticsUserProperty(): Promise<GetAnalyticsUserPropertyResponse> {\n return this.core.callToTarget('getAnalyticsUserProperty');\n }\n\n /**\n *외부 브라우저 호출\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAnalyticsUserProperty()\n * ```\n */\n openBrowser(options: OpenBrowserOptions): Promise<string> {\n return this.core.callToTarget('openBrowser', options);\n }\n\n /**\n * 웹뷰 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideWebPopup()\n * ```\n */\n hideWebPopup(): Promise<string> {\n return this.core.callToTarget('hideWebPopup');\n }\n\n /**\n * OnePass 인증\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.requestAuthentication()\n * ```\n */\n requestAuthentication(): Promise<string> {\n return this.core.callToTarget('requestAuthentication');\n }\n\n /**\n * 웹뷰 띄우기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.openWeb()\n * ```\n */\n openWeb(options: OpenWebOptions): Promise<string> {\n return this.core.callToTarget('openWeb', options);\n }\n\n /**\n * 웹뷰 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.closeWeb()\n * ```\n */\n closeWeb(): Promise<string> {\n return this.core.callToTarget('closeWeb');\n }\n\n /**\n * 앱 종료\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.exitApp()\n * ```\n */\n exitApp(): Promise<string> {\n return this.core.callToTarget('exitApp');\n }\n\n /**\n * 앱 정보 가져오기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAppInfo()\n * ```\n */\n getAppInfo(): Promise<GetAppInfoResponse> {\n return this.core.callToTarget('getAppInfo');\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { CommonOzBridgetResponseType } from '../bridge/native-bridge-options.types';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n UpdateOzdOptions,\n createOzPdfViewerOptions,\n ShowAlertOptions\n} from './native-bridge-oz-options.types';\nimport type { INativeBridgeOz, NativeOzAction } from './native-bridge-oz.types';\n\n/**\n * App - Web Bridge(for OZ)\n */\nexport class NativeBridgeOz extends CommonBridge implements INativeBridgeOz {\n private core: NativeBridgeCore<NativeOzAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeOzAction>('n2OzBridge', 'n2ozBridge');\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 정보를 가져옵니다\n * @example\n * ```tsx\n * // 사용 예시:\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * // 리턴값이 null이 나올수 있음\n * const { data } = await Bridge.nativeOz.getInformation({ command: 'INPUT_JSON' });\n * ```\n */\n async getInformation(options: GetInformationOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getInformation', options);\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 가져옵니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * await Bridge.nativeOz.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal(options: GetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // value 자리에 string이 아닌 값을 넣어도 getGlobal시 string으로 변환되어 리턴됩니다\n * Bridge.nativeOz.setGlobal({ key: \"AAA\", value: \"myValue\" });\n * ```\n */\n setGlobal(options: SetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<boolean | null>>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * Bridge.nativeOz.script({ command });\n * ```\n */\n script(options: ScriptOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('script', options);\n }\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * Bridge.nativeOz.scriptEX({ command, param });\n * ```\n */\n scriptEx(options: ScriptExOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'scriptEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * - 서명이미지 크롭\n * - 중간저장 서명이미지 추출\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex(options: TriggerExternalEventByDocIndexOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.updateOzDocumentStatus(document);\n * ```\n */\n async updateOzDocumentStatus(options: UpdateOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('updateOzDocumentStatus', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식을 PDF로 export 요청\n * export 결과는 `OZViewerEvent.OZExportCommand`로 트리거 된다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.savePdf({ exportType: \"PDF\", fileName: \"test.pdf\", startPage: 1, endPage: 1 })\n * ```\n */\n async savePdf(options: SavePdfOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'savePdf',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.saveSignImg({ fileName: 'sign.png', signImageKey: 'A0010_mynm_sg', policyNumber });\n * ```\n */\n async saveSignImg(options: SaveSignImgOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.createOzPdfViewer({ filePath: \"/data/0/app/total.pdf\" });\n * ```\n */\n async createOzPdfViewer(options: createOzPdfViewerOptions) {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToTarget<CommonOzBridgetResponseType>('createOzPdfViewer', options);\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOzPdfViewer');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showSignatureShortcut();\n */\n async showSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideSignatureShortcut();\n */\n async hideSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showMissingFieldWarning();\n */\n async showMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideMissingFieldWarning();\n */\n async hideMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * Alert 표시용 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showAlert({\n * title: '모달 타이틀',\n * message: '모달 내용',\n * // 모달에 표시할 버튼들 설정\n * buttons: { close: false, main: \"확인\" }\n * })\n * ```\n */\n async showAlert(options: ShowAlertOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<keyof ShowAlertOptions[\"buttons\"]>>('showAlert', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { IframeBridge } from './iframe/bridge/iframe-bridge';\nimport { IframeBridgeCore } from './iframe/core/iframe-bridge-core';\nimport { NativeBridge } from './native/bridge/native-bridge';\nimport { NativeBridgeOz } from './native/bridge-oz/native-bridge-oz';\nimport { NativeBridgeCore } from './native/core/native-bridge-core';\n\nexport const Bridge = {\n native: new NativeBridge(),\n nativeOz: new NativeBridgeOz(),\n iframe: new IframeBridge(),\n nativeCore: new NativeBridgeCore(),\n iframeCore: new IframeBridgeCore()\n};\n\nexport type * from './native/bridge/native-bridge-dto.types';\nexport type * from \"./native/bridge/native-bridge-options.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-dto.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-options.types\";\n"]}
1
+ {"version":3,"sources":["../src/common/common-bridge.ts","../src/common/common-bridge-core.ts","../src/iframe/core/iframe-bridge-core.ts","../src/iframe/bridge/iframe-bridge.ts","../src/native/core/native-bridge-core.ts","../src/native/bridge/native-bridge.ts","../src/native/bridge-oz/native-bridge-oz.ts","../src/bridge.ts"],"names":["isClient","getDspExecutionEnvironment"],"mappings":"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","file":"index.js","sourcesContent":["import { ICommonBridge } from './common-bridge.types';\n\n/**\n * Business Layer Bridge\n * 비즈니스를 호출하는(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridge implements ICommonBridge {\n protected commonHello(): void {\n console.log('commonHello');\n }\n\n abstract hello(): void;\n}\n","/**\n * Core Layer Bridge\n * Core(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridgeCore {\n /**\n * 코어에서 사용할 프로미스 ID 생성 함수\n * @returns\n */\n protected generatePromiseId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).slice(2, 11);\n\n return `${timestamp}_${random}`;\n }\n\n /**\n * core에서 구현해야할 함수\n * @param action\n * @param options\n */\n abstract callToTarget<T>(action: string, options?: Record<string, unknown>): Promise<T>;\n}\n","import { getDspExecutionEnvironment, isClient } from 'sales-frontend-utils';\nimport { MessageEventManager } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport {\n IframeEventName,\n IframeBridgeCommand,\n IframeBridgeOptions,\n IframeBridgePromise,\n IframeBridgeResponseHandler,\n IframeBridgeResponseData\n} from './iframe-bridge-core.types';\n\n/**\n * Iframe Bridge 통신 위한 핵심 클래스\n * 담당: 부모 호출, Promise 관리\n */\nexport class IframeBridgeCore extends CommonBridgeCore {\n private pendingPromises = new Map<string, IframeBridgePromise>();\n private responseHandler?: IframeBridgeResponseHandler;\n\n constructor() {\n super();\n\n if (!isClient()) {\n console.warn('[IframeBridgeCore] 클라이언트 환경이 아닙니다.');\n\n return;\n }\n\n const platform = getDspExecutionEnvironment();\n if (platform !== 'iframe') {\n console.warn(`[IframeBridgeCore] iframe 환경이 아닙니다. (현재: ${platform})`);\n\n return;\n }\n\n console.log('[IframeBridgeCore] iframe 환경에서 초기화 시작');\n this.initializeIframeBridge();\n }\n\n /**\n * 사용하는 쪽에서 응답핸들러를 사용할 수 있도록 필요시, 응답 처리 핸들러 설정\n */\n setResponseHandler(handler: IframeBridgeResponseHandler): void {\n this.responseHandler = handler;\n }\n\n handleIframeBridgePromise(response: IframeBridgeResponseData): boolean {\n const { promiseId, isSuccess, data } = response;\n\n const promise = this.pendingPromises.get(promiseId);\n if (promise) {\n this.pendingPromises.delete(promiseId);\n\n if (isSuccess) {\n promise.resolve(data);\n } else {\n promise.reject(new Error(data));\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * 특정 Promise 존재 여부 확인\n */\n hasPromise(promiseId: string): boolean {\n return this.pendingPromises.has(promiseId);\n }\n\n /**\n * 네이티브 통신을 위해 window.n2bridge 객체 초기화\n */\n private initializeIframeBridge(): void {\n // MessageEventManager에 핸들러 등록(영업포털-웹간 주고받기)\n MessageEventManager.getInstance().registerHandler('iframe-bridge', this.handleMessageEventResponse.bind(this));\n }\n\n /**\n * 브릿지 메시지 이벤트 핸들러\n * @param event\n */\n private handleMessageEventResponse(event: MessageEvent): void {\n const { eventName, promiseId, isSuccess, data } = event.data as IframeBridgeResponseData;\n\n console.log('[IframeBridgeCore] 메시지 받음:', { eventName, promiseId, isSuccess, data });\n\n //! 필요시 (부모 > 자식): hmpLogout(로그아웃처리), prxSessionExts(세션연장) 이벤트 구현\n // 등록된 핸들러가 있으면 실행\n if (this.responseHandler) {\n this.responseHandler({ eventName, promiseId, isSuccess, data });\n }\n\n // (부모 > 자식) 기본 Promise 처리\n if (this.pendingPromises.has(promiseId)) {\n this.handleIframeBridgePromise({ eventName, promiseId, isSuccess, data });\n }\n }\n\n /**\n * Iframe 통신\n * @param eventName\n * @param option\n * @returns\n */\n async callToTarget<T = boolean>(eventName: IframeEventName, option?: IframeBridgeOptions): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${eventName}_${this.generatePromiseId()}`;\n\n // Promise 등록\n this.pendingPromises.set(promiseId, { resolve, reject });\n\n const { menuUrl, menuNm, ...restOption } = option ?? {};\n\n try {\n const command: IframeBridgeCommand = {\n eventName,\n promiseId,\n menuUrl,\n menuNm,\n jsonParam: { ...restOption }\n };\n\n console.log('[IframeBridgeCore callToIframe] command::', command);\n console.log('[IframeBridgeCore callToIframe] 부모 호출 직전');\n\n window.parent.postMessage(command, '*');\n\n // TODO: 부모에서 event.source.postMessage({ promiseId, isSuccess, data }); 형태로 보내줄 수 있다면 소스 삭제\n const promise = this.pendingPromises.get(promiseId);\n if (promise) {\n this.pendingPromises.delete(promiseId);\n promise.resolve(true as T);\n }\n } catch (error) {\n console.error('[IframeBridgeCore callToIframe] error::', error);\n this.pendingPromises.delete(promiseId);\n reject(error);\n }\n });\n }\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { IframeBridgeCore } from '../core/iframe-bridge-core';\nimport { IframeBridgeResponseHandler, IframeBridgeResponseData } from '../core/iframe-bridge-core.types';\n\nimport { DspMenuWindowOpenOption, DspSimpleWindowOpen } from './iframe-bridge-options.types';\nimport { IIframeBridge } from './iframe-bridge.types';\n\n/**\n * iframe(영업포탈) 전용 Bridge\n */\nexport class IframeBridge extends CommonBridge implements IIframeBridge {\n private core: IframeBridgeCore;\n\n constructor() {\n super();\n this.core = new IframeBridgeCore();\n }\n\n // 응답 핸들러 설정\n setResponseHandler(handler: IframeBridgeResponseHandler): void {\n this.core.setResponseHandler(handler);\n }\n\n // Promise 직접 제어 메서드들 추가\n handleIframeBridgePromise(response: IframeBridgeResponseData): boolean {\n return this.core.handleIframeBridgePromise(response);\n }\n\n // 유틸리티 메서드들도 추가\n hasPromise(promiseId: string): boolean {\n return this.core.hasPromise(promiseId);\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수(test)\n */\n hello(): void {\n console.log('[IframeBridge] hello');\n }\n\n /**\n * 영업포털 부모의 세션연장, 오픈되어 있는 타 시스템 세션타임 연장\n * @returns\n */\n async dspKeepCallerSession(): Promise<boolean> {\n return this.core.callToTarget('dspKeepCallerSession');\n }\n\n /**\n * 영업포털 메뉴정보에 있는 메뉴 오픈(새탭 생성)\n * @param option\n * @returns\n */\n async dspMenuWindowOpen(option: DspMenuWindowOpenOption): Promise<boolean> {\n return this.core.callToTarget('dspMenuWindowOpen', option);\n }\n\n /**\n * 영업포털 메뉴정보에 없는 메뉴를 오픈(새탭 생성 & 약속된 타켓 메뉴정보를 해당 시스템에 전달)\n * @param option\n * @returns\n */\n async dspSimpleWindowOpen(option: DspSimpleWindowOpen): Promise<boolean> {\n return this.core.callToTarget('dspSimpleWindowOpen', option);\n }\n // TODO: 필요 플러그인들 추가\n}\n","import { getDspExecutionEnvironment, isClient, isStorybookEnv, isFpPlannerApp } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport type {\n NativeBridgeCommand,\n NativeBridgePromise,\n NativeBridgeOptions,\n PromiseHandleBridge,\n CallBridge\n} from './native-bridge-core.types';\n\n/**\n * Native <-> Web 처리를 위한 핵심 클래스\n * 담당: 앱 호출, Promise 관리\n */\nexport class NativeBridgeCore<TAction extends string> extends CommonBridgeCore {\n private promiseHandleName: string;\n private callBridgeName: string;\n\n constructor(callBridgeName = 'n2Bridge', promiseHandleName = 'n2bridge') {\n super();\n\n this.callBridgeName = callBridgeName;\n this.promiseHandleName = promiseHandleName;\n\n this.initializeWindowOzBridge();\n }\n\n /**\n * Promise 관리용 브릿지 객체 가져오기 (window.n2bridge)\n */\n private getPromiseHandleBridge(): PromiseHandleBridge {\n return (window as any)[this.promiseHandleName] as PromiseHandleBridge;\n }\n\n /**\n * 앱 호출용 브릿지 객체 가져오기 (window.n2Bridge)\n */\n private getCallBridge(): CallBridge {\n return (window as any)[this.callBridgeName] as CallBridge;\n }\n\n /**\n * 네이티브 통신을 위해 window.n2OzBridge 객체 초기화\n */\n private initializeWindowOzBridge(): void {\n if (!isClient()) {\n return;\n } // SSR 환경에서는 아무것도 하지 않음\n if (!(window as any)[this.promiseHandleName]) {\n (window as any)[this.promiseHandleName] = {\n promises: {},\n resolvePromise: () => {},\n finallyResolvePromise: () => {},\n callFromNative: () => {}\n };\n }\n\n const bridge = this.getPromiseHandleBridge();\n\n // 항상 최신 함수로 업데이트\n bridge.resolvePromise = this.createResolvePromiseHandler();\n bridge.finallyResolvePromise = this.createFinallyResolvePromiseHandler();\n\n if (isStorybookEnv() && window.parent) {\n // 스토리북에서는 현재 스토리가 iframe으로 로드되므로 앱에서 부모 프레임에 브릿지를 리턴해도 자식으로 전달되도록 보정하는 코드\n (window.parent as any)[this.promiseHandleName] = bridge;\n window.parent.dispatchEvent = (...args) => window.dispatchEvent.apply(null, args);\n }\n }\n\n /**\n * Promise 처리 함수(Native에서 호출)\n * @returns\n */\n private createResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n console.log('[NativeBridgeCore resolvePromise]::', promiseId, data, error);\n\n const bridge = this.getPromiseHandleBridge();\n\n const promise: NativeBridgePromise | undefined = bridge.promises[promiseId];\n if (!promise) {\n console.error('[NativeBridgeCore resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[NativeBridgeCore resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Promise 최종 처리 함수\n * @returns\n */\n private createFinallyResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n const bridge = this.getPromiseHandleBridge();\n\n const promise: NativeBridgePromise | undefined = bridge.promises[promiseId];\n if (!promise) {\n console.error('[NativeBridgeCore resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[NativeBridgeCore resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * 네이티브 통신\n * @param action\n * @param options\n * @returns\n */\n async callToTarget<T>(action: TAction, option: NativeBridgeOptions = {}): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${action}_${this.generatePromiseId()}`;\n console.log('[NativeBridgeCore callToNative] promiseId::', promiseId);\n\n const bridge = this.getPromiseHandleBridge();\n\n // 바로 window.promiseHandler에 promises에 저장\n bridge.promises[promiseId] = {\n resolve: (value: T) => {\n resolve(value);\n },\n reject: (reason?: any) => {\n reject(reason);\n }\n };\n\n try {\n const command: NativeBridgeCommand = {\n action,\n promiseId,\n option\n };\n\n console.log('[NativeBridgeCore callToNative] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'android-webview') {\n const callBridge = this.getCallBridge();\n callBridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios-webview') {\n const message = isFpPlannerApp()\n ? { ...command, service: 'native' } // 플래너: service 추가\n : command;\n\n (window.webkit?.messageHandlers as any)?.[this.callBridgeName]?.postMessage(JSON.stringify(message));\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(\n `[NativeBridgeCore callToNative] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${action})입니다.`\n );\n this.cleanupPromise(promiseId);\n reject(new Error(`[NativeBridgeCore callToNative] Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[NativeBridgeCore callToNative] error::', error);\n this.cleanupPromise(promiseId);\n reject(error);\n }\n });\n }\n\n /**\n * promiseId를 초기화 해줍니다.\n * @param promiseId\n */\n private cleanupPromise(promiseId: string): void {\n const bridge = this.getPromiseHandleBridge();\n delete bridge.promises[promiseId];\n }\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n OnAuthenticationResultRequest,\n OnAuthenticationResultResponse,\n GetAccessTokenResponse,\n GetAnalyticsUserPropertyResponse,\n GetOzFontParamResponse,\n GetAppInfoResponse\n} from './native-bridge-dto.types';\nimport type {\n CommonOzBridgetResponseType,\n DownloadOzdOptions,\n OpenBrowserOptions,\n CreateOZViewerOptions,\n OpenWebOptions,\n localFetchBridgeOptions,\n SetHeaderTitleOptions,\n HideHeaderOptions\n} from './native-bridge-options.types';\nimport type { INativeBridge, NativeAction } from './native-bridge.types';\n\n/**\n * App - Web Bridge\n */\nexport class NativeBridge extends CommonBridge implements INativeBridge {\n private core: NativeBridgeCore<NativeAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeAction>();\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * getParameterMap\n * @returns\n */\n async getParameterMap<T = any>(): Promise<T> {\n return this.core.callToTarget<T>('getParameterMap');\n }\n\n /**\n * 기능명: 본인인증 결과 정보 넘기기\n * 목적: NXL One 에서 본인인증 결과 값을 네이티브로 넘기기 위함\n * @param options\n * @returns\n */\n async onAuthenticationResult(options: OnAuthenticationResultRequest): Promise<OnAuthenticationResultResponse> {\n return this.core.callToTarget('onAuthenticationResult', options);\n }\n\n /**\n * Access Token 가져오기\n * @returns\n */\n async getAccessToken(): Promise<GetAccessTokenResponse> {\n return this.core.callToTarget('getAccessToken');\n }\n\n /**\n * ### Bridge for Oz\n * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.createReportEx({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n createOZViewer(options: CreateOZViewerOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'createOZViewer',\n // delimiter 미입력시 \\n 으로 기본값 처리\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * OZ 뷰어를 닫습니다\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideViewer();\n * ```\n */\n hideOZViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOZViewer');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 OZD를 다운받는 브릿지입니다\n * @example\n * ```tsx\n * const options = {\n * // 현재 증권번호\n * policyNumber: \"300034894\",\n * // FP 사번\n * fpInfo: { \"uniqNo\": \"2210000\" }\n * // 서식 목록들\n * data: [{\n * // 서식에 대한 정보들\n * \"name\": \"[A0010]청약서\",\n * \"complete\": false,\n * \"startPage\": 0,\n * \"endPage\": 0,\n * \"focus\": false,\n * \"doc\": [{\n * // 서식에 속한 OZD 파일들\n * \"docCode\": \"A0010\",\n * \"fileID\": \"1HLqZJCNt6idLKkAA\",\n * \"imageFormatCode\": \"RT003001\",\n * \"imageDocumentTypeCode\": \"IT00\",\n * // ozd 파일이 다운로드된 경로\n * \"filePath\": \"\",\n * \"startPage\": 0,\n * \"endPage\": 0\n * }]\n * }, ],\n * }\n * await Bridge.native.downloadDocument(options)\n * ```\n */\n async downloadDocument(options: DownloadOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<DownloadOzdOptions>>('downloadDocument', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getOzFontParam()\n * ```\n */\n async getOzFontParam() {\n return this.core.callToTarget<CommonOzBridgetResponseType<GetOzFontParamResponse>>('getOzFontParam');\n }\n\n /**\n * ### Bridge for Oz\n * 로더 컴포넌트 show\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.showLoader()\n * ```\n */\n async showLoader() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showLoader');\n }\n\n /**\n * ### Bridge for Oz\n * 로더 컴포넌트 hide\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideLoader()\n * ```\n */\n async hideLoader() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideLoader');\n }\n\n /**\n * ### Bridge for Oz\n * 태블릿 로컬에 있는 파일을 fetch하기 위한 url을 만들어주는 브릿지\n *\n * 파일의 절대경로는 saveSignImg 혹은 pdfExport시 확보할수 있다\n * @example\n * ```tsx\n * await Bridge.native.localFetchBridge({filePath: \"/data/0/~~~/file.ext\"});\n * ```\n */\n async localFetchBridge(options: localFetchBridgeOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('localFetchBridge', options);\n }\n\n /**\n * 홈 이동\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.goHome()\n * ```\n */\n goHome(): Promise<string> {\n return this.core.callToTarget('goHome');\n }\n\n /**\n * 전체메뉴 열기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.showMenu()\n * ```\n */\n showMenu(): Promise<string> {\n return this.core.callToTarget('showMenu');\n }\n\n /**\n * GA4 정보 얻기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAnalyticsUserProperty()\n * ```\n */\n getAnalyticsUserProperty(): Promise<GetAnalyticsUserPropertyResponse> {\n return this.core.callToTarget('getAnalyticsUserProperty');\n }\n\n /**\n *외부 브라우저 호출\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAnalyticsUserProperty()\n * ```\n */\n openBrowser(options: OpenBrowserOptions): Promise<string> {\n return this.core.callToTarget('openBrowser', options);\n }\n\n /**\n * 웹뷰 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideWebPopup()\n * ```\n */\n hideWebPopup(): Promise<string> {\n return this.core.callToTarget('hideWebPopup');\n }\n\n /**\n * OnePass 인증\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.requestAuthentication()\n * ```\n */\n requestAuthentication(): Promise<string> {\n return this.core.callToTarget('requestAuthentication');\n }\n\n /**\n * 웹뷰 띄우기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.openWeb({ url: 'url', headerTitle: '타이틀', headerType: 'APP', removeNavStack: true });\n * ```\n */\n openWeb({ headerType = 'APP', removeNavStack = false, ...rest }: OpenWebOptions): Promise<string> {\n return this.core.callToTarget('openWeb', { headerType, removeNavStack, ...rest });\n }\n\n /**\n * 웹뷰 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.closeWeb()\n * ```\n */\n closeWeb(): Promise<string> {\n return this.core.callToTarget('closeWeb');\n }\n\n /**\n * 앱 종료\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.exitApp()\n * ```\n */\n exitApp(): Promise<string> {\n return this.core.callToTarget('exitApp');\n }\n\n /**\n * 앱 정보 가져오기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAppInfo()\n * ```\n */\n getAppInfo(): Promise<GetAppInfoResponse> {\n return this.core.callToTarget('getAppInfo');\n }\n\n /**\n * 네이티브 헤더 타이틀 변경\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.setHeaderTitle({ headerTitle: '타이틀명' });\n * ```\n */\n setHeaderTitle(options: SetHeaderTitleOptions): Promise<string> {\n return this.core.callToTarget('setHeaderTitle', options);\n }\n\n /**\n * 네이티브 헤더 show / hide\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideHeader({ hideHeader: true });\n * ```\n */\n hideHeader(options: HideHeaderOptions): Promise<string> {\n return this.core.callToTarget('hideHeader', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { CommonOzBridgetResponseType } from '../bridge/native-bridge-options.types';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n UpdateOzdOptions,\n createOzPdfViewerOptions,\n ShowAlertOptions\n} from './native-bridge-oz-options.types';\nimport type { INativeBridgeOz, NativeOzAction } from './native-bridge-oz.types';\n\n/**\n * App - Web Bridge(for OZ)\n */\nexport class NativeBridgeOz extends CommonBridge implements INativeBridgeOz {\n private core: NativeBridgeCore<NativeOzAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeOzAction>('n2OzBridge', 'n2ozBridge');\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 정보를 가져옵니다\n * @example\n * ```tsx\n * // 사용 예시:\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * // 리턴값이 null이 나올수 있음\n * const { data } = await Bridge.nativeOz.getInformation({ command: 'INPUT_JSON' });\n * ```\n */\n async getInformation(options: GetInformationOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getInformation', options);\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 가져옵니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * await Bridge.nativeOz.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal(options: GetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // value 자리에 string이 아닌 값을 넣어도 getGlobal시 string으로 변환되어 리턴됩니다\n * Bridge.nativeOz.setGlobal({ key: \"AAA\", value: \"myValue\" });\n * ```\n */\n setGlobal(options: SetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<boolean | null>>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * Bridge.nativeOz.script({ command });\n * ```\n */\n script(options: ScriptOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('script', options);\n }\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * Bridge.nativeOz.scriptEX({ command, param });\n * ```\n */\n scriptEx(options: ScriptExOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'scriptEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * - 서명이미지 크롭\n * - 중간저장 서명이미지 추출\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex(options: TriggerExternalEventByDocIndexOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.updateOzDocumentStatus(document);\n * ```\n */\n async updateOzDocumentStatus(options: UpdateOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('updateOzDocumentStatus', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식을 PDF로 export 요청\n * export 결과는 `OZViewerEvent.OZExportCommand`로 트리거 된다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.savePdf({ exportType: \"PDF\", fileName: \"test.pdf\", startPage: 1, endPage: 1 })\n * ```\n */\n async savePdf(options: SavePdfOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'savePdf',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.saveSignImg({ fileName: 'sign.png', signImageKey: 'A0010_mynm_sg', policyNumber });\n * ```\n */\n async saveSignImg(options: SaveSignImgOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.createOzPdfViewer({ filePath: \"/data/0/app/total.pdf\" });\n * ```\n */\n async createOzPdfViewer(options: createOzPdfViewerOptions) {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToTarget<CommonOzBridgetResponseType>('createOzPdfViewer', options);\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOzPdfViewer');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showSignatureShortcut();\n */\n async showSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideSignatureShortcut();\n */\n async hideSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showMissingFieldWarning();\n */\n async showMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideMissingFieldWarning();\n */\n async hideMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * Alert 표시용 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showAlert({\n * title: '모달 타이틀',\n * message: '모달 내용',\n * // 모달에 표시할 버튼들 설정\n * buttons: { close: false, main: \"확인\" }\n * })\n * ```\n */\n async showAlert(options: ShowAlertOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<keyof ShowAlertOptions[\"buttons\"]>>('showAlert', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { IframeBridge } from './iframe/bridge/iframe-bridge';\nimport { IframeBridgeCore } from './iframe/core/iframe-bridge-core';\nimport { NativeBridge } from './native/bridge/native-bridge';\nimport { NativeBridgeOz } from './native/bridge-oz/native-bridge-oz';\nimport { NativeBridgeCore } from './native/core/native-bridge-core';\n\nexport const Bridge = {\n native: new NativeBridge(),\n nativeOz: new NativeBridgeOz(),\n iframe: new IframeBridge(),\n nativeCore: new NativeBridgeCore(),\n iframeCore: new IframeBridgeCore()\n};\n\nexport type * from './native/bridge/native-bridge-dto.types';\nexport type * from \"./native/bridge/native-bridge-options.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-dto.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-options.types\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sales-frontend-bridge",
3
- "version": "0.0.62",
3
+ "version": "0.0.63",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",