@frankieone/one-sdk 0.2.4-alpha → 0.3.0-alpha

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.
Files changed (63) hide show
  1. package/README.md +1 -1
  2. package/dist/commit.txt +1 -1
  3. package/dist/esm/modules/biometrics/types/events.d.ts +9 -1
  4. package/dist/esm/modules/biometrics/wrappers/OcrLabs/index.js +89 -50
  5. package/dist/esm/modules/biometrics/wrappers/OcrLabs/index.js.map +1 -1
  6. package/dist/esm/modules/biometrics/wrappers/dummy-biometrics/green-tick-svg.js +1 -0
  7. package/dist/esm/modules/biometrics/wrappers/dummy-biometrics/green-tick-svg.js.map +1 -1
  8. package/dist/esm/modules/biometrics/wrappers/dummy-biometrics/index.js +13 -11
  9. package/dist/esm/modules/biometrics/wrappers/dummy-biometrics/index.js.map +1 -1
  10. package/dist/esm/modules/common/shared/models/Document.d.ts +9 -10
  11. package/dist/esm/modules/common/shared/models/Document.js.map +1 -1
  12. package/dist/esm/modules/common/types/Configuration.d.ts +1 -0
  13. package/dist/esm/modules/frankie-client/DummyFrankieApiClient.d.ts +1 -0
  14. package/dist/esm/modules/frankie-client/DummyFrankieApiClient.js +17 -15
  15. package/dist/esm/modules/frankie-client/DummyFrankieApiClient.js.map +1 -1
  16. package/dist/esm/modules/frankie-client/clients/IDVClient.d.ts +8 -2
  17. package/dist/esm/modules/frankie-client/clients/IDVClient.js +4 -2
  18. package/dist/esm/modules/frankie-client/clients/IDVClient.js.map +1 -1
  19. package/dist/esm/modules/frankie-client/clients/OCRClient.d.ts +2 -1
  20. package/dist/esm/modules/frankie-client/clients/OCRClient.js +1 -3
  21. package/dist/esm/modules/frankie-client/clients/OCRClient.js.map +1 -1
  22. package/dist/esm/modules/frankie-client/index.js +19 -14
  23. package/dist/esm/modules/frankie-client/index.js.map +1 -1
  24. package/dist/esm/modules/frankie-client/mocks/biometrics/{idvSubmissoin.d.ts → idvSubmission.d.ts} +1 -0
  25. package/dist/esm/modules/frankie-client/mocks/biometrics/{idvSubmissoin.js → idvSubmission.js} +13 -1
  26. package/dist/esm/modules/frankie-client/mocks/biometrics/{idvSubmissoin.js.map → idvSubmission.js.map} +1 -1
  27. package/dist/esm/modules/frankie-client/mocks/index.d.ts +4 -8
  28. package/dist/esm/modules/frankie-client/mocks/index.js +13 -7
  29. package/dist/esm/modules/frankie-client/mocks/index.js.map +1 -1
  30. package/dist/esm/modules/frankie-client/mocks/individual/loadIndividual.d.ts +23 -3
  31. package/dist/esm/modules/frankie-client/mocks/individual/loadIndividual.js +25 -20
  32. package/dist/esm/modules/frankie-client/mocks/individual/loadIndividual.js.map +1 -1
  33. package/dist/esm/modules/frankie-client/mocks/ocr/ocrSubmission.d.ts +23 -0
  34. package/dist/esm/modules/frankie-client/mocks/ocr/{driversLicence.js → ocrSubmission.js} +49 -45
  35. package/dist/esm/modules/frankie-client/mocks/ocr/ocrSubmission.js.map +1 -0
  36. package/dist/esm/modules/frankie-client/mocks/simplifier.d.ts +28 -0
  37. package/dist/esm/modules/frankie-client/mocks/simplifier.js +208 -0
  38. package/dist/esm/modules/frankie-client/mocks/simplifier.js.map +1 -0
  39. package/dist/esm/modules/index.d.ts +5 -0
  40. package/dist/esm/modules/index.js +1 -0
  41. package/dist/esm/modules/index.js.map +1 -1
  42. package/dist/esm/modules/individual/actions/search.js +3 -1
  43. package/dist/esm/modules/individual/actions/search.js.map +1 -1
  44. package/dist/esm/modules/ocr/actions/start.d.ts +1 -0
  45. package/dist/esm/modules/ocr/actions/start.js +14 -14
  46. package/dist/esm/modules/ocr/actions/start.js.map +1 -1
  47. package/dist/esm/modules/ocr/index.d.ts +1 -0
  48. package/dist/esm/modules/ocr/index.js +1 -0
  49. package/dist/esm/modules/ocr/index.js.map +1 -1
  50. package/dist/esm/modules/sdk/parseConfiguration.js +2 -1
  51. package/dist/esm/modules/sdk/parseConfiguration.js.map +1 -1
  52. package/dist/esm/modules/sdk/types/configuration.d.ts +6 -1
  53. package/dist/esm/modules/sdk/types/configuration.js.map +1 -1
  54. package/dist/umd/biometrics-dummy.js +1 -1
  55. package/dist/umd/biometrics-dummy.js.map +1 -1
  56. package/dist/umd/biometrics-ocrlabs.js +1 -1
  57. package/dist/umd/biometrics-ocrlabs.js.map +1 -1
  58. package/dist/umd/device-sardine.js +1 -1
  59. package/dist/umd/oneSdk.umd.js +1 -1
  60. package/dist/umd/oneSdk.umd.js.map +1 -1
  61. package/package.json +5 -7
  62. package/dist/esm/modules/frankie-client/mocks/ocr/driversLicence.d.ts +0 -15
  63. package/dist/esm/modules/frankie-client/mocks/ocr/driversLicence.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"biometrics-ocrlabs.js","mappings":"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","sources":["webpack://OneSdk/./modules/biometrics/wrappers/OcrLabs/index.ts"],"sourcesContent":["import Liveness from \"liveness\";\n\nimport { IDVClient } from \"../../../frankie-client/clients/IDVClient\";\nimport { VendorContext, VendorOptions, VendorWrapper } from \"../../types\";\n\ntype DetectActions = \"face\" | \"smile\";\n\ntype SessionData = {\n session_id: string;\n tx_id: string;\n};\n\nconst createOverlay = (strokeColour = \"#fff\"): string => `\n<svg viewBox=\"0 0 747 730\" preserveAspectRatio=\"xMinYMin slice\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <defs>\n <filter x=\"-8.0%\" y=\"-9.3%\" width=\"116.1%\" height=\"122.5%\" filterUnits=\"objectBoundingBox\" id=\"filter-1\">\n <feOffset dx=\"0\" dy=\"17\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\"></feOffset>\n <feGaussianBlur stdDeviation=\"30\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"></feGaussianBlur>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.274448208 0\" type=\"matrix\" in=\"shadowBlurOuter1\" result=\"shadowMatrixOuter1\"></feColorMatrix>\n <feMerge>\n <feMergeNode in=\"shadowMatrixOuter1\"></feMergeNode>\n <feMergeNode in=\"SourceGraphic\"></feMergeNode>\n </feMerge>\n </filter>\n </defs>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" opacity=\"0.75\">\n <g fill=\"#000000\">\n <g filter=\"url(#filter-1)\" transform=\"translate(-224.000000, -250.000000)\">\n <path d=\"M222,60 L1200,60 L1200,1200 L222,1200 L222,60 Z M596,740 C684.917845,740 757,615.657619 757,494.431116 C757,373.204614 684.917845,301 596,301 C507.082155,301 435,373.204614 435,494.431116 C435,615.657619 507.082155,740 596,740 Z\"></path>\n </g>\n </g>\n </g>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" stroke-linecap=\"round\">\n <g transform=\"translate(0.000000, -170.000000)\" stroke=\"${strokeColour}\" stroke-width=\"2.2\">\n <g transform=\"translate(-224.000000, -80.000000)\">\n <path d=\"M596,740 C684.917845,740 757,615.657619 757,494.431116 C757,373.204614 684.917845,301 596,301 C507.082155,301 435,373.204614 435,494.431116 C435,615.657619 507.082155,740 596,740 Z\"></path>\n </g>\n </g>\n </g>\n</svg>`;\n\nexport const wrapper: VendorWrapper = {\n vendor: \"ocrlabs\",\n async initialise(options: VendorOptions): Promise<VendorContext> {\n // prematurely mount our ui to the dom before sdk session initialisation.\n mountUserInterface(options);\n\n return {\n vendor: \"ocrlabs\",\n };\n },\n};\n\nconst mountUserInterface = (options: VendorOptions): HTMLVideoElement => {\n const { mountElement } = options;\n\n mountElement.style.height = \"100%\";\n mountElement.style.minHeight = \"50px\";\n mountElement.style.width = \"100%\";\n mountElement.style.position = \"relative\";\n mountElement.style.overflow = \"hidden\";\n\n const loader = document.createElement(\"div\");\n loader.id = \"onesdk_idv_loader\";\n loader.style.color = \"black\";\n loader.style.position = \"absolute\";\n loader.style.top = \"20px\";\n loader.style.left = \"50%\";\n loader.style.transform = \"translate(-50%, 0)\";\n loader.style.fontSize = \"20px\";\n loader.innerText = \"Loading...\";\n mountElement.appendChild(loader);\n\n const videoElement = document.createElement(\"video\");\n videoElement.id = \"onesdk_idv_video\";\n videoElement.autoplay = true;\n videoElement.muted = true;\n videoElement.playsInline = true;\n videoElement.style.height = \"100%\";\n videoElement.style.width = \"100%\";\n videoElement.style.display = \"none\";\n mountElement.appendChild(videoElement);\n\n const overlayContainer = document.createElement(\"div\");\n overlayContainer.id = \"onesdk_idv_overlay\";\n overlayContainer.innerHTML = createOverlay();\n overlayContainer.style.position = \"absolute\";\n overlayContainer.style.top = \"0\";\n overlayContainer.style.left = \"0\";\n overlayContainer.style.height = \"100%\";\n overlayContainer.style.width = \"100%\";\n overlayContainer.style.display = \"none\";\n mountElement.appendChild(overlayContainer);\n\n const instructions = document.createElement(\"div\");\n instructions.id = \"onesdk_idv_instructions\";\n instructions.style.position = \"absolute\";\n instructions.style.bottom = \"20px\";\n instructions.style.left = \"50%\";\n instructions.style.transform = \"translate(-50%, 0)\";\n instructions.style.color = \"white\";\n instructions.style.fontSize = \"20px\";\n mountElement.appendChild(instructions);\n\n loadOcrLabs(options);\n\n return videoElement;\n};\n\n// remove any dom nodes we added, then close the ocrlabs session.\nconst cleanup = (options: VendorOptions): void => {\n const { eventHub, mountElement } = options;\n\n while (mountElement.firstChild) {\n mountElement.removeChild(mountElement.firstChild);\n }\n\n try {\n Liveness.close();\n eventHub.emit(\"session_closed\");\n } catch (error) {\n const { message } = error;\n eventHub.emit(\"error\", {\n message: \"Error from vendor SDK 'OcrLabs'\",\n payload: { message },\n });\n }\n};\n\nconst loadOcrLabs = async (options: VendorOptions): Promise<void> => {\n const idvClient = new IDVClient(options.frankieClient);\n const { eventHub, recipe } = options;\n\n // fetch session data for ocrlabs initialisation.\n const { token: session_id } = await idvClient.getToken();\n\n const sessionData: SessionData = {\n session_id,\n tx_id: recipe.biometrics.provider.tx_id,\n };\n eventHub.emit(\"session_data_generated\", {\n session: sessionData,\n });\n\n // initialise ocrlabs session, then run liveness checks.\n const videoElement = document.getElementById(\"onesdk_idv_video\") as unknown as HTMLVideoElement;\n const loader = document.getElementById(\"onesdk_idv_loader\");\n const overlayContainer = document.getElementById(\"onesdk_idv_instructions\");\n\n // handle process errors such as network issues.\n /* istanbul ignore next */\n Liveness.observer.on(\"error\", (error) => {\n const { message } = error;\n eventHub.emit(\"error\", {\n message: \"Error from vendor SDK 'OcrLabs'\",\n payload: { message },\n });\n cleanup(options);\n });\n\n // initialise ocrlabs session.\n try {\n await Liveness.createSession(\"wss://engine.au.v3.liveness.idkit.io\", {\n videoElement,\n auth: sessionData,\n });\n\n // update ui and broadcast event in case the consumer is providing their own initialisation ui.\n loader.style.display = \"none\";\n videoElement.style.display = \"block\";\n overlayContainer.style.display = \"block\";\n eventHub.emit(\"ready\");\n\n runLivenessChecks(options, idvClient);\n } catch (error) {\n eventHub.emit(\"session_data_failed_loading\", {\n code: error.code || null,\n message: error.message,\n });\n cleanup(options);\n }\n};\n\nconst runLivenessChecks = async (options: VendorOptions, idvClient: IDVClient) => {\n const { eventHub } = options;\n const overlayContainer = document.getElementById(\"onesdk_idv_overlay\");\n const instructions = document.getElementById(\"onesdk_idv_instructions\");\n\n overlayContainer.style.display = \"block\";\n instructions.style.display = \"block\";\n\n // manage the timing of ui changes during each detection step.\n const handleDetection = async (type: DetectActions, instructionCopy: string) => {\n const MIN_INSTRUCTION_DISPLAY_TIME = Liveness.delay || 2000;\n\n const detection = async (resolve, reject) => {\n instructions.innerText = instructionCopy;\n overlayContainer.innerHTML = createOverlay(\"#fff\");\n\n try {\n await Liveness.detect(type, {\n retry: true,\n timeout: 7500,\n });\n\n setTimeout(() => {\n instructions.innerText = \"Thanks!\";\n overlayContainer.innerHTML = createOverlay(\"#14ffc0\");\n\n setTimeout(() => {\n resolve(true);\n }, MIN_INSTRUCTION_DISPLAY_TIME);\n }, MIN_INSTRUCTION_DISPLAY_TIME);\n } catch (error) {\n setTimeout(() => {\n instructions.innerText = \"Something went wrong\";\n overlayContainer.innerHTML = createOverlay(\"#ff4747\");\n eventHub.emit(\"detection_failed\", {\n message: error && error.message ? error.message : null,\n });\n\n setTimeout(() => {\n cleanup(options);\n resolve(false);\n }, MIN_INSTRUCTION_DISPLAY_TIME);\n }, MIN_INSTRUCTION_DISPLAY_TIME);\n }\n };\n\n return new Promise(detection);\n };\n\n await handleDetection(\"face\", \"Position your face within the frame\");\n await handleDetection(\"smile\", \"Please give us a BIG Smile!\");\n\n try {\n await idvClient.initProcess();\n eventHub.emit(\"processing\");\n } catch (error) {\n const { message } = error;\n eventHub.emit(\"error\", {\n message: \"Error calling initProcess\",\n payload: { message },\n });\n }\n\n cleanup(options);\n};\n"],"names":["createOverlay","strokeColour","wrapper","vendor","initialise","options","mountUserInterface","mountElement","style","height","minHeight","width","position","overflow","loader","document","createElement","id","color","top","left","transform","fontSize","innerText","appendChild","videoElement","autoplay","muted","playsInline","display","overlayContainer","innerHTML","instructions","bottom","loadOcrLabs","cleanup","eventHub","firstChild","removeChild","emit","error","message","payload","idvClient","frankieClient","recipe","token","session_id","getToken","sessionData","tx_id","biometrics","provider","session","getElementById","auth","runLivenessChecks","code","handleDetection","type","instructionCopy","MIN_INSTRUCTION_DISPLAY_TIME","Promise","resolve","reject","retry","timeout","setTimeout","initProcess"],"sourceRoot":""}
1
+ {"version":3,"file":"biometrics-ocrlabs.js","mappings":"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","sources":["webpack://OneSdk/./modules/biometrics/wrappers/OcrLabs/index.ts"],"sourcesContent":["import Liveness from \"liveness\";\n\nimport { IDVClient, Status } from \"../../../frankie-client/clients/IDVClient\";\nimport { VendorContext, VendorOptions, VendorWrapper } from \"../../types\";\n\ntype DetectActions = \"face\" | \"smile\";\n\ntype SessionData = {\n session_id: string;\n tx_id: string;\n};\n\ntype OverlayColours = \"white\" | \"green\" | \"red\";\n\nconst createOverlay = (strokeColour: OverlayColours): HTMLImageElement => {\n const imageElement = document.createElement(\"img\");\n imageElement.style.objectFit = \"cover\";\n imageElement.style.height = \"100%\";\n imageElement.style.width = \"100%\";\n imageElement.style.position = \"relative\";\n imageElement.style.zIndex = \"1\";\n\n switch (strokeColour) {\n case \"green\": {\n imageElement.src =\n \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNzQ3IDczMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgc2xpY2UiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgPGRlZnM+CiAgICA8ZmlsdGVyIHg9Ii04LjAlIiB5PSItOS4zJSIgd2lkdGg9IjExNi4xJSIgaGVpZ2h0PSIxMjIuNSUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0xIj4KICAgICAgPGZlT2Zmc2V0IGR4PSIwIiBkeT0iMTciIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiPjwvZmVPZmZzZXQ+CiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMwIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgIDxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwICAgMCAwIDAgMCAwICAgMCAwIDAgMCAwICAwIDAgMCAwLjI3NDQ0ODIwOCAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIiByZXN1bHQ9InNoYWRvd01hdHJpeE91dGVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICA8ZmVNZXJnZT4KICAgICAgICA8ZmVNZXJnZU5vZGUgaW49InNoYWRvd01hdHJpeE91dGVyMSI+PC9mZU1lcmdlTm9kZT4KICAgICAgICA8ZmVNZXJnZU5vZGUgaW49IlNvdXJjZUdyYXBoaWMiPjwvZmVNZXJnZU5vZGU+CiAgICAgIDwvZmVNZXJnZT4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8ZyBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBvcGFjaXR5PSIwLjc1Ij4KICAgIDxnIGZpbGw9IiMwMDAwMDAiPgogICAgICA8ZyBmaWx0ZXI9InVybCgjZmlsdGVyLTEpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjI0LjAwMDAwMCwgLTI1MC4wMDAwMDApIj4KICAgICAgICA8cGF0aCBkPSJNMjIyLDYwIEwxMjAwLDYwIEwxMjAwLDEyMDAgTDIyMiwxMjAwIEwyMjIsNjAgWiBNNTk2LDc0MCBDNjg0LjkxNzg0NSw3NDAgNzU3LDYxNS42NTc2MTkgNzU3LDQ5NC40MzExMTYgQzc1NywzNzMuMjA0NjE0IDY4NC45MTc4NDUsMzAxIDU5NiwzMDEgQzUwNy4wODIxNTUsMzAxIDQzNSwzNzMuMjA0NjE0IDQzNSw0OTQuNDMxMTE2IEM0MzUsNjE1LjY1NzYxOSA1MDcuMDgyMTU1LDc0MCA1OTYsNzQwIFoiPjwvcGF0aD4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KICA8ZyBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIC0xNzAuMDAwMDAwKSIgc3Ryb2tlPSIjMTRmZmMwIiBzdHJva2Utd2lkdGg9IjIuMiI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMjQuMDAwMDAwLCAtODAuMDAwMDAwKSI+CiAgICAgICAgPHBhdGggZD0iTTU5Niw3NDAgQzY4NC45MTc4NDUsNzQwIDc1Nyw2MTUuNjU3NjE5IDc1Nyw0OTQuNDMxMTE2IEM3NTcsMzczLjIwNDYxNCA2ODQuOTE3ODQ1LDMwMSA1OTYsMzAxIEM1MDcuMDgyMTU1LDMwMSA0MzUsMzczLjIwNDYxNCA0MzUsNDk0LjQzMTExNiBDNDM1LDYxNS42NTc2MTkgNTA3LjA4MjE1NSw3NDAgNTk2LDc0MCBaIj48L3BhdGg+CiAgICAgIDwvZz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=\";\n break;\n }\n case \"red\": {\n imageElement.src =\n \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNzQ3IDczMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgc2xpY2UiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgPGRlZnM+CiAgICA8ZmlsdGVyIHg9Ii04LjAlIiB5PSItOS4zJSIgd2lkdGg9IjExNi4xJSIgaGVpZ2h0PSIxMjIuNSUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0xIj4KICAgICAgPGZlT2Zmc2V0IGR4PSIwIiBkeT0iMTciIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiPjwvZmVPZmZzZXQ+CiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMwIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgIDxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwICAgMCAwIDAgMCAwICAgMCAwIDAgMCAwICAwIDAgMCAwLjI3NDQ0ODIwOCAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIiByZXN1bHQ9InNoYWRvd01hdHJpeE91dGVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICA8ZmVNZXJnZT4KICAgICAgICA8ZmVNZXJnZU5vZGUgaW49InNoYWRvd01hdHJpeE91dGVyMSI+PC9mZU1lcmdlTm9kZT4KICAgICAgICA8ZmVNZXJnZU5vZGUgaW49IlNvdXJjZUdyYXBoaWMiPjwvZmVNZXJnZU5vZGU+CiAgICAgIDwvZmVNZXJnZT4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8ZyBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBvcGFjaXR5PSIwLjc1Ij4KICAgIDxnIGZpbGw9IiMwMDAwMDAiPgogICAgICA8ZyBmaWx0ZXI9InVybCgjZmlsdGVyLTEpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjI0LjAwMDAwMCwgLTI1MC4wMDAwMDApIj4KICAgICAgICA8cGF0aCBkPSJNMjIyLDYwIEwxMjAwLDYwIEwxMjAwLDEyMDAgTDIyMiwxMjAwIEwyMjIsNjAgWiBNNTk2LDc0MCBDNjg0LjkxNzg0NSw3NDAgNzU3LDYxNS42NTc2MTkgNzU3LDQ5NC40MzExMTYgQzc1NywzNzMuMjA0NjE0IDY4NC45MTc4NDUsMzAxIDU5NiwzMDEgQzUwNy4wODIxNTUsMzAxIDQzNSwzNzMuMjA0NjE0IDQzNSw0OTQuNDMxMTE2IEM0MzUsNjE1LjY1NzYxOSA1MDcuMDgyMTU1LDc0MCA1OTYsNzQwIFoiPjwvcGF0aD4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KICA8ZyBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIC0xNzAuMDAwMDAwKSIgc3Ryb2tlPSIjZmY0NzQ3IiBzdHJva2Utd2lkdGg9IjIuMiI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMjQuMDAwMDAwLCAtODAuMDAwMDAwKSI+CiAgICAgICAgPHBhdGggZD0iTTU5Niw3NDAgQzY4NC45MTc4NDUsNzQwIDc1Nyw2MTUuNjU3NjE5IDc1Nyw0OTQuNDMxMTE2IEM3NTcsMzczLjIwNDYxNCA2ODQuOTE3ODQ1LDMwMSA1OTYsMzAxIEM1MDcuMDgyMTU1LDMwMSA0MzUsMzczLjIwNDYxNCA0MzUsNDk0LjQzMTExNiBDNDM1LDYxNS42NTc2MTkgNTA3LjA4MjE1NSw3NDAgNTk2LDc0MCBaIj48L3BhdGg+CiAgICAgIDwvZz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=\";\n break;\n }\n case \"white\":\n default: {\n imageElement.src =\n \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNzQ3IDczMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgc2xpY2UiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgPGRlZnM+CiAgICA8ZmlsdGVyIHg9Ii04LjAlIiB5PSItOS4zJSIgd2lkdGg9IjExNi4xJSIgaGVpZ2h0PSIxMjIuNSUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0xIj4KICAgICAgPGZlT2Zmc2V0IGR4PSIwIiBkeT0iMTciIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiPjwvZmVPZmZzZXQ+CiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMwIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgIDxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwICAgMCAwIDAgMCAwICAgMCAwIDAgMCAwICAwIDAgMCAwLjI3NDQ0ODIwOCAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIiByZXN1bHQ9InNoYWRvd01hdHJpeE91dGVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICA8ZmVNZXJnZT4KICAgICAgICA8ZmVNZXJnZU5vZGUgaW49InNoYWRvd01hdHJpeE91dGVyMSI+PC9mZU1lcmdlTm9kZT4KICAgICAgICA8ZmVNZXJnZU5vZGUgaW49IlNvdXJjZUdyYXBoaWMiPjwvZmVNZXJnZU5vZGU+CiAgICAgIDwvZmVNZXJnZT4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8ZyBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBvcGFjaXR5PSIwLjc1Ij4KICAgIDxnIGZpbGw9IiMwMDAwMDAiPgogICAgICA8ZyBmaWx0ZXI9InVybCgjZmlsdGVyLTEpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjI0LjAwMDAwMCwgLTI1MC4wMDAwMDApIj4KICAgICAgICA8cGF0aCBkPSJNMjIyLDYwIEwxMjAwLDYwIEwxMjAwLDEyMDAgTDIyMiwxMjAwIEwyMjIsNjAgWiBNNTk2LDc0MCBDNjg0LjkxNzg0NSw3NDAgNzU3LDYxNS42NTc2MTkgNzU3LDQ5NC40MzExMTYgQzc1NywzNzMuMjA0NjE0IDY4NC45MTc4NDUsMzAxIDU5NiwzMDEgQzUwNy4wODIxNTUsMzAxIDQzNSwzNzMuMjA0NjE0IDQzNSw0OTQuNDMxMTE2IEM0MzUsNjE1LjY1NzYxOSA1MDcuMDgyMTU1LDc0MCA1OTYsNzQwIFoiPjwvcGF0aD4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KICA8ZyBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIC0xNzAuMDAwMDAwKSIgc3Ryb2tlPSIjZmZmZmZmIiBzdHJva2Utd2lkdGg9IjIuMiI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMjQuMDAwMDAwLCAtODAuMDAwMDAwKSI+CiAgICAgICAgPHBhdGggZD0iTTU5Niw3NDAgQzY4NC45MTc4NDUsNzQwIDc1Nyw2MTUuNjU3NjE5IDc1Nyw0OTQuNDMxMTE2IEM3NTcsMzczLjIwNDYxNCA2ODQuOTE3ODQ1LDMwMSA1OTYsMzAxIEM1MDcuMDgyMTU1LDMwMSA0MzUsMzczLjIwNDYxNCA0MzUsNDk0LjQzMTExNiBDNDM1LDYxNS42NTc2MTkgNTA3LjA4MjE1NSw3NDAgNTk2LDc0MCBaIj48L3BhdGg+CiAgICAgIDwvZz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=\";\n }\n }\n\n return imageElement;\n};\n\nexport const wrapper: VendorWrapper = {\n vendor: \"ocrlabs\",\n async initialise(options: VendorOptions): Promise<VendorContext> {\n // prematurely mount our ui to the dom before sdk session initialisation.\n mountUserInterface(options);\n\n return {\n vendor: \"ocrlabs\",\n };\n },\n};\n\nconst mountUserInterface = (options: VendorOptions): HTMLVideoElement => {\n const { mountElement: originalElement } = options;\n\n const mountElement = originalElement.cloneNode(true) as unknown as HTMLElement;\n originalElement.parentNode.replaceChild(mountElement, originalElement);\n\n mountElement.id = \"onesdk_idv_container\";\n mountElement.style.height = \"100%\";\n mountElement.style.minHeight = \"50px\";\n mountElement.style.width = \"100%\";\n mountElement.style.position = \"absolute\";\n mountElement.style.top = \"0\";\n mountElement.style.left = \"0\";\n mountElement.style.overflow = \"hidden\";\n mountElement.style.backgroundColor = \"#000\";\n\n const loader = document.createElement(\"div\");\n loader.id = \"onesdk_idv_loader\";\n loader.style.position = \"absolute\";\n loader.style.top = \"20px\";\n loader.style.left = \"50%\";\n loader.style.transform = \"translate(-50%, 0)\";\n loader.style.color = \"#fff\";\n loader.style.fontFamily = '\"Helvetica Neue\", Helvetica, Arial, sans-serif';\n loader.style.fontSize = \"24px\";\n loader.innerText = \"Loading...\";\n mountElement.appendChild(loader);\n\n const videoElement = document.createElement(\"video\");\n videoElement.id = \"onesdk_idv_video\";\n videoElement.autoplay = true;\n videoElement.muted = true;\n videoElement.style.position = \"absolute\";\n videoElement.style.top = \"0\";\n videoElement.style.left = \"0\";\n videoElement.playsInline = true;\n videoElement.style.height = \"100%\";\n videoElement.style.width = \"100%\";\n videoElement.style.display = \"none\";\n videoElement.style.zIndex = \"1\";\n videoElement.style.objectFit = \"cover\";\n mountElement.appendChild(videoElement);\n\n const overlayContainer = document.createElement(\"div\");\n overlayContainer.id = \"onesdk_idv_overlay\";\n overlayContainer.style.position = \"absolute\";\n overlayContainer.style.top = \"0\";\n overlayContainer.style.left = \"0\";\n overlayContainer.style.height = \"100%\";\n overlayContainer.style.width = \"100%\";\n overlayContainer.style.display = \"none\";\n overlayContainer.style.zIndex = \"2\";\n overlayContainer.appendChild(createOverlay(\"white\"));\n mountElement.appendChild(overlayContainer);\n\n const instructions = document.createElement(\"div\");\n instructions.id = \"onesdk_idv_instructions\";\n instructions.style.position = \"absolute\";\n instructions.style.bottom = \"20px\";\n instructions.style.left = \"50%\";\n instructions.style.transform = \"translate(-50%, 0)\";\n instructions.style.color = \"#fff\";\n instructions.style.fontFamily = '\"Helvetica Neue\", Helvetica, Arial, sans-serif';\n instructions.style.fontSize = \"24px\";\n instructions.style.zIndex = \"3\";\n mountElement.appendChild(instructions);\n\n loadOcrLabs(options);\n\n return videoElement;\n};\n\n// reset to the original container dom element and close the ocrlabs session.\nconst cleanup = async (options: VendorOptions): Promise<void> => {\n const { eventHub, mountElement } = options;\n\n const cloneElement = document.getElementById(\"onesdk_idv_container\");\n cloneElement && cloneElement.parentNode.replaceChild(mountElement, cloneElement);\n\n try {\n await Liveness.close();\n eventHub.emit(\"session_closed\");\n } catch (error) {\n const { message } = error;\n eventHub.emit(\"error\", {\n message: \"Error from vendor SDK 'OcrLabs'\",\n payload: { message },\n });\n }\n};\n\nconst loadOcrLabs = async (options: VendorOptions): Promise<void> => {\n const idvClient = new IDVClient(options.frankieClient);\n const { eventHub, recipe } = options;\n\n // fetch session data for ocrlabs initialisation.\n const { token: session_id } = await idvClient.getToken();\n\n const sessionData: SessionData = {\n session_id,\n tx_id: recipe.biometrics.provider.tx_id,\n };\n eventHub.emit(\"session_data_generated\", {\n session: sessionData,\n });\n\n // initialise ocrlabs session, then run liveness checks.\n const videoElement = document.getElementById(\"onesdk_idv_video\") as unknown as HTMLVideoElement;\n const loader = document.getElementById(\"onesdk_idv_loader\");\n const overlayContainer = document.getElementById(\"onesdk_idv_instructions\");\n\n // handle process errors such as network issues.\n /* istanbul ignore next */\n Liveness.observer.on(\"error\", (error) => {\n const { message } = error;\n eventHub.emit(\"error\", {\n message: \"Error from vendor SDK 'OcrLabs'\",\n payload: { message },\n });\n cleanup(options);\n });\n\n // initialise ocrlabs session.\n try {\n await Liveness.createSession(\"wss://engine.au.v3.liveness.idkit.io\", {\n videoElement,\n auth: sessionData,\n });\n\n // update ui and broadcast event in case the consumer is providing their own initialisation ui.\n loader.remove();\n videoElement.style.display = \"block\";\n overlayContainer.style.display = \"block\";\n eventHub.emit(\"ready\");\n\n runLivenessChecks(options, idvClient);\n } catch (error) {\n eventHub.emit(\"session_data_failed_loading\", {\n code: error.code || null,\n message: error.message,\n });\n cleanup(options);\n }\n};\n\nconst runLivenessChecks = async (options: VendorOptions, idvClient: IDVClient) => {\n const {\n eventHub,\n recipe: {\n biometrics: { is_synchronous: isSynchronous },\n },\n } = options;\n const overlayContainer = document.getElementById(\"onesdk_idv_overlay\");\n const instructions = document.getElementById(\"onesdk_idv_instructions\");\n\n overlayContainer.style.display = \"block\";\n instructions.style.display = \"block\";\n\n // manage the timing of ui changes during each detection step.\n const handleDetection = async (type: DetectActions, instructionCopy: string) => {\n const MIN_INSTRUCTION_DISPLAY_TIME = Liveness.delay || 2000;\n\n const detection = async (resolve, reject) => {\n instructions.innerText = instructionCopy;\n overlayContainer.removeChild(overlayContainer.firstChild);\n overlayContainer.appendChild(createOverlay(\"white\"));\n\n try {\n await Liveness.detect(type, {\n retry: true,\n timeout: 7500,\n });\n\n setTimeout(() => {\n instructions.innerText = \"Thanks!\";\n overlayContainer.removeChild(overlayContainer.firstChild);\n overlayContainer.appendChild(createOverlay(\"green\"));\n\n setTimeout(() => {\n resolve(true);\n }, MIN_INSTRUCTION_DISPLAY_TIME);\n }, MIN_INSTRUCTION_DISPLAY_TIME);\n } catch (error) {\n setTimeout(() => {\n instructions.innerText = \"Something went wrong\";\n overlayContainer.removeChild(overlayContainer.firstChild);\n overlayContainer.appendChild(createOverlay(\"red\"));\n eventHub.emit(\"detection_failed\", {\n message: error && error.message ? error.message : null,\n });\n\n setTimeout(() => {\n cleanup(options);\n resolve(false);\n }, MIN_INSTRUCTION_DISPLAY_TIME);\n }, MIN_INSTRUCTION_DISPLAY_TIME);\n }\n };\n\n return new Promise(detection);\n };\n\n await handleDetection(\"face\", \"Position your face within the frame\");\n await handleDetection(\"smile\", \"Please give us a BIG Smile!\");\n\n try {\n await cleanup(options);\n const { checkStatus } = await idvClient.initProcess({ isSynchronous: !!isSynchronous });\n\n switch (checkStatus) {\n case Status.PROVIDER_OFFLINE: {\n eventHub.emit(\"error\", {\n message: \"Error initialising liveness check with OCRLabs. The service doesn't appear to be available.\",\n payload: { message: checkStatus, processing: false },\n });\n cleanup(options);\n break;\n }\n case Status.WAITING_SELFIE_UPLOAD: {\n eventHub.emit(\"error\", {\n message:\n \"Error initialising liveness check with OCRLabs. You might need to run the 'ocr' component before running 'biometrics'.\",\n payload: { message: checkStatus, processing: false },\n });\n cleanup(options);\n break;\n }\n default: {\n eventHub.emit(isSynchronous ? \"results\" : \"processing\", {\n checkStatus,\n processing: true,\n });\n }\n }\n } catch (error) {\n const { message } = error;\n eventHub.emit(\"error\", {\n message: \"Error calling initProcess\",\n payload: { message },\n });\n }\n\n cleanup(options);\n};\n"],"names":["createOverlay","strokeColour","imageElement","document","createElement","style","objectFit","height","width","position","zIndex","src","wrapper","vendor","initialise","options","mountUserInterface","mountElement","originalElement","cloneNode","parentNode","replaceChild","id","minHeight","top","left","overflow","backgroundColor","loader","transform","color","fontFamily","fontSize","innerText","appendChild","videoElement","autoplay","muted","playsInline","display","overlayContainer","instructions","bottom","loadOcrLabs","cleanup","eventHub","cloneElement","getElementById","emit","error","message","payload","idvClient","frankieClient","recipe","token","session_id","getToken","sessionData","tx_id","biometrics","provider","session","auth","remove","runLivenessChecks","code","is_synchronous","isSynchronous","handleDetection","type","instructionCopy","MIN_INSTRUCTION_DISPLAY_TIME","Promise","resolve","reject","removeChild","firstChild","retry","timeout","setTimeout","checkStatus","initProcess","processing"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunkOneSdk=self.webpackChunkOneSdk||[]).push([[513],{8167:(e,n,t)=>{t.r(n),t.d(n,{wrapper:()=>r});var i=t(5192),s=t(4586),o=function(e,n,t,i){return new(t||(t=Promise))((function(s,o){function r(e){try{c(i.next(e))}catch(e){o(e)}}function d(e){try{c(i.throw(e))}catch(e){o(e)}}function c(e){var n;e.done?s(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(r,d)}c((i=i.apply(e,n||[])).next())}))};const r={vendor:"sardine",initialise(e){return o(this,void 0,void 0,(function*(){const n=yield function(e){var n;return o(this,void 0,void 0,(function*(){return{customerID:null!==(n=e.session.customerChildID)&&void 0!==n?n:e.session.customerID,frankieClientID:e.recipe.device.provider.clientID,vendorSessionID:(0,s.Z)()}}))}(e);e.eventHub.emit("session_data_generated",{session:n});const t=yield function(e){return o(this,void 0,void 0,(function*(){const{mode:n}=e.module,t="production"===n,s=`https://${t?"api.sardine.ai":"api.dev.sardine.ai"}/assets/loader.min.js`;yield(0,i.loadAsyncAsset)(s);const o=window._Sardine.createContext({clientId:e.session.frankieClientID,partnerID:e.session.customerID,sessionKey:e.session.vendorSessionID,parentElement:document.body,environment:t?"production":"development",onDeviceResponse:function(n){e.module.eventHub.emit("device_details_extracted",{device:n})}});return{vendor:"sardine",set(n,t){const i=d[n];i&&(o.updateConfig({[i]:t}),e.module.eventHub.emit("value_set",{key:n,value:t}))}}}))}({module:e,session:n});return t}))}},d={entityId:"userIdHash",activityType:"flow"}}}]);
1
+ "use strict";(self.webpackChunkOneSdk=self.webpackChunkOneSdk||[]).push([[513],{8167:(e,n,t)=>{t.r(n),t.d(n,{wrapper:()=>r});var i=t(6514),s=t(4586),o=function(e,n,t,i){return new(t||(t=Promise))((function(s,o){function r(e){try{c(i.next(e))}catch(e){o(e)}}function d(e){try{c(i.throw(e))}catch(e){o(e)}}function c(e){var n;e.done?s(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(r,d)}c((i=i.apply(e,n||[])).next())}))};const r={vendor:"sardine",initialise(e){return o(this,void 0,void 0,(function*(){const n=yield function(e){var n;return o(this,void 0,void 0,(function*(){return{customerID:null!==(n=e.session.customerChildID)&&void 0!==n?n:e.session.customerID,frankieClientID:e.recipe.device.provider.clientID,vendorSessionID:(0,s.Z)()}}))}(e);e.eventHub.emit("session_data_generated",{session:n});const t=yield function(e){return o(this,void 0,void 0,(function*(){const{mode:n}=e.module,t="production"===n,s=`https://${t?"api.sardine.ai":"api.dev.sardine.ai"}/assets/loader.min.js`;yield(0,i.loadAsyncAsset)(s);const o=window._Sardine.createContext({clientId:e.session.frankieClientID,partnerID:e.session.customerID,sessionKey:e.session.vendorSessionID,parentElement:document.body,environment:t?"production":"development",onDeviceResponse:function(n){e.module.eventHub.emit("device_details_extracted",{device:n})}});return{vendor:"sardine",set(n,t){const i=d[n];i&&(o.updateConfig({[i]:t}),e.module.eventHub.emit("value_set",{key:n,value:t}))}}}))}({module:e,session:n});return t}))}},d={entityId:"userIdHash",activityType:"flow"}}}]);
2
2
  //# sourceMappingURL=device-sardine.js.map