sales-frontend-bridge 0.0.85 → 0.0.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -653,6 +653,21 @@ var NativeBridge = class extends CommonBridge {
653
653
  setBackNavigationEnabled(options) {
654
654
  return this.core.callToTarget("setBackNavigationEnabled", options);
655
655
  }
656
+ /**
657
+ * 401 발생 시 앱에 갱신된 토큰을 요청하여 받음
658
+ * 갱신 요청은 정확하게 한번만 요청 해야 함
659
+ * 웹에서 여러 API 를 병렬로 동시에 호출 하는 케이스 등 AT 갱신은 정확하게 한번만 요청 해야 함!
660
+ * 해당 브릿지에서 오류가 발생하는 케이스는 더 이상 앱 사용 불가 케이스 > 앱에서 처리
661
+ *
662
+ * @example
663
+ * ```tsx
664
+ * // 사용 예시
665
+ * const { accessToken, tokenType } = await Bridge.native.refreshAccessToken();
666
+ * ```
667
+ */
668
+ refreshAccessToken() {
669
+ return this.core.callToTarget("refreshAccessToken");
670
+ }
656
671
  // TODO: 필요 플러그인들 추가
657
672
  };
658
673
 
@@ -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} 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} 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(): Promise<DocumentCaptureResponse> {\n return this.core.callToTarget('documentCapture');\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 // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { CommonOzBridgetResponseType } from '../bridge/native-bridge-options.types';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n UpdateOzdOptions,\n createOzPdfViewerOptions,\n ShowAlertOptions\n} from './native-bridge-oz-options.types';\nimport type { INativeBridgeOz, NativeOzAction } from './native-bridge-oz.types';\n\n/**\n * App - Web Bridge(for OZ)\n */\nexport class NativeBridgeOz extends CommonBridge implements INativeBridgeOz {\n private core: NativeBridgeCore<NativeOzAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeOzAction>('n2OzBridge', 'n2ozBridge');\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 정보를 가져옵니다\n * @example\n * ```tsx\n * // 사용 예시:\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * // 리턴값이 null이 나올수 있음\n * const { data } = await Bridge.nativeOz.getInformation({ command: 'INPUT_JSON' });\n * ```\n */\n async getInformation(options: GetInformationOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getInformation', options);\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 가져옵니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * await Bridge.nativeOz.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal(options: GetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // value 자리에 string이 아닌 값을 넣어도 getGlobal시 string으로 변환되어 리턴됩니다\n * Bridge.nativeOz.setGlobal({ key: \"AAA\", value: \"myValue\" });\n * ```\n */\n setGlobal(options: SetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<boolean | null>>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * Bridge.nativeOz.script({ command });\n * ```\n */\n script(options: ScriptOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('script', options);\n }\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * Bridge.nativeOz.scriptEX({ command, param });\n * ```\n */\n scriptEx(options: ScriptExOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'scriptEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * - 서명이미지 크롭\n * - 중간저장 서명이미지 추출\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex(options: TriggerExternalEventByDocIndexOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.updateOzDocumentStatus(document);\n * ```\n */\n async updateOzDocumentStatus(options: UpdateOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('updateOzDocumentStatus', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식을 PDF로 export 요청\n * export 결과는 `OZViewerEvent.OZExportCommand`로 트리거 된다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.savePdf({ exportType: \"PDF\", fileName: \"test.pdf\", startPage: 1, endPage: 1 })\n * ```\n */\n async savePdf(options: SavePdfOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'savePdf',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.saveSignImg({ fileName: 'sign.png', signImageKey: 'A0010_mynm_sg', policyNumber });\n * ```\n */\n async saveSignImg(options: SaveSignImgOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.createOzPdfViewer({ filePath: \"/data/0/app/total.pdf\" });\n * ```\n */\n async createOzPdfViewer(options: createOzPdfViewerOptions) {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToTarget<CommonOzBridgetResponseType>('createOzPdfViewer', options);\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOzPdfViewer');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showSignatureShortcut();\n */\n async showSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideSignatureShortcut();\n */\n async hideSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showMissingFieldWarning();\n */\n async showMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideMissingFieldWarning();\n */\n async hideMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * Alert 표시용 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showAlert({\n * title: '모달 타이틀',\n * message: '모달 내용',\n * // 모달에 표시할 버튼들 설정\n * buttons: { close: false, main: \"확인\" }\n * })\n * ```\n */\n async showAlert(options: ShowAlertOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<keyof ShowAlertOptions[\"buttons\"]>>('showAlert', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { IframeBridge } from './iframe/bridge/iframe-bridge';\nimport { IframeBridgeCore } from './iframe/core/iframe-bridge-core';\nimport { NativeBridge } from './native/bridge/native-bridge';\nimport { NativeBridgeOz } from './native/bridge-oz/native-bridge-oz';\nimport { NativeBridgeCore } from './native/core/native-bridge-core';\n\nexport const Bridge = {\n native: new NativeBridge(),\n nativeOz: new NativeBridgeOz(),\n iframe: new IframeBridge(),\n nativeCore: new NativeBridgeCore(),\n iframeCore: new IframeBridgeCore()\n};\n\nexport type * from './native/bridge/native-bridge-dto.types';\nexport type * from \"./native/bridge/native-bridge-options.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-dto.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-options.types\";\n"]}
1
+ {"version":3,"sources":["../src/common/common-bridge.ts","../src/common/common-bridge-core.ts","../src/iframe/core/iframe-bridge-core.ts","../src/iframe/bridge/iframe-bridge.ts","../src/native/core/native-bridge-core.ts","../src/native/bridge/native-bridge.ts","../src/native/bridge-oz/native-bridge-oz.ts","../src/bridge.ts"],"names":["isClient","getDspExecutionEnvironment","MessageEventManager","isStorybookEnv","isFpPlannerApp"],"mappings":"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","file":"index.cjs","sourcesContent":["import { ICommonBridge } from './common-bridge.types';\n\n/**\n * Business Layer Bridge\n * 비즈니스를 호출하는(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridge implements ICommonBridge {\n protected commonHello(): void {\n console.log('commonHello');\n }\n\n abstract hello(): void;\n}\n","/**\n * Core Layer Bridge\n * Core(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridgeCore {\n /**\n * 코어에서 사용할 프로미스 ID 생성 함수\n * @returns\n */\n protected generatePromiseId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).slice(2, 11);\n\n return `${timestamp}_${random}`;\n }\n\n /**\n * core에서 구현해야할 함수\n * @param action\n * @param options\n */\n abstract callToTarget<T>(action: string, options?: Record<string, unknown>): Promise<T>;\n}\n","import { getDspExecutionEnvironment, isClient } from 'sales-frontend-utils';\nimport { MessageEventManager } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport {\n IframeEventName,\n IframeBridgeCommand,\n IframeBridgeOptions,\n IframeBridgePromise,\n IframeBridgeResponseHandler,\n IframeBridgeResponseData\n} from './iframe-bridge-core.types';\n\n/**\n * Iframe Bridge 통신 위한 핵심 클래스\n * 담당: 부모 호출, Promise 관리\n */\nexport class IframeBridgeCore extends CommonBridgeCore {\n private pendingPromises = new Map<string, IframeBridgePromise>();\n private responseHandler?: IframeBridgeResponseHandler;\n\n constructor() {\n super();\n\n if (!isClient()) {\n 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} 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} 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(): Promise<DocumentCaptureResponse> {\n return this.core.callToTarget('documentCapture');\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 // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { CommonOzBridgetResponseType } from '../bridge/native-bridge-options.types';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n UpdateOzdOptions,\n createOzPdfViewerOptions,\n ShowAlertOptions\n} from './native-bridge-oz-options.types';\nimport type { INativeBridgeOz, NativeOzAction } from './native-bridge-oz.types';\n\n/**\n * App - Web Bridge(for OZ)\n */\nexport class NativeBridgeOz extends CommonBridge implements INativeBridgeOz {\n private core: NativeBridgeCore<NativeOzAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeOzAction>('n2OzBridge', 'n2ozBridge');\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 정보를 가져옵니다\n * @example\n * ```tsx\n * // 사용 예시:\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * // 리턴값이 null이 나올수 있음\n * const { data } = await Bridge.nativeOz.getInformation({ command: 'INPUT_JSON' });\n * ```\n */\n async getInformation(options: GetInformationOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getInformation', options);\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 가져옵니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * await Bridge.nativeOz.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal(options: GetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // value 자리에 string이 아닌 값을 넣어도 getGlobal시 string으로 변환되어 리턴됩니다\n * Bridge.nativeOz.setGlobal({ key: \"AAA\", value: \"myValue\" });\n * ```\n */\n setGlobal(options: SetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<boolean | null>>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * Bridge.nativeOz.script({ command });\n * ```\n */\n script(options: ScriptOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('script', options);\n }\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * Bridge.nativeOz.scriptEX({ command, param });\n * ```\n */\n scriptEx(options: ScriptExOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'scriptEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * - 서명이미지 크롭\n * - 중간저장 서명이미지 추출\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex(options: TriggerExternalEventByDocIndexOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.updateOzDocumentStatus(document);\n * ```\n */\n async updateOzDocumentStatus(options: UpdateOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('updateOzDocumentStatus', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식을 PDF로 export 요청\n * export 결과는 `OZViewerEvent.OZExportCommand`로 트리거 된다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.savePdf({ exportType: \"PDF\", fileName: \"test.pdf\", startPage: 1, endPage: 1 })\n * ```\n */\n async savePdf(options: SavePdfOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'savePdf',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.saveSignImg({ fileName: 'sign.png', signImageKey: 'A0010_mynm_sg', policyNumber });\n * ```\n */\n async saveSignImg(options: SaveSignImgOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.createOzPdfViewer({ filePath: \"/data/0/app/total.pdf\" });\n * ```\n */\n async createOzPdfViewer(options: createOzPdfViewerOptions) {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToTarget<CommonOzBridgetResponseType>('createOzPdfViewer', options);\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOzPdfViewer');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showSignatureShortcut();\n */\n async showSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideSignatureShortcut();\n */\n async hideSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showMissingFieldWarning();\n */\n async showMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideMissingFieldWarning();\n */\n async hideMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * Alert 표시용 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showAlert({\n * title: '모달 타이틀',\n * message: '모달 내용',\n * // 모달에 표시할 버튼들 설정\n * buttons: { close: false, main: \"확인\" }\n * })\n * ```\n */\n async showAlert(options: ShowAlertOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<keyof ShowAlertOptions[\"buttons\"]>>('showAlert', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { IframeBridge } from './iframe/bridge/iframe-bridge';\nimport { IframeBridgeCore } from './iframe/core/iframe-bridge-core';\nimport { NativeBridge } from './native/bridge/native-bridge';\nimport { NativeBridgeOz } from './native/bridge-oz/native-bridge-oz';\nimport { NativeBridgeCore } from './native/core/native-bridge-core';\n\nexport const Bridge = {\n native: new NativeBridge(),\n nativeOz: new NativeBridgeOz(),\n iframe: new IframeBridge(),\n nativeCore: new NativeBridgeCore(),\n iframeCore: new IframeBridgeCore()\n};\n\nexport type * from './native/bridge/native-bridge-dto.types';\nexport type * from \"./native/bridge/native-bridge-options.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-dto.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-options.types\";\n"]}
package/dist/index.d.cts CHANGED
@@ -188,6 +188,10 @@ interface GetAppInfoResponse {
188
188
  interface DocumentCaptureResponse {
189
189
  uri: string;
190
190
  }
191
+ interface RefreshAccessTokenResponse {
192
+ tokenType: string;
193
+ accessToken: string;
194
+ }
191
195
 
192
196
  /**
193
197
  * 오즈 뷰어 함수 `CreateReport`를 호출할 때 사용하는 브릿지용 입력 옵션
@@ -384,6 +388,7 @@ interface INativeBridge {
384
388
  hideHeader(options: HideHeaderOptions): Promise<string>;
385
389
  documentCapture(): Promise<DocumentCaptureResponse>;
386
390
  setBackNavigationEnabled(options: SetBackNavigationEnabledOptions): Promise<string>;
391
+ refreshAccessToken(): Promise<RefreshAccessTokenResponse>;
387
392
  }
388
393
 
389
394
  /**
@@ -648,6 +653,19 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
648
653
  * ```
649
654
  */
650
655
  setBackNavigationEnabled(options: SetBackNavigationEnabledOptions): Promise<string>;
656
+ /**
657
+ * 401 발생 시 앱에 갱신된 토큰을 요청하여 받음
658
+ * 갱신 요청은 정확하게 한번만 요청 해야 함
659
+ * 웹에서 여러 API 를 병렬로 동시에 호출 하는 케이스 등 AT 갱신은 정확하게 한번만 요청 해야 함!
660
+ * 해당 브릿지에서 오류가 발생하는 케이스는 더 이상 앱 사용 불가 케이스 > 앱에서 처리
661
+ *
662
+ * @example
663
+ * ```tsx
664
+ * // 사용 예시
665
+ * const { accessToken, tokenType } = await Bridge.native.refreshAccessToken();
666
+ * ```
667
+ */
668
+ refreshAccessToken(): Promise<RefreshAccessTokenResponse>;
651
669
  }
652
670
 
653
671
  /**
@@ -1087,4 +1105,4 @@ declare const Bridge: {
1087
1105
  iframeCore: IframeBridgeCore;
1088
1106
  };
1089
1107
 
1090
- export { Bridge, type CommonOzBridgetResponseType, type CreateOZViewerOptions, type DocumentCaptureResponse, type DownloadOzdOptions, type FormInfo, type GetAccessTokenResponse, type GetAnalyticsUserPropertyResponse, type GetAppInfoResponse, type GetGlobalOptions, type GetInformationOptions, type GetOzFontParamResponse, type HideHeaderOptions, type OnAuthenticationResultRequest, type OnAuthenticationResultResponse, type OpenBrowserOptions, type OpenWebOptions, type OzdFile, type RequestAuthenticationResponse, type SampleRequest, type SampleResponse, type SavePdfOptions, type SaveSignImgOptions, type ScriptExOptions, type ScriptOptions, type SetBackNavigationEnabledOptions, type SetGlobalOptions, type SetHeaderTitleOptions, type ShowAlertOptions, type TriggerExternalEventByDocIndexOptions, type UpdateOzdOptions, type contractClearOptions, type createOzPdfViewerOptions, type localFetchBridgeOptions };
1108
+ export { Bridge, type CommonOzBridgetResponseType, type CreateOZViewerOptions, type DocumentCaptureResponse, type DownloadOzdOptions, type FormInfo, type GetAccessTokenResponse, type GetAnalyticsUserPropertyResponse, type GetAppInfoResponse, type GetGlobalOptions, type GetInformationOptions, type GetOzFontParamResponse, type HideHeaderOptions, type OnAuthenticationResultRequest, type OnAuthenticationResultResponse, type OpenBrowserOptions, type OpenWebOptions, type OzdFile, type RefreshAccessTokenResponse, type RequestAuthenticationResponse, type SampleRequest, type SampleResponse, type SavePdfOptions, type SaveSignImgOptions, type ScriptExOptions, type ScriptOptions, type SetBackNavigationEnabledOptions, type SetGlobalOptions, type SetHeaderTitleOptions, type ShowAlertOptions, type TriggerExternalEventByDocIndexOptions, type UpdateOzdOptions, type contractClearOptions, type createOzPdfViewerOptions, type localFetchBridgeOptions };
package/dist/index.d.ts CHANGED
@@ -188,6 +188,10 @@ interface GetAppInfoResponse {
188
188
  interface DocumentCaptureResponse {
189
189
  uri: string;
190
190
  }
191
+ interface RefreshAccessTokenResponse {
192
+ tokenType: string;
193
+ accessToken: string;
194
+ }
191
195
 
192
196
  /**
193
197
  * 오즈 뷰어 함수 `CreateReport`를 호출할 때 사용하는 브릿지용 입력 옵션
@@ -384,6 +388,7 @@ interface INativeBridge {
384
388
  hideHeader(options: HideHeaderOptions): Promise<string>;
385
389
  documentCapture(): Promise<DocumentCaptureResponse>;
386
390
  setBackNavigationEnabled(options: SetBackNavigationEnabledOptions): Promise<string>;
391
+ refreshAccessToken(): Promise<RefreshAccessTokenResponse>;
387
392
  }
388
393
 
389
394
  /**
@@ -648,6 +653,19 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
648
653
  * ```
649
654
  */
650
655
  setBackNavigationEnabled(options: SetBackNavigationEnabledOptions): Promise<string>;
656
+ /**
657
+ * 401 발생 시 앱에 갱신된 토큰을 요청하여 받음
658
+ * 갱신 요청은 정확하게 한번만 요청 해야 함
659
+ * 웹에서 여러 API 를 병렬로 동시에 호출 하는 케이스 등 AT 갱신은 정확하게 한번만 요청 해야 함!
660
+ * 해당 브릿지에서 오류가 발생하는 케이스는 더 이상 앱 사용 불가 케이스 > 앱에서 처리
661
+ *
662
+ * @example
663
+ * ```tsx
664
+ * // 사용 예시
665
+ * const { accessToken, tokenType } = await Bridge.native.refreshAccessToken();
666
+ * ```
667
+ */
668
+ refreshAccessToken(): Promise<RefreshAccessTokenResponse>;
651
669
  }
652
670
 
653
671
  /**
@@ -1087,4 +1105,4 @@ declare const Bridge: {
1087
1105
  iframeCore: IframeBridgeCore;
1088
1106
  };
1089
1107
 
1090
- export { Bridge, type CommonOzBridgetResponseType, type CreateOZViewerOptions, type DocumentCaptureResponse, type DownloadOzdOptions, type FormInfo, type GetAccessTokenResponse, type GetAnalyticsUserPropertyResponse, type GetAppInfoResponse, type GetGlobalOptions, type GetInformationOptions, type GetOzFontParamResponse, type HideHeaderOptions, type OnAuthenticationResultRequest, type OnAuthenticationResultResponse, type OpenBrowserOptions, type OpenWebOptions, type OzdFile, type RequestAuthenticationResponse, type SampleRequest, type SampleResponse, type SavePdfOptions, type SaveSignImgOptions, type ScriptExOptions, type ScriptOptions, type SetBackNavigationEnabledOptions, type SetGlobalOptions, type SetHeaderTitleOptions, type ShowAlertOptions, type TriggerExternalEventByDocIndexOptions, type UpdateOzdOptions, type contractClearOptions, type createOzPdfViewerOptions, type localFetchBridgeOptions };
1108
+ export { Bridge, type CommonOzBridgetResponseType, type CreateOZViewerOptions, type DocumentCaptureResponse, type DownloadOzdOptions, type FormInfo, type GetAccessTokenResponse, type GetAnalyticsUserPropertyResponse, type GetAppInfoResponse, type GetGlobalOptions, type GetInformationOptions, type GetOzFontParamResponse, type HideHeaderOptions, type OnAuthenticationResultRequest, type OnAuthenticationResultResponse, type OpenBrowserOptions, type OpenWebOptions, type OzdFile, type RefreshAccessTokenResponse, type RequestAuthenticationResponse, type SampleRequest, type SampleResponse, type SavePdfOptions, type SaveSignImgOptions, type ScriptExOptions, type ScriptOptions, type SetBackNavigationEnabledOptions, type SetGlobalOptions, type SetHeaderTitleOptions, type ShowAlertOptions, type TriggerExternalEventByDocIndexOptions, type UpdateOzdOptions, type contractClearOptions, type createOzPdfViewerOptions, type localFetchBridgeOptions };
package/dist/index.js CHANGED
@@ -651,6 +651,21 @@ var NativeBridge = class extends CommonBridge {
651
651
  setBackNavigationEnabled(options) {
652
652
  return this.core.callToTarget("setBackNavigationEnabled", options);
653
653
  }
654
+ /**
655
+ * 401 발생 시 앱에 갱신된 토큰을 요청하여 받음
656
+ * 갱신 요청은 정확하게 한번만 요청 해야 함
657
+ * 웹에서 여러 API 를 병렬로 동시에 호출 하는 케이스 등 AT 갱신은 정확하게 한번만 요청 해야 함!
658
+ * 해당 브릿지에서 오류가 발생하는 케이스는 더 이상 앱 사용 불가 케이스 > 앱에서 처리
659
+ *
660
+ * @example
661
+ * ```tsx
662
+ * // 사용 예시
663
+ * const { accessToken, tokenType } = await Bridge.native.refreshAccessToken();
664
+ * ```
665
+ */
666
+ refreshAccessToken() {
667
+ return this.core.callToTarget("refreshAccessToken");
668
+ }
654
669
  // TODO: 필요 플러그인들 추가
655
670
  };
656
671
 
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} 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} 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(): Promise<DocumentCaptureResponse> {\n return this.core.callToTarget('documentCapture');\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 // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { CommonOzBridgetResponseType } from '../bridge/native-bridge-options.types';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n UpdateOzdOptions,\n createOzPdfViewerOptions,\n ShowAlertOptions\n} from './native-bridge-oz-options.types';\nimport type { INativeBridgeOz, NativeOzAction } from './native-bridge-oz.types';\n\n/**\n * App - Web Bridge(for OZ)\n */\nexport class NativeBridgeOz extends CommonBridge implements INativeBridgeOz {\n private core: NativeBridgeCore<NativeOzAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeOzAction>('n2OzBridge', 'n2ozBridge');\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 정보를 가져옵니다\n * @example\n * ```tsx\n * // 사용 예시:\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * // 리턴값이 null이 나올수 있음\n * const { data } = await Bridge.nativeOz.getInformation({ command: 'INPUT_JSON' });\n * ```\n */\n async getInformation(options: GetInformationOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getInformation', options);\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 가져옵니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * await Bridge.nativeOz.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal(options: GetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // value 자리에 string이 아닌 값을 넣어도 getGlobal시 string으로 변환되어 리턴됩니다\n * Bridge.nativeOz.setGlobal({ key: \"AAA\", value: \"myValue\" });\n * ```\n */\n setGlobal(options: SetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<boolean | null>>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * Bridge.nativeOz.script({ command });\n * ```\n */\n script(options: ScriptOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('script', options);\n }\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * Bridge.nativeOz.scriptEX({ command, param });\n * ```\n */\n scriptEx(options: ScriptExOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'scriptEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * - 서명이미지 크롭\n * - 중간저장 서명이미지 추출\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex(options: TriggerExternalEventByDocIndexOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.updateOzDocumentStatus(document);\n * ```\n */\n async updateOzDocumentStatus(options: UpdateOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('updateOzDocumentStatus', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식을 PDF로 export 요청\n * export 결과는 `OZViewerEvent.OZExportCommand`로 트리거 된다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.savePdf({ exportType: \"PDF\", fileName: \"test.pdf\", startPage: 1, endPage: 1 })\n * ```\n */\n async savePdf(options: SavePdfOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'savePdf',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.saveSignImg({ fileName: 'sign.png', signImageKey: 'A0010_mynm_sg', policyNumber });\n * ```\n */\n async saveSignImg(options: SaveSignImgOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.createOzPdfViewer({ filePath: \"/data/0/app/total.pdf\" });\n * ```\n */\n async createOzPdfViewer(options: createOzPdfViewerOptions) {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToTarget<CommonOzBridgetResponseType>('createOzPdfViewer', options);\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOzPdfViewer');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showSignatureShortcut();\n */\n async showSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideSignatureShortcut();\n */\n async hideSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showMissingFieldWarning();\n */\n async showMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideMissingFieldWarning();\n */\n async hideMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * Alert 표시용 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showAlert({\n * title: '모달 타이틀',\n * message: '모달 내용',\n * // 모달에 표시할 버튼들 설정\n * buttons: { close: false, main: \"확인\" }\n * })\n * ```\n */\n async showAlert(options: ShowAlertOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<keyof ShowAlertOptions[\"buttons\"]>>('showAlert', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { IframeBridge } from './iframe/bridge/iframe-bridge';\nimport { IframeBridgeCore } from './iframe/core/iframe-bridge-core';\nimport { NativeBridge } from './native/bridge/native-bridge';\nimport { NativeBridgeOz } from './native/bridge-oz/native-bridge-oz';\nimport { NativeBridgeCore } from './native/core/native-bridge-core';\n\nexport const Bridge = {\n native: new NativeBridge(),\n nativeOz: new NativeBridgeOz(),\n iframe: new IframeBridge(),\n nativeCore: new NativeBridgeCore(),\n iframeCore: new IframeBridgeCore()\n};\n\nexport type * from './native/bridge/native-bridge-dto.types';\nexport type * from \"./native/bridge/native-bridge-options.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-dto.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-options.types\";\n"]}
1
+ {"version":3,"sources":["../src/common/common-bridge.ts","../src/common/common-bridge-core.ts","../src/iframe/core/iframe-bridge-core.ts","../src/iframe/bridge/iframe-bridge.ts","../src/native/core/native-bridge-core.ts","../src/native/bridge/native-bridge.ts","../src/native/bridge-oz/native-bridge-oz.ts","../src/bridge.ts"],"names":["isClient","getDspExecutionEnvironment"],"mappings":"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","file":"index.js","sourcesContent":["import { ICommonBridge } from './common-bridge.types';\n\n/**\n * Business Layer Bridge\n * 비즈니스를 호출하는(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridge implements ICommonBridge {\n protected commonHello(): void {\n console.log('commonHello');\n }\n\n abstract hello(): void;\n}\n","/**\n * Core Layer Bridge\n * Core(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridgeCore {\n /**\n * 코어에서 사용할 프로미스 ID 생성 함수\n * @returns\n */\n protected generatePromiseId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).slice(2, 11);\n\n return `${timestamp}_${random}`;\n }\n\n /**\n * core에서 구현해야할 함수\n * @param action\n * @param options\n */\n abstract callToTarget<T>(action: string, options?: Record<string, unknown>): Promise<T>;\n}\n","import { getDspExecutionEnvironment, isClient } from 'sales-frontend-utils';\nimport { MessageEventManager } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport {\n IframeEventName,\n IframeBridgeCommand,\n IframeBridgeOptions,\n IframeBridgePromise,\n IframeBridgeResponseHandler,\n IframeBridgeResponseData\n} from './iframe-bridge-core.types';\n\n/**\n * Iframe Bridge 통신 위한 핵심 클래스\n * 담당: 부모 호출, Promise 관리\n */\nexport class IframeBridgeCore extends CommonBridgeCore {\n private pendingPromises = new Map<string, IframeBridgePromise>();\n private responseHandler?: IframeBridgeResponseHandler;\n\n constructor() {\n super();\n\n if (!isClient()) {\n 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} 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} 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(): Promise<DocumentCaptureResponse> {\n return this.core.callToTarget('documentCapture');\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 // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { CommonOzBridgetResponseType } from '../bridge/native-bridge-options.types';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n UpdateOzdOptions,\n createOzPdfViewerOptions,\n ShowAlertOptions\n} from './native-bridge-oz-options.types';\nimport type { INativeBridgeOz, NativeOzAction } from './native-bridge-oz.types';\n\n/**\n * App - Web Bridge(for OZ)\n */\nexport class NativeBridgeOz extends CommonBridge implements INativeBridgeOz {\n private core: NativeBridgeCore<NativeOzAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeOzAction>('n2OzBridge', 'n2ozBridge');\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 정보를 가져옵니다\n * @example\n * ```tsx\n * // 사용 예시:\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * // 리턴값이 null이 나올수 있음\n * const { data } = await Bridge.nativeOz.getInformation({ command: 'INPUT_JSON' });\n * ```\n */\n async getInformation(options: GetInformationOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getInformation', options);\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 가져옵니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * await Bridge.nativeOz.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal(options: GetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // value 자리에 string이 아닌 값을 넣어도 getGlobal시 string으로 변환되어 리턴됩니다\n * Bridge.nativeOz.setGlobal({ key: \"AAA\", value: \"myValue\" });\n * ```\n */\n setGlobal(options: SetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<boolean | null>>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * Bridge.nativeOz.script({ command });\n * ```\n */\n script(options: ScriptOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('script', options);\n }\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * Bridge.nativeOz.scriptEX({ command, param });\n * ```\n */\n scriptEx(options: ScriptExOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'scriptEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * - 서명이미지 크롭\n * - 중간저장 서명이미지 추출\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex(options: TriggerExternalEventByDocIndexOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<string | null>>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.updateOzDocumentStatus(document);\n * ```\n */\n async updateOzDocumentStatus(options: UpdateOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('updateOzDocumentStatus', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식을 PDF로 export 요청\n * export 결과는 `OZViewerEvent.OZExportCommand`로 트리거 된다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.savePdf({ exportType: \"PDF\", fileName: \"test.pdf\", startPage: 1, endPage: 1 })\n * ```\n */\n async savePdf(options: SavePdfOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<number | null>>(\n 'savePdf',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.saveSignImg({ fileName: 'sign.png', signImageKey: 'A0010_mynm_sg', policyNumber });\n * ```\n */\n async saveSignImg(options: SaveSignImgOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.createOzPdfViewer({ filePath: \"/data/0/app/total.pdf\" });\n * ```\n */\n async createOzPdfViewer(options: createOzPdfViewerOptions) {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToTarget<CommonOzBridgetResponseType>('createOzPdfViewer', options);\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOzPdfViewer');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showSignatureShortcut();\n */\n async showSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideSignatureShortcut();\n */\n async hideSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showMissingFieldWarning();\n */\n async showMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideMissingFieldWarning();\n */\n async hideMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * Alert 표시용 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showAlert({\n * title: '모달 타이틀',\n * message: '모달 내용',\n * // 모달에 표시할 버튼들 설정\n * buttons: { close: false, main: \"확인\" }\n * })\n * ```\n */\n async showAlert(options: ShowAlertOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<keyof ShowAlertOptions[\"buttons\"]>>('showAlert', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { IframeBridge } from './iframe/bridge/iframe-bridge';\nimport { IframeBridgeCore } from './iframe/core/iframe-bridge-core';\nimport { NativeBridge } from './native/bridge/native-bridge';\nimport { NativeBridgeOz } from './native/bridge-oz/native-bridge-oz';\nimport { NativeBridgeCore } from './native/core/native-bridge-core';\n\nexport const Bridge = {\n native: new NativeBridge(),\n nativeOz: new NativeBridgeOz(),\n iframe: new IframeBridge(),\n nativeCore: new NativeBridgeCore(),\n iframeCore: new IframeBridgeCore()\n};\n\nexport type * from './native/bridge/native-bridge-dto.types';\nexport type * from \"./native/bridge/native-bridge-options.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-dto.types\";\nexport type * from \"./native/bridge-oz/native-bridge-oz-options.types\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sales-frontend-bridge",
3
- "version": "0.0.85",
3
+ "version": "0.0.86",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",