@incodetech/core 2.3.2 → 2.4.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 +1243 -3
- package/dist/Actor-DpTj5PFb.d.ts +1 -0
- package/dist/{BaseWasmProvider-Dyi6dKp1.d.ts → BaseWasmProvider-Bq3OHo7P.d.ts} +2 -2
- package/dist/BrowserDiagnosticsEnvelopeProvider-BQca6KPG.esm.js +43 -0
- package/dist/{FaceDetectionProvider-DtmtCKa9.esm.js → FaceDetectionProvider-BIImDZrc.esm.js} +125 -10
- package/dist/HttpRequestError-Bh0pNGSC.esm.js +35 -0
- package/dist/{IIdCaptureCapability-RNiFhvXR.d.ts → IIdCaptureCapability-CGcEt2Cw.d.ts} +2 -2
- package/dist/{IWasmUtilCapability-CNWRl7jr.d.ts → IWasmUtilCapability-GF2n7sfm.d.ts} +28 -5
- package/dist/{Manager-CQQ99QOI.d.ts → Manager-C9T5amUN.d.ts} +7 -1
- package/dist/{MotionSensorProvider-DyhbM4Si.esm.js → MotionSensorProvider-DYxh8TjR.esm.js} +1 -1
- package/dist/{ekycStateMachine-UeJRO8_p.esm.js → PhoneValidationProvider-SZiOS0jB.esm.js} +232 -827
- package/dist/{StreamCanvasCapture-_8gdW5Lk.d.ts → StreamCanvasCapture-7JRf-2ck.d.ts} +2 -2
- package/dist/{safeStorage-BdU9_m2E.esm.js → WasmUtilProvider-DtJuBdt-.esm.js} +111 -49
- package/dist/{addressSearch-DyHGgeX8.esm.js → addressSearch-DPjIKJrX.esm.js} +142 -4
- package/dist/{advanceableErrors-CpF2cBy6.esm.js → advanceableErrors-q_pfU3Cn.esm.js} +5 -4
- package/dist/ae-signature.d.ts +2 -2
- package/dist/ae-signature.esm.js +1 -1
- package/dist/antifraud.d.ts +1 -1
- package/dist/antifraud.esm.js +2 -2
- package/dist/{antifraudManager-DNkw66oW.esm.js → antifraudManager-CaweCYnY.esm.js} +3 -3
- package/dist/{antifraudManager-BY36bS12.d.ts → antifraudManager-DbGCvlJs.d.ts} +2 -2
- package/dist/{antifraudStateMachine-DBeq47D2.esm.js → antifraudStateMachine-DRl0UVyA.esm.js} +3 -4
- package/dist/{endpoints-B-3Q-LUw.esm.js → api-Cz90EHyu.esm.js} +151 -1
- package/dist/{apiError-CmGEmaGU.esm.js → apiError-D5u6HIDG.esm.js} +2 -1
- package/dist/authentication.d.ts +3 -3
- package/dist/authentication.esm.js +2 -2
- package/dist/{authenticationManager-CboRCl_N.d.ts → authenticationManager-BIZC55Bi.d.ts} +2 -8
- package/dist/{authenticationManager-BFjSjtQ_.esm.js → authenticationManager-CB3YW6EK.esm.js} +6 -6
- package/dist/{authenticationStateMachine-Dfo34ZiI.esm.js → authenticationStateMachine-BJJhLmdH.esm.js} +5 -6
- package/dist/avatar.d.ts +1 -1
- package/dist/{backCameraStream-B0-YgP_y.esm.js → backCameraStream-CMvXj4X4.esm.js} +1 -1
- package/dist/camera.esm.js +1 -1
- package/dist/certificate-issuance.d.ts +1 -1
- package/dist/certificate-issuance.esm.js +2 -2
- package/dist/{certificateIssuanceManager-C3-CI0_s.esm.js → certificateIssuanceManager-BfeMv2PU.esm.js} +3 -3
- package/dist/{certificateIssuanceManager-DCgEidHz.d.ts → certificateIssuanceManager-Dr8A4Lgr.d.ts} +2 -3
- package/dist/{certificateIssuanceStateMachine-CxqS_nD-.esm.js → certificateIssuanceStateMachine-Frgjbjw8.esm.js} +4 -5
- package/dist/consent.d.ts +1 -1
- package/dist/consent.esm.js +2 -2
- package/dist/{consentManager-B6E1XJDw.esm.js → consentManager-CvEu8h_W.esm.js} +3 -3
- package/dist/{consentManager-2h_w6wFc.d.ts → consentManager-Cv_0QKLD.d.ts} +7 -8
- package/dist/{consentStateMachine-DTSfdGiW.esm.js → consentStateMachine-DJTgN_-1.esm.js} +3 -4
- package/dist/{createCameraCycleOwnership-DnwTl1ad.esm.js → createCameraCycleOwnership-Dj_LHUvN.esm.js} +71 -66
- package/dist/{createFaceAvatar-BlcTYgJv.d.ts → createFaceAvatar-lYX0VTYs.d.ts} +1 -1
- package/dist/cross-document-data-match.d.ts +1 -1
- package/dist/cross-document-data-match.esm.js +1 -1
- package/dist/{crossDocumentDataMatchManager-9XhFVZ5S.esm.js → crossDocumentDataMatchManager-Cu141CE8.esm.js} +4 -5
- package/dist/{crossDocumentDataMatchManager-Dq8Z3SOg.d.ts → crossDocumentDataMatchManager-yCWCOzcU.d.ts} +2 -2
- package/dist/curp-validation.d.ts +1 -1
- package/dist/curp-validation.esm.js +2 -2
- package/dist/{curpValidationManager-DbIMYFcJ.esm.js → curpValidationManager-B-z9q5V3.esm.js} +15 -22
- package/dist/{curpValidationManager-DNuZn9fn.d.ts → curpValidationManager-C9sqoh9n.d.ts} +3 -3
- package/dist/{curpValidationStateMachine-g5kMfuLj.esm.js → curpValidationStateMachine-vDEFLMPw.esm.js} +4 -5
- package/dist/custom-fields.d.ts +1 -1
- package/dist/custom-fields.esm.js +1 -1
- package/dist/custom-watchlist.d.ts +1 -1
- package/dist/custom-watchlist.esm.js +2 -2
- package/dist/{customFieldsManager-8-W2KY4n.d.ts → customFieldsManager-CF-cO8ap.d.ts} +2 -2
- package/dist/{customFieldsManager-CzWZTkW-.esm.js → customFieldsManager-D1ex2cFM.esm.js} +4 -5
- package/dist/{customWatchlistManager-DWTED5Ur.esm.js → customWatchlistManager-CTI-SGk0.esm.js} +3 -3
- package/dist/{customWatchlistManager-PBWHr_oM.d.ts → customWatchlistManager-DolUswyR.d.ts} +2 -2
- package/dist/{customWatchlistStateMachine-DOQou6TW.esm.js → customWatchlistStateMachine-hmRd0f2I.esm.js} +3 -4
- package/dist/deepsightLoader-DZMdYSl-.esm.js +55 -0
- package/dist/{deepsightLoader-v-dLejS-.esm.js → deepsightService-tGP53cSS.esm.js} +51 -56
- package/dist/device.esm.js +1 -1
- package/dist/document-capture.d.ts +2 -2
- package/dist/document-capture.esm.js +2 -2
- package/dist/{documentCaptureManager-BRPxqYD2.esm.js → documentCaptureManager-DUJwpKC5.esm.js} +17 -18
- package/dist/{documentCaptureManager-lEtCM320.d.ts → documentCaptureManager-DkyDtm3Y.d.ts} +11 -34
- package/dist/{documentCaptureStateMachine-D312sSIu.esm.js → documentCaptureStateMachine-B8i7GnLh.esm.js} +55 -59
- package/dist/dynamic-forms.d.ts +2 -2
- package/dist/dynamic-forms.esm.js +2 -2
- package/dist/{dynamicFormsManager-C-9Jhnd3.esm.js → dynamicFormsManager-Bxmv_9PB.esm.js} +3 -3
- package/dist/{dynamicFormsManager-D5R_uxLQ.d.ts → dynamicFormsManager-C0dHs1ty.d.ts} +3 -3
- package/dist/{dynamicFormsStateMachine-DGI_F2PP.esm.js → dynamicFormsStateMachine-CoOWTzyM.esm.js} +4 -5
- package/dist/ekyb.d.ts +5 -5
- package/dist/ekyb.esm.js +3 -3
- package/dist/{ekybManager-DeoMcZEz.esm.js → ekybManager-BBkdPxUY.esm.js} +23 -27
- package/dist/{ekybManager-BwRuGAwt.d.ts → ekybManager-BaZ_7CEu.d.ts} +4 -4
- package/dist/{ekybStateMachine-D1IJ1Z72.esm.js → ekybStateMachine-n4Iz9iLc.esm.js} +338 -14
- package/dist/ekyc.d.ts +2 -2
- package/dist/ekyc.esm.js +3 -3
- package/dist/{ekycManager-BX2d46FY.esm.js → ekycManager-BO-Lui3t.esm.js} +29 -36
- package/dist/{ekycManager-DLzDuBzI.d.ts → ekycManager-DW-ynodd.d.ts} +3 -3
- package/dist/ekycStateMachine-CDnI_NRq.esm.js +1443 -0
- package/dist/{ekycUtils-D6wfSpPN.esm.js → ekycUtils-zY8CdKJL.esm.js} +53 -3
- package/dist/electronic-signature.d.ts +1 -1
- package/dist/electronic-signature.esm.js +1 -1
- package/dist/{electronicSignatureManager-yYUc30na.esm.js → electronicSignatureManager-BtWCrz5_.esm.js} +10 -11
- package/dist/{electronicSignatureManager-Ds-KEVTq.d.ts → electronicSignatureManager-DTSLOvKR.d.ts} +2 -3
- package/dist/email.d.ts +1 -1
- package/dist/email.esm.js +2 -2
- package/dist/{emailManager-bR1N5rV_.esm.js → emailManager-ButFktRm.esm.js} +20 -26
- package/dist/{emailManager-CADXW_9X.d.ts → emailManager-Dy6omJVp.d.ts} +2 -2
- package/dist/{emailStateMachine-Bc_6oIYw.esm.js → emailStateMachine-BXtlC0NV.esm.js} +3 -4
- package/dist/{events-ijlbX_Wx.esm.js → events-Du2A4-Qr.esm.js} +203 -8
- package/dist/events.d.ts +3 -2
- package/dist/events.esm.js +1 -1
- package/dist/extensibility.d.ts +38 -38
- package/dist/extensibility.esm.js +36 -36
- package/dist/{externalFetch-BKBThAUC.esm.js → externalFetch-DrR9xshk.esm.js} +3 -2
- package/dist/face-match.d.ts +1 -1
- package/dist/face-match.esm.js +2 -2
- package/dist/{faceCaptureManagerFactory-m-7ae67q.d.ts → faceCaptureManagerFactory-1hzeS_rB.d.ts} +11 -51
- package/dist/{faceCaptureManagerFactory-B6i9QcAk.esm.js → faceCaptureManagerFactory-CwZUeYfq.esm.js} +19 -54
- package/dist/{faceCaptureSetup-DU1mjRr6.esm.js → faceCaptureSetup-CYbdKNlI.esm.js} +104 -396
- package/dist/{faceMatchManager-BnvrZM2F.d.ts → faceMatchManager-DIgG-UFS.d.ts} +1 -2
- package/dist/{faceMatchManager-Bmv0HzuY.esm.js → faceMatchManager-DWFUQjMQ.esm.js} +3 -3
- package/dist/{faceMatchStateMachine-mRIHQ3dA.esm.js → faceMatchStateMachine-CUCvlydD.esm.js} +6 -5
- package/dist/{feature-management-C8CuN0os.esm.js → feature-management-rTfjzdDa.esm.js} +3 -3
- package/dist/feature-management.esm.js +1 -1
- package/dist/field-comparison.d.ts +2 -2
- package/dist/field-comparison.esm.js +1 -1
- package/dist/{fieldComparisonManager-CBvEGxFx.d.ts → fieldComparisonManager-CUX4gza2.d.ts} +6 -3
- package/dist/{fieldComparisonManager-CC-klG0h.esm.js → fieldComparisonManager-v3knTYV_.esm.js} +35 -18
- package/dist/fiscal-qr.d.ts +1 -1
- package/dist/fiscal-qr.esm.js +1 -1
- package/dist/{fiscalQrManager-B1STmT6z.d.ts → fiscalQrManager-D0Iy7EKR.d.ts} +2 -2
- package/dist/fiscalQrManager-Dt9fHG7h.esm.js +6798 -0
- package/dist/flow-events.d.ts +1 -1
- package/dist/flow.d.ts +14 -13
- package/dist/flow.esm.js +14 -14
- package/dist/{flowCompletionService-DccgtDnm.esm.js → flowCompletionService-oiK1PjPr.esm.js} +2 -3
- package/dist/{flowServices-CdsWsppG.esm.js → flowServices-CTc-zqfN.esm.js} +11 -8
- package/dist/geolocation.d.ts +1 -1
- package/dist/geolocation.esm.js +2 -2
- package/dist/{geolocationManager-CGHBxtMb.esm.js → geolocationManager-BOdtVuR8.esm.js} +6 -7
- package/dist/{geolocationManager-Cz744E5S.d.ts → geolocationManager-Dn24g1fl.d.ts} +2 -3
- package/dist/{geolocationStateMachine-CdEb1Gn0.esm.js → geolocationStateMachine-BnGuZ3hn.esm.js} +4 -5
- package/dist/{getDeviceClass-5NYZg9s6.esm.js → getDeviceClass-bsWdEDxP.esm.js} +1 -1
- package/dist/{getParsedUserAgent-B2iFDql1.esm.js → getParsedUserAgent-DhQPeKqw.esm.js} +1 -1
- package/dist/government-validation.d.ts +1 -1
- package/dist/government-validation.esm.js +2 -2
- package/dist/{governmentValidationManager-D02vT4yY.d.ts → governmentValidationManager-B82zOut8.d.ts} +3 -3
- package/dist/{governmentValidationManager-CacFOtKO.esm.js → governmentValidationManager-BtXWHICu.esm.js} +3 -3
- package/dist/{governmentValidationStateMachine-CoaZOSTP.esm.js → governmentValidationStateMachine-COL-Vs48.esm.js} +3 -4
- package/dist/home.d.ts +3 -26
- package/dist/home.esm.js +2 -2
- package/dist/http.esm.js +1 -1
- package/dist/id-ocr.d.ts +1 -1
- package/dist/id-ocr.esm.js +2 -2
- package/dist/id-selfie-flow.d.ts +6 -9
- package/dist/id-selfie-flow.esm.js +23 -28
- package/dist/id-verification.d.ts +1 -1
- package/dist/id-verification.esm.js +2 -2
- package/dist/id.d.ts +4 -4
- package/dist/id.esm.js +4 -205
- package/dist/{idCaptureDefaults-Dl64Trv5.esm.js → idCaptureDefaults-BGsG2OAs.esm.js} +7 -5
- package/dist/{idCaptureManager-BHwL2Z0V.d.ts → idCaptureManager-0M02hSuC.d.ts} +242 -98
- package/dist/{idCaptureManager-BNmVJQkd.esm.js → idCaptureManager-BKedt48Y.esm.js} +276 -210
- package/dist/{idCaptureServices-dtDG2HXS.esm.js → idCaptureServices-D0p_RFqk.esm.js} +21 -40
- package/dist/{idCaptureStateMachine-BbiZD3uf.esm.js → idCaptureStateMachine-CxwoN5ff.esm.js} +992 -872
- package/dist/{idOcrManager-ByWuQ4ej.esm.js → idOcrManager-D3-HNMXP.esm.js} +3 -3
- package/dist/{idOcrManager-CFlDwUvN.d.ts → idOcrManager-DT3kPIB3.d.ts} +3 -4
- package/dist/{idOcrStateMachine-Bt_abXQQ.esm.js → idOcrStateMachine-DyENX6Ki.esm.js} +3 -4
- package/dist/{idVerificationManager-BB4Pj_N6.d.ts → idVerificationManager-BJapZfpy.d.ts} +2 -3
- package/dist/{idVerificationManager-DT42c77H.esm.js → idVerificationManager-iWz7Avkr.esm.js} +3 -3
- package/dist/{idVerificationStateMachine-DbDVIh9t.esm.js → idVerificationStateMachine-CL1kUdBe.esm.js} +3 -4
- package/dist/identity-reuse.d.ts +2 -2
- package/dist/identity-reuse.esm.js +2 -2
- package/dist/{identityReuseManager-BXEBBI3N.d.ts → identityReuseManager-B1birg5X.d.ts} +162 -44
- package/dist/{identityReuseManager-yG3acUrQ.esm.js → identityReuseManager-CD1ucp1d.esm.js} +26 -13
- package/dist/{identityReuseStateMachine-BhAkuIra.esm.js → identityReuseStateMachine-DfV81wQC.esm.js} +89 -24
- package/dist/{index-CeaC32qI.d.ts → index-CKQ9QBZP.d.ts} +2 -2
- package/dist/index-DpTj5PFb.d.ts +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/{invokeOnCaptureCallback-BjzPjJ_p.esm.js → invokeOnCaptureCallback-DYrkOXO6.esm.js} +1 -1
- package/dist/lamejs-B6TzhU5q.esm.js +10 -0
- package/dist/mandatory-consent.d.ts +2 -2
- package/dist/mandatory-consent.esm.js +2 -2
- package/dist/{mandatoryConsentManager-7dI0D08q.esm.js → mandatoryConsentManager-Cwqx1nK7.esm.js} +3 -3
- package/dist/{mandatoryConsentManager-DFVm_i2B.d.ts → mandatoryConsentManager-okPILEru.d.ts} +8 -9
- package/dist/{mandatoryConsentStateMachine-DC5Mo6M1.esm.js → mandatoryConsentStateMachine-pXWqAHo_.esm.js} +3 -4
- package/dist/{multipartRecordingService-mwKFTlhR.esm.js → multipartRecordingService-CLwrF5wD.esm.js} +1 -2
- package/dist/{permissionGuards-D6TfVop2.esm.js → permissionGuards-gcy3U0SL.esm.js} +1 -1
- package/dist/{permissionServices-EY3_Vx6c.esm.js → permissionServices-Ca-tSNhT.esm.js} +34 -3
- package/dist/phone-number.d.ts +24 -0
- package/dist/phone-number.esm.js +1922 -0
- package/dist/phone.d.ts +1 -1
- package/dist/phone.esm.js +2 -2
- package/dist/{phoneManager-BBU8Lq0O.d.ts → phoneManager-BO-LTih5.d.ts} +16 -3
- package/dist/{phoneManager-IjhSv5XS.esm.js → phoneManager-KKUq-Vgo.esm.js} +31 -22
- package/dist/{phoneStateMachine-CXdXufKg.esm.js → phoneStateMachine-D2QWS2cu.esm.js} +38 -20
- package/dist/phoneValidation-DnBcNUNh.esm.js +48 -0
- package/dist/qe-signature.d.ts +2 -2
- package/dist/qe-signature.esm.js +1 -1
- package/dist/redirect-to-mobile.d.ts +1 -1
- package/dist/redirect-to-mobile.esm.js +2 -2
- package/dist/{redirectToMobileManager-BD2PvT5B.d.ts → redirectToMobileManager-CVsvpVbQ.d.ts} +2 -2
- package/dist/{redirectToMobileManager-FLEWJtv8.esm.js → redirectToMobileManager-uHW3dyuQ.esm.js} +4 -4
- package/dist/{redirectToMobileStateMachine-CSWWgUTO.esm.js → redirectToMobileStateMachine-b-H-ipGM.esm.js} +4 -5
- package/dist/{rolldown-runtime-FDOR9p9I.esm.js → rolldown-runtime-B-1-B7_t.esm.js} +10 -1
- package/dist/{runChildModule-B2Y_hlix.esm.js → runChildModule-CPa0i2_C.esm.js} +13 -12
- package/dist/safeStorage-UxDrnjwa.esm.js +35 -0
- package/dist/{sdkVersion-N1UiyFiY.esm.js → sdkVersion-BtROs6OA.esm.js} +1 -1
- package/dist/selfie.d.ts +4 -4
- package/dist/selfie.esm.js +12 -12
- package/dist/selfieErrorUtils-sMc0MaNh.esm.js +21 -0
- package/dist/{selfieManager-BSZG891S.d.ts → selfieManager-BJdNu_nd.d.ts} +2 -8
- package/dist/{selfieManager-AS6wfUvZ.esm.js → selfieManager-Ch9xJbWJ.esm.js} +6 -6
- package/dist/selfieStateMachine-DT8QCfKR.esm.js +41 -0
- package/dist/{session-BESZc05k.esm.js → session-CNNTckUS.esm.js} +5 -6
- package/dist/session.d.ts +15 -3
- package/dist/session.esm.js +30 -5
- package/dist/sessionInitializer-DVWMJh25.esm.js +973 -0
- package/dist/{setup-BuPbxpwF.esm.js → setup-B7ehQ-lf.esm.js} +155 -140
- package/dist/{setup-Cyko6cAn.d.ts → setup-YPKTUCY5.d.ts} +42 -15
- package/dist/signature.d.ts +1 -1
- package/dist/signature.esm.js +2 -2
- package/dist/{signatureManager-DGBSWz2_.d.ts → signatureManager-BpVt_Jv7.d.ts} +2 -2
- package/dist/{signatureManager-B72np4ZO.esm.js → signatureManager-f_dPAGXn.esm.js} +7 -11
- package/dist/{signatureStateMachine-ce_XMA3l.esm.js → signatureStateMachine-C-nUq_oq.esm.js} +3 -4
- package/dist/splitTrackedName-3zJRd2RD.esm.js +19 -0
- package/dist/{src-35ekGRzK.esm.js → src-DJAJjRYQ.esm.js} +1 -1
- package/dist/{stats-CZcy2J53.esm.js → stats-BEvexnKC.esm.js} +1 -2
- package/dist/stats.esm.js +1 -1
- package/dist/{sessionInitializer-CnhAkMUN.esm.js → thumbmark.esm-CRc0cYvz.esm.js} +33 -776
- package/dist/{trueSightService-M5VpCo96.esm.js → trueSightService-BzLdXpmJ.esm.js} +1391 -709
- package/dist/trust-graph.d.ts +1 -2
- package/dist/trust-graph.esm.js +2 -2
- package/dist/{types-C0oWGUzg.d.ts → types-0L-eFDmr.d.ts} +1 -1
- package/dist/{types-C1g9itHE.d.ts → types-B6HsSzpk.d.ts} +6 -7
- package/dist/{types-DEGVXwsk2.d.ts → types-BAxn7MpY.d.ts} +110 -62
- package/dist/{types-BfgmV7s7.d.ts → types-BQA7lRDV.d.ts} +1 -1
- package/dist/{types-Cx-1zo-i.d.ts → types-BvLo3U4u.d.ts} +1 -1
- package/dist/{types-Bx-BWveD.d.ts → types-CK8Jbjkp.d.ts} +1 -1
- package/dist/{types-CxGdmzxa.d.ts → types-Ckir_BEs.d.ts} +1 -1
- package/dist/{types-BjSly8cp.d.ts → types-DUnFZ08M.d.ts} +1 -1
- package/dist/{types-ESdtnHtg.d.ts → types-yPH8lAH-.d.ts} +3 -4
- package/dist/types-zOgZqMni.d.ts +6 -0
- package/dist/{urlUtils-D6phjq1-.esm.js → urlUtils-6jsE6rKp.esm.js} +9 -1
- package/dist/video-selfie.d.ts +6 -9
- package/dist/video-selfie.esm.js +1390 -1349
- package/dist/{videoSelfieCameraWarmer-q9ZjvXu9.esm.js → videoSelfieCameraWarmer-DWoFBJAn.esm.js} +10 -11
- package/dist/{videoSelfieFlowModuleMachine-BUe2uACW.esm.js → videoSelfieFlowModuleMachine-BCFVHBQ1.esm.js} +1 -1
- package/dist/{videoSelfieStepDetector-ChYgFM15.d.ts → videoSelfieStepDetector-CGsTltqB.d.ts} +4 -4
- package/dist/videoTrimByCopy-BFfAiNpv.esm.js +15901 -0
- package/dist/{warmup-ChDwHSel.esm.js → warmup-BElYWRh7.esm.js} +348 -11
- package/dist/{warmup-Cis2p6O0.d.ts → warmup-BO57syF6.d.ts} +8 -0
- package/dist/wasm.d.ts +2 -2
- package/dist/wasm.esm.js +3 -4
- package/dist/{wasmDsFlagSync-DYrLUEII.esm.js → wasmDsFlagSync-CYj5LL9z.esm.js} +1 -1
- package/dist/{wasmWebClient-B7baE-Wf.esm.js → wasmWebClient-BjZw_7OB.esm.js} +570 -33
- package/dist/watchlist-for-business.d.ts +1 -1
- package/dist/watchlist-for-business.esm.js +2 -2
- package/dist/watchlist.d.ts +1 -1
- package/dist/watchlist.esm.js +2 -2
- package/dist/{watchlistForBusinessManager-CsnJnG-C.d.ts → watchlistForBusinessManager-B3GDPZrr.d.ts} +2 -2
- package/dist/{watchlistForBusinessManager-CIMkpEhu.esm.js → watchlistForBusinessManager-CZZOFkGl.esm.js} +7 -5
- package/dist/{watchlistForBusinessStateMachine-CJ-MvUre.esm.js → watchlistForBusinessStateMachine-B66E7jud.esm.js} +3 -4
- package/dist/{watchlistManager-DLXef90v.d.ts → watchlistManager-DJQOd8Pw.d.ts} +2 -2
- package/dist/{watchlistManager-CixcLNDT.esm.js → watchlistManager-DXtX94SN.esm.js} +3 -3
- package/dist/{watchlistStateMachine-CBqk2w-h.esm.js → watchlistStateMachine-McALifag.esm.js} +3 -4
- package/dist/workflow.d.ts +34 -5
- package/dist/workflow.esm.js +64 -47
- package/dist/{xstate-actors.esm-BXeQ-Ucz.esm.js → xstate-actors.esm-8Gzepa_A.esm.js} +1 -1
- package/dist/{xstate.esm-BuFLFuzz.esm.js → xstate.esm-DSajW7CJ.esm.js} +24 -10
- package/package.json +13 -5
- package/dist/Actor-iTq7YY48.d.ts +0 -1
- package/dist/BrowserDiagnosticsCryptoProvider-BuzqvbhN.esm.js +0 -77
- package/dist/StateMachine-EDpYWy0i.d.ts +0 -6
- package/dist/api-Bx3gKW_y.esm.js +0 -129
- package/dist/fiscalQrManager-DbCVMIBx.esm.js +0 -34143
- package/dist/index-B8weJxmL.d.ts +0 -1
- package/dist/selfieErrorUtils-UiQ46EBa.esm.js +0 -116
- package/dist/selfieStateMachine-DY7vJVNY.esm.js +0 -71
- package/dist/types-BN5RPPIZ.esm.js +0 -34
- package/dist/types-Bt9RuRqt.d.ts +0 -6
- package/dist/virtualCameraCheck-Cjab7FTI.esm.js +0 -48
- /package/dist/{types-BSBzhHRH.d.ts → types-BSBzhHRH2.d.ts} +0 -0
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import { l as trueSightLog, m as isTrueSightTesting } from "./trueSightService-M5VpCo96.esm.js";
|
|
2
1
|
import { t as getTimestamp } from "./IBrowserEnvironmentCapability-DEaRRk-R.esm.js";
|
|
3
|
-
import { r as getToken, t as api } from "./api-
|
|
4
|
-
import "./
|
|
5
|
-
import
|
|
6
|
-
import { t as addDeviceStats } from "./stats-
|
|
7
|
-
import { t as
|
|
8
|
-
import { i as assign, n as enqueueActions, r as sendTo, t as setup } from "./xstate.esm-
|
|
9
|
-
import { n as fromPromise, t as fromCallback } from "./xstate-actors.esm-
|
|
10
|
-
import { n as invokeRequestPermissionActor, t as checkPermission } from "./permissionServices-
|
|
11
|
-
import { a as sendLabelInspectionEvent, i as initializeDeepsightSession, r as initializeCamera, s as stopStream, t as FaceDetectionProvider } from "./FaceDetectionProvider-
|
|
12
|
-
import { t as
|
|
13
|
-
import { a as flagFaceManualReview, i as imageFileToDataUrl, n as runProtectedAttempt, r as cameraCycleProvider, s as PROTECTED_CAPTURE_TARGET, t as createCameraCycleOwnership } from "./createCameraCycleOwnership-DnwTl1ad.esm.js";
|
|
2
|
+
import { r as getToken, t as api, u as endpoints } from "./api-Cz90EHyu.esm.js";
|
|
3
|
+
import { l as trueSightHintTransition, r as noteTrueSightCaptureActivity, u as trueSightLog, y as isTrueSightTesting } from "./trueSightService-BzLdXpmJ.esm.js";
|
|
4
|
+
import "./sessionInitializer-DVWMJh25.esm.js";
|
|
5
|
+
import { t as addDeviceStats } from "./stats-BEvexnKC.esm.js";
|
|
6
|
+
import { t as BrowserLazyImportProvider } from "./BrowserLazyImportProvider-BhoA957O.esm.js";
|
|
7
|
+
import { i as assign, n as enqueueActions, r as sendTo, t as setup } from "./xstate.esm-DSajW7CJ.esm.js";
|
|
8
|
+
import { n as fromPromise, t as fromCallback } from "./xstate-actors.esm-8Gzepa_A.esm.js";
|
|
9
|
+
import { n as invokeRequestPermissionActor, t as checkPermission } from "./permissionServices-Ca-tSNhT.esm.js";
|
|
10
|
+
import { a as sendLabelInspectionEvent, d as FACE_ERROR_CODES, i as initializeDeepsightSession, r as initializeCamera, s as stopStream, t as FaceDetectionProvider, u as getFaceUploadErrorCode } from "./FaceDetectionProvider-BIImDZrc.esm.js";
|
|
11
|
+
import { i as flagFaceManualReview, n as runProtectedAttempt, o as PROTECTED_CAPTURE_TARGET, r as cameraCycleProvider, t as createCameraCycleOwnership } from "./createCameraCycleOwnership-Dj_LHUvN.esm.js";
|
|
14
12
|
import { n as releaseFaceAvatarWarmup, r as warmFaceAvatar, t as createFaceAvatar } from "./createFaceAvatar-BNHdeFj8.esm.js";
|
|
15
13
|
import { t as IncodeCanvas } from "./canvas-BxFzWTt-.esm.js";
|
|
16
|
-
import { n as needsMotionPrimeOnlyFromPermission, r as resolveStoredPermissionResult, t as isReadyForCaptureFromPermission } from "./permissionGuards-
|
|
17
|
-
import { a as getAdaptiveMediaRecorderOptions, i as createRecordingCompositor, n as WorkerEncoderRecordingProvider, t as MultipartRecordingService } from "./multipartRecordingService-
|
|
18
|
-
import { t as getDeviceClass } from "./getDeviceClass-
|
|
14
|
+
import { n as needsMotionPrimeOnlyFromPermission, r as resolveStoredPermissionResult, t as isReadyForCaptureFromPermission } from "./permissionGuards-gcy3U0SL.esm.js";
|
|
15
|
+
import { a as getAdaptiveMediaRecorderOptions, i as createRecordingCompositor, n as WorkerEncoderRecordingProvider, t as MultipartRecordingService } from "./multipartRecordingService-CLwrF5wD.esm.js";
|
|
16
|
+
import { t as getDeviceClass } from "./getDeviceClass-bsWdEDxP.esm.js";
|
|
19
17
|
//#region src/internal/avatar/concealment.ts
|
|
20
18
|
/**
|
|
21
19
|
* Maps a backend concealment option to the internal avatar flags. `OPTION_NONE`
|
|
@@ -46,234 +44,6 @@ function concealmentToAvatar(option) {
|
|
|
46
44
|
}
|
|
47
45
|
}
|
|
48
46
|
//#endregion
|
|
49
|
-
//#region src/internal/faceCapture/manualUpload/errors.ts
|
|
50
|
-
/**
|
|
51
|
-
* Reuses the `notifications.*` copy that `errorModal.tsx` shows for the same
|
|
52
|
-
* codes on the camera path, plus the ID manual-upload keys. Only the `title`
|
|
53
|
-
* half of each notification pair is used — the inline error is one line.
|
|
54
|
-
*/
|
|
55
|
-
const MANUAL_FACE_UPLOAD_ERROR_KEYS = {
|
|
56
|
-
/** The one new string; ID accepts any image type so there was none to reuse. */
|
|
57
|
-
typeError: "selfiev2.manualUpload.typeError",
|
|
58
|
-
fileTooBig: "manualIdUpload.fileTooBig",
|
|
59
|
-
generic: "manualIdUpload.generic",
|
|
60
|
-
faceNotFound: "notifications.faceNotFound",
|
|
61
|
-
multipleFaces: "notifications.multiple",
|
|
62
|
-
lowQualityImage: "notifications.lowQualityImage",
|
|
63
|
-
brightness: "notifications.brightness",
|
|
64
|
-
lenses: "notifications.lenses",
|
|
65
|
-
mask: "notifications.mask",
|
|
66
|
-
removeHeadwear: "notifications.removeHeadwear",
|
|
67
|
-
closedEyes: "notifications.closedEyes",
|
|
68
|
-
spoof: "notifications.spoof",
|
|
69
|
-
accessDenied: "notifications.accessDenied",
|
|
70
|
-
nonexistentCustomer: "notifications.nonexistentCustomer",
|
|
71
|
-
hintNotProvided: "notifications.hintNotProvided",
|
|
72
|
-
selfieImageLowQuality: "notifications.selfieImageLowQuality"
|
|
73
|
-
};
|
|
74
|
-
/** Mirrors `errorContent` in `errorModal.tsx`; omissions resolve to `generic`. */
|
|
75
|
-
const ERROR_KEY_BY_FACE_ERROR_CODE = {
|
|
76
|
-
[FACE_ERROR_CODES.FACE_NOT_FOUND]: MANUAL_FACE_UPLOAD_ERROR_KEYS.faceNotFound,
|
|
77
|
-
[FACE_ERROR_CODES.MULTIPLE_FACES]: MANUAL_FACE_UPLOAD_ERROR_KEYS.multipleFaces,
|
|
78
|
-
[FACE_ERROR_CODES.BAD_PHOTO_QUALITY]: MANUAL_FACE_UPLOAD_ERROR_KEYS.lowQualityImage,
|
|
79
|
-
[FACE_ERROR_CODES.SELFIE_IMAGE_LOW_QUALITY]: MANUAL_FACE_UPLOAD_ERROR_KEYS.selfieImageLowQuality,
|
|
80
|
-
[FACE_ERROR_CODES.BRIGHTNESS]: MANUAL_FACE_UPLOAD_ERROR_KEYS.brightness,
|
|
81
|
-
[FACE_ERROR_CODES.FACE_TOO_DARK]: MANUAL_FACE_UPLOAD_ERROR_KEYS.brightness,
|
|
82
|
-
[FACE_ERROR_CODES.LENSES]: MANUAL_FACE_UPLOAD_ERROR_KEYS.lenses,
|
|
83
|
-
[FACE_ERROR_CODES.LENSES_DETECTED]: MANUAL_FACE_UPLOAD_ERROR_KEYS.lenses,
|
|
84
|
-
[FACE_ERROR_CODES.MASK]: MANUAL_FACE_UPLOAD_ERROR_KEYS.mask,
|
|
85
|
-
[FACE_ERROR_CODES.FACE_MASK_DETECTED]: MANUAL_FACE_UPLOAD_ERROR_KEYS.mask,
|
|
86
|
-
[FACE_ERROR_CODES.HEAD_COVER]: MANUAL_FACE_UPLOAD_ERROR_KEYS.removeHeadwear,
|
|
87
|
-
[FACE_ERROR_CODES.HEAD_COVER_DETECTED]: MANUAL_FACE_UPLOAD_ERROR_KEYS.removeHeadwear,
|
|
88
|
-
[FACE_ERROR_CODES.CLOSED_EYES]: MANUAL_FACE_UPLOAD_ERROR_KEYS.closedEyes,
|
|
89
|
-
[FACE_ERROR_CODES.CLOSED_EYES_DETECTED]: MANUAL_FACE_UPLOAD_ERROR_KEYS.closedEyes,
|
|
90
|
-
[FACE_ERROR_CODES.LIVENESS]: MANUAL_FACE_UPLOAD_ERROR_KEYS.spoof,
|
|
91
|
-
[FACE_ERROR_CODES.SPOOF_ATTEMPT_DETECTED]: MANUAL_FACE_UPLOAD_ERROR_KEYS.spoof,
|
|
92
|
-
[FACE_ERROR_CODES.FACE_TOO_BLURRY]: MANUAL_FACE_UPLOAD_ERROR_KEYS.spoof,
|
|
93
|
-
[FACE_ERROR_CODES.USER_IS_NOT_RECOGNIZED]: MANUAL_FACE_UPLOAD_ERROR_KEYS.accessDenied,
|
|
94
|
-
[FACE_ERROR_CODES.NONEXISTENT_CUSTOMER]: MANUAL_FACE_UPLOAD_ERROR_KEYS.nonexistentCustomer,
|
|
95
|
-
[FACE_ERROR_CODES.HINT_NOT_PROVIDED]: MANUAL_FACE_UPLOAD_ERROR_KEYS.hintNotProvided
|
|
96
|
-
};
|
|
97
|
-
function mapFaceErrorCodeToErrorKey(code) {
|
|
98
|
-
if (!code) return MANUAL_FACE_UPLOAD_ERROR_KEYS.generic;
|
|
99
|
-
return ERROR_KEY_BY_FACE_ERROR_CODE[code] ?? MANUAL_FACE_UPLOAD_ERROR_KEYS.generic;
|
|
100
|
-
}
|
|
101
|
-
/** Enforced in core because the picker's `accept` filter is bypassable. */
|
|
102
|
-
const MANUAL_FACE_UPLOAD_ACCEPTED_MIME_TYPES = ["image/png", "image/jpeg"];
|
|
103
|
-
//#endregion
|
|
104
|
-
//#region src/internal/faceCapture/manualUpload/prepareFile.ts
|
|
105
|
-
const isAcceptedMimeType = (type) => MANUAL_FACE_UPLOAD_ACCEPTED_MIME_TYPES.includes(type);
|
|
106
|
-
const stripDataUrlPrefix = (dataUrl) => {
|
|
107
|
-
const commaIndex = dataUrl.indexOf(",");
|
|
108
|
-
return commaIndex === -1 ? dataUrl : dataUrl.slice(commaIndex + 1);
|
|
109
|
-
};
|
|
110
|
-
/** Duplicated from the ID manual upload; consolidate if a third caller appears. */
|
|
111
|
-
const getBase64PayloadByteLength = (payload) => {
|
|
112
|
-
const normalized = payload.replace(/\s/g, "");
|
|
113
|
-
let padding = 0;
|
|
114
|
-
if (normalized.endsWith("==")) padding = 2;
|
|
115
|
-
else if (normalized.endsWith("=")) padding = 1;
|
|
116
|
-
return Math.max(0, Math.floor(normalized.length * 3 / 4) - padding);
|
|
117
|
-
};
|
|
118
|
-
/**
|
|
119
|
-
* Every client-side check, run before any network call so a rejection here
|
|
120
|
-
* never costs the user a retry.
|
|
121
|
-
*/
|
|
122
|
-
async function prepareManualFaceUpload(file) {
|
|
123
|
-
if (!isAcceptedMimeType(file.type)) return {
|
|
124
|
-
ok: false,
|
|
125
|
-
errorKey: MANUAL_FACE_UPLOAD_ERROR_KEYS.typeError
|
|
126
|
-
};
|
|
127
|
-
if (file.size > 5242880) return {
|
|
128
|
-
ok: false,
|
|
129
|
-
errorKey: MANUAL_FACE_UPLOAD_ERROR_KEYS.fileTooBig
|
|
130
|
-
};
|
|
131
|
-
const base64Image = stripDataUrlPrefix(await imageFileToDataUrl(file));
|
|
132
|
-
if (getBase64PayloadByteLength(base64Image) > 5242880) return {
|
|
133
|
-
ok: false,
|
|
134
|
-
errorKey: MANUAL_FACE_UPLOAD_ERROR_KEYS.fileTooBig
|
|
135
|
-
};
|
|
136
|
-
return {
|
|
137
|
-
ok: true,
|
|
138
|
-
base64Image
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
//#endregion
|
|
142
|
-
//#region src/internal/faceCapture/manualUpload/manualFaceUploadStateMachine.ts
|
|
143
|
-
const prepareFileActor = fromPromise(async ({ input }) => prepareManualFaceUpload(input.file));
|
|
144
|
-
const getPreparedFromEvent = (event) => "output" in event ? event.output : void 0;
|
|
145
|
-
const getErrorMessageFromEvent = (event) => {
|
|
146
|
-
const { error } = event;
|
|
147
|
-
if (error instanceof Error) return error.message;
|
|
148
|
-
return typeof error === "string" ? error : "";
|
|
149
|
-
};
|
|
150
|
-
const manualFaceUploadMachine = setup({
|
|
151
|
-
types: {
|
|
152
|
-
context: {},
|
|
153
|
-
events: {},
|
|
154
|
-
input: {},
|
|
155
|
-
output: {}
|
|
156
|
-
},
|
|
157
|
-
actors: {
|
|
158
|
-
prepareFile: prepareFileActor,
|
|
159
|
-
uploadFile: fromPromise(async () => {
|
|
160
|
-
throw new Error("uploadFile must be provided by variant");
|
|
161
|
-
})
|
|
162
|
-
},
|
|
163
|
-
actions: {
|
|
164
|
-
storeSelectedFile: assign(({ event }) => {
|
|
165
|
-
if (event.type !== "MANUAL_UPLOAD_FILE_SELECTED") return {};
|
|
166
|
-
return {
|
|
167
|
-
file: event.file,
|
|
168
|
-
errorKey: null,
|
|
169
|
-
uploaded: false
|
|
170
|
-
};
|
|
171
|
-
}),
|
|
172
|
-
storePreparedImage: assign(({ event }) => {
|
|
173
|
-
const prepared = getPreparedFromEvent(event);
|
|
174
|
-
return prepared?.ok ? { base64Image: prepared.base64Image } : {};
|
|
175
|
-
}),
|
|
176
|
-
setErrorFromPrepare: assign(({ event }) => {
|
|
177
|
-
const prepared = getPreparedFromEvent(event);
|
|
178
|
-
return { errorKey: prepared && !prepared.ok ? prepared.errorKey : MANUAL_FACE_UPLOAD_ERROR_KEYS.generic };
|
|
179
|
-
}),
|
|
180
|
-
setGenericError: assign(() => ({ errorKey: MANUAL_FACE_UPLOAD_ERROR_KEYS.generic })),
|
|
181
|
-
setErrorFromUploadFailure: assign(({ event }) => ({ errorKey: mapFaceErrorCodeToErrorKey(getErrorMessageFromEvent(event)) })),
|
|
182
|
-
markUploaded: assign(() => ({
|
|
183
|
-
uploaded: true,
|
|
184
|
-
errorKey: null
|
|
185
|
-
})),
|
|
186
|
-
decrementRetries: assign(({ context }) => ({ retriesLeft: Math.max(0, context.retriesLeft - 1) })),
|
|
187
|
-
reset: assign(({ context }) => ({
|
|
188
|
-
file: null,
|
|
189
|
-
base64Image: null,
|
|
190
|
-
uploaded: false,
|
|
191
|
-
errorKey: null,
|
|
192
|
-
retriesLeft: context.captureAttempts
|
|
193
|
-
})),
|
|
194
|
-
markSucceeded: assign(() => ({ outcome: "success" })),
|
|
195
|
-
markExhausted: assign(() => ({ outcome: "exhausted" }))
|
|
196
|
-
},
|
|
197
|
-
guards: {
|
|
198
|
-
isPrepareRejected: ({ event }) => getPreparedFromEvent(event)?.ok === false,
|
|
199
|
-
retriesExhausted: ({ context }) => context.retriesLeft <= 0,
|
|
200
|
-
canContinue: ({ context }) => context.uploaded
|
|
201
|
-
}
|
|
202
|
-
}).createMachine({
|
|
203
|
-
id: "manualFaceUpload",
|
|
204
|
-
initial: "selecting",
|
|
205
|
-
context: ({ input }) => ({
|
|
206
|
-
config: input.config,
|
|
207
|
-
dependencies: input.dependencies,
|
|
208
|
-
captureAttempts: input.captureAttempts,
|
|
209
|
-
retriesLeft: input.captureAttempts,
|
|
210
|
-
file: null,
|
|
211
|
-
base64Image: null,
|
|
212
|
-
uploaded: false,
|
|
213
|
-
errorKey: null,
|
|
214
|
-
outcome: null
|
|
215
|
-
}),
|
|
216
|
-
output: ({ context }) => ({ result: context.outcome === "success" ? "success" : "exhausted" }),
|
|
217
|
-
on: { MANUAL_UPLOAD_RESET: {
|
|
218
|
-
target: ".selecting",
|
|
219
|
-
actions: ["reset"]
|
|
220
|
-
} },
|
|
221
|
-
states: {
|
|
222
|
-
selecting: { on: {
|
|
223
|
-
MANUAL_UPLOAD_FILE_SELECTED: {
|
|
224
|
-
target: "preparing",
|
|
225
|
-
actions: ["storeSelectedFile"]
|
|
226
|
-
},
|
|
227
|
-
MANUAL_UPLOAD_CONTINUE: {
|
|
228
|
-
guard: "canContinue",
|
|
229
|
-
target: "finished",
|
|
230
|
-
actions: ["markSucceeded"]
|
|
231
|
-
}
|
|
232
|
-
} },
|
|
233
|
-
preparing: { invoke: {
|
|
234
|
-
id: "prepareFile",
|
|
235
|
-
src: "prepareFile",
|
|
236
|
-
input: ({ context }) => ({ file: context.file }),
|
|
237
|
-
onDone: [{
|
|
238
|
-
guard: "isPrepareRejected",
|
|
239
|
-
target: "selecting",
|
|
240
|
-
actions: ["setErrorFromPrepare"]
|
|
241
|
-
}, {
|
|
242
|
-
target: "uploading",
|
|
243
|
-
actions: ["storePreparedImage"]
|
|
244
|
-
}],
|
|
245
|
-
onError: {
|
|
246
|
-
target: "selecting",
|
|
247
|
-
actions: ["setGenericError"]
|
|
248
|
-
}
|
|
249
|
-
} },
|
|
250
|
-
uploading: { invoke: {
|
|
251
|
-
id: "uploadFile",
|
|
252
|
-
src: "uploadFile",
|
|
253
|
-
input: ({ context }) => ({
|
|
254
|
-
base64Image: context.base64Image,
|
|
255
|
-
config: context.config,
|
|
256
|
-
dependencies: context.dependencies
|
|
257
|
-
}),
|
|
258
|
-
onDone: {
|
|
259
|
-
target: "selecting",
|
|
260
|
-
actions: ["markUploaded"]
|
|
261
|
-
},
|
|
262
|
-
onError: {
|
|
263
|
-
target: "checkRetries",
|
|
264
|
-
actions: ["decrementRetries", "setErrorFromUploadFailure"]
|
|
265
|
-
}
|
|
266
|
-
} },
|
|
267
|
-
checkRetries: { always: [{
|
|
268
|
-
guard: "retriesExhausted",
|
|
269
|
-
target: "exhausted",
|
|
270
|
-
actions: ["markExhausted"]
|
|
271
|
-
}, { target: "selecting" }] },
|
|
272
|
-
exhausted: { type: "final" },
|
|
273
|
-
finished: { type: "final" }
|
|
274
|
-
}
|
|
275
|
-
});
|
|
276
|
-
//#endregion
|
|
277
47
|
//#region ../infra/src/providers/wasm/createProtectedFaceCaptureCapabilities.ts
|
|
278
48
|
/**
|
|
279
49
|
* Infrastructure composition boundary for one protected still-face attempt.
|
|
@@ -300,111 +70,40 @@ function logFaceCameraDiagnostic(event, fields) {
|
|
|
300
70
|
}
|
|
301
71
|
//#endregion
|
|
302
72
|
//#region ../infra/src/media/VideoTrimmer.ts
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
video.removeEventListener("timeupdate", onTimeUpdate);
|
|
315
|
-
resolve(video.duration);
|
|
316
|
-
}
|
|
317
|
-
};
|
|
318
|
-
const onTimeUpdate = () => {
|
|
319
|
-
if (Number.isFinite(video.duration)) {
|
|
320
|
-
video.removeEventListener("timeupdate", onTimeUpdate);
|
|
321
|
-
video.removeEventListener("durationchange", onDurationChange);
|
|
322
|
-
resolve(video.duration);
|
|
323
|
-
}
|
|
324
|
-
};
|
|
325
|
-
video.addEventListener("durationchange", onDurationChange);
|
|
326
|
-
video.addEventListener("timeupdate", onTimeUpdate);
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
const duration = video.duration;
|
|
330
|
-
return Number.isFinite(duration) ? duration : null;
|
|
331
|
-
} finally {
|
|
332
|
-
URL.revokeObjectURL(video.src);
|
|
333
|
-
video.src = "";
|
|
334
|
-
}
|
|
73
|
+
/** A trim that runs longer than this uploads the full recording instead. */
|
|
74
|
+
const TRIM_TIMEOUT_MS = 1e4;
|
|
75
|
+
const trimmer = BrowserLazyImportProvider.getInstance().create(() => import("./videoTrimByCopy-BFfAiNpv.esm.js").then((module) => module.trimLastNSecondsByCopy), {
|
|
76
|
+
label: "Video liveness",
|
|
77
|
+
moduleName: "mediabunny",
|
|
78
|
+
timeoutMs: 1e4,
|
|
79
|
+
disabledMessage: "the full recording will be uploaded untrimmed."
|
|
80
|
+
});
|
|
81
|
+
/** Starts loading the trimmer, e.g. when a recording that will be trimmed starts. */
|
|
82
|
+
function preloadVideoTrimmer() {
|
|
83
|
+
trimmer.load();
|
|
335
84
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Keeps about the last `seconds` of a recording. Never rejects and never
|
|
87
|
+
* hangs: when the trimmer cannot load, fails, or takes longer than
|
|
88
|
+
* {@link TRIM_TIMEOUT_MS}, it resolves the untrimmed recording.
|
|
89
|
+
*/
|
|
90
|
+
async function trimLastNSeconds(videoBlob, seconds) {
|
|
91
|
+
const trim = await trimmer.load();
|
|
92
|
+
if (!trim) return videoBlob;
|
|
93
|
+
let timeout;
|
|
94
|
+
try {
|
|
95
|
+
return await Promise.race([trim(videoBlob, seconds), new Promise((resolve) => {
|
|
96
|
+
timeout = setTimeout(() => {
|
|
97
|
+
console.warn("[Video liveness] Trimming timed out; the full recording will be uploaded untrimmed.");
|
|
98
|
+
resolve(videoBlob);
|
|
99
|
+
}, TRIM_TIMEOUT_MS);
|
|
100
|
+
})]);
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.warn("[Video liveness] Trimming failed; the full recording will be uploaded untrimmed.", error);
|
|
346
103
|
return videoBlob;
|
|
104
|
+
} finally {
|
|
105
|
+
clearTimeout(timeout);
|
|
347
106
|
}
|
|
348
|
-
const startTime = Math.max(0, Math.floor(duration) - seconds);
|
|
349
|
-
await new Promise((resolve) => {
|
|
350
|
-
if (video.readyState >= 2) resolve();
|
|
351
|
-
else video.addEventListener("loadedmetadata", () => resolve(), { once: true });
|
|
352
|
-
});
|
|
353
|
-
const canvas = document.createElement("canvas");
|
|
354
|
-
canvas.width = 230;
|
|
355
|
-
canvas.height = 320;
|
|
356
|
-
const captureFps = isAndroid() ? 15 : 24;
|
|
357
|
-
const stream = canvas.captureStream(captureFps);
|
|
358
|
-
const ctx = canvas.getContext("2d");
|
|
359
|
-
video.currentTime = startTime;
|
|
360
|
-
await new Promise((resolve) => {
|
|
361
|
-
video.addEventListener("seeked", () => resolve(), { once: true });
|
|
362
|
-
});
|
|
363
|
-
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
|
|
364
|
-
const mimeType = videoBlob.type || (MediaRecorder.isTypeSupported("video/webm") ? "video/webm" : "video/mp4");
|
|
365
|
-
const mediaRecorder = new MediaRecorder(stream.clone(), {
|
|
366
|
-
mimeType,
|
|
367
|
-
videoBitsPerSecond: 5e5,
|
|
368
|
-
bitsPerSecond: 5e5
|
|
369
|
-
});
|
|
370
|
-
const chunks = [];
|
|
371
|
-
mediaRecorder.ondataavailable = (event) => {
|
|
372
|
-
if (event.data.size > 0) chunks.push(event.data);
|
|
373
|
-
};
|
|
374
|
-
const recordingPromise = new Promise((resolve) => {
|
|
375
|
-
mediaRecorder.onstop = () => {
|
|
376
|
-
const trimmedBlob = new Blob(chunks, { type: mimeType });
|
|
377
|
-
URL.revokeObjectURL(videoURL);
|
|
378
|
-
mediaRecorder.stream?.getTracks().forEach((track) => track.stop());
|
|
379
|
-
stream.getTracks().forEach((track) => track.stop());
|
|
380
|
-
video.src = "";
|
|
381
|
-
resolve(trimmedBlob);
|
|
382
|
-
};
|
|
383
|
-
});
|
|
384
|
-
video.addEventListener("play", () => {
|
|
385
|
-
function drawVideo() {
|
|
386
|
-
if (video.currentTime >= duration) {
|
|
387
|
-
mediaRecorder.stop();
|
|
388
|
-
video.pause();
|
|
389
|
-
return;
|
|
390
|
-
}
|
|
391
|
-
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
|
|
392
|
-
requestAnimationFrame(drawVideo);
|
|
393
|
-
}
|
|
394
|
-
drawVideo();
|
|
395
|
-
setTimeout(() => {
|
|
396
|
-
mediaRecorder.start(100);
|
|
397
|
-
}, 500);
|
|
398
|
-
});
|
|
399
|
-
video.play().catch(() => {
|
|
400
|
-
URL.revokeObjectURL(videoURL);
|
|
401
|
-
});
|
|
402
|
-
const trimmedBlob = await recordingPromise;
|
|
403
|
-
console.timeEnd("trimLastNSecondsUsingPlayback");
|
|
404
|
-
return trimmedBlob;
|
|
405
|
-
}
|
|
406
|
-
async function trimLastNSeconds(videoBlob, seconds) {
|
|
407
|
-
return await trimLastNSecondsUsingPlayback(videoBlob, seconds);
|
|
408
107
|
}
|
|
409
108
|
//#endregion
|
|
410
109
|
//#region ../infra/src/providers/browser/LocalRecordingProvider.ts
|
|
@@ -419,6 +118,8 @@ function toBase64(videoBlob) {
|
|
|
419
118
|
reader.readAsDataURL(videoBlob);
|
|
420
119
|
});
|
|
421
120
|
}
|
|
121
|
+
/** `MediaRecorderOptions.videoKeyFrameIntervalDuration`, see `startRecording`. */
|
|
122
|
+
const KEYFRAME_INTERVAL_MS = 1e3;
|
|
422
123
|
var LocalRecordingProvider = class {
|
|
423
124
|
constructor() {
|
|
424
125
|
this.mediaRecorder = null;
|
|
@@ -440,12 +141,16 @@ var LocalRecordingProvider = class {
|
|
|
440
141
|
}
|
|
441
142
|
startRecording(stream) {
|
|
442
143
|
this.reset();
|
|
144
|
+
preloadVideoTrimmer();
|
|
443
145
|
this.registerEventListeners();
|
|
444
146
|
this.stream = stream;
|
|
445
147
|
try {
|
|
446
148
|
const options = getAdaptiveMediaRecorderOptions();
|
|
447
149
|
this.mimeType = options.mimeType;
|
|
448
|
-
const recorder = new MediaRecorder(stream.clone(),
|
|
150
|
+
const recorder = new MediaRecorder(stream.clone(), {
|
|
151
|
+
...options,
|
|
152
|
+
videoKeyFrameIntervalDuration: KEYFRAME_INTERVAL_MS
|
|
153
|
+
});
|
|
449
154
|
recorder.onerror = (event) => {
|
|
450
155
|
this._error = `Recording error: ${event}`;
|
|
451
156
|
this._isRecording = false;
|
|
@@ -925,7 +630,8 @@ var ProtectedFaceAttemptRuntime = class ProtectedFaceAttemptRuntime {
|
|
|
925
630
|
faceResults: this.provider
|
|
926
631
|
};
|
|
927
632
|
}
|
|
928
|
-
|
|
633
|
+
/** `captureType` goes on the selfie upload only, never on authentication or face-results. */
|
|
634
|
+
createUploadCommand(recordingId, captureType) {
|
|
929
635
|
const token = getToken();
|
|
930
636
|
const config = {
|
|
931
637
|
headers: token ? { "X-Incode-Hardware-Id": token } : void 0,
|
|
@@ -957,6 +663,7 @@ var ProtectedFaceAttemptRuntime = class ProtectedFaceAttemptRuntime {
|
|
|
957
663
|
...config,
|
|
958
664
|
params: {
|
|
959
665
|
imageType: "selfie",
|
|
666
|
+
captureType,
|
|
960
667
|
...validRecordingId ? { recordingId: validRecordingId } : {}
|
|
961
668
|
}
|
|
962
669
|
}
|
|
@@ -1137,6 +844,7 @@ function createProtectedFaceControllerActor(options) {
|
|
|
1137
844
|
let lifecycleCleanup;
|
|
1138
845
|
let sendLifecycle;
|
|
1139
846
|
let committedPreview;
|
|
847
|
+
let manualCommitted = false;
|
|
1140
848
|
let pendingAutoPreview;
|
|
1141
849
|
let recording = {};
|
|
1142
850
|
let stepRecording;
|
|
@@ -1225,6 +933,7 @@ function createProtectedFaceControllerActor(options) {
|
|
|
1225
933
|
};
|
|
1226
934
|
const releaseCurrent = (reason) => {
|
|
1227
935
|
logDiagnostic("attempt-release", { releaseReason: reason });
|
|
936
|
+
noteTrueSightCaptureActivity(false);
|
|
1228
937
|
diagnosticStartedAt = void 0;
|
|
1229
938
|
generation += 1;
|
|
1230
939
|
signalCleanup?.();
|
|
@@ -1328,10 +1037,12 @@ function createProtectedFaceControllerActor(options) {
|
|
|
1328
1037
|
case "PROTECTED_MANUAL_COMMITTED":
|
|
1329
1038
|
logDiagnostic("capture-selected", { captureKind: event.type === "PROTECTED_AUTO_COMMITTED" ? "auto" : "manual" });
|
|
1330
1039
|
committedPreview = event.preview;
|
|
1040
|
+
manualCommitted ||= event.type === "PROTECTED_MANUAL_COMMITTED";
|
|
1331
1041
|
sendBack(event);
|
|
1332
1042
|
return;
|
|
1333
1043
|
case "PROTECTED_ATTEMPT_FINALIZED":
|
|
1334
1044
|
logDiagnostic("attempt-finalized");
|
|
1045
|
+
noteTrueSightCaptureActivity(false);
|
|
1335
1046
|
recording = event.recording;
|
|
1336
1047
|
sendBack(event);
|
|
1337
1048
|
return;
|
|
@@ -1359,6 +1070,7 @@ function createProtectedFaceControllerActor(options) {
|
|
|
1359
1070
|
failureStage: event.failure.stage,
|
|
1360
1071
|
failureCode: event.failure.code
|
|
1361
1072
|
});
|
|
1073
|
+
noteTrueSightCaptureActivity(false);
|
|
1362
1074
|
sendBack(event);
|
|
1363
1075
|
return;
|
|
1364
1076
|
default: sendBack(event);
|
|
@@ -1373,10 +1085,12 @@ function createProtectedFaceControllerActor(options) {
|
|
|
1373
1085
|
diagnosticAttempt += 1;
|
|
1374
1086
|
diagnosticStartedAt = getTimestamp();
|
|
1375
1087
|
logDiagnostic("attempt-start");
|
|
1088
|
+
noteTrueSightCaptureActivity(true);
|
|
1376
1089
|
const ownerGeneration = generation;
|
|
1377
1090
|
signalCleanup = owner.subscribeSignals((signal) => {
|
|
1378
1091
|
if (!active || runtime !== owner || generation !== ownerGeneration) return;
|
|
1379
1092
|
if (signal.type === "detection") {
|
|
1093
|
+
trueSightHintTransition("module.face-capture", "faceScan", signal.status);
|
|
1380
1094
|
sendBack({
|
|
1381
1095
|
type: "DETECTION_UPDATE",
|
|
1382
1096
|
status: signal.status
|
|
@@ -1443,7 +1157,7 @@ function createProtectedFaceControllerActor(options) {
|
|
|
1443
1157
|
if (!owner) return;
|
|
1444
1158
|
logDiagnostic("upload-start");
|
|
1445
1159
|
if (options.delivery === "protected") {
|
|
1446
|
-
sendLifecycle?.(owner.createUploadCommand(recording.recordingId));
|
|
1160
|
+
sendLifecycle?.(owner.createUploadCommand(recording.recordingId, manualCommitted ? "MANUAL" : "AUTO"));
|
|
1447
1161
|
return;
|
|
1448
1162
|
}
|
|
1449
1163
|
finalizeLocalCapture(owner, generation).catch(() => {
|
|
@@ -1559,7 +1273,6 @@ const faceCaptureMachine = setup({
|
|
|
1559
1273
|
handle?.stop();
|
|
1560
1274
|
};
|
|
1561
1275
|
}),
|
|
1562
|
-
manualUploadMachine: manualFaceUploadMachine,
|
|
1563
1276
|
prepareFaceUpload: fromPromise(async () => {
|
|
1564
1277
|
throw new Error("prepareFaceUpload must be provided by variant");
|
|
1565
1278
|
}),
|
|
@@ -1602,6 +1315,7 @@ const faceCaptureMachine = setup({
|
|
|
1602
1315
|
permissionResult: void 0,
|
|
1603
1316
|
deepsightReady: false,
|
|
1604
1317
|
manualCaptureTriggered: false,
|
|
1318
|
+
retainManualMode: false,
|
|
1605
1319
|
captureOnlyResult: void 0,
|
|
1606
1320
|
avatarCanvas: void 0
|
|
1607
1321
|
};
|
|
@@ -1630,7 +1344,12 @@ const faceCaptureMachine = setup({
|
|
|
1630
1344
|
setDeepsightNotReady: assign({ deepsightReady: () => false }),
|
|
1631
1345
|
setErrorFromEvent: assign({ error: ({ event }) => String(event.error) }),
|
|
1632
1346
|
setDetectionStatusDetecting: assign({ detectionStatus: ({ context }) => context.manualCaptureTriggered ? "manualCapture" : "detecting" }),
|
|
1633
|
-
setDetectionStatusFromEvent: assign({ detectionStatus: ({ event }) =>
|
|
1347
|
+
setDetectionStatusFromEvent: assign({ detectionStatus: ({ context, event }) => {
|
|
1348
|
+
const status = event.status;
|
|
1349
|
+
if (context.retainManualMode && status !== "offline") return "manualCapture";
|
|
1350
|
+
return status;
|
|
1351
|
+
} }),
|
|
1352
|
+
retainManualModeForRetry: assign({ retainManualMode: ({ context }) => context.manualCaptureTriggered && context.config.onDeviceFaceResultsSubmissionEnabled !== true }),
|
|
1634
1353
|
setManualCaptureTriggered: assign({ manualCaptureTriggered: ({ context, event }) => {
|
|
1635
1354
|
const status = event.status;
|
|
1636
1355
|
return context.manualCaptureTriggered || status === "manualCapture";
|
|
@@ -1664,10 +1383,13 @@ const faceCaptureMachine = setup({
|
|
|
1664
1383
|
}),
|
|
1665
1384
|
setUploadResponseFromEvent: assign({ uploadResponse: ({ event }) => event.output }),
|
|
1666
1385
|
setProcessResponseFromEvent: assign({ processResponse: ({ event }) => event.output }),
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1386
|
+
setUploadFailureAndDecrement: assign(({ context, event }) => {
|
|
1387
|
+
const { httpStatus, responseStatus } = event.failure;
|
|
1388
|
+
return {
|
|
1389
|
+
uploadError: httpStatus === void 0 ? FACE_ERROR_CODES.SERVER : getFaceUploadErrorCode(httpStatus, responseStatus),
|
|
1390
|
+
attemptsRemaining: context.attemptsRemaining - 1
|
|
1391
|
+
};
|
|
1392
|
+
}),
|
|
1671
1393
|
sendLabelInspection: () => {
|
|
1672
1394
|
sendLabelInspectionEvent();
|
|
1673
1395
|
},
|
|
@@ -1686,7 +1408,6 @@ const faceCaptureMachine = setup({
|
|
|
1686
1408
|
releaseFaceAvatarWarmup();
|
|
1687
1409
|
},
|
|
1688
1410
|
noOp: () => void 0,
|
|
1689
|
-
forwardToManualUpload: sendTo("manualUpload", ({ event }) => event),
|
|
1690
1411
|
sendProtectedPreAcquire: enqueueActions(({ enqueue, self }) => {
|
|
1691
1412
|
if (!isProtectedFaceControllerRunning(self)) return;
|
|
1692
1413
|
enqueue.sendTo("protectedFaceController", { type: "PRE_ACQUIRE" });
|
|
@@ -1744,8 +1465,6 @@ const faceCaptureMachine = setup({
|
|
|
1744
1465
|
guards: {
|
|
1745
1466
|
hasShowTutorial: ({ context }) => context.config.showTutorial,
|
|
1746
1467
|
hasAgeAssurance: ({ context }) => context.config.ageAssurance === true,
|
|
1747
|
-
hasManualUploadEnabled: () => false,
|
|
1748
|
-
isManualUploadExhausted: ({ event }) => event.output?.result === "exhausted",
|
|
1749
1468
|
isPermissionGranted: ({ event }) => {
|
|
1750
1469
|
if ("output" in event) return event.output === "granted";
|
|
1751
1470
|
return false;
|
|
@@ -1767,6 +1486,7 @@ const faceCaptureMachine = setup({
|
|
|
1767
1486
|
isCameraAndDeepsightReady: ({ context }) => context.stream !== void 0 && context.deepsightReady,
|
|
1768
1487
|
hasAttemptsRemaining: ({ context }) => context.attemptsRemaining > 0,
|
|
1769
1488
|
hasCapturedImage: ({ context }) => context.capturedImage !== void 0,
|
|
1489
|
+
isAutoCaptureAllowed: ({ context }) => !context.retainManualMode,
|
|
1770
1490
|
canCommitProtectedManual: ({ context }) => context.manualCaptureTriggered && context.config.onDeviceFaceResultsSubmissionEnabled !== true,
|
|
1771
1491
|
isProtectedManualRefusal: ({ event }) => event.failure.stage === "manualCommit",
|
|
1772
1492
|
isProtectedUploadFailure: ({ event }) => event.failure.stage === "upload",
|
|
@@ -1797,6 +1517,7 @@ const faceCaptureMachine = setup({
|
|
|
1797
1517
|
encryptedBase64Image: void 0,
|
|
1798
1518
|
uploadRecordingId: void 0,
|
|
1799
1519
|
manualCaptureTriggered: false,
|
|
1520
|
+
retainManualMode: false,
|
|
1800
1521
|
captureOnlyResult: void 0,
|
|
1801
1522
|
avatarCanvas: void 0,
|
|
1802
1523
|
faceFeed: void 0,
|
|
@@ -1842,10 +1563,6 @@ const faceCaptureMachine = setup({
|
|
|
1842
1563
|
tutorial: {
|
|
1843
1564
|
initial: "checkingPermission",
|
|
1844
1565
|
entry: ["trackTutorial", "warmAvatarProvider"],
|
|
1845
|
-
on: { GO_TO_MANUAL_UPLOAD: {
|
|
1846
|
-
guard: "hasManualUploadEnabled",
|
|
1847
|
-
target: "#faceCapture.manualUpload"
|
|
1848
|
-
} },
|
|
1849
1566
|
states: {
|
|
1850
1567
|
checkingPermission: { invoke: {
|
|
1851
1568
|
id: "checkPermissionTutorial",
|
|
@@ -1928,9 +1645,23 @@ const faceCaptureMachine = setup({
|
|
|
1928
1645
|
PROTECTED_DEEPSIGHT_FAILED: {
|
|
1929
1646
|
target: "readyForNext",
|
|
1930
1647
|
actions: "setDeepsightNotReady"
|
|
1648
|
+
},
|
|
1649
|
+
NEXT_STEP: {
|
|
1650
|
+
target: "continuing",
|
|
1651
|
+
actions: "trackContinue"
|
|
1931
1652
|
}
|
|
1932
1653
|
}
|
|
1933
1654
|
},
|
|
1655
|
+
continuing: { on: {
|
|
1656
|
+
PROTECTED_DEEPSIGHT_READY: {
|
|
1657
|
+
target: "#faceCapture.tutorial.waitingForPermission",
|
|
1658
|
+
actions: "setDeepsightReady"
|
|
1659
|
+
},
|
|
1660
|
+
PROTECTED_DEEPSIGHT_FAILED: {
|
|
1661
|
+
target: "#faceCapture.tutorial.waitingForPermission",
|
|
1662
|
+
actions: "setDeepsightNotReady"
|
|
1663
|
+
}
|
|
1664
|
+
} },
|
|
1934
1665
|
readyForNext: { on: { NEXT_STEP: {
|
|
1935
1666
|
target: "#faceCapture.tutorial.waitingForPermission",
|
|
1936
1667
|
actions: "trackContinue"
|
|
@@ -2076,7 +1807,7 @@ const faceCaptureMachine = setup({
|
|
|
2076
1807
|
{
|
|
2077
1808
|
target: ".uploadError",
|
|
2078
1809
|
guard: "isProtectedUploadFailure",
|
|
2079
|
-
actions: "
|
|
1810
|
+
actions: "setUploadFailureAndDecrement"
|
|
2080
1811
|
},
|
|
2081
1812
|
{
|
|
2082
1813
|
target: "#faceCapture.error",
|
|
@@ -2098,8 +1829,11 @@ const faceCaptureMachine = setup({
|
|
|
2098
1829
|
actions: "setDeepsightReady"
|
|
2099
1830
|
},
|
|
2100
1831
|
PROTECTED_DEEPSIGHT_FAILED: {
|
|
2101
|
-
target: "#faceCapture.
|
|
2102
|
-
actions:
|
|
1832
|
+
target: "#faceCapture.error",
|
|
1833
|
+
actions: assign({
|
|
1834
|
+
deepsightReady: () => false,
|
|
1835
|
+
error: () => "Deepsight initialization failed"
|
|
1836
|
+
})
|
|
2103
1837
|
}
|
|
2104
1838
|
}
|
|
2105
1839
|
},
|
|
@@ -2123,7 +1857,10 @@ const faceCaptureMachine = setup({
|
|
|
2123
1857
|
on: {
|
|
2124
1858
|
DETECTION_UPDATE: { actions: ["setDetectionStatusFromEvent", "setManualCaptureTriggered"] },
|
|
2125
1859
|
AVATAR_READY: { actions: "setAvatarCanvas" },
|
|
2126
|
-
PROTECTED_NATIVE_AUTO_CAPTURE: {
|
|
1860
|
+
PROTECTED_NATIVE_AUTO_CAPTURE: {
|
|
1861
|
+
guard: "isAutoCaptureAllowed",
|
|
1862
|
+
actions: "sendProtectedAutoCapture"
|
|
1863
|
+
},
|
|
2127
1864
|
PROTECTED_AUTO_COMMITTED: {
|
|
2128
1865
|
target: "capturing",
|
|
2129
1866
|
actions: "setProtectedCommittedPreview"
|
|
@@ -2182,6 +1919,7 @@ const faceCaptureMachine = setup({
|
|
|
2182
1919
|
reenter: true,
|
|
2183
1920
|
guard: "hasAttemptsRemaining",
|
|
2184
1921
|
actions: [
|
|
1922
|
+
"retainManualModeForRetry",
|
|
2185
1923
|
"clearUploadFailure",
|
|
2186
1924
|
"setDeepsightNotReady",
|
|
2187
1925
|
"resetProtectedController",
|
|
@@ -2204,36 +1942,6 @@ const faceCaptureMachine = setup({
|
|
|
2204
1942
|
}
|
|
2205
1943
|
}
|
|
2206
1944
|
},
|
|
2207
|
-
manualUpload: {
|
|
2208
|
-
entry: [
|
|
2209
|
-
"releaseProtectedAttempt",
|
|
2210
|
-
"stopMediaStream",
|
|
2211
|
-
"releaseAvatarWarmup"
|
|
2212
|
-
],
|
|
2213
|
-
invoke: {
|
|
2214
|
-
id: "manualUpload",
|
|
2215
|
-
src: "manualUploadMachine",
|
|
2216
|
-
input: ({ context }) => ({
|
|
2217
|
-
config: context.config,
|
|
2218
|
-
dependencies: context.dependencies,
|
|
2219
|
-
captureAttempts: getAttemptsFromConfig(context.config)
|
|
2220
|
-
}),
|
|
2221
|
-
onSnapshot: { actions: "noOp" },
|
|
2222
|
-
onDone: [{
|
|
2223
|
-
guard: "isManualUploadExhausted",
|
|
2224
|
-
target: "terminalProcessing"
|
|
2225
|
-
}, { target: "processing" }],
|
|
2226
|
-
onError: {
|
|
2227
|
-
target: "error",
|
|
2228
|
-
actions: "setErrorFromEvent"
|
|
2229
|
-
}
|
|
2230
|
-
},
|
|
2231
|
-
on: {
|
|
2232
|
-
MANUAL_UPLOAD_FILE_SELECTED: { actions: "forwardToManualUpload" },
|
|
2233
|
-
MANUAL_UPLOAD_CONTINUE: { actions: "forwardToManualUpload" },
|
|
2234
|
-
MANUAL_UPLOAD_RESET: { actions: "forwardToManualUpload" }
|
|
2235
|
-
}
|
|
2236
|
-
},
|
|
2237
1945
|
processing: { invoke: {
|
|
2238
1946
|
id: "processFace",
|
|
2239
1947
|
src: "processFace",
|
|
@@ -2287,4 +1995,4 @@ const faceCaptureMachine = setup({
|
|
|
2287
1995
|
}
|
|
2288
1996
|
});
|
|
2289
1997
|
//#endregion
|
|
2290
|
-
export {
|
|
1998
|
+
export { createDefaultProtectedFaceControllerActor as n, concealmentToAvatar as r, faceCaptureMachine as t };
|