@incodetech/core 2.3.2-rc.4 → 2.4.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/THIRD_PARTY_NOTICES.txt +1243 -3
  2. package/dist/Actor-DpTj5PFb.d.ts +1 -0
  3. package/dist/{BaseWasmProvider-Dyi6dKp1.d.ts → BaseWasmProvider-BL9wIRnN.d.ts} +2 -2
  4. package/dist/{FaceDetectionProvider-B5Fxc_y9.esm.js → FaceDetectionProvider-BjTer9h3.esm.js} +126 -10
  5. package/dist/HttpRequestError-Bh0pNGSC.esm.js +35 -0
  6. package/dist/{IIdCaptureCapability-RNiFhvXR.d.ts → IIdCaptureCapability-DBsv9-7M.d.ts} +2 -2
  7. package/dist/{IWasmUtilCapability-CNWRl7jr.d.ts → IWasmUtilCapability-CPX0RGdQ.d.ts} +28 -5
  8. package/dist/{Manager-CQQ99QOI.d.ts → Manager-C9T5amUN.d.ts} +7 -1
  9. package/dist/{MotionSensorProvider-DyhbM4Si.esm.js → MotionSensorProvider-DYxh8TjR.esm.js} +1 -1
  10. package/dist/{ekycStateMachine-UeJRO8_p.esm.js → PhoneValidationProvider-SZiOS0jB.esm.js} +232 -827
  11. package/dist/{StreamCanvasCapture-_8gdW5Lk.d.ts → StreamCanvasCapture-DVmzJux5.d.ts} +2 -2
  12. package/dist/{safeStorage-BdU9_m2E.esm.js → WasmUtilProvider-CIdnE7Fx.esm.js} +95 -46
  13. package/dist/{addressSearch-DyHGgeX8.esm.js → addressSearch-BiYZjvp3.esm.js} +143 -4
  14. package/dist/{advanceableErrors-CpF2cBy6.esm.js → advanceableErrors-q_pfU3Cn.esm.js} +5 -4
  15. package/dist/ae-signature.d.ts +2 -2
  16. package/dist/ae-signature.esm.js +1 -1
  17. package/dist/antifraud.d.ts +1 -1
  18. package/dist/antifraud.esm.js +2 -2
  19. package/dist/{antifraudManager-BY36bS12.d.ts → antifraudManager-DbGCvlJs.d.ts} +2 -2
  20. package/dist/{antifraudManager-DNkw66oW.esm.js → antifraudManager-HL08jeDX.esm.js} +3 -3
  21. package/dist/{antifraudStateMachine-DBeq47D2.esm.js → antifraudStateMachine-DoJVzblM.esm.js} +3 -3
  22. package/dist/{apiError--p429c2X.esm.js → apiError-DcSWedC6.esm.js} +2 -1
  23. package/dist/authentication.d.ts +3 -3
  24. package/dist/authentication.esm.js +2 -2
  25. package/dist/{authenticationManager-CboRCl_N.d.ts → authenticationManager-CANv5-W5.d.ts} +2 -8
  26. package/dist/{authenticationManager-CWmZMFJH.esm.js → authenticationManager-SaiAxqvS.esm.js} +6 -6
  27. package/dist/{authenticationStateMachine-BQ7ZW-8a.esm.js → authenticationStateMachine-CHSxmV7z.esm.js} +5 -6
  28. package/dist/avatar.d.ts +1 -1
  29. package/dist/{backCameraStream-B0-YgP_y.esm.js → backCameraStream-CMvXj4X4.esm.js} +1 -1
  30. package/dist/camera.esm.js +1 -1
  31. package/dist/certificate-issuance.d.ts +1 -1
  32. package/dist/certificate-issuance.esm.js +2 -2
  33. package/dist/{certificateIssuanceManager-C3-CI0_s.esm.js → certificateIssuanceManager-CMg4SgL4.esm.js} +3 -3
  34. package/dist/{certificateIssuanceManager-DCgEidHz.d.ts → certificateIssuanceManager-Dr8A4Lgr.d.ts} +2 -3
  35. package/dist/{certificateIssuanceStateMachine-CxqS_nD-.esm.js → certificateIssuanceStateMachine-Cs64QmYH.esm.js} +4 -4
  36. package/dist/consent.d.ts +1 -1
  37. package/dist/consent.esm.js +2 -2
  38. package/dist/{consentManager-B6E1XJDw.esm.js → consentManager-CjrxY737.esm.js} +3 -3
  39. package/dist/{consentManager-uhDPdU6i.d.ts → consentManager-DgzWQpAR.d.ts} +11 -12
  40. package/dist/{consentStateMachine-DTSfdGiW.esm.js → consentStateMachine-BCj5Jb3g.esm.js} +3 -3
  41. package/dist/{createCameraCycleOwnership-DnwTl1ad.esm.js → createCameraCycleOwnership-kdlhkmmY.esm.js} +71 -65
  42. package/dist/{createFaceAvatar-BlcTYgJv.d.ts → createFaceAvatar-DXgmQmQy.d.ts} +1 -1
  43. package/dist/cross-document-data-match.d.ts +1 -1
  44. package/dist/cross-document-data-match.esm.js +1 -1
  45. package/dist/{crossDocumentDataMatchManager-9XhFVZ5S.esm.js → crossDocumentDataMatchManager-BHnGRsto.esm.js} +4 -4
  46. package/dist/{crossDocumentDataMatchManager-Dq8Z3SOg.d.ts → crossDocumentDataMatchManager-yCWCOzcU.d.ts} +2 -2
  47. package/dist/curp-validation.d.ts +1 -1
  48. package/dist/curp-validation.esm.js +2 -2
  49. package/dist/{curpValidationManager-DNuZn9fn.d.ts → curpValidationManager-B-1EZbP_.d.ts} +3 -3
  50. package/dist/{curpValidationManager-DbIMYFcJ.esm.js → curpValidationManager-DBNIn8BF.esm.js} +15 -22
  51. package/dist/{curpValidationStateMachine-g5kMfuLj.esm.js → curpValidationStateMachine-DAxImy8p.esm.js} +4 -4
  52. package/dist/custom-fields.d.ts +1 -1
  53. package/dist/custom-fields.esm.js +1 -1
  54. package/dist/custom-watchlist.d.ts +1 -1
  55. package/dist/custom-watchlist.esm.js +2 -2
  56. package/dist/{customFieldsManager-CzWZTkW-.esm.js → customFieldsManager-BV6UyLFV.esm.js} +4 -4
  57. package/dist/{customFieldsManager-8-W2KY4n.d.ts → customFieldsManager-CF-cO8ap.d.ts} +2 -2
  58. package/dist/{customWatchlistManager-DWTED5Ur.esm.js → customWatchlistManager-DML0UPzf.esm.js} +3 -3
  59. package/dist/{customWatchlistManager-PBWHr_oM.d.ts → customWatchlistManager-DolUswyR.d.ts} +2 -2
  60. package/dist/{customWatchlistStateMachine-DOQou6TW.esm.js → customWatchlistStateMachine-D9gI5uu7.esm.js} +3 -3
  61. package/dist/deepsightLoader-DvfAYnzg.esm.js +55 -0
  62. package/dist/{deepsightLoader-BtYvACzG.esm.js → deepsightService-DLGO9yv1.esm.js} +51 -56
  63. package/dist/device.esm.js +1 -1
  64. package/dist/document-capture.d.ts +2 -2
  65. package/dist/document-capture.esm.js +2 -2
  66. package/dist/{documentCaptureManager-BRPxqYD2.esm.js → documentCaptureManager-C9XUnYU6.esm.js} +17 -18
  67. package/dist/{documentCaptureManager-lEtCM320.d.ts → documentCaptureManager-DkyDtm3Y.d.ts} +11 -34
  68. package/dist/{documentCaptureStateMachine-D312sSIu.esm.js → documentCaptureStateMachine-BHDsCfhL.esm.js} +55 -58
  69. package/dist/dynamic-forms.d.ts +2 -2
  70. package/dist/dynamic-forms.esm.js +2 -2
  71. package/dist/{dynamicFormsManager-66GzzBTx.esm.js → dynamicFormsManager-5uIXobxi.esm.js} +3 -3
  72. package/dist/{dynamicFormsManager-D5R_uxLQ.d.ts → dynamicFormsManager-C0dHs1ty.d.ts} +3 -3
  73. package/dist/{dynamicFormsStateMachine-DLnr2ZtX.esm.js → dynamicFormsStateMachine-DQmok084.esm.js} +4 -4
  74. package/dist/ekyb.d.ts +5 -5
  75. package/dist/ekyb.esm.js +3 -3
  76. package/dist/{ekybManager-BwRuGAwt.d.ts → ekybManager-BaZ_7CEu.d.ts} +4 -4
  77. package/dist/{ekybManager-CsQMgJDL.esm.js → ekybManager-CazShiQz.esm.js} +23 -27
  78. package/dist/{ekybStateMachine-DBeQNOMo.esm.js → ekybStateMachine-hstiCNmW.esm.js} +338 -13
  79. package/dist/ekyc.d.ts +2 -2
  80. package/dist/ekyc.esm.js +3 -3
  81. package/dist/{ekycManager-BX2d46FY.esm.js → ekycManager-BdJRUsz0.esm.js} +29 -36
  82. package/dist/{ekycManager-DLzDuBzI.d.ts → ekycManager-DW-ynodd.d.ts} +3 -3
  83. package/dist/ekycStateMachine-x6Klot8g.esm.js +1444 -0
  84. package/dist/{ekycUtils-D6wfSpPN.esm.js → ekycUtils-zY8CdKJL.esm.js} +53 -3
  85. package/dist/electronic-signature.d.ts +1 -1
  86. package/dist/electronic-signature.esm.js +1 -1
  87. package/dist/{electronicSignatureManager-Boj_xbGN.esm.js → electronicSignatureManager-Bc8spG8p.esm.js} +10 -10
  88. package/dist/{electronicSignatureManager-Ds-KEVTq.d.ts → electronicSignatureManager-DTSLOvKR.d.ts} +2 -3
  89. package/dist/email.d.ts +1 -1
  90. package/dist/email.esm.js +2 -2
  91. package/dist/{emailManager-bR1N5rV_.esm.js → emailManager-CtlKRRaR.esm.js} +20 -26
  92. package/dist/{emailManager-CADXW_9X.d.ts → emailManager-Dy6omJVp.d.ts} +2 -2
  93. package/dist/{emailStateMachine-Bc_6oIYw.esm.js → emailStateMachine-5Neq3rE5.esm.js} +4 -4
  94. package/dist/{endpoints-B-3Q-LUw.esm.js → endpoints-DHzlkQNe.esm.js} +2 -0
  95. package/dist/{events-ijlbX_Wx.esm.js → events-CAgFE-k3.esm.js} +19 -7
  96. package/dist/events.d.ts +3 -2
  97. package/dist/events.esm.js +1 -1
  98. package/dist/extensibility.d.ts +38 -38
  99. package/dist/extensibility.esm.js +36 -36
  100. package/dist/{externalFetch-BKBThAUC.esm.js → externalFetch-DrR9xshk.esm.js} +3 -2
  101. package/dist/face-match.d.ts +1 -1
  102. package/dist/face-match.esm.js +2 -2
  103. package/dist/{faceCaptureManagerFactory-m-7ae67q.d.ts → faceCaptureManagerFactory-jKQ2QtY-.d.ts} +11 -51
  104. package/dist/{faceCaptureManagerFactory-BKpeQIZu.esm.js → faceCaptureManagerFactory-uFm1AcaY.esm.js} +19 -54
  105. package/dist/{faceCaptureSetup-DOrt8-Sn.esm.js → faceCaptureSetup-Cu2wabzo.esm.js} +99 -395
  106. package/dist/{faceMatchManager-Bmv0HzuY.esm.js → faceMatchManager-9Nj9aPci.esm.js} +3 -3
  107. package/dist/{faceMatchManager-BnvrZM2F.d.ts → faceMatchManager-DIgG-UFS.d.ts} +1 -2
  108. package/dist/{faceMatchStateMachine-mRIHQ3dA.esm.js → faceMatchStateMachine-B9ZUnlyU.esm.js} +6 -4
  109. package/dist/{feature-management-zY6FcYx_.esm.js → feature-management-BTbYruNe.esm.js} +3 -3
  110. package/dist/feature-management.esm.js +1 -1
  111. package/dist/field-comparison.d.ts +2 -2
  112. package/dist/field-comparison.esm.js +1 -1
  113. package/dist/{fieldComparisonManager-CBvEGxFx.d.ts → fieldComparisonManager-CUX4gza2.d.ts} +6 -3
  114. package/dist/{fieldComparisonManager-CC-klG0h.esm.js → fieldComparisonManager-Dk38hXZP.esm.js} +35 -17
  115. package/dist/fiscal-qr.d.ts +1 -1
  116. package/dist/fiscal-qr.esm.js +1 -1
  117. package/dist/{fiscalQrManager-B1STmT6z.d.ts → fiscalQrManager-D0Iy7EKR.d.ts} +2 -2
  118. package/dist/fiscalQrManager-DmBkQfs0.esm.js +6798 -0
  119. package/dist/flow-events.d.ts +1 -1
  120. package/dist/flow.d.ts +14 -13
  121. package/dist/flow.esm.js +14 -14
  122. package/dist/{flowCompletionService-CBa6YyI5.esm.js → flowCompletionService-xnn_SlJU.esm.js} +2 -2
  123. package/dist/{flowServices-JW6uRaUt.esm.js → flowServices-DA64AEZC.esm.js} +11 -7
  124. package/dist/geolocation.d.ts +1 -1
  125. package/dist/geolocation.esm.js +2 -2
  126. package/dist/{geolocationManager-DD5J1T_p.esm.js → geolocationManager-CqNLY45e.esm.js} +6 -7
  127. package/dist/{geolocationManager-Cz744E5S.d.ts → geolocationManager-Dn24g1fl.d.ts} +2 -3
  128. package/dist/{geolocationStateMachine-DoelwBqs.esm.js → geolocationStateMachine-D-cQi7ar.esm.js} +4 -4
  129. package/dist/{getDeviceClass-5NYZg9s6.esm.js → getDeviceClass-bsWdEDxP.esm.js} +1 -1
  130. package/dist/{getParsedUserAgent-B2iFDql1.esm.js → getParsedUserAgent-DhQPeKqw.esm.js} +1 -1
  131. package/dist/government-validation.d.ts +1 -1
  132. package/dist/government-validation.esm.js +2 -2
  133. package/dist/{governmentValidationManager-D02vT4yY.d.ts → governmentValidationManager-B82zOut8.d.ts} +3 -3
  134. package/dist/{governmentValidationManager-CacFOtKO.esm.js → governmentValidationManager-CP0SiOOe.esm.js} +3 -3
  135. package/dist/{governmentValidationStateMachine-CoaZOSTP.esm.js → governmentValidationStateMachine-C3YQ8yCZ.esm.js} +3 -3
  136. package/dist/home.d.ts +3 -26
  137. package/dist/home.esm.js +2 -2
  138. package/dist/id-ocr.d.ts +1 -1
  139. package/dist/id-ocr.esm.js +2 -2
  140. package/dist/id-selfie-flow.d.ts +6 -9
  141. package/dist/id-selfie-flow.esm.js +23 -28
  142. package/dist/id-verification.d.ts +1 -1
  143. package/dist/id-verification.esm.js +2 -2
  144. package/dist/id.d.ts +4 -4
  145. package/dist/id.esm.js +4 -205
  146. package/dist/{idCaptureDefaults-Chne8cyb.esm.js → idCaptureDefaults-CBg73RnV.esm.js} +8 -5
  147. package/dist/{idCaptureManager-BHwL2Z0V.d.ts → idCaptureManager-BY97SRCV.d.ts} +242 -98
  148. package/dist/{idCaptureManager-0504dfcD.esm.js → idCaptureManager-D4V8vXtY.esm.js} +276 -210
  149. package/dist/{idCaptureServices-B-Ynn67N.esm.js → idCaptureServices-DJ33k3-p.esm.js} +21 -39
  150. package/dist/{idCaptureStateMachine-B7ET-hfq.esm.js → idCaptureStateMachine-PJt0yzom.esm.js} +989 -872
  151. package/dist/{idOcrManager-BF_cXZq8.d.ts → idOcrManager-BTdHlJ9D.d.ts} +3 -4
  152. package/dist/{idOcrManager-ByWuQ4ej.esm.js → idOcrManager-DxoCesYP.esm.js} +3 -3
  153. package/dist/{idOcrStateMachine-Bt_abXQQ.esm.js → idOcrStateMachine-kPn7DB2I.esm.js} +3 -3
  154. package/dist/{idVerificationManager-BB4Pj_N6.d.ts → idVerificationManager-BJapZfpy.d.ts} +2 -3
  155. package/dist/{idVerificationManager-DT42c77H.esm.js → idVerificationManager-CDhRUU5n.esm.js} +3 -3
  156. package/dist/{idVerificationStateMachine-DbDVIh9t.esm.js → idVerificationStateMachine-0HTVVxse.esm.js} +3 -3
  157. package/dist/identity-reuse.d.ts +2 -2
  158. package/dist/identity-reuse.esm.js +2 -2
  159. package/dist/{identityReuseManager-yG3acUrQ.esm.js → identityReuseManager-BleUi6TK.esm.js} +26 -13
  160. package/dist/{identityReuseManager-v2TH5g7e.d.ts → identityReuseManager-ooAbp6Kc.d.ts} +162 -44
  161. package/dist/{identityReuseStateMachine-BhAkuIra.esm.js → identityReuseStateMachine-BrBUpfn5.esm.js} +89 -23
  162. package/dist/{index-CeaC32qI.d.ts → index-DfEuu-Ew.d.ts} +2 -2
  163. package/dist/index-DpTj5PFb.d.ts +1 -0
  164. package/dist/index.d.ts +1 -1
  165. package/dist/index.esm.js +1 -1
  166. package/dist/{invokeOnCaptureCallback-BjzPjJ_p.esm.js → invokeOnCaptureCallback-BW7V3vub.esm.js} +1 -1
  167. package/dist/lamejs-B6TzhU5q.esm.js +10 -0
  168. package/dist/mandatory-consent.d.ts +2 -2
  169. package/dist/mandatory-consent.esm.js +2 -2
  170. package/dist/{mandatoryConsentManager-7dI0D08q.esm.js → mandatoryConsentManager-CX_Dyht7.esm.js} +3 -3
  171. package/dist/{mandatoryConsentManager-BYRnWbIC.d.ts → mandatoryConsentManager-TkX57U6f.d.ts} +8 -9
  172. package/dist/{mandatoryConsentStateMachine-DC5Mo6M1.esm.js → mandatoryConsentStateMachine-CoaSB7P7.esm.js} +3 -3
  173. package/dist/{multipartRecordingService-mwKFTlhR.esm.js → multipartRecordingService-DbeQpXdU.esm.js} +2 -2
  174. package/dist/{permissionGuards-D6TfVop2.esm.js → permissionGuards-Bf4LbHjC.esm.js} +1 -1
  175. package/dist/{permissionServices-EY3_Vx6c.esm.js → permissionServices-d2UW0r_L.esm.js} +34 -3
  176. package/dist/phone-number.d.ts +24 -0
  177. package/dist/phone-number.esm.js +1922 -0
  178. package/dist/phone.d.ts +1 -1
  179. package/dist/phone.esm.js +2 -2
  180. package/dist/{phoneManager-IjhSv5XS.esm.js → phoneManager-BGBcpqsk.esm.js} +31 -22
  181. package/dist/{phoneManager-BBU8Lq0O.d.ts → phoneManager-BO-LTih5.d.ts} +16 -3
  182. package/dist/{phoneStateMachine-CXdXufKg.esm.js → phoneStateMachine-CEm2y7yG.esm.js} +39 -20
  183. package/dist/phoneValidation-DnBcNUNh.esm.js +48 -0
  184. package/dist/qe-signature.d.ts +2 -2
  185. package/dist/qe-signature.esm.js +1 -1
  186. package/dist/redirect-to-mobile.d.ts +1 -1
  187. package/dist/redirect-to-mobile.esm.js +2 -2
  188. package/dist/{redirectToMobileManager-FLEWJtv8.esm.js → redirectToMobileManager-B1yQHFLu.esm.js} +4 -4
  189. package/dist/{redirectToMobileManager-BD2PvT5B.d.ts → redirectToMobileManager-CVsvpVbQ.d.ts} +2 -2
  190. package/dist/{redirectToMobileStateMachine-CSWWgUTO.esm.js → redirectToMobileStateMachine--Sr9NEVT.esm.js} +5 -5
  191. package/dist/{rolldown-runtime-FDOR9p9I.esm.js → rolldown-runtime-B-1-B7_t.esm.js} +10 -1
  192. package/dist/{runChildModule-CZU29-IV.esm.js → runChildModule-vdxQMCmO.esm.js} +13 -12
  193. package/dist/safeStorage-UxDrnjwa.esm.js +35 -0
  194. package/dist/{sdkVersion-DOhxIxQQ.esm.js → sdkVersion-F5YZbjip.esm.js} +1 -1
  195. package/dist/selfie.d.ts +4 -4
  196. package/dist/selfie.esm.js +12 -12
  197. package/dist/selfieErrorUtils-D-tsgEuX.esm.js +21 -0
  198. package/dist/{selfieManager-BSZG891S.d.ts → selfieManager-1J0IEyFq.d.ts} +2 -8
  199. package/dist/{selfieManager-CWhbwRdb.esm.js → selfieManager-26pENXxw.esm.js} +6 -6
  200. package/dist/selfieStateMachine-BhfKsl3I.esm.js +41 -0
  201. package/dist/{session-CctUSSCx.esm.js → session-Bu7djCsj.esm.js} +5 -5
  202. package/dist/session.d.ts +15 -3
  203. package/dist/session.esm.js +30 -5
  204. package/dist/sessionInitializer-jxbfCnE-.esm.js +974 -0
  205. package/dist/{setup-DmB0JHAB.esm.js → setup-C38QkrSP.esm.js} +232 -112
  206. package/dist/{setup-Cyko6cAn.d.ts → setup-lgkQ8dJW.d.ts} +20 -11
  207. package/dist/signature.d.ts +1 -1
  208. package/dist/signature.esm.js +2 -2
  209. package/dist/{signatureManager-DGBSWz2_.d.ts → signatureManager-BpVt_Jv7.d.ts} +2 -2
  210. package/dist/{signatureManager-B72np4ZO.esm.js → signatureManager-qqXyH93e.esm.js} +7 -11
  211. package/dist/{signatureStateMachine-ce_XMA3l.esm.js → signatureStateMachine-BkRSrkKp.esm.js} +3 -3
  212. package/dist/splitTrackedName-3zJRd2RD.esm.js +19 -0
  213. package/dist/{src-35ekGRzK.esm.js → src-DJAJjRYQ.esm.js} +1 -1
  214. package/dist/{stats-CZcy2J53.esm.js → stats-DmG_tkGk.esm.js} +1 -1
  215. package/dist/stats.esm.js +1 -1
  216. package/dist/{sessionInitializer-Ce9zO78j.esm.js → thumbmark.esm-CRc0cYvz.esm.js} +33 -776
  217. package/dist/{trueSightService-oMFESSSb.esm.js → trueSightService-BWgRVGIT.esm.js} +893 -900
  218. package/dist/trust-graph.d.ts +1 -2
  219. package/dist/trust-graph.esm.js +2 -2
  220. package/dist/{types-C0oWGUzg.d.ts → types-0L-eFDmr.d.ts} +1 -1
  221. package/dist/{types-C1g9itHE.d.ts → types-BGXxRwQM.d.ts} +6 -7
  222. package/dist/{types-BfgmV7s7.d.ts → types-BQA7lRDV.d.ts} +1 -1
  223. package/dist/{types-CxGdmzxa.d.ts → types-BvFmYX5c.d.ts} +1 -1
  224. package/dist/{types-Cx-1zo-i.d.ts → types-BvLo3U4u.d.ts} +1 -1
  225. package/dist/types-C71Zo6vl.d.ts +6 -0
  226. package/dist/{types-DEGVXwsk2.d.ts → types-CyPUIpzf.d.ts} +110 -62
  227. package/dist/{types-Bx-BWveD.d.ts → types-DTYr9pCB.d.ts} +1 -1
  228. package/dist/{types-BjSly8cp.d.ts → types-DUnFZ08M.d.ts} +1 -1
  229. package/dist/{types-ESdtnHtg.d.ts → types-zpO4fU6a.d.ts} +3 -4
  230. package/dist/{urlUtils-D6phjq1-.esm.js → urlUtils-6jsE6rKp.esm.js} +9 -1
  231. package/dist/video-selfie.d.ts +6 -9
  232. package/dist/video-selfie.esm.js +1386 -1344
  233. package/dist/{videoSelfieCameraWarmer-D_4NwYM-.esm.js → videoSelfieCameraWarmer-C366RKqu.esm.js} +11 -11
  234. package/dist/{videoSelfieFlowModuleMachine-BUe2uACW.esm.js → videoSelfieFlowModuleMachine-BCFVHBQ1.esm.js} +1 -1
  235. package/dist/{videoSelfieStepDetector-ChYgFM15.d.ts → videoSelfieStepDetector-C5QHOvWb.d.ts} +4 -4
  236. package/dist/videoTrimByCopy-BFfAiNpv.esm.js +15901 -0
  237. package/dist/{warmup-Cis2p6O0.d.ts → warmup-BUPPRAA1.d.ts} +7 -0
  238. package/dist/{warmup-ChDwHSel.esm.js → warmup-DMtbyb2l.esm.js} +27 -9
  239. package/dist/wasm.d.ts +2 -2
  240. package/dist/wasm.esm.js +4 -4
  241. package/dist/{wasmDsFlagSync-DYrLUEII.esm.js → wasmDsFlagSync-BXCGqP48.esm.js} +1 -1
  242. package/dist/{wasmWebClient-B7baE-Wf.esm.js → wasmWebClient-kbYZ2sxw.esm.js} +259 -20
  243. package/dist/watchlist-for-business.d.ts +1 -1
  244. package/dist/watchlist-for-business.esm.js +2 -2
  245. package/dist/watchlist.d.ts +1 -1
  246. package/dist/watchlist.esm.js +2 -2
  247. package/dist/{watchlistForBusinessManager-CsnJnG-C.d.ts → watchlistForBusinessManager-B3GDPZrr.d.ts} +2 -2
  248. package/dist/{watchlistForBusinessManager-CIMkpEhu.esm.js → watchlistForBusinessManager-BvF4jK3S.esm.js} +7 -5
  249. package/dist/{watchlistForBusinessStateMachine-CJ-MvUre.esm.js → watchlistForBusinessStateMachine-121XK-Et.esm.js} +3 -3
  250. package/dist/{watchlistManager-CixcLNDT.esm.js → watchlistManager-CNWEOYSq.esm.js} +3 -3
  251. package/dist/{watchlistManager-DLXef90v.d.ts → watchlistManager-DJQOd8Pw.d.ts} +2 -2
  252. package/dist/{watchlistStateMachine-CBqk2w-h.esm.js → watchlistStateMachine-Dgfm42w2.esm.js} +3 -3
  253. package/dist/workflow.d.ts +34 -5
  254. package/dist/workflow.esm.js +64 -46
  255. package/dist/{xstate-actors.esm-BXeQ-Ucz.esm.js → xstate-actors.esm-8Gzepa_A.esm.js} +1 -1
  256. package/dist/{xstate.esm-BuFLFuzz.esm.js → xstate.esm-DSajW7CJ.esm.js} +24 -10
  257. package/package.json +13 -5
  258. package/dist/Actor-iTq7YY48.d.ts +0 -1
  259. package/dist/StateMachine-EDpYWy0i.d.ts +0 -6
  260. package/dist/fiscalQrManager-DbCVMIBx.esm.js +0 -34143
  261. package/dist/index-B8weJxmL.d.ts +0 -1
  262. package/dist/selfieErrorUtils-UiQ46EBa.esm.js +0 -116
  263. package/dist/selfieStateMachine-CtMCi4KZ.esm.js +0 -71
  264. package/dist/types-BN5RPPIZ.esm.js +0 -34
  265. package/dist/types-Bt9RuRqt.d.ts +0 -6
  266. package/dist/virtualCameraCheck-Cjab7FTI.esm.js +0 -48
  267. /package/dist/{types-BSBzhHRH.d.ts → types-BSBzhHRH2.d.ts} +0 -0
@@ -30,6 +30,8 @@ declare global {
30
30
  type WasmModule = Record<string, unknown>;
31
31
  type WasmGlueFactory = (options?: Readonly<{
32
32
  wasmBinary?: Uint8Array;
33
+ print?: (text: string) => void;
34
+ printErr?: (text: string) => void;
33
35
  }>) => Promise<WasmModule>;
34
36
  /**
35
37
  * Binary and glue configuration for one WASM module instance.
@@ -38,6 +40,11 @@ type WasmGlueFactory = (options?: Readonly<{
38
40
  * use the same memoized module.
39
41
  */
40
42
  type WasmModuleConfig = {
43
+ /**
44
+ * Enables WASM console output, including native errors. Default: false.
45
+ * Set before the first load; shared instances retain their output sinks.
46
+ */
47
+ showLogs?: boolean;
41
48
  /** URL or bytes for the standard WASM binary. */
42
49
  wasmPath: WasmSource;
43
50
  /**
@@ -1,4 +1,4 @@
1
- import { _ as WASM_PIPELINE_OPTIONAL_MODEL_NAMES, b as resolveWasmSource, d as SemaphoreProvider, h as WASM_PIPELINE_MODELS, l as loadWasmModule, n as createWebApiHostAdapter, p as WASM_MODEL_FILES, u as acquireWasmStorageFallback, v as buildModelVariantSources, y as missingWasmModelError } from "./wasmWebClient-B7baE-Wf.esm.js";
1
+ import { _ as WASM_PIPELINE_OPTIONAL_MODEL_NAMES, b as resolveWasmSource, d as SemaphoreProvider, h as WASM_PIPELINE_MODELS, l as loadWasmModule, n as createWebApiHostAdapter, p as WASM_MODEL_FILES, u as acquireWasmStorageFallback, v as buildModelVariantSources, x as reportWasmIntegritySummary, y as missingWasmModelError } from "./wasmWebClient-kbYZ2sxw.esm.js";
2
2
  //#region ../infra/src/wasm/wasmEnumMaps.ts
3
3
  function pipelineTypeToWasmEnum(wasmModule, type) {
4
4
  switch (type) {
@@ -120,6 +120,9 @@ function deleteWasmHandle(firstFailure, handle) {
120
120
  function releaseCameraCycleResources(stream, cameraCycleApi) {
121
121
  return attemptCleanup(stopStreamTracks(stream), () => cameraCycleApi?.rcc());
122
122
  }
123
+ function isWasmModelEntry(source) {
124
+ return typeof source === "object" && !(source instanceof ArrayBuffer) && !(source instanceof Uint8Array) && "file" in source;
125
+ }
123
126
  var WasmRuntime = class WasmRuntime {
124
127
  constructor(loadModule = loadWasmModule) {
125
128
  this.loadModule = loadModule;
@@ -153,6 +156,7 @@ var WasmRuntime = class WasmRuntime {
153
156
  this.usedSimd_ = simdUsed;
154
157
  this.workflowApiUtilities = new this.wasmModule.WorkflowApiUtilities();
155
158
  this.utilityApi = new this.wasmModule.UtilityApi();
159
+ this.utilityApi.setProductionMode(module.showLogs !== true);
156
160
  this.idCaptureWasmApi = new this.wasmModule.IdCaptureApi();
157
161
  this.faceProcessingWasmApi = new this.wasmModule.FaceProcessingApi();
158
162
  this.cameraCycleApi = new this.wasmModule.CameraCycleApi();
@@ -301,10 +305,14 @@ var WasmRuntime = class WasmRuntime {
301
305
  const sizes = new (this.requireWasmModule(message)).VectorInt();
302
306
  sizeVectors.push(sizes);
303
307
  for (const path of modelsPaths) {
304
- const resolvedSource = this.resolveModelSource(path);
308
+ const file = isWasmModelEntry(path) ? path.file : void 0;
309
+ const resolvedSource = this.resolveModelSource(isWasmModelEntry(path) ? path.source : path);
305
310
  let model = this.loadedModels.get(resolvedSource);
306
311
  if (!model) {
307
- model = await resolveWasmSource(resolvedSource, "model");
312
+ model = await resolveWasmSource(resolvedSource, {
313
+ kind: "model",
314
+ file
315
+ });
308
316
  this.loadedModels.set(resolvedSource, model);
309
317
  }
310
318
  sizes.push_back(model.byteLength);
@@ -526,16 +534,22 @@ function resolveConfiguredModelSource(config, modelFile, pipeline, modelsBasePat
526
534
  if (current === void 0) {
527
535
  if (config.selfHosted) throw missingWasmModelError(modelFile, pipeline);
528
536
  if (!modelsBasePath) throw new Error("[Incode SDK] modelsBasePath is required when wasmPath is a byte source.");
529
- return buildModelVariantSources(modelsBasePath, modelFile);
537
+ return {
538
+ file: modelFile,
539
+ source: buildModelVariantSources(modelsBasePath, modelFile)
540
+ };
530
541
  }
531
542
  const legacy = config.legacyModelUrls?.[modelFile];
532
- return legacy === void 0 ? current : {
533
- current,
534
- legacy
543
+ return {
544
+ file: modelFile,
545
+ source: legacy === void 0 ? current : {
546
+ current,
547
+ legacy
548
+ }
535
549
  };
536
550
  }
537
551
  /**
538
- * Warns once per warmup that an optional model listed in
552
+ * When logging is enabled, warns once per warmup that an optional model listed in
539
553
  * {@link WASM_PIPELINE_OPTIONAL_MODEL_NAMES} was not supplied, so the Core
540
554
  * profile that needs it is skipped instead of failing the whole warmup.
541
555
  */
@@ -565,7 +579,7 @@ function buildPipelinesMap(pipelines, config) {
565
579
  WASM_MODEL_FILES.idFiqa,
566
580
  WASM_MODEL_FILES.idFaceDetector
567
581
  ]));
568
- else warnMissingOptionalModel(pipeline, missingOptional);
582
+ else if (config.showLogs) warnMissingOptionalModel(pipeline, missingOptional);
569
583
  }
570
584
  }
571
585
  }
@@ -634,6 +648,8 @@ async function warmupWasm(config) {
634
648
  loadingPromise = null;
635
649
  pipelinesInFlight = [];
636
650
  throw wasmError;
651
+ } finally {
652
+ reportWasmIntegritySummary();
637
653
  }
638
654
  })();
639
655
  return loadingPromise;
@@ -666,6 +682,8 @@ async function warmupWasm(config) {
666
682
  loadingPromise = null;
667
683
  pipelinesInFlight = [];
668
684
  throw wasmError;
685
+ } finally {
686
+ reportWasmIntegritySummary();
669
687
  }
670
688
  })();
671
689
  return loadingPromise;
package/dist/wasm.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { a as WASM_MODEL_FILES, c as WasmPipeline, l as WasmSource, o as WasmGlueLoader, r as warmupWasm, s as WasmModelName, t as WarmupConfig } from "./warmup-Cis2p6O0.js";
2
- import { c as setWasmConfig, i as initializeWasmUtil, n as WasmConfig, r as ensureWasmPipelines, s as resolveWasmConfigForPipelines, u as upgradeToWasmHttpClient } from "./setup-Cyko6cAn.js";
1
+ import { a as WASM_MODEL_FILES, c as WasmPipeline, l as WasmSource, o as WasmGlueLoader, r as warmupWasm, s as WasmModelName, t as WarmupConfig } from "./warmup-BUPPRAA1.js";
2
+ import { c as setWasmConfig, i as initializeWasmUtil, n as WasmConfig, r as ensureWasmPipelines, s as resolveWasmConfigForPipelines, u as upgradeToWasmHttpClient } from "./setup-lgkQ8dJW.js";
3
3
  //#region ../infra/src/wasm/wasmDefaults.d.ts
4
4
  /** The WASM version bundled and tested with this SDK release. */
5
5
  declare const DEFAULT_WASM_VERSION = "v2.14.50-post1";
package/dist/wasm.esm.js CHANGED
@@ -1,7 +1,7 @@
1
- import { g as WASM_PIPELINE_MODEL_NAMES, m as WASM_PIPELINE_LAZY_MODEL_NAMES, p as WASM_MODEL_FILES } from "./wasmWebClient-B7baE-Wf.esm.js";
2
- import { C as DEFAULT_WASM_VERSION, D as resolveWasmConfig, T as buildWasmConfigFromBasePath, w as buildDefaultWasmConfig } from "./trueSightService-oMFESSSb.esm.js";
3
- import { o as warmupWasm } from "./warmup-ChDwHSel.esm.js";
4
- import { a as resolveWasmConfigForPipelines, c as upgradeToWasmHttpClient, n as initializeWasmUtil, o as setWasmConfig, t as ensureWasmPipelines } from "./setup-DmB0JHAB.esm.js";
1
+ import { g as WASM_PIPELINE_MODEL_NAMES, m as WASM_PIPELINE_LAZY_MODEL_NAMES, p as WASM_MODEL_FILES } from "./wasmWebClient-kbYZ2sxw.esm.js";
2
+ import { C as DEFAULT_WASM_VERSION, D as resolveWasmConfig, T as buildWasmConfigFromBasePath, w as buildDefaultWasmConfig } from "./trueSightService-BWgRVGIT.esm.js";
3
+ import { o as warmupWasm } from "./warmup-DMtbyb2l.esm.js";
4
+ import { a as resolveWasmConfigForPipelines, c as upgradeToWasmHttpClient, n as initializeWasmUtil, o as setWasmConfig, t as ensureWasmPipelines } from "./setup-C38QkrSP.esm.js";
5
5
  //#region src/defineWasm.ts
6
6
  function requiredModels(pipelines) {
7
7
  const models = /* @__PURE__ */ new Set();
@@ -1,4 +1,4 @@
1
- import { a as utilityWasmApi } from "./safeStorage-BdU9_m2E.esm.js";
1
+ import { i as utilityWasmApi } from "./WasmUtilProvider-CIdnE7Fx.esm.js";
2
2
  //#region ../infra/src/wasm/wasmDsFlagSync.ts
3
3
  /**
4
4
  * Sets the Deepsight (ds) flag that the WASM utility API receives on every
@@ -1,3 +1,187 @@
1
+ //#region ../infra/src/wasm/wasmIntegrityManifest.ts
2
+ /** SHA-256 digests of the official WASM release files this SDK loads. */
3
+ const WASM_INTEGRITY_MANIFEST = {
4
+ wasmVersion: "v2.14.50-post1",
5
+ files: {
6
+ "models/current/age_estimation_v2_2_2_fp16.ortmodelv2": "70bd372b5e140ea8e9773a25d371cb65e5a9090651fdfe73ab6fc7ce25d59c83",
7
+ "models/current/barcode_enhance_896x224_fp16.ortmodelv2": "bccecd74abf48181efb95bf020784b7e50d37ae255bf89c14c2c5186976279e0",
8
+ "models/current/face_attributes_v1_3_fp16.ortmodelv2": "96079ec080a92ae1821b456f06281a604b4b013af42313f9668210c9bbe7041f",
9
+ "models/current/face_occlusion_v0_2_fp16.ortmodelv2": "7a846b12b7a9a5afe72e07f19b408095439a214aaa306e88d34d1f17ffce72fb",
10
+ "models/current/id_capture_2_01_fp16.ortmodelv2": "06b337368249131af6bab66bdf4fca680298034e3e83d678656d255cdb480507",
11
+ "models/current/id_facedetector_v2_1_fp16.ortmodelv2": "ab35d7c2f69d5c156f7e247bde652c4ac7b78cdc4a90ef55f5a928edc54e2bd8",
12
+ "models/current/id_fiqa_19a81a0b9bf6492eb03b4667f6db4c85_fp16.ortmodelv2": "1cc02608aed0078bf9cc66ae4f51b150e7b5aa65c5fb270248bda7c327867d26",
13
+ "models/current/mls_regressor_4773007c657b4f05a460321456740d0f_fp16.ortmodelv2": "74a955dff00183c69544a9b61cc7e1122c7cd3814811dcd7ae8cf862bda35c41",
14
+ "models/current/ondevice_physical_liveness_v2_1_fp16.ortmodelv2": "188227beafee6ccce16d562ae531eae894aa4b1056dce339741b5e80a695794a",
15
+ "models/current/selfie_bf_angles_192x192_opset9_fp16.ortmodelv2": "6bdb142f67e81d9e6006d94888eba2e6a7bf20a6283c66e14db8b654c8fa9bfd",
16
+ "models/legacy/age_estimation_v2_2_2_fp16.ortmodelv2": "28ffdec742ec7856a3b113ee86af01e4629b576139faff1cf7094bf451c94a60",
17
+ "models/legacy/barcode_enhance_896x224_fp16.ortmodelv2": "aef15080020d5a329870cc3d50f73a1c676526d1f6f6df282f7dc0c95e6018b9",
18
+ "models/legacy/face_attributes_v1_3_fp16.ortmodelv2": "7c6754b63b4e205370463df4c6396f29123d7b5a17823a2d78a59b2fb17cc98b",
19
+ "models/legacy/face_occlusion_v0_2_fp16.ortmodelv2": "19fc95f2081e55962045f0e38387399fb11c1b636699e31558383d2ea4156aed",
20
+ "models/legacy/id_capture_2_01_fp16.ortmodelv2": "2f791bbf1f0dc9c6b8ff95587ce61479a764a18070e83658f6366996a7df9615",
21
+ "models/legacy/id_facedetector_v2_1_fp16.ortmodelv2": "f790693395cc1473a824a97b86fd2943586b490582e003b240dff4d51d9f417f",
22
+ "models/legacy/id_fiqa_19a81a0b9bf6492eb03b4667f6db4c85_fp16.ortmodelv2": "d058e82efca7c30a35dd0a03472695656c105952f27af2ea158cb00818caab8c",
23
+ "models/legacy/mls_regressor_4773007c657b4f05a460321456740d0f_fp16.ortmodelv2": "e41887f75b284ba1f973f2a26209bf365da8a587d266492b642e5b7c36716069",
24
+ "models/legacy/ondevice_physical_liveness_v2_1_fp16.ortmodelv2": "405eee9fd961c48fff608246ef579dc8ce9f0b5ce51361e05dac7d9afcf9162d",
25
+ "models/legacy/selfie_bf_angles_192x192_opset9_fp16.ortmodelv2": "1c8dda528d5111fa7b4272ffabca7cf0a59099f57258aaece7262974aebafc4a",
26
+ "webLib.js": "2953d4da3b8eddf1ff48e113ac4ff11d69eb379e1ab091fec1dad34a17d23844",
27
+ "webLib.wasm": "7616ea70cab3171ef376f9d0fa646548efc90beab49fdefa25d1b241ca704673",
28
+ "webLibSimd.js": "51407ce3032dd330ae806d9aea1b43eb5c245e2b64780b4b62c9c62310a0bee1",
29
+ "webLibSimd.wasm": "0575425989803e58ccb82fcd30d64508a7c7b52019564d8644b59d5cf11135ab"
30
+ },
31
+ dist: {
32
+ "webLib.js": "6d7177b6e2e86a0d975b595ea546bf87fc11a194ad4cbdc0613fb3b2a2810e90",
33
+ "webLibSimd.js": "4ac981fa15dd748ec1a312bd25408fb4af3449d8c1bb6ebb8fe436476049d446"
34
+ }
35
+ };
36
+ //#endregion
37
+ //#region ../infra/src/wasm/wasmIntegrity.ts
38
+ /**
39
+ * Integrity check for every WASM binary, glue file and ML model the SDK loads.
40
+ *
41
+ * Each asset is matched, by slot, against the SHA-256 digests of the official
42
+ * ml-wasm-kit release in {@link WASM_INTEGRITY_MANIFEST}. The host does not
43
+ * matter: the Incode CDN, a self-hosted copy and `@incodetech/wasm-assets` all
44
+ * serve the same official files, so they all carry the same digests. A file
45
+ * that does not match is never instantiated or evaluated.
46
+ *
47
+ * The one input this cannot hash is a `loadGlue` callback: the integrator's
48
+ * bundler hands over a module, not bytes. That glue is part of the
49
+ * integrator's own bundle, the same trust boundary as the SDK code running
50
+ * this check, and is reported as `bundled`.
51
+ */
52
+ var WasmIntegrityError = class extends Error {
53
+ constructor(code, asset, message, cause) {
54
+ super(`[Incode SDK] ${message}`);
55
+ this.name = "WasmIntegrityError";
56
+ this.code = code;
57
+ this.asset = asset;
58
+ this.cause = cause;
59
+ }
60
+ };
61
+ const DIGEST_PREFIX_LENGTH = 12;
62
+ const HTML_SNIFF_BYTES = 512;
63
+ let observer = null;
64
+ let verified = 0;
65
+ let failed = 0;
66
+ let bundled = 0;
67
+ let hashMs = 0;
68
+ /**
69
+ * Installs the sink core maps to TrueSight and the event log. Infra cannot
70
+ * import either, so core injects it, as with `setWebApiHttpTransport`.
71
+ */
72
+ function setWasmIntegrityObserver(next) {
73
+ observer = next;
74
+ }
75
+ function notify(check) {
76
+ if (check.status === "verified") verified += 1;
77
+ else if (check.status === "bundled") bundled += 1;
78
+ else failed += 1;
79
+ hashMs += check.durationMs ?? 0;
80
+ try {
81
+ observer?.onAssetChecked?.(check);
82
+ } catch {}
83
+ }
84
+ /** Reports the totals since the last summary, then resets them. */
85
+ function reportWasmIntegritySummary() {
86
+ if (verified + failed + bundled === 0) return;
87
+ const summary = {
88
+ wasmVersion: WASM_INTEGRITY_MANIFEST.wasmVersion,
89
+ verified,
90
+ failed,
91
+ bundled,
92
+ hashMs: Math.round(hashMs)
93
+ };
94
+ verified = 0;
95
+ failed = 0;
96
+ bundled = 0;
97
+ hashMs = 0;
98
+ try {
99
+ observer?.onSummary?.(summary);
100
+ } catch {}
101
+ }
102
+ /** Records glue that arrived through a `loadGlue` callback and has no bytes. */
103
+ function reportBundledWasmGlue(slot) {
104
+ notify({
105
+ asset: slot,
106
+ status: "bundled"
107
+ });
108
+ }
109
+ function assetLabel(asset) {
110
+ return asset.kind === "model" ? asset.file ?? "model" : asset.slot;
111
+ }
112
+ function expectedDigests(asset) {
113
+ const { files, dist } = WASM_INTEGRITY_MANIFEST;
114
+ if (asset.kind === "binary") return [files[asset.slot]].filter(isDigest);
115
+ if (asset.kind === "glue") return [files[asset.slot], dist[asset.slot]].filter(isDigest);
116
+ if (asset.file === void 0) return Object.entries(files).filter(([key]) => key.startsWith("models/")).map(([, digest]) => digest);
117
+ return [files[`models/current/${asset.file}`], files[`models/legacy/${asset.file}`]].filter(isDigest);
118
+ }
119
+ function isDigest(value) {
120
+ return typeof value === "string" && value.length > 0;
121
+ }
122
+ function toHex(buffer) {
123
+ return Array.from(new Uint8Array(buffer), (byte) => byte.toString(16).padStart(2, "0")).join("");
124
+ }
125
+ function looksLikeHtml(bytes) {
126
+ let text = new TextDecoder("utf-8", { fatal: false }).decode(bytes.subarray(0, HTML_SNIFF_BYTES));
127
+ if (text.charCodeAt(0) === 65279) text = text.slice(1);
128
+ const start = text.trimStart().slice(0, 9).toLowerCase();
129
+ return start.startsWith("<!doctype") || start.startsWith("<html");
130
+ }
131
+ /**
132
+ * Rejects an HTML page served in place of an asset. The Incode CDN answers
133
+ * every missing path with HTTP 200 and a small HTML page, so `response.ok`
134
+ * cannot detect a miss.
135
+ */
136
+ function assertNotHtml(contentType, bytes, asset) {
137
+ if (contentType?.toLowerCase().includes("text/html") || looksLikeHtml(bytes)) {
138
+ const label = assetLabel(asset);
139
+ notify({
140
+ asset: label,
141
+ status: "not-binary",
142
+ byteLength: bytes.byteLength
143
+ });
144
+ throw new WasmIntegrityError("WASM_ASSET_NOT_BINARY", label, `The WASM asset ${label} was served as an HTML page (${bytes.byteLength} bytes), not the release file. Check that the file exists at its configured URL.`);
145
+ }
146
+ }
147
+ /**
148
+ * Verifies `bytes` against the official digests for `asset` and throws a
149
+ * {@link WasmIntegrityError} when they do not match.
150
+ */
151
+ async function verifyWasmAsset(asset, bytes) {
152
+ const label = assetLabel(asset);
153
+ const subtle = globalThis.crypto?.subtle;
154
+ if (subtle === void 0) {
155
+ notify({
156
+ asset: label,
157
+ status: "unavailable"
158
+ });
159
+ throw new WasmIntegrityError("WASM_INTEGRITY_UNAVAILABLE", label, "WASM assets cannot be verified because crypto.subtle is unavailable. Serve the page over HTTPS.");
160
+ }
161
+ const startedAt = performance.now();
162
+ const actual = toHex(await subtle.digest("SHA-256", bytes));
163
+ const durationMs = performance.now() - startedAt;
164
+ const expected = expectedDigests(asset);
165
+ if (expected.includes(actual)) {
166
+ notify({
167
+ asset: label,
168
+ status: "verified",
169
+ durationMs,
170
+ byteLength: bytes.byteLength
171
+ });
172
+ return;
173
+ }
174
+ notify({
175
+ asset: label,
176
+ status: "mismatch",
177
+ durationMs,
178
+ byteLength: bytes.byteLength,
179
+ expectedDigestPrefix: expected[0]?.slice(0, DIGEST_PREFIX_LENGTH),
180
+ actualDigestPrefix: actual.slice(0, DIGEST_PREFIX_LENGTH)
181
+ });
182
+ throw new WasmIntegrityError("WASM_INTEGRITY_MISMATCH", label, `The WASM asset ${label} does not match the official ${WASM_INTEGRITY_MANIFEST.wasmVersion} release file. Serve the unmodified files for this SDK release.`);
183
+ }
184
+ //#endregion
1
185
  //#region ../infra/src/wasm/wasmAssets.ts
2
186
  const WASM_MODEL_FILES = {
3
187
  idCapture: "id_capture_2_01_fp16.ortmodelv2",
@@ -83,9 +267,20 @@ const WASM_PIPELINE_MODELS = {
83
267
  videoSelfie: WASM_PIPELINE_MODEL_NAMES.videoSelfie.map((model) => WASM_MODEL_FILES[model]),
84
268
  videoSelfieId: WASM_PIPELINE_MODEL_NAMES.videoSelfieId.map((model) => WASM_MODEL_FILES[model])
85
269
  };
86
- async function resolveWasmSource(source, kind) {
270
+ /**
271
+ * Loads a WASM asset as bytes and verifies it against the official release
272
+ * digests before returning it. Byte sources are verified too: the check does
273
+ * not depend on where an asset comes from.
274
+ */
275
+ async function resolveWasmSource(source, asset) {
276
+ const bytes = await fetchWasmSource(source, asset);
277
+ await verifyWasmAsset(asset, bytes);
278
+ return bytes;
279
+ }
280
+ async function fetchWasmSource(source, asset) {
87
281
  if (source instanceof Uint8Array) return source;
88
282
  if (source instanceof ArrayBuffer) return new Uint8Array(source);
283
+ const { kind } = asset;
89
284
  let response;
90
285
  try {
91
286
  response = await fetch(source);
@@ -94,7 +289,9 @@ async function resolveWasmSource(source, kind) {
94
289
  throw new Error(`[Incode SDK] Could not load the WASM ${kind} at ${source}: ${detail}`);
95
290
  }
96
291
  if (!response.ok) throw new Error(`[Incode SDK] Could not load the WASM ${kind} at ${source}: ${response.status} ${response.statusText}`);
97
- return new Uint8Array(await response.arrayBuffer());
292
+ const bytes = new Uint8Array(await response.arrayBuffer());
293
+ assertNotHtml(response.headers.get("content-type"), bytes, asset);
294
+ return bytes;
98
295
  }
99
296
  function missingWasmModelError(fileName, pipeline) {
100
297
  return /* @__PURE__ */ new Error(`[Incode SDK] The "${pipeline}" pipeline needs ${fileName}, but the self-hosted WASM configuration does not provide it.`);
@@ -208,6 +405,28 @@ var SemaphoreProvider = class {
208
405
  }
209
406
  };
210
407
  //#endregion
408
+ //#region ../infra/src/wasm/wasmGlueImport.ts
409
+ /**
410
+ * Evaluates verified glue bytes as an ES module from a `blob:` URL.
411
+ *
412
+ * The bytes are the ones the integrity check hashed. Importing the original URL
413
+ * instead would fetch it a second time, and that response is not the one that
414
+ * was checked. Kept in its own module so unit tests, which cannot import
415
+ * `blob:` URLs under Node, can substitute it.
416
+ */
417
+ async function importVerifiedGlue(bytes) {
418
+ const blobUrl = URL.createObjectURL(new Blob([bytes], { type: "text/javascript" }));
419
+ try {
420
+ return await import(
421
+ /* @vite-ignore */
422
+ /* webpackIgnore: true */
423
+ blobUrl
424
+ );
425
+ } finally {
426
+ URL.revokeObjectURL(blobUrl);
427
+ }
428
+ }
429
+ //#endregion
211
430
  //#region ../infra/src/wasm/wasmStorageFallback.ts
212
431
  /**
213
432
  * SDK-local compatibility fallback for ml-wasm-kit releases whose embind
@@ -411,30 +630,49 @@ function acquireWasmStorageFallback() {
411
630
  if (typeof window !== "undefined" && window.wasmArrayBuffer === void 0) window.wasmArrayBuffer = null;
412
631
  let loadPromise = null;
413
632
  let loadedResult = null;
414
- async function importGlueAt(glueCodePath) {
415
- const mod = await import(
416
- /* @vite-ignore */
417
- /* webpackIgnore: true */
418
- glueCodePath
419
- );
633
+ /** Fetches the glue, verifies it, and evaluates exactly the verified bytes. */
634
+ async function importGlueAt(glueCodePath, slot) {
635
+ const bytes = await resolveWasmSource(glueCodePath, {
636
+ kind: "glue",
637
+ slot
638
+ });
639
+ let mod;
640
+ try {
641
+ mod = await importVerifiedGlue(bytes);
642
+ } catch (error) {
643
+ throw new WasmIntegrityError("WASM_GLUE_BLOCKED_BY_CSP", slot, `The verified WASM glue ${slot} could not be loaded from a blob: URL. Allow blob: in the script-src Content-Security-Policy directive.`, error);
644
+ }
420
645
  if (typeof mod.Module !== "function") throw new Error(`WASM glue at ${glueCodePath} did not export a Module factory`);
421
646
  return mod.Module;
422
647
  }
423
- async function resolveGlue(loader, glueCodePath) {
648
+ async function resolveGlue(loader, glueCodePath, slot) {
424
649
  if (loader) {
425
650
  const module = await loader();
426
651
  if (typeof module.Module !== "function") throw new Error("[Incode SDK] WASM glue module did not export a Module factory.");
652
+ reportBundledWasmGlue(slot);
427
653
  return module.Module;
428
654
  }
429
655
  if (!glueCodePath) throw new Error("WASM glue code is required");
430
- return await importGlueAt(glueCodePath);
656
+ return await importGlueAt(glueCodePath, slot);
431
657
  }
432
- async function instantiate(factory, libPath) {
433
- window.wasmArrayBuffer = await resolveWasmSource(libPath, "binary");
434
- return await factory({ wasmBinary: window.wasmArrayBuffer });
658
+ async function instantiate(factory, libPath, slot, showLogs = false) {
659
+ window.wasmArrayBuffer = await resolveWasmSource(libPath, {
660
+ kind: "binary",
661
+ slot
662
+ });
663
+ return await factory({
664
+ wasmBinary: window.wasmArrayBuffer,
665
+ print: (text) => {
666
+ if (showLogs) console.log(text);
667
+ },
668
+ printErr: (text) => {
669
+ if (showLogs) console.error(text);
670
+ }
671
+ });
435
672
  }
436
673
  /**
437
- * Load the WASM module, memoized. Subsequent calls return the same instance.
674
+ * Load the WASM module, memoized. Subsequent calls return the same instance,
675
+ * retaining the first caller's logging configuration.
438
676
  *
439
677
  * SIMD-first with fallback: if `useSimd !== false` and a `wasmSimdPath` is
440
678
  * provided, the SIMD binary + SIMD glue are tried first; on instantiation
@@ -451,21 +689,22 @@ async function loadWasmModule(config) {
451
689
  const wantSimd = config.useSimd !== false;
452
690
  const simdBinary = config.wasmSimdPath ?? config.wasmPath;
453
691
  if (wantSimd && simdBinary !== config.wasmPath) try {
454
- const simdFactory = await resolveGlue(config.loadGlueSimd, typeof simdBinary === "string" ? config.glueCodeSimdPath || deriveSiblingJsPath(simdBinary) : config.glueCodeSimdPath);
692
+ const simdFactory = await resolveGlue(config.loadGlueSimd, typeof simdBinary === "string" ? config.glueCodeSimdPath || deriveSiblingJsPath(simdBinary) : config.glueCodeSimdPath, "webLibSimd.js");
455
693
  window.Module = simdFactory;
456
694
  const result = {
457
- wasmModule: await instantiate(simdFactory, simdBinary),
695
+ wasmModule: await instantiate(simdFactory, simdBinary, "webLibSimd.wasm", config.showLogs),
458
696
  simdUsed: true
459
697
  };
460
698
  loadedResult = result;
461
699
  return result;
462
700
  } catch (simdError) {
463
- console.warn("[Incode SDK] SIMD WASM load failed, falling back to non-SIMD", simdError);
701
+ if (simdError instanceof WasmIntegrityError) throw simdError;
702
+ if (config.showLogs) console.warn("[Incode SDK] SIMD WASM load failed, falling back to non-SIMD", simdError);
464
703
  }
465
- const nonSimdFactory = await resolveGlue(config.loadGlue, config.glueCodePath);
704
+ const nonSimdFactory = await resolveGlue(config.loadGlue, config.glueCodePath, "webLib.js");
466
705
  window.Module = nonSimdFactory;
467
706
  const result = {
468
- wasmModule: await instantiate(nonSimdFactory, config.wasmPath),
707
+ wasmModule: await instantiate(nonSimdFactory, config.wasmPath, "webLib.wasm", config.showLogs),
469
708
  simdUsed: false
470
709
  };
471
710
  loadedResult = result;
@@ -734,4 +973,4 @@ function ensureReady() {
734
973
  return webClientApi;
735
974
  }
736
975
  //#endregion
737
- export { WASM_PIPELINE_OPTIONAL_MODEL_NAMES as _, setWebApiHttpTransport as a, resolveWasmSource as b, wasmCallWrapper as c, SemaphoreProvider as d, deriveSiblingJsPath as f, WASM_PIPELINE_MODEL_NAMES as g, WASM_PIPELINE_MODELS as h, initializeWasmWebClient as i, loadWasmModule as l, WASM_PIPELINE_LAZY_MODEL_NAMES as m, createWebApiHostAdapter as n, setupWasmConnection as o, WASM_MODEL_FILES as p, executeWasmRequest as r, ML_CALL_MAX_POLLS as s, WasmWebClientError as t, acquireWasmStorageFallback as u, buildModelVariantSources as v, missingWasmModelError as y };
976
+ export { setWasmIntegrityObserver as S, WASM_PIPELINE_OPTIONAL_MODEL_NAMES as _, setWebApiHttpTransport as a, resolveWasmSource as b, wasmCallWrapper as c, SemaphoreProvider as d, deriveSiblingJsPath as f, WASM_PIPELINE_MODEL_NAMES as g, WASM_PIPELINE_MODELS as h, initializeWasmWebClient as i, loadWasmModule as l, WASM_PIPELINE_LAZY_MODEL_NAMES as m, createWebApiHostAdapter as n, setupWasmConnection as o, WASM_MODEL_FILES as p, executeWasmRequest as r, ML_CALL_MAX_POLLS as s, WasmWebClientError as t, acquireWasmStorageFallback as u, buildModelVariantSources as v, reportWasmIntegritySummary as x, missingWasmModelError as y };
@@ -1,2 +1,2 @@
1
- import { a as createWatchlistForBusinessManager, c as WatchlistForBusinessValidationErrors, i as WatchlistForBusinessState, l as WatchlistForBusinessActor, n as WatchlistForBusinessFormState, o as createWatchlistForBusinessManagerFromActor, r as WatchlistForBusinessManager, s as WatchlistForBusinessConfig, t as WatchlistForBusinessFinishedState, u as watchlistForBusinessMachine } from "./watchlistForBusinessManager-CsnJnG-C.js";
1
+ import { a as createWatchlistForBusinessManager, c as WatchlistForBusinessValidationErrors, i as WatchlistForBusinessState, l as WatchlistForBusinessActor, n as WatchlistForBusinessFormState, o as createWatchlistForBusinessManagerFromActor, r as WatchlistForBusinessManager, s as WatchlistForBusinessConfig, t as WatchlistForBusinessFinishedState, u as watchlistForBusinessMachine } from "./watchlistForBusinessManager-B3GDPZrr.js";
2
2
  export { type WatchlistForBusinessActor, type WatchlistForBusinessConfig, type WatchlistForBusinessFinishedState, type WatchlistForBusinessFormState, type WatchlistForBusinessManager, type WatchlistForBusinessState, type WatchlistForBusinessValidationErrors, createWatchlistForBusinessManager, createWatchlistForBusinessManagerFromActor, watchlistForBusinessMachine };
@@ -1,3 +1,3 @@
1
- import { t as watchlistForBusinessMachine } from "./watchlistForBusinessStateMachine-CJ-MvUre.esm.js";
2
- import { n as createWatchlistForBusinessManagerFromActor, t as createWatchlistForBusinessManager } from "./watchlistForBusinessManager-CIMkpEhu.esm.js";
1
+ import { t as watchlistForBusinessMachine } from "./watchlistForBusinessStateMachine-121XK-Et.esm.js";
2
+ import { n as createWatchlistForBusinessManagerFromActor, t as createWatchlistForBusinessManager } from "./watchlistForBusinessManager-BvF4jK3S.esm.js";
3
3
  export { createWatchlistForBusinessManager, createWatchlistForBusinessManagerFromActor, watchlistForBusinessMachine };
@@ -1,4 +1,4 @@
1
- import { n as WatchlistState, o as watchlistMachine, r as createWatchlistManager, t as WatchlistManager } from "./watchlistManager-DLXef90v.js";
1
+ import { n as WatchlistState, o as watchlistMachine, r as createWatchlistManager, t as WatchlistManager } from "./watchlistManager-DJQOd8Pw.js";
2
2
  //#region src/modules/watchlist/types.d.ts
3
3
  /**
4
4
  * Configuration options for the global watchlist module.
@@ -1,3 +1,3 @@
1
- import { t as watchlistMachine } from "./watchlistStateMachine-CBqk2w-h.esm.js";
2
- import { t as createWatchlistManager } from "./watchlistManager-CixcLNDT.esm.js";
1
+ import { t as watchlistMachine } from "./watchlistStateMachine-Dgfm42w2.esm.js";
2
+ import { t as createWatchlistManager } from "./watchlistManager-CNWEOYSq.esm.js";
3
3
  export { createWatchlistManager, watchlistMachine };
@@ -1,6 +1,6 @@
1
1
  import { i as ActorRefFrom } from "./spawn-D9jgw9pW.js";
2
- import { t as Manager } from "./Manager-CQQ99QOI.js";
3
- import "./Actor-iTq7YY48.js";
2
+ import { t as Manager } from "./Manager-C9T5amUN.js";
3
+ import "./Actor-DpTj5PFb.js";
4
4
  //#region src/modules/watchlist-for-business/watchlistForBusinessStateMachine.d.ts
5
5
  declare const watchlistForBusinessMachine: any;
6
6
  type WatchlistForBusinessMachine = typeof watchlistForBusinessMachine;
@@ -1,7 +1,7 @@
1
- import { n as eventModuleNames, o as createManagerInstrumentation } from "./events-ijlbX_Wx.esm.js";
1
+ import { n as eventModuleNames, o as createManagerInstrumentation } from "./events-CAgFE-k3.esm.js";
2
2
  import { t as topLevelStateName } from "./topLevelStateName-B5i2avbh.esm.js";
3
- import { s as createActor, u as createManager } from "./xstate.esm-BuFLFuzz.esm.js";
4
- import { t as watchlistForBusinessMachine } from "./watchlistForBusinessStateMachine-CJ-MvUre.esm.js";
3
+ import { s as createActor, u as createManager } from "./xstate.esm-DSajW7CJ.esm.js";
4
+ import { t as watchlistForBusinessMachine } from "./watchlistForBusinessStateMachine-121XK-Et.esm.js";
5
5
  //#region src/modules/watchlist-for-business/watchlistForBusinessActor.ts
6
6
  function createWatchlistForBusinessActor() {
7
7
  return createActor(watchlistForBusinessMachine).start();
@@ -16,13 +16,15 @@ function createWatchlistForBusinessActor() {
16
16
  * watchlist — each manager keeps its own module token per the
17
17
  * AdSign/QSign precedent.
18
18
  *
19
- * `idle` and `finished` are intentionally unmapped — the Figma canvas does
20
- * not define screens for them; `finished` collapses into `moduleClosed`.
19
+ * `idle` and `finished` have no visible screen. Suppress their raw-state
20
+ * fallback so every screen stays in the approved `watchlist.*` family.
21
21
  */
22
22
  function getWatchlistForBusinessScreenName(snapshot) {
23
23
  const stateName = topLevelStateName(snapshot.value);
24
24
  if (stateName === void 0) return void 0;
25
25
  switch (stateName) {
26
+ case "idle":
27
+ case "finished": return "";
26
28
  case "form": return snapshot.context.isValid ? "watchlist.filled" : "watchlist.default";
27
29
  case "submitting": return "watchlist.processing";
28
30
  case "success": return "watchlist.success";
@@ -1,7 +1,7 @@
1
1
  import { t as api } from "./api-Bx3gKW_y.esm.js";
2
- import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
3
- import { i as assign, t as setup } from "./xstate.esm-BuFLFuzz.esm.js";
4
- import { n as fromPromise } from "./xstate-actors.esm-BXeQ-Ucz.esm.js";
2
+ import { t as endpoints } from "./endpoints-DHzlkQNe.esm.js";
3
+ import { i as assign, t as setup } from "./xstate.esm-DSajW7CJ.esm.js";
4
+ import { n as fromPromise } from "./xstate-actors.esm-8Gzepa_A.esm.js";
5
5
  //#region src/modules/watchlist-for-business/watchlistForBusinessServices.ts
6
6
  async function submitWatchlistForBusiness(data, signal) {
7
7
  const res = await api.post(endpoints.watchlistForBusinessSubmit, data, { signal });
@@ -1,7 +1,7 @@
1
- import { n as eventModuleNames, o as createManagerInstrumentation } from "./events-ijlbX_Wx.esm.js";
1
+ import { n as eventModuleNames, o as createManagerInstrumentation } from "./events-CAgFE-k3.esm.js";
2
2
  import { t as topLevelStateName } from "./topLevelStateName-B5i2avbh.esm.js";
3
- import { s as createActor, u as createManager } from "./xstate.esm-BuFLFuzz.esm.js";
4
- import { t as watchlistMachine } from "./watchlistStateMachine-CBqk2w-h.esm.js";
3
+ import { s as createActor, u as createManager } from "./xstate.esm-DSajW7CJ.esm.js";
4
+ import { t as watchlistMachine } from "./watchlistStateMachine-Dgfm42w2.esm.js";
5
5
  //#region src/modules/watchlist/watchlistActor.ts
6
6
  function createWatchlistActor() {
7
7
  return createActor(watchlistMachine).start();
@@ -1,6 +1,6 @@
1
1
  import { i as ActorRefFrom } from "./spawn-D9jgw9pW.js";
2
- import { t as Manager } from "./Manager-CQQ99QOI.js";
3
- import "./Actor-iTq7YY48.js";
2
+ import { t as Manager } from "./Manager-C9T5amUN.js";
3
+ import "./Actor-DpTj5PFb.js";
4
4
  //#region src/modules/watchlist/watchlistStateMachine.d.ts
5
5
  type WatchlistResult = 'success' | 'skipped';
6
6
  declare const watchlistMachine: any;
@@ -1,7 +1,7 @@
1
1
  import { t as api } from "./api-Bx3gKW_y.esm.js";
2
- import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
3
- import { i as assign, t as setup } from "./xstate.esm-BuFLFuzz.esm.js";
4
- import { n as fromPromise } from "./xstate-actors.esm-BXeQ-Ucz.esm.js";
2
+ import { t as endpoints } from "./endpoints-DHzlkQNe.esm.js";
3
+ import { i as assign, t as setup } from "./xstate.esm-DSajW7CJ.esm.js";
4
+ import { n as fromPromise } from "./xstate-actors.esm-8Gzepa_A.esm.js";
5
5
  //#region src/modules/watchlist/watchlistServices.ts
6
6
  async function processWatchlist(signal) {
7
7
  const res = await api.post(endpoints.processGlobalWatchlist, {}, { signal });