@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
package/dist/{videoSelfieCameraWarmer-NEhFZvWx.esm.js → videoSelfieCameraWarmer-B8PcYqmz.esm.js}
RENAMED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { t as BrowserTimerProvider } from "./BrowserTimerProvider-BXhgNxLt.esm.js";
|
|
2
2
|
import { t as api } from "./api-Bx3gKW_y.esm.js";
|
|
3
|
-
import { t as endpoints } from "./endpoints-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { t as checkPermission } from "./permissionServices-
|
|
7
|
-
import {
|
|
8
|
-
import { n as getBackCameraStream } from "./backCameraStream-CUeYm5eu.esm.js";
|
|
9
|
-
import { n as getWindowDimensions } from "./getDeviceClass-CeBiEayS.esm.js";
|
|
3
|
+
import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
|
|
4
|
+
import { d as facingModeForStep, f as resolveVideoSelfieSteps } from "./flowServices-DjPFGs_D.esm.js";
|
|
5
|
+
import { a as requestCameraWithFallback, i as requestCameraAccess } from "./camera-sIa9ceW2.esm.js";
|
|
6
|
+
import { t as checkPermission } from "./permissionServices-Bj_fyWtv.esm.js";
|
|
7
|
+
import { n as encryptSelfieImage, o as startDetection, t as FaceDetectionProvider } from "./FaceDetectionProvider-BfhWkK90.esm.js";
|
|
10
8
|
import { t as FACE_ERROR_CODES } from "./types-BN5RPPIZ.esm.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { n as
|
|
9
|
+
import { t as StreamCanvasProcessingSession } from "./StreamCanvasProcessingSession-CBnbTnOr.esm.js";
|
|
10
|
+
import { n as getBackCameraStream } from "./backCameraStream-BOtyQowf.esm.js";
|
|
11
|
+
import { n as getWindowDimensions } from "./getDeviceClass-CeBiEayS.esm.js";
|
|
12
|
+
import { a as uploadSelfie, r as processFace, t as getFaceErrorCodeFromUnknown } from "./selfieErrorUtils-UiQ46EBa.esm.js";
|
|
13
|
+
import { n as DEFAULT_ID_CAPTURE_THRESHOLDS, r as IdCaptureProvider, t as DEFAULT_ID_CAPTURE_GEOMETRY } from "./idCaptureDefaults-CbPA-Auz.esm.js";
|
|
14
|
+
import { t as StreamCanvasCapture } from "./StreamCanvasCapture-C9jtgBdT.esm.js";
|
|
14
15
|
//#region src/modules/video-selfie/videoSelfieCompareService.ts
|
|
15
16
|
async function postVideoSelfieCompare(endpoint, base64Image) {
|
|
16
17
|
return (await api.post(endpoint, { base64Image })).data;
|
|
@@ -434,146 +435,6 @@ async function validateIdFrame(step, config, base64Image) {
|
|
|
434
435
|
return { outcome: "success" };
|
|
435
436
|
}
|
|
436
437
|
//#endregion
|
|
437
|
-
//#region ../infra/src/media/CameraCompositor.ts
|
|
438
|
-
const MAX_COMPOSITE_LONG_EDGE = 1280;
|
|
439
|
-
const MAX_COMPOSITE_SHORT_EDGE = 720;
|
|
440
|
-
const FRAME_INTERVAL_TOLERANCE_RATIO = .9;
|
|
441
|
-
/**
|
|
442
|
-
* Composites the *active* camera into a canvas and exposes the canvas as a
|
|
443
|
-
* single, stable `MediaStream` to record. Switching cameras (front ↔ back)
|
|
444
|
-
* just repoints what the canvas draws — the output stream and its audio track
|
|
445
|
-
* are never replaced — so a single `MediaRecorder` produces one continuous
|
|
446
|
-
* video that follows the camera switches (V1 parity), instead of restarting
|
|
447
|
-
* per camera.
|
|
448
|
-
*
|
|
449
|
-
* The audio track from the initial stream is carried through unchanged across
|
|
450
|
-
* video switches, so there's no audio glitch when the camera flips.
|
|
451
|
-
*/
|
|
452
|
-
var CameraCompositor = class {
|
|
453
|
-
constructor(options = {}) {
|
|
454
|
-
this.canvas = null;
|
|
455
|
-
this.ctx = null;
|
|
456
|
-
this.video = null;
|
|
457
|
-
this.frameRequestId = null;
|
|
458
|
-
this.frameRequestKind = null;
|
|
459
|
-
this.lastDrawTimeMs = null;
|
|
460
|
-
this.lastVideoTimeSeconds = null;
|
|
461
|
-
this.audioTrack = null;
|
|
462
|
-
this.videoTrack = null;
|
|
463
|
-
this.composite = null;
|
|
464
|
-
this.fps = options.fps ?? 30;
|
|
465
|
-
this.frameIntervalMs = this.fps > 0 ? 1e3 / this.fps : 0;
|
|
466
|
-
}
|
|
467
|
-
/**
|
|
468
|
-
* Begin compositing `stream` and return the composite stream to record. The
|
|
469
|
-
* stream's audio track (if any) is carried through unchanged across later
|
|
470
|
-
* `switchVideo` calls.
|
|
471
|
-
*/
|
|
472
|
-
start(stream) {
|
|
473
|
-
this.canvas = document.createElement("canvas");
|
|
474
|
-
this.ctx = this.canvas.getContext("2d");
|
|
475
|
-
this.video = document.createElement("video");
|
|
476
|
-
this.video.muted = true;
|
|
477
|
-
this.video.playsInline = true;
|
|
478
|
-
this.audioTrack = stream.getAudioTracks()[0] ?? null;
|
|
479
|
-
this.setVideoSource(stream);
|
|
480
|
-
const composite = this.canvas.captureStream(this.fps);
|
|
481
|
-
if (this.audioTrack) composite.addTrack(this.audioTrack);
|
|
482
|
-
this.composite = composite;
|
|
483
|
-
this.startDrawLoop();
|
|
484
|
-
return composite;
|
|
485
|
-
}
|
|
486
|
-
/**
|
|
487
|
-
* Swap the camera feeding the canvas without interrupting the composite
|
|
488
|
-
* stream. Pass a video-only stream (audio is kept from `start`). The previous
|
|
489
|
-
* video track is stopped.
|
|
490
|
-
*/
|
|
491
|
-
switchVideo(stream) {
|
|
492
|
-
if (!this.composite) return;
|
|
493
|
-
const previousVideoTrack = this.videoTrack;
|
|
494
|
-
this.setVideoSource(stream);
|
|
495
|
-
this.startDrawLoop();
|
|
496
|
-
if (previousVideoTrack) previousVideoTrack.stop();
|
|
497
|
-
}
|
|
498
|
-
/** The composite stream being recorded, if compositing is active. */
|
|
499
|
-
get stream() {
|
|
500
|
-
return this.composite ?? void 0;
|
|
501
|
-
}
|
|
502
|
-
/** Stop compositing and release the canvas, audio, and video tracks. */
|
|
503
|
-
stop() {
|
|
504
|
-
this.cancelDrawLoop();
|
|
505
|
-
this.videoTrack?.stop();
|
|
506
|
-
this.audioTrack?.stop();
|
|
507
|
-
this.composite?.getTracks().forEach((track) => track.stop());
|
|
508
|
-
if (this.video) this.video.srcObject = null;
|
|
509
|
-
this.canvas = null;
|
|
510
|
-
this.ctx = null;
|
|
511
|
-
this.video = null;
|
|
512
|
-
this.videoTrack = null;
|
|
513
|
-
this.audioTrack = null;
|
|
514
|
-
this.composite = null;
|
|
515
|
-
}
|
|
516
|
-
setVideoSource(stream) {
|
|
517
|
-
this.videoTrack = stream.getVideoTracks()[0] ?? null;
|
|
518
|
-
const video = this.video;
|
|
519
|
-
if (!video) return;
|
|
520
|
-
video.srcObject = new MediaStream(stream.getVideoTracks());
|
|
521
|
-
video.play().catch(() => {});
|
|
522
|
-
}
|
|
523
|
-
startDrawLoop() {
|
|
524
|
-
this.cancelDrawLoop();
|
|
525
|
-
this.lastDrawTimeMs = null;
|
|
526
|
-
this.lastVideoTimeSeconds = null;
|
|
527
|
-
const draw = (timeMs) => {
|
|
528
|
-
const elapsed = this.lastDrawTimeMs === null ? Infinity : timeMs - this.lastDrawTimeMs;
|
|
529
|
-
if ((this.frameIntervalMs === 0 || elapsed >= this.frameIntervalMs * FRAME_INTERVAL_TOLERANCE_RATIO) && this.drawCurrentFrame()) this.lastDrawTimeMs = timeMs;
|
|
530
|
-
this.scheduleNextFrame(draw);
|
|
531
|
-
};
|
|
532
|
-
this.scheduleNextFrame(draw);
|
|
533
|
-
}
|
|
534
|
-
scheduleNextFrame(callback) {
|
|
535
|
-
const video = this.video;
|
|
536
|
-
if (video && typeof video.requestVideoFrameCallback === "function") {
|
|
537
|
-
this.frameRequestKind = "video";
|
|
538
|
-
this.frameRequestId = video.requestVideoFrameCallback(callback);
|
|
539
|
-
return;
|
|
540
|
-
}
|
|
541
|
-
this.frameRequestKind = "animation";
|
|
542
|
-
this.frameRequestId = requestAnimationFrame(callback);
|
|
543
|
-
}
|
|
544
|
-
cancelDrawLoop() {
|
|
545
|
-
if (this.frameRequestId === null) return;
|
|
546
|
-
if (this.frameRequestKind === "video" && this.video && typeof this.video.cancelVideoFrameCallback === "function") this.video.cancelVideoFrameCallback(this.frameRequestId);
|
|
547
|
-
else cancelAnimationFrame(this.frameRequestId);
|
|
548
|
-
this.frameRequestId = null;
|
|
549
|
-
this.frameRequestKind = null;
|
|
550
|
-
}
|
|
551
|
-
drawCurrentFrame() {
|
|
552
|
-
const video = this.video;
|
|
553
|
-
const canvas = this.canvas;
|
|
554
|
-
const ctx = this.ctx;
|
|
555
|
-
if (!video || !canvas || !ctx || video.videoWidth <= 0) return false;
|
|
556
|
-
if (this.lastVideoTimeSeconds === video.currentTime) return false;
|
|
557
|
-
const dimensions = this.getBoundedDimensions(video.videoWidth, video.videoHeight);
|
|
558
|
-
if (canvas.width !== dimensions.width || canvas.height !== dimensions.height) {
|
|
559
|
-
canvas.width = dimensions.width;
|
|
560
|
-
canvas.height = dimensions.height;
|
|
561
|
-
}
|
|
562
|
-
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
|
|
563
|
-
this.lastVideoTimeSeconds = video.currentTime;
|
|
564
|
-
return true;
|
|
565
|
-
}
|
|
566
|
-
getBoundedDimensions(width, height) {
|
|
567
|
-
const longEdge = Math.max(width, height);
|
|
568
|
-
const shortEdge = Math.min(width, height);
|
|
569
|
-
const scale = Math.min(1, MAX_COMPOSITE_LONG_EDGE / longEdge, MAX_COMPOSITE_SHORT_EDGE / shortEdge);
|
|
570
|
-
return {
|
|
571
|
-
width: Math.max(1, Math.round(width * scale)),
|
|
572
|
-
height: Math.max(1, Math.round(height * scale))
|
|
573
|
-
};
|
|
574
|
-
}
|
|
575
|
-
};
|
|
576
|
-
//#endregion
|
|
577
438
|
//#region src/modules/video-selfie/videoSelfieCameraWarmer.ts
|
|
578
439
|
/**
|
|
579
440
|
* Acquire the camera for a Video Selfie step. The rear (`environment`) steps
|
|
@@ -609,8 +470,8 @@ function stopStream(stream) {
|
|
|
609
470
|
* camera (and whether it needs audio) is derived from the resolved step order —
|
|
610
471
|
* the same first acquire the recording machine performs on `START`.
|
|
611
472
|
*/
|
|
612
|
-
function createVideoSelfieCameraWarmer(config) {
|
|
613
|
-
const firstFacing = facingModeForStep(
|
|
473
|
+
function createVideoSelfieCameraWarmer(config, steps = resolveVideoSelfieSteps(config)) {
|
|
474
|
+
const firstFacing = facingModeForStep(steps[0] ?? "selfie");
|
|
614
475
|
let warming = null;
|
|
615
476
|
let warmed = null;
|
|
616
477
|
let consumed = false;
|
|
@@ -648,4 +509,4 @@ function createVideoSelfieCameraWarmer(config) {
|
|
|
648
509
|
};
|
|
649
510
|
}
|
|
650
511
|
//#endregion
|
|
651
|
-
export {
|
|
512
|
+
export { isConnectionError as a, delay as i, defaultAcquireCamera as n, isSelfieValidationError as o, createDefaultStepDetector as r, isWrongVideoSelfieIdSide as s, createVideoSelfieCameraWarmer as t };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { t as setup } from "./xstate.esm-BuFLFuzz.esm.js";
|
|
2
|
+
//#region src/modules/video-selfie/videoSelfieFlowModuleMachine.ts
|
|
3
|
+
/**
|
|
4
|
+
* Parked flow-module machine for the `VIDEO_ONBOARDING` step.
|
|
5
|
+
*
|
|
6
|
+
* The video-selfie UI component owns the entire capture / streaming / upload
|
|
7
|
+
* lifecycle (it creates its own {@link createVideoSelfieRecordingManager}) and
|
|
8
|
+
* signals completion to the flow via `flowManager.completeModule()`
|
|
9
|
+
* (`MODULE_COMPLETE`). This machine therefore only needs to hold the step open:
|
|
10
|
+
* it starts in a non-final `running` state and never transitions, so the
|
|
11
|
+
* orchestrated flow stays in `runningModule` until the UI advances it.
|
|
12
|
+
*
|
|
13
|
+
* **Completion contract:** the L2 `incode-video-selfie` web component calls
|
|
14
|
+
* `flowManager.completeModule()` once the recording manager reaches `finished`.
|
|
15
|
+
* Recoverable errors stay inside the module until the user retries.
|
|
16
|
+
*
|
|
17
|
+
* **Abort / unmount:** if the user closes the module or the web component
|
|
18
|
+
* unmounts before completion, the orchestrated flow manager's existing close /
|
|
19
|
+
* abort path (`MODULE_CLOSE` / session teardown) is responsible for exiting the
|
|
20
|
+
* step. This parked machine does not model those paths itself.
|
|
21
|
+
*
|
|
22
|
+
* Contrast {@link noOpFlowModuleMachine}, whose initial state is `final` — that
|
|
23
|
+
* is used for headless steps (e.g. `IP_ADDRESS`) that must complete instantly
|
|
24
|
+
* with no UI. Using a no-op here would skip the video-selfie UI entirely.
|
|
25
|
+
*/
|
|
26
|
+
const videoSelfieFlowModuleMachine = setup({}).createMachine({
|
|
27
|
+
id: "videoSelfieFlowModule",
|
|
28
|
+
initial: "running",
|
|
29
|
+
states: { running: {} }
|
|
30
|
+
});
|
|
31
|
+
//#endregion
|
|
32
|
+
export { videoSelfieFlowModuleMachine as t };
|
package/dist/{videoSelfieStepDetector-D3oo2ofo.d.ts → videoSelfieStepDetector-Co0Gu2k2.d.ts}
RENAMED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { i as FlowModuleConfig } from "./types-Do5rEXij.js";
|
|
2
|
+
import "./IWasmUtilCapability-CNWRl7jr.js";
|
|
3
|
+
import { n as DetectionStatus } from "./types-Bnl58jUQ.js";
|
|
1
4
|
import { t as CameraStream } from "./camera-9wWD-pwg.js";
|
|
2
|
-
import {
|
|
3
|
-
import { n as DetectionStatus } from "./types-Hmd7U0JA.js";
|
|
4
|
-
import { t as DetectionOrientation } from "./IIdCaptureCapability-DHTT3FC2.js";
|
|
5
|
+
import { t as DetectionOrientation } from "./IIdCaptureCapability-RNiFhvXR.js";
|
|
5
6
|
//#region src/modules/video-selfie/types.d.ts
|
|
6
7
|
/**
|
|
7
8
|
* The capture steps a Video Selfie session can run, in flow order. Which steps
|
|
@@ -15,10 +16,12 @@ type VideoSelfieStep = 'selfie' | 'frontId' | 'backId' | 'poa' | 'questions' | '
|
|
|
15
16
|
*
|
|
16
17
|
* The whole session is recorded on-device and streamed to the backend via S3
|
|
17
18
|
* multipart upload (`internal/recordings/multipartRecordingService`) — the
|
|
18
|
-
* client-side replacement for V1's server-side
|
|
19
|
+
* client-side replacement for V1's server-side recording. See
|
|
19
20
|
* `docs/features/VIDEO_SELFIE.md`.
|
|
20
21
|
*/
|
|
21
|
-
type VideoSelfieConfig = FlowModuleConfig['VIDEO_ONBOARDING']
|
|
22
|
+
type VideoSelfieConfig = FlowModuleConfig['VIDEO_ONBOARDING'] & {
|
|
23
|
+
steps?: VideoSelfieStep[];
|
|
24
|
+
};
|
|
22
25
|
//#endregion
|
|
23
26
|
//#region ../infra/src/capabilities/ICameraCapability.d.ts
|
|
24
27
|
type FacingMode = 'user' | 'environment';
|
|
@@ -26,14 +29,31 @@ type FacingMode = 'user' | 'environment';
|
|
|
26
29
|
//#region ../infra/src/media/CameraCompositor.d.ts
|
|
27
30
|
type CameraCompositorOptions = {
|
|
28
31
|
fps?: number;
|
|
32
|
+
resumeTimeoutMs?: number;
|
|
29
33
|
};
|
|
34
|
+
type CameraCompositorResumeResult = 'resumed' | 'video-ended' | 'audio-ended' | 'timed-out';
|
|
30
35
|
/**
|
|
31
|
-
* Composites the *active* camera into a
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
36
|
+
* Composites the *active* camera into a single, stable `MediaStream` to
|
|
37
|
+
* record. Switching cameras (front ↔ back) just repoints the source — the
|
|
38
|
+
* output stream and its audio track are never replaced — so a single
|
|
39
|
+
* `MediaRecorder` produces one continuous video that follows the camera
|
|
40
|
+
* switches (V1 parity), instead of restarting per camera.
|
|
41
|
+
*
|
|
42
|
+
* Two transports (ENG-55397):
|
|
43
|
+
* - **Worker (preferred, Chromium 94+):** camera track →
|
|
44
|
+
* `MediaStreamTrackProcessor` → worker scales on an `OffscreenCanvas` →
|
|
45
|
+
* `MediaStreamTrackGenerator`. The main thread is not in the frame path, so
|
|
46
|
+
* the recording stays at camera rate while the synchronous ID detection
|
|
47
|
+
* tick saturates the main thread (measured: 4–9 fps main-thread vs 30 fps
|
|
48
|
+
* worker on a Galaxy S21 under the same load).
|
|
49
|
+
* - **Main thread (fallback):** hidden `<video>` → rVFC/rAF → canvas →
|
|
50
|
+
* `captureStream`, for Safari, Firefox and strict-CSP hosts that block blob
|
|
51
|
+
* workers.
|
|
52
|
+
*
|
|
53
|
+
* A worker that dies mid-recording (GPU-process crash, OOM) is released at
|
|
54
|
+
* once; the composite track stays valid but receives no further frames, and
|
|
55
|
+
* the next `resume()` reports `timed-out` so the caller reacquires the camera
|
|
56
|
+
* instead of talking to a dead worker.
|
|
37
57
|
*
|
|
38
58
|
* The audio track from the initial stream is carried through unchanged across
|
|
39
59
|
* video switches, so there's no audio glitch when the camera flips.
|
|
@@ -41,16 +61,22 @@ type CameraCompositorOptions = {
|
|
|
41
61
|
declare class CameraCompositor {
|
|
42
62
|
private readonly fps;
|
|
43
63
|
private readonly frameIntervalMs;
|
|
64
|
+
private readonly resumeTimeoutMs;
|
|
44
65
|
private canvas;
|
|
45
66
|
private ctx;
|
|
46
67
|
private video;
|
|
68
|
+
private transport;
|
|
69
|
+
/** Worker-transport output track; outlives a crashed worker until stop(). */
|
|
70
|
+
private generator;
|
|
47
71
|
private frameRequestId;
|
|
48
72
|
private frameRequestKind;
|
|
73
|
+
private sourceExceedsTargetFps;
|
|
49
74
|
private lastDrawTimeMs;
|
|
50
75
|
private lastVideoTimeSeconds;
|
|
51
76
|
private audioTrack;
|
|
52
77
|
private videoTrack;
|
|
53
78
|
private composite;
|
|
79
|
+
private resumeWaiter;
|
|
54
80
|
constructor(options?: CameraCompositorOptions);
|
|
55
81
|
/**
|
|
56
82
|
* Begin compositing `stream` and return the composite stream to record. The
|
|
@@ -59,17 +85,37 @@ declare class CameraCompositor {
|
|
|
59
85
|
*/
|
|
60
86
|
start(stream: CameraStream): MediaStream;
|
|
61
87
|
/**
|
|
62
|
-
* Swap the camera feeding the
|
|
88
|
+
* Swap the camera feeding the composite without interrupting the composite
|
|
63
89
|
* stream. Pass a video-only stream (audio is kept from `start`). The previous
|
|
64
90
|
* video track is stopped.
|
|
65
91
|
*/
|
|
66
92
|
switchVideo(stream: CameraStream): void;
|
|
67
93
|
/** The composite stream being recorded, if compositing is active. */
|
|
68
94
|
get stream(): MediaStream | undefined;
|
|
69
|
-
/**
|
|
95
|
+
/** Pause source playback and drawing while the page is backgrounded. */
|
|
96
|
+
pause(): void;
|
|
97
|
+
/**
|
|
98
|
+
* Restart source playback and wait for a genuinely new camera frame to reach
|
|
99
|
+
* the stable composite stream. The caller must not resume encoding until
|
|
100
|
+
* this resolves with `resumed`.
|
|
101
|
+
*/
|
|
102
|
+
resume(signal?: AbortSignal): Promise<CameraCompositorResumeResult>;
|
|
103
|
+
/** Stop compositing and release the worker, canvas, audio and video tracks. */
|
|
70
104
|
stop(): void;
|
|
105
|
+
/**
|
|
106
|
+
* Worker transport. Returns `null` — and leaves nothing behind — when the
|
|
107
|
+
* browser lacks insertable streams or a strict `worker-src` CSP blocks blob
|
|
108
|
+
* workers, so `start` falls through to the main-thread path. Never throws.
|
|
109
|
+
*/
|
|
110
|
+
private startWorkerTransport;
|
|
111
|
+
/** Terminates the worker and frees its blob; idempotent. */
|
|
112
|
+
private releaseWorker;
|
|
113
|
+
private startMainThread;
|
|
114
|
+
private postToWorker;
|
|
115
|
+
private onWorkerMessage;
|
|
71
116
|
private setVideoSource;
|
|
72
117
|
private startDrawLoop;
|
|
118
|
+
private finishResume;
|
|
73
119
|
private scheduleNextFrame;
|
|
74
120
|
private cancelDrawLoop;
|
|
75
121
|
private drawCurrentFrame;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { t as api } from "./api-Bx3gKW_y.esm.js";
|
|
2
|
+
import { t as addDeviceStats } from "./stats-CZcy2J53.esm.js";
|
|
3
|
+
import { t as IncodeCanvas } from "./canvas-BxFzWTt-.esm.js";
|
|
4
|
+
//#region src/internal/virtualCameraCheck.ts
|
|
5
|
+
const frameSources = {
|
|
6
|
+
front: "FRONT_ID",
|
|
7
|
+
back: "BACK_ID",
|
|
8
|
+
selfie: "SELFIE"
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Sends the analyzed frame image to the backend for logging.
|
|
12
|
+
*/
|
|
13
|
+
async function logFrame({ source, base64Image, token }) {
|
|
14
|
+
try {
|
|
15
|
+
return (await api.post("/omni/log/frame/v2", { base64Image }, {
|
|
16
|
+
query: { source },
|
|
17
|
+
headers: { "X-Incode-Hardware-Id": token }
|
|
18
|
+
})).data;
|
|
19
|
+
} catch {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Runs the WASM virtual camera check and handles logging and stats.
|
|
25
|
+
*/
|
|
26
|
+
async function runVirtualCameraCheck({ wasmUtil, source, token }) {
|
|
27
|
+
const output = {
|
|
28
|
+
canvas: null,
|
|
29
|
+
itr: null,
|
|
30
|
+
skipped: null
|
|
31
|
+
};
|
|
32
|
+
await wasmUtil.poc(output);
|
|
33
|
+
if (output.skipped !== false) return;
|
|
34
|
+
if (output.canvas && token) {
|
|
35
|
+
const base64Image = new IncodeCanvas(output.canvas).getBase64Image();
|
|
36
|
+
if (base64Image) logFrame({
|
|
37
|
+
source,
|
|
38
|
+
base64Image,
|
|
39
|
+
token
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
if (output.itr === true) {
|
|
43
|
+
addDeviceStats({ virtualCameraDetected: true });
|
|
44
|
+
wasmUtil.setZc("FAIL");
|
|
45
|
+
} else if (output.itr === false) wasmUtil.setZc("PASS");
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { runVirtualCameraCheck as n, frameSources as t };
|