@incodetech/core 2.1.1 → 2.2.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.
- package/dist/{3dAvatarProvider-BwOmTMOy.esm.js → 3dAvatarProvider-g02DTFqT.esm.js} +811 -880
- package/dist/Actor-iTq7YY48.d.ts +1 -0
- package/dist/BrowserDiagnosticsCryptoProvider-CriIh1Gt.esm.js +95 -0
- package/dist/BrowserLazyImportProvider-BhoA957O.esm.js +114 -0
- package/dist/{BrowserStorageProvider-CBHBhKQN.esm.js → BrowserStorageProvider-k-FDkC4W.esm.js} +2 -4
- package/dist/{BrowserTimerProvider-CHloo0eQ.esm.js → BrowserTimerProvider-BXhgNxLt.esm.js} +1 -2
- package/dist/{BrowserVisibilityObserverProvider-GBS6XSii.esm.js → BrowserVisibilityObserverProvider-BX1BiLDK.esm.js} +1 -2
- package/dist/Face2DProvider-UUQt_vRC.esm.js +437 -0
- package/dist/{createFaceAvatar-CpdYp9Iy.d.ts → FaceDetectionProvider-Mh6q3EbA.d.ts} +107 -159
- package/dist/IBrowserEnvironmentCapability-DEaRRk-R.esm.js +9 -0
- package/dist/IFaceAvatarCapability-BrL19G0s.d.ts +23 -0
- package/dist/IFeatureManagementCapability-DdEUp6tB.d.ts +1125 -0
- package/dist/IIdCaptureCapability-DHTT3FC2.d.ts +237 -0
- package/dist/IStorageCapability-ORkQfK3F.d.ts +242 -0
- package/dist/{ITimerCapability-DJ73P4RK.esm.js → ITimerCapability-DgdDzp8G.esm.js} +1 -2
- package/dist/{Manager-goNPc_h_.d.ts → Manager-CQQ99QOI.d.ts} +1 -0
- package/dist/{MotionSensorProvider-BHuHoYvJ.esm.js → MotionSensorProvider-DGiV77J_.esm.js} +2 -37
- package/dist/{OpenViduRecordingProvider-CK6A5kiU.esm.js → OpenViduRecordingProvider-Du98qevC.esm.js} +2 -4
- package/dist/PrivacyLensProvider-D8PS7AJa.esm.js +405 -0
- package/dist/StateMachine-EDpYWy0i.d.ts +6 -0
- package/dist/{StreamCanvasCapture-CAqUdVkM.esm.js → StreamCanvasCapture-D2XcXCZ4.esm.js} +2 -4
- package/dist/{addressSearch-D7msRieq.esm.js → addressSearch-DQyrvDQj.esm.js} +10 -21
- package/dist/ae-signature.d.ts +4 -6
- package/dist/ae-signature.esm.js +10 -11
- package/dist/antifraud.d.ts +1 -6
- package/dist/antifraud.esm.js +3 -8
- package/dist/{antifraudManager-5KA84wtF.esm.js → antifraudManager-B8Plzf7a.esm.js} +11 -8
- package/dist/{antifraudManager-DCiNI6np.d.ts → antifraudManager-BY36bS12.d.ts} +3 -3
- package/dist/{antifraudStateMachine-BQVw46N5.esm.js → antifraudStateMachine-r4VxSBS4.esm.js} +5 -7
- package/dist/api-Bx3gKW_y.esm.js +129 -0
- package/dist/{apiError-DkOXfFBu.esm.js → apiError-DZfAyExM.esm.js} +25 -3
- package/dist/authentication.d.ts +3 -19
- package/dist/authentication.esm.js +3 -35
- package/dist/{authenticationManager-BeT6tNZm.d.ts → authenticationManager-BBMGTcwW.d.ts} +3 -4
- package/dist/{authenticationManager-BryLnSaF.esm.js → authenticationManager-DscbQwIl.esm.js} +7 -10
- package/dist/{authenticationStateMachine-DbdxfGHx.esm.js → authenticationStateMachine-SyuM00Fa.esm.js} +11 -15
- package/dist/avatar.d.ts +2 -2
- package/dist/avatar.esm.js +2 -3
- package/dist/avatar2dWarm-DqucNFX4.esm.js +1330 -0
- package/dist/avatarStats-CdUOb3VD.esm.js +136 -0
- package/dist/{backCameraStream-ChrMTJv-.esm.js → backCameraStream-CUeYm5eu.esm.js} +20 -8
- package/dist/browser-DlFgHpoC-DnyrCR8r.esm.js +1513 -0
- package/dist/callback-645_omgz.d.ts +133 -0
- package/dist/camera-_2sXMXiF.esm.js +140 -0
- package/dist/camera.d.ts +19 -2
- package/dist/camera.esm.js +2 -6
- package/dist/{canvas-Pi10hG_l.esm.js → canvas-E1zGkel4.esm.js} +1 -2
- package/dist/certificate-issuance.d.ts +34 -39
- package/dist/certificate-issuance.esm.js +4 -11
- package/dist/{certificateIssuanceStateMachine-DlZQT1_u.esm.js → certificateIssuanceStateMachine-COd7_l2T.esm.js} +7 -11
- package/dist/consent.d.ts +1 -4
- package/dist/consent.esm.js +3 -8
- package/dist/{consentManager-BwNu-uC-.esm.js → consentManager-BApTlfA0.esm.js} +5 -7
- package/dist/{consentManager-B4PMGXW-.d.ts → consentManager-uhDPdU6i.d.ts} +55 -61
- package/dist/{consentStateMachine-BOkVFiU7.esm.js → consentStateMachine-WD-S-Yhs.esm.js} +5 -7
- package/dist/{cpf-16m_cGAM.esm.js → cpf-BIADjddF.esm.js} +1 -2
- package/dist/createFaceAvatar-BEj18KXi.d.ts +50 -0
- package/dist/createFaceAvatar-DQKaRise.esm.js +103 -0
- package/dist/cross-document-data-match.d.ts +2 -26
- package/dist/cross-document-data-match.esm.js +2 -71
- package/dist/crossDocumentDataMatchManager-Dq8Z3SOg.d.ts +41 -0
- package/dist/crossDocumentDataMatchManager-OmYvyung.esm.js +84 -0
- package/dist/curp-validation.d.ts +1 -11
- package/dist/curp-validation.esm.js +3 -8
- package/dist/{curpValidationManager-CoqODZx5.d.ts → curpValidationManager-DVGr7Fq7.d.ts} +4 -6
- package/dist/{curpValidationManager-Cbji2inV.esm.js → curpValidationManager-UZxcrsrz.esm.js} +11 -7
- package/dist/{curpValidationStateMachine-Dlw4qfFb.esm.js → curpValidationStateMachine-9KwnqeoB.esm.js} +22 -14
- package/dist/custom-fields.d.ts +2 -5
- package/dist/custom-fields.esm.js +24 -11
- package/dist/custom-watchlist.d.ts +1 -3
- package/dist/custom-watchlist.esm.js +11 -10
- package/dist/{customWatchlistStateMachine-D8w0mNxm.esm.js → customWatchlistStateMachine-B_ey3TFj.esm.js} +5 -7
- package/dist/{dateUtils-BW6mBV6p.esm.js → dateUtils-CvG0FvK8.esm.js} +1 -2
- package/dist/{deepsightService-CViys6T4.esm.js → deepsightLoader-DcWjMC6A.esm.js} +68 -14
- package/dist/{deepsightService-BuTOFTr8.d.ts → deepsightService-DLVQS_RH.d.ts} +41 -2
- package/dist/device.d.ts +10 -2
- package/dist/device.esm.js +21 -21
- package/dist/document-capture.d.ts +3 -1816
- package/dist/document-capture.esm.js +3 -245
- package/dist/document-upload.d.ts +48 -55
- package/dist/document-upload.esm.js +8 -14
- package/dist/documentCaptureManager-B4Kivr8_.d.ts +2062 -0
- package/dist/documentCaptureManager-DszmcU-l.esm.js +296 -0
- package/dist/{documentCaptureStateMachine-BkTvU3yq.esm.js → documentCaptureStateMachine-D2jBwwVb.esm.js} +66 -40
- package/dist/dynamic-forms.d.ts +2 -4
- package/dist/dynamic-forms.esm.js +3 -9
- package/dist/{dynamicFormsManager-CHXUBNs4.esm.js → dynamicFormsManager-BoZ2-OUI.esm.js} +48 -9
- package/dist/{dynamicFormsManager-CKZkE7Wo.d.ts → dynamicFormsManager-fhK0yINk.d.ts} +22 -46
- package/dist/{dynamicFormsStateMachine-DJ1HGZff.esm.js → dynamicFormsStateMachine-D0RzkoEV.esm.js} +161 -34
- package/dist/ekyb.d.ts +5 -137
- package/dist/ekyb.esm.js +4 -179
- package/dist/ekybManager-DTvfxAOZ.esm.js +178 -0
- package/dist/ekybManager-Dzswb_b8.d.ts +114 -0
- package/dist/{ekybStateMachine-D9GzA4MW.esm.js → ekybStateMachine-BlTIozb6.esm.js} +16 -193
- package/dist/ekyc.d.ts +2 -79
- package/dist/ekyc.esm.js +4 -154
- package/dist/ekycManager-BFpHbBoT.d.ts +97 -0
- package/dist/ekycManager-oTstTJuL.esm.js +156 -0
- package/dist/{ekycStateMachine-DnVRiu3s.esm.js → ekycStateMachine-DHvksnrr.esm.js} +141 -423
- package/dist/ekycUtils-Dew1rBG0.esm.js +223 -0
- package/dist/electronic-signature.d.ts +3 -5
- package/dist/electronic-signature.esm.js +2 -10
- package/dist/{index-36QX_21w.d.ts → electronicSignatureManager-CcUXQZS7.d.ts} +220 -251
- package/dist/{electronicSignatureManager-DESRgObX.esm.js → electronicSignatureManager-DRYlHPjT.esm.js} +47 -33
- package/dist/email.d.ts +1 -5
- package/dist/email.esm.js +3 -10
- package/dist/{emailManager-CMS4q_r6.d.ts → emailManager-CADXW_9X.d.ts} +4 -7
- package/dist/{emailManager-B9Vrv3Ma.esm.js → emailManager-tE-YvNtS.esm.js} +76 -12
- package/dist/{emailStateMachine-CbmKFVSi.esm.js → emailStateMachine-Bm894MHB.esm.js} +7 -9
- package/dist/{endpoints-CwrFQfW7.esm.js → endpoints-CCzL3XD_.esm.js} +55 -6
- package/dist/{events-1wxZ97yf.esm.js → events-CxfNJVZW.esm.js} +43 -176
- package/dist/events.d.ts +28 -10
- package/dist/events.esm.js +2 -4
- package/dist/extensibility.d.ts +37 -37
- package/dist/extensibility.esm.js +31 -80
- package/dist/{externalFetch-hvmz_npP.esm.js → externalFetch-BKBThAUC.esm.js} +2 -4
- package/dist/face-match.d.ts +2 -225
- package/dist/face-match.esm.js +3 -173
- package/dist/{faceCaptureManagerFactory-C9TiGbkA.esm.js → faceCaptureManagerFactory-BDAsBCkh.esm.js} +52 -31
- package/dist/{faceCaptureManagerFactory-DiJ64oem.d.ts → faceCaptureManagerFactory-BxWPpxyd.d.ts} +63 -24
- package/dist/{faceCaptureSetup-BqhqfFHL.esm.js → faceCaptureSetup-C7Qv79fA.esm.js} +57 -36
- package/dist/faceMatchManager-BXp2WUT-.esm.js +201 -0
- package/dist/faceMatchManager-BnvrZM2F.d.ts +268 -0
- package/dist/{faceMatchStateMachine-MDb30gCm.esm.js → faceMatchStateMachine-CJiO2yLO.esm.js} +14 -10
- package/dist/feature-management-DS_Nj5Gg.esm.js +615 -0
- package/dist/feature-management.d.ts +173 -0
- package/dist/feature-management.esm.js +2 -0
- package/dist/field-comparison.d.ts +1 -4
- package/dist/field-comparison.esm.js +2 -7
- package/dist/{fieldComparisonManager-OLKVsG2Z.d.ts → fieldComparisonManager-CBvEGxFx.d.ts} +3 -5
- package/dist/{fieldComparisonManager-Cw4uzD7S.esm.js → fieldComparisonManager-DhnYdYZ2.esm.js} +6 -11
- package/dist/fiscal-qr.d.ts +1 -6
- package/dist/fiscal-qr.esm.js +14 -29
- package/dist/flow-events.d.ts +2 -9
- package/dist/flow.d.ts +59 -21
- package/dist/flow.esm.js +132 -49
- package/dist/{flowCompletionService-B6P6_EF3.esm.js → flowCompletionService-BSe3p7pg.esm.js} +4 -6
- package/dist/flowServices-unhF9V9F.esm.js +620 -0
- package/dist/geolocation.d.ts +1 -4
- package/dist/geolocation.esm.js +3 -9
- package/dist/{geolocationManager-CF6-NizA.esm.js → geolocationManager-Bv9MSVNr.esm.js} +44 -16
- package/dist/geolocationManager-Cz744E5S.d.ts +506 -0
- package/dist/{geolocationStateMachine-CD2XJs1b.esm.js → geolocationStateMachine-BxD6JK1M.esm.js} +53 -28
- package/dist/{getBrowser-1yNcfFZR.esm.js → getBrowser-Cb8Zgrgp.esm.js} +1 -2
- package/dist/getBrowser-DNrQeL4T.esm.js +16 -0
- package/dist/getDeviceClass-9y-kbVDw.esm.js +19 -0
- package/dist/{getDeviceClass-C-Dg6IsJ.esm.js → getDeviceClass-CeBiEayS.esm.js} +1 -2
- package/dist/getParsedUserAgent-pJjATANs.esm.js +1622 -0
- package/dist/government-validation.d.ts +3 -6
- package/dist/government-validation.esm.js +7 -13
- package/dist/{governmentValidationStateMachine-BE5wiQ7Y.esm.js → governmentValidationStateMachine-BYKYUdza.esm.js} +8 -11
- package/dist/home.d.ts +14 -22
- package/dist/home.esm.js +3 -8
- package/dist/http.d.ts +0 -1
- package/dist/http.esm.js +2 -4
- package/dist/id-ocr.d.ts +8 -7
- package/dist/id-ocr.esm.js +20 -9
- package/dist/id-selfie-flow.d.ts +179 -0
- package/dist/id-selfie-flow.esm.js +917 -0
- package/dist/id-verification.d.ts +2 -191
- package/dist/id-verification.esm.js +3 -43
- package/dist/id.d.ts +7 -18
- package/dist/id.esm.js +47 -53
- package/dist/{idCaptureDefaults-CZajItdO.esm.js → idCaptureDefaults-WeHbQM7W.esm.js} +54 -17
- package/dist/idCaptureManager-BjU-Wyow.d.ts +429 -0
- package/dist/{idCaptureManager-DASPUMtC.esm.js → idCaptureManager-BjiBSrHm.esm.js} +173 -34
- package/dist/idCaptureServices-CFDwqTtQ.esm.js +396 -0
- package/dist/{idCaptureStateMachine-DZ2ZTSxu.esm.js → idCaptureStateMachine-CRwQh8jc.esm.js} +438 -585
- package/dist/{idOcrManager-Tm4LzKR0.esm.js → idOcrManager-CvJZhmBR.esm.js} +4 -7
- package/dist/{idOcrManager-DLfAjDZn.d.ts → idOcrManager-DXc_xRN7.d.ts} +62 -229
- package/dist/{idOcrStateMachine-BJxZCxwS.esm.js → idOcrStateMachine-Bq_e3l4E.esm.js} +15 -20
- package/dist/idVerificationManager-BB4Pj_N6.d.ts +197 -0
- package/dist/idVerificationManager-CduNXhWd.esm.js +51 -0
- package/dist/{idVerificationStateMachine-DXN9WcdM.esm.js → idVerificationStateMachine-GEQWUPU2.esm.js} +5 -7
- package/dist/identity-reuse.d.ts +1 -4
- package/dist/identity-reuse.esm.js +3 -8
- package/dist/{identityReuseManager-LjkPvSQN.esm.js → identityReuseManager-D5vXknnJ.esm.js} +24 -7
- package/dist/{identityReuseManager-CLVOYxcp.d.ts → identityReuseManager-v2TH5g7e.d.ts} +38 -43
- package/dist/{identityReuseStateMachine-Bp-zONoV.esm.js → identityReuseStateMachine-AubRPhIi.esm.js} +6 -8
- package/dist/index-B8weJxmL.d.ts +1 -0
- package/dist/index-BKOWUhxG.d.ts +258 -0
- package/dist/{index-DrpWp15Z.d.ts → index-CLMF0QLQ.d.ts} +3 -3
- package/dist/index.d.ts +1 -3
- package/dist/index.esm.js +2 -15
- package/dist/{invokeOnCaptureCallback-CCS2Ruzi.esm.js → invokeOnCaptureCallback-1m1VJ3Q4.esm.js} +2 -4
- package/dist/{lib-Bjd6nOLG.esm.js → lib-DAyUtOTj.esm.js} +1510 -1589
- package/dist/mandatory-consent.d.ts +2 -10
- package/dist/mandatory-consent.esm.js +3 -8
- package/dist/{mandatoryConsentManager-DeBmOHcQ.d.ts → mandatoryConsentManager-B29kR0XA.d.ts} +60 -85
- package/dist/{mandatoryConsentManager-DZ26sg4B.esm.js → mandatoryConsentManager-BeELm1zS.esm.js} +4 -7
- package/dist/{mandatoryConsentStateMachine-_44ZoDSh.esm.js → mandatoryConsentStateMachine-zroQGzwb.esm.js} +5 -7
- package/dist/manualReviewService-D4IkipnN.esm.js +15 -0
- package/dist/{mediaRecorderOptions-CClCKAiF.esm.js → mediaRecorderOptions-dALSV8af.esm.js} +2 -4
- package/dist/{mediapipeShared-Bcmkzs3x.esm.js → mediapipeShared-B6oNoXEQ.esm.js} +21 -9
- package/dist/{onDeviceFaceResults-DILtthks.esm.js → onDeviceFaceResults-f81FVdQs.esm.js} +30 -87
- package/dist/openviduLazy-CCDpFWg1.esm.js +10 -0
- package/dist/{otp-B1YeyRXu.d.ts → otp-CEWfTj9v.d.ts} +0 -1
- package/dist/{otp-uaXiKt_R.esm.js → otp-D2k3PeSL.esm.js} +3 -14
- package/dist/{permissionGuards-BNOe4Tnu.esm.js → permissionGuards-KINpmKtI.esm.js} +2 -4
- package/dist/{permissionServices-C_kxhNeo.esm.js → permissionServices-UvUcOSRb.esm.js} +35 -28
- package/dist/personhood.d.ts +13 -20
- package/dist/personhood.esm.js +153 -85
- package/dist/phone.d.ts +1 -5
- package/dist/phone.esm.js +3 -10
- package/dist/{phoneManager-_KtitbUA.d.ts → phoneManager-BBU8Lq0O.d.ts} +4 -7
- package/dist/{phoneManager-CRblfdcI.esm.js → phoneManager-Cpiai2IM.esm.js} +82 -12
- package/dist/{phoneStateMachine-DjFGWMjQ.esm.js → phoneStateMachine-E1fUUcNM.esm.js} +7 -9
- package/dist/{platform-0Ot-bF_a.esm.js → platform-BJrm5nzZ.esm.js} +31 -11
- package/dist/privacyLensWorker-DI-Rg83h.esm.js +355 -0
- package/dist/qe-signature.d.ts +4 -6
- package/dist/qe-signature.esm.js +10 -11
- package/dist/{recordingService-CxaYkITO.esm.js → recordingService-CFpfdXSS.esm.js} +13 -31
- package/dist/redirect-to-mobile.d.ts +2 -6
- package/dist/redirect-to-mobile.esm.js +3 -10
- package/dist/{redirectToMobileManager-dv29o_LS.d.ts → redirectToMobileManager-BD2PvT5B.d.ts} +8 -44
- package/dist/{redirectToMobileManager-DbuNUlru.esm.js → redirectToMobileManager-C0dfc7f6.esm.js} +28 -8
- package/dist/{redirectToMobileStateMachine-BRaIJWOM.esm.js → redirectToMobileStateMachine-C9SYCJcH.esm.js} +74 -18
- package/dist/rolldown-runtime-FZ4Itg2g.esm.js +42 -0
- package/dist/{runChildModule-kojSv3MH.esm.js → runChildModule-DpvgAGFA.esm.js} +10 -9
- package/dist/{WasmUtilProvider-BgzcXBdl.esm.js → safeStorage-Ep56I-f_.esm.js} +98 -473
- package/dist/selfie.d.ts +8 -21
- package/dist/selfie.esm.js +40 -47
- package/dist/selfieErrorUtils-C2PYBVsp.esm.js +90 -0
- package/dist/{selfieManager-B1Px3GGa.esm.js → selfieManager-Br4onIMy.esm.js} +7 -10
- package/dist/{selfieManager-4juKfrHG.d.ts → selfieManager-DwlCppg0.d.ts} +3 -4
- package/dist/{selfieStateMachine-D0TS93Tu.esm.js → selfieStateMachine-CNGs8vFK.esm.js} +14 -29
- package/dist/{session-CLsU2Jnb.esm.js → session-CX2H3tmI.esm.js} +16 -7
- package/dist/session.d.ts +12 -10
- package/dist/session.esm.js +5 -15
- package/dist/sessionInitializer-CV6Rj_dn.esm.js +1865 -0
- package/dist/{setup-CfNsYAeB.esm.js → setup-CYdVacqv.esm.js} +319 -137
- package/dist/{setup-CmA2apmN.d.ts → setup-DywQeePQ.d.ts} +186 -4
- package/dist/signature.d.ts +2 -96
- package/dist/signature.esm.js +3 -108
- package/dist/signatureManager-DGBSWz2_.d.ts +106 -0
- package/dist/signatureManager-DdPgcmou.esm.js +113 -0
- package/dist/{signatureStateMachine-CdhlMih-.esm.js → signatureStateMachine-Cf73DGWO.esm.js} +5 -7
- package/dist/spawn-D9jgw9pW.d.ts +1441 -0
- package/dist/src-0Jurt29N.esm.js +4482 -0
- package/dist/{stats-BVy52wLy.esm.js → stats-B0nFKawG.esm.js} +3 -5
- package/dist/stats.esm.js +2 -5
- package/dist/topLevelStateName-B5i2avbh.esm.js +41 -0
- package/dist/{tri-CFAPtAUM.esm.js → tri-4RsGrIt6.esm.js} +3 -119
- package/dist/tri.d.ts +2 -2
- package/dist/tri.esm-BIjHhBJ2.esm.js +2620 -0
- package/dist/tri.esm.js +2 -4
- package/dist/trueSight-B8G85W4z.esm.js +1 -0
- package/dist/trueSightService-6dTpiaTh.esm.js +1894 -0
- package/dist/trust-graph.d.ts +4 -5
- package/dist/trust-graph.esm.js +13 -9
- package/dist/types-BEwVKkLJ.d.ts +15 -0
- package/dist/{types-BKLb3C42.esm.js → types-BN5RPPIZ.esm.js} +1 -2
- package/dist/types-BSBzhHRH.d.ts +57 -0
- package/dist/types-BX_XkMsQ2.d.ts +21 -0
- package/dist/types-BfHiko5D.d.ts +48 -0
- package/dist/{types-D8Cl1N2Z.d.ts → types-BfgmV7s72.d.ts} +2 -2
- package/dist/types-CJ7Yl9K-2.d.ts +164 -0
- package/dist/types-DPIDuhut.d.ts +40 -0
- package/dist/types-DVmXIdzW.d.ts +82 -0
- package/dist/types-DelMqZLe.d.ts +105 -0
- package/dist/types-EELWyWpd.d.ts +6 -0
- package/dist/{types-fO6KIdol.d.ts → types-Hmd7U0JA.d.ts} +80 -6
- package/dist/{types-BUgeB2X6.d.ts → types-KPvmag_B.d.ts} +7 -7
- package/dist/types-M6eb82ra2.d.ts +589 -0
- package/dist/{types-DV3wkhQ4.d.ts → types-Vb4P9ovf.d.ts} +1 -3
- package/dist/{urlUtils-CpiYwn7w.esm.js → urlUtils-D6phjq1-.esm.js} +1 -2
- package/dist/{video-ZY92rkel.esm.js → video-BtSWtHy1.esm.js} +1 -2
- package/dist/video-selfie.d.ts +71 -117
- package/dist/video-selfie.esm.js +575 -643
- package/dist/videoSelfieCameraWarmer-h_VUk5Vu.esm.js +651 -0
- package/dist/videoSelfieStepDetector-D3oo2ofo.d.ts +123 -0
- package/dist/wasm.d.ts +2 -4
- package/dist/wasm.esm.js +4 -15
- package/dist/wasmDefaults-DTUrftxR.esm.js +125 -0
- package/dist/{wasmDsFlagSync-Ch0mFJNT.esm.js → wasmDsFlagSync-BqUCwLY8.esm.js} +2 -4
- package/dist/wasmWebClient-DM8lkb0z.esm.js +407 -0
- package/dist/watchlist-for-business.d.ts +1 -3
- package/dist/watchlist-for-business.esm.js +9 -9
- package/dist/watchlist.d.ts +1 -52
- package/dist/watchlist.esm.js +3 -70
- package/dist/{watchlistForBusinessStateMachine-R1Yp1g5A.esm.js → watchlistForBusinessStateMachine-BcBMkMvV.esm.js} +5 -7
- package/dist/watchlistManager-CjSMmbyq.esm.js +83 -0
- package/dist/watchlistManager-DLXef90v.d.ts +68 -0
- package/dist/{watchlistStateMachine-D07UVq1m.esm.js → watchlistStateMachine-Bl7Wy9Cm.esm.js} +5 -7
- package/dist/workflow.d.ts +239 -203
- package/dist/workflow.esm.js +156 -101
- package/dist/xstate-actors.esm-CtI5S0f4.esm.js +310 -0
- package/dist/{xstate.esm-nY3M5UYm.esm.js → xstate.esm-Cf4e0Cfd.esm.js} +136 -610
- package/package.json +14 -9
- package/dist/Actor-BwgmOPkb.d.ts +0 -2
- package/dist/Face2DProvider-CZU11g6r.esm.js +0 -824
- package/dist/FaceDetectionProvider-CPWg-PAH.d.ts +0 -119
- package/dist/IWasmUtilCapability-DaSNxgA8.d.ts +0 -150
- package/dist/PrivacyLensProvider-B_zrV25p.esm.js +0 -339
- package/dist/StateMachine-D5WO6lHS.d.ts +0 -2
- package/dist/StreamCanvasCapture-DHaWferF.d.ts +0 -42
- package/dist/ae-signature-Pp4oCAHD.esm.js +0 -12
- package/dist/api-DsbUi7TO.esm.js +0 -72
- package/dist/browser-DlFgHpoC-Br3G10gw.esm.js +0 -1425
- package/dist/browserSimulation-DZwEy9bu.esm.js +0 -2804
- package/dist/camera-CxxXV0VN.esm.js +0 -79
- package/dist/canvas-90BqS0NF.d.ts +0 -112
- package/dist/chunk-CIKcdghV.esm.js +0 -49
- package/dist/clientLifecycle-VyzRfALg.esm.js +0 -534
- package/dist/cpf-ocr.d.ts +0 -10
- package/dist/cpf-ocr.esm.js +0 -8
- package/dist/cpfOcrManager-9eM4z4o7.esm.js +0 -190
- package/dist/cpfOcrManager-C5U9E0hf.d.ts +0 -216
- package/dist/createFaceAvatar-BZSg2MNo.esm.js +0 -46
- package/dist/deepsightLoader-CU_tiLMx.esm.js +0 -62
- package/dist/flowServices-DkQmOkLV.esm.js +0 -208
- package/dist/geolocationManager-DaHYFkVO.d.ts +0 -156
- package/dist/getDeviceClass-DIjnTPjR.esm.js +0 -14
- package/dist/http-CnsKEaJY.esm.js +0 -0
- package/dist/idCaptureManager-CwuXtVu6.d.ts +0 -1013
- package/dist/index-BAyZ8_iI.d.ts +0 -93
- package/dist/openviduLazy-jPgABwrt.esm.js +0 -3
- package/dist/openviduLazy-wEojM41w.esm.js +0 -12
- package/dist/qe-signature-BnWIpR-O.esm.js +0 -12
- package/dist/sessionInitializer-Dj7-aJaP.esm.js +0 -547
- package/dist/tri.esm-DDJ1zOqG.esm.js +0 -2593
- package/dist/types-BcF-fii5.d.ts +0 -5
- package/dist/videoSelfieSteps-Djpv7cjb.esm.js +0 -58
- /package/dist/{IVisibilityObserverCapability-BZ1rE7ly.d.ts → IVisibilityObserverCapability-D4tvIB5v.d.ts} +0 -0
- /package/dist/{camera-CKU96nwJ.d.ts → camera-9wWD-pwg.d.ts} +0 -0
- /package/dist/{flowCompletionService-BOSTlAWo.d.ts → flowCompletionService-BlAHsKyv.d.ts} +0 -0
- /package/dist/{types-BgjMAEXl.d.ts → types-Bk_6dmDa.d.ts} +0 -0
- /package/dist/{warmup-Dd0iq6KF.d.ts → warmup-Dv2alr2-.d.ts} +0 -0
|
@@ -1,437 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const index = wasmPath.lastIndexOf(".wasm");
|
|
4
|
-
if (index === -1) return wasmPath;
|
|
5
|
-
const rest = wasmPath.slice(index + 5);
|
|
6
|
-
if (rest !== "" && !rest.startsWith("?")) return wasmPath;
|
|
7
|
-
return `${wasmPath.slice(0, index)}.js${rest}`;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
//#endregion
|
|
11
|
-
//#region ../infra/src/providers/browser/SemaphoreProvider.ts
|
|
12
|
-
const DEFAULT_ACQUIRE_TIMEOUT_MS = 3e4;
|
|
13
|
-
/**
|
|
14
|
-
* Counting-semaphore implementation of {@link IConcurrencyCapability}.
|
|
15
|
-
*
|
|
16
|
-
* Default `maxConcurrent=1` makes it behave as a mutex; set higher for
|
|
17
|
-
* parallel-bounded access. Each acquire returns a numeric `threadId` for
|
|
18
|
-
* tracing — the slot index, in `[0, maxConcurrent)` — that must be passed back
|
|
19
|
-
* to `release`.
|
|
20
|
-
*
|
|
21
|
-
* If all slots stay occupied longer than `acquireTimeoutMs` (default 30s), the
|
|
22
|
-
* pending wait still resolves when a slot frees, but `console.error` is logged
|
|
23
|
-
* as a deadlock-watchdog signal. Misuse — out-of-range or double-released
|
|
24
|
-
* `threadId`s — is also logged and treated as a no-op rather than thrown.
|
|
25
|
-
*/
|
|
26
|
-
var SemaphoreProvider = class {
|
|
27
|
-
constructor(maxConcurrent = 1, acquireTimeoutMs = DEFAULT_ACQUIRE_TIMEOUT_MS) {
|
|
28
|
-
this.pending = [];
|
|
29
|
-
this.available = [];
|
|
30
|
-
this.processing = /* @__PURE__ */ new Set();
|
|
31
|
-
this.maxId = maxConcurrent - 1;
|
|
32
|
-
this.acquireTimeoutMs = acquireTimeoutMs;
|
|
33
|
-
for (let i = 0; i < maxConcurrent; i++) this.available.push(i);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Acquire a slot. Resolves immediately with the slot's `threadId` if one is
|
|
37
|
-
* free, otherwise queues FIFO and resolves when a holder releases.
|
|
38
|
-
*/
|
|
39
|
-
async acquire() {
|
|
40
|
-
if (this.available.length > 0) {
|
|
41
|
-
const threadId = this.available.shift();
|
|
42
|
-
this.processing.add(threadId);
|
|
43
|
-
return threadId;
|
|
44
|
-
}
|
|
45
|
-
return new Promise((resolve, reject) => {
|
|
46
|
-
const entry = {
|
|
47
|
-
resolve: (threadId) => {
|
|
48
|
-
clearTimeout(entry.timer);
|
|
49
|
-
this.processing.add(threadId);
|
|
50
|
-
resolve(threadId);
|
|
51
|
-
},
|
|
52
|
-
reject: (error) => {
|
|
53
|
-
clearTimeout(entry.timer);
|
|
54
|
-
reject(error);
|
|
55
|
-
},
|
|
56
|
-
timer: setTimeout(() => {
|
|
57
|
-
console.error(`SemaphoreProvider: all slots occupied for ${this.acquireTimeoutMs}ms, ${this.pending.length} request(s) waiting`);
|
|
58
|
-
}, this.acquireTimeoutMs)
|
|
59
|
-
};
|
|
60
|
-
this.pending.push(entry);
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Return a slot to the pool. The next pending waiter (if any) is resolved
|
|
65
|
-
* with this `threadId`; otherwise the slot is added back to `available`.
|
|
66
|
-
* Releasing an out-of-range or already-released `threadId` logs an error and
|
|
67
|
-
* is otherwise a no-op.
|
|
68
|
-
*/
|
|
69
|
-
release(threadId) {
|
|
70
|
-
if (threadId < 0 || threadId > this.maxId) {
|
|
71
|
-
console.error(`SemaphoreProvider: invalid threadId ${threadId}`);
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
if (!this.processing.has(threadId)) {
|
|
75
|
-
console.error(`SemaphoreProvider: double-release of threadId ${threadId}`);
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
this.processing.delete(threadId);
|
|
79
|
-
if (this.pending.length > 0) this.pending.shift().resolve(threadId);
|
|
80
|
-
else this.available.unshift(threadId);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Cancel all pending acquires with a reset error and replenish all slots.
|
|
84
|
-
* Existing holders are not contacted — a `release` after reset will log a
|
|
85
|
-
* double-release warning rather than disrupt the new pool.
|
|
86
|
-
*/
|
|
87
|
-
reset() {
|
|
88
|
-
const waiters = this.pending;
|
|
89
|
-
this.pending = [];
|
|
90
|
-
this.available = [];
|
|
91
|
-
this.processing = /* @__PURE__ */ new Set();
|
|
92
|
-
for (let i = 0; i <= this.maxId; i++) this.available.push(i);
|
|
93
|
-
for (const waiter of waiters) waiter.reject(/* @__PURE__ */ new Error("SemaphoreProvider reset: pending acquire cancelled"));
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Acquire a slot, invoke `fn(threadId, ...args)`, then release the slot in a
|
|
97
|
-
* `finally` block. Errors thrown by `fn` propagate to the caller after the
|
|
98
|
-
* slot is released.
|
|
99
|
-
*/
|
|
100
|
-
async withLock(fn, ...args) {
|
|
101
|
-
const threadId = await this.acquire();
|
|
102
|
-
try {
|
|
103
|
-
return await fn(threadId, ...args);
|
|
104
|
-
} finally {
|
|
105
|
-
this.release(threadId);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
//#endregion
|
|
111
|
-
//#region ../infra/src/wasm/apiUtilities.ts
|
|
112
|
-
/**
|
|
113
|
-
* Shared WASM module loader.
|
|
114
|
-
*
|
|
115
|
-
* The pinned `webLib.wasm` (see `wasmDefaults.ts`) bundles BOTH the ML pipeline
|
|
116
|
-
* APIs (used by `mlWasmJSApi.ts`) AND a C++ `WebClient` HTTP client (used by
|
|
117
|
-
* `wasmWebClient.ts`). Both consumers must share a single instantiated
|
|
118
|
-
* `wasmModule` — calling the glue `Module()` factory twice would re-instantiate
|
|
119
|
-
* the WASM heap and produce divergent state.
|
|
120
|
-
*
|
|
121
|
-
* This module memoizes the load: the first caller (whichever arrives first —
|
|
122
|
-
* ML init or HTTP init) triggers the fetch + glue load, and subsequent callers
|
|
123
|
-
* await the same promise. Idempotent on success; on failure, the singleton is
|
|
124
|
-
* cleared so the next caller retries.
|
|
125
|
-
*
|
|
126
|
-
* SIMD fallback mirrors the legacy behavior: try the SIMD binary + SIMD glue
|
|
127
|
-
* (`webLibSimd.js` + `webLibSimd.wasm`) first, fall back to the non-SIMD pair
|
|
128
|
-
* (`webLib.js` + `webLib.wasm`) on instantiation failure. Each binary MUST be
|
|
129
|
-
* paired with its matching glue — the CDN ships them as paired artifacts and
|
|
130
|
-
* mixing them produces an unusable module.
|
|
131
|
-
*/
|
|
132
|
-
if (typeof window !== "undefined" && window.wasmArrayBuffer === void 0) window.wasmArrayBuffer = null;
|
|
133
|
-
let loadPromise = null;
|
|
134
|
-
let loadedResult = null;
|
|
135
|
-
async function importGlue(glueCodePath) {
|
|
136
|
-
const mod = await import(
|
|
137
|
-
/* @vite-ignore */
|
|
138
|
-
/* webpackIgnore: true */
|
|
139
|
-
glueCodePath
|
|
140
|
-
);
|
|
141
|
-
if (typeof mod.Module !== "function") throw new Error(`WASM glue at ${glueCodePath} did not export a Module factory`);
|
|
142
|
-
return mod.Module;
|
|
143
|
-
}
|
|
144
|
-
async function fetchWasmBinary(libPath) {
|
|
145
|
-
const response = await fetch(libPath);
|
|
146
|
-
if (!response.ok) throw new Error(`Failed to fetch WASM binary at ${libPath}: ${response.status} ${response.statusText}`);
|
|
147
|
-
const buffer = await response.arrayBuffer();
|
|
148
|
-
return new Uint8Array(buffer);
|
|
149
|
-
}
|
|
150
|
-
async function instantiate(factory, libPath) {
|
|
151
|
-
window.wasmArrayBuffer = await fetchWasmBinary(libPath);
|
|
152
|
-
return await factory();
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Load the WASM module, memoized. Subsequent calls return the same instance.
|
|
156
|
-
*
|
|
157
|
-
* SIMD-first with fallback: if `useSimd !== false` and a `wasmSimdPath` is
|
|
158
|
-
* provided, the SIMD binary + SIMD glue are tried first; on instantiation
|
|
159
|
-
* failure the non-SIMD binary + non-SIMD glue are used. Each `.wasm` is
|
|
160
|
-
* paired with its matching `.js` glue — they cannot be mixed.
|
|
161
|
-
*/
|
|
162
|
-
async function loadWasmModule(config) {
|
|
163
|
-
if (loadedResult) return loadedResult;
|
|
164
|
-
if (loadPromise) return loadPromise;
|
|
165
|
-
loadPromise = (async () => {
|
|
166
|
-
try {
|
|
167
|
-
const wantSimd = config.useSimd !== false;
|
|
168
|
-
const simdBinary = config.wasmSimdPath ?? config.wasmPath;
|
|
169
|
-
if (wantSimd && simdBinary !== config.wasmPath) try {
|
|
170
|
-
const simdFactory = await importGlue(config.glueCodeSimdPath ?? deriveSiblingJsPath(simdBinary));
|
|
171
|
-
window.Module = simdFactory;
|
|
172
|
-
const result$1 = {
|
|
173
|
-
wasmModule: await instantiate(simdFactory, simdBinary),
|
|
174
|
-
simdUsed: true
|
|
175
|
-
};
|
|
176
|
-
loadedResult = result$1;
|
|
177
|
-
return result$1;
|
|
178
|
-
} catch (simdError) {
|
|
179
|
-
console.warn("[Incode SDK] SIMD WASM load failed, falling back to non-SIMD", simdError);
|
|
180
|
-
}
|
|
181
|
-
const nonSimdFactory = await importGlue(config.glueCodePath);
|
|
182
|
-
window.Module = nonSimdFactory;
|
|
183
|
-
const result = {
|
|
184
|
-
wasmModule: await instantiate(nonSimdFactory, config.wasmPath),
|
|
185
|
-
simdUsed: false
|
|
186
|
-
};
|
|
187
|
-
loadedResult = result;
|
|
188
|
-
return result;
|
|
189
|
-
} catch (error) {
|
|
190
|
-
loadPromise = null;
|
|
191
|
-
throw error;
|
|
192
|
-
}
|
|
193
|
-
})();
|
|
194
|
-
return loadPromise;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
//#endregion
|
|
198
|
-
//#region ../infra/src/wasm/IdCaptureModelType.ts
|
|
199
|
-
let IdCaptureModelType = /* @__PURE__ */ function(IdCaptureModelType$1) {
|
|
200
|
-
IdCaptureModelType$1[IdCaptureModelType$1["IdCaptureV1x"] = 0] = "IdCaptureV1x";
|
|
201
|
-
IdCaptureModelType$1[IdCaptureModelType$1["IdCaptureV2x"] = 1] = "IdCaptureV2x";
|
|
202
|
-
IdCaptureModelType$1[IdCaptureModelType$1["IdCaptureV3x"] = 2] = "IdCaptureV3x";
|
|
203
|
-
return IdCaptureModelType$1;
|
|
204
|
-
}({});
|
|
205
|
-
|
|
206
|
-
//#endregion
|
|
207
|
-
//#region ../infra/src/wasm/WasmPipelineType.ts
|
|
208
|
-
let WasmPipelineType = /* @__PURE__ */ function(WasmPipelineType$1) {
|
|
209
|
-
WasmPipelineType$1[WasmPipelineType$1["IdBlurGlarePipeline"] = 0] = "IdBlurGlarePipeline";
|
|
210
|
-
WasmPipelineType$1[WasmPipelineType$1["IdBarcodeAndTextQualityPipeline"] = 1] = "IdBarcodeAndTextQualityPipeline";
|
|
211
|
-
WasmPipelineType$1[WasmPipelineType$1["IdVideoSelfiePipeline"] = 2] = "IdVideoSelfiePipeline";
|
|
212
|
-
WasmPipelineType$1[WasmPipelineType$1["SelfieWithAggregationMetrics"] = 3] = "SelfieWithAggregationMetrics";
|
|
213
|
-
WasmPipelineType$1[WasmPipelineType$1["SelfieWithQualityMetrics"] = 4] = "SelfieWithQualityMetrics";
|
|
214
|
-
WasmPipelineType$1[WasmPipelineType$1["OnDeviceSelfieWorkflow"] = 5] = "OnDeviceSelfieWorkflow";
|
|
215
|
-
return WasmPipelineType$1;
|
|
216
|
-
}({});
|
|
217
|
-
|
|
218
|
-
//#endregion
|
|
219
|
-
//#region ../infra/src/wasm/wasmCallUtils.ts
|
|
220
|
-
async function wasmCallWrapper(concurrency, wasmMethod, useSemaphore = true, ...args) {
|
|
221
|
-
const innerCall = async () => {
|
|
222
|
-
while (true) {
|
|
223
|
-
if (wasmMethod(...args)) return;
|
|
224
|
-
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
225
|
-
}
|
|
226
|
-
};
|
|
227
|
-
if (useSemaphore) {
|
|
228
|
-
await concurrency.withLock(innerCall);
|
|
229
|
-
return;
|
|
230
|
-
}
|
|
231
|
-
await innerCall();
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
//#endregion
|
|
235
|
-
//#region ../infra/src/wasm/wasmWebClient.ts
|
|
236
|
-
/**
|
|
237
|
-
* JavaScript bridge for the C++ `WebClient` exposed by `webLib.wasm`.
|
|
238
|
-
*
|
|
239
|
-
* The pinned WASM bundle ships a `WebClient` class alongside the ML pipeline
|
|
240
|
-
* APIs. This module instantiates it once (sharing the singleton `wasmModule`
|
|
241
|
-
* with `mlWasmJSApi`) and exposes a small TypeScript-friendly surface that
|
|
242
|
-
* `createWasmApi` can drive.
|
|
243
|
-
*
|
|
244
|
-
* Concurrency model mirrors the legacy implementation:
|
|
245
|
-
* - 4-slot semaphore keyed by per-request `threadId` so multiple HTTP calls
|
|
246
|
-
* can run in parallel without trampling shared C++ state.
|
|
247
|
-
* - Each WASM-side method that performs in-binary HTTP (request methods AND
|
|
248
|
-
* `createApi`'s in-binary `/e2ee/key` handshake) returns `false` while in
|
|
249
|
-
* flight and `true` once the C++ side has finished; the JS bridge awaits
|
|
250
|
-
* completion via {@link wasmCallWrapper}.
|
|
251
|
-
* - Result extraction (`getRequestResult`) is per-thread for HTTP requests
|
|
252
|
-
* and uses `threadId = -1` for the session-level `createApi` handshake.
|
|
253
|
-
*
|
|
254
|
-
* Encryption support: `setupConnection` accepts an `encryptionEnabled` flag
|
|
255
|
-
* that triggers the in-binary RSA/AES handshake. The OAEP MGF1 hash is
|
|
256
|
-
* controlled by the `useSha256` flag forwarded to the C++ `createApi`:
|
|
257
|
-
* `true` = SHA-256 MGF1, `false` = SHA-1 MGF1 (Java-compat default).
|
|
258
|
-
* State lives in the C++ binary and (for SDK config) in
|
|
259
|
-
* `@incodetech/core`'s `setup.ts` — this module caches nothing.
|
|
260
|
-
*/
|
|
261
|
-
const HTTP_CONCURRENCY = 4;
|
|
262
|
-
/**
|
|
263
|
-
* Sentinel `threadId` used by the session-level `createApi` handshake when we
|
|
264
|
-
* read its result via `getRequestResult`. Per-request HTTP traffic uses real
|
|
265
|
-
* thread ids handed out by the semaphore; the handshake has no slot of its
|
|
266
|
-
* own, so the C++ side stores its result under `-1`. Mirrors legacy
|
|
267
|
-
* `checkError(threadId = -1)`.
|
|
268
|
-
*/
|
|
269
|
-
const SETUP_THREAD_ID = -1;
|
|
270
|
-
var WasmWebClientError = class extends Error {
|
|
271
|
-
constructor(message, statusCode, data) {
|
|
272
|
-
super(message);
|
|
273
|
-
this.name = "WasmWebClientError";
|
|
274
|
-
this.status = statusCode;
|
|
275
|
-
this.statusCode = statusCode;
|
|
276
|
-
if (statusCode > 0 || data !== void 0) this.response = {
|
|
277
|
-
status: statusCode,
|
|
278
|
-
data
|
|
279
|
-
};
|
|
280
|
-
}
|
|
281
|
-
};
|
|
282
|
-
let webClientApi = null;
|
|
283
|
-
let initPromise = null;
|
|
284
|
-
let semaphore = new SemaphoreProvider(HTTP_CONCURRENCY);
|
|
285
|
-
const isWebClientWasm = (mod) => {
|
|
286
|
-
return typeof mod.WebClient === "function";
|
|
287
|
-
};
|
|
288
|
-
const toStringRecord = (obj) => {
|
|
289
|
-
if (!obj) return void 0;
|
|
290
|
-
const result = {};
|
|
291
|
-
for (const key of Object.keys(obj)) {
|
|
292
|
-
const value = obj[key];
|
|
293
|
-
if (value === void 0 || value === null) continue;
|
|
294
|
-
result[key] = String(value);
|
|
295
|
-
}
|
|
296
|
-
return result;
|
|
297
|
-
};
|
|
298
|
-
/**
|
|
299
|
-
* Loads the shared WASM module (if not already loaded) and instantiates the
|
|
300
|
-
* C++ `WebClient`. Idempotent — repeated calls reuse the existing instance.
|
|
301
|
-
*
|
|
302
|
-
* `glueCodeSimdPath` is paired with `wasmSimdPath` (`webLibSimd.js` for
|
|
303
|
-
* `webLibSimd.wasm`). Pass `''` to derive it automatically from
|
|
304
|
-
* `wasmSimdPath` by replacing the `.wasm` extension with `.js`.
|
|
305
|
-
*/
|
|
306
|
-
async function initializeWasmWebClient(wasmPath, wasmSimdPath, glueCodePath, glueCodeSimdPath, useSimd) {
|
|
307
|
-
if (webClientApi) return;
|
|
308
|
-
if (initPromise) return initPromise;
|
|
309
|
-
initPromise = (async () => {
|
|
310
|
-
try {
|
|
311
|
-
const { wasmModule } = await loadWasmModule({
|
|
312
|
-
wasmPath,
|
|
313
|
-
wasmSimdPath,
|
|
314
|
-
glueCodePath,
|
|
315
|
-
glueCodeSimdPath: glueCodeSimdPath || void 0,
|
|
316
|
-
useSimd
|
|
317
|
-
});
|
|
318
|
-
if (!isWebClientWasm(wasmModule)) throw new Error("WASM module does not expose a WebClient class. Update webLib.wasm to a build that includes WebClient.");
|
|
319
|
-
webClientApi = new wasmModule.WebClient();
|
|
320
|
-
} catch (error) {
|
|
321
|
-
initPromise = null;
|
|
322
|
-
throw error;
|
|
323
|
-
}
|
|
324
|
-
})();
|
|
325
|
-
return initPromise;
|
|
326
|
-
}
|
|
327
|
-
/**
|
|
328
|
-
* Configures the C++ WebClient connection. Safe to call multiple times — each
|
|
329
|
-
* call resets the underlying session and re-applies default headers.
|
|
330
|
-
*
|
|
331
|
-
* `defaultHeaders` are applied **before** `createApi`, so the in-binary RSA
|
|
332
|
-
* handshake (`GET /e2ee/key/v2` + `POST /e2ee/key`) sees the same headers as
|
|
333
|
-
* data requests. Without this ordering, environments that require auth/version
|
|
334
|
-
* headers on the handshake (e.g. `x-api-key`, `api-version`) would 401/4xx
|
|
335
|
-
* before any encrypted traffic ever flowed.
|
|
336
|
-
*
|
|
337
|
-
* The C++ `createApi` returns `false` while the in-binary handshake is still
|
|
338
|
-
* in flight and `true` once both the `/e2ee/key/v2` GET and the `/e2ee/key`
|
|
339
|
-
* POST have completed (encryption on) or once the WebClient is configured
|
|
340
|
-
* (encryption off — same boolean convention, just no network traffic). The
|
|
341
|
-
* JS bridge waits on that boolean via {@link wasmCallWrapper}, then surfaces
|
|
342
|
-
* any handshake error captured on the session-level (`threadId = -1`)
|
|
343
|
-
* request slot. Mirrors legacy
|
|
344
|
-
* `ms-incodesmile-web/packages/incode-welcome/src/wasmUtils/webClientApi.ts`
|
|
345
|
-
* `setupConnection`.
|
|
346
|
-
*
|
|
347
|
-
* `useSha256` selects the OAEP MGF1 hash for the in-binary RSA wrap:
|
|
348
|
-
* - `true` → MGF1 = SHA-256. Caller is responsible for attaching the
|
|
349
|
-
* `X-RSA-Encryption-Scheme: RSA/NONE/OAEPWITHSHA-256ANDMGF1PADDING`
|
|
350
|
-
* header on subsequent encrypted requests so the server matches.
|
|
351
|
-
* - `false` → MGF1 = SHA-1 (Java-compat default). No scheme header needed;
|
|
352
|
-
* the server falls back to the legacy Java default.
|
|
353
|
-
*/
|
|
354
|
-
async function setupWasmConnection(apiURL, token, encryptionEnabled, defaultHeaders, useSha256) {
|
|
355
|
-
const api = ensureReady();
|
|
356
|
-
api.resetSessionState?.();
|
|
357
|
-
api.setDefaultHeaders?.(defaultHeaders);
|
|
358
|
-
await wasmCallWrapper(semaphore, () => api.createApi(apiURL, token, useSha256, encryptionEnabled), false);
|
|
359
|
-
const result = api.getRequestResult(SETUP_THREAD_ID);
|
|
360
|
-
if (result.hasError) throw new WasmWebClientError(result.errorMessage || "WebClient handshake failed", result.statusCode, result.result);
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Executes a single HTTP request through the WASM WebClient.
|
|
364
|
-
*
|
|
365
|
-
* Acquires a semaphore slot for `threadId`, registers progress callbacks, runs
|
|
366
|
-
* the request via {@link wasmCallWrapper} (busy-polls until the WASM method
|
|
367
|
-
* returns `true`), then extracts the per-thread result. Throws
|
|
368
|
-
* {@link WasmWebClientError} on non-2xx or transport errors.
|
|
369
|
-
*
|
|
370
|
-
* The `ie` (inline-encryption) flag is forwarded to the C++ WebClient for
|
|
371
|
-
* mutating methods. Default `false` — the SDK HTTP path leaves payloads
|
|
372
|
-
* unencrypted at the WebClient layer. The C++ `WebApi.postFaceResults`
|
|
373
|
-
* pre-encrypts its JSON via `SessionEncryptor` and calls back into this
|
|
374
|
-
* function with `ie=true`; see {@link createWebApiHostAdapter}.
|
|
375
|
-
*/
|
|
376
|
-
async function executeWasmRequest(method, url, body, headers, params, timeout, onUploadProgress, ie = false) {
|
|
377
|
-
const api = ensureReady();
|
|
378
|
-
const stringParams = toStringRecord(params);
|
|
379
|
-
return semaphore.withLock(async (threadId) => {
|
|
380
|
-
if (onUploadProgress && api.setOnUploadProgress) api.setOnUploadProgress((event) => {
|
|
381
|
-
try {
|
|
382
|
-
onUploadProgress(event);
|
|
383
|
-
} catch (error) {
|
|
384
|
-
console.error("WasmWebClient: error in onUploadProgress callback", error);
|
|
385
|
-
}
|
|
386
|
-
});
|
|
387
|
-
try {
|
|
388
|
-
await wasmCallWrapper(semaphore, () => callWasmMethod(api, method, threadId, url, body, headers, stringParams, timeout, ie), false);
|
|
389
|
-
return readResult(api, threadId);
|
|
390
|
-
} finally {
|
|
391
|
-
api.clearOnUploadProgress?.(threadId);
|
|
392
|
-
api.clearOnDownloadProgress?.(threadId);
|
|
393
|
-
}
|
|
394
|
-
});
|
|
395
|
-
}
|
|
396
|
-
function callWasmMethod(api, method, threadId, url, body, headers, params, timeout, ie) {
|
|
397
|
-
switch (method) {
|
|
398
|
-
case "GET": return api.get(threadId, url, params, headers, timeout);
|
|
399
|
-
case "POST": return api.post(threadId, url, body ?? {}, headers, params, timeout, ie);
|
|
400
|
-
case "PUT": return api.put(threadId, url, body ?? {}, headers, params, timeout, ie);
|
|
401
|
-
case "PATCH": return api.patch(threadId, url, body ?? {}, headers, params, timeout, ie);
|
|
402
|
-
case "DELETE": return api.del(threadId, url, body ?? {}, headers, params, timeout, ie);
|
|
403
|
-
default: throw new Error(`Unsupported WASM HTTP method: ${method}`);
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
const DEFAULT_WEBAPI_TIMEOUT_MS = 3e4;
|
|
407
|
-
let webApiHttpTransport = null;
|
|
408
|
-
function setWebApiHttpTransport(transport) {
|
|
409
|
-
webApiHttpTransport = transport;
|
|
410
|
-
}
|
|
411
|
-
function createWebApiHostAdapter() {
|
|
412
|
-
return { post(url, body, config) {
|
|
413
|
-
const effectiveConfig = config ?? {};
|
|
414
|
-
const transport = webApiHttpTransport;
|
|
415
|
-
if (transport) return transport(url, body, effectiveConfig);
|
|
416
|
-
return executeWasmRequest("POST", url, body, effectiveConfig.headers ?? {}, effectiveConfig.params, effectiveConfig.timeout ?? DEFAULT_WEBAPI_TIMEOUT_MS, void 0, effectiveConfig.ie === true);
|
|
417
|
-
} };
|
|
418
|
-
}
|
|
419
|
-
function readResult(api, threadId) {
|
|
420
|
-
const response = api.getRequestResult(threadId);
|
|
421
|
-
if (response.hasError) throw new WasmWebClientError(response.errorMessage || "WasmWebClient request failed", response.statusCode, response.result);
|
|
422
|
-
return {
|
|
423
|
-
data: response.result,
|
|
424
|
-
status: response.statusCode
|
|
425
|
-
};
|
|
426
|
-
}
|
|
427
|
-
function ensureReady() {
|
|
428
|
-
if (!webClientApi) throw new Error("WasmWebClient not initialized. Call initializeWasmWebClient() first.");
|
|
429
|
-
return webClientApi;
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
//#endregion
|
|
433
|
-
//#region ../infra/src/wasm/mlWasmJSApi.ts
|
|
434
|
-
var MlWasmJSApi = class MlWasmJSApi {
|
|
1
|
+
import { c as loadWasmModule, l as SemaphoreProvider, n as createWebApiHostAdapter, s as wasmCallWrapper } from "./wasmWebClient-DM8lkb0z.esm.js";
|
|
2
|
+
var mlWasmJSApi_default = class MlWasmJSApi {
|
|
435
3
|
constructor() {
|
|
436
4
|
this.versionsFile = null;
|
|
437
5
|
this.modelsBuffers = null;
|
|
@@ -605,12 +173,12 @@ var MlWasmJSApi = class MlWasmJSApi {
|
|
|
605
173
|
if (this.inputImageBuffer === null) throw new Error("Unable to process the image, buffers haven't been allocated!");
|
|
606
174
|
this.inputImageBuffer.set(image.data);
|
|
607
175
|
switch (type) {
|
|
608
|
-
case
|
|
609
|
-
case
|
|
610
|
-
case
|
|
611
|
-
case
|
|
612
|
-
case
|
|
613
|
-
case
|
|
176
|
+
case 0:
|
|
177
|
+
case 1: return this.idCaptureWasmApi.runIdCaptureWorkflow(this.pipelineTypeToWasmEnum(type));
|
|
178
|
+
case 2: return this.idCaptureWasmApi.runIdVideoSelfieWorkflow();
|
|
179
|
+
case 3:
|
|
180
|
+
case 4:
|
|
181
|
+
case 5: return this.faceProcessingWasmApi.runSelfieWorkflow(this.pipelineTypeToWasmEnum(type));
|
|
614
182
|
default: throw new Error("Unknown pipeline type");
|
|
615
183
|
}
|
|
616
184
|
}
|
|
@@ -670,6 +238,23 @@ var MlWasmJSApi = class MlWasmJSApi {
|
|
|
670
238
|
this.checkWasmInitialization("Unable to set model type, cpp API hasn't been initialized");
|
|
671
239
|
this.idCaptureWasmApi.setIdCaptureModelType(this.pipelineTypeToWasmEnum(pipelineType), this.IdCaptureModelTypeToWasmEnum(modelType));
|
|
672
240
|
}
|
|
241
|
+
setIdBarcodeCaptureEnabled(pipelineType, enabled) {
|
|
242
|
+
this.checkWasmInitialization("Unable to set barcode capture enabled, cpp API hasn't been initialized");
|
|
243
|
+
this.idCaptureWasmApi.setIdBarcodeCaptureEnabled(this.pipelineTypeToWasmEnum(pipelineType), enabled);
|
|
244
|
+
}
|
|
245
|
+
setIdBarcodeAutoCaptureOnDecode(pipelineType, enabled) {
|
|
246
|
+
this.checkWasmInitialization("Unable to set barcode auto-capture-on-decode, cpp API hasn't been initialized");
|
|
247
|
+
this.idCaptureWasmApi.setIdBarcodeAutoCaptureOnDecode(this.pipelineTypeToWasmEnum(pipelineType), enabled);
|
|
248
|
+
}
|
|
249
|
+
setIdBarcodeDecodedCallback(pipelineType, onBarcodeDecoded) {
|
|
250
|
+
this.checkWasmInitialization("Unable to set barcode decoded callback, cpp API hasn't been initialized");
|
|
251
|
+
this.idCaptureWasmApi.setIdBarcodeDecodedCallback(this.pipelineTypeToWasmEnum(pipelineType), onBarcodeDecoded);
|
|
252
|
+
}
|
|
253
|
+
async setIdBarcodeEnhancementModel(pipelineType, modelPath) {
|
|
254
|
+
this.checkWasmInitialization("Unable to set barcode enhancement model, cpp API hasn't been initialized");
|
|
255
|
+
const buffer = await fetch(modelPath).then((response) => response.arrayBuffer()).then((buf) => new Uint8Array(buf));
|
|
256
|
+
return this.idCaptureWasmApi.setBarcodeEnhancementModel(this.pipelineTypeToWasmEnum(pipelineType), buffer);
|
|
257
|
+
}
|
|
673
258
|
IdPerspectiveTransform(image, frameRect) {
|
|
674
259
|
this.checkWasmInitialization("Unable to perform perspective transform, cpp API hasn't been initialized");
|
|
675
260
|
return this.idCaptureWasmApi.IdPerspectiveTransform(image, frameRect);
|
|
@@ -689,8 +274,8 @@ var MlWasmJSApi = class MlWasmJSApi {
|
|
|
689
274
|
const sizes = new this.wasmModule.VectorInt();
|
|
690
275
|
for (const path of modelsPaths) {
|
|
691
276
|
if (!loadedModels.has(path)) {
|
|
692
|
-
const model
|
|
693
|
-
loadedModels.set(path, model
|
|
277
|
+
const model = await fetch(path).then((response) => response.arrayBuffer()).then((buffer) => new Uint8Array(buffer));
|
|
278
|
+
loadedModels.set(path, model);
|
|
694
279
|
}
|
|
695
280
|
const model = loadedModels.get(path);
|
|
696
281
|
sizes.push_back(model.byteLength);
|
|
@@ -855,48 +440,46 @@ var MlWasmJSApi = class MlWasmJSApi {
|
|
|
855
440
|
}
|
|
856
441
|
pipelineTypeToWasmEnum(type) {
|
|
857
442
|
switch (type) {
|
|
858
|
-
case
|
|
859
|
-
case
|
|
860
|
-
case
|
|
861
|
-
case
|
|
862
|
-
case
|
|
863
|
-
case
|
|
443
|
+
case 0: return this.wasmModule.WorkflowType.IdBlurGlareWorkflow;
|
|
444
|
+
case 1: return this.wasmModule.WorkflowType.IdBarcodeAndTextQualityWorkflow;
|
|
445
|
+
case 2: return this.wasmModule.WorkflowType.IdVideoSelfieWorkflow;
|
|
446
|
+
case 3: return this.wasmModule.WorkflowType.SelfieWithAggregationMetrics;
|
|
447
|
+
case 4: return this.wasmModule.WorkflowType.SelfieWithQualityMetrics;
|
|
448
|
+
case 5: return this.wasmModule.WorkflowType.OnDeviceSelfieWorkflow;
|
|
864
449
|
default: throw new Error("Unknown pipeline type");
|
|
865
450
|
}
|
|
866
451
|
}
|
|
867
452
|
pipelineTypeFromWasmEnum(type) {
|
|
868
453
|
switch (type) {
|
|
869
|
-
case this.wasmModule.WorkflowType.IdBlurGlareWorkflow: return
|
|
870
|
-
case this.wasmModule.WorkflowType.IdBarcodeAndTextQualityWorkflow: return
|
|
871
|
-
case this.wasmModule.WorkflowType.IdVideoSelfieWorkflow: return
|
|
872
|
-
case this.wasmModule.WorkflowType.SelfieWithAggregationMetrics: return
|
|
873
|
-
case this.wasmModule.WorkflowType.SelfieWithQualityMetrics: return
|
|
874
|
-
case this.wasmModule.WorkflowType.OnDeviceSelfieWorkflow: return
|
|
454
|
+
case this.wasmModule.WorkflowType.IdBlurGlareWorkflow: return 0;
|
|
455
|
+
case this.wasmModule.WorkflowType.IdBarcodeAndTextQualityWorkflow: return 1;
|
|
456
|
+
case this.wasmModule.WorkflowType.IdVideoSelfieWorkflow: return 2;
|
|
457
|
+
case this.wasmModule.WorkflowType.SelfieWithAggregationMetrics: return 3;
|
|
458
|
+
case this.wasmModule.WorkflowType.SelfieWithQualityMetrics: return 4;
|
|
459
|
+
case this.wasmModule.WorkflowType.OnDeviceSelfieWorkflow: return 5;
|
|
875
460
|
default: throw new Error("Unknown pipeline type");
|
|
876
461
|
}
|
|
877
462
|
}
|
|
878
463
|
IdCaptureModelTypeToWasmEnum(type) {
|
|
879
464
|
switch (type) {
|
|
880
|
-
case
|
|
881
|
-
case
|
|
882
|
-
case
|
|
465
|
+
case 0: return this.wasmModule.IdCaptureModelType.IdCaptureV1x;
|
|
466
|
+
case 1: return this.wasmModule.IdCaptureModelType.IdCaptureV2x;
|
|
467
|
+
case 2: return this.wasmModule.IdCaptureModelType.IdCaptureV3x;
|
|
883
468
|
default: throw new Error("Unknown Id Capture model type");
|
|
884
469
|
}
|
|
885
470
|
}
|
|
886
471
|
IdCaptureModelTypeFromWasmEnum(type) {
|
|
887
472
|
switch (type) {
|
|
888
|
-
case this.wasmModule.IdCaptureModelType.IdCaptureV1x: return
|
|
889
|
-
case this.wasmModule.IdCaptureModelType.IdCaptureV2x: return
|
|
890
|
-
case this.wasmModule.IdCaptureModelType.IdCaptureV3x: return
|
|
473
|
+
case this.wasmModule.IdCaptureModelType.IdCaptureV1x: return 0;
|
|
474
|
+
case this.wasmModule.IdCaptureModelType.IdCaptureV2x: return 1;
|
|
475
|
+
case this.wasmModule.IdCaptureModelType.IdCaptureV3x: return 2;
|
|
891
476
|
default: throw new Error("Unknown Id Capture model type");
|
|
892
477
|
}
|
|
893
478
|
}
|
|
894
479
|
checkWasmInitialization(message) {
|
|
895
480
|
if (!this.isInitialized()) throw new Error(message);
|
|
896
481
|
}
|
|
897
|
-
};
|
|
898
|
-
var mlWasmJSApi_default = MlWasmJSApi.getInstance();
|
|
899
|
-
|
|
482
|
+
}.getInstance();
|
|
900
483
|
//#endregion
|
|
901
484
|
//#region ../infra/src/wasm/warmup.ts
|
|
902
485
|
/**
|
|
@@ -942,11 +525,11 @@ let lastConfig = null;
|
|
|
942
525
|
let pipelinesInFlight = [];
|
|
943
526
|
function mapPipelineToWasmType(pipeline) {
|
|
944
527
|
switch (pipeline) {
|
|
945
|
-
case "selfie": return
|
|
946
|
-
case "onDeviceSelfie": return
|
|
947
|
-
case "idCapture": return
|
|
948
|
-
case "videoSelfie": return
|
|
949
|
-
case "videoSelfieId": return
|
|
528
|
+
case "selfie": return 4;
|
|
529
|
+
case "onDeviceSelfie": return 5;
|
|
530
|
+
case "idCapture": return 0;
|
|
531
|
+
case "videoSelfie": return 3;
|
|
532
|
+
case "videoSelfieId": return 2;
|
|
950
533
|
default: throw new Error(`Unknown pipeline: ${pipeline}`);
|
|
951
534
|
}
|
|
952
535
|
}
|
|
@@ -961,6 +544,17 @@ function deriveModelsBasePath(wasmPath) {
|
|
|
961
544
|
return `${wasmPath.substring(0, lastSlashIndex)}/models`;
|
|
962
545
|
}
|
|
963
546
|
/**
|
|
547
|
+
* The models base path resolved from the last successful warmup, mirroring the
|
|
548
|
+
* load-time resolution (explicit `modelsBasePath`, else derived from
|
|
549
|
+
* `wasmPath`). `undefined` before any warmup. Used to locate lazily-loaded
|
|
550
|
+
* models such as the PDF417 barcode enhancement model at the correct base so
|
|
551
|
+
* self-hosted / air-gapped deployments resolve it too.
|
|
552
|
+
*/
|
|
553
|
+
function getResolvedModelsBasePath() {
|
|
554
|
+
if (!lastConfig) return;
|
|
555
|
+
return lastConfig.modelsBasePath ?? deriveModelsBasePath(lastConfig.wasmPath);
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
964
558
|
* Builds the pipelines map with model paths for WASM initialization.
|
|
965
559
|
* @param pipelines - Array of pipeline types to initialize
|
|
966
560
|
* @param modelsBasePath - Base path where model files are located
|
|
@@ -1017,7 +611,7 @@ async function warmupWasm(config) {
|
|
|
1017
611
|
if (pipelines.filter((p) => !loadedPipelines.includes(p)).length === 0) return;
|
|
1018
612
|
if (!lastConfig) throw new Error("Cannot add pipelines: original warmup config not available");
|
|
1019
613
|
if (lastConfig.wasmPath !== config.wasmPath || lastConfig.glueCodePath !== config.glueCodePath || (lastConfig.wasmSimdPath ?? lastConfig.wasmPath) !== (config.wasmSimdPath ?? config.wasmPath) || (lastConfig.glueCodeSimdPath ?? "") !== (config.glueCodeSimdPath ?? "") || (lastConfig.useSimd ?? true) !== (config.useSimd ?? true)) throw new Error("Cannot add pipelines: WASM config mismatch. Use same wasmPath, glueCodePath, and useSimd settings.");
|
|
1020
|
-
const combinedPipelines = [
|
|
614
|
+
const combinedPipelines = [.../* @__PURE__ */ new Set([...loadedPipelines, ...pipelines])];
|
|
1021
615
|
state = "loading";
|
|
1022
616
|
pipelinesInFlight = combinedPipelines;
|
|
1023
617
|
wasmError = null;
|
|
@@ -1117,7 +711,6 @@ function waitForWasm() {
|
|
|
1117
711
|
function setWasmOnDeviceMode(enabled) {
|
|
1118
712
|
mlWasmJSApi_default.setOnDeviceMode(enabled);
|
|
1119
713
|
}
|
|
1120
|
-
|
|
1121
714
|
//#endregion
|
|
1122
715
|
//#region ../infra/src/providers/wasm/BaseWasmProvider.ts
|
|
1123
716
|
/**
|
|
@@ -1202,7 +795,6 @@ var BaseWasmProvider = class {
|
|
|
1202
795
|
this._isInitialized = false;
|
|
1203
796
|
}
|
|
1204
797
|
};
|
|
1205
|
-
|
|
1206
798
|
//#endregion
|
|
1207
799
|
//#region ../infra/src/providers/wasm/WasmUtilProvider.ts
|
|
1208
800
|
var WasmUtilProvider = class WasmUtilProvider extends BaseWasmProvider {
|
|
@@ -1352,6 +944,39 @@ var WasmUtilProvider = class WasmUtilProvider extends BaseWasmProvider {
|
|
|
1352
944
|
return mlWasmJSApi_default.getVersions();
|
|
1353
945
|
}
|
|
1354
946
|
};
|
|
1355
|
-
|
|
1356
947
|
//#endregion
|
|
1357
|
-
|
|
948
|
+
//#region ../infra/src/storage/safeStorage.ts
|
|
949
|
+
/**
|
|
950
|
+
* Storage resolvers that tolerate hosts which make Web Storage unreachable.
|
|
951
|
+
*
|
|
952
|
+
* Two hostile shapes occur in the field, and they fail differently:
|
|
953
|
+
*
|
|
954
|
+
* 1. **Deleted bare global** — a page mitigates self-XSS with
|
|
955
|
+
* `delete window.localStorage` and keeps a module-private reference. Since
|
|
956
|
+
* `window` *is* the global object, the identifier stops resolving: a bare
|
|
957
|
+
* read throws `ReferenceError`. `typeof` is the only safe probe, because it
|
|
958
|
+
* is the one operator that tolerates an unresolvable identifier.
|
|
959
|
+
* 2. **Blocked storage** — a webview or a cross-origin/partitioned context
|
|
960
|
+
* makes the accessor itself throw (`SecurityError`). Here `typeof` is *not*
|
|
961
|
+
* enough: it invokes the getter, so the throw escapes the guard.
|
|
962
|
+
*
|
|
963
|
+
* Handling only one shape leaves the other live, so always go through these
|
|
964
|
+
* resolvers instead of touching the globals directly. A `null` return means
|
|
965
|
+
* "no storage in this host" — callers degrade, they do not throw.
|
|
966
|
+
*/
|
|
967
|
+
function resolveLocalStorage() {
|
|
968
|
+
try {
|
|
969
|
+
return typeof localStorage === "undefined" ? null : localStorage;
|
|
970
|
+
} catch {
|
|
971
|
+
return null;
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
function resolveSessionStorage() {
|
|
975
|
+
try {
|
|
976
|
+
return typeof sessionStorage === "undefined" ? null : sessionStorage;
|
|
977
|
+
} catch {
|
|
978
|
+
return null;
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
//#endregion
|
|
982
|
+
export { getResolvedModelsBasePath as a, mlWasmJSApi_default as c, BaseWasmProvider as i, resolveSessionStorage as n, setWasmOnDeviceMode as o, WasmUtilProvider as r, warmupWasm as s, resolveLocalStorage as t };
|