@didit-protocol/sdk-web 0.1.0

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.
@@ -0,0 +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} 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} as const;\n\nexport const SDK_VERSION = \"0.1.0\";\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 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 }\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\n document.head.appendChild(styles);\n }\n\n private createDOM(): void {\n this.injectStyles();\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 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) {\n this.createDOM();\n this.setupEventListeners();\n }\n\n SDKLogger.log(\"Opening modal 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 this.overlay?.classList.add(\"active\");\n\n document.body.style.overflow = \"hidden\";\n }\n\n close(): void {\n SDKLogger.log(\"Closing modal\");\n\n this.state.isOpen = false;\n this.state.isLoading = true;\n this.state.showConfirmation = false;\n\n this.overlay?.classList.remove(\"active\");\n\n if (this.iframe) {\n this.iframe.src = \"about:blank\";\n }\n\n document.body.style.overflow = \"\";\n }\n\n destroy(): void {\n SDKLogger.log(\"Destroying modal\");\n\n this.close();\n this.removeEventListeners();\n\n 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\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 this.emitInternalEvent(\"didit:ready\", {\n sessionId: this._sessionId\n });\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 this._modal?.close();\n this.reset();\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 const sessionData = this.buildSessionData(event.data);\n const error = createVerificationError(\"unknown\", event.data?.error);\n\n this._modal?.close();\n this.reset();\n\n const result: VerificationResult = {\n type: \"failed\",\n session: sessionData,\n error\n };\n\n this.onComplete?.(result);\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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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Didit SDK for Web v0.1.0
3
+ * (c) 2026 Didit
4
+ * @license MIT
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,s=!1,a="didit-modal-overlay",o="didit-modal-container",r="didit-verification-iframe",d="didit-close-button",l="didit-loading",c="didit-confirm-overlay",h="didit-confirm-box";class m{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 u(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]}}m._enabled=!1;class f{constructor(e,s){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.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=s,this.containerElement=e?.containerElement??document.body}injectStyles(){const e="didit-sdk-styles";if(document.getElementById(e))return;const t=document.createElement("style");t.id=e,t.textContent=`\n .${a} {\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 .${a}.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 .${a}.active .${o} {\n transform: scale(1);\n }\n\n .${r} {\n width: 100%;\n height: 700px;\n border: none;\n display: block;\n }\n\n .${d} {\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 .${d}:hover,\n .${d}:focus {\n background: transparent;\n opacity: 0.5;\n }\n\n .${d} 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 .${a} {\n padding: 0;\n }\n\n .${o} {\n max-width: 100%;\n max-height: 100vh;\n border-radius: 0;\n }\n\n .${r} {\n height: 100vh;\n }\n }\n `,document.head.appendChild(t)}createDOM(){if(this.injectStyles(),this.overlay=document.createElement("div"),this.overlay.id=this.modalId,this.overlay.className=a,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=d,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=r,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)}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;m.log("Received postMessage:",e.data);try{t="string"==typeof e.data?JSON.parse(e.data):e.data}catch{return void m.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.createDOM(),this.setupEventListeners()),m.log("Opening modal 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.overlay?.classList.add("active"),document.body.style.overflow="hidden"}close(){m.log("Closing modal"),this.state.isOpen=!1,this.state.isLoading=!0,this.state.showConfirmation=!1,this.overlay?.classList.remove("active"),this.iframe&&(this.iframe.src="about:blank"),document.body.style.overflow=""}destroy(){m.log("Destroying modal"),this.close(),this.removeEventListeners(),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 p{static get shared(){return p._instance||(p._instance=new p),p._instance}static reset(){p._instance&&(p._instance.destroy(),p._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,m.log("DiditSdk initialized")}async startVerification(e){const t=e.configuration;this._configuration=t,m.isEnabled=t?.loggingEnabled??s,m.log("Starting verification with options:",e),this._modal=new f(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(){m.log("Closing verification programmatically"),this.handleModalCloseConfirmed()}destroy(){m.log("Destroying SDK instance"),this._modal?.destroy(),this._modal=null,this.reset()}handleModalClose(){m.log("Modal close requested")}handleModalCloseConfirmed(){m.log("Modal close confirmed");const e=this.buildSessionData();this._modal?.close(),this.reset();const t={type:"cancelled",session:e};this.onComplete?.(t)}handleIframeLoad(){m.log("Iframe loaded"),this.emitInternalEvent("didit:ready",{sessionId:this._sessionId})}emitInternalEvent(e,t){const n={type:e,data:t,timestamp:Date.now()};m.log("Emitting internal event:",n),this.onEvent?.(n)}handleVerificationEvent(e){switch(m.log("Verification event:",e),this.onEvent?.(e),e.type){case"didit:ready":m.log("Verification iframe ready");break;case"didit:started":m.log("User started verification");break;case"didit:step_started":m.log("Step started:",e.data?.step);break;case"didit:step_completed":m.log("Step completed:",e.data?.step,"-> next:",e.data?.nextStep);break;case"didit:media_started":m.log("Media started:",e.data?.mediaType,"for step:",e.data?.step);break;case"didit:media_captured":m.log("Media captured for step:",e.data?.step,"isAuto:",e.data?.isAuto);break;case"didit:document_selected":m.log("Document selected:",e.data?.documentType,"country:",e.data?.country);break;case"didit:verification_submitted":m.log("Verification submitted for step:",e.data?.step);break;case"didit:code_sent":m.log("Code sent via:",e.data?.channel,"codeSize:",e.data?.codeSize);break;case"didit:code_verified":m.log("Code verified via:",e.data?.channel);break;case"didit:status_updated":m.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":m.log("Step changed:",e.data?.step)}}handleVerificationCompleted(e){m.log("Verification completed:",e.data);const t=this.buildSessionData(e.data);this._modal?.close(),this.reset();const n={type:"completed",session:t};this.onComplete?.(n)}handleVerificationCancelled(e){m.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){m.log("Verification error:",e.data);const t=this.buildSessionData(e.data),n=u("unknown",e.data?.error);this._modal?.close(),this.reset();const i={type:"failed",session:t,error:n};this.onComplete?.(i)}handleError(e){let t;m.error("SDK error:",e),t=e instanceof Error?u("unknown",e.message):u("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&&(m.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}}}p._instance=null,e.DiditSdk=p,e.SDK_VERSION="0.1.0",e.default=p,Object.defineProperty(e,"__esModule",{value:!0})});
7
+ //# sourceMappingURL=didit-sdk.umd.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"didit-sdk.umd.min.js","sources":["../src/constants.ts","../src/utils.ts","../src/modal.ts","../src/DiditSdk.ts"],"sourcesContent":["export const DEFAULT_CONFIG = {\n zIndex: 9999,\n showCloseButton: true,\n showExitConfirmation: true,\n loggingEnabled: false,\n} 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} as const;\n\nexport const SDK_VERSION = \"0.1.0\";\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 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 }\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\n document.head.appendChild(styles);\n }\n\n private createDOM(): void {\n this.injectStyles();\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 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) {\n this.createDOM();\n this.setupEventListeners();\n }\n\n SDKLogger.log(\"Opening modal 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 this.overlay?.classList.add(\"active\");\n\n document.body.style.overflow = \"hidden\";\n }\n\n close(): void {\n SDKLogger.log(\"Closing modal\");\n\n this.state.isOpen = false;\n this.state.isLoading = true;\n this.state.showConfirmation = false;\n\n this.overlay?.classList.remove(\"active\");\n\n if (this.iframe) {\n this.iframe.src = \"about:blank\";\n }\n\n document.body.style.overflow = \"\";\n }\n\n destroy(): void {\n SDKLogger.log(\"Destroying modal\");\n\n this.close();\n this.removeEventListeners();\n\n 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\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 this.emitInternalEvent(\"didit:ready\", {\n sessionId: this._sessionId\n });\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 this._modal?.close();\n this.reset();\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 const sessionData = this.buildSessionData(event.data);\n const error = createVerificationError(\"unknown\", event.data?.error);\n\n this._modal?.close();\n this.reset();\n\n const result: VerificationResult = {\n type: \"failed\",\n session: sessionData,\n error\n };\n\n this.onComplete?.(result);\n }\n\n private handleError(error: unknown): void {\n SDKLogger.error(\"SDK error:\", error);\n\n let verificationError;\n\n if (error instanceof Error) {\n verificationError = createVerificationError(\"unknown\", error.message);\n } else {\n verificationError = createVerificationError(\"unknown\", \"An unknown error occurred\");\n }\n\n this._errorMessage = verificationError.message;\n this.setState(\"error\");\n\n this._modal?.close();\n this.reset();\n\n const result: VerificationResult = {\n type: \"failed\",\n error: verificationError\n };\n\n this.onComplete?.(result);\n }\n\n private setState(state: DiditSdkState): void {\n const previousState = this._state;\n this._state = state;\n\n if (previousState !== state) {\n SDKLogger.log(\"State changed:\", previousState, \"->\", state);\n this.onStateChange?.(state, this._errorMessage);\n }\n }\n\n private reset(): void {\n this._state = \"idle\";\n this._sessionId = undefined;\n this._url = undefined;\n this._errorMessage = undefined;\n this._configuration = undefined;\n }\n\n private buildSessionData(eventData?: VerificationEvent[\"data\"]): SessionData | undefined {\n const sessionId = eventData?.sessionId || this._sessionId;\n\n if (!sessionId) {\n return undefined;\n }\n\n return {\n sessionId,\n status: (eventData?.status || \"Pending\") as VerificationStatus,\n country: eventData?.country,\n documentType: eventData?.documentType\n };\n }\n}\n"],"names":["DEFAULT_CONFIG","CSS_CLASSES","SDKLogger","isEnabled","this","_enabled","value","log","args","console","warn","error","createVerificationError","type","customMessage","message","sessionExpired","networkError","cameraAccessDenied","unknown","VerificationModal","constructor","configuration","callbacks","state","isOpen","isLoading","showConfirmation","overlay","container","iframe","loadingEl","confirmOverlay","boundHandleMessage","boundHandleKeydown","modalId","Date","now","Math","random","toString","substr","config","zIndex","showCloseButton","showExitConfirmation","containerElement","document","body","injectStyles","styleId","getElementById","styles","createElement","id","textContent","head","appendChild","createDOM","className","setAttribute","innerHTML","closeBtn","addEventListener","handleCloseRequest","handleIframeLoad","querySelector","hideConfirmation","confirmExit","e","target","setupEventListeners","handleMessage","bind","window","handleKeydown","removeEventListeners","removeEventListener","event","origin","URL","hostname","endsWith","isAllowedOrigin","messageData","data","JSON","parse","onMessage","key","preventDefault","src","classList","add","onIframeLoad","onCloseConfirmed","onClose","remove","open","verificationUrl","style","overflow","close","destroy","parentNode","removeChild","DiditSdk","shared","_instance","reset","_state","_configuration","isPresented","_modal","errorMessage","_errorMessage","startVerification","options","loggingEnabled","handleModalClose","handleModalCloseConfirmed","handleVerificationEvent","url","Error","_url","setState","emitInternalEvent","handleError","sessionData","buildSessionData","result","session","onComplete","sessionId","_sessionId","timestamp","onEvent","step","nextStep","mediaType","isAuto","documentType","country","channel","codeSize","status","handleVerificationCompleted","handleVerificationCancelled","handleVerificationError","verificationError","previousState","onStateChange","undefined","eventData"],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ type DiditSdkState = "idle" | "loading" | "ready" | "error";
2
+ type VerificationStatus = "Approved" | "Pending" | "Declined";
3
+ interface SessionData {
4
+ sessionId: string;
5
+ status: VerificationStatus;
6
+ country?: string;
7
+ documentType?: string;
8
+ }
9
+ type VerificationErrorType = "sessionExpired" | "networkError" | "cameraAccessDenied" | "unknown";
10
+ interface VerificationError {
11
+ type: VerificationErrorType;
12
+ message: string;
13
+ }
14
+ type VerificationResultType = "completed" | "cancelled" | "failed";
15
+ interface VerificationResult {
16
+ type: VerificationResultType;
17
+ session?: SessionData;
18
+ error?: VerificationError;
19
+ }
20
+ interface DiditSdkConfiguration {
21
+ loggingEnabled?: boolean;
22
+ containerElement?: HTMLElement;
23
+ zIndex?: number;
24
+ showCloseButton?: boolean;
25
+ showExitConfirmation?: boolean;
26
+ callbackUrl?: string;
27
+ }
28
+ interface StartVerificationOptions {
29
+ url: string;
30
+ configuration?: DiditSdkConfiguration;
31
+ }
32
+ type VerificationEventType = "didit:ready" | "didit:started" | "didit:step_started" | "didit:step_completed" | "didit:media_started" | "didit:media_captured" | "didit:document_selected" | "didit:verification_submitted" | "didit:code_sent" | "didit:code_verified" | "didit:status_updated" | "didit:completed" | "didit:cancelled" | "didit:error" | "didit:step_changed" | "didit:close_request";
33
+ interface VerificationEventData {
34
+ sessionId?: string;
35
+ status?: string;
36
+ step?: string;
37
+ nextStep?: string;
38
+ previousStep?: string;
39
+ error?: string;
40
+ country?: string;
41
+ documentType?: string;
42
+ isAuto?: boolean;
43
+ mediaType?: string;
44
+ channel?: string;
45
+ codeSize?: number;
46
+ [key: string]: unknown;
47
+ }
48
+ interface VerificationEvent {
49
+ type: VerificationEventType;
50
+ data?: VerificationEventData;
51
+ timestamp?: number;
52
+ }
53
+ type VerificationCallback = (result: VerificationResult) => void;
54
+ type StateChangeCallback = (state: DiditSdkState, error?: string) => void;
55
+ type EventCallback = (event: VerificationEvent) => void;
56
+
57
+ declare class DiditSdk {
58
+ private static _instance;
59
+ static get shared(): DiditSdk;
60
+ static reset(): void;
61
+ private _state;
62
+ private _configuration;
63
+ private _sessionId;
64
+ private _url;
65
+ private _modal;
66
+ private _errorMessage;
67
+ onComplete: VerificationCallback | undefined;
68
+ onStateChange: StateChangeCallback | undefined;
69
+ onEvent: EventCallback | undefined;
70
+ get state(): DiditSdkState;
71
+ get configuration(): DiditSdkConfiguration | undefined;
72
+ get isPresented(): boolean;
73
+ get errorMessage(): string | undefined;
74
+ private constructor();
75
+ startVerification(options: StartVerificationOptions): Promise<void>;
76
+ close(): void;
77
+ destroy(): void;
78
+ private handleModalClose;
79
+ private handleModalCloseConfirmed;
80
+ private handleIframeLoad;
81
+ private emitInternalEvent;
82
+ private handleVerificationEvent;
83
+ private handleVerificationCompleted;
84
+ private handleVerificationCancelled;
85
+ private handleVerificationError;
86
+ private handleError;
87
+ private setState;
88
+ private reset;
89
+ private buildSessionData;
90
+ }
91
+
92
+ declare const SDK_VERSION = "0.1.0";
93
+
94
+ export { DiditSdk, SDK_VERSION, DiditSdk as default };
95
+ export type { DiditSdkConfiguration, DiditSdkState, EventCallback, SessionData, StartVerificationOptions, StateChangeCallback, VerificationCallback, VerificationError, VerificationErrorType, VerificationEvent, VerificationEventData, VerificationEventType, VerificationResult, VerificationResultType, VerificationStatus };
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@didit-protocol/sdk-web",
3
+ "version": "0.1.0",
4
+ "description": "Didit Identity Verification SDK for Web Applications",
5
+ "main": "dist/didit-sdk.cjs.js",
6
+ "module": "dist/didit-sdk.esm.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/didit-sdk.esm.js",
11
+ "require": "./dist/didit-sdk.cjs.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "scripts": {
19
+ "build": "rollup -c",
20
+ "build:watch": "rollup -c -w",
21
+ "dev": "node examples/server.js",
22
+ "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
23
+ "test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch",
24
+ "typecheck": "tsc --noEmit",
25
+ "clean": "rm -rf dist",
26
+ "prepublishOnly": "npm run clean && npm run build"
27
+ },
28
+ "keywords": [
29
+ "didit",
30
+ "kyc",
31
+ "identity-verification",
32
+ "verification",
33
+ "iframe",
34
+ "sdk"
35
+ ],
36
+ "author": "Didit",
37
+ "license": "MIT",
38
+ "type": "module",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/didit-protocol/sdk-web.git"
42
+ },
43
+ "homepage": "https://docs.didit.me",
44
+ "devDependencies": {
45
+ "@rollup/plugin-node-resolve": "^15.2.3",
46
+ "@rollup/plugin-typescript": "^11.1.6",
47
+ "@types/jest": "^29.5.12",
48
+ "jest": "^29.7.0",
49
+ "jest-environment-jsdom": "^29.7.0",
50
+ "rollup": "^4.9.6",
51
+ "rollup-plugin-dts": "^6.1.0",
52
+ "@rollup/plugin-terser": "^0.4.4",
53
+ "ts-jest": "^29.1.2",
54
+ "tslib": "^2.6.2",
55
+ "typescript": "^5.3.3"
56
+ },
57
+ "engines": {
58
+ "node": ">=16.0.0"
59
+ }
60
+ }