@incodetech/core 2.1.0-rc.1 → 2.1.0-rc.3
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-ChciZmjE.esm.js +28214 -0
- package/dist/{BrowserStorageProvider-BpJM-gIl.esm.js → BrowserStorageProvider-CrrN540a.esm.js} +1 -8
- package/dist/BrowserVisibilityObserverProvider-rim9Jrz-.esm.js +25 -0
- package/dist/Face2DProvider-BeLlYBbB.esm.js +824 -0
- package/dist/FaceDetectionProvider-B78455D4.d.ts +119 -0
- package/dist/IVisibilityObserverCapability-BbWjgpiF.d.ts +12 -0
- package/dist/IWasmUtilCapability-d2XvzaCk.d.ts +145 -0
- package/dist/IpifyProvider-BRW14_uo.esm.js +51 -0
- package/dist/{OpenViduRecordingProvider-O4GjBseO.esm.js → OpenViduRecordingProvider-B_0GKkzc.esm.js} +1 -1
- package/dist/PrivacyLensProvider-hDzaDzZ6.esm.js +339 -0
- package/dist/{StreamCanvasCapture-ImiDQdVA.esm.js → StreamCanvasCapture-Bz17q4FP.esm.js} +1 -1
- package/dist/StreamCanvasCapture-DS1TOoiH.d.ts +42 -0
- package/dist/{WasmUtilProvider-BKWm8rSA.esm.js → WasmUtilProvider-ADG54T6M.esm.js} +26 -2
- package/dist/{addressSearch-DvmWXKZg.esm.js → addressSearch-DJyNTg5S.esm.js} +4 -4
- package/dist/{ae-signature-BFZta3TZ.esm.js → ae-signature-DlElqFrZ.esm.js} +1 -1
- package/dist/ae-signature.d.ts +4 -3
- package/dist/ae-signature.esm.js +10 -7
- package/dist/antifraud.d.ts +4 -3
- package/dist/antifraud.esm.js +7 -6
- package/dist/antifraudManager-BKdQoMFf.esm.js +84 -0
- package/dist/{antifraudManager-CznnhyvD.d.ts → antifraudManager-DpIvbrZP.d.ts} +2 -2
- package/dist/{antifraudStateMachine-Ccrb-Jxc.esm.js → antifraudStateMachine-C0NGnP9W.esm.js} +3 -3
- package/dist/{api-CESGtpbH.esm.js → api-DsbUi7TO.esm.js} +21 -2
- package/dist/authentication.d.ts +19 -13
- package/dist/authentication.esm.js +33 -27
- package/dist/{authenticationManager-CaiQbp-q.d.ts → authenticationManager-CdPbNS2H.d.ts} +13 -3
- package/dist/{authenticationManager-BlR6mSaG.esm.js → authenticationManager-Dtl1vcET.esm.js} +17 -8
- package/dist/{authenticationStateMachine-DkcGUMw5.esm.js → authenticationStateMachine-D-hOlg8p.esm.js} +20 -23
- package/dist/avatar.d.ts +3 -0
- package/dist/avatar.esm.js +3 -0
- package/dist/{backCameraStream-D7Wo4Nbx.esm.js → backCameraStream-ZyqrFyjO.esm.js} +3 -3
- package/dist/browser-DlFgHpoC-qLKs75Qp.esm.js +1425 -0
- package/dist/{browserSimulation-B1dWiXp7.esm.js → browserSimulation-TsSoavQv.esm.js} +153 -1216
- package/dist/camera-DUkgmYMo.esm.js +79 -0
- package/dist/camera.d.ts +7 -1
- package/dist/camera.esm.js +4 -4
- package/dist/{StreamCanvasCapture-yyl20qd9.d.ts → canvas-CJUmoXSD.d.ts} +1 -41
- package/dist/certificate-issuance.d.ts +312 -0
- package/dist/certificate-issuance.esm.js +74 -0
- package/dist/certificateIssuanceStateMachine-C07m7qtP.esm.js +127 -0
- package/dist/clientLifecycle-Ct7h9uxx.esm.js +534 -0
- package/dist/consent.d.ts +4 -3
- package/dist/consent.esm.js +7 -6
- package/dist/{consentManager-BYo9Nu1r.esm.js → consentManager-BtnPZUW4.esm.js} +30 -5
- package/dist/{consentManager-Cg5Sk2tv.d.ts → consentManager-DufVo9D9.d.ts} +55 -55
- package/dist/{consentStateMachine-BG3yL8aC.esm.js → consentStateMachine-DO2JqoZW.esm.js} +3 -3
- package/dist/cpf-ocr.d.ts +4 -3
- package/dist/cpf-ocr.esm.js +7 -6
- package/dist/{cpfOcrManager-sSKegxox.esm.js → cpfOcrManager-C4rLgKsu.esm.js} +6 -5
- package/dist/{cpfOcrManager-Dg1s_TY5.d.ts → cpfOcrManager-DqZZ94Gt.d.ts} +19 -19
- package/dist/createFaceAvatar-B8pFpy6o.d.ts +401 -0
- package/dist/createFaceAvatar-BOHDKQRq.esm.js +46 -0
- package/dist/cross-document-data-match.d.ts +2 -1
- package/dist/cross-document-data-match.esm.js +6 -5
- package/dist/curp-validation.d.ts +10 -7
- package/dist/curp-validation.esm.js +7 -6
- package/dist/{curpValidationManager-CFem6zP9.esm.js → curpValidationManager-BafobPXC.esm.js} +52 -5
- package/dist/{curpValidationManager-RttixpIc.d.ts → curpValidationManager-Co6LZAHT.d.ts} +4 -3
- package/dist/{curpValidationStateMachine-B7V_qp66.esm.js → curpValidationStateMachine-DXTPK6vI.esm.js} +3 -3
- package/dist/custom-fields.d.ts +4 -2
- package/dist/custom-fields.esm.js +49 -6
- package/dist/custom-watchlist.d.ts +2 -1
- package/dist/custom-watchlist.esm.js +27 -6
- package/dist/{customWatchlistStateMachine-HmFybXLX.esm.js → customWatchlistStateMachine-B4G3Chkx.esm.js} +3 -3
- package/dist/{deepsightLoader-8tnddNx-.esm.js → deepsightLoader-DHSVD776.esm.js} +14 -13
- package/dist/{deepsightService-CrHmvx8X.esm.js → deepsightService-CDahSjGP.esm.js} +9 -38
- package/dist/deepsightService-CMB9XjES.d.ts +69 -0
- package/dist/device.d.ts +9 -1
- package/dist/device.esm.js +5 -5
- package/dist/document-capture.d.ts +178 -177
- package/dist/document-capture.esm.js +78 -14
- package/dist/document-upload.d.ts +51 -50
- package/dist/document-upload.esm.js +10 -9
- package/dist/{documentCaptureStateMachine-CUTUzUw_.esm.js → documentCaptureStateMachine-DSOX2epf.esm.js} +7 -7
- package/dist/dynamic-forms.d.ts +4 -192
- package/dist/dynamic-forms.esm.js +8 -410
- package/dist/dynamicFormsManager-BOefZbyF.esm.js +168 -0
- package/dist/dynamicFormsManager-CUYLOj9g.d.ts +239 -0
- package/dist/dynamicFormsStateMachine-BXHcaocI.esm.js +284 -0
- package/dist/ekyb.d.ts +10 -6
- package/dist/ekyb.esm.js +62 -17
- package/dist/{ekybStateMachine-klc-AImJ.esm.js → ekybStateMachine-CCSeqjCt.esm.js} +5 -5
- package/dist/ekyc.d.ts +5 -3
- package/dist/ekyc.esm.js +55 -9
- package/dist/{ekycStateMachine-CXbpaJJn.esm.js → ekycStateMachine-DkLVTOyA.esm.js} +5 -5
- package/dist/electronic-signature.d.ts +4 -3
- package/dist/electronic-signature.esm.js +9 -6
- package/dist/{electronicSignatureManager-BaECdJ1u.esm.js → electronicSignatureManager-DjzUzqZj.esm.js} +135 -92
- package/dist/email.d.ts +5 -4
- package/dist/email.esm.js +9 -8
- package/dist/{emailManager--D5G3ChB.esm.js → emailManager-B_XzEsXH.esm.js} +47 -6
- package/dist/{emailManager-lAzDoQOs.d.ts → emailManager-fHASH6uo.d.ts} +4 -3
- package/dist/{emailStateMachine-CxTOMAjC.esm.js → emailStateMachine-fqJ42b19.esm.js} +5 -5
- package/dist/{endpoints-BeTK0Mlt.esm.js → endpoints-BzMJFAPV.esm.js} +15 -0
- package/dist/{events-Dvvriq9l.esm.js → events-CqGY1yMq.esm.js} +87 -206
- package/dist/events.d.ts +23 -16
- package/dist/events.esm.js +3 -2
- package/dist/extensibility.d.ts +37 -27
- package/dist/extensibility.esm.js +74 -57
- package/dist/externalFetch-CyhBfD-n.esm.js +22 -0
- package/dist/face-match.d.ts +2 -2
- package/dist/face-match.esm.js +6 -5
- package/dist/{faceCaptureManagerFactory-ej2j1LMr.esm.js → faceCaptureManagerFactory-2brKTzMb.esm.js} +115 -25
- package/dist/faceCaptureManagerFactory-CGKbf7zt.d.ts +400 -0
- package/dist/{faceCaptureSetup-B9t6bYze.esm.js → faceCaptureSetup-CDUVU1nl.esm.js} +97 -13
- package/dist/{faceMatchStateMachine-DeXXzSuz.esm.js → faceMatchStateMachine-DUeUjEPx.esm.js} +3 -3
- package/dist/field-comparison.d.ts +4 -3
- package/dist/field-comparison.esm.js +6 -5
- package/dist/{fieldComparisonManager-COGI2ARD.esm.js → fieldComparisonManager-B9W0a9A5.esm.js} +5 -4
- package/dist/{fieldComparisonManager-Bu5TaSr3.d.ts → fieldComparisonManager-DdLqDeB2.d.ts} +2 -2
- package/dist/fiscal-qr.d.ts +5 -3
- package/dist/fiscal-qr.esm.js +13 -12
- package/dist/flow-events.d.ts +8 -6
- package/dist/flow.d.ts +34 -16
- package/dist/flow.esm.js +53 -30
- package/dist/flowCompletionService-BIqSTZcd.d.ts +28 -0
- package/dist/flowCompletionService-qEqh_g14.esm.js +42 -0
- package/dist/{flowServices-ChgTNggJ.esm.js → flowServices-C4piblgx.esm.js} +24 -9
- package/dist/geolocation.d.ts +4 -126
- package/dist/geolocation.esm.js +8 -87
- package/dist/geolocationManager-BP2Do9O-.esm.js +123 -0
- package/dist/geolocationManager-Cs50eRlC.d.ts +156 -0
- package/dist/{geolocationStateMachine-Dvh7X0wF.esm.js → geolocationStateMachine-BYfOOOG0.esm.js} +4 -4
- package/dist/{getDeviceClass-C8Do2qYu.esm.js → getDeviceClass-DGGzzfqm.esm.js} +1 -1
- package/dist/getDeviceData-TrKM8NPh.esm.js +101 -0
- package/dist/government-validation.d.ts +4 -3
- package/dist/government-validation.esm.js +43 -8
- package/dist/{governmentValidationStateMachine-DcJ-BfsC.esm.js → governmentValidationStateMachine-CwoPPO8b.esm.js} +5 -5
- package/dist/home.d.ts +18 -15
- package/dist/home.esm.js +5 -4
- package/dist/http.d.ts +1 -0
- package/dist/http.esm.js +2 -2
- package/dist/id-ocr.d.ts +4 -625
- package/dist/id-ocr.esm.js +8 -84
- package/dist/id-verification.d.ts +28 -27
- package/dist/id-verification.esm.js +6 -5
- package/dist/id.d.ts +24 -13
- package/dist/id.esm.js +48 -33
- package/dist/idCaptureDefaults-DNJON8Xo.esm.js +188 -0
- package/dist/{idCaptureManager-ChCNmgBj.d.ts → idCaptureManager-BVdvfJys.d.ts} +47 -12
- package/dist/{idCaptureManager-D3pwWutw.esm.js → idCaptureManager-Bo9DCQSU.esm.js} +100 -15
- package/dist/{idCaptureStateMachine-B3AiDIsT.esm.js → idCaptureStateMachine-BeDidMLU.esm.js} +525 -439
- package/dist/idOcrManager-BkRDrpZu.esm.js +92 -0
- package/dist/idOcrManager-CJzrmM91.d.ts +641 -0
- package/dist/{idOcrStateMachine-CDQ5d_VM.esm.js → idOcrStateMachine-DRZc4FBl.esm.js} +5 -5
- package/dist/{idVerificationStateMachine-kRxwImzO.esm.js → idVerificationStateMachine-oqiERKpg.esm.js} +3 -3
- package/dist/identity-reuse.d.ts +4 -3
- package/dist/identity-reuse.esm.js +7 -6
- package/dist/{identityReuseManager-C6n_97dw.esm.js → identityReuseManager-Bu62LToE.esm.js} +4 -3
- package/dist/{identityReuseManager-Cww-NDtd.d.ts → identityReuseManager-TWKbXuvY.d.ts} +33 -33
- package/dist/{identityReuseStateMachine-BfE5YiEr.esm.js → identityReuseStateMachine-BmONeF6B.esm.js} +3 -3
- package/dist/{index-B5hPA0Bg.d.ts → index-DtUlD-bz.d.ts} +2 -2
- package/dist/{index-B9NysVDB.d.ts → index-Icld-cKW.d.ts} +175 -295
- package/dist/index-XTtxaahe.d.ts +93 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.esm.js +16 -12
- package/dist/{invokeOnCaptureCallback-ygByVdnn.esm.js → invokeOnCaptureCallback-v_PV_IJz.esm.js} +1 -1
- package/dist/{lib-BY67lgbq.esm.js → lib-B050WTth.esm.js} +1 -1
- package/dist/mandatory-consent.d.ts +10 -7
- package/dist/mandatory-consent.esm.js +7 -6
- package/dist/{mandatoryConsentManager-Dq6WiOZh.d.ts → mandatoryConsentManager-Bmdjo14S.d.ts} +50 -50
- package/dist/{mandatoryConsentManager-H6D18cZB.esm.js → mandatoryConsentManager-CQ3jirlZ.esm.js} +4 -3
- package/dist/{mandatoryConsentStateMachine-DtQNW1ji.esm.js → mandatoryConsentStateMachine-DkJJLHqC.esm.js} +3 -3
- package/dist/mediaRecorderOptions-C3NAkVgK.esm.js +42 -0
- package/dist/mediapipeShared-CRAKVElv.esm.js +67 -0
- package/dist/{recordingService-yRw7hfzU.esm.js → onDeviceFaceResults-DVBggeq8.esm.js} +71 -389
- package/dist/{openviduLazy-Dh14JNJc.esm.js → openviduLazy-BTOIauGP.esm.js} +2 -2
- package/dist/openviduLazy-Dov8oKfL.esm.js +3 -0
- package/dist/{permissionGuards-D0wGddy7.esm.js → permissionGuards-BR2oN573.esm.js} +1 -1
- package/dist/{permissionServices-Doec4X5L.esm.js → permissionServices-BJhGL13R.esm.js} +7 -4
- package/dist/personhood.d.ts +534 -0
- package/dist/personhood.esm.js +1494 -0
- package/dist/phone.d.ts +5 -4
- package/dist/phone.esm.js +9 -8
- package/dist/{phoneManager-fPmIBYQK.d.ts → phoneManager-BOTcjXgs.d.ts} +4 -3
- package/dist/{phoneManager-BmF-0Ez4.esm.js → phoneManager-BWlxqbyD.esm.js} +48 -6
- package/dist/{phoneStateMachine-BiV0yoEx.esm.js → phoneStateMachine-B_V9nODs.esm.js} +5 -5
- package/dist/{qe-signature-CUYPcHVo.esm.js → qe-signature-BhFnI9pT.esm.js} +1 -1
- package/dist/qe-signature.d.ts +4 -3
- package/dist/qe-signature.esm.js +10 -7
- package/dist/recordingService-m_1xCthr.esm.js +347 -0
- package/dist/redirect-to-mobile.d.ts +4 -3
- package/dist/redirect-to-mobile.esm.js +9 -7
- package/dist/{redirectToMobileManager-Dy3t7o0C.esm.js → redirectToMobileManager-BaAo9rgi.esm.js} +5 -4
- package/dist/{redirectToMobileManager-BNe3IzC_.d.ts → redirectToMobileManager-Br0KZK1G.d.ts} +2 -2
- package/dist/{redirectToMobileStateMachine-DyAdRxfP.esm.js → redirectToMobileStateMachine-DoAnf2ql.esm.js} +16 -28
- package/dist/{runChildModule-CuoHZ1cx.esm.js → runChildModule-0nQfjVVo.esm.js} +14 -24
- package/dist/selfie.d.ts +27 -14
- package/dist/selfie.esm.js +43 -30
- package/dist/{selfieManager-BNuTIGAz.esm.js → selfieManager-D_ZFERsE.esm.js} +17 -8
- package/dist/{selfieManager-C2y_t6DG.d.ts → selfieManager-R0Jw5sjb.d.ts} +13 -3
- package/dist/{selfieStateMachine-Bv99bZJE.esm.js → selfieStateMachine-CIgeeiN9.esm.js} +4 -4
- package/dist/{session-DoVb-OcB.esm.js → session-9jIfKFCc.esm.js} +3 -3
- package/dist/session.d.ts +11 -8
- package/dist/session.esm.js +16 -12
- package/dist/{sessionInitializer-DRB-hgbV.esm.js → sessionInitializer-C_TYIgyk.esm.js} +16 -109
- package/dist/{setup-BwCluiw3.d.ts → setup-CpRnXxn8.d.ts} +61 -2
- package/dist/setup-DHc6OaHm.esm.js +562 -0
- package/dist/signature.d.ts +4 -2
- package/dist/signature.esm.js +49 -6
- package/dist/{signatureStateMachine-C5qqYLRz.esm.js → signatureStateMachine-DtoiPzys.esm.js} +21 -39
- package/dist/{stats-BMNUG1AU.esm.js → stats-CYcScXcO.esm.js} +2 -2
- package/dist/stats.esm.js +3 -3
- package/dist/thumbmarkAdapter-fHBUDlAP.esm.js +1194 -0
- package/dist/tri-BG1iJsr4.esm.js +399 -0
- package/dist/tri.d.ts +2 -0
- package/dist/tri.esm-DUC01NgO.esm.js +2593 -0
- package/dist/tri.esm.js +4 -0
- package/dist/trust-graph.d.ts +4 -3
- package/dist/trust-graph.esm.js +4 -3
- package/dist/{types-NuT8ftBV.d.ts → types-BklZ_Wne.d.ts} +2 -1
- package/dist/{types-DOUhndhT.d.ts → types-BsYXnC5s.d.ts} +39 -3
- package/dist/{types-DsnEVMhr.esm.js → types-CMcxlSmH.esm.js} +2 -1
- package/dist/types-CxW2e0Ar.d.ts +132 -0
- package/dist/{types-Bj9hdFjU.d.ts → types-DgGlgyZT.d.ts} +1 -1
- package/dist/types-ElOJAGaM.esm.js +189 -0
- package/dist/urlUtils-BZqFU9rR.esm.js +16 -0
- package/dist/video-C2WIj6TS.esm.js +36 -0
- package/dist/video-selfie.d.ts +351 -0
- package/dist/video-selfie.esm.js +1509 -0
- package/dist/videoSelfieSteps-7M5vxKn-.esm.js +58 -0
- package/dist/{warmup-Dg8Lh-50.d.ts → warmup-BJZPQIiX.d.ts} +5 -1
- package/dist/wasm.d.ts +4 -3
- package/dist/wasm.esm.js +17 -13
- package/dist/watchlist-for-business.d.ts +2 -1
- package/dist/watchlist-for-business.esm.js +30 -7
- package/dist/watchlist.d.ts +2 -1
- package/dist/watchlist.esm.js +28 -6
- package/dist/{watchlistForBusinessStateMachine-DMl8j2Ov.esm.js → watchlistForBusinessStateMachine-DvEunDxs.esm.js} +3 -3
- package/dist/{watchlistStateMachine-DmQlqI6L.esm.js → watchlistStateMachine-AHXVf-TB.esm.js} +3 -3
- package/dist/workflow.d.ts +296 -103
- package/dist/workflow.esm.js +137 -74
- package/dist/{xstate.esm-C9wncMQa.esm.js → xstate.esm-Bomq1a0z.esm.js} +54 -5
- package/package.json +26 -1
- package/dist/IpifyProvider-D4LWD15E.esm.js +0 -167
- package/dist/antifraudManager-CkV4u-LE.esm.js +0 -55
- package/dist/camera-DJWm3V4g.esm.js +0 -22
- package/dist/deepsightService-Dh5P-hLf.d.ts +0 -265
- package/dist/faceCaptureManagerFactory-CjdBUS6s.d.ts +0 -721
- package/dist/flowCompletionService-BdR2cGgB.d.ts +0 -19
- package/dist/flowCompletionService-DdGojV9K.esm.js +0 -20
- package/dist/getBrowser-C8DP7oTB.esm.js +0 -8
- package/dist/openviduLazy-B8L--0oe.esm.js +0 -3
- package/dist/setup-CUO4mErT.esm.js +0 -1037
- /package/dist/{Actor-Y0_Fj-KL.d.ts → Actor-CGEelYtQ.d.ts} +0 -0
- /package/dist/{BrowserTimerProvider-DhNc_x02.esm.js → BrowserTimerProvider-CHloo0eQ.esm.js} +0 -0
- /package/dist/{ITimerCapability-CB0I1Uf2.esm.js → ITimerCapability-pltuG1E8.esm.js} +0 -0
- /package/dist/{Manager-BHn8wH8K.d.ts → Manager-CJ3G2zqi.d.ts} +0 -0
- /package/dist/{MotionSensorProvider-Bx7Mpzt0.esm.js → MotionSensorProvider-DCbId4De.esm.js} +0 -0
- /package/dist/{StateMachine-BC_nGvrc.d.ts → StateMachine-C_AY4cs7.d.ts} +0 -0
- /package/dist/{apiError-B-j-gyDx.esm.js → apiError-DNS2OCEX.esm.js} +0 -0
- /package/dist/{camera-SRBpPq2X.d.ts → camera-CNVUo-bC.d.ts} +0 -0
- /package/dist/{canvas-SKcRBxsk.esm.js → canvas-_I95hkPg.esm.js} +0 -0
- /package/dist/{chunk-CMUKZ2uL.esm.js → chunk-CIKcdghV.esm.js} +0 -0
- /package/dist/{cpf-BRzggV8G.esm.js → cpf-BKaho0j_.esm.js} +0 -0
- /package/dist/{dateUtils-AksLQmgV.esm.js → dateUtils-7-tQYRNN.esm.js} +0 -0
- /package/dist/{getDeviceClass-C0olyNFS.esm.js → getDeviceClass-DavNdcxh.esm.js} +0 -0
- /package/dist/{http-Cai3IoLS.esm.js → http-BkiUT7EB.esm.js} +0 -0
- /package/dist/{otp-CGMdUzBC.esm.js → otp-Bfnzf7I3.esm.js} +0 -0
- /package/dist/{otp-DF5A0sFx.d.ts → otp-M4iy57XY.d.ts} +0 -0
- /package/dist/{platform-SKvEfCBh.esm.js → platform-uIVQUnJP.esm.js} +0 -0
- /package/dist/{types-DvGZI7BF.d.ts → types-D_IceWxT.d.ts} +0 -0
- /package/dist/{types-ya0LN_MX.d.ts → types-Duy2rDxF.d.ts} +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { i as mlWasmJSApi_default, n as BaseWasmProvider, u as WasmPipelineType } from "./WasmUtilProvider-
|
|
2
|
-
import { r as getToken, t as api } from "./api-
|
|
3
|
-
import { t as endpoints } from "./endpoints-
|
|
4
|
-
import { t as addDeviceStats } from "./stats-
|
|
5
|
-
import { a as isIPhone14OrHigher, n as isDesktop
|
|
6
|
-
import {
|
|
7
|
-
import { t as sleep } from "./ITimerCapability-
|
|
8
|
-
import { t as IncodeCanvas } from "./canvas-
|
|
9
|
-
import { n as getBackCameraStream, r as getDesktopCameraStream, t as ensureFrontCameraStream } from "./backCameraStream-
|
|
10
|
-
import { t as getDeviceClass } from "./getDeviceClass-
|
|
11
|
-
import { t as FACE_ERROR_CODES } from "./types-
|
|
1
|
+
import { i as mlWasmJSApi_default, n as BaseWasmProvider, u as WasmPipelineType } from "./WasmUtilProvider-ADG54T6M.esm.js";
|
|
2
|
+
import { r as getToken, t as api } from "./api-DsbUi7TO.esm.js";
|
|
3
|
+
import { t as endpoints } from "./endpoints-BzMJFAPV.esm.js";
|
|
4
|
+
import { t as addDeviceStats } from "./stats-CYcScXcO.esm.js";
|
|
5
|
+
import { a as isIPhone14OrHigher, n as isDesktop } from "./platform-uIVQUnJP.esm.js";
|
|
6
|
+
import { a as stopCameraStream, r as requestCameraAccess } from "./camera-DUkgmYMo.esm.js";
|
|
7
|
+
import { t as sleep } from "./ITimerCapability-pltuG1E8.esm.js";
|
|
8
|
+
import { t as IncodeCanvas } from "./canvas-_I95hkPg.esm.js";
|
|
9
|
+
import { n as getBackCameraStream, r as getDesktopCameraStream, t as ensureFrontCameraStream } from "./backCameraStream-ZyqrFyjO.esm.js";
|
|
10
|
+
import { t as getDeviceClass } from "./getDeviceClass-DGGzzfqm.esm.js";
|
|
11
|
+
import { t as FACE_ERROR_CODES } from "./types-CMcxlSmH.esm.js";
|
|
12
12
|
|
|
13
13
|
//#region ../infra/src/scheduling/yieldUntilNextPaint.ts
|
|
14
14
|
/**
|
|
@@ -60,6 +60,20 @@ function yieldUntilNextPaint() {
|
|
|
60
60
|
|
|
61
61
|
//#endregion
|
|
62
62
|
//#region ../infra/src/providers/wasm/FaceDetectionProvider.ts
|
|
63
|
+
/**
|
|
64
|
+
* Best-effort `delete()` for Emscripten `embind`-bound handles. Plain
|
|
65
|
+
* JS values lack a `.delete` method and are skipped; proxy objects
|
|
66
|
+
* have it and need it called once to free the underlying C++ memory.
|
|
67
|
+
* Swallows errors because this runs at 15–30 Hz on the detection hot
|
|
68
|
+
* path — a throwing cleanup must never abort frame processing.
|
|
69
|
+
*/
|
|
70
|
+
function tryDeleteEmbindHandle(value) {
|
|
71
|
+
const maybeDelete = value?.delete;
|
|
72
|
+
if (typeof maybeDelete !== "function") return;
|
|
73
|
+
try {
|
|
74
|
+
maybeDelete.call(value);
|
|
75
|
+
} catch {}
|
|
76
|
+
}
|
|
63
77
|
var FaceDetectionProvider = class extends BaseWasmProvider {
|
|
64
78
|
constructor() {
|
|
65
79
|
super(WasmPipelineType.SelfieWithQualityMetrics);
|
|
@@ -82,16 +96,38 @@ var FaceDetectionProvider = class extends BaseWasmProvider {
|
|
|
82
96
|
framesAggregationInterval: 2e3,
|
|
83
97
|
minFramesWithFace: 3
|
|
84
98
|
};
|
|
99
|
+
this.currentFrame = null;
|
|
85
100
|
}
|
|
86
101
|
async processFrame(image) {
|
|
87
|
-
|
|
102
|
+
this.currentFrame = image;
|
|
103
|
+
const result = await this.processFrameWasm(image);
|
|
104
|
+
if (this.onFaceDataCallback && result?.faces) {
|
|
105
|
+
let face;
|
|
106
|
+
try {
|
|
107
|
+
if ((typeof result.faces.size === "function" ? result.faces.size() : 0) > 0) {
|
|
108
|
+
face = typeof result.faces.get === "function" ? result.faces.get(0) : void 0;
|
|
109
|
+
if (face) this.onFaceDataCallback(face, {
|
|
110
|
+
width: image.width,
|
|
111
|
+
height: image.height
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
} catch {} finally {
|
|
115
|
+
tryDeleteEmbindHandle(face);
|
|
116
|
+
tryDeleteEmbindHandle(result.faces);
|
|
117
|
+
tryDeleteEmbindHandle(result);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
88
120
|
}
|
|
89
121
|
async initialize(config) {
|
|
90
|
-
if (config.
|
|
122
|
+
if (config.videoSelfie === true) {
|
|
123
|
+
this.pipelineType = WasmPipelineType.SelfieWithAggregationMetrics;
|
|
124
|
+
await this.initializeBase(config, "videoSelfie");
|
|
125
|
+
} else if (config.useOnDeviceWorkflow === true) {
|
|
91
126
|
this.pipelineType = WasmPipelineType.OnDeviceSelfieWorkflow;
|
|
92
127
|
await this.initializeBase(config, "onDeviceSelfie");
|
|
93
128
|
} else await this.initializeBase(config, "selfie");
|
|
94
129
|
this.applyDefaults(config.autocaptureInterval ?? 0);
|
|
130
|
+
if (config.videoSelfie === true) this.setVideoSelfieMode(true);
|
|
95
131
|
}
|
|
96
132
|
processPhoto(canvas) {
|
|
97
133
|
this.ensureInitialized();
|
|
@@ -103,6 +139,7 @@ var FaceDetectionProvider = class extends BaseWasmProvider {
|
|
|
103
139
|
}
|
|
104
140
|
setCallbacks(callbacks) {
|
|
105
141
|
this.ensureInitialized();
|
|
142
|
+
this.onFaceDataCallback = callbacks.onFaceData;
|
|
106
143
|
const onCaptureWrapper = (wasmCanvas, face) => {
|
|
107
144
|
if (!wasmCanvas) return;
|
|
108
145
|
const frameCanvas = new IncodeCanvas(wasmCanvas);
|
|
@@ -111,6 +148,7 @@ var FaceDetectionProvider = class extends BaseWasmProvider {
|
|
|
111
148
|
const faceCoordinates = face ? this.formatFaceCoordinates(face) : this.createDefaultFaceCoordinates(frameCanvas);
|
|
112
149
|
callbacks.onCapture?.(frameCanvas, faceCoordinates);
|
|
113
150
|
};
|
|
151
|
+
this.currentOnCaptureWrapper = onCaptureWrapper;
|
|
114
152
|
mlWasmJSApi_default.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 ?? (() => {}));
|
|
115
153
|
}
|
|
116
154
|
setPositionConstraints(constraints) {
|
|
@@ -172,6 +210,17 @@ var FaceDetectionProvider = class extends BaseWasmProvider {
|
|
|
172
210
|
this.ensureInitialized();
|
|
173
211
|
mlWasmJSApi_default.setFaceDetectionMode(this.getPipelineType(), enabled);
|
|
174
212
|
}
|
|
213
|
+
forceCapture() {
|
|
214
|
+
if (!this.currentFrame || !this.currentOnCaptureWrapper) return;
|
|
215
|
+
const frame = IncodeCanvas.fromImageData(this.currentFrame);
|
|
216
|
+
this.currentOnCaptureWrapper(frame.canvas);
|
|
217
|
+
}
|
|
218
|
+
reset() {
|
|
219
|
+
super.reset();
|
|
220
|
+
this.currentFrame = null;
|
|
221
|
+
this.onFaceDataCallback = void 0;
|
|
222
|
+
this.currentOnCaptureWrapper = void 0;
|
|
223
|
+
}
|
|
175
224
|
createDefaultFaceCoordinates(canvas) {
|
|
176
225
|
return {
|
|
177
226
|
rightEyeX: 0,
|
|
@@ -267,7 +316,7 @@ async function startRecording(params) {
|
|
|
267
316
|
hasAudio: params.hasAudio ?? false
|
|
268
317
|
})).data;
|
|
269
318
|
}
|
|
270
|
-
async function stopRecording
|
|
319
|
+
async function stopRecording(videoRecordingId) {
|
|
271
320
|
return (await api.post(endpoints.recordingStopV2, { videoRecordingId })).data;
|
|
272
321
|
}
|
|
273
322
|
async function uploadDeepsightVideo(encryptedVideo, token) {
|
|
@@ -286,7 +335,7 @@ async function uploadDeepsightVideo(encryptedVideo, token) {
|
|
|
286
335
|
/**
|
|
287
336
|
* Uploads a selfie image to the backend.
|
|
288
337
|
*/
|
|
289
|
-
async function uploadSelfie({ encryptedBase64Image, faceCoordinates, signal, metadata, recordingId, deepsightService }) {
|
|
338
|
+
async function uploadSelfie({ encryptedBase64Image, faceCoordinates, signal, metadata, recordingId, imageType = "selfie", deepsightService }) {
|
|
290
339
|
try {
|
|
291
340
|
const payload = {
|
|
292
341
|
base64Image: encryptedBase64Image,
|
|
@@ -295,7 +344,7 @@ async function uploadSelfie({ encryptedBase64Image, faceCoordinates, signal, met
|
|
|
295
344
|
clientInfo: { deviceClass: getDeviceClass() },
|
|
296
345
|
metadata: metadata ?? void 0
|
|
297
346
|
};
|
|
298
|
-
const query = { imageType
|
|
347
|
+
const query = { imageType };
|
|
299
348
|
if (recordingId) query.recordingId = recordingId;
|
|
300
349
|
const res = await api.post(endpoints.selfie, payload, {
|
|
301
350
|
signal,
|
|
@@ -455,6 +504,7 @@ function startDetection(params) {
|
|
|
455
504
|
if (params.config.validateHeadCover) setStatus("headWear");
|
|
456
505
|
},
|
|
457
506
|
onFaceOccluded: () => setStatus("faceOcclusion"),
|
|
507
|
+
onFaceData: params.onPose,
|
|
458
508
|
onSwitchToManualCapture: () => {
|
|
459
509
|
setStatus("manualCapture");
|
|
460
510
|
stopDetectionLoop();
|
|
@@ -490,7 +540,7 @@ function buildResolutionFromStream(stream) {
|
|
|
490
540
|
if (typeof width === "number" && typeof height === "number") return `${width}x${height}`;
|
|
491
541
|
}
|
|
492
542
|
async function createOpenViduRecordingProvider() {
|
|
493
|
-
const { OpenViduRecordingProvider } = await import("./OpenViduRecordingProvider-
|
|
543
|
+
const { OpenViduRecordingProvider } = await import("./OpenViduRecordingProvider-B_0GKkzc.esm.js");
|
|
494
544
|
return new OpenViduRecordingProvider();
|
|
495
545
|
}
|
|
496
546
|
async function startRecordingSession(params) {
|
|
@@ -522,15 +572,15 @@ async function startRecordingSession(params) {
|
|
|
522
572
|
hasAudio
|
|
523
573
|
};
|
|
524
574
|
}
|
|
525
|
-
async function stopRecording(session) {
|
|
575
|
+
async function stopRecording$1(session) {
|
|
526
576
|
try {
|
|
527
|
-
await stopRecording
|
|
577
|
+
await stopRecording(session.videoRecordingId);
|
|
528
578
|
} finally {
|
|
529
579
|
await session.connection.disconnect();
|
|
530
580
|
}
|
|
531
581
|
}
|
|
532
582
|
async function initializeDeepsightSession(options) {
|
|
533
|
-
const { loadDeepsightSession } = await import("./deepsightLoader-
|
|
583
|
+
const { loadDeepsightSession } = await import("./deepsightLoader-DHSVD776.esm.js");
|
|
534
584
|
return loadDeepsightSession({
|
|
535
585
|
ds: options.ds,
|
|
536
586
|
storage: options.storage
|
|
@@ -650,372 +700,4 @@ async function postOnDeviceFaceResults(ctx, signal) {
|
|
|
650
700
|
}
|
|
651
701
|
|
|
652
702
|
//#endregion
|
|
653
|
-
|
|
654
|
-
async function flagFaceManualReview() {
|
|
655
|
-
try {
|
|
656
|
-
await api.put(endpoints.updateSession, { manualSelfieCheckNeeded: true });
|
|
657
|
-
} catch {}
|
|
658
|
-
}
|
|
659
|
-
async function flagIdManualReview() {
|
|
660
|
-
try {
|
|
661
|
-
await api.put(endpoints.updateSession, { manualIdCheckNeeded: true });
|
|
662
|
-
} catch {}
|
|
663
|
-
}
|
|
664
|
-
|
|
665
|
-
//#endregion
|
|
666
|
-
//#region ../infra/src/media/VideoTrimmer.ts
|
|
667
|
-
async function getDurationBySeek(videoBlob) {
|
|
668
|
-
const video = document.createElement("video");
|
|
669
|
-
video.preload = "metadata";
|
|
670
|
-
video.src = URL.createObjectURL(videoBlob);
|
|
671
|
-
try {
|
|
672
|
-
if (!Number.isFinite(video.duration)) {
|
|
673
|
-
video.currentTime = Number.MAX_SAFE_INTEGER;
|
|
674
|
-
await new Promise((resolve) => {
|
|
675
|
-
const onDurationChange = () => {
|
|
676
|
-
if (Number.isFinite(video.duration)) {
|
|
677
|
-
video.removeEventListener("durationchange", onDurationChange);
|
|
678
|
-
video.removeEventListener("timeupdate", onTimeUpdate);
|
|
679
|
-
resolve(video.duration);
|
|
680
|
-
}
|
|
681
|
-
};
|
|
682
|
-
const onTimeUpdate = () => {
|
|
683
|
-
if (Number.isFinite(video.duration)) {
|
|
684
|
-
video.removeEventListener("timeupdate", onTimeUpdate);
|
|
685
|
-
video.removeEventListener("durationchange", onDurationChange);
|
|
686
|
-
resolve(video.duration);
|
|
687
|
-
}
|
|
688
|
-
};
|
|
689
|
-
video.addEventListener("durationchange", onDurationChange);
|
|
690
|
-
video.addEventListener("timeupdate", onTimeUpdate);
|
|
691
|
-
});
|
|
692
|
-
}
|
|
693
|
-
const duration = video.duration;
|
|
694
|
-
return Number.isFinite(duration) ? duration : null;
|
|
695
|
-
} finally {
|
|
696
|
-
URL.revokeObjectURL(video.src);
|
|
697
|
-
video.src = "";
|
|
698
|
-
}
|
|
699
|
-
}
|
|
700
|
-
async function trimLastNSecondsUsingPlayback(videoBlob, seconds) {
|
|
701
|
-
const video = document.createElement("video");
|
|
702
|
-
video.preload = "metadata";
|
|
703
|
-
video.playsInline = true;
|
|
704
|
-
video.muted = true;
|
|
705
|
-
const videoURL = URL.createObjectURL(videoBlob);
|
|
706
|
-
video.src = videoURL;
|
|
707
|
-
const duration = await getDurationBySeek(videoBlob);
|
|
708
|
-
if (!duration || duration < seconds) {
|
|
709
|
-
URL.revokeObjectURL(videoURL);
|
|
710
|
-
return videoBlob;
|
|
711
|
-
}
|
|
712
|
-
const startTime = Math.max(0, Math.floor(duration) - seconds);
|
|
713
|
-
await new Promise((resolve) => {
|
|
714
|
-
if (video.readyState >= 2) resolve();
|
|
715
|
-
else video.addEventListener("loadedmetadata", () => resolve(), { once: true });
|
|
716
|
-
});
|
|
717
|
-
const canvas = document.createElement("canvas");
|
|
718
|
-
canvas.width = 230;
|
|
719
|
-
canvas.height = 320;
|
|
720
|
-
const captureFps = isAndroid() ? 15 : 24;
|
|
721
|
-
const stream = canvas.captureStream(captureFps);
|
|
722
|
-
const ctx = canvas.getContext("2d");
|
|
723
|
-
video.currentTime = startTime;
|
|
724
|
-
await new Promise((resolve) => {
|
|
725
|
-
video.addEventListener("seeked", () => resolve(), { once: true });
|
|
726
|
-
});
|
|
727
|
-
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
|
|
728
|
-
const mimeType = videoBlob.type || (MediaRecorder.isTypeSupported("video/webm") ? "video/webm" : "video/mp4");
|
|
729
|
-
const mediaRecorder = new MediaRecorder(stream.clone(), {
|
|
730
|
-
mimeType,
|
|
731
|
-
videoBitsPerSecond: 5e5,
|
|
732
|
-
bitsPerSecond: 5e5
|
|
733
|
-
});
|
|
734
|
-
const chunks = [];
|
|
735
|
-
mediaRecorder.ondataavailable = (event) => {
|
|
736
|
-
if (event.data.size > 0) chunks.push(event.data);
|
|
737
|
-
};
|
|
738
|
-
const recordingPromise = new Promise((resolve) => {
|
|
739
|
-
mediaRecorder.onstop = () => {
|
|
740
|
-
const trimmedBlob$1 = new Blob(chunks, { type: mimeType });
|
|
741
|
-
URL.revokeObjectURL(videoURL);
|
|
742
|
-
mediaRecorder.stream?.getTracks().forEach((track) => track.stop());
|
|
743
|
-
stream.getTracks().forEach((track) => track.stop());
|
|
744
|
-
video.src = "";
|
|
745
|
-
resolve(trimmedBlob$1);
|
|
746
|
-
};
|
|
747
|
-
});
|
|
748
|
-
video.addEventListener("play", () => {
|
|
749
|
-
function drawVideo() {
|
|
750
|
-
if (video.currentTime >= duration) {
|
|
751
|
-
mediaRecorder.stop();
|
|
752
|
-
video.pause();
|
|
753
|
-
return;
|
|
754
|
-
}
|
|
755
|
-
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
|
|
756
|
-
requestAnimationFrame(drawVideo);
|
|
757
|
-
}
|
|
758
|
-
drawVideo();
|
|
759
|
-
setTimeout(() => {
|
|
760
|
-
mediaRecorder.start(100);
|
|
761
|
-
}, 500);
|
|
762
|
-
});
|
|
763
|
-
video.play().catch(() => {
|
|
764
|
-
URL.revokeObjectURL(videoURL);
|
|
765
|
-
});
|
|
766
|
-
const trimmedBlob = await recordingPromise;
|
|
767
|
-
console.timeEnd("trimLastNSecondsUsingPlayback");
|
|
768
|
-
return trimmedBlob;
|
|
769
|
-
}
|
|
770
|
-
async function trimLastNSeconds(videoBlob, seconds) {
|
|
771
|
-
return await trimLastNSecondsUsingPlayback(videoBlob, seconds);
|
|
772
|
-
}
|
|
773
|
-
|
|
774
|
-
//#endregion
|
|
775
|
-
//#region ../infra/src/providers/browser/LocalRecordingProvider.ts
|
|
776
|
-
function toBase64(videoBlob) {
|
|
777
|
-
return new Promise((resolve, reject) => {
|
|
778
|
-
const reader = new FileReader();
|
|
779
|
-
reader.onloadend = () => {
|
|
780
|
-
const base64 = reader.result.split(",")[1];
|
|
781
|
-
resolve(base64);
|
|
782
|
-
};
|
|
783
|
-
reader.onerror = () => reject(reader.error ?? /* @__PURE__ */ new Error("FileReader error"));
|
|
784
|
-
reader.readAsDataURL(videoBlob);
|
|
785
|
-
});
|
|
786
|
-
}
|
|
787
|
-
function getSupportedMediaRecorderMimeType() {
|
|
788
|
-
const possibleTypes = isIOS() ? [
|
|
789
|
-
"video/mp4",
|
|
790
|
-
"video/webm",
|
|
791
|
-
"video/webm;codecs=vp9",
|
|
792
|
-
"video/webm;codecs=vp8"
|
|
793
|
-
] : [
|
|
794
|
-
"video/webm",
|
|
795
|
-
"video/webm;codecs=vp9",
|
|
796
|
-
"video/webm;codecs=vp8",
|
|
797
|
-
"video/mp4"
|
|
798
|
-
];
|
|
799
|
-
for (const type of possibleTypes) if (MediaRecorder.isTypeSupported(type)) return type;
|
|
800
|
-
return "";
|
|
801
|
-
}
|
|
802
|
-
function getAdaptiveMediaRecorderOptions() {
|
|
803
|
-
const mimeType = getSupportedMediaRecorderMimeType();
|
|
804
|
-
if (isIOS()) return {
|
|
805
|
-
mimeType,
|
|
806
|
-
videoBitsPerSecond: 1e6,
|
|
807
|
-
bitsPerSecond: 1e6
|
|
808
|
-
};
|
|
809
|
-
return {
|
|
810
|
-
mimeType,
|
|
811
|
-
videoBitsPerSecond: 5e5,
|
|
812
|
-
bitsPerSecond: 5e5
|
|
813
|
-
};
|
|
814
|
-
}
|
|
815
|
-
var LocalRecordingProvider = class {
|
|
816
|
-
constructor() {
|
|
817
|
-
this.mediaRecorder = null;
|
|
818
|
-
this._isRecording = false;
|
|
819
|
-
this._hasError = false;
|
|
820
|
-
this._error = null;
|
|
821
|
-
this.mimeType = "";
|
|
822
|
-
this.stream = null;
|
|
823
|
-
this.pauseRecordingBound = this.pauseRecording.bind(this);
|
|
824
|
-
}
|
|
825
|
-
get isRecording() {
|
|
826
|
-
return this._isRecording;
|
|
827
|
-
}
|
|
828
|
-
get hasError() {
|
|
829
|
-
return this._hasError;
|
|
830
|
-
}
|
|
831
|
-
get error() {
|
|
832
|
-
return this._error;
|
|
833
|
-
}
|
|
834
|
-
startRecording(stream) {
|
|
835
|
-
this.reset();
|
|
836
|
-
this.registerEventListeners();
|
|
837
|
-
this.stream = stream;
|
|
838
|
-
try {
|
|
839
|
-
const options = getAdaptiveMediaRecorderOptions();
|
|
840
|
-
this.mimeType = options.mimeType;
|
|
841
|
-
const recorder = new MediaRecorder(stream.clone(), options);
|
|
842
|
-
recorder.onerror = (event) => {
|
|
843
|
-
this._error = `Recording error: ${event}`;
|
|
844
|
-
this._isRecording = false;
|
|
845
|
-
this._hasError = true;
|
|
846
|
-
};
|
|
847
|
-
recorder.start();
|
|
848
|
-
this.mediaRecorder = recorder;
|
|
849
|
-
this._isRecording = true;
|
|
850
|
-
this._error = null;
|
|
851
|
-
this._hasError = false;
|
|
852
|
-
} catch (err) {
|
|
853
|
-
this._error = `Failed to start recording: ${err}`;
|
|
854
|
-
this._hasError = true;
|
|
855
|
-
}
|
|
856
|
-
}
|
|
857
|
-
async stopRecording(trimSeconds, encrypt, generateChecksum) {
|
|
858
|
-
const recorder = this.mediaRecorder;
|
|
859
|
-
return new Promise((resolve, reject) => {
|
|
860
|
-
this.removeEventListeners();
|
|
861
|
-
if (recorder && this._isRecording) {
|
|
862
|
-
const chunks = [];
|
|
863
|
-
recorder.ondataavailable = (event) => {
|
|
864
|
-
if (event.data.size > 0) chunks.push(event.data);
|
|
865
|
-
};
|
|
866
|
-
recorder.onstop = async () => {
|
|
867
|
-
try {
|
|
868
|
-
const trimmedVideo = await trimLastNSeconds(new Blob(chunks, { type: this.mimeType }), trimSeconds);
|
|
869
|
-
const encryptedVideoBase64 = encrypt(await toBase64(trimmedVideo));
|
|
870
|
-
generateChecksum(await trimmedVideo.arrayBuffer());
|
|
871
|
-
this._isRecording = false;
|
|
872
|
-
resolve({
|
|
873
|
-
trimmedBlob: trimmedVideo,
|
|
874
|
-
encryptedVideo: encryptedVideoBase64
|
|
875
|
-
});
|
|
876
|
-
} catch (error) {
|
|
877
|
-
this._isRecording = false;
|
|
878
|
-
this._error = `Recording stop failed: ${error}`;
|
|
879
|
-
this._hasError = true;
|
|
880
|
-
reject(error);
|
|
881
|
-
}
|
|
882
|
-
};
|
|
883
|
-
recorder.stop();
|
|
884
|
-
this._isRecording = false;
|
|
885
|
-
} else resolve({
|
|
886
|
-
trimmedBlob: new Blob([], { type: this.mimeType }),
|
|
887
|
-
encryptedVideo: ""
|
|
888
|
-
});
|
|
889
|
-
recorder?.stream?.getTracks().forEach((track) => track.stop());
|
|
890
|
-
});
|
|
891
|
-
}
|
|
892
|
-
reset() {
|
|
893
|
-
this._isRecording = false;
|
|
894
|
-
this._error = null;
|
|
895
|
-
this._hasError = false;
|
|
896
|
-
}
|
|
897
|
-
pauseRecording() {
|
|
898
|
-
if (!this._isRecording) return;
|
|
899
|
-
if (this.mediaRecorder?.state === "recording") try {
|
|
900
|
-
this.mediaRecorder.pause();
|
|
901
|
-
} catch {}
|
|
902
|
-
}
|
|
903
|
-
registerEventListeners() {
|
|
904
|
-
document.addEventListener("visibilitychange", this.pauseRecordingBound);
|
|
905
|
-
}
|
|
906
|
-
removeEventListeners() {
|
|
907
|
-
document.removeEventListener("visibilitychange", this.pauseRecordingBound);
|
|
908
|
-
}
|
|
909
|
-
};
|
|
910
|
-
|
|
911
|
-
//#endregion
|
|
912
|
-
//#region src/internal/faceCapture/recordingService.ts
|
|
913
|
-
let openViduProviderImportPromise;
|
|
914
|
-
let openViduBrowserImportPromise;
|
|
915
|
-
function loadOpenViduProviderModule() {
|
|
916
|
-
if (!openViduProviderImportPromise) openViduProviderImportPromise = import("./OpenViduRecordingProvider-O4GjBseO.esm.js");
|
|
917
|
-
return openViduProviderImportPromise;
|
|
918
|
-
}
|
|
919
|
-
function loadOpenViduBrowserModule() {
|
|
920
|
-
if (!openViduBrowserImportPromise) openViduBrowserImportPromise = (async () => {
|
|
921
|
-
return (await import("./openviduLazy-B8L--0oe.esm.js")).loadOpenVidu();
|
|
922
|
-
})();
|
|
923
|
-
return openViduBrowserImportPromise;
|
|
924
|
-
}
|
|
925
|
-
function preloadOpenViduProvider() {
|
|
926
|
-
loadOpenViduProviderModule();
|
|
927
|
-
loadOpenViduBrowserModule();
|
|
928
|
-
}
|
|
929
|
-
/**
|
|
930
|
-
* Records on-device and uploads encrypted video for liveness.
|
|
931
|
-
*/
|
|
932
|
-
var LocalRecordingService = class {
|
|
933
|
-
constructor(wasmUtil, sessionToken) {
|
|
934
|
-
this.recorder = new LocalRecordingProvider();
|
|
935
|
-
this.sessionToken = sessionToken;
|
|
936
|
-
this.wasmUtil = wasmUtil;
|
|
937
|
-
}
|
|
938
|
-
async start(stream) {
|
|
939
|
-
this.recorder.startRecording(stream);
|
|
940
|
-
this.wasmUtil.osv();
|
|
941
|
-
}
|
|
942
|
-
async stop() {
|
|
943
|
-
if (!this.recorder.isRecording) return { recordingId: null };
|
|
944
|
-
this.wasmUtil.oev();
|
|
945
|
-
const result = await this.recorder.stopRecording(10, (base64) => this.wasmUtil.encryptImage(base64), (buffer) => this.wasmUtil.ckvcks(buffer));
|
|
946
|
-
if (!this.sessionToken) return { recordingId: null };
|
|
947
|
-
return { recordingId: await uploadDeepsightVideo(result.encryptedVideo, this.sessionToken) };
|
|
948
|
-
}
|
|
949
|
-
async stopAndGetVideo() {
|
|
950
|
-
if (!this.recorder.isRecording) return { videoBase64: void 0 };
|
|
951
|
-
try {
|
|
952
|
-
this.wasmUtil.oev();
|
|
953
|
-
const videoBase64 = (await this.recorder.stopRecording(10, (base64) => base64, () => {})).encryptedVideo;
|
|
954
|
-
return { videoBase64: videoBase64 ? videoBase64 : void 0 };
|
|
955
|
-
} catch {
|
|
956
|
-
return { videoBase64: void 0 };
|
|
957
|
-
}
|
|
958
|
-
}
|
|
959
|
-
cleanup() {
|
|
960
|
-
this.recorder.reset();
|
|
961
|
-
}
|
|
962
|
-
};
|
|
963
|
-
/**
|
|
964
|
-
* Records through OpenVidu and manages the session lifecycle.
|
|
965
|
-
*/
|
|
966
|
-
var OpenViduRecordingService = class {
|
|
967
|
-
constructor(config) {
|
|
968
|
-
this.config = config;
|
|
969
|
-
}
|
|
970
|
-
async start(stream) {
|
|
971
|
-
if (!this.provider) {
|
|
972
|
-
const { OpenViduRecordingProvider } = await loadOpenViduProviderModule();
|
|
973
|
-
this.provider = new OpenViduRecordingProvider();
|
|
974
|
-
}
|
|
975
|
-
this.session = await startRecordingSession({
|
|
976
|
-
config: {
|
|
977
|
-
...this.config,
|
|
978
|
-
recording: { capability: this.provider }
|
|
979
|
-
},
|
|
980
|
-
clonedStream: stream.clone(),
|
|
981
|
-
existing: this.session
|
|
982
|
-
});
|
|
983
|
-
}
|
|
984
|
-
async stop() {
|
|
985
|
-
if (this.session) {
|
|
986
|
-
stopRecording(this.session);
|
|
987
|
-
this.session = void 0;
|
|
988
|
-
}
|
|
989
|
-
return { recordingId: null };
|
|
990
|
-
}
|
|
991
|
-
async stopAndGetVideo() {
|
|
992
|
-
if (this.session) {
|
|
993
|
-
stopRecording(this.session);
|
|
994
|
-
this.session = void 0;
|
|
995
|
-
}
|
|
996
|
-
return { videoBase64: void 0 };
|
|
997
|
-
}
|
|
998
|
-
cleanup() {
|
|
999
|
-
if (this.session) stopRecording(this.session);
|
|
1000
|
-
}
|
|
1001
|
-
};
|
|
1002
|
-
/**
|
|
1003
|
-
* Creates the recording service for the current configuration.
|
|
1004
|
-
*
|
|
1005
|
-
* Order of precedence:
|
|
1006
|
-
* 1. `onDeviceFaceResultsSubmissionEnabled === true` → no recording. The
|
|
1007
|
-
* on-device workflow never uploads media, only the staged face-results
|
|
1008
|
-
* JSON via `WebApi.postFaceResults`. Mirrors V1's
|
|
1009
|
-
* `FaceFlowManager.setRecorders()` early return.
|
|
1010
|
-
* 2. `deepsightLiveness === 'VIDEOLIVENESS'` → local Deepsight recorder.
|
|
1011
|
-
* 3. `enableFaceRecording === true` → server-side OpenVidu recorder.
|
|
1012
|
-
* 4. otherwise → no recording.
|
|
1013
|
-
*/
|
|
1014
|
-
function createRecordingService(params) {
|
|
1015
|
-
if (params.config.onDeviceFaceResultsSubmissionEnabled === true) return;
|
|
1016
|
-
if (params.config.deepsightLiveness === "VIDEOLIVENESS") return new LocalRecordingService(params.wasmUtil, params.sessionToken);
|
|
1017
|
-
if (params.config.enableFaceRecording === true) return new OpenViduRecordingService(params.config);
|
|
1018
|
-
}
|
|
1019
|
-
|
|
1020
|
-
//#endregion
|
|
1021
|
-
export { startRecording as _, defaultPrepareFaceUpload as a, prepareOnDeviceFaceUpload as c, sendLabelInspectionEvent as d, startDetection as f, createRecordingSession as g, uploadSelfie as h, flagIdManualReview as i, initializeCamera as l, processFace as m, preloadOpenViduProvider as n, isOnDeviceMode as o, stopStream as p, flagFaceManualReview as r, postOnDeviceFaceResults as s, createRecordingService as t, initializeDeepsightSession as u, stopRecording$1 as v, StreamCanvasProcessingSession as y };
|
|
703
|
+
export { stopRecording as _, encryptSelfieImage as a, FaceDetectionProvider as b, sendLabelInspectionEvent as c, stopRecording$1 as d, stopStream as f, startRecording as g, createRecordingSession as h, prepareOnDeviceFaceUpload as i, startDetection as l, uploadSelfie as m, isOnDeviceMode as n, initializeCamera as o, processFace as p, postOnDeviceFaceResults as r, initializeDeepsightSession as s, defaultPrepareFaceUpload as t, startRecordingSession as u, uploadDeepsightVideo as v, StreamCanvasProcessingSession as y };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { a as __toDynamicImportESM } from "./chunk-
|
|
1
|
+
import { a as __toDynamicImportESM } from "./chunk-CIKcdghV.esm.js";
|
|
2
2
|
|
|
3
3
|
//#region ../infra/src/providers/browser/openviduLazy.ts
|
|
4
4
|
let openViduImport;
|
|
5
5
|
async function loadOpenVidu() {
|
|
6
6
|
if (openViduImport) return openViduImport;
|
|
7
|
-
openViduImport = import("./lib-
|
|
7
|
+
openViduImport = import("./lib-B050WTth.esm.js").then(__toDynamicImportESM(1));
|
|
8
8
|
return openViduImport;
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as isWasmMotionPrimedForModule } from "./permissionServices-
|
|
1
|
+
import { a as isWasmMotionPrimedForModule } from "./permissionServices-BJhGL13R.esm.js";
|
|
2
2
|
|
|
3
3
|
//#region src/internal/permissions/permissionGuards.ts
|
|
4
4
|
function resolveStoredPermissionResult(fromEvent, fromContext) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as WasmUtilProvider } from "./WasmUtilProvider-
|
|
2
|
-
import { t as MotionSensorProvider } from "./MotionSensorProvider-
|
|
3
|
-
import {
|
|
1
|
+
import { t as WasmUtilProvider } from "./WasmUtilProvider-ADG54T6M.esm.js";
|
|
2
|
+
import { t as MotionSensorProvider } from "./MotionSensorProvider-DCbId4De.esm.js";
|
|
3
|
+
import { a as stopCameraStream, r as requestCameraAccess } from "./camera-DUkgmYMo.esm.js";
|
|
4
4
|
|
|
5
5
|
//#region ../infra/src/media/cameraPermissionSession.ts
|
|
6
6
|
const CAMERA_PERMISSIONS_GRANTED_KEY = "cameraPermissionsGranted";
|
|
@@ -104,7 +104,10 @@ async function requestPermission(options = {}) {
|
|
|
104
104
|
if (await resolveMotionOsPermission(motionSensor) === "denied") return "denied";
|
|
105
105
|
if (!isWasmMotionPrimedForModule()) await primeWasmMotionSensor(motionSensor);
|
|
106
106
|
}
|
|
107
|
-
stopCameraStream(await requestCameraAccess({
|
|
107
|
+
stopCameraStream(await requestCameraAccess({
|
|
108
|
+
video: true,
|
|
109
|
+
audio: options.requestAudio ?? false
|
|
110
|
+
}));
|
|
108
111
|
markCameraPermissionsGrantedInSession();
|
|
109
112
|
return "granted";
|
|
110
113
|
} catch (error) {
|