@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
@@ -0,0 +1,974 @@
1
+ import { S as noteTokenActivated, _ as resetFeatureConfigCache, g as isFeatureEnabled, h as fetchFeatureConfig, l as trueSightLog, s as startTrueSightCollection, y as noteEnvironment } from "./trueSightService-BWgRVGIT.esm.js";
2
+ import { S as subscribeEvent, v as addEvent, y as getAnalyticsBatcher } from "./events-CAgFE-k3.esm.js";
3
+ import { c as setToken, r as getToken, t as api } from "./api-Bx3gKW_y.esm.js";
4
+ import { t as endpoints } from "./endpoints-DHzlkQNe.esm.js";
5
+ import { t as SDK_VERSION } from "./sdkVersion-F5YZbjip.esm.js";
6
+ import { E as updateFeatureManagementUser } from "./feature-management-BTbYruNe.esm.js";
7
+ import { n as flushDeviceStatsQueue, r as resetDeviceStatsQueue } from "./stats-DmG_tkGk.esm.js";
8
+ import { t as getParsedUserAgent } from "./getParsedUserAgent-DhQPeKqw.esm.js";
9
+ import { t as BrowserLazyImportProvider } from "./BrowserLazyImportProvider-BhoA957O.esm.js";
10
+ import { a as isIOS } from "./platform-DkcRc9JV.esm.js";
11
+ import { t as getUserAgent } from "./getBrowser-CBiibsL-.esm.js";
12
+ import { i as linkSessionWithTRI, r as isTRIStarted } from "./tri-xzRLIIMN.esm.js";
13
+ //#region src/internal/fingerprint/fingerprintSignalsReporter.ts
14
+ const START_INTERVIEW_EVENT = "modelLoadEnd";
15
+ const CAPTURE_INTERVIEW_EVENT = "captureAttemptFinished";
16
+ const START_SIGNALS = ["pid", "device"];
17
+ function createFingerprintSignalsReporter(deps) {
18
+ let enabled = true;
19
+ let sessionActive = false;
20
+ let wasmReady = false;
21
+ let started = false;
22
+ let pendingStartSignals = START_SIGNALS;
23
+ let prefetchStarted = false;
24
+ let deviceDataUpdated = true;
25
+ let unsubscribe = null;
26
+ let optOutApplied = false;
27
+ let optInPending = false;
28
+ let queue = Promise.resolve();
29
+ let generation = 0;
30
+ function enqueue(work) {
31
+ const scheduledGeneration = generation;
32
+ queue = queue.then(async () => {
33
+ if (scheduledGeneration !== generation) return;
34
+ await work();
35
+ });
36
+ }
37
+ async function send(token, interviewEvent, type) {
38
+ const metadata = await (await deps.getWasmUtil()).getFingerprintSignals(type);
39
+ if (!metadata) return;
40
+ if (deps.getToken() !== token) return;
41
+ await deps.post(endpoints.deviceFingerprintSignals, {
42
+ interviewEvent,
43
+ metadata
44
+ }, { "X-Incode-Hardware-Id": token });
45
+ }
46
+ /**
47
+ * Sends `types` in order and stops at the first failure. Resolves to the
48
+ * types left unsent (empty when every send went through).
49
+ */
50
+ async function sendAll(token, interviewEvent, types) {
51
+ for (const [index, type] of types.entries()) try {
52
+ await send(token, interviewEvent, type);
53
+ } catch (error) {
54
+ deps.reportFailure({
55
+ message: error instanceof Error ? error.message : String(error),
56
+ signalsType: type,
57
+ interviewEvent
58
+ });
59
+ return types.slice(index);
60
+ }
61
+ return [];
62
+ }
63
+ /** Switches native behaviour collection (`sbc`); resolves to whether it worked. */
64
+ async function applyNativeCollection(on) {
65
+ try {
66
+ (await deps.getWasmUtil()).setBehaviourSignalsCollection(on);
67
+ return true;
68
+ } catch (error) {
69
+ deps.reportFailure({
70
+ message: error instanceof Error ? error.message : String(error),
71
+ signalsType: "behaviour",
72
+ interviewEvent: START_INTERVIEW_EVENT
73
+ });
74
+ return false;
75
+ }
76
+ }
77
+ async function applyNativeOptOut() {
78
+ if (optOutApplied || enabled) return;
79
+ optOutApplied = true;
80
+ if (!await applyNativeCollection(false)) optOutApplied = false;
81
+ }
82
+ async function applyNativeOptIn() {
83
+ if (!optInPending) return;
84
+ optInPending = false;
85
+ if (!await applyNativeCollection(true)) optInPending = true;
86
+ }
87
+ function startPrefetch() {
88
+ if (prefetchStarted) return;
89
+ prefetchStarted = true;
90
+ deps.getWasmUtil().then((wasmUtil) => wasmUtil.prefetchFingerprintSignals()).catch(() => void 0);
91
+ }
92
+ function tryStart() {
93
+ if (!wasmReady) return;
94
+ if (!enabled) {
95
+ enqueue(applyNativeOptOut);
96
+ return;
97
+ }
98
+ const token = deps.getToken();
99
+ if (!token) return;
100
+ startPrefetch();
101
+ if (optInPending) enqueue(applyNativeOptIn);
102
+ if (started || !sessionActive) return;
103
+ started = true;
104
+ ensureSubscribed();
105
+ const startGeneration = generation;
106
+ const allowRetry = (unsent) => {
107
+ if (startGeneration !== generation) return;
108
+ pendingStartSignals = unsent;
109
+ started = false;
110
+ };
111
+ enqueue(async () => {
112
+ if (!await applyNativeCollection(true)) {
113
+ allowRetry(pendingStartSignals);
114
+ return;
115
+ }
116
+ deviceDataUpdated = false;
117
+ const unsent = await sendAll(token, START_INTERVIEW_EVENT, pendingStartSignals);
118
+ if (unsent.length > 0) allowRetry(unsent);
119
+ });
120
+ }
121
+ function onCaptureAttemptFinished() {
122
+ wasmReady = true;
123
+ tryStart();
124
+ const token = deps.getToken();
125
+ if (!enabled || !started || !token) return;
126
+ enqueue(async () => {
127
+ const types = [];
128
+ if (deviceDataUpdated) {
129
+ deviceDataUpdated = false;
130
+ types.push("device");
131
+ }
132
+ types.push("behaviour");
133
+ await sendAll(token, CAPTURE_INTERVIEW_EVENT, types);
134
+ });
135
+ }
136
+ function ensureSubscribed() {
137
+ if (unsubscribe) return;
138
+ unsubscribe = deps.subscribe((event) => {
139
+ if (event.code === CAPTURE_INTERVIEW_EVENT) onCaptureAttemptFinished();
140
+ });
141
+ }
142
+ function resetSession() {
143
+ generation += 1;
144
+ sessionActive = false;
145
+ started = false;
146
+ pendingStartSignals = START_SIGNALS;
147
+ optInPending = false;
148
+ deviceDataUpdated = true;
149
+ }
150
+ return {
151
+ setEnabled(value) {
152
+ if (value === enabled) return;
153
+ enabled = value;
154
+ if (value) {
155
+ const wasOptedOut = optOutApplied;
156
+ optOutApplied = false;
157
+ optInPending = wasOptedOut && started;
158
+ } else optInPending = false;
159
+ tryStart();
160
+ },
161
+ onSessionActivated() {
162
+ sessionActive = true;
163
+ ensureSubscribed();
164
+ tryStart();
165
+ },
166
+ onWasmReady() {
167
+ wasmReady = true;
168
+ ensureSubscribed();
169
+ tryStart();
170
+ },
171
+ onTokenAvailable() {
172
+ tryStart();
173
+ },
174
+ onCameraInfoUpdated() {
175
+ deviceDataUpdated = true;
176
+ },
177
+ resetSession,
178
+ reset() {
179
+ resetSession();
180
+ wasmReady = false;
181
+ optOutApplied = false;
182
+ prefetchStarted = false;
183
+ unsubscribe?.();
184
+ unsubscribe = null;
185
+ }
186
+ };
187
+ }
188
+ const fingerprintSignalsReporter = createFingerprintSignalsReporter({
189
+ getWasmUtil: async () => {
190
+ const { WasmUtilProvider } = await import("./WasmUtilProvider-CIdnE7Fx.esm.js").then((n) => n.n);
191
+ return WasmUtilProvider.getInstance();
192
+ },
193
+ getToken: () => getToken(),
194
+ post: (url, body, headers) => api.post(url, body, { headers }),
195
+ subscribe: (listener) => subscribeEvent(listener),
196
+ reportFailure: ({ message, signalsType, interviewEvent }) => trueSightLog("warning", "wasm", "other", `fingerprint signals failed type=${signalsType} event=${interviewEvent} error=${message}`)
197
+ });
198
+ //#endregion
199
+ //#region ../infra/src/providers/browser/BrowserEnvironmentProvider.ts
200
+ var BrowserEnvironmentProvider = class {
201
+ getScreenDimensions() {
202
+ if (typeof screen === "undefined") return {
203
+ width: 0,
204
+ height: 0
205
+ };
206
+ return {
207
+ width: screen.width,
208
+ height: screen.height
209
+ };
210
+ }
211
+ generateCanvasFingerprint() {
212
+ try {
213
+ if (typeof document === "undefined") return "";
214
+ const canvas = document.createElement("canvas");
215
+ const ctx = canvas.getContext("2d");
216
+ if (!ctx) return "";
217
+ ctx.textBaseline = "top";
218
+ ctx.font = "14px Arial";
219
+ ctx.fillText("fingerprint", 2, 2);
220
+ return canvas.toDataURL().slice(-50);
221
+ } catch {
222
+ return "";
223
+ }
224
+ }
225
+ getWebGLRenderer() {
226
+ try {
227
+ if (typeof document === "undefined") return "";
228
+ const canvas = document.createElement("canvas");
229
+ const gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
230
+ if (!gl) return "";
231
+ const debugInfo = gl.getExtension("WEBGL_debug_renderer_info");
232
+ if (!debugInfo) return "";
233
+ return gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) || "";
234
+ } catch {
235
+ return "";
236
+ }
237
+ }
238
+ getWindowProperty(prop) {
239
+ if (typeof window === "undefined") return;
240
+ return window[prop];
241
+ }
242
+ getNavigatorProperty(prop) {
243
+ if (typeof navigator === "undefined") return;
244
+ return navigator[prop];
245
+ }
246
+ getNavigatorPrefixes() {
247
+ if (typeof navigator === "undefined") return {
248
+ webkit: false,
249
+ moz: false,
250
+ o: false,
251
+ ms: false
252
+ };
253
+ const nav = navigator;
254
+ return {
255
+ webkit: nav.webkitGetUserMedia !== void 0,
256
+ moz: nav.mozGetUserMedia !== void 0,
257
+ o: nav.oGetUserMedia !== void 0,
258
+ ms: nav.msGetUserMedia !== void 0
259
+ };
260
+ }
261
+ getMaxTouchPoints() {
262
+ if (typeof navigator === "undefined") return 0;
263
+ return navigator.maxTouchPoints;
264
+ }
265
+ hasOnTouchStart() {
266
+ if (typeof window !== "undefined" && "ontouchstart" in window) return true;
267
+ if (typeof document !== "undefined") return "ontouchstart" in document.documentElement;
268
+ return false;
269
+ }
270
+ getNavigatorProductSub() {
271
+ if (typeof navigator === "undefined") return;
272
+ return navigator.productSub;
273
+ }
274
+ getEvalToStringLength() {
275
+ return eval.toString().length;
276
+ }
277
+ tryFirefoxToSource() {
278
+ try {
279
+ throw "a";
280
+ } catch (err) {
281
+ try {
282
+ err.toSource();
283
+ return true;
284
+ } catch {
285
+ return false;
286
+ }
287
+ }
288
+ }
289
+ async fetchJson(url, timeoutMs = 3e3) {
290
+ try {
291
+ if (typeof fetch === "undefined") return null;
292
+ const controller = new AbortController();
293
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
294
+ const response = await fetch(url, { signal: controller.signal });
295
+ clearTimeout(timeoutId);
296
+ return await response.json();
297
+ } catch {
298
+ return null;
299
+ }
300
+ }
301
+ async enumerateVideoDeviceLabels() {
302
+ try {
303
+ if (typeof navigator === "undefined" || !navigator.mediaDevices?.enumerateDevices) return [];
304
+ return (await navigator.mediaDevices.enumerateDevices()).filter((device) => device.kind === "videoinput").map((device) => device.label);
305
+ } catch {
306
+ return [];
307
+ }
308
+ }
309
+ getTimestamp() {
310
+ return Date.now();
311
+ }
312
+ };
313
+ //#endregion
314
+ //#region ../infra/src/providers/browser/BrowserInfoProvider.ts
315
+ var BrowserInfoProvider = class {
316
+ checkWebRtcSupport() {
317
+ if (typeof window === "undefined") return false;
318
+ const hasRTCPeerConnection = "RTCPeerConnection" in window || "webkitRTCPeerConnection" in window || "mozRTCPeerConnection" in window;
319
+ const hasGetUserMedia = typeof navigator !== "undefined" && navigator.mediaDevices?.getUserMedia !== void 0;
320
+ return hasRTCPeerConnection && hasGetUserMedia;
321
+ }
322
+ getBrowserInfo() {
323
+ const userAgent = typeof navigator !== "undefined" ? navigator.userAgent : "";
324
+ return {
325
+ userAgent,
326
+ isWebRtcSupported: this.checkWebRtcSupport(),
327
+ ...getParsedUserAgent(userAgent)
328
+ };
329
+ }
330
+ };
331
+ //#endregion
332
+ //#region ../infra/src/device/getDeviceData.ts
333
+ const HIGH_ENTROPY_HINTS = /* @__PURE__ */ new Set([
334
+ "model",
335
+ "platformVersion",
336
+ "fullVersionList",
337
+ "brands",
338
+ "platform"
339
+ ]);
340
+ function getFallbackDeviceInfo() {
341
+ const parsed = getParsedUserAgent();
342
+ return {
343
+ device: { model: parsed.device.model },
344
+ os: {
345
+ name: parsed.os.name,
346
+ version: parsed.os.version
347
+ },
348
+ browser: {
349
+ name: parsed.browser.name,
350
+ version: parsed.browser.version
351
+ }
352
+ };
353
+ }
354
+ function sanitizeString(value) {
355
+ return value?.trim() || void 0;
356
+ }
357
+ function extractPrimaryBrandInfo(fullVersionList, brands) {
358
+ const primaryBrand = fullVersionList?.[0] || brands?.[0];
359
+ return {
360
+ name: sanitizeString(primaryBrand?.brand),
361
+ version: sanitizeString(primaryBrand?.version)
362
+ };
363
+ }
364
+ async function getHighEntropyDeviceInfo(userAgentData) {
365
+ const highEntropyValues = await userAgentData.getHighEntropyValues(Array.from(HIGH_ENTROPY_HINTS));
366
+ const { name: browserName, version: browserVersion } = extractPrimaryBrandInfo(highEntropyValues.fullVersionList, userAgentData.brands);
367
+ return {
368
+ device: { model: sanitizeString(highEntropyValues.model) },
369
+ os: {
370
+ name: sanitizeString(highEntropyValues.platform),
371
+ version: sanitizeString(highEntropyValues.platformVersion)
372
+ },
373
+ browser: {
374
+ name: browserName,
375
+ version: browserVersion
376
+ }
377
+ };
378
+ }
379
+ const checkForUnbrandedBrowser = (browser) => {
380
+ const userAgent = typeof navigator !== "undefined" ? navigator.userAgent : "";
381
+ const fallback = getFallbackDeviceInfo();
382
+ if (!userAgent) return browser;
383
+ try {
384
+ return {
385
+ ...browser,
386
+ name: fallback.browser.name,
387
+ version: fallback.browser.version
388
+ };
389
+ } catch {
390
+ return {
391
+ ...browser,
392
+ name: "Unknown",
393
+ version: "Unknown"
394
+ };
395
+ }
396
+ };
397
+ function mergeDeviceInfo(fallback, enhanced) {
398
+ return {
399
+ device: { model: enhanced.device?.model || fallback.device.model },
400
+ os: {
401
+ name: enhanced.os?.name || fallback.os.name,
402
+ version: enhanced.os?.version || fallback.os.version
403
+ },
404
+ browser: checkForUnbrandedBrowser({
405
+ name: enhanced.browser?.name || fallback.browser.name,
406
+ version: enhanced.browser?.version || fallback.browser.version
407
+ })
408
+ };
409
+ }
410
+ function isUserAgentClientHintsSupported(navigator) {
411
+ return Boolean(navigator.userAgentData?.getHighEntropyValues && typeof navigator.userAgentData.getHighEntropyValues === "function");
412
+ }
413
+ async function getDeviceFingerprintInfo() {
414
+ if (typeof navigator === "undefined") return {
415
+ device: {},
416
+ os: {},
417
+ browser: {}
418
+ };
419
+ const customNavigator = navigator;
420
+ const fallbackInfo = getFallbackDeviceInfo();
421
+ if (!isUserAgentClientHintsSupported(customNavigator)) return fallbackInfo;
422
+ try {
423
+ return mergeDeviceInfo(fallbackInfo, await getHighEntropyDeviceInfo(customNavigator.userAgentData));
424
+ } catch {
425
+ return fallbackInfo;
426
+ }
427
+ }
428
+ //#endregion
429
+ //#region ../infra/src/scheduling/yieldUntilNextPaint.ts
430
+ /**
431
+ * Resolves after the browser has had a chance to commit and paint a queued
432
+ * render.
433
+ *
434
+ * Strategy:
435
+ * - `requestAnimationFrame` callbacks fire BEFORE the paint of the frame
436
+ * they belong to (per the HTML5 "update the rendering" step). If we
437
+ * resolve the promise inside a rAF callback, the await-continuation
438
+ * runs as a microtask immediately after the callback returns — still
439
+ * before the paint phase of that frame. A caller that then blocks the
440
+ * main thread (e.g. synchronous WASM `processPhoto`) starves the paint.
441
+ * - We therefore chain rAF → setTimeout: the rAF fires before frame N's
442
+ * paint, the setTimeout runs as a macrotask scheduled after frame N's
443
+ * "update the rendering" step, which the browser will only get to once
444
+ * the paint actually lands. By the time setTimeout fires, the paint
445
+ * for the queued render is on screen.
446
+ * - In environments where rAF never ticks (jsdom, happy-dom, backgrounded
447
+ * tabs), a parallel `setTimeout` fallback at 100 ms resolves instead.
448
+ * 100 ms is comfortably longer than two real-browser frames so rAF +
449
+ * setTimeout wins reliably in any foregrounded browser. (An earlier
450
+ * implementation raced rAF against a `MessageChannel` macrotask, but
451
+ * MessageChannel drains immediately after the current task's
452
+ * microtasks — before the next paint — so it resolved the promise too
453
+ * early and defeated the whole point of the helper.)
454
+ *
455
+ * Lives in infra because it touches browser APIs (`requestAnimationFrame`,
456
+ * `setTimeout`) that the architecture rules forbid from core. Core modules
457
+ * that need to yield to the browser render loop should import this helper
458
+ * directly via its file path.
459
+ */
460
+ function yieldUntilNextPaint() {
461
+ return new Promise((resolve) => {
462
+ let resolved = false;
463
+ const done = () => {
464
+ if (resolved) return;
465
+ resolved = true;
466
+ resolve();
467
+ };
468
+ if (typeof requestAnimationFrame === "function") requestAnimationFrame(() => {
469
+ requestAnimationFrame(() => {
470
+ setTimeout(done, 0);
471
+ });
472
+ });
473
+ setTimeout(done, 100);
474
+ });
475
+ }
476
+ //#endregion
477
+ //#region ../infra/src/providers/browser/thumbmarkAdapter.ts
478
+ /**
479
+ * Adapter for @thumbmarkjs/thumbmarkjs. Single point of dependency so bundlers
480
+ * resolve it from infra's node_modules when building apps that depend on core → infra.
481
+ */
482
+ const THUMBMARK_ALGORITHM = {
483
+ algorithmName: "thumbmarkjs",
484
+ algorithmVersion: "1.6.4"
485
+ };
486
+ /**
487
+ * `logging` must stay disabled. With it on (the upstream default) `getThumbmark()`
488
+ * evaluates a bare, unguarded storage read:
489
+ *
490
+ * options.logging && !sessionStorage.getItem("_tmjs_l") && Math.random() < 1e-4
491
+ *
492
+ * Hosts that delete the bare global as a self-XSS mitigation (`delete
493
+ * window.sessionStorage`) make that a `ReferenceError`, which would cost us the
494
+ * device fingerprint. `logging: false` short-circuits the expression before the
495
+ * read. It also stops upstream's 1-in-10 000 telemetry POST to
496
+ * api.thumbmarkjs.com. Re-check this when bumping the dependency.
497
+ */
498
+ const THUMBMARK_OPTIONS = {
499
+ logging: false,
500
+ yield: yieldUntilNextPaint
501
+ };
502
+ const lazyThumbmark = BrowserLazyImportProvider.getInstance().create(() => import("./thumbmark.esm-CRc0cYvz.esm.js"), {
503
+ label: "Fingerprint",
504
+ moduleName: "@thumbmarkjs/thumbmarkjs",
505
+ timeoutMs: 1e4,
506
+ disabledMessage: "the device fingerprint is unavailable for this attempt."
507
+ });
508
+ async function getThumbmarkId() {
509
+ const module = await lazyThumbmark.load();
510
+ if (!module) throw new Error("@thumbmarkjs/thumbmarkjs failed to load");
511
+ return (await new module.Thumbmark(THUMBMARK_OPTIONS).get()).thumbmark;
512
+ }
513
+ //#endregion
514
+ //#region ../infra/src/providers/browser/FingerprintProvider.ts
515
+ var FingerprintProvider = class {
516
+ constructor(ipLookup) {
517
+ this.ipLookup = ipLookup;
518
+ }
519
+ prime() {
520
+ this.startVisitorId();
521
+ }
522
+ startVisitorId() {
523
+ if (!this.visitorIdPromise) {
524
+ this.visitorIdPromise = getThumbmarkId();
525
+ this.visitorIdPromise.catch(() => void 0);
526
+ }
527
+ return this.visitorIdPromise;
528
+ }
529
+ async getFingerprint(disableIpify = false) {
530
+ const visitorId = await this.startVisitorId();
531
+ const [deviceInfo, ip] = await Promise.all([getDeviceFingerprintInfo(), disableIpify ? Promise.resolve("") : this.ipLookup.getIp()]);
532
+ return {
533
+ visitorId,
534
+ ip,
535
+ deviceInfo,
536
+ ...THUMBMARK_ALGORITHM
537
+ };
538
+ }
539
+ };
540
+ //#endregion
541
+ //#region ../infra/src/providers/browser/IpifyProvider.ts
542
+ let cachedIp;
543
+ let inFlightLookup;
544
+ /**
545
+ * Resets the module-level IP cache. Intended for tests and full session resets.
546
+ */
547
+ function resetIpifyCache() {
548
+ cachedIp = void 0;
549
+ inFlightLookup = void 0;
550
+ }
551
+ async function fetchIpFromIpify() {
552
+ if (typeof fetch === "undefined") return "";
553
+ let timeoutId = 0;
554
+ const controller = new AbortController();
555
+ if (AbortSignal.timeout) {
556
+ const signal = AbortSignal.timeout(3e3);
557
+ return (await (await fetch("https://api.ipify.org?format=json", { signal })).json()).ip;
558
+ }
559
+ const timeoutPromise = new Promise((_, reject) => {
560
+ timeoutId = setTimeout(() => {
561
+ controller.abort();
562
+ reject(/* @__PURE__ */ new Error("Request timeout"));
563
+ }, 3e3);
564
+ });
565
+ const fetchPromise = fetch("https://api.ipify.org?format=json", { signal: controller.signal }).then((res) => res.json()).then((data) => data.ip);
566
+ const result = await Promise.race([fetchPromise, timeoutPromise]);
567
+ clearTimeout(timeoutId);
568
+ return result;
569
+ }
570
+ var IpifyProvider = class {
571
+ async getIp() {
572
+ if (cachedIp !== void 0) return cachedIp;
573
+ if (inFlightLookup) return inFlightLookup;
574
+ inFlightLookup = (async () => {
575
+ try {
576
+ const ip = await fetchIpFromIpify();
577
+ cachedIp = ip;
578
+ return ip;
579
+ } catch {
580
+ cachedIp = "";
581
+ return "";
582
+ } finally {
583
+ inFlightLookup = void 0;
584
+ }
585
+ })();
586
+ return inFlightLookup;
587
+ }
588
+ };
589
+ //#endregion
590
+ //#region src/internal/fingerprint/fingerprintApi.ts
591
+ async function getFingerprint(disableIpify) {
592
+ const shouldDisableIpify = disableIpify ?? getDisableIpify();
593
+ return new FingerprintProvider(new IpifyProvider()).getFingerprint(shouldDisableIpify);
594
+ }
595
+ //#endregion
596
+ //#region src/internal/device/hasLiedBrowser.ts
597
+ function detectBrowserFromUserAgent(userAgent) {
598
+ if (userAgent.indexOf("edge/") >= 0 || userAgent.indexOf("iemobile/") >= 0) return "Other";
599
+ if (userAgent.indexOf("opera mini") >= 0) return "Other";
600
+ if (userAgent.indexOf("firefox/") >= 0) return "Firefox";
601
+ if (userAgent.indexOf("opera/") >= 0 || userAgent.indexOf(" opr/") >= 0) return "Opera";
602
+ if (userAgent.indexOf("chrome/") >= 0) return "Chrome";
603
+ if (userAgent.indexOf("safari/") >= 0) {
604
+ if (userAgent.indexOf("android 1.") >= 0 || userAgent.indexOf("android 2.") >= 0 || userAgent.indexOf("android 3.") >= 0 || userAgent.indexOf("android 4.") >= 0) return "AOSP";
605
+ return "Safari";
606
+ }
607
+ if (userAgent.indexOf("trident/") >= 0) return "Internet Explorer";
608
+ return "Other";
609
+ }
610
+ function hasLiedBrowser(browserEnv) {
611
+ const userAgent = getUserAgent().toLowerCase();
612
+ if (userAgent.indexOf("edge/") >= 0 || userAgent.indexOf("iemobile/") >= 0) return false;
613
+ if (userAgent.indexOf("opera mini") >= 0) return false;
614
+ const browser = detectBrowserFromUserAgent(userAgent);
615
+ const productSub = browserEnv.getNavigatorProductSub();
616
+ if ((browser === "Chrome" || browser === "Safari" || browser === "Opera") && productSub !== "20030107") return true;
617
+ const evalLength = browserEnv.getEvalToStringLength();
618
+ if (evalLength === 37 && browser !== "Safari" && browser !== "Firefox" && browser !== "Other") return true;
619
+ if (evalLength === 39 && browser !== "Internet Explorer" && browser !== "Other") return true;
620
+ if (evalLength === 33 && browser !== "Chrome" && browser !== "AOSP" && browser !== "Opera" && browser !== "Other") return true;
621
+ return browserEnv.tryFirefoxToSource() && browser !== "Firefox" && browser !== "Other";
622
+ }
623
+ //#endregion
624
+ //#region src/internal/device/browserSimulation.ts
625
+ const AUTOMATION_MARKERS = {
626
+ window: [
627
+ "callPhantom",
628
+ "_phantom",
629
+ "phantom",
630
+ "__nightmare",
631
+ "domAutomation",
632
+ "domAutomationController"
633
+ ],
634
+ navigator: ["webdriver"]
635
+ };
636
+ function hasAutomationMarker(browserEnv) {
637
+ for (const prop of AUTOMATION_MARKERS.window) if (browserEnv.getWindowProperty(prop)) return true;
638
+ for (const prop of AUTOMATION_MARKERS.navigator) if (browserEnv.getNavigatorProperty(prop)) return true;
639
+ return false;
640
+ }
641
+ function isBrowserSimulation(browserEnv) {
642
+ if (hasAutomationMarker(browserEnv)) return true;
643
+ if (!getParsedUserAgent().browser.name) return true;
644
+ const touchPoints = browserEnv.getMaxTouchPoints();
645
+ const isTouch = touchPoints > 0 || browserEnv.hasOnTouchStart();
646
+ if (isTouch && touchPoints !== 1) return false;
647
+ const ua = getUserAgent();
648
+ if (isTouch && (hasLiedBrowser(browserEnv) || ua.includes("Mobile"))) return true;
649
+ if (isIOS(ua) && !browserEnv.hasOnTouchStart()) return true;
650
+ return false;
651
+ }
652
+ //#endregion
653
+ //#region src/internal/fingerprint/fingerprintService.ts
654
+ function formatOsVersion(os) {
655
+ return `${os.name || "Unknown"} ${os.version || ""}`.trim();
656
+ }
657
+ function formatBrowser(browser) {
658
+ if (!browser.name || !browser.version) return "Unknown";
659
+ return `${browser.name} ${browser.version}`;
660
+ }
661
+ async function submitDeviceFingerprint(options = {}, dependencies) {
662
+ const { disableIpify = false, hostingApp, signal } = options;
663
+ const token = getToken();
664
+ const fingerprint = await dependencies.fingerprintProvider.getFingerprint(disableIpify);
665
+ if (getToken() !== token || dependencies.isCurrentSession?.() === false) throw new Error("Session changed during fingerprint collection");
666
+ const hasLiedBrowser = isBrowserSimulation(dependencies.browserEnv);
667
+ const payload = {
668
+ hash: fingerprint.visitorId || "",
669
+ ip: fingerprint.ip || "",
670
+ deviceType: "WEBAPP",
671
+ data: JSON.stringify(fingerprint),
672
+ osVersion: formatOsVersion(fingerprint.deviceInfo.os),
673
+ deviceModel: fingerprint.deviceInfo.device.model || "",
674
+ browser: formatBrowser(fingerprint.deviceInfo.browser),
675
+ hasLiedBrowser,
676
+ sdkVersion: SDK_VERSION,
677
+ hostingApp: hostingApp ?? "Web SDK",
678
+ algorithmName: fingerprint.algorithmName,
679
+ algorithmVersion: fingerprint.algorithmVersion
680
+ };
681
+ const response = await api.post(endpoints.deviceFingerprint, payload, { signal });
682
+ if (!response.ok) throw new Error(`Failed to submit fingerprint: ${response.status} ${response.statusText}`);
683
+ return response.data;
684
+ }
685
+ //#endregion
686
+ //#region src/internal/session/standaloneFlowPolicy.ts
687
+ let standaloneFlowPolicy = Object.freeze({
688
+ enabled: true,
689
+ mergeConfig: false
690
+ });
691
+ let flowPreloader;
692
+ function resolveStandaloneFlowPolicy(flow) {
693
+ return Object.freeze({
694
+ enabled: flow !== false,
695
+ mergeConfig: flow !== false && (typeof flow === "object" ? flow : {}).mergeConfig === true
696
+ });
697
+ }
698
+ function setStandaloneFlowPolicy(policy) {
699
+ standaloneFlowPolicy = policy;
700
+ }
701
+ function getStandaloneFlowPolicy() {
702
+ return standaloneFlowPolicy;
703
+ }
704
+ function registerFlowPreloader(preloader) {
705
+ flowPreloader = preloader;
706
+ }
707
+ function preloadSessionFlow() {
708
+ return flowPreloader?.() ?? Promise.resolve();
709
+ }
710
+ function resetStandaloneFlowPolicy() {
711
+ standaloneFlowPolicy = resolveStandaloneFlowPolicy(void 0);
712
+ flowPreloader = void 0;
713
+ }
714
+ //#endregion
715
+ //#region src/internal/session/sessionInitializer.ts
716
+ let sessionInitialized = false;
717
+ let cachedFeatures = null;
718
+ let cachedDisableIpify = false;
719
+ let clientIpLookupEnabled = true;
720
+ let clientFingerprintEnabled = true;
721
+ let clientHostingApp;
722
+ function setClientIpLookupEnabled(enabled) {
723
+ clientIpLookupEnabled = enabled;
724
+ }
725
+ /**
726
+ * Host identifier from `setup({ hostingApp })`, used as the default for every
727
+ * activation. Without it the option only reached the fingerprint when the host
728
+ * also passed `token` to `setup()` — activations triggered later from inside
729
+ * `<incode-flow>` / `<incode-workflow>` / standalone modules carry a token but
730
+ * no host identity, so those sessions fell back to the `'Web SDK'` default.
731
+ */
732
+ function setClientHostingApp(hostingApp) {
733
+ clientHostingApp = hostingApp;
734
+ }
735
+ function setClientFingerprintEnabled(enabled) {
736
+ clientFingerprintEnabled = enabled;
737
+ fingerprintSignalsReporter.setEnabled(enabled);
738
+ }
739
+ function resolveDisableIpify(serverDisableIpify) {
740
+ return !clientIpLookupEnabled || serverDisableIpify;
741
+ }
742
+ /** `"Chrome" + "126"` -> `"Chrome 126"`; undefined when nothing was parsed. */
743
+ function composeNameVersion(name, version) {
744
+ const value = [name, version].filter(Boolean).join(" ");
745
+ return value === "" ? void 0 : value;
746
+ }
747
+ function preloadOptionalFlow() {
748
+ try {
749
+ return preloadSessionFlow().catch(() => void 0);
750
+ } catch {
751
+ return Promise.resolve();
752
+ }
753
+ }
754
+ let cachedFingerprintSuccess = false;
755
+ let cachedFingerprintResult;
756
+ let sessionInitPromise = null;
757
+ let fingerprintSettled = null;
758
+ function createFingerprintSettled() {
759
+ let resolve = () => void 0;
760
+ return {
761
+ promise: new Promise((r) => {
762
+ resolve = r;
763
+ }),
764
+ resolve
765
+ };
766
+ }
767
+ /**
768
+ * Resolves once the device-fingerprint step of the current session
769
+ * activation has settled (submitted, failed, or skipped) — with the backend's
770
+ * result when there is one. Resolves immediately when no activation is in
771
+ * flight. Pairs with `initializeSession({ awaitFingerprint: false })`.
772
+ */
773
+ function whenSessionFingerprintSettled() {
774
+ return fingerprintSettled?.promise ?? Promise.resolve(cachedFingerprintResult);
775
+ }
776
+ /**
777
+ * Activates a session by setting the auth token on the HTTP client and
778
+ * preloading session-scoped state.
779
+ *
780
+ * Performs:
781
+ * 1. Sets the token (and clears stale session-init cache if the token changed)
782
+ * 2. Links the session with the TRI activity if TRI is enabled
783
+ * 3. Fetches feature configuration from backend
784
+ * 4. Submits device fingerprint
785
+ * 5. Starts the analytics batcher so buffered events are flushed
786
+ *
787
+ * Results are cached per token. Calling again with the same token returns the
788
+ * cached result; calling with a different token re-initializes from scratch.
789
+ *
790
+ * @param options - Session activation options (`token` required)
791
+ * @returns Session initialization result with feature config
792
+ *
793
+ * @example
794
+ * ```ts
795
+ * await setup({ apiURL: 'https://api.incode.com' });
796
+ * const session = await createSession('api-key', options);
797
+ * const { features } = await initializeSession({ token: session.token });
798
+ *
799
+ * // Check feature flags
800
+ * if (isFeatureEnabled('DISABLE_IPIFY', features.features)) {
801
+ * // Handle disabled ipify
802
+ * }
803
+ * ```
804
+ */
805
+ async function initializeSession(options = {}) {
806
+ const { token, hostingApp = clientHostingApp, signal, preloadFlow, awaitFingerprint = true } = options;
807
+ let triLinkPromise = Promise.resolve();
808
+ if (token !== void 0 && token !== getToken()) {
809
+ setToken(token);
810
+ resetSessionInit();
811
+ if (isTRIStarted()) triLinkPromise = linkSessionWithTRI(token);
812
+ }
813
+ if (token !== void 0) noteTokenActivated();
814
+ if (getToken()) fingerprintSignalsReporter.onTokenAvailable();
815
+ const flowPreloadPromise = getToken() && preloadFlow === true ? preloadOptionalFlow() : Promise.resolve();
816
+ await triLinkPromise;
817
+ if (sessionInitialized && cachedFeatures) {
818
+ if (awaitFingerprint) await whenSessionFingerprintSettled();
819
+ await flowPreloadPromise;
820
+ return {
821
+ features: cachedFeatures,
822
+ disableIpify: cachedDisableIpify,
823
+ fingerprintSuccess: cachedFingerprintSuccess,
824
+ fingerprintResult: cachedFingerprintResult
825
+ };
826
+ }
827
+ if (sessionInitPromise) {
828
+ const result = await sessionInitPromise;
829
+ if (awaitFingerprint) await whenSessionFingerprintSettled();
830
+ await flowPreloadPromise;
831
+ return {
832
+ ...result,
833
+ fingerprintSuccess: cachedFingerprintSuccess,
834
+ fingerprintResult: cachedFingerprintResult
835
+ };
836
+ }
837
+ const settled = createFingerprintSettled();
838
+ fingerprintSettled = settled;
839
+ const fingerprintProvider = clientFingerprintEnabled ? new FingerprintProvider(new IpifyProvider()) : void 0;
840
+ fingerprintProvider?.prime?.();
841
+ let fingerprintPromise;
842
+ sessionInitPromise = (async () => {
843
+ let features;
844
+ let serverDisableIpify = false;
845
+ try {
846
+ features = await fetchFeatureConfig(signal);
847
+ serverDisableIpify = isFeatureEnabled("DISABLE_IPIFY", features.features);
848
+ startTrueSightCollection(features);
849
+ } catch {
850
+ features = { sessionIdentifier: "" };
851
+ trueSightLog("warning", "session", "orchestration", "feature-config fetch failed");
852
+ startTrueSightCollection();
853
+ }
854
+ const disableIpify = resolveDisableIpify(serverDisableIpify);
855
+ const preloadedFlow = await flowPreloadPromise;
856
+ await updateFeatureManagementUser({ customIDs: {
857
+ hashed_onboarding_id: features.sessionIdentifier || void 0,
858
+ flow_id: preloadedFlow?.flowId
859
+ } });
860
+ fingerprintPromise = submitSessionFingerprint(fingerprintProvider, {
861
+ disableIpify,
862
+ hostingApp,
863
+ signal
864
+ }, settled);
865
+ try {
866
+ const browserInfo = new BrowserInfoProvider().getBrowserInfo();
867
+ const language = new BrowserEnvironmentProvider().getNavigatorProperty("language");
868
+ noteEnvironment({
869
+ browser: composeNameVersion(browserInfo.browser.name, browserInfo.browser.version),
870
+ osVersion: composeNameVersion(browserInfo.os.name, browserInfo.os.version),
871
+ osLanguage: typeof language === "string" ? language : void 0
872
+ });
873
+ addEvent({
874
+ code: "browser",
875
+ payload: {
876
+ userAgent: browserInfo.userAgent,
877
+ isWebRtcSupported: browserInfo.isWebRtcSupported,
878
+ browser: browserInfo.browser,
879
+ os: browserInfo.os,
880
+ device: browserInfo.device,
881
+ engine: browserInfo.engine,
882
+ cpu: browserInfo.cpu
883
+ }
884
+ });
885
+ } catch (error) {
886
+ console.warn("Failed to send browser info event:", error);
887
+ }
888
+ if (awaitFingerprint) await fingerprintPromise;
889
+ sessionInitialized = true;
890
+ cachedFeatures = features;
891
+ cachedDisableIpify = disableIpify;
892
+ fingerprintSignalsReporter.onSessionActivated();
893
+ await flowPreloadPromise;
894
+ return {
895
+ features,
896
+ disableIpify,
897
+ fingerprintSuccess: cachedFingerprintSuccess,
898
+ fingerprintResult: cachedFingerprintResult
899
+ };
900
+ })().finally(() => {
901
+ sessionInitPromise = null;
902
+ if (!fingerprintPromise) settled.resolve(void 0);
903
+ (fingerprintPromise ?? Promise.resolve()).finally(() => {
904
+ if (fingerprintSettled === settled) getAnalyticsBatcher()?.start();
905
+ });
906
+ });
907
+ return sessionInitPromise;
908
+ }
909
+ /**
910
+ * Device-fingerprint step of session activation. Writes the cached result only
911
+ * while it still belongs to the current activation (a token change resets
912
+ * `fingerprintSettled`) and always settles the waiter.
913
+ */
914
+ async function submitSessionFingerprint(fingerprintProvider, options, settled) {
915
+ const isCurrent = () => fingerprintSettled === settled;
916
+ try {
917
+ if (fingerprintProvider) try {
918
+ const result = await submitDeviceFingerprint(options, {
919
+ fingerprintProvider,
920
+ browserEnv: new BrowserEnvironmentProvider(),
921
+ isCurrentSession: isCurrent
922
+ });
923
+ if (isCurrent()) {
924
+ cachedFingerprintResult = result;
925
+ cachedFingerprintSuccess = true;
926
+ flushDeviceStatsQueue();
927
+ }
928
+ } catch (error) {
929
+ console.warn("Failed to submit device fingerprint:", error);
930
+ trueSightLog("warning", "session", "other", "device fingerprint submit failed");
931
+ }
932
+ else if (isCurrent()) flushDeviceStatsQueue();
933
+ } finally {
934
+ settled.resolve(isCurrent() ? cachedFingerprintResult : void 0);
935
+ }
936
+ }
937
+ /**
938
+ * Gets the cached disableIpify flag.
939
+ * Returns false if session hasn't been initialized.
940
+ */
941
+ function getDisableIpify() {
942
+ if (!clientIpLookupEnabled) return true;
943
+ return cachedDisableIpify;
944
+ }
945
+ function getSessionFingerprintResult() {
946
+ return cachedFingerprintResult;
947
+ }
948
+ /**
949
+ * Gets whether client-side device-fingerprint submission is enabled.
950
+ * Consumed by `loadDeepsightSession` to resolve `disableFingerprint`
951
+ * (mirrors how `getDisableIpify` is used).
952
+ */
953
+ function getFingerprintEnabled() {
954
+ return clientFingerprintEnabled;
955
+ }
956
+ /**
957
+ * Resets session initialization state.
958
+ * Useful for testing or when starting a new session.
959
+ */
960
+ function resetSessionInit() {
961
+ fingerprintSignalsReporter.resetSession();
962
+ sessionInitialized = false;
963
+ cachedFeatures = null;
964
+ cachedDisableIpify = false;
965
+ cachedFingerprintSuccess = false;
966
+ cachedFingerprintResult = void 0;
967
+ sessionInitPromise = null;
968
+ fingerprintSettled = null;
969
+ resetFeatureConfigCache();
970
+ resetIpifyCache();
971
+ resetDeviceStatsQueue();
972
+ }
973
+ //#endregion
974
+ export { IpifyProvider as _, resetSessionInit as a, BrowserEnvironmentProvider as b, setClientIpLookupEnabled as c, registerFlowPreloader as d, resetStandaloneFlowPolicy as f, getFingerprint as g, isBrowserSimulation as h, initializeSession as i, whenSessionFingerprintSettled as l, setStandaloneFlowPolicy as m, getFingerprintEnabled as n, setClientFingerprintEnabled as o, resolveStandaloneFlowPolicy as p, getSessionFingerprintResult as r, setClientHostingApp as s, getDisableIpify as t, getStandaloneFlowPolicy as u, getThumbmarkId as v, fingerprintSignalsReporter as x, getDeviceFingerprintInfo as y };