sales-frontend-bridge 0.0.105 → 0.0.106
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 +18 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +40 -22
- package/dist/index.d.ts +40 -22
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -471,6 +471,23 @@ var NativeBridge = class extends CommonBridge {
|
|
|
471
471
|
async hideLoader() {
|
|
472
472
|
return this.core.callToTarget("hideLoader");
|
|
473
473
|
}
|
|
474
|
+
/**
|
|
475
|
+
* ### Bridge for Oz
|
|
476
|
+
* Alert 표시용 브릿지
|
|
477
|
+
* @example
|
|
478
|
+
* ```tsx
|
|
479
|
+
* // 사용 예시
|
|
480
|
+
* await Bridge.native.showAlert({
|
|
481
|
+
* title: '모달 타이틀',
|
|
482
|
+
* message: '모달 내용',
|
|
483
|
+
* // 모달에 표시할 버튼들 설정
|
|
484
|
+
* buttons: { close: false, main: "확인" }
|
|
485
|
+
* })
|
|
486
|
+
* ```
|
|
487
|
+
*/
|
|
488
|
+
async showAlert(options) {
|
|
489
|
+
return this.core.callToTarget("showAlert", options);
|
|
490
|
+
}
|
|
474
491
|
/**
|
|
475
492
|
* ### Bridge for Oz
|
|
476
493
|
* 태블릿 로컬에 있는 파일을 fetch하기 위한 url을 만들어주는 브릿지
|
|
@@ -926,6 +943,7 @@ var NativeBridgeOz = class extends CommonBridge {
|
|
|
926
943
|
/**
|
|
927
944
|
* ### Bridge for Oz
|
|
928
945
|
* Alert 표시용 브릿지
|
|
946
|
+
* @deprecated native 브릿지로 이동 예정
|
|
929
947
|
* @example
|
|
930
948
|
* ```tsx
|
|
931
949
|
* // 사용 예시
|
package/dist/index.cjs.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","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 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 DocumentCaptureResponse,\n RefreshAccessTokenResponse,\n DudExternalFileUploadResponse\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 contractClearOptions,\n SetBackNavigationEnabledOptions,\n DudExternalFileUploadOptions,\n DocumentCaptureOptions\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 * ### Bridge for Oz\n * 태블릿 로컬의 특정 증번 폴더를 삭제한다(청약 완료 후 사용)\n *\n * @example\n * ```tsx\n * await Bridge.native.contractClear({policyNumber: \"300037459\"});\n * ```\n */\n async contractClear(options: contractClearOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('contractClear', 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 /**\n * 네이티브 서류첨부 시 카메라 호출\n * @example\n * ```tsx\n * // 사용 예시\n * const { uri } = await Bridge.native.documentCapture();\n * ```\n */\n documentCapture(options?: DocumentCaptureOptions): Promise<DocumentCaptureResponse> {\n return this.core.callToTarget('documentCapture', options);\n }\n\n /**\n * 뒤로가기 on/off\n * 안드로이드 백키, iOS 스와이프 백 on/off\n * 백키로 종료되지 않아야 할 화면에서 사용 (청약 최종제출 등 업로드 / 중요 데이터 처리 등)\n *\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.setBackNavigationEnabled({ enableBackNav: true });\n * ```\n */\n setBackNavigationEnabled(options: SetBackNavigationEnabledOptions): Promise<string> {\n return this.core.callToTarget('setBackNavigationEnabled', options);\n }\n\n /**\n * 401 발생 시 앱에 갱신된 토큰을 요청하여 받음\n * 갱신 요청은 정확하게 한번만 요청 해야 함\n * 웹에서 여러 API 를 병렬로 동시에 호출 하는 케이스 등 AT 갱신은 정확하게 한번만 요청 해야 함!\n * 해당 브릿지에서 오류가 발생하는 케이스는 더 이상 앱 사용 불가 케이스 > 앱에서 처리\n *\n * @example\n * ```tsx\n * // 사용 예시\n * const { accessToken, tokenType } = await Bridge.native.refreshAccessToken();\n * ```\n */\n refreshAccessToken(): Promise<RefreshAccessTokenResponse> {\n return this.core.callToTarget('refreshAccessToken');\n }\n\n /**\n * DUD 외부 파일 업로드\n *\n * 단일 파일을 네이티브 영역으로 전달하여 DUD로 업로드합니다.\n * 네이티브에서 DUD API 호출 후 응답 DTO를 가공하지 않고 그대로 반환합니다.\n *\n * @param options - 파일 경로와 요청 헤더\n * @returns DUD 파일 업로드 응답 (dudFileMgmtId 포함)\n *\n * @example\n * ```tsx\n * const result = await Bridge.native.dudExternalFileUpload({\n * filePath: \"/data/0/OZRV/3000123123/TOTAL.pdf\",\n * headers: {\n * 'x-channel-business-work-division-code': businessWorkDivisionCode,\n * Authorization: token,\n * },\n * });\n *\n * if (result.isSuccess) {\n * console.log('업로드 성공:', result.data.dudFileMgmtId);\n * }\n * ```\n */\n dudExternalFileUpload(\n options: DudExternalFileUploadOptions\n ): Promise<CommonOzBridgetResponseType<DudExternalFileUploadResponse>> {\n return this.core.callToTarget('dudExternalFileUpload', 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({ data: documentInfo });\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({\n * // PDF 저장은 증번폴더/파일이름.pdf로 생성\n * policyNumber,\n * param: [\n * // 저장할 파일명 설정\n * `pdf.filename=${fileName}.pdf`,\n * // 1페이지부터 마지막 페이지까지 저장\n * `export.pages=${startPage}-${endPage}`,\n * // 공통 PDF 내보내기 파라미터 추가\n * ...commonPdfExportParam\n * ].join('\\n')\n * });\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 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 DocumentCaptureResponse,\n RefreshAccessTokenResponse,\n DudExternalFileUploadResponse\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 contractClearOptions,\n SetBackNavigationEnabledOptions,\n DudExternalFileUploadOptions,\n DocumentCaptureOptions,\n ShowAlertOptions\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 * ### Bridge for Oz\n * Alert 표시용 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.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 /**\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 * ### Bridge for Oz\n * 태블릿 로컬의 특정 증번 폴더를 삭제한다(청약 완료 후 사용)\n *\n * @example\n * ```tsx\n * await Bridge.native.contractClear({policyNumber: \"300037459\"});\n * ```\n */\n async contractClear(options: contractClearOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('contractClear', 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 /**\n * 네이티브 서류첨부 시 카메라 호출\n * @example\n * ```tsx\n * // 사용 예시\n * const { uri } = await Bridge.native.documentCapture();\n * ```\n */\n documentCapture(options?: DocumentCaptureOptions): Promise<DocumentCaptureResponse> {\n return this.core.callToTarget('documentCapture', options);\n }\n\n /**\n * 뒤로가기 on/off\n * 안드로이드 백키, iOS 스와이프 백 on/off\n * 백키로 종료되지 않아야 할 화면에서 사용 (청약 최종제출 등 업로드 / 중요 데이터 처리 등)\n *\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.setBackNavigationEnabled({ enableBackNav: true });\n * ```\n */\n setBackNavigationEnabled(options: SetBackNavigationEnabledOptions): Promise<string> {\n return this.core.callToTarget('setBackNavigationEnabled', options);\n }\n\n /**\n * 401 발생 시 앱에 갱신된 토큰을 요청하여 받음\n * 갱신 요청은 정확하게 한번만 요청 해야 함\n * 웹에서 여러 API 를 병렬로 동시에 호출 하는 케이스 등 AT 갱신은 정확하게 한번만 요청 해야 함!\n * 해당 브릿지에서 오류가 발생하는 케이스는 더 이상 앱 사용 불가 케이스 > 앱에서 처리\n *\n * @example\n * ```tsx\n * // 사용 예시\n * const { accessToken, tokenType } = await Bridge.native.refreshAccessToken();\n * ```\n */\n refreshAccessToken(): Promise<RefreshAccessTokenResponse> {\n return this.core.callToTarget('refreshAccessToken');\n }\n\n /**\n * DUD 외부 파일 업로드\n *\n * 단일 파일을 네이티브 영역으로 전달하여 DUD로 업로드합니다.\n * 네이티브에서 DUD API 호출 후 응답 DTO를 가공하지 않고 그대로 반환합니다.\n *\n * @param options - 파일 경로와 요청 헤더\n * @returns DUD 파일 업로드 응답 (dudFileMgmtId 포함)\n *\n * @example\n * ```tsx\n * const result = await Bridge.native.dudExternalFileUpload({\n * filePath: \"/data/0/OZRV/3000123123/TOTAL.pdf\",\n * headers: {\n * 'x-channel-business-work-division-code': businessWorkDivisionCode,\n * Authorization: token,\n * },\n * });\n *\n * if (result.isSuccess) {\n * console.log('업로드 성공:', result.data.dudFileMgmtId);\n * }\n * ```\n */\n dudExternalFileUpload(\n options: DudExternalFileUploadOptions\n ): Promise<CommonOzBridgetResponseType<DudExternalFileUploadResponse>> {\n return this.core.callToTarget('dudExternalFileUpload', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { CommonOzBridgetResponseType, ShowAlertOptions } 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} 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({ data: documentInfo });\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({\n * // PDF 저장은 증번폴더/파일이름.pdf로 생성\n * policyNumber,\n * param: [\n * // 저장할 파일명 설정\n * `pdf.filename=${fileName}.pdf`,\n * // 1페이지부터 마지막 페이지까지 저장\n * `export.pages=${startPage}-${endPage}`,\n * // 공통 PDF 내보내기 파라미터 추가\n * ...commonPdfExportParam\n * ].join('\\n')\n * });\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 * @deprecated native 브릿지로 이동 예정\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
|
@@ -326,6 +326,28 @@ type DownloadOzdOptions = {
|
|
|
326
326
|
/** 비정형 호출시 전달할 토큰을 포함한 RequestHeader */
|
|
327
327
|
headers: RequestHeaders;
|
|
328
328
|
};
|
|
329
|
+
/**
|
|
330
|
+
* 브릿지 `showAlert`를 호출할 때 사용하는 브릿지용 입력 옵션
|
|
331
|
+
*
|
|
332
|
+
* alert 창에 띄울 타이틀과 메세지를 전달한다.
|
|
333
|
+
*
|
|
334
|
+
* 확인버튼 클릭 시 alert창이 꺼지고 promise가 resolve 된다
|
|
335
|
+
*/
|
|
336
|
+
interface ShowAlertOptions {
|
|
337
|
+
/** alert 메세지 타이틀 */
|
|
338
|
+
title: string;
|
|
339
|
+
/** alert 메세지 바디 */
|
|
340
|
+
message: string;
|
|
341
|
+
/** alert 모달에 표시할 버튼들 */
|
|
342
|
+
buttons: {
|
|
343
|
+
/** true 입력시 X버튼이 생김*/
|
|
344
|
+
close: boolean;
|
|
345
|
+
/** main 버튼에 표시할 텍스트 */
|
|
346
|
+
main: string;
|
|
347
|
+
/** sub 버튼에 표시할 텍스트, 미입력시 버튼 표시안함 */
|
|
348
|
+
sub?: string;
|
|
349
|
+
};
|
|
350
|
+
}
|
|
329
351
|
/**
|
|
330
352
|
* 태블릿 로컬에 존재하는 파일을 fetch 가능한 URL로 변경하기 위해 사용하는 브릿지의 옵션
|
|
331
353
|
*/
|
|
@@ -424,6 +446,7 @@ interface INativeBridge {
|
|
|
424
446
|
onAuthenticationResult(options: OnAuthenticationResultRequest): Promise<OnAuthenticationResultResponse>;
|
|
425
447
|
showLoader(): Promise<CommonOzBridgetResponseType>;
|
|
426
448
|
hideLoader(): Promise<CommonOzBridgetResponseType>;
|
|
449
|
+
showAlert(options: ShowAlertOptions): Promise<CommonOzBridgetResponseType<keyof ShowAlertOptions["buttons"]>>;
|
|
427
450
|
localFetchBridge(options: localFetchBridgeOptions): Promise<CommonOzBridgetResponseType>;
|
|
428
451
|
contractClear(options: contractClearOptions): Promise<CommonOzBridgetResponseType>;
|
|
429
452
|
hideWebPopup(): Promise<string>;
|
|
@@ -556,6 +579,21 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
|
|
|
556
579
|
* ```
|
|
557
580
|
*/
|
|
558
581
|
hideLoader(): Promise<CommonOzBridgetResponseType<string>>;
|
|
582
|
+
/**
|
|
583
|
+
* ### Bridge for Oz
|
|
584
|
+
* Alert 표시용 브릿지
|
|
585
|
+
* @example
|
|
586
|
+
* ```tsx
|
|
587
|
+
* // 사용 예시
|
|
588
|
+
* await Bridge.native.showAlert({
|
|
589
|
+
* title: '모달 타이틀',
|
|
590
|
+
* message: '모달 내용',
|
|
591
|
+
* // 모달에 표시할 버튼들 설정
|
|
592
|
+
* buttons: { close: false, main: "확인" }
|
|
593
|
+
* })
|
|
594
|
+
* ```
|
|
595
|
+
*/
|
|
596
|
+
showAlert(options: ShowAlertOptions): Promise<CommonOzBridgetResponseType<"close" | "main" | "sub">>;
|
|
559
597
|
/**
|
|
560
598
|
* ### Bridge for Oz
|
|
561
599
|
* 태블릿 로컬에 있는 파일을 fetch하기 위한 url을 만들어주는 브릿지
|
|
@@ -851,28 +889,6 @@ interface createOzPdfViewerOptions {
|
|
|
851
889
|
/** PDF 경로 + 파일이름 */
|
|
852
890
|
filePath: string;
|
|
853
891
|
}
|
|
854
|
-
/**
|
|
855
|
-
* 브릿지 `showAlert`를 호출할 때 사용하는 브릿지용 입력 옵션
|
|
856
|
-
*
|
|
857
|
-
* alert 창에 띄울 타이틀과 메세지를 전달한다.
|
|
858
|
-
*
|
|
859
|
-
* 확인버튼 클릭 시 alert창이 꺼지고 promise가 resolve 된다
|
|
860
|
-
*/
|
|
861
|
-
interface ShowAlertOptions {
|
|
862
|
-
/** alert 메세지 타이틀 */
|
|
863
|
-
title: string;
|
|
864
|
-
/** alert 메세지 바디 */
|
|
865
|
-
message: string;
|
|
866
|
-
/** alert 모달에 표시할 버튼들 */
|
|
867
|
-
buttons: {
|
|
868
|
-
/** true 입력시 X버튼이 생김*/
|
|
869
|
-
close: boolean;
|
|
870
|
-
/** main 버튼에 표시할 텍스트 */
|
|
871
|
-
main: string;
|
|
872
|
-
/** sub 버튼에 표시할 텍스트, 미입력시 버튼 표시안함 */
|
|
873
|
-
sub?: string;
|
|
874
|
-
};
|
|
875
|
-
}
|
|
876
892
|
|
|
877
893
|
/**
|
|
878
894
|
* 네이티브(오즈 전용) 브릿지 구현 함수
|
|
@@ -893,6 +909,7 @@ interface INativeBridgeOz {
|
|
|
893
909
|
hideSignatureShortcut(): Promise<CommonOzBridgetResponseType>;
|
|
894
910
|
showMissingFieldWarning(): Promise<CommonOzBridgetResponseType>;
|
|
895
911
|
hideMissingFieldWarning(): Promise<CommonOzBridgetResponseType>;
|
|
912
|
+
/** @deprecated native 브릿지로 옮길 예정 */
|
|
896
913
|
showAlert(options: ShowAlertOptions): Promise<CommonOzBridgetResponseType<keyof ShowAlertOptions["buttons"]>>;
|
|
897
914
|
}
|
|
898
915
|
|
|
@@ -1082,6 +1099,7 @@ declare class NativeBridgeOz extends CommonBridge implements INativeBridgeOz {
|
|
|
1082
1099
|
/**
|
|
1083
1100
|
* ### Bridge for Oz
|
|
1084
1101
|
* Alert 표시용 브릿지
|
|
1102
|
+
* @deprecated native 브릿지로 이동 예정
|
|
1085
1103
|
* @example
|
|
1086
1104
|
* ```tsx
|
|
1087
1105
|
* // 사용 예시
|
package/dist/index.d.ts
CHANGED
|
@@ -326,6 +326,28 @@ type DownloadOzdOptions = {
|
|
|
326
326
|
/** 비정형 호출시 전달할 토큰을 포함한 RequestHeader */
|
|
327
327
|
headers: RequestHeaders;
|
|
328
328
|
};
|
|
329
|
+
/**
|
|
330
|
+
* 브릿지 `showAlert`를 호출할 때 사용하는 브릿지용 입력 옵션
|
|
331
|
+
*
|
|
332
|
+
* alert 창에 띄울 타이틀과 메세지를 전달한다.
|
|
333
|
+
*
|
|
334
|
+
* 확인버튼 클릭 시 alert창이 꺼지고 promise가 resolve 된다
|
|
335
|
+
*/
|
|
336
|
+
interface ShowAlertOptions {
|
|
337
|
+
/** alert 메세지 타이틀 */
|
|
338
|
+
title: string;
|
|
339
|
+
/** alert 메세지 바디 */
|
|
340
|
+
message: string;
|
|
341
|
+
/** alert 모달에 표시할 버튼들 */
|
|
342
|
+
buttons: {
|
|
343
|
+
/** true 입력시 X버튼이 생김*/
|
|
344
|
+
close: boolean;
|
|
345
|
+
/** main 버튼에 표시할 텍스트 */
|
|
346
|
+
main: string;
|
|
347
|
+
/** sub 버튼에 표시할 텍스트, 미입력시 버튼 표시안함 */
|
|
348
|
+
sub?: string;
|
|
349
|
+
};
|
|
350
|
+
}
|
|
329
351
|
/**
|
|
330
352
|
* 태블릿 로컬에 존재하는 파일을 fetch 가능한 URL로 변경하기 위해 사용하는 브릿지의 옵션
|
|
331
353
|
*/
|
|
@@ -424,6 +446,7 @@ interface INativeBridge {
|
|
|
424
446
|
onAuthenticationResult(options: OnAuthenticationResultRequest): Promise<OnAuthenticationResultResponse>;
|
|
425
447
|
showLoader(): Promise<CommonOzBridgetResponseType>;
|
|
426
448
|
hideLoader(): Promise<CommonOzBridgetResponseType>;
|
|
449
|
+
showAlert(options: ShowAlertOptions): Promise<CommonOzBridgetResponseType<keyof ShowAlertOptions["buttons"]>>;
|
|
427
450
|
localFetchBridge(options: localFetchBridgeOptions): Promise<CommonOzBridgetResponseType>;
|
|
428
451
|
contractClear(options: contractClearOptions): Promise<CommonOzBridgetResponseType>;
|
|
429
452
|
hideWebPopup(): Promise<string>;
|
|
@@ -556,6 +579,21 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
|
|
|
556
579
|
* ```
|
|
557
580
|
*/
|
|
558
581
|
hideLoader(): Promise<CommonOzBridgetResponseType<string>>;
|
|
582
|
+
/**
|
|
583
|
+
* ### Bridge for Oz
|
|
584
|
+
* Alert 표시용 브릿지
|
|
585
|
+
* @example
|
|
586
|
+
* ```tsx
|
|
587
|
+
* // 사용 예시
|
|
588
|
+
* await Bridge.native.showAlert({
|
|
589
|
+
* title: '모달 타이틀',
|
|
590
|
+
* message: '모달 내용',
|
|
591
|
+
* // 모달에 표시할 버튼들 설정
|
|
592
|
+
* buttons: { close: false, main: "확인" }
|
|
593
|
+
* })
|
|
594
|
+
* ```
|
|
595
|
+
*/
|
|
596
|
+
showAlert(options: ShowAlertOptions): Promise<CommonOzBridgetResponseType<"close" | "main" | "sub">>;
|
|
559
597
|
/**
|
|
560
598
|
* ### Bridge for Oz
|
|
561
599
|
* 태블릿 로컬에 있는 파일을 fetch하기 위한 url을 만들어주는 브릿지
|
|
@@ -851,28 +889,6 @@ interface createOzPdfViewerOptions {
|
|
|
851
889
|
/** PDF 경로 + 파일이름 */
|
|
852
890
|
filePath: string;
|
|
853
891
|
}
|
|
854
|
-
/**
|
|
855
|
-
* 브릿지 `showAlert`를 호출할 때 사용하는 브릿지용 입력 옵션
|
|
856
|
-
*
|
|
857
|
-
* alert 창에 띄울 타이틀과 메세지를 전달한다.
|
|
858
|
-
*
|
|
859
|
-
* 확인버튼 클릭 시 alert창이 꺼지고 promise가 resolve 된다
|
|
860
|
-
*/
|
|
861
|
-
interface ShowAlertOptions {
|
|
862
|
-
/** alert 메세지 타이틀 */
|
|
863
|
-
title: string;
|
|
864
|
-
/** alert 메세지 바디 */
|
|
865
|
-
message: string;
|
|
866
|
-
/** alert 모달에 표시할 버튼들 */
|
|
867
|
-
buttons: {
|
|
868
|
-
/** true 입력시 X버튼이 생김*/
|
|
869
|
-
close: boolean;
|
|
870
|
-
/** main 버튼에 표시할 텍스트 */
|
|
871
|
-
main: string;
|
|
872
|
-
/** sub 버튼에 표시할 텍스트, 미입력시 버튼 표시안함 */
|
|
873
|
-
sub?: string;
|
|
874
|
-
};
|
|
875
|
-
}
|
|
876
892
|
|
|
877
893
|
/**
|
|
878
894
|
* 네이티브(오즈 전용) 브릿지 구현 함수
|
|
@@ -893,6 +909,7 @@ interface INativeBridgeOz {
|
|
|
893
909
|
hideSignatureShortcut(): Promise<CommonOzBridgetResponseType>;
|
|
894
910
|
showMissingFieldWarning(): Promise<CommonOzBridgetResponseType>;
|
|
895
911
|
hideMissingFieldWarning(): Promise<CommonOzBridgetResponseType>;
|
|
912
|
+
/** @deprecated native 브릿지로 옮길 예정 */
|
|
896
913
|
showAlert(options: ShowAlertOptions): Promise<CommonOzBridgetResponseType<keyof ShowAlertOptions["buttons"]>>;
|
|
897
914
|
}
|
|
898
915
|
|
|
@@ -1082,6 +1099,7 @@ declare class NativeBridgeOz extends CommonBridge implements INativeBridgeOz {
|
|
|
1082
1099
|
/**
|
|
1083
1100
|
* ### Bridge for Oz
|
|
1084
1101
|
* Alert 표시용 브릿지
|
|
1102
|
+
* @deprecated native 브릿지로 이동 예정
|
|
1085
1103
|
* @example
|
|
1086
1104
|
* ```tsx
|
|
1087
1105
|
* // 사용 예시
|
package/dist/index.js
CHANGED
|
@@ -469,6 +469,23 @@ var NativeBridge = class extends CommonBridge {
|
|
|
469
469
|
async hideLoader() {
|
|
470
470
|
return this.core.callToTarget("hideLoader");
|
|
471
471
|
}
|
|
472
|
+
/**
|
|
473
|
+
* ### Bridge for Oz
|
|
474
|
+
* Alert 표시용 브릿지
|
|
475
|
+
* @example
|
|
476
|
+
* ```tsx
|
|
477
|
+
* // 사용 예시
|
|
478
|
+
* await Bridge.native.showAlert({
|
|
479
|
+
* title: '모달 타이틀',
|
|
480
|
+
* message: '모달 내용',
|
|
481
|
+
* // 모달에 표시할 버튼들 설정
|
|
482
|
+
* buttons: { close: false, main: "확인" }
|
|
483
|
+
* })
|
|
484
|
+
* ```
|
|
485
|
+
*/
|
|
486
|
+
async showAlert(options) {
|
|
487
|
+
return this.core.callToTarget("showAlert", options);
|
|
488
|
+
}
|
|
472
489
|
/**
|
|
473
490
|
* ### Bridge for Oz
|
|
474
491
|
* 태블릿 로컬에 있는 파일을 fetch하기 위한 url을 만들어주는 브릿지
|
|
@@ -924,6 +941,7 @@ var NativeBridgeOz = class extends CommonBridge {
|
|
|
924
941
|
/**
|
|
925
942
|
* ### Bridge for Oz
|
|
926
943
|
* Alert 표시용 브릿지
|
|
944
|
+
* @deprecated native 브릿지로 이동 예정
|
|
927
945
|
* @example
|
|
928
946
|
* ```tsx
|
|
929
947
|
* // 사용 예시
|
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\n if (!isClient()) {\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 DocumentCaptureResponse,\n RefreshAccessTokenResponse,\n DudExternalFileUploadResponse\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 contractClearOptions,\n SetBackNavigationEnabledOptions,\n DudExternalFileUploadOptions,\n DocumentCaptureOptions\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 * ### Bridge for Oz\n * 태블릿 로컬의 특정 증번 폴더를 삭제한다(청약 완료 후 사용)\n *\n * @example\n * ```tsx\n * await Bridge.native.contractClear({policyNumber: \"300037459\"});\n * ```\n */\n async contractClear(options: contractClearOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('contractClear', 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 /**\n * 네이티브 서류첨부 시 카메라 호출\n * @example\n * ```tsx\n * // 사용 예시\n * const { uri } = await Bridge.native.documentCapture();\n * ```\n */\n documentCapture(options?: DocumentCaptureOptions): Promise<DocumentCaptureResponse> {\n return this.core.callToTarget('documentCapture', options);\n }\n\n /**\n * 뒤로가기 on/off\n * 안드로이드 백키, iOS 스와이프 백 on/off\n * 백키로 종료되지 않아야 할 화면에서 사용 (청약 최종제출 등 업로드 / 중요 데이터 처리 등)\n *\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.setBackNavigationEnabled({ enableBackNav: true });\n * ```\n */\n setBackNavigationEnabled(options: SetBackNavigationEnabledOptions): Promise<string> {\n return this.core.callToTarget('setBackNavigationEnabled', options);\n }\n\n /**\n * 401 발생 시 앱에 갱신된 토큰을 요청하여 받음\n * 갱신 요청은 정확하게 한번만 요청 해야 함\n * 웹에서 여러 API 를 병렬로 동시에 호출 하는 케이스 등 AT 갱신은 정확하게 한번만 요청 해야 함!\n * 해당 브릿지에서 오류가 발생하는 케이스는 더 이상 앱 사용 불가 케이스 > 앱에서 처리\n *\n * @example\n * ```tsx\n * // 사용 예시\n * const { accessToken, tokenType } = await Bridge.native.refreshAccessToken();\n * ```\n */\n refreshAccessToken(): Promise<RefreshAccessTokenResponse> {\n return this.core.callToTarget('refreshAccessToken');\n }\n\n /**\n * DUD 외부 파일 업로드\n *\n * 단일 파일을 네이티브 영역으로 전달하여 DUD로 업로드합니다.\n * 네이티브에서 DUD API 호출 후 응답 DTO를 가공하지 않고 그대로 반환합니다.\n *\n * @param options - 파일 경로와 요청 헤더\n * @returns DUD 파일 업로드 응답 (dudFileMgmtId 포함)\n *\n * @example\n * ```tsx\n * const result = await Bridge.native.dudExternalFileUpload({\n * filePath: \"/data/0/OZRV/3000123123/TOTAL.pdf\",\n * headers: {\n * 'x-channel-business-work-division-code': businessWorkDivisionCode,\n * Authorization: token,\n * },\n * });\n *\n * if (result.isSuccess) {\n * console.log('업로드 성공:', result.data.dudFileMgmtId);\n * }\n * ```\n */\n dudExternalFileUpload(\n options: DudExternalFileUploadOptions\n ): Promise<CommonOzBridgetResponseType<DudExternalFileUploadResponse>> {\n return this.core.callToTarget('dudExternalFileUpload', 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({ data: documentInfo });\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({\n * // PDF 저장은 증번폴더/파일이름.pdf로 생성\n * policyNumber,\n * param: [\n * // 저장할 파일명 설정\n * `pdf.filename=${fileName}.pdf`,\n * // 1페이지부터 마지막 페이지까지 저장\n * `export.pages=${startPage}-${endPage}`,\n * // 공통 PDF 내보내기 파라미터 추가\n * ...commonPdfExportParam\n * ].join('\\n')\n * });\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 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 DocumentCaptureResponse,\n RefreshAccessTokenResponse,\n DudExternalFileUploadResponse\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 contractClearOptions,\n SetBackNavigationEnabledOptions,\n DudExternalFileUploadOptions,\n DocumentCaptureOptions,\n ShowAlertOptions\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 * ### Bridge for Oz\n * Alert 표시용 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.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 /**\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 * ### Bridge for Oz\n * 태블릿 로컬의 특정 증번 폴더를 삭제한다(청약 완료 후 사용)\n *\n * @example\n * ```tsx\n * await Bridge.native.contractClear({policyNumber: \"300037459\"});\n * ```\n */\n async contractClear(options: contractClearOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('contractClear', 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 /**\n * 네이티브 서류첨부 시 카메라 호출\n * @example\n * ```tsx\n * // 사용 예시\n * const { uri } = await Bridge.native.documentCapture();\n * ```\n */\n documentCapture(options?: DocumentCaptureOptions): Promise<DocumentCaptureResponse> {\n return this.core.callToTarget('documentCapture', options);\n }\n\n /**\n * 뒤로가기 on/off\n * 안드로이드 백키, iOS 스와이프 백 on/off\n * 백키로 종료되지 않아야 할 화면에서 사용 (청약 최종제출 등 업로드 / 중요 데이터 처리 등)\n *\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.setBackNavigationEnabled({ enableBackNav: true });\n * ```\n */\n setBackNavigationEnabled(options: SetBackNavigationEnabledOptions): Promise<string> {\n return this.core.callToTarget('setBackNavigationEnabled', options);\n }\n\n /**\n * 401 발생 시 앱에 갱신된 토큰을 요청하여 받음\n * 갱신 요청은 정확하게 한번만 요청 해야 함\n * 웹에서 여러 API 를 병렬로 동시에 호출 하는 케이스 등 AT 갱신은 정확하게 한번만 요청 해야 함!\n * 해당 브릿지에서 오류가 발생하는 케이스는 더 이상 앱 사용 불가 케이스 > 앱에서 처리\n *\n * @example\n * ```tsx\n * // 사용 예시\n * const { accessToken, tokenType } = await Bridge.native.refreshAccessToken();\n * ```\n */\n refreshAccessToken(): Promise<RefreshAccessTokenResponse> {\n return this.core.callToTarget('refreshAccessToken');\n }\n\n /**\n * DUD 외부 파일 업로드\n *\n * 단일 파일을 네이티브 영역으로 전달하여 DUD로 업로드합니다.\n * 네이티브에서 DUD API 호출 후 응답 DTO를 가공하지 않고 그대로 반환합니다.\n *\n * @param options - 파일 경로와 요청 헤더\n * @returns DUD 파일 업로드 응답 (dudFileMgmtId 포함)\n *\n * @example\n * ```tsx\n * const result = await Bridge.native.dudExternalFileUpload({\n * filePath: \"/data/0/OZRV/3000123123/TOTAL.pdf\",\n * headers: {\n * 'x-channel-business-work-division-code': businessWorkDivisionCode,\n * Authorization: token,\n * },\n * });\n *\n * if (result.isSuccess) {\n * console.log('업로드 성공:', result.data.dudFileMgmtId);\n * }\n * ```\n */\n dudExternalFileUpload(\n options: DudExternalFileUploadOptions\n ): Promise<CommonOzBridgetResponseType<DudExternalFileUploadResponse>> {\n return this.core.callToTarget('dudExternalFileUpload', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { CommonOzBridgetResponseType, ShowAlertOptions } 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} 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({ data: documentInfo });\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({\n * // PDF 저장은 증번폴더/파일이름.pdf로 생성\n * policyNumber,\n * param: [\n * // 저장할 파일명 설정\n * `pdf.filename=${fileName}.pdf`,\n * // 1페이지부터 마지막 페이지까지 저장\n * `export.pages=${startPage}-${endPage}`,\n * // 공통 PDF 내보내기 파라미터 추가\n * ...commonPdfExportParam\n * ].join('\\n')\n * });\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 * @deprecated native 브릿지로 이동 예정\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.
|
|
3
|
+
"version": "0.0.106",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"@types/react-dom": "19.1.1",
|
|
27
27
|
"tsup": "^8.4.0",
|
|
28
28
|
"typescript": "5.8.2",
|
|
29
|
-
"sales-frontend-
|
|
30
|
-
"
|
|
29
|
+
"eslint-config-sales-frontend-eslint-config-v8": "^0.0.7",
|
|
30
|
+
"sales-frontend-typescript-config": "0.0.2"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"sales-frontend-utils": "0.0.60"
|