@incodetech/core 2.2.0 → 2.3.0-rc.1
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/THIRD_PARTY_NOTICES.txt +281 -0
- package/dist/BaseWasmProvider-Dyi6dKp1.d.ts +65 -0
- package/dist/{BrowserDiagnosticsCryptoProvider-B8vorxN5.esm.js → BrowserDiagnosticsCryptoProvider-CU6kBvqv.esm.js} +1 -1
- package/dist/{BrowserVisibilityObserverProvider-BX1BiLDK.esm.js → BrowserVisibilityObserverProvider-BrJN1B8A.esm.js} +2 -0
- package/dist/FaceDetectionProvider-BfhWkK90.esm.js +431 -0
- package/dist/FaceDetectionProvider-LdZ47bWy.d.ts +36 -0
- package/dist/{IIdCaptureCapability-DHTT3FC2.d.ts → IIdCaptureCapability-RNiFhvXR.d.ts} +7 -33
- package/dist/IWasmUtilCapability-CNWRl7jr.d.ts +117 -0
- package/dist/{MotionSensorProvider-DGiV77J_.esm.js → MotionSensorProvider-BgTYwg9L.esm.js} +1 -1
- package/dist/{StreamCanvasCapture-D2XcXCZ4.esm.js → StreamCanvasCapture-C9jtgBdT.esm.js} +2 -2
- package/dist/{deepsightService-DLVQS_RH.d.ts → StreamCanvasCapture-_8gdW5Lk.d.ts} +54 -41
- package/dist/StreamCanvasProcessingSession-CBnbTnOr.esm.js +42 -0
- package/dist/{addressSearch-D1XpBdUS.esm.js → addressSearch-DyHGgeX8.esm.js} +1 -1
- package/dist/advanceableErrors-CpF2cBy6.esm.js +21 -0
- package/dist/ae-signature.d.ts +4 -2
- package/dist/ae-signature.esm.js +1 -1
- package/dist/antifraud.esm.js +2 -2
- package/dist/{antifraudManager-CQFNgSPt.esm.js → antifraudManager-DNkw66oW.esm.js} +2 -2
- package/dist/{antifraudStateMachine-Bf_JVNwn.esm.js → antifraudStateMachine-DBeq47D2.esm.js} +1 -1
- package/dist/{apiError-BA1d_au0.esm.js → apiError-Budb6m6w.esm.js} +14 -2
- package/dist/authentication.d.ts +3 -3
- package/dist/authentication.esm.js +2 -2
- package/dist/{authenticationManager-BBMGTcwW.d.ts → authenticationManager-CjXBjC-c.d.ts} +7 -1
- package/dist/{authenticationManager-zh9TC62P.esm.js → authenticationManager-cMXhG70r.esm.js} +5 -5
- package/dist/{authenticationStateMachine-xzi-vnvE.esm.js → authenticationStateMachine-MOYz4HCf.esm.js} +6 -62
- package/dist/avatar.d.ts +1 -2
- package/dist/avatar.esm.js +1 -1
- package/dist/{backCameraStream-CUeYm5eu.esm.js → backCameraStream-BOtyQowf.esm.js} +83 -22
- package/dist/{camera-_2sXMXiF.esm.js → camera-sIa9ceW2.esm.js} +19 -1
- package/dist/camera.esm.js +1 -1
- package/dist/{canvas-E1zGkel4.esm.js → canvas-BxFzWTt-.esm.js} +19 -0
- package/dist/certificate-issuance.d.ts +2 -302
- package/dist/certificate-issuance.esm.js +3 -66
- package/dist/certificateIssuanceManager-C3-CI0_s.esm.js +69 -0
- package/dist/certificateIssuanceManager-DCgEidHz.d.ts +312 -0
- package/dist/{certificateIssuanceStateMachine-D_R92TYu.esm.js → certificateIssuanceStateMachine-CxqS_nD-.esm.js} +1 -1
- package/dist/consent.d.ts +1 -1
- package/dist/consent.esm.js +2 -2
- package/dist/{consentManager-BxjpLZAG.esm.js → consentManager-B6E1XJDw.esm.js} +2 -2
- package/dist/{consentManager-3Pbtj-RV.d.ts → consentManager-BhYFeKiG.d.ts} +4 -4
- package/dist/{consentStateMachine-D9D4ON8Z.esm.js → consentStateMachine-DTSfdGiW.esm.js} +1 -1
- package/dist/createCameraCycleOwnership-CX3hJGKc.esm.js +826 -0
- package/dist/{createFaceAvatar-DQKaRise.esm.js → createFaceAvatar-BNHdeFj8.esm.js} +2 -2
- package/dist/createFaceAvatar-BlcTYgJv.d.ts +497 -0
- package/dist/cross-document-data-match.esm.js +1 -1
- package/dist/{crossDocumentDataMatchManager-CGT0V6RV.esm.js → crossDocumentDataMatchManager-9XhFVZ5S.esm.js} +2 -2
- package/dist/curp-validation.d.ts +1 -1
- package/dist/curp-validation.esm.js +2 -2
- package/dist/{curpValidationManager-6Nmkn5u1.esm.js → curpValidationManager-DbIMYFcJ.esm.js} +2 -2
- package/dist/{curpValidationManager-DVGr7Fq7.d.ts → curpValidationManager-SSKNrm5Z.d.ts} +1 -1
- package/dist/{curpValidationStateMachine-Ds7KMacK.esm.js → curpValidationStateMachine-g5kMfuLj.esm.js} +1 -1
- package/dist/custom-fields.d.ts +2 -114
- package/dist/custom-fields.esm.js +2 -232
- package/dist/custom-watchlist.d.ts +2 -51
- package/dist/custom-watchlist.esm.js +3 -70
- package/dist/customFieldsManager-8-W2KY4n.d.ts +141 -0
- package/dist/customFieldsManager-CzWZTkW-.esm.js +264 -0
- package/dist/customWatchlistManager-DWTED5Ur.esm.js +73 -0
- package/dist/customWatchlistManager-PBWHr_oM.d.ts +64 -0
- package/dist/{customWatchlistStateMachine-YWSgKLbF.esm.js → customWatchlistStateMachine-DOQou6TW.esm.js} +1 -1
- package/dist/{deepsightLoader--wMKWECS.esm.js → deepsightLoader-DDv3vhXU.esm.js} +27 -71
- package/dist/device.d.ts +25 -2
- package/dist/device.esm.js +69 -7
- package/dist/document-capture.d.ts +2 -2
- package/dist/document-capture.esm.js +2 -2
- package/dist/{documentCaptureManager-DsQQhWry.esm.js → documentCaptureManager-CwAiM9WY.esm.js} +2 -2
- package/dist/{documentCaptureManager-B3t0ydtg.d.ts → documentCaptureManager-DensIj5F.d.ts} +83 -83
- package/dist/{documentCaptureStateMachine-BM4Ex_5x.esm.js → documentCaptureStateMachine-DfGOBapD.esm.js} +5 -5
- package/dist/dynamic-forms.d.ts +1 -1
- package/dist/dynamic-forms.esm.js +2 -2
- package/dist/{dynamicFormsManager-fFVIRBNv.esm.js → dynamicFormsManager-BbS-XMFc.esm.js} +16 -5
- package/dist/{dynamicFormsManager-fhK0yINk.d.ts → dynamicFormsManager-D5R_uxLQ.d.ts} +25 -3
- package/dist/{dynamicFormsStateMachine-D6D7oEYk.esm.js → dynamicFormsStateMachine-D8zHBCh4.esm.js} +35 -3
- package/dist/ekyb.d.ts +1 -1
- package/dist/ekyb.esm.js +3 -3
- package/dist/{ekybManager-Y3MkoXpC.esm.js → ekybManager-5aiac8wL.esm.js} +2 -2
- package/dist/{ekybStateMachine-3nlnqdlr.esm.js → ekybStateMachine-Bn2IE9rx.esm.js} +3 -3
- package/dist/ekyc.esm.js +2 -2
- package/dist/{ekycManager-DgT48ky6.esm.js → ekycManager-BlQ-Qj4E.esm.js} +2 -2
- package/dist/{ekycStateMachine-CQwqiR-R.esm.js → ekycStateMachine-CshSNJhh.esm.js} +2 -2
- package/dist/electronic-signature.d.ts +3 -3
- package/dist/electronic-signature.esm.js +2 -2
- package/dist/{electronicSignatureManager-DGbAJ00W.esm.js → electronicSignatureManager-BJJH0Tvi.esm.js} +357 -51
- package/dist/electronicSignatureManager-Ds-KEVTq.d.ts +2786 -0
- package/dist/email.esm.js +2 -2
- package/dist/{emailManager-BY0jeYwR.esm.js → emailManager-bR1N5rV_.esm.js} +2 -2
- package/dist/{emailStateMachine-Crw8QVmc.esm.js → emailStateMachine-Bc_6oIYw.esm.js} +1 -1
- package/dist/{endpoints-CCzL3XD_.esm.js → endpoints-B-3Q-LUw.esm.js} +24 -10
- package/dist/{events-DYiyoSlx.esm.js → events-ijlbX_Wx.esm.js} +2 -2
- package/dist/events.d.ts +1 -1
- package/dist/events.esm.js +1 -1
- package/dist/extensibility.d.ts +24 -64
- package/dist/extensibility.esm.js +35 -29
- package/dist/face-match.esm.js +2 -2
- package/dist/{faceCaptureManagerFactory-CVnZ0fa5.esm.js → faceCaptureManagerFactory-B7Ms6pSs.esm.js} +68 -7
- package/dist/{faceCaptureManagerFactory-BxWPpxyd.d.ts → faceCaptureManagerFactory-BeUl8fl1.d.ts} +86 -54
- package/dist/faceCaptureSetup-bkAlr5d8.esm.js +2067 -0
- package/dist/{faceMatchManager-Ri4UbNz0.esm.js → faceMatchManager-Bmv0HzuY.esm.js} +2 -2
- package/dist/{faceMatchStateMachine-20DdZ3jg.esm.js → faceMatchStateMachine-mRIHQ3dA.esm.js} +1 -1
- package/dist/{feature-management-CPQ4qv3F.esm.js → feature-management-E0mq0pMs.esm.js} +32 -7
- package/dist/feature-management.d.ts +1 -1
- package/dist/feature-management.esm.js +1 -1
- package/dist/field-comparison.esm.js +1 -1
- package/dist/{fieldComparisonManager-Cg6kPQQx.esm.js → fieldComparisonManager-CC-klG0h.esm.js} +2 -2
- package/dist/fiscal-qr.d.ts +2 -56
- package/dist/fiscal-qr.esm.js +2 -308
- package/dist/fiscalQrManager-B1STmT6z.d.ts +71 -0
- package/dist/fiscalQrManager-BunLVFbd.esm.js +34143 -0
- package/dist/flow-events.d.ts +1 -1
- package/dist/flow.d.ts +212 -185
- package/dist/flow.esm.js +119 -30
- package/dist/{flowCompletionService-tfeoGre9.esm.js → flowCompletionService-DJp1odGN.esm.js} +2 -2
- package/dist/{flowServices-f5Ruz7R9.esm.js → flowServices-DjPFGs_D.esm.js} +91 -26
- package/dist/geolocation.esm.js +2 -2
- package/dist/{geolocationManager-CH6RfqFH.esm.js → geolocationManager-D5906YXx.esm.js} +2 -2
- package/dist/{geolocationStateMachine-DmbWFely.esm.js → geolocationStateMachine-BVOduc3y.esm.js} +3 -3
- package/dist/getBrowser-CBiibsL-.esm.js +19 -0
- package/dist/{getBrowser-DNrQeL4T.esm.js → getBrowser-Cbe1C4Tn.esm.js} +2 -1
- package/dist/{getDeviceClass-9y-kbVDw.esm.js → getDeviceClass-5NYZg9s6.esm.js} +2 -2
- package/dist/getParsedUserAgent-B2iFDql1.esm.js +1278 -0
- package/dist/government-validation.d.ts +2 -85
- package/dist/government-validation.esm.js +3 -120
- package/dist/governmentValidationManager-CacFOtKO.esm.js +79 -0
- package/dist/governmentValidationManager-D02vT4yY.d.ts +63 -0
- package/dist/governmentValidationStateMachine-CoaZOSTP.esm.js +54 -0
- package/dist/home.d.ts +1 -1
- package/dist/home.esm.js +1 -1
- package/dist/id-ocr.d.ts +2 -2
- package/dist/id-ocr.esm.js +2 -2
- package/dist/id-selfie-flow.d.ts +3 -2
- package/dist/id-selfie-flow.esm.js +11 -10
- package/dist/id-verification.esm.js +2 -2
- package/dist/id.d.ts +29 -5
- package/dist/id.esm.js +48 -46
- package/dist/idCaptureDefaults-CbPA-Auz.esm.js +727 -0
- package/dist/{idCaptureManager-CqrqSjJV.d.ts → idCaptureManager-DKESug0R.d.ts} +230 -43
- package/dist/{idCaptureManager-BYwTZ2H8.esm.js → idCaptureManager-rfV9dIXy.esm.js} +259 -46
- package/dist/{idCaptureServices-44kwQItl.esm.js → idCaptureServices-i1KxugN7.esm.js} +285 -72
- package/dist/idCaptureStateMachine-Ne_PXth_.esm.js +5333 -0
- package/dist/{idOcrManager-DXc_xRN7.d.ts → idOcrManager-BF_cXZq8.d.ts} +1 -1
- package/dist/{idOcrManager-BIQYQXXj.esm.js → idOcrManager-r46XfZGE.esm.js} +2 -2
- package/dist/{idOcrStateMachine-cSxzHpHt.esm.js → idOcrStateMachine-ClDEP-VI.esm.js} +1 -1
- package/dist/{idVerificationManager-JpV_SAsl.esm.js → idVerificationManager-DT42c77H.esm.js} +2 -2
- package/dist/{idVerificationStateMachine-nPeUNyFq.esm.js → idVerificationStateMachine-DbDVIh9t.esm.js} +1 -1
- package/dist/identity-reuse.esm.js +2 -2
- package/dist/{identityReuseManager-kNCg9AbD.esm.js → identityReuseManager-yG3acUrQ.esm.js} +2 -2
- package/dist/{identityReuseStateMachine-DyulxDjP.esm.js → identityReuseStateMachine-BhAkuIra.esm.js} +1 -1
- package/dist/{index-CLMF0QLQ.d.ts → index-DLcJT5YP.d.ts} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/{invokeOnCaptureCallback-GpvMuz9o.esm.js → invokeOnCaptureCallback-BjzPjJ_p.esm.js} +1 -1
- package/dist/mandatory-consent.d.ts +2 -2
- package/dist/mandatory-consent.esm.js +2 -2
- package/dist/{mandatoryConsentManager-B4Niyg_u.esm.js → mandatoryConsentManager-7dI0D08q.esm.js} +2 -2
- package/dist/{mandatoryConsentManager-DyPzUmsZ.d.ts → mandatoryConsentManager-vhv1co_n.d.ts} +1 -1
- package/dist/{mandatoryConsentStateMachine-B4-1u-L8.esm.js → mandatoryConsentStateMachine-DC5Mo6M1.esm.js} +1 -1
- package/dist/multipartRecordingService-OEgIRvqC.esm.js +605 -0
- package/dist/{permissionGuards-KINpmKtI.esm.js → permissionGuards-uYZYFu4J.esm.js} +1 -1
- package/dist/{permissionServices-UvUcOSRb.esm.js → permissionServices-Bj_fyWtv.esm.js} +5 -5
- package/dist/personhood.d.ts +6 -5
- package/dist/personhood.esm.js +10 -10
- package/dist/phone.esm.js +2 -2
- package/dist/{phoneManager-FsJ0W2Ei.esm.js → phoneManager-IjhSv5XS.esm.js} +2 -2
- package/dist/{phoneStateMachine-Ba0wKHyX.esm.js → phoneStateMachine-CXdXufKg.esm.js} +1 -1
- package/dist/{platform-BJrm5nzZ.esm.js → platform-DkcRc9JV.esm.js} +29 -1
- package/dist/qe-signature.d.ts +5 -3
- package/dist/qe-signature.esm.js +2 -2
- package/dist/redirect-to-mobile.esm.js +2 -2
- package/dist/{redirectToMobileManager-y4VQB11M.esm.js → redirectToMobileManager-FLEWJtv8.esm.js} +2 -2
- package/dist/{redirectToMobileStateMachine-Cyv2x0PP.esm.js → redirectToMobileStateMachine-CSWWgUTO.esm.js} +1 -1
- package/dist/{rolldown-runtime-FZ4Itg2g.esm.js → rolldown-runtime-FDOR9p9I.esm.js} +1 -19
- package/dist/{runChildModule-Dukuw23X.esm.js → runChildModule-CI1gGWN1.esm.js} +3 -21
- package/dist/safeStorage-B-trhxg6.esm.js +423 -0
- package/dist/{sdkVersion-D1Bm59g6.esm.js → sdkVersion-BZh6dj53.esm.js} +1 -1
- package/dist/selfie.d.ts +5 -5
- package/dist/selfie.esm.js +14 -76
- package/dist/{selfieErrorUtils-C2PYBVsp.esm.js → selfieErrorUtils-UiQ46EBa.esm.js} +30 -4
- package/dist/{selfieManager-DwlCppg0.d.ts → selfieManager-4RRLi21P.d.ts} +8 -11
- package/dist/{selfieManager-Bj6B2ZVy.esm.js → selfieManager-B-2c1n_x.esm.js} +5 -5
- package/dist/selfieStateMachine-Bzx41R8d.esm.js +69 -0
- package/dist/{session-BFdLgN4i.esm.js → session-3LmvAU4S.esm.js} +4 -5
- package/dist/session.d.ts +21 -11
- package/dist/session.esm.js +5 -5
- package/dist/{sessionInitializer-dlfDehHk.esm.js → sessionInitializer-BFk33E67.esm.js} +187 -68
- package/dist/{setup-BIAtLa8k.esm.js → setup-BWG-hivt.esm.js} +226 -100
- package/dist/{setup-BgoWtvIS.d.ts → setup-Cv-JM9QC.d.ts} +63 -69
- package/dist/signature.esm.js +2 -2
- package/dist/{signatureManager-Ca43yhwk.esm.js → signatureManager-B72np4ZO.esm.js} +2 -2
- package/dist/{signatureStateMachine-K1LMRrxG.esm.js → signatureStateMachine-ce_XMA3l.esm.js} +1 -1
- package/dist/{src-0Jurt29N.esm.js → src-35ekGRzK.esm.js} +1 -1
- package/dist/{stats-B0nFKawG.esm.js → stats-CZcy2J53.esm.js} +1 -1
- package/dist/stats.esm.js +1 -1
- package/dist/{trueSightService---iW2KKJ.esm.js → trueSightService-BN-Hzw82.esm.js} +7 -7
- package/dist/trust-graph.esm.js +1 -1
- package/dist/{types-BX_XkMsQ2.d.ts → types-9_esGTPj.d.ts} +1 -1
- package/dist/types-BT_Oalip.d.ts +1 -0
- package/dist/{types-DelMqZLe.d.ts → types-BjSly8cp.d.ts} +1 -1
- package/dist/{types-Hmd7U0JA.d.ts → types-Bnl58jUQ.d.ts} +6 -85
- package/dist/types-ChAowIxT.d.ts +6 -0
- package/dist/{types-DVmXIdzW.d.ts → types-D0gekt4U.d.ts} +38 -5
- package/dist/types-DgDvvzg0.d.ts +10 -0
- package/dist/{types-KPvmag_B.d.ts → types-Do5rEXij.d.ts} +7 -4
- package/dist/{types-Bdf8_LYB2.d.ts → types-byBHOzCG2.d.ts} +305 -25
- package/dist/video-selfie.d.ts +59 -35
- package/dist/video-selfie.esm.js +510 -601
- package/dist/{videoSelfieCameraWarmer-NEhFZvWx.esm.js → videoSelfieCameraWarmer-B8PcYqmz.esm.js} +14 -153
- package/dist/videoSelfieFlowModuleMachine-BUe2uACW.esm.js +32 -0
- package/dist/{videoSelfieStepDetector-D3oo2ofo.d.ts → videoSelfieStepDetector-Co0Gu2k2.d.ts} +59 -13
- package/dist/virtualCameraCheck-Cjab7FTI.esm.js +48 -0
- package/dist/warmup-CUUnwYxe.esm.js +714 -0
- package/dist/warmup-Cis2p6O0.d.ts +128 -0
- package/dist/wasm.d.ts +30 -6
- package/dist/wasm.esm.js +36 -4
- package/dist/{wasmDsFlagSync-BqUCwLY8.esm.js → wasmDsFlagSync-B2e8p268.esm.js} +2 -2
- package/dist/{wasmWebClient-DM8lkb0z.esm.js → wasmWebClient-B7baE-Wf.esm.js} +358 -28
- package/dist/watchlist-for-business.d.ts +2 -78
- package/dist/watchlist-for-business.esm.js +3 -102
- package/dist/watchlist.esm.js +2 -2
- package/dist/watchlistForBusinessManager-CIMkpEhu.esm.js +107 -0
- package/dist/watchlistForBusinessManager-CsnJnG-C.d.ts +99 -0
- package/dist/{watchlistForBusinessStateMachine-CxFnlshm.esm.js → watchlistForBusinessStateMachine-CJ-MvUre.esm.js} +13 -6
- package/dist/{watchlistManager-LoNZH9qm.esm.js → watchlistManager-CixcLNDT.esm.js} +2 -2
- package/dist/{watchlistStateMachine-DIKQDoUT.esm.js → watchlistStateMachine-CBqk2w-h.esm.js} +1 -1
- package/dist/workflow.d.ts +12 -8
- package/dist/workflow.esm.js +48 -39
- package/package.json +4 -10
- package/dist/BrowserStorageProvider-k-FDkC4W.esm.js +0 -67
- package/dist/FaceDetectionProvider-Mh6q3EbA.d.ts +0 -349
- package/dist/IFaceAvatarCapability-BrL19G0s.d.ts +0 -23
- package/dist/IStorageCapability-ORkQfK3F.d.ts +0 -242
- package/dist/OpenViduRecordingProvider-Du98qevC.esm.js +0 -85
- package/dist/createFaceAvatar-BEj18KXi.d.ts +0 -50
- package/dist/document-upload.d.ts +0 -325
- package/dist/document-upload.esm.js +0 -197
- package/dist/electronicSignatureManager-CcUXQZS7.d.ts +0 -1300
- package/dist/faceCaptureSetup-Cd-04W_X.esm.js +0 -863
- package/dist/getBrowser-Cb8Zgrgp.esm.js +0 -7
- package/dist/getParsedUserAgent-pJjATANs.esm.js +0 -1622
- package/dist/governmentValidationStateMachine-CK9DrZXX.esm.js +0 -226
- package/dist/idCaptureDefaults-WeHbQM7W.esm.js +0 -225
- package/dist/idCaptureStateMachine-kZ5OpdfM.esm.js +0 -3342
- package/dist/lib-DAyUtOTj.esm.js +0 -12420
- package/dist/manualReviewService-D4IkipnN.esm.js +0 -15
- package/dist/mediaRecorderOptions-dALSV8af.esm.js +0 -40
- package/dist/onDeviceFaceResults-CUHwyZT4.esm.js +0 -646
- package/dist/openviduLazy-CCDpFWg1.esm.js +0 -10
- package/dist/recordingService-3NSENVwp.esm.js +0 -329
- package/dist/safeStorage-Ep56I-f_.esm.js +0 -982
- package/dist/selfieStateMachine-CHV_WNst.esm.js +0 -55
- package/dist/trueSight-B_icM8r2.esm.js +0 -1
- package/dist/types-EELWyWpd.d.ts +0 -6
- package/dist/types-Vb4P9ovf.d.ts +0 -22
- package/dist/warmup-Dv2alr2-.d.ts +0 -82
- package/dist/wasmDefaults-DTUrftxR.esm.js +0 -125
- package/dist/{Face2DProvider-UUQt_vRC.esm.js → Face2DProvider-BF48sz5c.esm.js} +1 -1
- package/dist/{PrivacyLensProvider-D8PS7AJa.esm.js → PrivacyLensProvider-EwnC_C5n.esm.js} +1 -1
- /package/dist/{types-BfgmV7s72.d.ts → types-BfgmV7s7.d.ts} +0 -0
- /package/dist/{types-CJ7Yl9K-2.d.ts → types-CJ7Yl9K-.d.ts} +0 -0
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import { t as ensureWasmPipelines } from "./setup-BWG-hivt.esm.js";
|
|
2
|
+
import { s as wasmRuntime } from "./warmup-CUUnwYxe.esm.js";
|
|
3
|
+
import { i as BaseWasmProvider } from "./safeStorage-B-trhxg6.esm.js";
|
|
4
|
+
import { c as trueSightHintTransition, r as noteTrueSightCaptureActivity } from "./trueSightService-BN-Hzw82.esm.js";
|
|
5
|
+
import "./sessionInitializer-BFk33E67.esm.js";
|
|
6
|
+
import { t as addDeviceStats } from "./stats-CZcy2J53.esm.js";
|
|
7
|
+
import { c as isIPhone14OrHigher, i as isDesktop } from "./platform-DkcRc9JV.esm.js";
|
|
8
|
+
import { i as requestCameraAccess, o as stopCameraStream, r as getCameraReacquisitionConstraints } from "./camera-sIa9ceW2.esm.js";
|
|
9
|
+
import { t as IncodeCanvas } from "./canvas-BxFzWTt-.esm.js";
|
|
10
|
+
import { t as StreamCanvasProcessingSession } from "./StreamCanvasProcessingSession-CBnbTnOr.esm.js";
|
|
11
|
+
import { i as hasBackCamera, n as getBackCameraStream, r as getDesktopCameraStream, t as ensureFrontCameraStream } from "./backCameraStream-BOtyQowf.esm.js";
|
|
12
|
+
//#region src/internal/faceCapture/onDeviceFaceResults.ts
|
|
13
|
+
/**
|
|
14
|
+
* On-device still-face capture is owned by the protected camera-cycle actor.
|
|
15
|
+
* Core uses this guard only to select the backwards-compatible validation and
|
|
16
|
+
* processing behavior after the native actor posts completion-only results.
|
|
17
|
+
*/
|
|
18
|
+
const isOnDeviceMode = (config) => config.onDeviceFaceResultsSubmissionEnabled === true;
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/internal/faceCapture/faceCaptureServices.ts
|
|
21
|
+
function sendLabelInspectionEvent() {
|
|
22
|
+
return addDeviceStats({ cameraLabelInspectionStatus: "FAIL" });
|
|
23
|
+
}
|
|
24
|
+
const MOBILE_SELFIE_CONSTRAINTS = {
|
|
25
|
+
video: {
|
|
26
|
+
facingMode: "user",
|
|
27
|
+
height: { ideal: 480 },
|
|
28
|
+
width: { ideal: 640 }
|
|
29
|
+
},
|
|
30
|
+
audio: false
|
|
31
|
+
};
|
|
32
|
+
const IPHONE14_SELFIE_CONSTRAINTS = {
|
|
33
|
+
video: { height: { ideal: 1080 } },
|
|
34
|
+
audio: false
|
|
35
|
+
};
|
|
36
|
+
function buildCameraConstraints(resolution, deviceId) {
|
|
37
|
+
if (resolution) return {
|
|
38
|
+
video: {
|
|
39
|
+
facingMode: "user",
|
|
40
|
+
deviceId: deviceId ? { exact: deviceId } : void 0,
|
|
41
|
+
height: resolution.height ? { ideal: resolution.height } : void 0,
|
|
42
|
+
width: resolution.width ? { ideal: resolution.width } : void 0
|
|
43
|
+
},
|
|
44
|
+
audio: false
|
|
45
|
+
};
|
|
46
|
+
if (isIPhone14OrHigher()) return IPHONE14_SELFIE_CONSTRAINTS;
|
|
47
|
+
return MOBILE_SELFIE_CONSTRAINTS;
|
|
48
|
+
}
|
|
49
|
+
function stopStream(stream) {
|
|
50
|
+
stopCameraStream(stream);
|
|
51
|
+
}
|
|
52
|
+
async function getFrontCameraStream(resolution) {
|
|
53
|
+
if (isDesktop()) {
|
|
54
|
+
if (resolution) return ensureFrontCameraStream((deviceId) => requestCameraAccess(buildCameraConstraints(resolution, deviceId)));
|
|
55
|
+
return ensureFrontCameraStream((deviceId) => getDesktopCameraStream(deviceId ? { deviceId } : {}));
|
|
56
|
+
}
|
|
57
|
+
return requestCameraAccess(resolution ? buildCameraConstraints(resolution) : buildCameraConstraints());
|
|
58
|
+
}
|
|
59
|
+
async function initializeCamera(params) {
|
|
60
|
+
const { config } = params;
|
|
61
|
+
await ensureWasmPipelines([isOnDeviceMode(config) ? "onDeviceSelfie" : "selfie"]);
|
|
62
|
+
const usingBackCamera = config.assistedOnboarding === true && await hasBackCamera();
|
|
63
|
+
const backCamera = usingBackCamera ? await getBackCameraStream() : void 0;
|
|
64
|
+
const stream = backCamera?.stream ?? await getFrontCameraStream(config.cameraResolution);
|
|
65
|
+
const constraints = getCameraReacquisitionConstraints(stream.getVideoTracks()[0], backCamera?.constraints);
|
|
66
|
+
return {
|
|
67
|
+
stream,
|
|
68
|
+
provider: params.provider,
|
|
69
|
+
usingBackCamera,
|
|
70
|
+
constraints
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Encrypts the provided selfie image using WASM.
|
|
75
|
+
*/
|
|
76
|
+
async function encryptSelfieImage({ canvas, dependencies }) {
|
|
77
|
+
const base64Image = canvas.getBase64Image();
|
|
78
|
+
if (!base64Image) throw new Error("Canvas image is empty or null");
|
|
79
|
+
return (await dependencies.getWasmUtil()).encryptImage(base64Image);
|
|
80
|
+
}
|
|
81
|
+
function startDetection(params) {
|
|
82
|
+
let lastStatus;
|
|
83
|
+
let session;
|
|
84
|
+
const { provider } = params;
|
|
85
|
+
const setStatus = (status) => {
|
|
86
|
+
if (session?.isDisposed() === true) return;
|
|
87
|
+
if (lastStatus === status) return;
|
|
88
|
+
lastStatus = status;
|
|
89
|
+
trueSightHintTransition("module.face-capture", "faceScan", status);
|
|
90
|
+
params.onUpdate(status);
|
|
91
|
+
};
|
|
92
|
+
const stopDetectionLoop = () => {
|
|
93
|
+
session?.dispose();
|
|
94
|
+
noteTrueSightCaptureActivity(false);
|
|
95
|
+
};
|
|
96
|
+
const reset = () => {
|
|
97
|
+
provider.reset();
|
|
98
|
+
};
|
|
99
|
+
const cleanup = () => {
|
|
100
|
+
stopDetectionLoop();
|
|
101
|
+
};
|
|
102
|
+
(async () => {
|
|
103
|
+
try {
|
|
104
|
+
provider.setCallbacks({
|
|
105
|
+
onFarAway: () => setStatus("tooFar"),
|
|
106
|
+
onTooClose: () => setStatus("tooClose"),
|
|
107
|
+
onTooManyFaces: () => setStatus("tooManyFaces"),
|
|
108
|
+
onNoFace: () => setStatus("idle"),
|
|
109
|
+
onCenterFace: () => setStatus("centerFace"),
|
|
110
|
+
onGetReady: () => setStatus("getReady"),
|
|
111
|
+
onGetReadyFinished: () => setStatus("getReadyFinished"),
|
|
112
|
+
onDark: () => {
|
|
113
|
+
if (params.config.validateBrightness) setStatus("dark");
|
|
114
|
+
},
|
|
115
|
+
onBlur: () => setStatus("blur"),
|
|
116
|
+
onFaceAngle: () => setStatus("faceAngle"),
|
|
117
|
+
onLenses: () => {
|
|
118
|
+
if (params.config.validateLenses) setStatus("lenses");
|
|
119
|
+
},
|
|
120
|
+
onMask: () => {
|
|
121
|
+
if (params.config.validateFaceMask) setStatus("faceMask");
|
|
122
|
+
},
|
|
123
|
+
onEyesClosed: () => {
|
|
124
|
+
if (params.config.validateClosedEyes) setStatus("eyesClosed");
|
|
125
|
+
},
|
|
126
|
+
onHeadWear: () => {
|
|
127
|
+
if (params.config.validateHeadCover) setStatus("headWear");
|
|
128
|
+
},
|
|
129
|
+
onFaceOccluded: () => setStatus("faceOcclusion"),
|
|
130
|
+
onFaceData: params.onPose,
|
|
131
|
+
onSwitchToManualCapture: () => {
|
|
132
|
+
setStatus("manualCapture");
|
|
133
|
+
stopDetectionLoop();
|
|
134
|
+
},
|
|
135
|
+
onCapture: (canvas, faceCoordinates) => {
|
|
136
|
+
setStatus("success");
|
|
137
|
+
params.onSuccess(canvas, faceCoordinates);
|
|
138
|
+
cleanup();
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
setStatus("detecting");
|
|
142
|
+
session = new StreamCanvasProcessingSession({
|
|
143
|
+
capturer: params.capturer,
|
|
144
|
+
provider,
|
|
145
|
+
onFrame: params.onFrame
|
|
146
|
+
});
|
|
147
|
+
noteTrueSightCaptureActivity(true);
|
|
148
|
+
} catch {
|
|
149
|
+
setStatus("error");
|
|
150
|
+
cleanup();
|
|
151
|
+
}
|
|
152
|
+
})();
|
|
153
|
+
return {
|
|
154
|
+
cleanup,
|
|
155
|
+
reset
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
async function initializeDeepsightSession(options) {
|
|
159
|
+
const { loadDeepsightSession } = await import("./deepsightLoader-DDv3vhXU.esm.js");
|
|
160
|
+
return loadDeepsightSession({
|
|
161
|
+
ds: options.ds,
|
|
162
|
+
storage: options.storage
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
//#endregion
|
|
166
|
+
//#region ../infra/src/wasm/faceProcessingWasmApi.ts
|
|
167
|
+
const PROCESS_PHOTO_UNSUPPORTED_ERROR = "[Incode SDK] processPhoto is unsupported since ml-wasm-kit v2.14.49-post1 and will be removed in 3.0.0. Use the protected camera cycle (captureProtectedFrame) for manual capture.";
|
|
168
|
+
var FaceProcessingWasmApi = class {
|
|
169
|
+
constructor(runtime = wasmRuntime) {
|
|
170
|
+
this.runtime = runtime;
|
|
171
|
+
}
|
|
172
|
+
async setFacePositionConstraints(type, minX, minY, maxX, maxY) {
|
|
173
|
+
this.runtime.requireFaceProcessingApi("Unable to set face position constraints, cpp API hasn't been initialized").setFacePositionConstraints(this.runtime.pipelineTypeToWasmEnum(type), minX, minY, maxX, maxY);
|
|
174
|
+
}
|
|
175
|
+
async setFaceDetectionThresholds(type, brightnessThreshold, blurrinessThreshold, tiltRotationAngleThreshold, minMagicCropSize, autocaptureInterval, minFaceQualityScore, faceOcclusionThreshold, getReadyDelay, framesAggregationInterval, minFramesWithFace) {
|
|
176
|
+
this.runtime.requireFaceProcessingApi("Unable to set face detection thresholds, cpp API hasn't been initialized").setFaceProcessingThresholds(this.runtime.pipelineTypeToWasmEnum(type), brightnessThreshold, blurrinessThreshold, tiltRotationAngleThreshold, minMagicCropSize, autocaptureInterval, minFaceQualityScore, faceOcclusionThreshold, getReadyDelay, framesAggregationInterval, minFramesWithFace);
|
|
177
|
+
}
|
|
178
|
+
async setFaceAttributesThresholds(type, headwearThreshold, lensesThreshold, closedEyesThreshold, maskThreshold) {
|
|
179
|
+
this.runtime.requireFaceProcessingApi("Unable to set face attributes thresholds, cpp API hasn't been initialized").setFaceAttributesThresholds(this.runtime.pipelineTypeToWasmEnum(type), headwearThreshold, lensesThreshold, closedEyesThreshold, maskThreshold);
|
|
180
|
+
}
|
|
181
|
+
async setFaceChecksEnabled(type, isLensesCheckEnabled, isMaskCheckEnabled, isClosedEyesCheckEnabled, isHeadWearCheckEnabled, isOcclusionCheckEnabled) {
|
|
182
|
+
this.runtime.requireFaceProcessingApi("Unable to set face checks enabled flags, cpp API hasn't been initialized").setFaceChecksEnabled(this.runtime.pipelineTypeToWasmEnum(type), isLensesCheckEnabled, isMaskCheckEnabled, isClosedEyesCheckEnabled, isHeadWearCheckEnabled, isOcclusionCheckEnabled);
|
|
183
|
+
}
|
|
184
|
+
async setFaceDetectionMode(type, isVideoSelfie) {
|
|
185
|
+
this.runtime.requireFaceProcessingApi("Unable to set face detection mode, cpp API hasn't been initialized").setFaceProcessingMode(this.runtime.pipelineTypeToWasmEnum(type), isVideoSelfie);
|
|
186
|
+
}
|
|
187
|
+
async setFaceDetectionCallbacks(type, onFarAway, onTooClose, onTooManyFaces, onNoFace, onCapture, onGetReady, onGetReadyFinished, onCenterFace, onDark, onBlur, onFaceAngle, onLenses, onMask, onEyesClosed, onHeadWear, onSwitchToManualCapture, onFaceOccluded) {
|
|
188
|
+
this.runtime.requireFaceProcessingApi("Unable to set face detection callbacks, cpp API hasn't been initialized").setFaceProcessingCallbacks(this.runtime.pipelineTypeToWasmEnum(type), onFarAway, onTooClose, onTooManyFaces, onNoFace, onCapture, onGetReady, onGetReadyFinished, onCenterFace, onDark, onBlur, onFaceAngle, onLenses, onMask, onEyesClosed, onHeadWear, onSwitchToManualCapture, onFaceOccluded);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* @deprecated Removed from ml-wasm-kit in v2.14.49-post1; scheduled for
|
|
192
|
+
* removal in 3.0.0. The signature stays available for source compatibility,
|
|
193
|
+
* but the canvas never reaches native code. Use
|
|
194
|
+
* `CameraCycleProvider.captureProtectedFrame` (the protected camera cycle's
|
|
195
|
+
* manual capture) instead.
|
|
196
|
+
*/
|
|
197
|
+
processPhoto(_canvas) {
|
|
198
|
+
throw new Error(PROCESS_PHOTO_UNSUPPORTED_ERROR);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* POSTs the staged on-device face-results JSON to `/omni/add/face-results`
|
|
202
|
+
* via the C++ `WebApi`. The C++ side encrypts the body with
|
|
203
|
+
* `SessionEncryptor` and routes through the WASM `WebClient` with inline
|
|
204
|
+
* encryption (`ie=true`) — this does NOT depend on the WebClient E2EE
|
|
205
|
+
* session setup, so it works whether `setupWasmConnection` was called with
|
|
206
|
+
* `encryptionEnabled` true or false.
|
|
207
|
+
*
|
|
208
|
+
* Reads from the `WebApi` instance the runtime constructs eagerly in
|
|
209
|
+
* `initialize()`. The C++ `OnDeviceSelfieWorkflow` has already staged the
|
|
210
|
+
* aggregated best-shot results into that instance via
|
|
211
|
+
* `WebApi::setFaceResults(...)` during per-frame processing (auto-capture) or
|
|
212
|
+
* through the protected camera-cycle manual-capture path.
|
|
213
|
+
*/
|
|
214
|
+
postFaceResults(config) {
|
|
215
|
+
return this.runtime.requireWebApi("Unable to post face results, cpp API hasn't been initialized").postFaceResults(config ?? {});
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Kept-dead: mirrors upstream `wasmApi.runSelfieCapture`. Nothing in the SDK
|
|
219
|
+
* calls it; it exists so the mirror stays 1:1 with upstream at the pinned tag.
|
|
220
|
+
*/
|
|
221
|
+
async runSelfieCapture(image) {
|
|
222
|
+
const faceProcessingWasmApi = this.runtime.requireFaceProcessingApi("Unable to run Selfie Capture, cpp API hasn't been initialized");
|
|
223
|
+
if (image) {
|
|
224
|
+
await this.runtime.allocateImageBuffers(image.width, image.height);
|
|
225
|
+
this.runtime.writeFrame(image);
|
|
226
|
+
}
|
|
227
|
+
return faceProcessingWasmApi.runSelfieCapture();
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
const faceProcessingWasmApi = new FaceProcessingWasmApi();
|
|
231
|
+
//#endregion
|
|
232
|
+
//#region ../infra/src/providers/wasm/FaceDetectionProvider.ts
|
|
233
|
+
/**
|
|
234
|
+
* Best-effort `delete()` for Emscripten `embind`-bound handles. Plain
|
|
235
|
+
* JS values lack a `.delete` method and are skipped; proxy objects
|
|
236
|
+
* have it and need it called once to free the underlying C++ memory.
|
|
237
|
+
* Swallows errors because this runs at 15–30 Hz on the detection hot
|
|
238
|
+
* path — a throwing cleanup must never abort frame processing.
|
|
239
|
+
*/
|
|
240
|
+
function tryDeleteEmbindHandle(value) {
|
|
241
|
+
const maybeDelete = value?.delete;
|
|
242
|
+
if (typeof maybeDelete !== "function") return;
|
|
243
|
+
try {
|
|
244
|
+
maybeDelete.call(value);
|
|
245
|
+
} catch {}
|
|
246
|
+
}
|
|
247
|
+
var FaceDetectionProvider = class extends BaseWasmProvider {
|
|
248
|
+
constructor() {
|
|
249
|
+
super(4);
|
|
250
|
+
this.defaultThresholds = {
|
|
251
|
+
frameMinX: 0,
|
|
252
|
+
frameMinY: 0,
|
|
253
|
+
frameMaxX: 1,
|
|
254
|
+
frameMaxY: 1,
|
|
255
|
+
brightnessThreshold: 50,
|
|
256
|
+
blurrinessThreshold: 50,
|
|
257
|
+
tiltRotationAngleThreshold: 15,
|
|
258
|
+
minMagicCropSize: 200,
|
|
259
|
+
headwearThreshold: .86,
|
|
260
|
+
lensesThreshold: .95,
|
|
261
|
+
closedEyesThreshold: .9,
|
|
262
|
+
maskThreshold: .85,
|
|
263
|
+
minFaceQualityScore: .63,
|
|
264
|
+
faceOcclusionThreshold: .3,
|
|
265
|
+
getReadyDelay: 2e3,
|
|
266
|
+
framesAggregationInterval: 2e3,
|
|
267
|
+
minFramesWithFace: 3
|
|
268
|
+
};
|
|
269
|
+
this.currentFrame = null;
|
|
270
|
+
}
|
|
271
|
+
async processFrame(image) {
|
|
272
|
+
this.currentFrame = image;
|
|
273
|
+
const result = await this.processFrameWasm(image);
|
|
274
|
+
if (this.onFaceDataCallback && result?.faces) {
|
|
275
|
+
let face;
|
|
276
|
+
try {
|
|
277
|
+
if ((typeof result.faces.size === "function" ? result.faces.size() : 0) > 0) {
|
|
278
|
+
face = typeof result.faces.get === "function" ? result.faces.get(0) : void 0;
|
|
279
|
+
if (face) this.onFaceDataCallback(face, {
|
|
280
|
+
width: image.width,
|
|
281
|
+
height: image.height
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
} catch {} finally {
|
|
285
|
+
tryDeleteEmbindHandle(face);
|
|
286
|
+
tryDeleteEmbindHandle(result.faces);
|
|
287
|
+
tryDeleteEmbindHandle(result);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
async initialize(config) {
|
|
292
|
+
if (config.videoSelfie === true) {
|
|
293
|
+
this.pipelineType = 3;
|
|
294
|
+
await this.initializeBase(config, "videoSelfie");
|
|
295
|
+
} else if (config.useOnDeviceWorkflow === true) {
|
|
296
|
+
this.pipelineType = 5;
|
|
297
|
+
await this.initializeBase(config, "onDeviceSelfie");
|
|
298
|
+
} else await this.initializeBase(config, "selfie");
|
|
299
|
+
this.applyDefaults(config.autocaptureInterval ?? 0);
|
|
300
|
+
if (config.videoSelfie === true) this.setVideoSelfieMode(true);
|
|
301
|
+
}
|
|
302
|
+
processPhoto(canvas) {
|
|
303
|
+
faceProcessingWasmApi.processPhoto(canvas);
|
|
304
|
+
}
|
|
305
|
+
async postFaceResults(config) {
|
|
306
|
+
this.ensureInitialized();
|
|
307
|
+
return faceProcessingWasmApi.postFaceResults(config);
|
|
308
|
+
}
|
|
309
|
+
setCallbacks(callbacks) {
|
|
310
|
+
this.ensureInitialized();
|
|
311
|
+
this.onFaceDataCallback = callbacks.onFaceData;
|
|
312
|
+
const onCaptureWrapper = (wasmCanvas, face) => {
|
|
313
|
+
if (!wasmCanvas) return;
|
|
314
|
+
const frameCanvas = new IncodeCanvas(wasmCanvas);
|
|
315
|
+
frameCanvas.updateBase64Image();
|
|
316
|
+
frameCanvas.updateBlob();
|
|
317
|
+
const faceCoordinates = face ? this.formatFaceCoordinates(face) : this.createDefaultFaceCoordinates(frameCanvas);
|
|
318
|
+
callbacks.onCapture?.(frameCanvas, faceCoordinates);
|
|
319
|
+
};
|
|
320
|
+
this.currentOnCaptureWrapper = onCaptureWrapper;
|
|
321
|
+
faceProcessingWasmApi.setFaceDetectionCallbacks(this.getPipelineType(), callbacks.onFarAway ?? (() => {}), callbacks.onTooClose ?? (() => {}), callbacks.onTooManyFaces ?? (() => {}), callbacks.onNoFace ?? (() => {}), onCaptureWrapper, callbacks.onGetReady ?? (() => {}), callbacks.onGetReadyFinished ?? (() => {}), callbacks.onCenterFace ?? (() => {}), callbacks.onDark ?? (() => {}), callbacks.onBlur ?? (() => {}), callbacks.onFaceAngle ?? (() => {}), callbacks.onLenses ?? (() => {}), callbacks.onMask ?? (() => {}), callbacks.onEyesClosed ?? (() => {}), callbacks.onHeadWear ?? (() => {}), callbacks.onSwitchToManualCapture ?? (() => {}), callbacks.onFaceOccluded ?? (() => {}));
|
|
322
|
+
}
|
|
323
|
+
setPositionConstraints(constraints) {
|
|
324
|
+
this.ensureInitialized();
|
|
325
|
+
faceProcessingWasmApi.setFacePositionConstraints(this.getPipelineType(), constraints.minX, constraints.minY, constraints.maxX, constraints.maxY);
|
|
326
|
+
}
|
|
327
|
+
applyDefaults(autocaptureInterval = 0) {
|
|
328
|
+
this.ensureInitialized();
|
|
329
|
+
this.setThresholds({
|
|
330
|
+
brightnessThreshold: this.defaultThresholds.brightnessThreshold,
|
|
331
|
+
blurrinessThreshold: this.defaultThresholds.blurrinessThreshold,
|
|
332
|
+
tiltRotationAngleThreshold: this.defaultThresholds.tiltRotationAngleThreshold,
|
|
333
|
+
minMagicCropSize: this.defaultThresholds.minMagicCropSize,
|
|
334
|
+
autocaptureInterval,
|
|
335
|
+
minFaceQualityScore: this.defaultThresholds.minFaceQualityScore,
|
|
336
|
+
faceOcclusionThreshold: this.defaultThresholds.faceOcclusionThreshold,
|
|
337
|
+
getReadyDelay: this.defaultThresholds.getReadyDelay,
|
|
338
|
+
framesAggregationInterval: this.defaultThresholds.framesAggregationInterval,
|
|
339
|
+
minFramesWithFace: this.defaultThresholds.minFramesWithFace
|
|
340
|
+
});
|
|
341
|
+
this.setPositionConstraints({
|
|
342
|
+
minX: this.defaultThresholds.frameMinX,
|
|
343
|
+
minY: this.defaultThresholds.frameMinY,
|
|
344
|
+
maxX: this.defaultThresholds.frameMaxX,
|
|
345
|
+
maxY: this.defaultThresholds.frameMaxY
|
|
346
|
+
});
|
|
347
|
+
this.setAttributesThresholds({
|
|
348
|
+
headwearThreshold: this.defaultThresholds.headwearThreshold,
|
|
349
|
+
lensesThreshold: this.defaultThresholds.lensesThreshold,
|
|
350
|
+
closedEyesThreshold: this.defaultThresholds.closedEyesThreshold,
|
|
351
|
+
maskThreshold: this.defaultThresholds.maskThreshold
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
setAutocaptureInterval(interval) {
|
|
355
|
+
this.ensureInitialized();
|
|
356
|
+
if (!this.currentThresholds) {
|
|
357
|
+
this.applyDefaults(interval);
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
this.setThresholds({
|
|
361
|
+
...this.currentThresholds,
|
|
362
|
+
autocaptureInterval: interval
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
setThresholds(thresholds) {
|
|
366
|
+
this.ensureInitialized();
|
|
367
|
+
this.currentThresholds = { ...thresholds };
|
|
368
|
+
faceProcessingWasmApi.setFaceDetectionThresholds(this.getPipelineType(), thresholds.brightnessThreshold, thresholds.blurrinessThreshold, thresholds.tiltRotationAngleThreshold, thresholds.minMagicCropSize, thresholds.autocaptureInterval, thresholds.minFaceQualityScore, thresholds.faceOcclusionThreshold, thresholds.getReadyDelay, thresholds.framesAggregationInterval, thresholds.minFramesWithFace);
|
|
369
|
+
}
|
|
370
|
+
setAttributesThresholds(thresholds) {
|
|
371
|
+
this.ensureInitialized();
|
|
372
|
+
faceProcessingWasmApi.setFaceAttributesThresholds(this.getPipelineType(), thresholds.headwearThreshold, thresholds.lensesThreshold, thresholds.closedEyesThreshold, thresholds.maskThreshold);
|
|
373
|
+
}
|
|
374
|
+
setChecksEnabled(config) {
|
|
375
|
+
this.ensureInitialized();
|
|
376
|
+
faceProcessingWasmApi.setFaceChecksEnabled(this.getPipelineType(), config.lenses, config.mask, config.closedEyes, config.headWear, config.occlusion);
|
|
377
|
+
}
|
|
378
|
+
setVideoSelfieMode(enabled) {
|
|
379
|
+
this.ensureInitialized();
|
|
380
|
+
faceProcessingWasmApi.setFaceDetectionMode(this.getPipelineType(), enabled);
|
|
381
|
+
}
|
|
382
|
+
forceCapture() {
|
|
383
|
+
if (!this.currentFrame || !this.currentOnCaptureWrapper) return;
|
|
384
|
+
const frame = IncodeCanvas.fromImageData(this.currentFrame);
|
|
385
|
+
this.currentOnCaptureWrapper(frame.canvas);
|
|
386
|
+
}
|
|
387
|
+
reset() {
|
|
388
|
+
super.reset();
|
|
389
|
+
this.currentFrame = null;
|
|
390
|
+
this.onFaceDataCallback = void 0;
|
|
391
|
+
this.currentOnCaptureWrapper = void 0;
|
|
392
|
+
}
|
|
393
|
+
createDefaultFaceCoordinates(canvas) {
|
|
394
|
+
return {
|
|
395
|
+
rightEyeX: 0,
|
|
396
|
+
rightEyeY: 0,
|
|
397
|
+
leftEyeX: 0,
|
|
398
|
+
leftEyeY: 0,
|
|
399
|
+
noseTipX: 0,
|
|
400
|
+
noseTipY: 0,
|
|
401
|
+
rightMouthX: 0,
|
|
402
|
+
rightMouthY: 0,
|
|
403
|
+
mouthX: 0,
|
|
404
|
+
mouthY: 0,
|
|
405
|
+
x: 0,
|
|
406
|
+
y: 0,
|
|
407
|
+
width: canvas.width() ?? 0,
|
|
408
|
+
height: canvas.height() ?? 0
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
formatFaceCoordinates(face) {
|
|
412
|
+
return {
|
|
413
|
+
rightEyeX: face.rightEye.x,
|
|
414
|
+
rightEyeY: face.rightEye.y,
|
|
415
|
+
leftEyeX: face.leftEye.x,
|
|
416
|
+
leftEyeY: face.leftEye.y,
|
|
417
|
+
noseTipX: face.noseTip.x,
|
|
418
|
+
noseTipY: face.noseTip.y,
|
|
419
|
+
rightMouthX: face.rightMouthCorner.x,
|
|
420
|
+
rightMouthY: face.rightMouthCorner.y,
|
|
421
|
+
mouthX: face.leftMouthCorner.x,
|
|
422
|
+
mouthY: face.leftMouthCorner.y,
|
|
423
|
+
x: face.rect.x,
|
|
424
|
+
y: face.rect.y,
|
|
425
|
+
width: face.rect.width,
|
|
426
|
+
height: face.rect.height
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
};
|
|
430
|
+
//#endregion
|
|
431
|
+
export { sendLabelInspectionEvent as a, isOnDeviceMode as c, initializeDeepsightSession as i, encryptSelfieImage as n, startDetection as o, initializeCamera as r, stopStream as s, FaceDetectionProvider as t };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { c as FaceAttributesThresholds, d as FaceDetectionCallbacks, f as FaceDetectionConfig, h as IFaceDetectionCapability, l as FaceChecksConfig, m as FacePositionConstraints, p as FaceDetectionThresholds, v as WebApiHostRequestConfig } from "./createFaceAvatar-BlcTYgJv.js";
|
|
2
|
+
import { t as BaseWasmProvider } from "./BaseWasmProvider-Dyi6dKp1.js";
|
|
3
|
+
//#region ../infra/src/providers/wasm/FaceDetectionProvider.d.ts
|
|
4
|
+
declare class FaceDetectionProvider extends BaseWasmProvider implements IFaceDetectionCapability {
|
|
5
|
+
private defaultThresholds;
|
|
6
|
+
private currentThresholds;
|
|
7
|
+
private currentFrame;
|
|
8
|
+
private onFaceDataCallback;
|
|
9
|
+
constructor();
|
|
10
|
+
processFrame(image: ImageData): Promise<void>;
|
|
11
|
+
initialize(config: FaceDetectionConfig): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Last-registered onCapture callback — captured into a private
|
|
14
|
+
* field so `forceCapture()` (called from outside the WASM-callback
|
|
15
|
+
* lifecycle) can re-fire the same wrapper. `setCallbacks` rebinds
|
|
16
|
+
* this on each invocation, so the field always reflects the
|
|
17
|
+
* current consumer.
|
|
18
|
+
*/
|
|
19
|
+
private currentOnCaptureWrapper;
|
|
20
|
+
processPhoto(canvas: HTMLCanvasElement): void;
|
|
21
|
+
postFaceResults(config?: WebApiHostRequestConfig): Promise<unknown>;
|
|
22
|
+
setCallbacks(callbacks: FaceDetectionCallbacks): void;
|
|
23
|
+
setPositionConstraints(constraints: FacePositionConstraints): void;
|
|
24
|
+
applyDefaults(autocaptureInterval?: number): void;
|
|
25
|
+
setAutocaptureInterval(interval: number): void;
|
|
26
|
+
setThresholds(thresholds: FaceDetectionThresholds): void;
|
|
27
|
+
setAttributesThresholds(thresholds: FaceAttributesThresholds): void;
|
|
28
|
+
setChecksEnabled(config: FaceChecksConfig): void;
|
|
29
|
+
setVideoSelfieMode(enabled: boolean): void;
|
|
30
|
+
forceCapture(): void;
|
|
31
|
+
reset(): void;
|
|
32
|
+
private createDefaultFaceCoordinates;
|
|
33
|
+
private formatFaceCoordinates;
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { FaceDetectionProvider as t };
|
|
@@ -1,35 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Shared WASM module loader.
|
|
5
|
-
*
|
|
6
|
-
* The pinned `webLib.wasm` (see `wasmDefaults.ts`) bundles BOTH the ML pipeline
|
|
7
|
-
* APIs (used by `mlWasmJSApi.ts`) AND a C++ `WebClient` HTTP client (used by
|
|
8
|
-
* `wasmWebClient.ts`). Both consumers must share a single instantiated
|
|
9
|
-
* `wasmModule` — calling the glue `Module()` factory twice would re-instantiate
|
|
10
|
-
* the WASM heap and produce divergent state.
|
|
11
|
-
*
|
|
12
|
-
* This module memoizes the load: the first caller (whichever arrives first —
|
|
13
|
-
* ML init or HTTP init) triggers the fetch + glue load, and subsequent callers
|
|
14
|
-
* await the same promise. Idempotent on success; on failure, the singleton is
|
|
15
|
-
* cleared so the next caller retries.
|
|
16
|
-
*
|
|
17
|
-
* SIMD fallback mirrors the legacy behavior: try the SIMD binary + SIMD glue
|
|
18
|
-
* (`webLibSimd.js` + `webLibSimd.wasm`) first, fall back to the non-SIMD pair
|
|
19
|
-
* (`webLib.js` + `webLib.wasm`) on instantiation failure. Each binary MUST be
|
|
20
|
-
* paired with its matching glue — the CDN ships them as paired artifacts and
|
|
21
|
-
* mixing them produces an unusable module.
|
|
22
|
-
*/
|
|
23
|
-
declare global {
|
|
24
|
-
interface Window {
|
|
25
|
-
Module?: WasmGlueFactory;
|
|
26
|
-
wasmArrayBuffer: Uint8Array | null;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
/** Opaque handle for the loaded WASM module instance. */
|
|
30
|
-
type WasmModule = Record<string, unknown>;
|
|
31
|
-
type WasmGlueFactory = () => Promise<WasmModule>;
|
|
32
|
-
//#endregion
|
|
1
|
+
import "./warmup-Cis2p6O0.js";
|
|
2
|
+
import { _ as MLProviderConfig, g as IMLProviderCapability, y as IncodeCanvas } from "./createFaceAvatar-BlcTYgJv.js";
|
|
33
3
|
//#region ../infra/src/wasm/mlWasmBridgeTypes.d.ts
|
|
34
4
|
/**
|
|
35
5
|
* Decoded PDF417 barcode surfaced from the WASM ID-capture pipeline during
|
|
@@ -102,7 +72,11 @@ interface IdCaptureCallbacks {
|
|
|
102
72
|
onBlur?: () => void;
|
|
103
73
|
onGlare?: () => void;
|
|
104
74
|
onCapturing?: () => void;
|
|
105
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Receives the exact best-shot canvas detached by the Core ID workflow.
|
|
77
|
+
* The canvas is presentation-only; protected submission remains native-owned.
|
|
78
|
+
*/
|
|
79
|
+
onCapture?: (canvas?: HTMLCanvasElement | null) => void;
|
|
106
80
|
onBestFrame?: (blur: number, glare: number, orientation: string) => void;
|
|
107
81
|
onIdNotDetected?: () => void;
|
|
108
82
|
onSwitchToManualCapture?: () => void;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { c as WasmPipeline } from "./warmup-Cis2p6O0.js";
|
|
2
|
+
import { _ as MLProviderConfig } from "./createFaceAvatar-BlcTYgJv.js";
|
|
3
|
+
//#region ../infra/src/capabilities/IStorageCapability.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Storage capability interface for abstracting storage operations.
|
|
6
|
+
* Enables swapping between browser localStorage and future WASM-based storage.
|
|
7
|
+
*/
|
|
8
|
+
interface IStorageCapability {
|
|
9
|
+
/**
|
|
10
|
+
* Retrieves a value from storage.
|
|
11
|
+
* @param key - The storage key
|
|
12
|
+
* @returns The stored value or null if not found
|
|
13
|
+
*/
|
|
14
|
+
get<T>(key: string): Promise<T | null>;
|
|
15
|
+
/**
|
|
16
|
+
* Stores a value in storage.
|
|
17
|
+
* @param key - The storage key
|
|
18
|
+
* @param value - The value to store (will be serialized)
|
|
19
|
+
*/
|
|
20
|
+
set<T>(key: string, value: T): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Removes a value from storage.
|
|
23
|
+
* @param key - The storage key to remove
|
|
24
|
+
*/
|
|
25
|
+
remove(key: string): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Clears all values from storage.
|
|
28
|
+
*/
|
|
29
|
+
clear(): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region ../infra/src/capabilities/IWasmUtilCapability.d.ts
|
|
33
|
+
type WasmUtilConfig = MLProviderConfig & {
|
|
34
|
+
pipelines?: WasmPipeline[];
|
|
35
|
+
};
|
|
36
|
+
type VirtualCameraCheckOutput = {
|
|
37
|
+
canvas: HTMLCanvasElement | null;
|
|
38
|
+
itr: boolean | null;
|
|
39
|
+
skipped: boolean | null;
|
|
40
|
+
};
|
|
41
|
+
type IWasmUtilCapability = {
|
|
42
|
+
/**
|
|
43
|
+
* Whether the provider has been initialized and is ready to be used.
|
|
44
|
+
*/
|
|
45
|
+
readonly initialized: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Initializes the provider with the given configuration.
|
|
48
|
+
* If WASM was already warmed up via `warmupWasm()`, this returns almost instantly.
|
|
49
|
+
* @param config - Provider configuration including WASM paths
|
|
50
|
+
*/
|
|
51
|
+
initialize(config: WasmUtilConfig): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Encrypts a base64 image using the WASM utility API.
|
|
54
|
+
* @param image - Base64 image string (no data URL prefix)
|
|
55
|
+
* @returns Encrypted string
|
|
56
|
+
*/
|
|
57
|
+
encryptImage(image: string): string;
|
|
58
|
+
setSdkVersion(version: string): void;
|
|
59
|
+
setSdkPlatform(platform: string): void;
|
|
60
|
+
setDeviceInfo(deviceInfo: object, overrideExisting?: boolean): void;
|
|
61
|
+
setBrowserInfo(browserInfo: object, overrideExisting?: boolean): void;
|
|
62
|
+
setCameraInfo(cameraInfo: object, overrideExisting?: boolean): void;
|
|
63
|
+
setMotionStatus(status: string): void;
|
|
64
|
+
setBackgroundMode(backgroundMode: boolean): void;
|
|
65
|
+
/**
|
|
66
|
+
* @deprecated Compatibility-only no-op since ml-wasm-kit v2.14.49-post1.
|
|
67
|
+
* Both values are accepted before or after initialization and never invoke
|
|
68
|
+
* native code. The public `fingerprint` option controls client-side
|
|
69
|
+
* submission; native fingerprint lifecycle remains owned by WASM. Not
|
|
70
|
+
* scheduled for removal: the wire stays live so ENG-55971 can restore the
|
|
71
|
+
* native fingerprint gate without a JS change. Use `setup({ fingerprint })`
|
|
72
|
+
* for client-side gating.
|
|
73
|
+
*/
|
|
74
|
+
setOnDeviceMode(enabled: boolean): void;
|
|
75
|
+
setZc(zc: string): void;
|
|
76
|
+
setInspectorOpened(opened: boolean): void;
|
|
77
|
+
/**
|
|
78
|
+
* Returns whether the DevTools inspector has been detected as open.
|
|
79
|
+
* Safe to call before WASM initialization (returns the in-memory flag).
|
|
80
|
+
*/
|
|
81
|
+
getInspectorOpened(): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Toggles the WASM module's production mode. When `true`, the native module
|
|
84
|
+
* suppresses its verbose debug logging/console output.
|
|
85
|
+
*/
|
|
86
|
+
setProductionMode(productionMode: boolean): Promise<void>;
|
|
87
|
+
getMetadata(): string;
|
|
88
|
+
analyzeFrame(image: ImageData): Promise<void>;
|
|
89
|
+
getCheck(): string;
|
|
90
|
+
/**
|
|
91
|
+
* Gets the current pipeline state. Must be called before setMotionStatus(),
|
|
92
|
+
* getCheck(), setBackgroundMode(), and getMetadata() for proper metadata generation.
|
|
93
|
+
*/
|
|
94
|
+
getPipelineState(): string;
|
|
95
|
+
estimatePerformance(): string;
|
|
96
|
+
/**
|
|
97
|
+
* @deprecated Returns `false` for compatibility; scheduled for removal in
|
|
98
|
+
* 3.0.0. Protected PRC/POC is the authoritative virtual-camera decision
|
|
99
|
+
* path: use {@link IWasmUtilCapability.prc} followed by
|
|
100
|
+
* {@link IWasmUtilCapability.poc} instead of inspecting the track label.
|
|
101
|
+
*/
|
|
102
|
+
isVirtualCamera(label: string | null): boolean;
|
|
103
|
+
prc(): Promise<void>;
|
|
104
|
+
poc(output: VirtualCameraCheckOutput): Promise<void>;
|
|
105
|
+
rsp(): Promise<void>;
|
|
106
|
+
ssl(): void;
|
|
107
|
+
stl(): void;
|
|
108
|
+
osv(): void;
|
|
109
|
+
oev(): void;
|
|
110
|
+
ckvcks(data: ArrayBuffer): void;
|
|
111
|
+
/**
|
|
112
|
+
* Disposes of resources and resets initialization state.
|
|
113
|
+
*/
|
|
114
|
+
dispose(): Promise<void>;
|
|
115
|
+
};
|
|
116
|
+
//#endregion
|
|
117
|
+
export { IStorageCapability as i, VirtualCameraCheckOutput as n, WasmUtilConfig as r, IWasmUtilCapability as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as resolveSessionStorage } from "./safeStorage-
|
|
1
|
+
import { n as resolveSessionStorage } from "./safeStorage-B-trhxg6.esm.js";
|
|
2
2
|
//#region ../infra/src/providers/browser/MotionSensorProvider.ts
|
|
3
3
|
const MOTION_PERMISSION_GRANTED_KEY = "motionSensorsPermissionsGranted";
|
|
4
4
|
const MOTION_PERMISSION_DENIED_KEY = "motionSensorsPermissionsDenied";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as IncodeCanvas } from "./canvas-
|
|
1
|
+
import { t as IncodeCanvas } from "./canvas-BxFzWTt-.esm.js";
|
|
2
2
|
//#region ../infra/src/media/StreamCanvasCapture.ts
|
|
3
3
|
var StreamCanvasCapture = class {
|
|
4
4
|
constructor(stream, options) {
|
|
@@ -28,7 +28,7 @@ var StreamCanvasCapture = class {
|
|
|
28
28
|
try {
|
|
29
29
|
this.video.play();
|
|
30
30
|
} catch {}
|
|
31
|
-
this.rafLoop(intervalMs);
|
|
31
|
+
if (options?.continuous !== false) this.rafLoop(intervalMs);
|
|
32
32
|
}
|
|
33
33
|
addEventListener(type, listener, options) {
|
|
34
34
|
this.eventTarget.addEventListener(type, listener, options);
|