@incodetech/core 2.1.0-rc.1 → 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-BKWm8rSA.esm.js → WasmUtilProvider-CIu373BZ.esm.js} +10 -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-BlR6mSaG.esm.js → authenticationManager-BM4LzyV7.esm.js} +17 -8
  19. package/dist/{authenticationManager-CaiQbp-q.d.ts → authenticationManager-Dve7mGLe.d.ts} +13 -3
  20. package/dist/{authenticationStateMachine-DkcGUMw5.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-Cg5Sk2tv.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-Dg1s_TY5.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-8tnddNx-.esm.js → deepsightLoader-BMmvk0X6.esm.js} +13 -13
  51. package/dist/{deepsightService-Dh5P-hLf.d.ts → deepsightService-ByNKY5Jv.d.ts} +13 -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 +177 -177
  55. package/dist/document-capture.esm.js +77 -14
  56. package/dist/document-upload.d.ts +47 -47
  57. package/dist/document-upload.esm.js +9 -9
  58. package/dist/{documentCaptureStateMachine-CUTUzUw_.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-klc-AImJ.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 +25 -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 -1
  84. package/dist/face-match.esm.js +5 -5
  85. package/dist/{faceCaptureManagerFactory-ej2j1LMr.esm.js → faceCaptureManagerFactory-BNXZchWX.esm.js} +94 -13
  86. package/dist/{faceCaptureManagerFactory-CjdBUS6s.d.ts → faceCaptureManagerFactory-CL-7T_vH.d.ts} +20 -10
  87. package/dist/{faceCaptureSetup-B9t6bYze.esm.js → faceCaptureSetup-Dqb09D24.esm.js} +7 -7
  88. package/dist/{faceMatchStateMachine-DeXXzSuz.esm.js → faceMatchStateMachine-FikRaUZH.esm.js} +3 -3
  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 -29
  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-ChgTNggJ.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 +41 -33
  118. package/dist/{idCaptureManager-D3pwWutw.esm.js → idCaptureManager-Bm6Wm6Qv.esm.js} +91 -9
  119. package/dist/{idCaptureManager-ChCNmgBj.d.ts → idCaptureManager-BvGUSN2e.d.ts} +14 -9
  120. package/dist/{idCaptureStateMachine-B3AiDIsT.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-Cww-NDtd.d.ts → identityReuseManager-DcWSvC-A.d.ts} +33 -33
  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-Dq6WiOZh.d.ts → mandatoryConsentManager-Tzl5Qd35.d.ts} +50 -50
  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-D0wGddy7.esm.js → permissionGuards-D-Z-lgNj.esm.js} +1 -1
  143. package/dist/{permissionServices-Doec4X5L.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-yRw7hfzU.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 +37 -30
  161. package/dist/{selfieManager-BNuTIGAz.esm.js → selfieManager-BRL6c_Oc.esm.js} +17 -8
  162. package/dist/{selfieManager-C2y_t6DG.d.ts → selfieManager-imY2dAcH.d.ts} +13 -3
  163. package/dist/{selfieStateMachine-Bv99bZJE.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-DRB-hgbV.esm.js → sessionInitializer-CaiGA8GP.esm.js} +13 -10
  168. package/dist/{setup-BwCluiw3.d.ts → setup-BJZAkajt.d.ts} +47 -1
  169. package/dist/{setup-CUO4mErT.esm.js → setup-C7tintPc.esm.js} +34 -7
  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 +161 -100
  195. package/dist/workflow.esm.js +85 -66
  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-Doec4X5L.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-Dh5P-hLf.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
@@ -666,7 +666,17 @@ type FaceCaptureErrorState = {
666
666
  };
667
667
  /** Union of all possible face capture states */
668
668
  type FaceCaptureManagerState = FaceCaptureIdleState | FaceCaptureLoadingState | FaceCaptureTutorialState | FaceCapturePermissionsState | FaceCaptureCaptureState | FaceCaptureProcessingState | FaceCaptureFinishedState | FaceCaptureClosedState | FaceCaptureErrorState;
669
- 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> & {
670
680
  /**
671
681
  * Starts the face capture flow.
672
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-Doec4X5L.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-yRw7hfzU.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-D0wGddy7.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
  /**
@@ -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 xstate766 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: xstate766.StateMachine<xstate766.MachineContext, xstate766.AnyEventObject, {}, never, never, never, never, "finished", string, xstate766.NonReducibleUnknown, xstate766.NonReducibleUnknown, xstate766.EventObject, xstate766.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-DRB-hgbV.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-ChgTNggJ.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({
@@ -427,6 +429,7 @@ const orchestratedFlowMachine = setup({
427
429
  prefetchNextLazyModule(context);
428
430
  },
429
431
  setFinishStatus: assign(({ event }) => ({ finishStatus: event.output })),
432
+ setFinishStatusFailed: assign({ moduleErrorCode: "FINISH_STATUS_FAILED" }),
430
433
  setModuleErrorCode: assign(({ event }) => ({ moduleErrorCode: event.moduleErrorCode })),
431
434
  trackAdvanceableModuleError: ({ context, event }) => {
432
435
  addEvent({
@@ -444,6 +447,7 @@ const orchestratedFlowMachine = setup({
444
447
  isAdvanceableModuleErrorOnLastStep: ({ context, event }) => isAdvanceableError(event.moduleErrorCode) && context.currentStepIndex >= 0 && context.currentStepIndex === context.steps.length - 1,
445
448
  isLastStep: ({ context }) => context.currentStepIndex >= 0 && context.currentStepIndex === context.steps.length - 1,
446
449
  canGoNext: ({ context }) => context.currentStepIndex >= 0 && context.currentStepIndex < context.steps.length - 1,
450
+ isOnboardingFinishedSignal: ({ event }) => event.output?.action === "onboardingFinished",
447
451
  shouldEnterHome: ({ context }) => shouldEnterHome(context),
448
452
  hasModule: ({ context, event }) => {
449
453
  if (!("output" in event)) return false;
@@ -570,13 +574,20 @@ const orchestratedFlowMachine = setup({
570
574
  }
571
575
  },
572
576
  on: {
573
- MODULE_COMPLETE: [{
574
- target: "completing",
575
- guard: "isLastStep"
576
- }, {
577
- target: "resolvingModule",
578
- actions: "incrementStep"
579
- }],
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
+ ],
580
591
  MODULE_ERROR: [
581
592
  {
582
593
  guard: "isAdvanceableModuleErrorOnLastStep",
@@ -598,6 +609,7 @@ const orchestratedFlowMachine = setup({
598
609
  }
599
610
  ],
600
611
  COMPLETE_FLOW: { target: "completing" },
612
+ FINISH_FLOW: { target: "finished" },
601
613
  RESET: {
602
614
  target: "idle",
603
615
  actions: "resetContext"
@@ -618,7 +630,7 @@ const orchestratedFlowMachine = setup({
618
630
  },
619
631
  onError: {
620
632
  target: "error",
621
- actions: "setError"
633
+ actions: ["setError", "setFinishStatusFailed"]
622
634
  }
623
635
  },
624
636
  on: { RESET: {
@@ -626,10 +638,7 @@ const orchestratedFlowMachine = setup({
626
638
  actions: "resetContext"
627
639
  } }
628
640
  },
629
- finished: { on: { RESET: {
630
- target: "idle",
631
- actions: "resetContext"
632
- } } },
641
+ finished: { type: "final" },
633
642
  error: {
634
643
  entry: "clearHomeContinueLoading",
635
644
  on: { RESET: {
@@ -708,6 +717,7 @@ function mapOrchestratedFlowState(snapshot, uiOptions) {
708
717
  status: "error",
709
718
  error: context.error ?? "Unknown error",
710
719
  errorCode: context.errorCode,
720
+ moduleErrorCode: context.moduleErrorCode,
711
721
  homeScreen: uiModel.homeScreen,
712
722
  presentation: uiModel.presentation
713
723
  };
@@ -793,6 +803,10 @@ function createOrchestratedFlowApi({ actor, getSnapshot, trackElementClicked },
793
803
  trackElementClicked?.("completeFlow");
794
804
  actor.send({ type: "COMPLETE_FLOW" });
795
805
  },
806
+ finishFlow() {
807
+ trackElementClicked?.("finishFlow");
808
+ actor.send({ type: "FINISH_FLOW" });
809
+ },
796
810
  errorModule(error, moduleErrorCode) {
797
811
  actor.send({
798
812
  type: "MODULE_ERROR",
@@ -861,4 +875,4 @@ function createOrchestratedFlowManager(options) {
861
875
  }
862
876
 
863
877
  //#endregion
864
- 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 };
@@ -0,0 +1,42 @@
1
+ import { t as api } from "./api-DUZwyz0o.esm.js";
2
+ import { t as endpoints } from "./endpoints-BM2_j_IE.esm.js";
3
+ import { n as toIncodeApiError } from "./apiError-D-GTvFrH.esm.js";
4
+
5
+ //#region src/modules/flow/flowCompletionService.ts
6
+ const getFinishStatus = async (flowId, signal) => {
7
+ const url = `${endpoints.finishStatus}${flowId ? `?flowId=${flowId}` : ""}`;
8
+ try {
9
+ return {
10
+ ...(await api.get(url, { signal })).data,
11
+ endScreenTitle: null,
12
+ endScreenText: null
13
+ };
14
+ } catch (error) {
15
+ toIncodeApiError(endpoints.finishStatus, error);
16
+ }
17
+ };
18
+ const SCORE_VARIANTS = {
19
+ OK: "success",
20
+ WARN: "success",
21
+ MANUAL_OK: "success",
22
+ FAIL: "error",
23
+ UNKNOWN: "error",
24
+ MANUAL_FAIL: "error",
25
+ MANUAL: "review",
26
+ MANUAL_PENDING: "review"
27
+ };
28
+ /** Maps a session's `TotalScore` to the finish-screen variant; unknown or absent → `error`. */
29
+ function classifyScoreStatus(score) {
30
+ return (score && SCORE_VARIANTS[score]) ?? "error";
31
+ }
32
+ /** Fetches the session's overall score status via a lighter read-only GET. */
33
+ async function getTotalScoreStatus(signal) {
34
+ try {
35
+ return (await api.get(endpoints.sessionTotalScoreStatus, { signal })).data.totalScoreStatus;
36
+ } catch (error) {
37
+ toIncodeApiError(endpoints.sessionTotalScoreStatus, error);
38
+ }
39
+ }
40
+
41
+ //#endregion
42
+ export { getFinishStatus as n, getTotalScoreStatus as r, classifyScoreStatus as t };
@@ -1,7 +1,7 @@
1
- import { t as api } from "./api-CESGtpbH.esm.js";
2
- import { t as endpoints } from "./endpoints-BeTK0Mlt.esm.js";
3
- import { n as getSessionFingerprintResult, r as initializeSession } from "./sessionInitializer-DRB-hgbV.esm.js";
4
- import { n as toIncodeApiError } from "./apiError-B-j-gyDx.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 { n as getSessionFingerprintResult, r as initializeSession } from "./sessionInitializer-CaiGA8GP.esm.js";
4
+ import { n as toIncodeApiError } from "./apiError-D-GTvFrH.esm.js";
5
5
 
6
6
  //#region src/modules/flow/flowUtils.ts
7
7
  const WASM_MODULE_PIPELINES = {
@@ -1,5 +1,5 @@
1
- import { t as Manager } from "./Manager-BHn8wH8K.js";
2
- import "./Actor-Y0_Fj-KL.js";
1
+ import { t as Manager } from "./Manager-B2OEDYqf.js";
2
+ import "./Actor-fIPLXfoi.js";
3
3
 
4
4
  //#region ../infra/src/capabilities/IGeolocationCapability.d.ts
5
5
  type GeolocationCoords = {
@@ -42,6 +42,7 @@ type CreateGeolocationActorOptions = {
42
42
  };
43
43
  //#endregion
44
44
  //#region src/modules/geolocation/geolocationManager.d.ts
45
+
45
46
  /** Geolocation manager is in initial state, waiting for `request()` to be called */
46
47
  type GeolocationIdleState = {
47
48
  status: 'idle';