{"version":3,"file":"idcheckio-sdk.cjs.development.js","sources":["../src/utils/index.ts","../src/utils/platform.ts","../src/index.ts"],"sourcesContent":["const PATH_DELIMTER = '/';\n\nexport function joinPaths(path1: string, path2: string) {\n if (!path1 && !path2) {\n return '';\n }\n if (path1 && !path2) {\n return path1;\n }\n if (!path1 && path2) {\n return path2;\n }\n if (path1.endsWith(PATH_DELIMTER) && path2.startsWith(PATH_DELIMTER)) {\n return `${path1}${path2.substring(1)}`;\n }\n if (!path1.endsWith(PATH_DELIMTER) && !path2.startsWith(PATH_DELIMTER)) {\n return `${path1}${PATH_DELIMTER}${path2}`;\n }\n return `${path1}${path2}`;\n}\n","import { InitParams, OnboardingData, Platform } from '../schema';\nimport { joinPaths } from './index';\n\nconst DEFAULT_BRAND = 'path';\n\nfunction getPlatformUrl(platform: Platform): string {\n if (platform) {\n if (platform.toUpperCase() === 'DEMO') {\n return 'https://sdkweb-test.idcheck.io/v2';\n } else {\n return platform;\n }\n }\n return 'https://sdkweb.idcheck.io/v2';\n}\n\nfunction extractFromUrl(url: string): OnboardingData {\n const regex = /(.*)\\/(.*)\\/(.*)/;\n const match = url.match(regex);\n return {\n platformUrl: match[1],\n brand: match[2],\n uid: match[3],\n };\n}\n\nexport function getFrameUrl(params: InitParams, platform?: Platform) {\n const extraParams = '?iframe=true';\n if ('url' in params) {\n return `${params.url}${extraParams}`;\n } else {\n const platformUrl = getPlatformUrl(platform);\n return joinPaths(\n platformUrl,\n `/${DEFAULT_BRAND}/${params.uid}${extraParams}`\n );\n }\n}\n\nexport function extractOnboardingData(\n params: InitParams,\n platform?: Platform\n): OnboardingData {\n if ('url' in params) {\n return extractFromUrl(params.url);\n } else {\n return {\n platformUrl: getPlatformUrl(platform),\n uid: params.uid,\n brand: DEFAULT_BRAND,\n };\n }\n}\n","import { joinPaths } from './utils';\nimport {\n Configuration,\n InjectionMode,\n InitParams,\n EventHandlers,\n EventHandler,\n} from './schema';\nimport { extractOnboardingData, getFrameUrl } from './utils/platform';\n\nconst IFRAME_READY_TIMEOUT = 30000; // ms\n\ndeclare const IdCheckIoCore: any;\n\nlet registeredListener;\n\nfunction injectScript(id: string, src: string) {\n return new Promise((resolve, reject) => {\n const head = document.getElementsByTagName('head')[0];\n if (document.getElementById(id)) {\n // the script has already been injected\n resolve();\n return;\n }\n const script = document.createElement('script');\n script.id = id;\n script.async = true;\n script.src = src;\n script.onload = () => resolve();\n script.addEventListener('error', () => reject('Error loading script.'));\n script.addEventListener('abort', () => reject('Script loading aborted.'));\n head.appendChild(script);\n });\n}\n\n/**\n * Wait for iframe.contentWindow to be initialized.\n * iframe.contentWindow is only initialized once the webpage has been fully\n * loaded in the iframe. So, we need to wait for it to be available before\n * we can be able to call the postMessage() API.\n * @param iframe: the iframe element\n * @param startTs: timer start duration\n * @returns {Promise}\n */\nfunction waitForIframeReady(\n iframe: HTMLIFrameElement,\n startTs = new Date().getTime()\n): Promise {\n return new Promise((resolve, reject) => {\n if (iframe.contentWindow) {\n resolve();\n } else if (new Date().getTime() - startTs > IFRAME_READY_TIMEOUT) {\n reject(`iframe ready timeout.`);\n } else {\n setTimeout(() => {\n waitForIframeReady(iframe, startTs).then(resolve).catch(reject);\n }, 10);\n }\n });\n}\n\nclass ScriptLoader {\n private readonly cdnUrl: string;\n\n constructor(platformUrl: string) {\n this.cdnUrl = joinPaths(platformUrl, '/assets/js');\n }\n\n injectConfig() {\n return injectScript('idcheckio-sdk-config', `${this.cdnUrl}/config.js`);\n }\n\n injectCore() {\n return injectScript(\n 'idcheckio-sdk-core',\n `${this.cdnUrl}/idcheckio-sdk-core-stable.js`\n );\n }\n\n injectLang(lang) {\n return injectScript(\n `axt-idcheckio-i18n-${lang}`,\n `${this.cdnUrl}/i18n-${lang}.min.js`\n );\n }\n\n injectWidget(id) {\n switch (id) {\n case 'LIVENESS':\n return injectScript(\n 'axt-liveness-script',\n `${this.cdnUrl}/axt-liveness-stable.js`\n );\n case 'CAMERA_CAPTURE':\n return injectScript(\n 'axt-camera-capture-script',\n `${this.cdnUrl}/axt-camera-capture.js`\n );\n default:\n return new Promise((resolve, reject) => {\n reject(new Error(`Cannot find widget ${id}.`));\n });\n }\n }\n}\n\nclass IdCheckIo {\n private readonly config: Configuration;\n private readonly eventHandlers: EventHandlers;\n private readonly mode: InjectionMode;\n private scriptLoader?: ScriptLoader;\n private iframe?: HTMLIFrameElement;\n private onReadyCallback?: EventHandler;\n private instance: any;\n\n constructor(config: Configuration) {\n this.config = config || {};\n this.eventHandlers = {};\n this.mode = this.config.mode\n ? (this.config.mode.toUpperCase() as InjectionMode)\n : 'IFRAME';\n // fix iframe listeners when multiple instance\n // remove previous listener\n this.handleMessage = this.handleMessage.bind(this);\n if (registeredListener) {\n window.removeEventListener('message', registeredListener);\n }\n }\n\n public on(eventName: string, callback: EventHandler) {\n if (eventName === 'ready') {\n this.onReadyCallback = callback;\n } else if (this.instance) {\n this.instance.on(eventName, callback);\n } else {\n this.eventHandlers[eventName] = callback;\n }\n }\n\n /**\n * Initialize sdkweb element\n * @param { element, uid } onboarding parameters\n */\n public init(params: InitParams) {\n if (this.mode === 'DOM') {\n this.initLibrary(params);\n } else {\n this.initFrame(params);\n }\n }\n\n private initFrame(params: InitParams) {\n // listen for iframe messages\n this.mapFrameEvents();\n // create an iframe\n this.iframe = document.createElement('iframe');\n this.iframe.setAttribute('src', getFrameUrl(params, this.config.platform));\n this.iframe.setAttribute(\n 'sandbox',\n 'allow-scripts allow-same-origin allow-top-navigation allow-modals allow-popups'\n );\n this.iframe.setAttribute('allow', 'camera; microphone;');\n this.iframe.setAttribute('width', '100%');\n this.iframe.setAttribute('height', '100%');\n this.iframe.setAttribute('border', 'none');\n this.iframe.style.border = 'none';\n const elmt =\n typeof params.element === 'string'\n ? document.querySelector(params.element)\n : params.element;\n elmt.innerHTML = '';\n elmt.appendChild(this.iframe);\n }\n\n private mapFrameEvents() {\n registeredListener = this.handleMessage;\n window.addEventListener('message', registeredListener);\n }\n private handleMessage(event) {\n if (event && event.data && event.data.idcheckio) {\n if (event.data.idcheckio.event === 'IFRAME_READY' && this.iframe) {\n // send configuration to iframe\n const msg = {\n idcheckio: {\n appId: 'Sdk-Web',\n resourceType: 'ONBOARDING',\n event: 'IFRAME_CONFIGURATION',\n data: { ...this.config },\n },\n };\n waitForIframeReady(this.iframe).then(() =>\n this.iframe.contentWindow.postMessage(msg, '*')\n );\n } else {\n // trigger event callbacks\n const {\n idcheckio: { event: type, ...data },\n } = event.data;\n const callback = this.eventHandlers[type];\n if (callback) {\n callback(data);\n }\n }\n }\n }\n\n private initLibrary(params: InitParams) {\n const { uid, platformUrl } = extractOnboardingData(\n params,\n this.config.platform\n );\n this.scriptLoader = new ScriptLoader(platformUrl);\n this.scriptLoader.injectConfig().then(() => {\n const remoteConfig = (window as any).IdCheckIoConfig;\n this.scriptLoader.injectCore().then(() => {\n this.instance = new IdCheckIoCore({\n ...remoteConfig,\n ...this.config,\n });\n Object.keys(this.eventHandlers).forEach((key) => {\n this.instance.on(key, this.eventHandlers[key]);\n });\n this.instance.onLoadWidget((id) => this.scriptLoader.injectWidget(id));\n this.instance.onLoadLanguage((lang) =>\n this.scriptLoader.injectLang(lang)\n );\n this.instance.init({ uid, element: params.element });\n if (this.onReadyCallback) {\n this.onReadyCallback();\n }\n });\n });\n }\n}\n\nexport default IdCheckIo;\n"],"names":["PATH_DELIMTER","joinPaths","path1","path2","endsWith","startsWith","substring","DEFAULT_BRAND","getPlatformUrl","platform","toUpperCase","extractFromUrl","url","regex","match","platformUrl","brand","uid","getFrameUrl","params","extraParams","extractOnboardingData","IFRAME_READY_TIMEOUT","registeredListener","injectScript","id","src","Promise","resolve","reject","head","document","getElementsByTagName","getElementById","script","createElement","async","onload","addEventListener","appendChild","waitForIframeReady","iframe","startTs","Date","getTime","contentWindow","setTimeout","then","ScriptLoader","cdnUrl","lang","Error","IdCheckIo","config","eventHandlers","mode","handleMessage","bind","window","removeEventListener","eventName","callback","onReadyCallback","instance","on","initLibrary","initFrame","mapFrameEvents","setAttribute","style","border","elmt","element","querySelector","innerHTML","event","data","idcheckio","msg","appId","resourceType","postMessage","type","scriptLoader","injectConfig","remoteConfig","IdCheckIoConfig","injectCore","IdCheckIoCore","Object","keys","forEach","key","onLoadWidget","injectWidget","onLoadLanguage","injectLang","init"],"mappings":"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"}