@didit-protocol/sdk-web 0.1.3 → 0.1.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"didit-sdk.umd.min.js","sources":["../src/constants.ts","../src/utils.ts","../src/modal.ts","../src/DiditSdk.ts"],"sourcesContent":["export const DEFAULT_CONFIG = {\n zIndex: 9999,\n showCloseButton: true,\n showExitConfirmation: true,\n loggingEnabled: false,\n closeModalOnComplete: false\n} as const;\n\nexport const CSS_CLASSES = {\n overlay: \"didit-modal-overlay\",\n container: \"didit-modal-container\",\n content: \"didit-modal-content\",\n iframe: \"didit-verification-iframe\",\n closeButton: \"didit-close-button\",\n loading: \"didit-loading\",\n confirmOverlay: \"didit-confirm-overlay\",\n confirmBox: \"didit-confirm-box\",\n embedded: \"didit-embedded\"\n} as const;\n\nexport const SDK_VERSION = \"0.1.3\";\n","class SDKLogger {\n private static _enabled = false;\n\n static get isEnabled(): boolean {\n return this._enabled;\n }\n\n static set isEnabled(value: boolean) {\n this._enabled = value;\n }\n\n static log(...args: unknown[]): void {\n if (this._enabled) {\n console.log(\"[DiditSDK]\", ...args);\n }\n }\n\n static warn(...args: unknown[]): void {\n if (this._enabled) {\n console.warn(\"[DiditSDK]\", ...args);\n }\n }\n\n static error(...args: unknown[]): void {\n if (this._enabled) {\n console.error(\"[DiditSDK]\", ...args);\n }\n }\n}\n\nexport { SDKLogger };\n\nexport function generateModalId(): string {\n return `didit-modal-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\nexport function isAllowedOrigin(origin: string): boolean {\n try {\n const url = new URL(origin);\n return url.hostname.endsWith('.didit.me');\n } catch {\n return false;\n }\n}\n\nexport function createVerificationError(\n type: \"sessionExpired\" | \"networkError\" | \"cameraAccessDenied\" | \"unknown\",\n customMessage?: string\n): { type: typeof type; message: string } {\n const messages = {\n sessionExpired: \"Your verification session has expired.\",\n networkError: \"A network error occurred. Please try again.\",\n cameraAccessDenied: \"Camera access is required for verification.\",\n unknown: customMessage || \"An unknown error occurred.\"\n };\n\n return {\n type,\n message: customMessage || messages[type]\n };\n}\n","import type { DiditSdkConfiguration, VerificationEvent } from \"./types\";\nimport { DEFAULT_CONFIG, CSS_CLASSES } from \"./constants\";\nimport { SDKLogger, generateModalId, isAllowedOrigin } from \"./utils\";\n\nexport interface ModalState {\n isOpen: boolean;\n isLoading: boolean;\n showConfirmation: boolean;\n}\n\nexport interface ModalCallbacks {\n onClose: () => void;\n onCloseConfirmed: () => void;\n onMessage: (event: VerificationEvent) => void;\n onIframeLoad: () => void;\n}\n\nexport class VerificationModal {\n private modalId: string;\n private config: Required<Pick<DiditSdkConfiguration, \"zIndex\" | \"showCloseButton\" | \"showExitConfirmation\">>;\n private callbacks: ModalCallbacks;\n private state: ModalState = {\n isOpen: false,\n isLoading: true,\n showConfirmation: false\n };\n\n private overlay: HTMLDivElement | null = null;\n private container: HTMLDivElement | null = null;\n private iframe: HTMLIFrameElement | null = null;\n private loadingEl: HTMLDivElement | null = null;\n private confirmOverlay: HTMLDivElement | null = null;\n private containerElement: HTMLElement;\n\n private boundHandleMessage: ((event: MessageEvent) => void) | null = null;\n private boundHandleKeydown: ((event: KeyboardEvent) => void) | null = null;\n\n private embedded: boolean = false;\n private embeddedContainer: HTMLElement | null = null;\n\n constructor(configuration: DiditSdkConfiguration | undefined, callbacks: ModalCallbacks) {\n this.modalId = generateModalId();\n this.config = {\n zIndex: configuration?.zIndex ?? DEFAULT_CONFIG.zIndex,\n showCloseButton: configuration?.showCloseButton ?? DEFAULT_CONFIG.showCloseButton,\n showExitConfirmation: configuration?.showExitConfirmation ?? DEFAULT_CONFIG.showExitConfirmation\n };\n this.callbacks = callbacks;\n this.containerElement = configuration?.containerElement ?? document.body;\n this.embedded = configuration?.embedded ?? false;\n if (this.embedded && configuration?.embeddedContainerId) {\n this.embeddedContainer = document.getElementById(configuration.embeddedContainerId);\n }\n }\n\n private injectStyles(): void {\n const styleId = \"didit-sdk-styles\";\n if (document.getElementById(styleId)) {\n return;\n }\n\n const styles = document.createElement(\"style\");\n styles.id = styleId;\n styles.textContent = `\n .${CSS_CLASSES.overlay} {\n display: none;\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.6);\n z-index: ${this.config.zIndex};\n justify-content: center;\n align-items: center;\n padding: 1rem;\n opacity: 0;\n transition: opacity 0.2s ease-out;\n }\n\n .${CSS_CLASSES.overlay}.active {\n display: flex;\n opacity: 1;\n }\n\n .${CSS_CLASSES.container} {\n position: relative;\n width: 100%;\n max-width: 500px;\n max-height: 90vh;\n border-radius: 16px;\n overflow: hidden;\n background: transparent;\n }\n\n .${CSS_CLASSES.overlay}.active .${CSS_CLASSES.container} {\n transform: scale(1);\n }\n\n .${CSS_CLASSES.iframe} {\n width: 100%;\n height: 700px;\n border: none;\n display: block;\n }\n\n .${CSS_CLASSES.closeButton} {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 24px;\n height: 24px;\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n z-index: 10;\n outline: none;\n }\n\n .${CSS_CLASSES.closeButton}:hover,\n .${CSS_CLASSES.closeButton}:focus {\n background: transparent;\n opacity: 0.5;\n }\n\n .${CSS_CLASSES.closeButton} svg {\n stroke: #666;\n stroke-width: 2;\n stroke-linecap: round;\n }\n\n .${CSS_CLASSES.loading} {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #fafafa;\n z-index: 5;\n }\n\n .${CSS_CLASSES.loading}.hidden {\n display: none;\n }\n\n .${CSS_CLASSES.loading} svg {\n width: 48px;\n height: 48px;\n animation: didit-spin 1s linear infinite;\n }\n\n .${CSS_CLASSES.loading} circle {\n stroke: #e5e5e5;\n stroke-width: 3;\n fill: none;\n }\n\n .${CSS_CLASSES.loading} path {\n stroke: #525252;\n stroke-width: 3;\n stroke-linecap: round;\n fill: none;\n }\n\n @keyframes didit-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n\n .${CSS_CLASSES.confirmOverlay} {\n display: none;\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 20;\n justify-content: center;\n align-items: center;\n opacity: 0;\n transition: opacity 0.15s ease-out;\n }\n\n .${CSS_CLASSES.confirmOverlay}.active {\n display: flex;\n opacity: 1;\n }\n\n .${CSS_CLASSES.confirmBox} {\n background: #fff;\n border-radius: 12px;\n padding: 1.5rem;\n text-align: center;\n max-width: 300px;\n margin: 1rem;\n transform: scale(0.95);\n transition: transform 0.15s ease-out;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n }\n\n .${CSS_CLASSES.confirmOverlay}.active .${CSS_CLASSES.confirmBox} {\n transform: scale(1);\n }\n\n .${CSS_CLASSES.confirmBox} h3 {\n color: #1a1a2e;\n margin: 0 0 0.5rem 0;\n font-size: 1.125rem;\n font-weight: 600;\n }\n\n .${CSS_CLASSES.confirmBox} p {\n color: #666;\n font-size: 0.875rem;\n margin: 0 0 1.25rem 0;\n line-height: 1.5;\n }\n\n .didit-confirm-actions {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n }\n\n .didit-confirm-actions button {\n background: #2563eb;\n color: #fff;\n border: none;\n padding: 0.625rem 1.25rem;\n border-radius: 8px;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s ease;\n }\n\n .didit-confirm-actions button:hover {\n background: #1d4ed8;\n }\n\n .didit-confirm-actions span {\n color: #666;\n font-size: 0.875rem;\n cursor: pointer;\n padding: 0.625rem;\n transition: color 0.15s ease;\n }\n\n .didit-confirm-actions span:hover {\n color: #1a1a2e;\n }\n\n @media (max-width: 540px) {\n .${CSS_CLASSES.overlay} {\n padding: 0;\n }\n\n .${CSS_CLASSES.container} {\n max-width: 100%;\n max-height: 100vh;\n border-radius: 0;\n }\n\n .${CSS_CLASSES.iframe} {\n height: 100vh;\n }\n }\n\n .${CSS_CLASSES.embedded} {\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n .${CSS_CLASSES.embedded} .${CSS_CLASSES.iframe} {\n width: 100%;\n height: 100%;\n }\n\n .${CSS_CLASSES.embedded} .${CSS_CLASSES.loading} {\n border-radius: 0;\n }\n `;\n\n document.head.appendChild(styles);\n }\n\n private createDOM(): void {\n this.injectStyles();\n\n if (this.embedded && this.embeddedContainer) {\n this.createEmbeddedDOM();\n return;\n }\n\n this.overlay = document.createElement(\"div\");\n this.overlay.id = this.modalId;\n this.overlay.className = CSS_CLASSES.overlay;\n this.overlay.setAttribute(\"role\", \"dialog\");\n this.overlay.setAttribute(\"aria-modal\", \"true\");\n this.overlay.setAttribute(\"aria-label\", \"Didit Verification\");\n\n this.container = document.createElement(\"div\");\n this.container.className = CSS_CLASSES.container;\n\n this.loadingEl = document.createElement(\"div\");\n this.loadingEl.className = CSS_CLASSES.loading;\n this.loadingEl.innerHTML = `\n <svg viewBox=\"0 0 24 24\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a10 10 0 0 1 10 10\" />\n </svg>\n `;\n\n if (this.config.showCloseButton) {\n const closeBtn = document.createElement(\"button\");\n closeBtn.className = CSS_CLASSES.closeButton;\n closeBtn.setAttribute(\"aria-label\", \"Close verification\");\n closeBtn.innerHTML = `\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\">\n <line x1=\"1\" y1=\"1\" x2=\"13\" y2=\"13\" />\n <line x1=\"13\" y1=\"1\" x2=\"1\" y2=\"13\" />\n </svg>\n `;\n closeBtn.addEventListener(\"click\", () => this.handleCloseRequest());\n this.container.appendChild(closeBtn);\n }\n\n this.iframe = document.createElement(\"iframe\");\n this.iframe.className = CSS_CLASSES.iframe;\n this.iframe.setAttribute(\"allow\", \"camera; microphone; fullscreen; autoplay; encrypted-media; geolocation\");\n this.iframe.setAttribute(\"title\", \"Didit Verification\");\n this.iframe.addEventListener(\"load\", () => this.handleIframeLoad());\n\n this.confirmOverlay = document.createElement(\"div\");\n this.confirmOverlay.className = CSS_CLASSES.confirmOverlay;\n this.confirmOverlay.innerHTML = `\n <div class=\"${CSS_CLASSES.confirmBox}\">\n <h3>Exit verification?</h3>\n <p>Exiting will end your verification process. Are you sure?</p>\n <div class=\"didit-confirm-actions\">\n <button type=\"button\" data-action=\"continue\">Continue</button>\n <span data-action=\"exit\">Exit</span>\n </div>\n </div>\n `;\n\n this.confirmOverlay.querySelector('[data-action=\"continue\"]')?.addEventListener(\"click\", () => {\n this.hideConfirmation();\n });\n this.confirmOverlay.querySelector('[data-action=\"exit\"]')?.addEventListener(\"click\", () => {\n this.confirmExit();\n });\n\n this.container.appendChild(this.loadingEl);\n this.container.appendChild(this.iframe);\n this.container.appendChild(this.confirmOverlay);\n this.overlay.appendChild(this.container);\n\n this.overlay.addEventListener(\"click\", (e) => {\n if (e.target === this.overlay) {\n this.handleCloseRequest();\n }\n });\n\n this.containerElement.appendChild(this.overlay);\n }\n\n private createEmbeddedDOM(): void {\n if (!this.embeddedContainer) return;\n\n this.container = document.createElement(\"div\");\n this.container.id = this.modalId;\n this.container.className = CSS_CLASSES.embedded;\n\n this.loadingEl = document.createElement(\"div\");\n this.loadingEl.className = CSS_CLASSES.loading;\n this.loadingEl.innerHTML = `\n <svg viewBox=\"0 0 24 24\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a10 10 0 0 1 10 10\" />\n </svg>\n `;\n\n this.iframe = document.createElement(\"iframe\");\n this.iframe.className = CSS_CLASSES.iframe;\n this.iframe.setAttribute(\"allow\", \"camera; microphone; fullscreen; autoplay; encrypted-media; geolocation\");\n this.iframe.setAttribute(\"title\", \"Didit Verification\");\n this.iframe.addEventListener(\"load\", () => this.handleIframeLoad());\n\n this.container.appendChild(this.loadingEl);\n this.container.appendChild(this.iframe);\n this.embeddedContainer.appendChild(this.container);\n }\n\n private setupEventListeners(): void {\n this.boundHandleMessage = this.handleMessage.bind(this);\n window.addEventListener(\"message\", this.boundHandleMessage);\n\n this.boundHandleKeydown = this.handleKeydown.bind(this);\n document.addEventListener(\"keydown\", this.boundHandleKeydown);\n }\n\n private removeEventListeners(): void {\n if (this.boundHandleMessage) {\n window.removeEventListener(\"message\", this.boundHandleMessage);\n this.boundHandleMessage = null;\n }\n if (this.boundHandleKeydown) {\n document.removeEventListener(\"keydown\", this.boundHandleKeydown);\n this.boundHandleKeydown = null;\n }\n }\n\n private handleMessage(event: MessageEvent): void {\n if (!isAllowedOrigin(event.origin)) {\n return;\n }\n\n SDKLogger.log(\"Received postMessage:\", event.data);\n\n let messageData: VerificationEvent;\n try {\n if (typeof event.data === \"string\") {\n messageData = JSON.parse(event.data);\n } else {\n messageData = event.data;\n }\n } catch {\n SDKLogger.warn(\"Failed to parse postMessage:\", event.data);\n return;\n }\n\n if (messageData.type === \"didit:close_request\") {\n this.handleCloseRequest();\n return;\n }\n\n this.callbacks.onMessage(messageData);\n }\n\n private handleKeydown(event: KeyboardEvent): void {\n if (!this.state.isOpen) return;\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n if (this.state.showConfirmation) {\n this.hideConfirmation();\n } else {\n this.handleCloseRequest();\n }\n }\n }\n\n private handleIframeLoad(): void {\n if (this.iframe?.src && this.iframe.src !== \"about:blank\") {\n this.state.isLoading = false;\n this.loadingEl?.classList.add(\"hidden\");\n this.callbacks.onIframeLoad();\n }\n }\n\n private handleCloseRequest(): void {\n if (this.config.showExitConfirmation) {\n this.showConfirmation();\n } else {\n this.callbacks.onCloseConfirmed();\n }\n }\n\n private showConfirmation(): void {\n this.state.showConfirmation = true;\n this.confirmOverlay?.classList.add(\"active\");\n this.callbacks.onClose();\n }\n\n private hideConfirmation(): void {\n this.state.showConfirmation = false;\n this.confirmOverlay?.classList.remove(\"active\");\n }\n\n private confirmExit(): void {\n this.hideConfirmation();\n this.callbacks.onCloseConfirmed();\n }\n\n open(verificationUrl: string): void {\n if (!this.overlay && !this.container) {\n this.createDOM();\n this.setupEventListeners();\n }\n\n SDKLogger.log(\"Opening with URL:\", verificationUrl);\n\n this.state.isLoading = true;\n this.state.showConfirmation = false;\n this.loadingEl?.classList.remove(\"hidden\");\n this.confirmOverlay?.classList.remove(\"active\");\n\n if (this.iframe) {\n this.iframe.src = verificationUrl;\n }\n\n this.state.isOpen = true;\n\n if (this.embedded) {\n return;\n }\n\n this.overlay?.classList.add(\"active\");\n document.body.style.overflow = \"hidden\";\n }\n\n close(): void {\n SDKLogger.log(\"Closing\");\n\n this.state.isOpen = false;\n this.state.isLoading = true;\n this.state.showConfirmation = false;\n\n if (this.iframe) {\n this.iframe.src = \"about:blank\";\n }\n\n if (this.embedded) {\n return;\n }\n\n this.overlay?.classList.remove(\"active\");\n document.body.style.overflow = \"\";\n }\n\n destroy(): void {\n SDKLogger.log(\"Destroying\");\n\n this.close();\n this.removeEventListeners();\n\n if (this.embedded && this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n } else if (this.overlay && this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n\n this.overlay = null;\n this.container = null;\n this.iframe = null;\n this.loadingEl = null;\n this.confirmOverlay = null;\n }\n\n isOpen(): boolean {\n return this.state.isOpen;\n }\n\n isLoading(): boolean {\n return this.state.isLoading;\n }\n}\n","import type {\n DiditSdkState,\n DiditSdkConfiguration,\n VerificationResult,\n VerificationCallback,\n StateChangeCallback,\n EventCallback,\n VerificationEvent,\n SessionData,\n VerificationStatus,\n StartVerificationOptions\n} from \"./types\";\n\nimport { VerificationModal } from \"./modal\";\nimport { DEFAULT_CONFIG } from \"./constants\";\nimport { SDKLogger, createVerificationError } from \"./utils\";\n\nexport class DiditSdk {\n private static _instance: DiditSdk | null = null;\n\n public static get shared(): DiditSdk {\n if (!DiditSdk._instance) {\n DiditSdk._instance = new DiditSdk();\n }\n return DiditSdk._instance;\n }\n\n public static reset(): void {\n if (DiditSdk._instance) {\n DiditSdk._instance.destroy();\n DiditSdk._instance = null;\n }\n }\n\n private _state: DiditSdkState = \"idle\";\n private _configuration: DiditSdkConfiguration | undefined;\n private _sessionId: string | undefined;\n private _url: string | undefined;\n private _modal: VerificationModal | null = null;\n private _errorMessage: string | undefined;\n\n public onComplete: VerificationCallback | undefined;\n public onStateChange: StateChangeCallback | undefined;\n public onEvent: EventCallback | undefined;\n\n public get state(): DiditSdkState {\n return this._state;\n }\n\n public get configuration(): DiditSdkConfiguration | undefined {\n return this._configuration;\n }\n\n public get isPresented(): boolean {\n return this._modal?.isOpen() ?? false;\n }\n\n public get errorMessage(): string | undefined {\n return this._errorMessage;\n }\n\n private constructor() {\n SDKLogger.log(\"DiditSdk initialized\");\n }\n\n public async startVerification(options: StartVerificationOptions): Promise<void> {\n const config = options.configuration;\n this._configuration = config;\n\n SDKLogger.isEnabled = config?.loggingEnabled ?? DEFAULT_CONFIG.loggingEnabled;\n\n SDKLogger.log(\"Starting verification with options:\", options);\n if (this._modal) {\n this._modal.destroy();\n this._modal = null;\n }\n this._modal = new VerificationModal(config, {\n onClose: () => this.handleModalClose(),\n onCloseConfirmed: () => this.handleModalCloseConfirmed(),\n onMessage: (event) => this.handleVerificationEvent(event),\n onIframeLoad: () => this.handleIframeLoad()\n });\n\n try {\n const { url } = options;\n\n if (!url || typeof url !== \"string\") {\n throw new Error(\"Invalid options: url is required\");\n }\n\n this._url = url;\n this.setState(\"loading\");\n\n this.emitInternalEvent(\"didit:started\", {});\n\n this._modal?.open(this._url);\n this.setState(\"ready\");\n } catch (error) {\n this.handleError(error);\n }\n }\n\n public close(): void {\n SDKLogger.log(\"Closing verification programmatically\");\n this.handleModalCloseConfirmed();\n }\n\n public destroy(): void {\n SDKLogger.log(\"Destroying SDK instance\");\n this._modal?.destroy();\n this._modal = null;\n this.reset();\n }\n\n private handleModalClose(): void {\n SDKLogger.log(\"Modal close requested\");\n }\n\n private handleModalCloseConfirmed(): void {\n SDKLogger.log(\"Modal close confirmed\");\n\n const sessionData = this.buildSessionData();\n\n this._modal?.close();\n this.reset();\n\n const result: VerificationResult = {\n type: \"cancelled\",\n session: sessionData\n };\n\n this.onComplete?.(result);\n }\n\n private handleIframeLoad(): void {\n SDKLogger.log(\"Iframe loaded\");\n }\n\n private emitInternalEvent(type: VerificationEvent[\"type\"], data?: VerificationEvent[\"data\"]): void {\n const event: VerificationEvent = {\n type,\n data,\n timestamp: Date.now()\n };\n\n SDKLogger.log(\"Emitting internal event:\", event);\n this.onEvent?.(event);\n }\n\n private handleVerificationEvent(event: VerificationEvent): void {\n SDKLogger.log(\"Verification event:\", event);\n\n this.onEvent?.(event);\n\n switch (event.type) {\n case \"didit:ready\":\n SDKLogger.log(\"Verification iframe ready\");\n break;\n\n case \"didit:started\":\n SDKLogger.log(\"User started verification\");\n break;\n\n case \"didit:step_started\":\n SDKLogger.log(\"Step started:\", event.data?.step);\n break;\n\n case \"didit:step_completed\":\n SDKLogger.log(\"Step completed:\", event.data?.step, \"-> next:\", event.data?.nextStep);\n break;\n\n case \"didit:media_started\":\n SDKLogger.log(\"Media started:\", event.data?.mediaType, \"for step:\", event.data?.step);\n break;\n\n case \"didit:media_captured\":\n SDKLogger.log(\"Media captured for step:\", event.data?.step, \"isAuto:\", event.data?.isAuto);\n break;\n\n case \"didit:document_selected\":\n SDKLogger.log(\"Document selected:\", event.data?.documentType, \"country:\", event.data?.country);\n break;\n\n case \"didit:verification_submitted\":\n SDKLogger.log(\"Verification submitted for step:\", event.data?.step);\n break;\n\n case \"didit:code_sent\":\n SDKLogger.log(\"Code sent via:\", event.data?.channel, \"codeSize:\", event.data?.codeSize);\n break;\n\n case \"didit:code_verified\":\n SDKLogger.log(\"Code verified via:\", event.data?.channel);\n break;\n\n case \"didit:status_updated\":\n SDKLogger.log(\"Status updated:\", event.data?.status, \"step:\", event.data?.step);\n break;\n\n case \"didit:completed\":\n this.handleVerificationCompleted(event);\n break;\n\n case \"didit:cancelled\":\n this.handleVerificationCancelled(event);\n break;\n\n case \"didit:error\":\n this.handleVerificationError(event);\n break;\n\n case \"didit:step_changed\":\n SDKLogger.log(\"Step changed:\", event.data?.step);\n break;\n\n case \"didit:close_request\":\n break;\n }\n }\n\n private handleVerificationCompleted(event: VerificationEvent): void {\n SDKLogger.log(\"Verification completed:\", event.data);\n\n const sessionData = this.buildSessionData(event.data);\n\n if (this._configuration?.closeModalOnComplete) {\n this._modal?.close();\n this.reset();\n }\n\n const result: VerificationResult = {\n type: \"completed\",\n session: sessionData\n };\n\n this.onComplete?.(result);\n }\n\n private handleVerificationCancelled(event: VerificationEvent): void {\n SDKLogger.log(\"Verification cancelled:\", event.data);\n\n const sessionData = this.buildSessionData(event.data);\n\n this._modal?.close();\n this.reset();\n\n const result: VerificationResult = {\n type: \"cancelled\",\n session: sessionData\n };\n\n this.onComplete?.(result);\n }\n\n private handleVerificationError(event: VerificationEvent): void {\n SDKLogger.log(\"Verification error:\", event.data);\n }\n\n private handleError(error: unknown): void {\n SDKLogger.error(\"SDK error:\", error);\n\n let verificationError;\n\n if (error instanceof Error) {\n verificationError = createVerificationError(\"unknown\", error.message);\n } else {\n verificationError = createVerificationError(\"unknown\", \"An unknown error occurred\");\n }\n\n this._errorMessage = verificationError.message;\n this.setState(\"error\");\n\n this._modal?.close();\n this.reset();\n\n const result: VerificationResult = {\n type: \"failed\",\n error: verificationError\n };\n\n this.onComplete?.(result);\n }\n\n private setState(state: DiditSdkState): void {\n const previousState = this._state;\n this._state = state;\n\n if (previousState !== state) {\n SDKLogger.log(\"State changed:\", previousState, \"->\", state);\n this.onStateChange?.(state, this._errorMessage);\n }\n }\n\n private reset(): void {\n this._state = \"idle\";\n this._sessionId = undefined;\n this._url = undefined;\n this._errorMessage = undefined;\n this._configuration = undefined;\n }\n\n private buildSessionData(eventData?: VerificationEvent[\"data\"]): SessionData | undefined {\n const sessionId = eventData?.sessionId || this._sessionId;\n\n if (!sessionId) {\n return undefined;\n }\n\n return {\n sessionId,\n status: (eventData?.status || \"Pending\") as VerificationStatus,\n country: eventData?.country,\n documentType: eventData?.documentType\n };\n }\n}\n"],"names":["DEFAULT_CONFIG","CSS_CLASSES","SDKLogger","isEnabled","this","_enabled","value","log","args","console","warn","error","createVerificationError","type","customMessage","message","sessionExpired","networkError","cameraAccessDenied","unknown","VerificationModal","constructor","configuration","callbacks","state","isOpen","isLoading","showConfirmation","overlay","container","iframe","loadingEl","confirmOverlay","boundHandleMessage","boundHandleKeydown","embedded","embeddedContainer","modalId","Date","now","Math","random","toString","substr","config","zIndex","showCloseButton","showExitConfirmation","containerElement","document","body","embeddedContainerId","getElementById","injectStyles","styleId","styles","createElement","id","textContent","head","appendChild","createDOM","createEmbeddedDOM","className","setAttribute","innerHTML","closeBtn","addEventListener","handleCloseRequest","handleIframeLoad","querySelector","hideConfirmation","confirmExit","e","target","setupEventListeners","handleMessage","bind","window","handleKeydown","removeEventListeners","removeEventListener","event","origin","URL","hostname","endsWith","isAllowedOrigin","messageData","data","JSON","parse","onMessage","key","preventDefault","src","classList","add","onIframeLoad","onCloseConfirmed","onClose","remove","open","verificationUrl","style","overflow","close","destroy","parentNode","removeChild","DiditSdk","shared","_instance","reset","_state","_configuration","isPresented","_modal","errorMessage","_errorMessage","startVerification","options","loggingEnabled","handleModalClose","handleModalCloseConfirmed","handleVerificationEvent","url","Error","_url","setState","emitInternalEvent","handleError","sessionData","buildSessionData","result","session","onComplete","timestamp","onEvent","step","nextStep","mediaType","isAuto","documentType","country","channel","codeSize","status","handleVerificationCompleted","handleVerificationCancelled","handleVerificationError","closeModalOnComplete","verificationError","previousState","onStateChange","_sessionId","undefined","eventData","sessionId"],"mappings":"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"}
1
+ {"version":3,"file":"didit-sdk.umd.min.js","sources":["../src/constants.ts","../src/utils.ts","../src/modal.ts","../src/DiditSdk.ts"],"sourcesContent":["export const DEFAULT_CONFIG = {\n zIndex: 9999,\n showCloseButton: true,\n showExitConfirmation: true,\n loggingEnabled: false,\n closeModalOnComplete: false\n} as const;\n\nexport const CSS_CLASSES = {\n overlay: \"didit-modal-overlay\",\n container: \"didit-modal-container\",\n content: \"didit-modal-content\",\n iframe: \"didit-verification-iframe\",\n closeButton: \"didit-close-button\",\n loading: \"didit-loading\",\n confirmOverlay: \"didit-confirm-overlay\",\n confirmBox: \"didit-confirm-box\",\n embedded: \"didit-embedded\"\n} as const;\n\nexport const SDK_VERSION = \"0.1.4\";\n","class SDKLogger {\n private static _enabled = false;\n\n static get isEnabled(): boolean {\n return this._enabled;\n }\n\n static set isEnabled(value: boolean) {\n this._enabled = value;\n }\n\n static log(...args: unknown[]): void {\n if (this._enabled) {\n console.log(\"[DiditSDK]\", ...args);\n }\n }\n\n static warn(...args: unknown[]): void {\n if (this._enabled) {\n console.warn(\"[DiditSDK]\", ...args);\n }\n }\n\n static error(...args: unknown[]): void {\n if (this._enabled) {\n console.error(\"[DiditSDK]\", ...args);\n }\n }\n}\n\nexport { SDKLogger };\n\nexport function generateModalId(): string {\n return `didit-modal-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\nexport function isAllowedOrigin(origin: string): boolean {\n try {\n const url = new URL(origin);\n return url.hostname.endsWith('.didit.me');\n } catch {\n return false;\n }\n}\n\nexport function createVerificationError(\n type: \"sessionExpired\" | \"networkError\" | \"cameraAccessDenied\" | \"unknown\",\n customMessage?: string\n): { type: typeof type; message: string } {\n const messages = {\n sessionExpired: \"Your verification session has expired.\",\n networkError: \"A network error occurred. Please try again.\",\n cameraAccessDenied: \"Camera access is required for verification.\",\n unknown: customMessage || \"An unknown error occurred.\"\n };\n\n return {\n type,\n message: customMessage || messages[type]\n };\n}\n","import type { DiditSdkConfiguration, VerificationEvent } from \"./types\";\nimport { DEFAULT_CONFIG, CSS_CLASSES } from \"./constants\";\nimport { SDKLogger, generateModalId, isAllowedOrigin } from \"./utils\";\n\nexport interface ModalState {\n isOpen: boolean;\n isLoading: boolean;\n showConfirmation: boolean;\n}\n\nexport interface ModalCallbacks {\n onClose: () => void;\n onCloseConfirmed: () => void;\n onMessage: (event: VerificationEvent) => void;\n onIframeLoad: () => void;\n}\n\nexport class VerificationModal {\n private modalId: string;\n private config: Required<Pick<DiditSdkConfiguration, \"zIndex\" | \"showCloseButton\" | \"showExitConfirmation\">>;\n private callbacks: ModalCallbacks;\n private state: ModalState = {\n isOpen: false,\n isLoading: true,\n showConfirmation: false\n };\n\n private overlay: HTMLDivElement | null = null;\n private container: HTMLDivElement | null = null;\n private iframe: HTMLIFrameElement | null = null;\n private loadingEl: HTMLDivElement | null = null;\n private confirmOverlay: HTMLDivElement | null = null;\n private containerElement: HTMLElement;\n\n private boundHandleMessage: ((event: MessageEvent) => void) | null = null;\n private boundHandleKeydown: ((event: KeyboardEvent) => void) | null = null;\n\n private embedded: boolean = false;\n private embeddedContainer: HTMLElement | null = null;\n\n constructor(configuration: DiditSdkConfiguration | undefined, callbacks: ModalCallbacks) {\n this.modalId = generateModalId();\n this.config = {\n zIndex: configuration?.zIndex ?? DEFAULT_CONFIG.zIndex,\n showCloseButton: configuration?.showCloseButton ?? DEFAULT_CONFIG.showCloseButton,\n showExitConfirmation: configuration?.showExitConfirmation ?? DEFAULT_CONFIG.showExitConfirmation\n };\n this.callbacks = callbacks;\n this.containerElement = configuration?.containerElement ?? document.body;\n this.embedded = configuration?.embedded ?? false;\n if (this.embedded && configuration?.embeddedContainerId) {\n this.embeddedContainer = document.getElementById(configuration.embeddedContainerId);\n }\n }\n\n private injectStyles(): void {\n const styleId = \"didit-sdk-styles\";\n if (document.getElementById(styleId)) {\n return;\n }\n\n const styles = document.createElement(\"style\");\n styles.id = styleId;\n styles.textContent = `\n .${CSS_CLASSES.overlay} {\n display: none;\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.6);\n z-index: ${this.config.zIndex};\n justify-content: center;\n align-items: center;\n padding: 1rem;\n opacity: 0;\n transition: opacity 0.2s ease-out;\n }\n\n .${CSS_CLASSES.overlay}.active {\n display: flex;\n opacity: 1;\n }\n\n .${CSS_CLASSES.container} {\n position: relative;\n width: 100%;\n max-width: 500px;\n max-height: 90vh;\n border-radius: 16px;\n overflow: hidden;\n background: transparent;\n }\n\n .${CSS_CLASSES.overlay}.active .${CSS_CLASSES.container} {\n transform: scale(1);\n }\n\n .${CSS_CLASSES.iframe} {\n width: 100%;\n height: 700px;\n border: none;\n display: block;\n }\n\n .${CSS_CLASSES.closeButton} {\n position: absolute;\n top: 4px;\n right: 4px;\n width: 24px;\n height: 24px;\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n z-index: 10;\n outline: none;\n }\n\n .${CSS_CLASSES.closeButton}:hover,\n .${CSS_CLASSES.closeButton}:focus {\n background: transparent;\n opacity: 0.5;\n }\n\n .${CSS_CLASSES.closeButton} svg {\n stroke: #666;\n stroke-width: 2;\n stroke-linecap: round;\n }\n\n .${CSS_CLASSES.loading} {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #fafafa;\n z-index: 5;\n }\n\n .${CSS_CLASSES.loading}.hidden {\n display: none;\n }\n\n .${CSS_CLASSES.loading} svg {\n width: 48px;\n height: 48px;\n animation: didit-spin 1s linear infinite;\n }\n\n .${CSS_CLASSES.loading} circle {\n stroke: #e5e5e5;\n stroke-width: 3;\n fill: none;\n }\n\n .${CSS_CLASSES.loading} path {\n stroke: #525252;\n stroke-width: 3;\n stroke-linecap: round;\n fill: none;\n }\n\n @keyframes didit-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n\n .${CSS_CLASSES.confirmOverlay} {\n display: none;\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 20;\n justify-content: center;\n align-items: center;\n opacity: 0;\n transition: opacity 0.15s ease-out;\n }\n\n .${CSS_CLASSES.confirmOverlay}.active {\n display: flex;\n opacity: 1;\n }\n\n .${CSS_CLASSES.confirmBox} {\n background: #fff;\n border-radius: 12px;\n padding: 1.5rem;\n text-align: center;\n max-width: 300px;\n margin: 1rem;\n transform: scale(0.95);\n transition: transform 0.15s ease-out;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n }\n\n .${CSS_CLASSES.confirmOverlay}.active .${CSS_CLASSES.confirmBox} {\n transform: scale(1);\n }\n\n .${CSS_CLASSES.confirmBox} h3 {\n color: #1a1a2e;\n margin: 0 0 0.5rem 0;\n font-size: 1.125rem;\n font-weight: 600;\n }\n\n .${CSS_CLASSES.confirmBox} p {\n color: #666;\n font-size: 0.875rem;\n margin: 0 0 1.25rem 0;\n line-height: 1.5;\n }\n\n .didit-confirm-actions {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n }\n\n .didit-confirm-actions button {\n background: #2563eb;\n color: #fff;\n border: none;\n padding: 0.625rem 1.25rem;\n border-radius: 8px;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s ease;\n }\n\n .didit-confirm-actions button:hover {\n background: #1d4ed8;\n }\n\n .didit-confirm-actions span {\n color: #666;\n font-size: 0.875rem;\n cursor: pointer;\n padding: 0.625rem;\n transition: color 0.15s ease;\n }\n\n .didit-confirm-actions span:hover {\n color: #1a1a2e;\n }\n\n @media (max-width: 540px) {\n .${CSS_CLASSES.overlay} {\n padding: 0;\n }\n\n .${CSS_CLASSES.container} {\n max-width: 100%;\n max-height: 100vh;\n border-radius: 0;\n }\n\n .${CSS_CLASSES.iframe} {\n height: 100vh;\n }\n }\n\n .${CSS_CLASSES.embedded} {\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n .${CSS_CLASSES.embedded} .${CSS_CLASSES.iframe} {\n width: 100%;\n height: 100%;\n }\n\n .${CSS_CLASSES.embedded} .${CSS_CLASSES.loading} {\n border-radius: 0;\n }\n `;\n\n document.head.appendChild(styles);\n }\n\n private createDOM(): void {\n this.injectStyles();\n\n if (this.embedded && this.embeddedContainer) {\n this.createEmbeddedDOM();\n return;\n }\n\n this.overlay = document.createElement(\"div\");\n this.overlay.id = this.modalId;\n this.overlay.className = CSS_CLASSES.overlay;\n this.overlay.setAttribute(\"role\", \"dialog\");\n this.overlay.setAttribute(\"aria-modal\", \"true\");\n this.overlay.setAttribute(\"aria-label\", \"Didit Verification\");\n\n this.container = document.createElement(\"div\");\n this.container.className = CSS_CLASSES.container;\n\n this.loadingEl = document.createElement(\"div\");\n this.loadingEl.className = CSS_CLASSES.loading;\n this.loadingEl.innerHTML = `\n <svg viewBox=\"0 0 24 24\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a10 10 0 0 1 10 10\" />\n </svg>\n `;\n\n if (this.config.showCloseButton) {\n const closeBtn = document.createElement(\"button\");\n closeBtn.className = CSS_CLASSES.closeButton;\n closeBtn.setAttribute(\"aria-label\", \"Close verification\");\n closeBtn.innerHTML = `\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\">\n <line x1=\"1\" y1=\"1\" x2=\"13\" y2=\"13\" />\n <line x1=\"13\" y1=\"1\" x2=\"1\" y2=\"13\" />\n </svg>\n `;\n closeBtn.addEventListener(\"click\", () => this.handleCloseRequest());\n this.container.appendChild(closeBtn);\n }\n\n this.iframe = document.createElement(\"iframe\");\n this.iframe.className = CSS_CLASSES.iframe;\n this.iframe.setAttribute(\"allow\", \"camera; microphone; fullscreen; autoplay; encrypted-media; geolocation\");\n this.iframe.setAttribute(\"title\", \"Didit Verification\");\n this.iframe.addEventListener(\"load\", () => this.handleIframeLoad());\n\n this.confirmOverlay = document.createElement(\"div\");\n this.confirmOverlay.className = CSS_CLASSES.confirmOverlay;\n this.confirmOverlay.innerHTML = `\n <div class=\"${CSS_CLASSES.confirmBox}\">\n <h3>Exit verification?</h3>\n <p>Exiting will end your verification process. Are you sure?</p>\n <div class=\"didit-confirm-actions\">\n <button type=\"button\" data-action=\"continue\">Continue</button>\n <span data-action=\"exit\">Exit</span>\n </div>\n </div>\n `;\n\n this.confirmOverlay.querySelector('[data-action=\"continue\"]')?.addEventListener(\"click\", () => {\n this.hideConfirmation();\n });\n this.confirmOverlay.querySelector('[data-action=\"exit\"]')?.addEventListener(\"click\", () => {\n this.confirmExit();\n });\n\n this.container.appendChild(this.loadingEl);\n this.container.appendChild(this.iframe);\n this.container.appendChild(this.confirmOverlay);\n this.overlay.appendChild(this.container);\n\n this.overlay.addEventListener(\"click\", (e) => {\n if (e.target === this.overlay) {\n this.handleCloseRequest();\n }\n });\n\n this.containerElement.appendChild(this.overlay);\n }\n\n private createEmbeddedDOM(): void {\n if (!this.embeddedContainer) return;\n\n this.container = document.createElement(\"div\");\n this.container.id = this.modalId;\n this.container.className = CSS_CLASSES.embedded;\n\n this.loadingEl = document.createElement(\"div\");\n this.loadingEl.className = CSS_CLASSES.loading;\n this.loadingEl.innerHTML = `\n <svg viewBox=\"0 0 24 24\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a10 10 0 0 1 10 10\" />\n </svg>\n `;\n\n this.iframe = document.createElement(\"iframe\");\n this.iframe.className = CSS_CLASSES.iframe;\n this.iframe.setAttribute(\"allow\", \"camera; microphone; fullscreen; autoplay; encrypted-media; geolocation\");\n this.iframe.setAttribute(\"title\", \"Didit Verification\");\n this.iframe.addEventListener(\"load\", () => this.handleIframeLoad());\n\n this.container.appendChild(this.loadingEl);\n this.container.appendChild(this.iframe);\n this.embeddedContainer.appendChild(this.container);\n }\n\n private setupEventListeners(): void {\n this.boundHandleMessage = this.handleMessage.bind(this);\n window.addEventListener(\"message\", this.boundHandleMessage);\n\n this.boundHandleKeydown = this.handleKeydown.bind(this);\n document.addEventListener(\"keydown\", this.boundHandleKeydown);\n }\n\n private removeEventListeners(): void {\n if (this.boundHandleMessage) {\n window.removeEventListener(\"message\", this.boundHandleMessage);\n this.boundHandleMessage = null;\n }\n if (this.boundHandleKeydown) {\n document.removeEventListener(\"keydown\", this.boundHandleKeydown);\n this.boundHandleKeydown = null;\n }\n }\n\n private handleMessage(event: MessageEvent): void {\n if (!isAllowedOrigin(event.origin)) {\n return;\n }\n\n SDKLogger.log(\"Received postMessage:\", event.data);\n\n let messageData: VerificationEvent;\n try {\n if (typeof event.data === \"string\") {\n messageData = JSON.parse(event.data);\n } else {\n messageData = event.data;\n }\n } catch {\n SDKLogger.warn(\"Failed to parse postMessage:\", event.data);\n return;\n }\n\n if (messageData.type === \"didit:close_request\") {\n this.handleCloseRequest();\n return;\n }\n\n this.callbacks.onMessage(messageData);\n }\n\n private handleKeydown(event: KeyboardEvent): void {\n if (!this.state.isOpen) return;\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n if (this.state.showConfirmation) {\n this.hideConfirmation();\n } else {\n this.handleCloseRequest();\n }\n }\n }\n\n private handleIframeLoad(): void {\n if (this.iframe?.src && this.iframe.src !== \"about:blank\") {\n this.state.isLoading = false;\n this.loadingEl?.classList.add(\"hidden\");\n this.callbacks.onIframeLoad();\n }\n }\n\n private handleCloseRequest(): void {\n if (this.config.showExitConfirmation) {\n this.showConfirmation();\n } else {\n this.callbacks.onCloseConfirmed();\n }\n }\n\n private showConfirmation(): void {\n this.state.showConfirmation = true;\n this.confirmOverlay?.classList.add(\"active\");\n this.callbacks.onClose();\n }\n\n private hideConfirmation(): void {\n this.state.showConfirmation = false;\n this.confirmOverlay?.classList.remove(\"active\");\n }\n\n private confirmExit(): void {\n this.hideConfirmation();\n this.callbacks.onCloseConfirmed();\n }\n\n open(verificationUrl: string): void {\n if (!this.overlay && !this.container) {\n this.createDOM();\n this.setupEventListeners();\n }\n\n SDKLogger.log(\"Opening with URL:\", verificationUrl);\n\n this.state.isLoading = true;\n this.state.showConfirmation = false;\n this.loadingEl?.classList.remove(\"hidden\");\n this.confirmOverlay?.classList.remove(\"active\");\n\n if (this.iframe) {\n this.iframe.src = verificationUrl;\n }\n\n this.state.isOpen = true;\n\n if (this.embedded) {\n return;\n }\n\n this.overlay?.classList.add(\"active\");\n document.body.style.overflow = \"hidden\";\n }\n\n close(): void {\n SDKLogger.log(\"Closing\");\n\n this.state.isOpen = false;\n this.state.isLoading = true;\n this.state.showConfirmation = false;\n\n if (this.iframe) {\n this.iframe.src = \"about:blank\";\n }\n\n if (this.embedded) {\n return;\n }\n\n this.overlay?.classList.remove(\"active\");\n document.body.style.overflow = \"\";\n }\n\n destroy(): void {\n SDKLogger.log(\"Destroying\");\n\n this.close();\n this.removeEventListeners();\n\n if (this.embedded && this.container && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n } else if (this.overlay && this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n\n this.overlay = null;\n this.container = null;\n this.iframe = null;\n this.loadingEl = null;\n this.confirmOverlay = null;\n }\n\n isOpen(): boolean {\n return this.state.isOpen;\n }\n\n isLoading(): boolean {\n return this.state.isLoading;\n }\n}\n","import type {\n DiditSdkState,\n DiditSdkConfiguration,\n VerificationResult,\n VerificationCallback,\n StateChangeCallback,\n EventCallback,\n VerificationEvent,\n SessionData,\n VerificationStatus,\n StartVerificationOptions\n} from \"./types\";\n\nimport { VerificationModal } from \"./modal\";\nimport { DEFAULT_CONFIG } from \"./constants\";\nimport { SDKLogger, createVerificationError } from \"./utils\";\n\nexport class DiditSdk {\n private static _instance: DiditSdk | null = null;\n\n public static get shared(): DiditSdk {\n if (!DiditSdk._instance) {\n DiditSdk._instance = new DiditSdk();\n }\n return DiditSdk._instance;\n }\n\n public static reset(): void {\n if (DiditSdk._instance) {\n DiditSdk._instance.destroy();\n DiditSdk._instance = null;\n }\n }\n\n private _state: DiditSdkState = \"idle\";\n private _configuration: DiditSdkConfiguration | undefined;\n private _sessionId: string | undefined;\n private _url: string | undefined;\n private _modal: VerificationModal | null = null;\n private _errorMessage: string | undefined;\n\n public onComplete: VerificationCallback | undefined;\n public onStateChange: StateChangeCallback | undefined;\n public onEvent: EventCallback | undefined;\n\n public get state(): DiditSdkState {\n return this._state;\n }\n\n public get configuration(): DiditSdkConfiguration | undefined {\n return this._configuration;\n }\n\n public get isPresented(): boolean {\n return this._modal?.isOpen() ?? false;\n }\n\n public get errorMessage(): string | undefined {\n return this._errorMessage;\n }\n\n private constructor() {\n SDKLogger.log(\"DiditSdk initialized\");\n }\n\n public async startVerification(options: StartVerificationOptions): Promise<void> {\n const config = options.configuration;\n this._configuration = config;\n\n SDKLogger.isEnabled = config?.loggingEnabled ?? DEFAULT_CONFIG.loggingEnabled;\n\n SDKLogger.log(\"Starting verification with options:\", options);\n if (this._modal) {\n this._modal.destroy();\n this._modal = null;\n }\n this._modal = new VerificationModal(config, {\n onClose: () => this.handleModalClose(),\n onCloseConfirmed: () => this.handleModalCloseConfirmed(),\n onMessage: (event) => this.handleVerificationEvent(event),\n onIframeLoad: () => this.handleIframeLoad()\n });\n\n try {\n const { url } = options;\n\n if (!url || typeof url !== \"string\") {\n throw new Error(\"Invalid options: url is required\");\n }\n\n this._url = url;\n this.setState(\"loading\");\n\n this.emitInternalEvent(\"didit:started\", {});\n\n this._modal?.open(this._url);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n public close(): void {\n SDKLogger.log(\"Closing verification programmatically\");\n this.handleModalCloseConfirmed();\n }\n\n public destroy(): void {\n SDKLogger.log(\"Destroying SDK instance\");\n this._modal?.destroy();\n this._modal = null;\n this.reset();\n }\n\n private handleModalClose(): void {\n SDKLogger.log(\"Modal close requested\");\n }\n\n private handleModalCloseConfirmed(): void {\n SDKLogger.log(\"Modal close confirmed\");\n\n const sessionData = this.buildSessionData();\n\n this._modal?.close();\n this.reset();\n\n const result: VerificationResult = {\n type: \"cancelled\",\n session: sessionData\n };\n\n this.onComplete?.(result);\n }\n\n private handleIframeLoad(): void {\n SDKLogger.log(\"Iframe loaded\");\n }\n\n private emitInternalEvent(type: VerificationEvent[\"type\"], data?: VerificationEvent[\"data\"]): void {\n const event: VerificationEvent = {\n type,\n data,\n timestamp: Date.now()\n };\n\n SDKLogger.log(\"Emitting internal event:\", event);\n this.onEvent?.(event);\n }\n\n private handleVerificationEvent(event: VerificationEvent): void {\n SDKLogger.log(\"Verification event:\", event);\n\n this.onEvent?.(event);\n\n switch (event.type) {\n case \"didit:ready\":\n SDKLogger.log(\"Verification iframe ready\");\n break;\n\n case \"didit:started\":\n SDKLogger.log(\"User started verification\");\n break;\n\n case \"didit:step_started\":\n SDKLogger.log(\"Step started:\", event.data?.step);\n break;\n\n case \"didit:step_completed\":\n SDKLogger.log(\"Step completed:\", event.data?.step, \"-> next:\", event.data?.nextStep);\n break;\n\n case \"didit:media_started\":\n SDKLogger.log(\"Media started:\", event.data?.mediaType, \"for step:\", event.data?.step);\n break;\n\n case \"didit:media_captured\":\n SDKLogger.log(\"Media captured for step:\", event.data?.step, \"isAuto:\", event.data?.isAuto);\n break;\n\n case \"didit:document_selected\":\n SDKLogger.log(\"Document selected:\", event.data?.documentType, \"country:\", event.data?.country);\n break;\n\n case \"didit:verification_submitted\":\n SDKLogger.log(\"Verification submitted for step:\", event.data?.step);\n break;\n\n case \"didit:code_sent\":\n SDKLogger.log(\"Code sent via:\", event.data?.channel, \"codeSize:\", event.data?.codeSize);\n break;\n\n case \"didit:code_verified\":\n SDKLogger.log(\"Code verified via:\", event.data?.channel);\n break;\n\n case \"didit:status_updated\":\n SDKLogger.log(\"Status updated:\", event.data?.status, \"step:\", event.data?.step);\n break;\n\n case \"didit:completed\":\n this.handleVerificationCompleted(event);\n break;\n\n case \"didit:cancelled\":\n this.handleVerificationCancelled(event);\n break;\n\n case \"didit:error\":\n this.handleVerificationError(event);\n break;\n\n case \"didit:step_changed\":\n SDKLogger.log(\"Step changed:\", event.data?.step);\n break;\n\n case \"didit:close_request\":\n break;\n }\n }\n\n private handleVerificationCompleted(event: VerificationEvent): void {\n SDKLogger.log(\"Verification completed:\", event.data);\n\n const sessionData = this.buildSessionData(event.data);\n\n if (this._configuration?.closeModalOnComplete) {\n this._modal?.close();\n this.reset();\n }\n\n const result: VerificationResult = {\n type: \"completed\",\n session: sessionData\n };\n\n this.onComplete?.(result);\n }\n\n private handleVerificationCancelled(event: VerificationEvent): void {\n SDKLogger.log(\"Verification cancelled:\", event.data);\n\n const sessionData = this.buildSessionData(event.data);\n\n this._modal?.close();\n this.reset();\n\n const result: VerificationResult = {\n type: \"cancelled\",\n session: sessionData\n };\n\n this.onComplete?.(result);\n }\n\n private handleVerificationError(event: VerificationEvent): void {\n SDKLogger.log(\"Verification error:\", event.data);\n }\n\n private handleError(error: unknown): void {\n SDKLogger.error(\"SDK error:\", error);\n\n let verificationError;\n\n if (error instanceof Error) {\n verificationError = createVerificationError(\"unknown\", error.message);\n } else {\n verificationError = createVerificationError(\"unknown\", \"An unknown error occurred\");\n }\n\n this._errorMessage = verificationError.message;\n this.setState(\"error\");\n\n this._modal?.close();\n this.reset();\n\n const result: VerificationResult = {\n type: \"failed\",\n error: verificationError\n };\n\n this.onComplete?.(result);\n }\n\n private setState(state: DiditSdkState): void {\n const previousState = this._state;\n this._state = state;\n\n if (previousState !== state) {\n SDKLogger.log(\"State changed:\", previousState, \"->\", state);\n this.onStateChange?.(state, this._errorMessage);\n }\n }\n\n private reset(): void {\n this._state = \"idle\";\n this._sessionId = undefined;\n this._url = undefined;\n this._errorMessage = undefined;\n this._configuration = undefined;\n }\n\n private buildSessionData(eventData?: VerificationEvent[\"data\"]): SessionData | undefined {\n const sessionId = eventData?.sessionId || this._sessionId;\n\n if (!sessionId) {\n return undefined;\n }\n\n return {\n sessionId,\n status: (eventData?.status || \"Pending\") as VerificationStatus\n };\n }\n}\n"],"names":["DEFAULT_CONFIG","CSS_CLASSES","SDKLogger","isEnabled","this","_enabled","value","log","args","console","warn","error","createVerificationError","type","customMessage","message","sessionExpired","networkError","cameraAccessDenied","unknown","VerificationModal","constructor","configuration","callbacks","state","isOpen","isLoading","showConfirmation","overlay","container","iframe","loadingEl","confirmOverlay","boundHandleMessage","boundHandleKeydown","embedded","embeddedContainer","modalId","Date","now","Math","random","toString","substr","config","zIndex","showCloseButton","showExitConfirmation","containerElement","document","body","embeddedContainerId","getElementById","injectStyles","styleId","styles","createElement","id","textContent","head","appendChild","createDOM","createEmbeddedDOM","className","setAttribute","innerHTML","closeBtn","addEventListener","handleCloseRequest","handleIframeLoad","querySelector","hideConfirmation","confirmExit","e","target","setupEventListeners","handleMessage","bind","window","handleKeydown","removeEventListeners","removeEventListener","event","origin","URL","hostname","endsWith","isAllowedOrigin","messageData","data","JSON","parse","onMessage","key","preventDefault","src","classList","add","onIframeLoad","onCloseConfirmed","onClose","remove","open","verificationUrl","style","overflow","close","destroy","parentNode","removeChild","DiditSdk","shared","_instance","reset","_state","_configuration","isPresented","_modal","errorMessage","_errorMessage","startVerification","options","loggingEnabled","handleModalClose","handleModalCloseConfirmed","handleVerificationEvent","url","Error","_url","setState","emitInternalEvent","handleError","sessionData","buildSessionData","result","session","onComplete","timestamp","onEvent","step","nextStep","mediaType","isAuto","documentType","country","channel","codeSize","status","handleVerificationCompleted","handleVerificationCancelled","handleVerificationError","closeModalOnComplete","verificationError","previousState","onStateChange","_sessionId","undefined","eventData","sessionId"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,8 +3,6 @@ type VerificationStatus = "Approved" | "Pending" | "Declined";
3
3
  interface SessionData {
4
4
  sessionId: string;
5
5
  status: VerificationStatus;
6
- country?: string;
7
- documentType?: string;
8
6
  }
9
7
  type VerificationErrorType = "sessionExpired" | "networkError" | "cameraAccessDenied" | "unknown";
10
8
  interface VerificationError {
@@ -91,7 +89,7 @@ declare class DiditSdk {
91
89
  private buildSessionData;
92
90
  }
93
91
 
94
- declare const SDK_VERSION = "0.1.3";
92
+ declare const SDK_VERSION = "0.1.4";
95
93
 
96
94
  export { DiditSdk, SDK_VERSION, DiditSdk as default };
97
95
  export type { DiditSdkConfiguration, DiditSdkState, EventCallback, SessionData, StartVerificationOptions, StateChangeCallback, VerificationCallback, VerificationError, VerificationErrorType, VerificationEvent, VerificationEventData, VerificationEventType, VerificationResult, VerificationResultType, VerificationStatus };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@didit-protocol/sdk-web",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Didit Identity Verification SDK for Web Applications",
5
5
  "main": "dist/didit-sdk.cjs.js",
6
6
  "module": "dist/didit-sdk.esm.js",