@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.esm.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":[],"mappings":"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"}
1
+ {"version":3,"file":"didit-sdk.esm.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":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Didit SDK for Web v0.1.3
2
+ * Didit SDK for Web v0.1.5
3
3
  * (c) 2026 Didit
4
4
  * @license MIT
5
5
  */
@@ -24,7 +24,7 @@
24
24
  confirmBox: "didit-confirm-box",
25
25
  embedded: "didit-embedded"
26
26
  };
27
- const SDK_VERSION = "0.1.3";
27
+ const SDK_VERSION = "0.1.4";
28
28
 
29
29
  class SDKLogger {
30
30
  static get isEnabled() {
@@ -153,8 +153,8 @@
153
153
 
154
154
  .${CSS_CLASSES.closeButton} {
155
155
  position: absolute;
156
- top: 12px;
157
- right: 12px;
156
+ top: 4px;
157
+ right: 4px;
158
158
  width: 24px;
159
159
  height: 24px;
160
160
  background: transparent;
@@ -615,7 +615,6 @@
615
615
  this.setState("loading");
616
616
  this.emitInternalEvent("didit:started", {});
617
617
  this._modal?.open(this._url);
618
- this.setState("ready");
619
618
  }
620
619
  catch (error) {
621
620
  this.handleError(error);
@@ -776,9 +775,7 @@
776
775
  }
777
776
  return {
778
777
  sessionId,
779
- status: (eventData?.status || "Pending"),
780
- country: eventData?.country,
781
- documentType: eventData?.documentType
778
+ status: (eventData?.status || "Pending")
782
779
  };
783
780
  }
784
781
  }
@@ -1 +1 @@
1
- {"version":3,"file":"didit-sdk.umd.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":[],"mappings":"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"}
1
+ {"version":3,"file":"didit-sdk.umd.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":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Didit SDK for Web v0.1.3
2
+ * Didit SDK for Web v0.1.5
3
3
  * (c) 2026 Didit
4
4
  * @license MIT
5
5
  */
6
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).DiditSDK={})}(this,function(e){"use strict";const t=9999,n=!0,i=!0,a=!1,s="didit-modal-overlay",o="didit-modal-container",d="didit-verification-iframe",r="didit-close-button",l="didit-loading",c="didit-confirm-overlay",h="didit-confirm-box",m="didit-embedded";class u{static get isEnabled(){return this._enabled}static set isEnabled(e){this._enabled=e}static log(...e){this._enabled&&console.log("[DiditSDK]",...e)}static warn(...e){this._enabled&&console.warn("[DiditSDK]",...e)}static error(...e){this._enabled&&console.error("[DiditSDK]",...e)}}function f(e,t){return{type:e,message:t||{sessionExpired:"Your verification session has expired.",networkError:"A network error occurred. Please try again.",cameraAccessDenied:"Camera access is required for verification.",unknown:t||"An unknown error occurred."}[e]}}u._enabled=!1;class p{constructor(e,a){this.state={isOpen:!1,isLoading:!0,showConfirmation:!1},this.overlay=null,this.container=null,this.iframe=null,this.loadingEl=null,this.confirmOverlay=null,this.boundHandleMessage=null,this.boundHandleKeydown=null,this.embedded=!1,this.embeddedContainer=null,this.modalId=`didit-modal-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,this.config={zIndex:e?.zIndex??t,showCloseButton:e?.showCloseButton??n,showExitConfirmation:e?.showExitConfirmation??i},this.callbacks=a,this.containerElement=e?.containerElement??document.body,this.embedded=e?.embedded??!1,this.embedded&&e?.embeddedContainerId&&(this.embeddedContainer=document.getElementById(e.embeddedContainerId))}injectStyles(){const e="didit-sdk-styles";if(document.getElementById(e))return;const t=document.createElement("style");t.id=e,t.textContent=`\n .${s} {\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 .${s}.active {\n display: flex;\n opacity: 1;\n }\n\n .${o} {\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 .${s}.active .${o} {\n transform: scale(1);\n }\n\n .${d} {\n width: 100%;\n height: 700px;\n border: none;\n display: block;\n }\n\n .${r} {\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 .${r}:hover,\n .${r}:focus {\n background: transparent;\n opacity: 0.5;\n }\n\n .${r} svg {\n stroke: #666;\n stroke-width: 2;\n stroke-linecap: round;\n }\n\n .${l} {\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 .${l}.hidden {\n display: none;\n }\n\n .${l} svg {\n width: 48px;\n height: 48px;\n animation: didit-spin 1s linear infinite;\n }\n\n .${l} circle {\n stroke: #e5e5e5;\n stroke-width: 3;\n fill: none;\n }\n\n .${l} 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 .${c} {\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 .${c}.active {\n display: flex;\n opacity: 1;\n }\n\n .${h} {\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 .${c}.active .${h} {\n transform: scale(1);\n }\n\n .${h} h3 {\n color: #1a1a2e;\n margin: 0 0 0.5rem 0;\n font-size: 1.125rem;\n font-weight: 600;\n }\n\n .${h} 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 .${s} {\n padding: 0;\n }\n\n .${o} {\n max-width: 100%;\n max-height: 100vh;\n border-radius: 0;\n }\n\n .${d} {\n height: 100vh;\n }\n }\n\n .${m} {\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n .${m} .${d} {\n width: 100%;\n height: 100%;\n }\n\n .${m} .${l} {\n border-radius: 0;\n }\n `,document.head.appendChild(t)}createDOM(){if(this.injectStyles(),this.embedded&&this.embeddedContainer)this.createEmbeddedDOM();else{if(this.overlay=document.createElement("div"),this.overlay.id=this.modalId,this.overlay.className=s,this.overlay.setAttribute("role","dialog"),this.overlay.setAttribute("aria-modal","true"),this.overlay.setAttribute("aria-label","Didit Verification"),this.container=document.createElement("div"),this.container.className=o,this.loadingEl=document.createElement("div"),this.loadingEl.className=l,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 ',this.config.showCloseButton){const e=document.createElement("button");e.className=r,e.setAttribute("aria-label","Close verification"),e.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 ',e.addEventListener("click",()=>this.handleCloseRequest()),this.container.appendChild(e)}this.iframe=document.createElement("iframe"),this.iframe.className=d,this.iframe.setAttribute("allow","camera; microphone; fullscreen; autoplay; encrypted-media; geolocation"),this.iframe.setAttribute("title","Didit Verification"),this.iframe.addEventListener("load",()=>this.handleIframeLoad()),this.confirmOverlay=document.createElement("div"),this.confirmOverlay.className=c,this.confirmOverlay.innerHTML=`\n <div class="${h}">\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 `,this.confirmOverlay.querySelector('[data-action="continue"]')?.addEventListener("click",()=>{this.hideConfirmation()}),this.confirmOverlay.querySelector('[data-action="exit"]')?.addEventListener("click",()=>{this.confirmExit()}),this.container.appendChild(this.loadingEl),this.container.appendChild(this.iframe),this.container.appendChild(this.confirmOverlay),this.overlay.appendChild(this.container),this.overlay.addEventListener("click",e=>{e.target===this.overlay&&this.handleCloseRequest()}),this.containerElement.appendChild(this.overlay)}}createEmbeddedDOM(){this.embeddedContainer&&(this.container=document.createElement("div"),this.container.id=this.modalId,this.container.className=m,this.loadingEl=document.createElement("div"),this.loadingEl.className=l,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 ',this.iframe=document.createElement("iframe"),this.iframe.className=d,this.iframe.setAttribute("allow","camera; microphone; fullscreen; autoplay; encrypted-media; geolocation"),this.iframe.setAttribute("title","Didit Verification"),this.iframe.addEventListener("load",()=>this.handleIframeLoad()),this.container.appendChild(this.loadingEl),this.container.appendChild(this.iframe),this.embeddedContainer.appendChild(this.container))}setupEventListeners(){this.boundHandleMessage=this.handleMessage.bind(this),window.addEventListener("message",this.boundHandleMessage),this.boundHandleKeydown=this.handleKeydown.bind(this),document.addEventListener("keydown",this.boundHandleKeydown)}removeEventListeners(){this.boundHandleMessage&&(window.removeEventListener("message",this.boundHandleMessage),this.boundHandleMessage=null),this.boundHandleKeydown&&(document.removeEventListener("keydown",this.boundHandleKeydown),this.boundHandleKeydown=null)}handleMessage(e){if(!function(e){try{return new URL(e).hostname.endsWith(".didit.me")}catch{return!1}}(e.origin))return;let t;u.log("Received postMessage:",e.data);try{t="string"==typeof e.data?JSON.parse(e.data):e.data}catch{return void u.warn("Failed to parse postMessage:",e.data)}"didit:close_request"!==t.type?this.callbacks.onMessage(t):this.handleCloseRequest()}handleKeydown(e){this.state.isOpen&&"Escape"===e.key&&(e.preventDefault(),this.state.showConfirmation?this.hideConfirmation():this.handleCloseRequest())}handleIframeLoad(){this.iframe?.src&&"about:blank"!==this.iframe.src&&(this.state.isLoading=!1,this.loadingEl?.classList.add("hidden"),this.callbacks.onIframeLoad())}handleCloseRequest(){this.config.showExitConfirmation?this.showConfirmation():this.callbacks.onCloseConfirmed()}showConfirmation(){this.state.showConfirmation=!0,this.confirmOverlay?.classList.add("active"),this.callbacks.onClose()}hideConfirmation(){this.state.showConfirmation=!1,this.confirmOverlay?.classList.remove("active")}confirmExit(){this.hideConfirmation(),this.callbacks.onCloseConfirmed()}open(e){this.overlay||this.container||(this.createDOM(),this.setupEventListeners()),u.log("Opening with URL:",e),this.state.isLoading=!0,this.state.showConfirmation=!1,this.loadingEl?.classList.remove("hidden"),this.confirmOverlay?.classList.remove("active"),this.iframe&&(this.iframe.src=e),this.state.isOpen=!0,this.embedded||(this.overlay?.classList.add("active"),document.body.style.overflow="hidden")}close(){u.log("Closing"),this.state.isOpen=!1,this.state.isLoading=!0,this.state.showConfirmation=!1,this.iframe&&(this.iframe.src="about:blank"),this.embedded||(this.overlay?.classList.remove("active"),document.body.style.overflow="")}destroy(){u.log("Destroying"),this.close(),this.removeEventListeners(),this.embedded&&this.container&&this.container.parentNode?this.container.parentNode.removeChild(this.container):this.overlay&&this.overlay.parentNode&&this.overlay.parentNode.removeChild(this.overlay),this.overlay=null,this.container=null,this.iframe=null,this.loadingEl=null,this.confirmOverlay=null}isOpen(){return this.state.isOpen}isLoading(){return this.state.isLoading}}class g{static get shared(){return g._instance||(g._instance=new g),g._instance}static reset(){g._instance&&(g._instance.destroy(),g._instance=null)}get state(){return this._state}get configuration(){return this._configuration}get isPresented(){return this._modal?.isOpen()??!1}get errorMessage(){return this._errorMessage}constructor(){this._state="idle",this._modal=null,u.log("DiditSdk initialized")}async startVerification(e){const t=e.configuration;this._configuration=t,u.isEnabled=t?.loggingEnabled??a,u.log("Starting verification with options:",e),this._modal&&(this._modal.destroy(),this._modal=null),this._modal=new p(t,{onClose:()=>this.handleModalClose(),onCloseConfirmed:()=>this.handleModalCloseConfirmed(),onMessage:e=>this.handleVerificationEvent(e),onIframeLoad:()=>this.handleIframeLoad()});try{const{url:t}=e;if(!t||"string"!=typeof t)throw new Error("Invalid options: url is required");this._url=t,this.setState("loading"),this.emitInternalEvent("didit:started",{}),this._modal?.open(this._url),this.setState("ready")}catch(e){this.handleError(e)}}close(){u.log("Closing verification programmatically"),this.handleModalCloseConfirmed()}destroy(){u.log("Destroying SDK instance"),this._modal?.destroy(),this._modal=null,this.reset()}handleModalClose(){u.log("Modal close requested")}handleModalCloseConfirmed(){u.log("Modal close confirmed");const e=this.buildSessionData();this._modal?.close(),this.reset();const t={type:"cancelled",session:e};this.onComplete?.(t)}handleIframeLoad(){u.log("Iframe loaded")}emitInternalEvent(e,t){const n={type:e,data:t,timestamp:Date.now()};u.log("Emitting internal event:",n),this.onEvent?.(n)}handleVerificationEvent(e){switch(u.log("Verification event:",e),this.onEvent?.(e),e.type){case"didit:ready":u.log("Verification iframe ready");break;case"didit:started":u.log("User started verification");break;case"didit:step_started":u.log("Step started:",e.data?.step);break;case"didit:step_completed":u.log("Step completed:",e.data?.step,"-> next:",e.data?.nextStep);break;case"didit:media_started":u.log("Media started:",e.data?.mediaType,"for step:",e.data?.step);break;case"didit:media_captured":u.log("Media captured for step:",e.data?.step,"isAuto:",e.data?.isAuto);break;case"didit:document_selected":u.log("Document selected:",e.data?.documentType,"country:",e.data?.country);break;case"didit:verification_submitted":u.log("Verification submitted for step:",e.data?.step);break;case"didit:code_sent":u.log("Code sent via:",e.data?.channel,"codeSize:",e.data?.codeSize);break;case"didit:code_verified":u.log("Code verified via:",e.data?.channel);break;case"didit:status_updated":u.log("Status updated:",e.data?.status,"step:",e.data?.step);break;case"didit:completed":this.handleVerificationCompleted(e);break;case"didit:cancelled":this.handleVerificationCancelled(e);break;case"didit:error":this.handleVerificationError(e);break;case"didit:step_changed":u.log("Step changed:",e.data?.step)}}handleVerificationCompleted(e){u.log("Verification completed:",e.data);const t=this.buildSessionData(e.data);this._configuration?.closeModalOnComplete&&(this._modal?.close(),this.reset());const n={type:"completed",session:t};this.onComplete?.(n)}handleVerificationCancelled(e){u.log("Verification cancelled:",e.data);const t=this.buildSessionData(e.data);this._modal?.close(),this.reset();const n={type:"cancelled",session:t};this.onComplete?.(n)}handleVerificationError(e){u.log("Verification error:",e.data)}handleError(e){let t;u.error("SDK error:",e),t=e instanceof Error?f("unknown",e.message):f("unknown","An unknown error occurred"),this._errorMessage=t.message,this.setState("error"),this._modal?.close(),this.reset();const n={type:"failed",error:t};this.onComplete?.(n)}setState(e){const t=this._state;this._state=e,t!==e&&(u.log("State changed:",t,"->",e),this.onStateChange?.(e,this._errorMessage))}reset(){this._state="idle",this._sessionId=void 0,this._url=void 0,this._errorMessage=void 0,this._configuration=void 0}buildSessionData(e){const t=e?.sessionId||this._sessionId;if(t)return{sessionId:t,status:e?.status||"Pending",country:e?.country,documentType:e?.documentType}}}g._instance=null,e.DiditSdk=g,e.SDK_VERSION="0.1.3",e.default=g,Object.defineProperty(e,"__esModule",{value:!0})});
6
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).DiditSDK={})}(this,function(e){"use strict";const t=9999,n=!0,i=!0,a=!1,s="didit-modal-overlay",o="didit-modal-container",d="didit-verification-iframe",r="didit-close-button",l="didit-loading",c="didit-confirm-overlay",h="didit-confirm-box",m="didit-embedded";class u{static get isEnabled(){return this._enabled}static set isEnabled(e){this._enabled=e}static log(...e){this._enabled&&console.log("[DiditSDK]",...e)}static warn(...e){this._enabled&&console.warn("[DiditSDK]",...e)}static error(...e){this._enabled&&console.error("[DiditSDK]",...e)}}function f(e,t){return{type:e,message:t||{sessionExpired:"Your verification session has expired.",networkError:"A network error occurred. Please try again.",cameraAccessDenied:"Camera access is required for verification.",unknown:t||"An unknown error occurred."}[e]}}u._enabled=!1;class p{constructor(e,a){this.state={isOpen:!1,isLoading:!0,showConfirmation:!1},this.overlay=null,this.container=null,this.iframe=null,this.loadingEl=null,this.confirmOverlay=null,this.boundHandleMessage=null,this.boundHandleKeydown=null,this.embedded=!1,this.embeddedContainer=null,this.modalId=`didit-modal-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,this.config={zIndex:e?.zIndex??t,showCloseButton:e?.showCloseButton??n,showExitConfirmation:e?.showExitConfirmation??i},this.callbacks=a,this.containerElement=e?.containerElement??document.body,this.embedded=e?.embedded??!1,this.embedded&&e?.embeddedContainerId&&(this.embeddedContainer=document.getElementById(e.embeddedContainerId))}injectStyles(){const e="didit-sdk-styles";if(document.getElementById(e))return;const t=document.createElement("style");t.id=e,t.textContent=`\n .${s} {\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 .${s}.active {\n display: flex;\n opacity: 1;\n }\n\n .${o} {\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 .${s}.active .${o} {\n transform: scale(1);\n }\n\n .${d} {\n width: 100%;\n height: 700px;\n border: none;\n display: block;\n }\n\n .${r} {\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 .${r}:hover,\n .${r}:focus {\n background: transparent;\n opacity: 0.5;\n }\n\n .${r} svg {\n stroke: #666;\n stroke-width: 2;\n stroke-linecap: round;\n }\n\n .${l} {\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 .${l}.hidden {\n display: none;\n }\n\n .${l} svg {\n width: 48px;\n height: 48px;\n animation: didit-spin 1s linear infinite;\n }\n\n .${l} circle {\n stroke: #e5e5e5;\n stroke-width: 3;\n fill: none;\n }\n\n .${l} 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 .${c} {\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 .${c}.active {\n display: flex;\n opacity: 1;\n }\n\n .${h} {\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 .${c}.active .${h} {\n transform: scale(1);\n }\n\n .${h} h3 {\n color: #1a1a2e;\n margin: 0 0 0.5rem 0;\n font-size: 1.125rem;\n font-weight: 600;\n }\n\n .${h} 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 .${s} {\n padding: 0;\n }\n\n .${o} {\n max-width: 100%;\n max-height: 100vh;\n border-radius: 0;\n }\n\n .${d} {\n height: 100vh;\n }\n }\n\n .${m} {\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n .${m} .${d} {\n width: 100%;\n height: 100%;\n }\n\n .${m} .${l} {\n border-radius: 0;\n }\n `,document.head.appendChild(t)}createDOM(){if(this.injectStyles(),this.embedded&&this.embeddedContainer)this.createEmbeddedDOM();else{if(this.overlay=document.createElement("div"),this.overlay.id=this.modalId,this.overlay.className=s,this.overlay.setAttribute("role","dialog"),this.overlay.setAttribute("aria-modal","true"),this.overlay.setAttribute("aria-label","Didit Verification"),this.container=document.createElement("div"),this.container.className=o,this.loadingEl=document.createElement("div"),this.loadingEl.className=l,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 ',this.config.showCloseButton){const e=document.createElement("button");e.className=r,e.setAttribute("aria-label","Close verification"),e.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 ',e.addEventListener("click",()=>this.handleCloseRequest()),this.container.appendChild(e)}this.iframe=document.createElement("iframe"),this.iframe.className=d,this.iframe.setAttribute("allow","camera; microphone; fullscreen; autoplay; encrypted-media; geolocation"),this.iframe.setAttribute("title","Didit Verification"),this.iframe.addEventListener("load",()=>this.handleIframeLoad()),this.confirmOverlay=document.createElement("div"),this.confirmOverlay.className=c,this.confirmOverlay.innerHTML=`\n <div class="${h}">\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 `,this.confirmOverlay.querySelector('[data-action="continue"]')?.addEventListener("click",()=>{this.hideConfirmation()}),this.confirmOverlay.querySelector('[data-action="exit"]')?.addEventListener("click",()=>{this.confirmExit()}),this.container.appendChild(this.loadingEl),this.container.appendChild(this.iframe),this.container.appendChild(this.confirmOverlay),this.overlay.appendChild(this.container),this.overlay.addEventListener("click",e=>{e.target===this.overlay&&this.handleCloseRequest()}),this.containerElement.appendChild(this.overlay)}}createEmbeddedDOM(){this.embeddedContainer&&(this.container=document.createElement("div"),this.container.id=this.modalId,this.container.className=m,this.loadingEl=document.createElement("div"),this.loadingEl.className=l,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 ',this.iframe=document.createElement("iframe"),this.iframe.className=d,this.iframe.setAttribute("allow","camera; microphone; fullscreen; autoplay; encrypted-media; geolocation"),this.iframe.setAttribute("title","Didit Verification"),this.iframe.addEventListener("load",()=>this.handleIframeLoad()),this.container.appendChild(this.loadingEl),this.container.appendChild(this.iframe),this.embeddedContainer.appendChild(this.container))}setupEventListeners(){this.boundHandleMessage=this.handleMessage.bind(this),window.addEventListener("message",this.boundHandleMessage),this.boundHandleKeydown=this.handleKeydown.bind(this),document.addEventListener("keydown",this.boundHandleKeydown)}removeEventListeners(){this.boundHandleMessage&&(window.removeEventListener("message",this.boundHandleMessage),this.boundHandleMessage=null),this.boundHandleKeydown&&(document.removeEventListener("keydown",this.boundHandleKeydown),this.boundHandleKeydown=null)}handleMessage(e){if(!function(e){try{return new URL(e).hostname.endsWith(".didit.me")}catch{return!1}}(e.origin))return;let t;u.log("Received postMessage:",e.data);try{t="string"==typeof e.data?JSON.parse(e.data):e.data}catch{return void u.warn("Failed to parse postMessage:",e.data)}"didit:close_request"!==t.type?this.callbacks.onMessage(t):this.handleCloseRequest()}handleKeydown(e){this.state.isOpen&&"Escape"===e.key&&(e.preventDefault(),this.state.showConfirmation?this.hideConfirmation():this.handleCloseRequest())}handleIframeLoad(){this.iframe?.src&&"about:blank"!==this.iframe.src&&(this.state.isLoading=!1,this.loadingEl?.classList.add("hidden"),this.callbacks.onIframeLoad())}handleCloseRequest(){this.config.showExitConfirmation?this.showConfirmation():this.callbacks.onCloseConfirmed()}showConfirmation(){this.state.showConfirmation=!0,this.confirmOverlay?.classList.add("active"),this.callbacks.onClose()}hideConfirmation(){this.state.showConfirmation=!1,this.confirmOverlay?.classList.remove("active")}confirmExit(){this.hideConfirmation(),this.callbacks.onCloseConfirmed()}open(e){this.overlay||this.container||(this.createDOM(),this.setupEventListeners()),u.log("Opening with URL:",e),this.state.isLoading=!0,this.state.showConfirmation=!1,this.loadingEl?.classList.remove("hidden"),this.confirmOverlay?.classList.remove("active"),this.iframe&&(this.iframe.src=e),this.state.isOpen=!0,this.embedded||(this.overlay?.classList.add("active"),document.body.style.overflow="hidden")}close(){u.log("Closing"),this.state.isOpen=!1,this.state.isLoading=!0,this.state.showConfirmation=!1,this.iframe&&(this.iframe.src="about:blank"),this.embedded||(this.overlay?.classList.remove("active"),document.body.style.overflow="")}destroy(){u.log("Destroying"),this.close(),this.removeEventListeners(),this.embedded&&this.container&&this.container.parentNode?this.container.parentNode.removeChild(this.container):this.overlay&&this.overlay.parentNode&&this.overlay.parentNode.removeChild(this.overlay),this.overlay=null,this.container=null,this.iframe=null,this.loadingEl=null,this.confirmOverlay=null}isOpen(){return this.state.isOpen}isLoading(){return this.state.isLoading}}class g{static get shared(){return g._instance||(g._instance=new g),g._instance}static reset(){g._instance&&(g._instance.destroy(),g._instance=null)}get state(){return this._state}get configuration(){return this._configuration}get isPresented(){return this._modal?.isOpen()??!1}get errorMessage(){return this._errorMessage}constructor(){this._state="idle",this._modal=null,u.log("DiditSdk initialized")}async startVerification(e){const t=e.configuration;this._configuration=t,u.isEnabled=t?.loggingEnabled??a,u.log("Starting verification with options:",e),this._modal&&(this._modal.destroy(),this._modal=null),this._modal=new p(t,{onClose:()=>this.handleModalClose(),onCloseConfirmed:()=>this.handleModalCloseConfirmed(),onMessage:e=>this.handleVerificationEvent(e),onIframeLoad:()=>this.handleIframeLoad()});try{const{url:t}=e;if(!t||"string"!=typeof t)throw new Error("Invalid options: url is required");this._url=t,this.setState("loading"),this.emitInternalEvent("didit:started",{}),this._modal?.open(this._url)}catch(e){this.handleError(e)}}close(){u.log("Closing verification programmatically"),this.handleModalCloseConfirmed()}destroy(){u.log("Destroying SDK instance"),this._modal?.destroy(),this._modal=null,this.reset()}handleModalClose(){u.log("Modal close requested")}handleModalCloseConfirmed(){u.log("Modal close confirmed");const e=this.buildSessionData();this._modal?.close(),this.reset();const t={type:"cancelled",session:e};this.onComplete?.(t)}handleIframeLoad(){u.log("Iframe loaded")}emitInternalEvent(e,t){const n={type:e,data:t,timestamp:Date.now()};u.log("Emitting internal event:",n),this.onEvent?.(n)}handleVerificationEvent(e){switch(u.log("Verification event:",e),this.onEvent?.(e),e.type){case"didit:ready":u.log("Verification iframe ready");break;case"didit:started":u.log("User started verification");break;case"didit:step_started":u.log("Step started:",e.data?.step);break;case"didit:step_completed":u.log("Step completed:",e.data?.step,"-> next:",e.data?.nextStep);break;case"didit:media_started":u.log("Media started:",e.data?.mediaType,"for step:",e.data?.step);break;case"didit:media_captured":u.log("Media captured for step:",e.data?.step,"isAuto:",e.data?.isAuto);break;case"didit:document_selected":u.log("Document selected:",e.data?.documentType,"country:",e.data?.country);break;case"didit:verification_submitted":u.log("Verification submitted for step:",e.data?.step);break;case"didit:code_sent":u.log("Code sent via:",e.data?.channel,"codeSize:",e.data?.codeSize);break;case"didit:code_verified":u.log("Code verified via:",e.data?.channel);break;case"didit:status_updated":u.log("Status updated:",e.data?.status,"step:",e.data?.step);break;case"didit:completed":this.handleVerificationCompleted(e);break;case"didit:cancelled":this.handleVerificationCancelled(e);break;case"didit:error":this.handleVerificationError(e);break;case"didit:step_changed":u.log("Step changed:",e.data?.step)}}handleVerificationCompleted(e){u.log("Verification completed:",e.data);const t=this.buildSessionData(e.data);this._configuration?.closeModalOnComplete&&(this._modal?.close(),this.reset());const n={type:"completed",session:t};this.onComplete?.(n)}handleVerificationCancelled(e){u.log("Verification cancelled:",e.data);const t=this.buildSessionData(e.data);this._modal?.close(),this.reset();const n={type:"cancelled",session:t};this.onComplete?.(n)}handleVerificationError(e){u.log("Verification error:",e.data)}handleError(e){let t;u.error("SDK error:",e),t=e instanceof Error?f("unknown",e.message):f("unknown","An unknown error occurred"),this._errorMessage=t.message,this.setState("error"),this._modal?.close(),this.reset();const n={type:"failed",error:t};this.onComplete?.(n)}setState(e){const t=this._state;this._state=e,t!==e&&(u.log("State changed:",t,"->",e),this.onStateChange?.(e,this._errorMessage))}reset(){this._state="idle",this._sessionId=void 0,this._url=void 0,this._errorMessage=void 0,this._configuration=void 0}buildSessionData(e){const t=e?.sessionId||this._sessionId;if(t)return{sessionId:t,status:e?.status||"Pending"}}}g._instance=null,e.DiditSdk=g,e.SDK_VERSION="0.1.4",e.default=g,Object.defineProperty(e,"__esModule",{value:!0})});
7
7
  //# sourceMappingURL=didit-sdk.umd.min.js.map