@incodetech/core 2.1.0-rc.0 → 2.1.0-rc.2

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 (223) hide show
  1. package/dist/{BrowserStorageProvider-BpJM-gIl.esm.js → BrowserStorageProvider-D5xc7Lqo.esm.js} +18 -1
  2. package/dist/{Manager-BHn8wH8K.d.ts → Manager-B2OEDYqf.d.ts} +4 -1
  3. package/dist/{OpenViduRecordingProvider-O4GjBseO.esm.js → OpenViduRecordingProvider-DF7A4ZNJ.esm.js} +1 -1
  4. package/dist/{StreamCanvasCapture-yyl20qd9.d.ts → StreamCanvasCapture-Ctgyx-oD.d.ts} +1 -1
  5. package/dist/{StreamCanvasCapture-ImiDQdVA.esm.js → StreamCanvasCapture-Dr5n_iK1.esm.js} +1 -1
  6. package/dist/{WasmUtilProvider-CiEN7Gjn.esm.js → WasmUtilProvider-CIu373BZ.esm.js} +29 -1
  7. package/dist/{addressSearch-DvmWXKZg.esm.js → addressSearch-BH96a3fq.esm.js} +4 -4
  8. package/dist/{ae-signature-BFZta3TZ.esm.js → ae-signature-CDEN8y-w.esm.js} +1 -1
  9. package/dist/ae-signature.d.ts +3 -3
  10. package/dist/ae-signature.esm.js +9 -7
  11. package/dist/antifraud.d.ts +3 -3
  12. package/dist/antifraud.esm.js +6 -6
  13. package/dist/{antifraudManager-CznnhyvD.d.ts → antifraudManager-B7WQTIdu.d.ts} +2 -2
  14. package/dist/antifraudManager-DZifA5zX.esm.js +83 -0
  15. package/dist/{antifraudStateMachine-Ccrb-Jxc.esm.js → antifraudStateMachine-DlKrK2hL.esm.js} +3 -3
  16. package/dist/authentication.d.ts +12 -13
  17. package/dist/authentication.esm.js +27 -27
  18. package/dist/{authenticationManager-ZNotsWnC.esm.js → authenticationManager-BM4LzyV7.esm.js} +17 -8
  19. package/dist/{authenticationManager-CIVY80H9.d.ts → authenticationManager-Dve7mGLe.d.ts} +13 -3
  20. package/dist/{authenticationStateMachine-DksVbF_H.esm.js → authenticationStateMachine-Chx3ySdT.esm.js} +20 -23
  21. package/dist/{backCameraStream-D7Wo4Nbx.esm.js → backCameraStream-iftkf3rd.esm.js} +3 -3
  22. package/dist/browser-DlFgHpoC-7tbRR1aR.esm.js +1425 -0
  23. package/dist/{browserSimulation-B1dWiXp7.esm.js → browserSimulation-CGjpdNA1.esm.js} +2 -2
  24. package/dist/camera.d.ts +1 -1
  25. package/dist/camera.esm.js +4 -4
  26. package/dist/certificate-issuance.d.ts +311 -0
  27. package/dist/certificate-issuance.esm.js +73 -0
  28. package/dist/certificateIssuanceStateMachine-CLNXtXaC.esm.js +127 -0
  29. package/dist/consent.d.ts +3 -3
  30. package/dist/consent.esm.js +6 -6
  31. package/dist/{consentManager-BLd51QiW.d.ts → consentManager-BqUGU_YD.d.ts} +52 -52
  32. package/dist/{consentManager-BYo9Nu1r.esm.js → consentManager-psDCeJ0E.esm.js} +29 -5
  33. package/dist/{consentStateMachine-BG3yL8aC.esm.js → consentStateMachine-DRsFFSHE.esm.js} +3 -3
  34. package/dist/cpf-ocr.d.ts +3 -3
  35. package/dist/cpf-ocr.esm.js +6 -6
  36. package/dist/{cpfOcrManager-BnieFXuG.d.ts → cpfOcrManager-B2u9hMzd.d.ts} +19 -19
  37. package/dist/{cpfOcrManager-sSKegxox.esm.js → cpfOcrManager-BxcgxvgO.esm.js} +5 -5
  38. package/dist/cross-document-data-match.d.ts +1 -1
  39. package/dist/cross-document-data-match.esm.js +5 -5
  40. package/dist/curp-validation.d.ts +7 -7
  41. package/dist/curp-validation.esm.js +6 -6
  42. package/dist/{curpValidationManager-CFem6zP9.esm.js → curpValidationManager-BgLDw0Ub.esm.js} +51 -5
  43. package/dist/{curpValidationManager-RttixpIc.d.ts → curpValidationManager-Bt6CVD8b.d.ts} +4 -3
  44. package/dist/{curpValidationStateMachine-B7V_qp66.esm.js → curpValidationStateMachine-BK_wJ48C.esm.js} +3 -3
  45. package/dist/custom-fields.d.ts +3 -2
  46. package/dist/custom-fields.esm.js +48 -6
  47. package/dist/custom-watchlist.d.ts +1 -1
  48. package/dist/custom-watchlist.esm.js +26 -6
  49. package/dist/{customWatchlistStateMachine-HmFybXLX.esm.js → customWatchlistStateMachine-Bi4P59HM.esm.js} +3 -3
  50. package/dist/{deepsightLoader-65k1Appi.esm.js → deepsightLoader-BMmvk0X6.esm.js} +13 -13
  51. package/dist/{deepsightService-B7ShOkWL.d.ts → deepsightService-ByNKY5Jv.d.ts} +18 -2
  52. package/dist/{deepsightService-CrHmvx8X.esm.js → deepsightService-CEZrdiW0.esm.js} +7 -7
  53. package/dist/device.esm.js +4 -4
  54. package/dist/document-capture.d.ts +228 -228
  55. package/dist/document-capture.esm.js +77 -14
  56. package/dist/document-upload.d.ts +50 -50
  57. package/dist/document-upload.esm.js +9 -9
  58. package/dist/{documentCaptureStateMachine-WYV1r9le.esm.js → documentCaptureStateMachine-MpwpJO7t.esm.js} +7 -7
  59. package/dist/dynamic-forms.d.ts +2 -2
  60. package/dist/dynamic-forms.esm.js +35 -285
  61. package/dist/dynamicFormsStateMachine-Do84A4uU.esm.js +284 -0
  62. package/dist/ekyb.d.ts +7 -6
  63. package/dist/ekyb.esm.js +59 -17
  64. package/dist/{ekybStateMachine-aYixw2sL.esm.js → ekybStateMachine-nsuPOw3f.esm.js} +5 -5
  65. package/dist/ekyc.d.ts +4 -3
  66. package/dist/ekyc.esm.js +54 -9
  67. package/dist/{ekycStateMachine-CXbpaJJn.esm.js → ekycStateMachine-DcynX0rj.esm.js} +5 -5
  68. package/dist/electronic-signature.d.ts +3 -3
  69. package/dist/electronic-signature.esm.js +8 -6
  70. package/dist/{electronicSignatureManager-BaECdJ1u.esm.js → electronicSignatureManager-B63aAuI5.esm.js} +103 -23
  71. package/dist/email.d.ts +4 -4
  72. package/dist/email.esm.js +8 -8
  73. package/dist/{emailManager-lAzDoQOs.d.ts → emailManager-C6D2u4mQ.d.ts} +4 -3
  74. package/dist/{emailManager--D5G3ChB.esm.js → emailManager-DxHjAe5u.esm.js} +46 -6
  75. package/dist/{emailStateMachine-CxTOMAjC.esm.js → emailStateMachine-758f34gg.esm.js} +5 -5
  76. package/dist/{endpoints-BeTK0Mlt.esm.js → endpoints-BM2_j_IE.esm.js} +2 -0
  77. package/dist/{events-Dvvriq9l.esm.js → events-DN-u67gb.esm.js} +110 -43
  78. package/dist/events.d.ts +21 -16
  79. package/dist/events.esm.js +2 -2
  80. package/dist/extensibility.d.ts +34 -26
  81. package/dist/extensibility.esm.js +58 -56
  82. package/dist/externalFetch-crimxkN9.esm.js +22 -0
  83. package/dist/face-match.d.ts +1 -12
  84. package/dist/face-match.esm.js +5 -5
  85. package/dist/{faceCaptureManagerFactory-kqbUqtrr.esm.js → faceCaptureManagerFactory-BNXZchWX.esm.js} +94 -13
  86. package/dist/{faceCaptureManagerFactory-C_hRHx8a.d.ts → faceCaptureManagerFactory-CL-7T_vH.d.ts} +33 -16
  87. package/dist/{faceCaptureSetup-CtvHWd3x.esm.js → faceCaptureSetup-Dqb09D24.esm.js} +7 -7
  88. package/dist/{faceMatchStateMachine-DdGXUBnx.esm.js → faceMatchStateMachine-FikRaUZH.esm.js} +9 -7
  89. package/dist/field-comparison.d.ts +3 -3
  90. package/dist/field-comparison.esm.js +5 -5
  91. package/dist/{fieldComparisonManager-Bu5TaSr3.d.ts → fieldComparisonManager-BXc6-DJv.d.ts} +2 -2
  92. package/dist/{fieldComparisonManager-COGI2ARD.esm.js → fieldComparisonManager-Dic0DVgl.esm.js} +4 -4
  93. package/dist/fiscal-qr.d.ts +3 -3
  94. package/dist/fiscal-qr.esm.js +12 -12
  95. package/dist/flow-events.d.ts +6 -6
  96. package/dist/flow.d.ts +25 -15
  97. package/dist/flow.esm.js +43 -36
  98. package/dist/{flowCompletionService-BdR2cGgB.d.ts → flowCompletionService-CdGDKv0z.d.ts} +9 -1
  99. package/dist/flowCompletionService-D_CsiDZM.esm.js +42 -0
  100. package/dist/{flowServices-BTuHLHVr.esm.js → flowServices-ar5DXv71.esm.js} +4 -4
  101. package/dist/geolocation.d.ts +3 -2
  102. package/dist/geolocation.esm.js +35 -7
  103. package/dist/{geolocationStateMachine-Dvh7X0wF.esm.js → geolocationStateMachine-BWjrMGS_.esm.js} +4 -4
  104. package/dist/{getDeviceClass-C8Do2qYu.esm.js → getDeviceClass-rXKlXywy.esm.js} +1 -1
  105. package/dist/government-validation.d.ts +3 -3
  106. package/dist/government-validation.esm.js +42 -8
  107. package/dist/{governmentValidationStateMachine-DcJ-BfsC.esm.js → governmentValidationStateMachine-BoF7U1of.esm.js} +5 -5
  108. package/dist/home.d.ts +15 -15
  109. package/dist/home.esm.js +4 -4
  110. package/dist/http.d.ts +1 -0
  111. package/dist/http.esm.js +2 -2
  112. package/dist/id-ocr.d.ts +57 -57
  113. package/dist/id-ocr.esm.js +6 -6
  114. package/dist/id-verification.d.ts +27 -27
  115. package/dist/id-verification.esm.js +5 -5
  116. package/dist/id.d.ts +19 -13
  117. package/dist/id.esm.js +75 -34
  118. package/dist/{idCaptureManager-DGVv5l1_.esm.js → idCaptureManager-Bm6Wm6Qv.esm.js} +91 -9
  119. package/dist/{idCaptureManager-D-QYESvF.d.ts → idCaptureManager-BvGUSN2e.d.ts} +26 -15
  120. package/dist/{idCaptureStateMachine-DHi7HydI.esm.js → idCaptureStateMachine-D1YhOj6n.esm.js} +155 -82
  121. package/dist/{idOcrStateMachine-CDQ5d_VM.esm.js → idOcrStateMachine-YMCDGplq.esm.js} +5 -5
  122. package/dist/{idVerificationStateMachine-kRxwImzO.esm.js → idVerificationStateMachine-Bo1IYuZH.esm.js} +3 -3
  123. package/dist/identity-reuse.d.ts +3 -3
  124. package/dist/identity-reuse.esm.js +6 -6
  125. package/dist/{identityReuseManager-C6n_97dw.esm.js → identityReuseManager-D0knIrOy.esm.js} +3 -3
  126. package/dist/{identityReuseManager-DwLtVzUn.d.ts → identityReuseManager-DcWSvC-A.d.ts} +36 -36
  127. package/dist/{identityReuseStateMachine-BfE5YiEr.esm.js → identityReuseStateMachine-CSQfZOqD.esm.js} +3 -3
  128. package/dist/index-52_qi4bd.d.ts +93 -0
  129. package/dist/{index-B5hPA0Bg.d.ts → index-BgxYUYuD.d.ts} +2 -2
  130. package/dist/{index-B9NysVDB.d.ts → index-DV134v62.d.ts} +169 -169
  131. package/dist/index.d.ts +3 -2
  132. package/dist/index.esm.js +13 -12
  133. package/dist/{invokeOnCaptureCallback-ygByVdnn.esm.js → invokeOnCaptureCallback-Dzemudhk.esm.js} +1 -1
  134. package/dist/{lib-BY67lgbq.esm.js → lib-7ZQ9BdKH.esm.js} +1 -1
  135. package/dist/mandatory-consent.d.ts +7 -7
  136. package/dist/mandatory-consent.esm.js +6 -6
  137. package/dist/{mandatoryConsentManager-H6D18cZB.esm.js → mandatoryConsentManager-Lon46nPQ.esm.js} +3 -3
  138. package/dist/{mandatoryConsentManager-KfIlURRY.d.ts → mandatoryConsentManager-Tzl5Qd35.d.ts} +53 -53
  139. package/dist/{mandatoryConsentStateMachine-DtQNW1ji.esm.js → mandatoryConsentStateMachine-D_dZ7IF6.esm.js} +3 -3
  140. package/dist/openviduLazy-B_s6jnEk.esm.js +3 -0
  141. package/dist/{openviduLazy-Dh14JNJc.esm.js → openviduLazy-oAXXI9w_.esm.js} +2 -2
  142. package/dist/{permissionGuards-C1ispV96.esm.js → permissionGuards-D-Z-lgNj.esm.js} +1 -1
  143. package/dist/{permissionServices-CG3bMSfG.esm.js → permissionServices-CPDboRoE.esm.js} +3 -3
  144. package/dist/phone.d.ts +4 -4
  145. package/dist/phone.esm.js +8 -8
  146. package/dist/{phoneManager-BmF-0Ez4.esm.js → phoneManager-Blt4Oc2P.esm.js} +47 -6
  147. package/dist/{phoneManager-fPmIBYQK.d.ts → phoneManager-TSq1Ief6.d.ts} +4 -3
  148. package/dist/{phoneStateMachine-BiV0yoEx.esm.js → phoneStateMachine-W3c6Z8sj.esm.js} +5 -5
  149. package/dist/{qe-signature-CUYPcHVo.esm.js → qe-signature-CQLK6LKE.esm.js} +1 -1
  150. package/dist/qe-signature.d.ts +3 -3
  151. package/dist/qe-signature.esm.js +9 -7
  152. package/dist/{recordingService-Bn9EdCmz.esm.js → recordingService-CxMJP4tQ.esm.js} +15 -15
  153. package/dist/redirect-to-mobile.d.ts +3 -3
  154. package/dist/redirect-to-mobile.esm.js +8 -7
  155. package/dist/{redirectToMobileManager-Dy3t7o0C.esm.js → redirectToMobileManager-DCvpKdkD.esm.js} +4 -4
  156. package/dist/{redirectToMobileManager-BNe3IzC_.d.ts → redirectToMobileManager-yOHAmwg-.d.ts} +2 -2
  157. package/dist/{redirectToMobileStateMachine-DyAdRxfP.esm.js → redirectToMobileStateMachine-DC9z4Vfu.esm.js} +11 -21
  158. package/dist/{runChildModule-CuoHZ1cx.esm.js → runChildModule-C9G0wfVC.esm.js} +14 -24
  159. package/dist/selfie.d.ts +20 -14
  160. package/dist/selfie.esm.js +63 -31
  161. package/dist/{selfieManager-BjCoKRy0.esm.js → selfieManager-BRL6c_Oc.esm.js} +17 -8
  162. package/dist/{selfieManager-dUbKRzOh.d.ts → selfieManager-imY2dAcH.d.ts} +13 -3
  163. package/dist/{selfieStateMachine-b4F2q9zw.esm.js → selfieStateMachine-D2Q0uwDK.esm.js} +4 -4
  164. package/dist/{session-DoVb-OcB.esm.js → session-Be_IA1e0.esm.js} +3 -3
  165. package/dist/session.d.ts +9 -8
  166. package/dist/session.esm.js +14 -12
  167. package/dist/{sessionInitializer-B8H5MsXM.esm.js → sessionInitializer-CaiGA8GP.esm.js} +13 -10
  168. package/dist/{setup-BbkprdVv.d.ts → setup-BJZAkajt.d.ts} +76 -1
  169. package/dist/{setup-BqEfrdja.esm.js → setup-C7tintPc.esm.js} +48 -9
  170. package/dist/signature.d.ts +3 -2
  171. package/dist/signature.esm.js +48 -6
  172. package/dist/{signatureStateMachine-C5qqYLRz.esm.js → signatureStateMachine-DAxXmMrk.esm.js} +21 -39
  173. package/dist/{stats-BMNUG1AU.esm.js → stats-DntyIiGr.esm.js} +2 -2
  174. package/dist/stats.esm.js +3 -3
  175. package/dist/tri-CtxWthxz.esm.js +389 -0
  176. package/dist/tri.d.ts +2 -0
  177. package/dist/tri.esm-CrWAulDi.esm.js +2589 -0
  178. package/dist/tri.esm.js +4 -0
  179. package/dist/trust-graph.d.ts +3 -3
  180. package/dist/trust-graph.esm.js +3 -3
  181. package/dist/{types-DsnEVMhr.esm.js → types-BdVOWGGW.esm.js} +2 -1
  182. package/dist/{types-NuT8ftBV.d.ts → types-DpTWgfKY.d.ts} +2 -1
  183. package/dist/{types-DOUhndhT.d.ts → types-Dv-9WPJX.d.ts} +2 -2
  184. package/dist/{types-Bj9hdFjU.d.ts → types-Z9wv19v2.d.ts} +1 -1
  185. package/dist/urlUtils-8RNHyW3x.esm.js +16 -0
  186. package/dist/wasm.d.ts +3 -2
  187. package/dist/wasm.esm.js +13 -12
  188. package/dist/watchlist-for-business.d.ts +1 -1
  189. package/dist/watchlist-for-business.esm.js +29 -7
  190. package/dist/watchlist.d.ts +1 -1
  191. package/dist/watchlist.esm.js +27 -6
  192. package/dist/{watchlistForBusinessStateMachine-DMl8j2Ov.esm.js → watchlistForBusinessStateMachine-DtefJb-D.esm.js} +3 -3
  193. package/dist/{watchlistStateMachine-DmQlqI6L.esm.js → watchlistStateMachine-B0aIS2_n.esm.js} +3 -3
  194. package/dist/workflow.d.ts +159 -105
  195. package/dist/workflow.esm.js +99 -106
  196. package/dist/{xstate.esm-C9wncMQa.esm.js → xstate.esm-Dkm1jy5u.esm.js} +13 -4
  197. package/package.json +11 -1
  198. package/dist/StateMachine-BC_nGvrc.d.ts +0 -2
  199. package/dist/antifraudManager-CkV4u-LE.esm.js +0 -55
  200. package/dist/flowCompletionService-DdGojV9K.esm.js +0 -20
  201. package/dist/openviduLazy-B8L--0oe.esm.js +0 -3
  202. /package/dist/{Actor-Y0_Fj-KL.d.ts → Actor-fIPLXfoi.d.ts} +0 -0
  203. /package/dist/{BrowserTimerProvider-DhNc_x02.esm.js → BrowserTimerProvider-BVgutW_b.esm.js} +0 -0
  204. /package/dist/{ITimerCapability-CB0I1Uf2.esm.js → ITimerCapability-BvH0pDwp.esm.js} +0 -0
  205. /package/dist/{IpifyProvider-D4LWD15E.esm.js → IpifyProvider-oZf7Ke1O.esm.js} +0 -0
  206. /package/dist/{MotionSensorProvider-Bx7Mpzt0.esm.js → MotionSensorProvider-C9fPAJdS.esm.js} +0 -0
  207. /package/dist/{api-CESGtpbH.esm.js → api-DUZwyz0o.esm.js} +0 -0
  208. /package/dist/{apiError-B-j-gyDx.esm.js → apiError-D-GTvFrH.esm.js} +0 -0
  209. /package/dist/{camera-SRBpPq2X.d.ts → camera-biGPWlmx.d.ts} +0 -0
  210. /package/dist/{camera-DJWm3V4g.esm.js → camera-x4LjGTjZ.esm.js} +0 -0
  211. /package/dist/{canvas-SKcRBxsk.esm.js → canvas-7uX2izHb.esm.js} +0 -0
  212. /package/dist/{chunk-CMUKZ2uL.esm.js → chunk-BK1xu56N.esm.js} +0 -0
  213. /package/dist/{cpf-BRzggV8G.esm.js → cpf-xBg-DFNn.esm.js} +0 -0
  214. /package/dist/{dateUtils-AksLQmgV.esm.js → dateUtils-8dCcuArE.esm.js} +0 -0
  215. /package/dist/{getBrowser-C8DP7oTB.esm.js → getBrowser-Dv8LZyHE.esm.js} +0 -0
  216. /package/dist/{getDeviceClass-C0olyNFS.esm.js → getDeviceClass-C0zrM97a.esm.js} +0 -0
  217. /package/dist/{http-Cai3IoLS.esm.js → http-CfVTgMfU.esm.js} +0 -0
  218. /package/dist/{otp-DF5A0sFx.d.ts → otp-BHJnjEEc.d.ts} +0 -0
  219. /package/dist/{otp-CGMdUzBC.esm.js → otp-D87RTwrx.esm.js} +0 -0
  220. /package/dist/{platform-SKvEfCBh.esm.js → platform-BfoqeM61.esm.js} +0 -0
  221. /package/dist/{types-DvGZI7BF.d.ts → types-DYZja-k9.d.ts} +0 -0
  222. /package/dist/{types-ya0LN_MX.d.ts → types-F0IXbaCB.d.ts} +0 -0
  223. /package/dist/{warmup-Dg8Lh-50.d.ts → warmup--6HA3yUR.d.ts} +0 -0
@@ -1,7 +1,7 @@
1
- import { n as eventModuleNames, o as createManagerInstrumentation, r as eventScreenNames } from "./events-Dvvriq9l.esm.js";
2
- import { c as createManager } from "./xstate.esm-C9wncMQa.esm.js";
3
- import { n as setWasmDsFlagSync } from "./BrowserStorageProvider-BpJM-gIl.esm.js";
4
- import { r as primeMotionFromUserGestureIfNeeded } from "./permissionServices-CG3bMSfG.esm.js";
1
+ import { n as eventModuleNames, o as topLevelStateName, r as eventScreenNames, s as createManagerInstrumentation } from "./events-DN-u67gb.esm.js";
2
+ import { c as createManager } from "./xstate.esm-Dkm1jy5u.esm.js";
3
+ import { n as BrowserVisibilityObserverProvider, r as setWasmDsFlagSync } from "./BrowserStorageProvider-D5xc7Lqo.esm.js";
4
+ import { r as primeMotionFromUserGestureIfNeeded } from "./permissionServices-CPDboRoE.esm.js";
5
5
 
6
6
  //#region src/internal/faceCapture/faceCaptureManagerFactory.ts
7
7
  function getPermissionStatus(snapshot) {
@@ -194,14 +194,10 @@ function getAuthFaceCaptureSubstateScreen(snapshot) {
194
194
  }
195
195
  return eventScreenNames.authFace;
196
196
  }
197
- function getTopLevelState(value) {
198
- if (typeof value === "string") return value;
199
- if (typeof value === "object") return Object.keys(value)[0];
200
- }
201
197
  function getAuthFaceScreenName(snapshot) {
202
198
  const { value } = snapshot;
203
199
  if (value === void 0 || value === null) return void 0;
204
- const topLevel = getTopLevelState(value);
200
+ const topLevel = topLevelStateName(value);
205
201
  if (topLevel === void 0) return void 0;
206
202
  switch (topLevel) {
207
203
  case "tutorial": return eventScreenNames.authFaceTutorial;
@@ -220,7 +216,7 @@ function getFaceCaptureScreenName(snapshot, moduleName) {
220
216
  if (moduleName === eventModuleNames.authFace || moduleName === eventModuleNames.authentication) return getAuthFaceScreenName(snapshot);
221
217
  const { value } = snapshot;
222
218
  if (value === void 0 || value === null) return void 0;
223
- const topLevel = getTopLevelState(value);
219
+ const topLevel = topLevelStateName(value);
224
220
  if (topLevel === void 0) return void 0;
225
221
  switch (topLevel) {
226
222
  case "idle": return "faceCapture.loading.processing";
@@ -285,19 +281,104 @@ function createApi({ actor, trackElementClicked, trackCaptureAttemptFinished })
285
281
  }
286
282
  };
287
283
  }
284
+ /**
285
+ * Figma-aligned, machine-stable reason token per face error code. Mirrors the
286
+ * leaf used by `getResultErrorScreen` (e.g. `LENSES_DETECTED` → `lensesDetected`)
287
+ * so the `errorTriggered` payload, error name and screen name stay in sync with
288
+ * the Face Capture Figma `resultError.*` frames.
289
+ */
290
+ function getFaceErrorReason(errorCode) {
291
+ switch (errorCode) {
292
+ case "LENSES_ERROR":
293
+ case "LENSES_DETECTED": return "lensesDetected";
294
+ case "BRIGHTNESS_ERROR": return "tooBright";
295
+ case "MASK_ERROR":
296
+ case "FACE_MASK_DETECTED": return "faceMaskDetected";
297
+ case "FACE_TOO_DARK":
298
+ case "TOO_DARK_ERROR": return "tooDark";
299
+ case "CLOSED_EYES_ERROR":
300
+ case "CLOSED_EYES_DETECTED": return "eyesClosed";
301
+ case "HEAD_COVER_ERROR":
302
+ case "HEAD_COVER_DETECTED": return "headCovered";
303
+ case "FACE_OCCLUDED": return "faceOcclusion";
304
+ case "TOO_BLURRY_ERROR":
305
+ case "FACE_TOO_BLURRY":
306
+ case "BAD_PHOTO_QUALITY":
307
+ case "SELFIE_IMAGE_LOW_QUALITY": return "lowQuality";
308
+ case "SERVER_ERROR":
309
+ case "PROCESSING_ERROR":
310
+ case "BAD_REQUEST": return "processingFailed";
311
+ case "FACE_NOT_FOUND":
312
+ case "MULTIPLE_FACES":
313
+ case "FACE_CROPPING_FAILED":
314
+ case "FACE_TOO_SMALL":
315
+ case "LIVENESS_ERROR":
316
+ default: return "faceNotAligned";
317
+ }
318
+ }
319
+ /**
320
+ * Reports whether the given `capture` substate is active in a raw XState value
321
+ * without needing a live snapshot (so it works on the plain objects used in
322
+ * tests). Robust to parallel states (checks membership rather than the first
323
+ * key).
324
+ */
325
+ function isFaceCaptureSubstateActive(value, name) {
326
+ if (typeof value !== "object" || value === null) return false;
327
+ const capture = value.capture;
328
+ if (typeof capture === "string") return capture === name;
329
+ if (typeof capture === "object" && capture !== null) return name in capture;
330
+ return false;
331
+ }
332
+ /**
333
+ * Figma-aligned error name for every Face Capture error state. Returned without
334
+ * the module prefix — the instrumentation adapter prepends the module token to
335
+ * produce e.g. `faceCapture.error.lensesDetected`. Returning `undefined` means
336
+ * "not an error state", which suppresses `errorTriggered`.
337
+ *
338
+ * Covers: recoverable result errors (`capture.uploadError`), the bad-network
339
+ * screen (`detecting` + `detectionStatus === 'offline'`), and the fatal
340
+ * top-level `error` state.
341
+ */
342
+ function getFaceCaptureErrorName(snapshot) {
343
+ const topLevel = topLevelStateName(snapshot.value);
344
+ if (topLevel === void 0) return void 0;
345
+ if (topLevel === "error") return "error.unknown";
346
+ if (topLevel === "capture") {
347
+ if (isFaceCaptureSubstateActive(snapshot.value, "uploadError")) return `error.${getFaceErrorReason(snapshot.context.uploadError)}`;
348
+ if (isFaceCaptureSubstateActive(snapshot.value, "detecting") && snapshot.context.detectionStatus === "offline") return "error.noConnection";
349
+ }
350
+ }
288
351
  function getFaceCaptureErrorPayload(snapshot) {
352
+ const topLevel = topLevelStateName(snapshot.value);
353
+ if (topLevel === "error") return { reason: "fatal" };
354
+ if (topLevel === "capture" && isFaceCaptureSubstateActive(snapshot.value, "detecting") && snapshot.context.detectionStatus === "offline") return { reason: "noConnection" };
289
355
  const errorCode = snapshot.context.uploadError;
290
356
  if (typeof errorCode !== "string" || errorCode.length === 0) return;
291
- return { errorCode };
357
+ return {
358
+ errorCode,
359
+ reason: getFaceErrorReason(errorCode)
360
+ };
292
361
  }
293
- function createFaceCaptureManagerFromActor(actor, moduleName) {
362
+ /**
363
+ * Builds a face capture manager (selfie / authentication / captureOnly) from an
364
+ * already-created actor.
365
+ *
366
+ * `visibilityObserver` defaults to the browser `document.visibilitychange`
367
+ * provider so first-party and BYO-actor callers get foreground/background
368
+ * events without extra wiring. Construction lives here — a documented, narrow
369
+ * deviation from "never `new` a provider inside Core" (see
370
+ * `docs/patterns/CAPABILITY.md`). Pass a fake/no-op to override (tests do).
371
+ */
372
+ function createFaceCaptureManagerFromActor(actor, moduleName, visibilityObserver = new BrowserVisibilityObserverProvider()) {
294
373
  return createManager({
295
374
  actor,
296
375
  mapState,
297
376
  createApi,
298
377
  instrumentation: createManagerInstrumentation(moduleName, {
299
378
  getEventScreenName: (snapshot) => getFaceCaptureScreenName(snapshot, moduleName),
300
- getErrorPayload: getFaceCaptureErrorPayload
379
+ getErrorName: getFaceCaptureErrorName,
380
+ getErrorPayload: getFaceCaptureErrorPayload,
381
+ visibilityObserver
301
382
  })
302
383
  });
303
384
  }
@@ -1,12 +1,11 @@
1
- import { n as WasmPipeline } from "./warmup-Dg8Lh-50.js";
2
- import { t as Manager } from "./Manager-BHn8wH8K.js";
3
- import { t as ActorRefFrom } from "./Actor-Y0_Fj-KL.js";
4
- import { n as StateMachine, t as AnyStateMachine } from "./StateMachine-BC_nGvrc.js";
5
- import { t as CameraStream } from "./camera-SRBpPq2X.js";
6
- import { i as FlowModuleConfig, n as Flow } from "./types-DOUhndhT.js";
7
- import { a as IMLProviderCapability, c as IRecordingCapability, n as IWasmUtilCapability, o as MLProviderConfig, s as IStorageCapability, t as DeepsightService } from "./deepsightService-B7ShOkWL.js";
8
- import { n as PermissionStatus, t as PermissionResult } from "./types-ya0LN_MX.js";
9
- import { n as IncodeCanvas, t as StreamCanvasCapture } from "./StreamCanvasCapture-yyl20qd9.js";
1
+ import { n as WasmPipeline } from "./warmup--6HA3yUR.js";
2
+ import { n as AnyStateMachine, r as StateMachine, t as Manager } from "./Manager-B2OEDYqf.js";
3
+ import { t as ActorRefFrom } from "./Actor-fIPLXfoi.js";
4
+ import { a as IMLProviderCapability, c as IRecordingCapability, n as IWasmUtilCapability, o as MLProviderConfig, s as IStorageCapability, t as DeepsightService, u as IVisibilityObserverCapability } from "./deepsightService-ByNKY5Jv.js";
5
+ import { t as CameraStream } from "./camera-biGPWlmx.js";
6
+ import { i as FlowModuleConfig, n as Flow } from "./types-Dv-9WPJX.js";
7
+ import { n as PermissionStatus, t as PermissionResult } from "./types-F0IXbaCB.js";
8
+ import { n as IncodeCanvas, t as StreamCanvasCapture } from "./StreamCanvasCapture-Ctgyx-oD.js";
10
9
 
11
10
  //#region src/modules/authentication/authenticationStateMachine.d.ts
12
11
  declare const _authenticationMachine: AnyStateMachine;
@@ -115,6 +114,7 @@ declare const FACE_ERROR_CODES: {
115
114
  readonly NONEXISTENT_CUSTOMER: "NONEXISTENT_CUSTOMER";
116
115
  readonly HINT_NOT_PROVIDED: "HINT_NOT_PROVIDED";
117
116
  readonly SELFIE_IMAGE_LOW_QUALITY: "SELFIE_IMAGE_LOW_QUALITY";
117
+ readonly NO_MORE_ATTEMPTS: "NO_MORE_ATTEMPTS";
118
118
  };
119
119
  type FaceErrorCode = (typeof FACE_ERROR_CODES)[keyof typeof FACE_ERROR_CODES];
120
120
  //#endregion
@@ -406,13 +406,20 @@ type SelfieConfig = FlowModuleConfig['SELFIE'] & BaseFaceCaptureConfig;
406
406
  /**
407
407
  * Public selfie configuration for the captureOnly flow.
408
408
  *
409
- * Differs from {@link SelfieConfig} by requiring an `onCapture` callback —
410
- * captureOnly bypasses the Incode upload pipeline and delivers the rich
411
- * capture payload locally instead. Compile-time enforcement (vs. a runtime
412
- * check) prevents shipping a captureOnly flow with no destination for the
413
- * payload.
409
+ * captureOnly bypasses the Incode upload/processing pipeline, so this config
410
+ * intentionally exposes ONLY the options that affect the on-device capture
411
+ * experience: the tutorial/preview UX, attempts, timeout, and the on-device
412
+ * face validations. Backend-coupled flags of {@link SelfieConfig} (face
413
+ * recording, assisted onboarding, on-device results submission, …) don't apply
414
+ * here and are omitted.
415
+ *
416
+ * `onCapture` is the one required field — it receives the captured image
417
+ * locally (compile-time enforced so you can't ship a captureOnly flow with no
418
+ * destination for the payload). Everything else is optional and defaulted by
419
+ * the factory (see `DEFAULT_SELFIE_CAPTURE_ONLY_CONFIG`); set only what you care
420
+ * about, e.g. `{ onCapture, captureAttempts: 5, validateBrightness: true }`.
414
421
  */
415
- type SelfieCaptureOnlyConfig = SelfieConfig & {
422
+ type SelfieCaptureOnlyConfig = Partial<Pick<SelfieConfig, 'showTutorial' | 'showPreview' | 'captureAttempts' | 'autoCaptureTimeout' | 'validateLenses' | 'validateFaceMask' | 'validateHeadCover' | 'validateClosedEyes' | 'validateBrightness'>> & {
416
423
  onCapture: (response: FaceCaptureOnlyResponse) => void | Promise<void>;
417
424
  };
418
425
  type SelfieDependencies = FaceCaptureDependencies;
@@ -659,7 +666,17 @@ type FaceCaptureErrorState = {
659
666
  };
660
667
  /** Union of all possible face capture states */
661
668
  type FaceCaptureManagerState = FaceCaptureIdleState | FaceCaptureLoadingState | FaceCaptureTutorialState | FaceCapturePermissionsState | FaceCaptureCaptureState | FaceCaptureProcessingState | FaceCaptureFinishedState | FaceCaptureClosedState | FaceCaptureErrorState;
662
- declare function createFaceCaptureManagerFromActor(actor: FaceCaptureActor, moduleName: string): Manager<FaceCaptureManagerState> & {
669
+ /**
670
+ * Builds a face capture manager (selfie / authentication / captureOnly) from an
671
+ * already-created actor.
672
+ *
673
+ * `visibilityObserver` defaults to the browser `document.visibilitychange`
674
+ * provider so first-party and BYO-actor callers get foreground/background
675
+ * events without extra wiring. Construction lives here — a documented, narrow
676
+ * deviation from "never `new` a provider inside Core" (see
677
+ * `docs/patterns/CAPABILITY.md`). Pass a fake/no-op to override (tests do).
678
+ */
679
+ declare function createFaceCaptureManagerFromActor(actor: FaceCaptureActor, moduleName: string, visibilityObserver?: IVisibilityObserverCapability): Manager<FaceCaptureManagerState> & {
663
680
  /**
664
681
  * Starts the face capture flow.
665
682
  * Goes to `tutorial` if showTutorial is true, otherwise to `loading`.
@@ -1,10 +1,10 @@
1
- import { r as getToken } from "./api-CESGtpbH.esm.js";
2
- import { a as fromPromise, i as fromCallback, r as assign, t as setup } from "./xstate.esm-C9wncMQa.esm.js";
3
- import { n as invokeRequestPermissionActor, t as checkPermission } from "./permissionServices-CG3bMSfG.esm.js";
4
- import { d as sendLabelInspectionEvent, f as startDetection, l as initializeCamera, n as preloadOpenViduProvider, p as stopStream, r as flagFaceManualReview, t as createRecordingService, u as initializeDeepsightSession } from "./recordingService-Bn9EdCmz.esm.js";
5
- import { t as FACE_ERROR_CODES } from "./types-DsnEVMhr.esm.js";
6
- import { t as StreamCanvasCapture } from "./StreamCanvasCapture-ImiDQdVA.esm.js";
7
- import { n as needsMotionPrimeOnlyFromPermission, r as resolveStoredPermissionResult, t as isReadyForCaptureFromPermission } from "./permissionGuards-C1ispV96.esm.js";
1
+ import { r as getToken } from "./api-DUZwyz0o.esm.js";
2
+ import { a as fromPromise, i as fromCallback, r as assign, t as setup } from "./xstate.esm-Dkm1jy5u.esm.js";
3
+ import { n as invokeRequestPermissionActor, t as checkPermission } from "./permissionServices-CPDboRoE.esm.js";
4
+ import { d as sendLabelInspectionEvent, f as startDetection, l as initializeCamera, n as preloadOpenViduProvider, p as stopStream, r as flagFaceManualReview, t as createRecordingService, u as initializeDeepsightSession } from "./recordingService-CxMJP4tQ.esm.js";
5
+ import { t as FACE_ERROR_CODES } from "./types-BdVOWGGW.esm.js";
6
+ import { t as StreamCanvasCapture } from "./StreamCanvasCapture-Dr5n_iK1.esm.js";
7
+ import { n as needsMotionPrimeOnlyFromPermission, r as resolveStoredPermissionResult, t as isReadyForCaptureFromPermission } from "./permissionGuards-D-Z-lgNj.esm.js";
8
8
 
9
9
  //#region src/internal/faceCapture/faceCaptureSetup.ts
10
10
  const getAttemptsFromConfig = (config) => {
@@ -1,6 +1,6 @@
1
- import { t as api } from "./api-CESGtpbH.esm.js";
2
- import { t as endpoints } from "./endpoints-BeTK0Mlt.esm.js";
3
- import { a as fromPromise, r as assign, t as setup } from "./xstate.esm-C9wncMQa.esm.js";
1
+ import { t as api } from "./api-DUZwyz0o.esm.js";
2
+ import { t as endpoints } from "./endpoints-BM2_j_IE.esm.js";
3
+ import { a as fromPromise, r as assign, t as setup } from "./xstate.esm-Dkm1jy5u.esm.js";
4
4
 
5
5
  //#region src/modules/face-match/constants.ts
6
6
  /**
@@ -67,9 +67,11 @@ async function fetchSecondIdImages(signal) {
67
67
  /**
68
68
  * Triggers server-side face processing/matching for the captured selfie.
69
69
  *
70
- * Used when an AUTHENTICATION module is present in the flow (`processFaceBeforeMatch`):
71
- * the auth capture step skips server-side processing, so the match must be triggered here
72
- * before `GET /omni/get/score` reflects it. Mirrors SDK 1's FaceMatch module.
70
+ * Always run by face-match before reading the score, mirroring SDK 1's FaceMatch module.
71
+ * Some capture steps skip server-side face processing (e.g. AUTHENTICATION and the
72
+ * capture-only selfie variant), so the match must be (re)triggered here before
73
+ * `GET /omni/get/score` can reflect it. When the selfie was already processed upstream
74
+ * (e.g. the regular selfie module) this is a harmless reprocess.
73
75
  *
74
76
  * The response body is intentionally ignored — face-match re-reads the result via
75
77
  * `fetchScore`. A non-ok response throws an Error carrying the backend `status`/`data` so
@@ -91,7 +93,7 @@ async function processFaceForMatch(matchingType, signal) {
91
93
  * Fetches all face match data in parallel (images, score, and optionally second ID images).
92
94
  */
93
95
  async function fetchFaceMatchData(config, signal) {
94
- if (config.processFaceBeforeMatch) await processFaceForMatch(config.matchingType, signal);
96
+ await processFaceForMatch(config.matchingType, signal);
95
97
  const promises = [fetchFaceMatchImages(signal), fetchScore(signal)];
96
98
  if (config.matchingType === "secondId") promises.push(fetchSecondIdImages(signal));
97
99
  const [imagesRes, resultRes, secondIdRes] = await Promise.all(promises);
@@ -1,4 +1,4 @@
1
- import "./Manager-BHn8wH8K.js";
2
- import "./Actor-Y0_Fj-KL.js";
3
- import { a as FieldComparisonActor, c as FieldComparisonFields, i as createFieldComparisonManagerFromActor, n as FieldComparisonState, o as fieldComparisonMachine, r as createFieldComparisonManager, s as FieldComparisonConfig, t as FieldComparisonManager } from "./fieldComparisonManager-Bu5TaSr3.js";
1
+ import "./Manager-B2OEDYqf.js";
2
+ import "./Actor-fIPLXfoi.js";
3
+ import { a as FieldComparisonActor, c as FieldComparisonFields, i as createFieldComparisonManagerFromActor, n as FieldComparisonState, o as fieldComparisonMachine, r as createFieldComparisonManager, s as FieldComparisonConfig, t as FieldComparisonManager } from "./fieldComparisonManager-BXc6-DJv.js";
4
4
  export { type FieldComparisonActor, type FieldComparisonConfig, type FieldComparisonFields, type FieldComparisonManager, type FieldComparisonState, createFieldComparisonManager, createFieldComparisonManagerFromActor, fieldComparisonMachine };
@@ -1,7 +1,7 @@
1
- import "./api-CESGtpbH.esm.js";
2
- import "./events-Dvvriq9l.esm.js";
3
- import "./endpoints-BeTK0Mlt.esm.js";
4
- import "./xstate.esm-C9wncMQa.esm.js";
5
- import { n as createFieldComparisonManagerFromActor, r as fieldComparisonMachine, t as createFieldComparisonManager } from "./fieldComparisonManager-COGI2ARD.esm.js";
1
+ import "./api-DUZwyz0o.esm.js";
2
+ import "./events-DN-u67gb.esm.js";
3
+ import "./endpoints-BM2_j_IE.esm.js";
4
+ import "./xstate.esm-Dkm1jy5u.esm.js";
5
+ import { n as createFieldComparisonManagerFromActor, r as fieldComparisonMachine, t as createFieldComparisonManager } from "./fieldComparisonManager-Dic0DVgl.esm.js";
6
6
 
7
7
  export { createFieldComparisonManager, createFieldComparisonManagerFromActor, fieldComparisonMachine };
@@ -1,5 +1,5 @@
1
- import { t as Manager } from "./Manager-BHn8wH8K.js";
2
- import { t as ActorRefFrom } from "./Actor-Y0_Fj-KL.js";
1
+ import { t as Manager } from "./Manager-B2OEDYqf.js";
2
+ import { t as ActorRefFrom } from "./Actor-fIPLXfoi.js";
3
3
 
4
4
  //#region src/modules/field-comparison/types.d.ts
5
5
 
@@ -1,7 +1,7 @@
1
- import { t as api } from "./api-CESGtpbH.esm.js";
2
- import { n as eventModuleNames, o as createManagerInstrumentation } from "./events-Dvvriq9l.esm.js";
3
- import { t as endpoints } from "./endpoints-BeTK0Mlt.esm.js";
4
- import { a as fromPromise, c as createManager, r as assign, s as createActor, t as setup } from "./xstate.esm-C9wncMQa.esm.js";
1
+ import { t as api } from "./api-DUZwyz0o.esm.js";
2
+ import { n as eventModuleNames, s as createManagerInstrumentation } from "./events-DN-u67gb.esm.js";
3
+ import { t as endpoints } from "./endpoints-BM2_j_IE.esm.js";
4
+ import { a as fromPromise, c as createManager, r as assign, s as createActor, t as setup } from "./xstate.esm-Dkm1jy5u.esm.js";
5
5
 
6
6
  //#region src/modules/field-comparison/fieldComparisonServices.ts
7
7
  /** Submit first and last name for backend field comparison. Throws on failure. */
@@ -1,6 +1,6 @@
1
- import { t as Manager } from "./Manager-BHn8wH8K.js";
2
- import "./camera-SRBpPq2X.js";
3
- import "./StreamCanvasCapture-yyl20qd9.js";
1
+ import { t as Manager } from "./Manager-B2OEDYqf.js";
2
+ import "./camera-biGPWlmx.js";
3
+ import "./StreamCanvasCapture-Ctgyx-oD.js";
4
4
 
5
5
  //#region src/modules/fiscal-qr/types.d.ts
6
6
  /**
@@ -1,15 +1,15 @@
1
- import { t as BrowserTimerProvider } from "./BrowserTimerProvider-DhNc_x02.esm.js";
2
- import { t as api } from "./api-CESGtpbH.esm.js";
3
- import { h as addEvent, n as eventModuleNames, o as createManagerInstrumentation } from "./events-Dvvriq9l.esm.js";
4
- import { t as endpoints } from "./endpoints-BeTK0Mlt.esm.js";
5
- import "./platform-SKvEfCBh.esm.js";
6
- import { a as fromPromise, c as createManager, i as fromCallback, r as assign, s as createActor, t as setup } from "./xstate.esm-C9wncMQa.esm.js";
7
- import { i as stopCameraStream } from "./camera-DJWm3V4g.esm.js";
8
- import "./ITimerCapability-CB0I1Uf2.esm.js";
9
- import "./canvas-SKcRBxsk.esm.js";
10
- import { n as getBackCameraStream } from "./backCameraStream-D7Wo4Nbx.esm.js";
11
- import { t as StreamCanvasCapture } from "./StreamCanvasCapture-ImiDQdVA.esm.js";
12
- import "./http-Cai3IoLS.esm.js";
1
+ import { t as BrowserTimerProvider } from "./BrowserTimerProvider-BVgutW_b.esm.js";
2
+ import { t as api } from "./api-DUZwyz0o.esm.js";
3
+ import { g as addEvent, n as eventModuleNames, s as createManagerInstrumentation } from "./events-DN-u67gb.esm.js";
4
+ import { t as endpoints } from "./endpoints-BM2_j_IE.esm.js";
5
+ import "./platform-BfoqeM61.esm.js";
6
+ import { a as fromPromise, c as createManager, i as fromCallback, r as assign, s as createActor, t as setup } from "./xstate.esm-Dkm1jy5u.esm.js";
7
+ import { i as stopCameraStream } from "./camera-x4LjGTjZ.esm.js";
8
+ import "./ITimerCapability-BvH0pDwp.esm.js";
9
+ import "./canvas-7uX2izHb.esm.js";
10
+ import { n as getBackCameraStream } from "./backCameraStream-iftkf3rd.esm.js";
11
+ import { t as StreamCanvasCapture } from "./StreamCanvasCapture-Dr5n_iK1.esm.js";
12
+ import "./http-CfVTgMfU.esm.js";
13
13
  import { BrowserQRCodeReader } from "@zxing/browser";
14
14
 
15
15
  //#region src/modules/fiscal-qr/fiscalQrConstants.ts
@@ -1,7 +1,7 @@
1
- import "./camera-SRBpPq2X.js";
2
- import "./types-Bj9hdFjU.js";
3
- import "./types-DvGZI7BF.js";
4
- import "./types-DOUhndhT.js";
5
- import "./flowCompletionService-BdR2cGgB.js";
6
- import { a as FlowEventListener, c as FlowModuleStartedEvent, i as FlowEvent, l as FlowReadyEvent, n as FlowCompletedEvent, o as FlowEventSubscribable, r as FlowErrorEvent, s as FlowModuleCompletedEvent, t as FlowClosedEvent, u as FlowStartedEvent } from "./index-B5hPA0Bg.js";
1
+ import "./camera-biGPWlmx.js";
2
+ import "./types-Z9wv19v2.js";
3
+ import "./types-DYZja-k9.js";
4
+ import "./types-Dv-9WPJX.js";
5
+ import "./flowCompletionService-CdGDKv0z.js";
6
+ import { a as FlowEventListener, c as FlowModuleStartedEvent, i as FlowEvent, l as FlowReadyEvent, n as FlowCompletedEvent, o as FlowEventSubscribable, r as FlowErrorEvent, s as FlowModuleCompletedEvent, t as FlowClosedEvent, u as FlowStartedEvent } from "./index-BgxYUYuD.js";
7
7
  export { FlowClosedEvent, FlowCompletedEvent, FlowErrorEvent, FlowEvent, FlowEventListener, FlowEventSubscribable, FlowModuleCompletedEvent, FlowModuleStartedEvent, FlowReadyEvent, FlowStartedEvent };
package/dist/flow.d.ts CHANGED
@@ -1,14 +1,13 @@
1
- import { n as WasmPipeline } from "./warmup-Dg8Lh-50.js";
2
- import { t as Manager } from "./Manager-BHn8wH8K.js";
3
- import { t as AnyStateMachine } from "./StateMachine-BC_nGvrc.js";
4
- import "./camera-SRBpPq2X.js";
5
- import "./types-Bj9hdFjU.js";
6
- import "./types-DvGZI7BF.js";
7
- import { i as FlowModuleConfig, n as Flow, r as FlowModule } from "./types-DOUhndhT.js";
8
- import { n as GetFinishStatusFn, t as FinishStatus } from "./flowCompletionService-BdR2cGgB.js";
9
- import { o as FlowEventSubscribable } from "./index-B5hPA0Bg.js";
10
- import { n as ModuleRegistry } from "./types-NuT8ftBV.js";
11
- import * as xstate715 from "xstate";
1
+ import { n as WasmPipeline } from "./warmup--6HA3yUR.js";
2
+ import { n as AnyStateMachine, t as Manager } from "./Manager-B2OEDYqf.js";
3
+ import "./camera-biGPWlmx.js";
4
+ import "./types-Z9wv19v2.js";
5
+ import "./types-DYZja-k9.js";
6
+ import { i as FlowModuleConfig, n as Flow, r as FlowModule } from "./types-Dv-9WPJX.js";
7
+ import { a as classifyScoreStatus, i as TotalScore, n as FinishStatus, r as GetFinishStatusFn, s as getTotalScoreStatus, t as FinishScreenVariant } from "./flowCompletionService-CdGDKv0z.js";
8
+ import { o as FlowEventSubscribable } from "./index-BgxYUYuD.js";
9
+ import { n as ModuleRegistry } from "./types-DpTWgfKY.js";
10
+ import * as xstate1266 from "xstate";
12
11
 
13
12
  //#region src/modules/flow/flowUtils.d.ts
14
13
  type NormalizeFlowModulesOptions = {
@@ -60,7 +59,7 @@ type GetFlow = (signal: AbortSignal, options?: GetFlowOptions) => Promise<Flow>;
60
59
  declare const getFlow: GetFlow;
61
60
  //#endregion
62
61
  //#region src/modules/flow/noOpFlowModuleMachine.d.ts
63
- declare const noOpFlowModuleMachine: xstate715.StateMachine<xstate715.MachineContext, xstate715.AnyEventObject, {}, never, never, never, never, "finished", string, xstate715.NonReducibleUnknown, xstate715.NonReducibleUnknown, xstate715.EventObject, xstate715.MetaObject, {
62
+ declare const noOpFlowModuleMachine: xstate1266.StateMachine<xstate1266.MachineContext, xstate1266.AnyEventObject, {}, never, never, never, never, "finished", string, xstate1266.NonReducibleUnknown, xstate1266.NonReducibleUnknown, xstate1266.EventObject, xstate1266.MetaObject, {
64
63
  readonly id: "noOpFlowModule";
65
64
  readonly initial: "finished";
66
65
  readonly states: {
@@ -230,6 +229,8 @@ type OrchestratedFlowEvent = {
230
229
  type: 'MODULE_COMPLETE';
231
230
  } | {
232
231
  type: 'COMPLETE_FLOW';
232
+ } | {
233
+ type: 'FINISH_FLOW';
233
234
  } | {
234
235
  type: 'HOME_CONTINUE';
235
236
  } | {
@@ -288,6 +289,7 @@ type OrchestratedFlowErrorState = {
288
289
  status: 'error';
289
290
  error: string;
290
291
  errorCode?: number;
292
+ moduleErrorCode?: string;
291
293
  homeScreen: OrchestratedFlowHomeScreen;
292
294
  presentation: OrchestratedFlowPresentation;
293
295
  };
@@ -326,10 +328,18 @@ declare function createOrchestratedFlowManager(options: CreateOrchestratedFlowAc
326
328
  */
327
329
  completeModule(): void;
328
330
  /**
329
- * Skip all remaining modules and go straight to the completion step.
330
- * Used when the flow was completed externally (e.g. via redirect to mobile).
331
+ * Skip all remaining modules and complete the flow now, notifying the
332
+ * backend (getFinishStatus) on the way to the completion step.
331
333
  */
332
334
  completeFlow(): void;
335
+ /**
336
+ * Finish the flow because the onboarding was already completed externally —
337
+ * e.g. the REDIRECT_TO_MOBILE handoff finished end-to-end on mobile. Lands
338
+ * on the completion screen WITHOUT calling getFinishStatus: mobile already
339
+ * notified the backend, and the desktop never reached its own finish.
340
+ * Use this (not `completeFlow`) from REDIRECT_TO_MOBILE's `onFinish`.
341
+ */
342
+ finishFlow(): void;
333
343
  /**
334
344
  * Signal that the current module encountered a terminal error, optionally
335
345
  * with its machine-readable `moduleErrorCode`. The flow machine decides what
@@ -363,4 +373,4 @@ declare function createOrchestratedFlowManager(options: CreateOrchestratedFlowAc
363
373
  continueFromHome(): Promise<void>;
364
374
  } & FlowEventSubscribable;
365
375
  //#endregion
366
- export { type FinishStatus, type Flow, type FlowModule, type FlowModuleConfig, type FlowReadyState, type FlowState, type LazyModule, type LazyModuleRegistry, type ModuleLoader, type ModuleLoaderRegistry, type ModuleRegistry, type OrchestratedFlowFinishedState, type OrchestratedFlowHomeScreen, type OrchestratedFlowInput, type OrchestratedFlowPresentation, type OrchestratedFlowReadyState, type OrchestratedFlowState, createFlowManager, createModuleLoader, createOrchestratedFlowManager, getFlow, getRequiredWasmPipelines, noOpFlowModuleMachine, normalizeFlowModules };
376
+ export { type FinishScreenVariant, type FinishStatus, type Flow, type FlowModule, type FlowModuleConfig, type FlowReadyState, type FlowState, type LazyModule, type LazyModuleRegistry, type ModuleLoader, type ModuleLoaderRegistry, type ModuleRegistry, type OrchestratedFlowFinishedState, type OrchestratedFlowHomeScreen, type OrchestratedFlowInput, type OrchestratedFlowPresentation, type OrchestratedFlowReadyState, type OrchestratedFlowState, type TotalScore, classifyScoreStatus, createFlowManager, createModuleLoader, createOrchestratedFlowManager, getFlow, getRequiredWasmPipelines, getTotalScoreStatus, noOpFlowModuleMachine, normalizeFlowModules };
package/dist/flow.esm.js CHANGED
@@ -1,19 +1,21 @@
1
- import "./api-CESGtpbH.esm.js";
2
- import { h as addEvent } from "./events-Dvvriq9l.esm.js";
3
- import "./endpoints-BeTK0Mlt.esm.js";
4
- import "./stats-BMNUG1AU.esm.js";
5
- import "./IpifyProvider-D4LWD15E.esm.js";
6
- import "./browserSimulation-B1dWiXp7.esm.js";
7
- import "./sessionInitializer-B8H5MsXM.esm.js";
8
- import "./platform-SKvEfCBh.esm.js";
9
- import "./getBrowser-C8DP7oTB.esm.js";
10
- import { a as fromPromise, c as createManager, r as assign, s as createActor, t as setup } from "./xstate.esm-C9wncMQa.esm.js";
11
- import "./apiError-B-j-gyDx.esm.js";
12
- import "./types-DsnEVMhr.esm.js";
13
- import "./session-DoVb-OcB.esm.js";
14
- import { n as getRequiredWasmPipelines, r as normalizeFlowModules, t as getFlow } from "./flowServices-BTuHLHVr.esm.js";
15
- import { n as isAdvanceableError, r as attachFlowEventEmitter, t as runChildModule } from "./runChildModule-CuoHZ1cx.esm.js";
16
- import { t as getFinishStatus } from "./flowCompletionService-DdGojV9K.esm.js";
1
+ import "./BrowserTimerProvider-BVgutW_b.esm.js";
2
+ import "./api-DUZwyz0o.esm.js";
3
+ import { g as addEvent } from "./events-DN-u67gb.esm.js";
4
+ import "./endpoints-BM2_j_IE.esm.js";
5
+ import "./stats-DntyIiGr.esm.js";
6
+ import "./IpifyProvider-oZf7Ke1O.esm.js";
7
+ import "./browserSimulation-CGjpdNA1.esm.js";
8
+ import "./sessionInitializer-CaiGA8GP.esm.js";
9
+ import "./platform-BfoqeM61.esm.js";
10
+ import "./getBrowser-Dv8LZyHE.esm.js";
11
+ import "./tri-CtxWthxz.esm.js";
12
+ import { a as fromPromise, c as createManager, r as assign, s as createActor, t as setup } from "./xstate.esm-Dkm1jy5u.esm.js";
13
+ import "./apiError-D-GTvFrH.esm.js";
14
+ import "./types-BdVOWGGW.esm.js";
15
+ import "./session-Be_IA1e0.esm.js";
16
+ import { n as getRequiredWasmPipelines, r as normalizeFlowModules, t as getFlow } from "./flowServices-ar5DXv71.esm.js";
17
+ import { n as getFinishStatus, r as getTotalScoreStatus, t as classifyScoreStatus } from "./flowCompletionService-D_CsiDZM.esm.js";
18
+ import { n as isAdvanceableError, r as attachFlowEventEmitter, t as runChildModule } from "./runChildModule-C9G0wfVC.esm.js";
17
19
 
18
20
  //#region src/modules/flow/noOpFlowModuleMachine.ts
19
21
  const noOpFlowModuleMachine = setup({}).createMachine({
@@ -310,13 +312,6 @@ function getModuleConfig(module, flow) {
310
312
  ...config,
311
313
  ageAssurance: config.ageAssurance ?? flow?.ageAssurance
312
314
  };
313
- if (module?.key === "FACE_MATCH") {
314
- const hasAuthentication = flow?.flowModules?.some((m) => m.key === "AUTHENTICATION") ?? false;
315
- return {
316
- ...config,
317
- processFaceBeforeMatch: hasAuthentication
318
- };
319
- }
320
315
  return config;
321
316
  }
322
317
  function createBaseContext(context, isHomeContinueLoading) {
@@ -434,6 +429,7 @@ const orchestratedFlowMachine = setup({
434
429
  prefetchNextLazyModule(context);
435
430
  },
436
431
  setFinishStatus: assign(({ event }) => ({ finishStatus: event.output })),
432
+ setFinishStatusFailed: assign({ moduleErrorCode: "FINISH_STATUS_FAILED" }),
437
433
  setModuleErrorCode: assign(({ event }) => ({ moduleErrorCode: event.moduleErrorCode })),
438
434
  trackAdvanceableModuleError: ({ context, event }) => {
439
435
  addEvent({
@@ -451,6 +447,7 @@ const orchestratedFlowMachine = setup({
451
447
  isAdvanceableModuleErrorOnLastStep: ({ context, event }) => isAdvanceableError(event.moduleErrorCode) && context.currentStepIndex >= 0 && context.currentStepIndex === context.steps.length - 1,
452
448
  isLastStep: ({ context }) => context.currentStepIndex >= 0 && context.currentStepIndex === context.steps.length - 1,
453
449
  canGoNext: ({ context }) => context.currentStepIndex >= 0 && context.currentStepIndex < context.steps.length - 1,
450
+ isOnboardingFinishedSignal: ({ event }) => event.output?.action === "onboardingFinished",
454
451
  shouldEnterHome: ({ context }) => shouldEnterHome(context),
455
452
  hasModule: ({ context, event }) => {
456
453
  if (!("output" in event)) return false;
@@ -577,13 +574,20 @@ const orchestratedFlowMachine = setup({
577
574
  }
578
575
  },
579
576
  on: {
580
- MODULE_COMPLETE: [{
581
- target: "completing",
582
- guard: "isLastStep"
583
- }, {
584
- target: "resolvingModule",
585
- actions: "incrementStep"
586
- }],
577
+ MODULE_COMPLETE: [
578
+ {
579
+ target: "finished",
580
+ guard: "isOnboardingFinishedSignal"
581
+ },
582
+ {
583
+ target: "completing",
584
+ guard: "isLastStep"
585
+ },
586
+ {
587
+ target: "resolvingModule",
588
+ actions: "incrementStep"
589
+ }
590
+ ],
587
591
  MODULE_ERROR: [
588
592
  {
589
593
  guard: "isAdvanceableModuleErrorOnLastStep",
@@ -605,6 +609,7 @@ const orchestratedFlowMachine = setup({
605
609
  }
606
610
  ],
607
611
  COMPLETE_FLOW: { target: "completing" },
612
+ FINISH_FLOW: { target: "finished" },
608
613
  RESET: {
609
614
  target: "idle",
610
615
  actions: "resetContext"
@@ -625,7 +630,7 @@ const orchestratedFlowMachine = setup({
625
630
  },
626
631
  onError: {
627
632
  target: "error",
628
- actions: "setError"
633
+ actions: ["setError", "setFinishStatusFailed"]
629
634
  }
630
635
  },
631
636
  on: { RESET: {
@@ -633,10 +638,7 @@ const orchestratedFlowMachine = setup({
633
638
  actions: "resetContext"
634
639
  } }
635
640
  },
636
- finished: { on: { RESET: {
637
- target: "idle",
638
- actions: "resetContext"
639
- } } },
641
+ finished: { type: "final" },
640
642
  error: {
641
643
  entry: "clearHomeContinueLoading",
642
644
  on: { RESET: {
@@ -715,6 +717,7 @@ function mapOrchestratedFlowState(snapshot, uiOptions) {
715
717
  status: "error",
716
718
  error: context.error ?? "Unknown error",
717
719
  errorCode: context.errorCode,
720
+ moduleErrorCode: context.moduleErrorCode,
718
721
  homeScreen: uiModel.homeScreen,
719
722
  presentation: uiModel.presentation
720
723
  };
@@ -800,6 +803,10 @@ function createOrchestratedFlowApi({ actor, getSnapshot, trackElementClicked },
800
803
  trackElementClicked?.("completeFlow");
801
804
  actor.send({ type: "COMPLETE_FLOW" });
802
805
  },
806
+ finishFlow() {
807
+ trackElementClicked?.("finishFlow");
808
+ actor.send({ type: "FINISH_FLOW" });
809
+ },
803
810
  errorModule(error, moduleErrorCode) {
804
811
  actor.send({
805
812
  type: "MODULE_ERROR",
@@ -868,4 +875,4 @@ function createOrchestratedFlowManager(options) {
868
875
  }
869
876
 
870
877
  //#endregion
871
- export { createFlowManager, createModuleLoader, createOrchestratedFlowManager, getFlow, getRequiredWasmPipelines, noOpFlowModuleMachine, normalizeFlowModules };
878
+ export { classifyScoreStatus, createFlowManager, createModuleLoader, createOrchestratedFlowManager, getFlow, getRequiredWasmPipelines, getTotalScoreStatus, noOpFlowModuleMachine, normalizeFlowModules };
@@ -15,5 +15,13 @@ type FinishStatus = {
15
15
  };
16
16
  type GetFinishStatusFn = (flowId: string | undefined | null, signal?: AbortSignal) => Promise<FinishStatus>;
17
17
  declare const getFinishStatus: GetFinishStatusFn;
18
+ /** The session's overall score status (superset of `FinishStatus['scoreStatus']`). */
19
+ type TotalScore = 'OK' | 'WARN' | 'MANUAL_OK' | 'FAIL' | 'UNKNOWN' | 'MANUAL_FAIL' | 'MANUAL' | 'MANUAL_PENDING';
20
+ /** The three status-specific finish screens a session can resolve to. */
21
+ type FinishScreenVariant = 'success' | 'error' | 'review';
22
+ /** Maps a session's `TotalScore` to the finish-screen variant; unknown or absent → `error`. */
23
+ declare function classifyScoreStatus(score: TotalScore | undefined): FinishScreenVariant;
24
+ /** Fetches the session's overall score status via a lighter read-only GET. */
25
+ declare function getTotalScoreStatus(signal?: AbortSignal): Promise<TotalScore>;
18
26
  //#endregion
19
- export { GetFinishStatusFn as n, getFinishStatus as r, FinishStatus as t };
27
+ export { classifyScoreStatus as a, TotalScore as i, FinishStatus as n, getFinishStatus as o, GetFinishStatusFn as r, getTotalScoreStatus as s, FinishScreenVariant as t };