@incodetech/core 2.1.1 → 2.2.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{3dAvatarProvider-BwOmTMOy.esm.js → 3dAvatarProvider-g02DTFqT.esm.js} +811 -880
- package/dist/Actor-iTq7YY48.d.ts +1 -0
- package/dist/BrowserDiagnosticsCryptoProvider-CriIh1Gt.esm.js +95 -0
- package/dist/BrowserLazyImportProvider-BhoA957O.esm.js +114 -0
- package/dist/{BrowserStorageProvider-CBHBhKQN.esm.js → BrowserStorageProvider-k-FDkC4W.esm.js} +2 -4
- package/dist/{BrowserTimerProvider-CHloo0eQ.esm.js → BrowserTimerProvider-BXhgNxLt.esm.js} +1 -2
- package/dist/{BrowserVisibilityObserverProvider-GBS6XSii.esm.js → BrowserVisibilityObserverProvider-BX1BiLDK.esm.js} +1 -2
- package/dist/Face2DProvider-UUQt_vRC.esm.js +437 -0
- package/dist/{createFaceAvatar-CpdYp9Iy.d.ts → FaceDetectionProvider-Mh6q3EbA.d.ts} +107 -159
- package/dist/IBrowserEnvironmentCapability-DEaRRk-R.esm.js +9 -0
- package/dist/IFaceAvatarCapability-BrL19G0s.d.ts +23 -0
- package/dist/IFeatureManagementCapability-DdEUp6tB.d.ts +1125 -0
- package/dist/IIdCaptureCapability-DHTT3FC2.d.ts +237 -0
- package/dist/IStorageCapability-ORkQfK3F.d.ts +242 -0
- package/dist/{ITimerCapability-DJ73P4RK.esm.js → ITimerCapability-DgdDzp8G.esm.js} +1 -2
- package/dist/{Manager-goNPc_h_.d.ts → Manager-CQQ99QOI.d.ts} +1 -0
- package/dist/{MotionSensorProvider-BHuHoYvJ.esm.js → MotionSensorProvider-DGiV77J_.esm.js} +2 -37
- package/dist/{OpenViduRecordingProvider-CK6A5kiU.esm.js → OpenViduRecordingProvider-Du98qevC.esm.js} +2 -4
- package/dist/PrivacyLensProvider-D8PS7AJa.esm.js +405 -0
- package/dist/StateMachine-EDpYWy0i.d.ts +6 -0
- package/dist/{StreamCanvasCapture-CAqUdVkM.esm.js → StreamCanvasCapture-D2XcXCZ4.esm.js} +2 -4
- package/dist/{addressSearch-D7msRieq.esm.js → addressSearch-DQyrvDQj.esm.js} +10 -21
- package/dist/ae-signature.d.ts +4 -6
- package/dist/ae-signature.esm.js +10 -11
- package/dist/antifraud.d.ts +1 -6
- package/dist/antifraud.esm.js +3 -8
- package/dist/{antifraudManager-5KA84wtF.esm.js → antifraudManager-B8Plzf7a.esm.js} +11 -8
- package/dist/{antifraudManager-DCiNI6np.d.ts → antifraudManager-BY36bS12.d.ts} +3 -3
- package/dist/{antifraudStateMachine-BQVw46N5.esm.js → antifraudStateMachine-r4VxSBS4.esm.js} +5 -7
- package/dist/api-Bx3gKW_y.esm.js +129 -0
- package/dist/{apiError-DkOXfFBu.esm.js → apiError-DZfAyExM.esm.js} +25 -3
- package/dist/authentication.d.ts +3 -19
- package/dist/authentication.esm.js +3 -35
- package/dist/{authenticationManager-BeT6tNZm.d.ts → authenticationManager-BBMGTcwW.d.ts} +3 -4
- package/dist/{authenticationManager-BryLnSaF.esm.js → authenticationManager-DscbQwIl.esm.js} +7 -10
- package/dist/{authenticationStateMachine-DbdxfGHx.esm.js → authenticationStateMachine-SyuM00Fa.esm.js} +11 -15
- package/dist/avatar.d.ts +2 -2
- package/dist/avatar.esm.js +2 -3
- package/dist/avatar2dWarm-DqucNFX4.esm.js +1330 -0
- package/dist/avatarStats-CdUOb3VD.esm.js +136 -0
- package/dist/{backCameraStream-ChrMTJv-.esm.js → backCameraStream-CUeYm5eu.esm.js} +20 -8
- package/dist/browser-DlFgHpoC-DnyrCR8r.esm.js +1513 -0
- package/dist/callback-645_omgz.d.ts +133 -0
- package/dist/camera-_2sXMXiF.esm.js +140 -0
- package/dist/camera.d.ts +19 -2
- package/dist/camera.esm.js +2 -6
- package/dist/{canvas-Pi10hG_l.esm.js → canvas-E1zGkel4.esm.js} +1 -2
- package/dist/certificate-issuance.d.ts +34 -39
- package/dist/certificate-issuance.esm.js +4 -11
- package/dist/{certificateIssuanceStateMachine-DlZQT1_u.esm.js → certificateIssuanceStateMachine-COd7_l2T.esm.js} +7 -11
- package/dist/consent.d.ts +1 -4
- package/dist/consent.esm.js +3 -8
- package/dist/{consentManager-BwNu-uC-.esm.js → consentManager-BApTlfA0.esm.js} +5 -7
- package/dist/{consentManager-B4PMGXW-.d.ts → consentManager-uhDPdU6i.d.ts} +55 -61
- package/dist/{consentStateMachine-BOkVFiU7.esm.js → consentStateMachine-WD-S-Yhs.esm.js} +5 -7
- package/dist/{cpf-16m_cGAM.esm.js → cpf-BIADjddF.esm.js} +1 -2
- package/dist/createFaceAvatar-BEj18KXi.d.ts +50 -0
- package/dist/createFaceAvatar-DQKaRise.esm.js +103 -0
- package/dist/cross-document-data-match.d.ts +2 -26
- package/dist/cross-document-data-match.esm.js +2 -71
- package/dist/crossDocumentDataMatchManager-Dq8Z3SOg.d.ts +41 -0
- package/dist/crossDocumentDataMatchManager-OmYvyung.esm.js +84 -0
- package/dist/curp-validation.d.ts +1 -11
- package/dist/curp-validation.esm.js +3 -8
- package/dist/{curpValidationManager-CoqODZx5.d.ts → curpValidationManager-DVGr7Fq7.d.ts} +4 -6
- package/dist/{curpValidationManager-Cbji2inV.esm.js → curpValidationManager-UZxcrsrz.esm.js} +11 -7
- package/dist/{curpValidationStateMachine-Dlw4qfFb.esm.js → curpValidationStateMachine-9KwnqeoB.esm.js} +22 -14
- package/dist/custom-fields.d.ts +2 -5
- package/dist/custom-fields.esm.js +24 -11
- package/dist/custom-watchlist.d.ts +1 -3
- package/dist/custom-watchlist.esm.js +11 -10
- package/dist/{customWatchlistStateMachine-D8w0mNxm.esm.js → customWatchlistStateMachine-B_ey3TFj.esm.js} +5 -7
- package/dist/{dateUtils-BW6mBV6p.esm.js → dateUtils-CvG0FvK8.esm.js} +1 -2
- package/dist/{deepsightService-CViys6T4.esm.js → deepsightLoader-DcWjMC6A.esm.js} +68 -14
- package/dist/{deepsightService-BuTOFTr8.d.ts → deepsightService-DLVQS_RH.d.ts} +41 -2
- package/dist/device.d.ts +10 -2
- package/dist/device.esm.js +21 -21
- package/dist/document-capture.d.ts +3 -1816
- package/dist/document-capture.esm.js +3 -245
- package/dist/document-upload.d.ts +48 -55
- package/dist/document-upload.esm.js +8 -14
- package/dist/documentCaptureManager-B4Kivr8_.d.ts +2062 -0
- package/dist/documentCaptureManager-DszmcU-l.esm.js +296 -0
- package/dist/{documentCaptureStateMachine-BkTvU3yq.esm.js → documentCaptureStateMachine-D2jBwwVb.esm.js} +66 -40
- package/dist/dynamic-forms.d.ts +2 -4
- package/dist/dynamic-forms.esm.js +3 -9
- package/dist/{dynamicFormsManager-CHXUBNs4.esm.js → dynamicFormsManager-BoZ2-OUI.esm.js} +48 -9
- package/dist/{dynamicFormsManager-CKZkE7Wo.d.ts → dynamicFormsManager-fhK0yINk.d.ts} +22 -46
- package/dist/{dynamicFormsStateMachine-DJ1HGZff.esm.js → dynamicFormsStateMachine-D0RzkoEV.esm.js} +161 -34
- package/dist/ekyb.d.ts +5 -137
- package/dist/ekyb.esm.js +4 -179
- package/dist/ekybManager-DTvfxAOZ.esm.js +178 -0
- package/dist/ekybManager-Dzswb_b8.d.ts +114 -0
- package/dist/{ekybStateMachine-D9GzA4MW.esm.js → ekybStateMachine-BlTIozb6.esm.js} +16 -193
- package/dist/ekyc.d.ts +2 -79
- package/dist/ekyc.esm.js +4 -154
- package/dist/ekycManager-BFpHbBoT.d.ts +97 -0
- package/dist/ekycManager-oTstTJuL.esm.js +156 -0
- package/dist/{ekycStateMachine-DnVRiu3s.esm.js → ekycStateMachine-DHvksnrr.esm.js} +141 -423
- package/dist/ekycUtils-Dew1rBG0.esm.js +223 -0
- package/dist/electronic-signature.d.ts +3 -5
- package/dist/electronic-signature.esm.js +2 -10
- package/dist/{index-36QX_21w.d.ts → electronicSignatureManager-CcUXQZS7.d.ts} +220 -251
- package/dist/{electronicSignatureManager-DESRgObX.esm.js → electronicSignatureManager-DRYlHPjT.esm.js} +47 -33
- package/dist/email.d.ts +1 -5
- package/dist/email.esm.js +3 -10
- package/dist/{emailManager-CMS4q_r6.d.ts → emailManager-CADXW_9X.d.ts} +4 -7
- package/dist/{emailManager-B9Vrv3Ma.esm.js → emailManager-tE-YvNtS.esm.js} +76 -12
- package/dist/{emailStateMachine-CbmKFVSi.esm.js → emailStateMachine-Bm894MHB.esm.js} +7 -9
- package/dist/{endpoints-CwrFQfW7.esm.js → endpoints-CCzL3XD_.esm.js} +55 -6
- package/dist/{events-1wxZ97yf.esm.js → events-CxfNJVZW.esm.js} +43 -176
- package/dist/events.d.ts +28 -10
- package/dist/events.esm.js +2 -4
- package/dist/extensibility.d.ts +37 -37
- package/dist/extensibility.esm.js +31 -80
- package/dist/{externalFetch-hvmz_npP.esm.js → externalFetch-BKBThAUC.esm.js} +2 -4
- package/dist/face-match.d.ts +2 -225
- package/dist/face-match.esm.js +3 -173
- package/dist/{faceCaptureManagerFactory-C9TiGbkA.esm.js → faceCaptureManagerFactory-BDAsBCkh.esm.js} +52 -31
- package/dist/{faceCaptureManagerFactory-DiJ64oem.d.ts → faceCaptureManagerFactory-BxWPpxyd.d.ts} +63 -24
- package/dist/{faceCaptureSetup-BqhqfFHL.esm.js → faceCaptureSetup-C7Qv79fA.esm.js} +57 -36
- package/dist/faceMatchManager-BXp2WUT-.esm.js +201 -0
- package/dist/faceMatchManager-BnvrZM2F.d.ts +268 -0
- package/dist/{faceMatchStateMachine-MDb30gCm.esm.js → faceMatchStateMachine-CJiO2yLO.esm.js} +14 -10
- package/dist/feature-management-DS_Nj5Gg.esm.js +615 -0
- package/dist/feature-management.d.ts +173 -0
- package/dist/feature-management.esm.js +2 -0
- package/dist/field-comparison.d.ts +1 -4
- package/dist/field-comparison.esm.js +2 -7
- package/dist/{fieldComparisonManager-OLKVsG2Z.d.ts → fieldComparisonManager-CBvEGxFx.d.ts} +3 -5
- package/dist/{fieldComparisonManager-Cw4uzD7S.esm.js → fieldComparisonManager-DhnYdYZ2.esm.js} +6 -11
- package/dist/fiscal-qr.d.ts +1 -6
- package/dist/fiscal-qr.esm.js +14 -29
- package/dist/flow-events.d.ts +2 -9
- package/dist/flow.d.ts +59 -21
- package/dist/flow.esm.js +132 -49
- package/dist/{flowCompletionService-B6P6_EF3.esm.js → flowCompletionService-BSe3p7pg.esm.js} +4 -6
- package/dist/flowServices-unhF9V9F.esm.js +620 -0
- package/dist/geolocation.d.ts +1 -4
- package/dist/geolocation.esm.js +3 -9
- package/dist/{geolocationManager-CF6-NizA.esm.js → geolocationManager-Bv9MSVNr.esm.js} +44 -16
- package/dist/geolocationManager-Cz744E5S.d.ts +506 -0
- package/dist/{geolocationStateMachine-CD2XJs1b.esm.js → geolocationStateMachine-BxD6JK1M.esm.js} +53 -28
- package/dist/{getBrowser-1yNcfFZR.esm.js → getBrowser-Cb8Zgrgp.esm.js} +1 -2
- package/dist/getBrowser-DNrQeL4T.esm.js +16 -0
- package/dist/getDeviceClass-9y-kbVDw.esm.js +19 -0
- package/dist/{getDeviceClass-C-Dg6IsJ.esm.js → getDeviceClass-CeBiEayS.esm.js} +1 -2
- package/dist/getParsedUserAgent-pJjATANs.esm.js +1622 -0
- package/dist/government-validation.d.ts +3 -6
- package/dist/government-validation.esm.js +7 -13
- package/dist/{governmentValidationStateMachine-BE5wiQ7Y.esm.js → governmentValidationStateMachine-BYKYUdza.esm.js} +8 -11
- package/dist/home.d.ts +14 -22
- package/dist/home.esm.js +3 -8
- package/dist/http.d.ts +0 -1
- package/dist/http.esm.js +2 -4
- package/dist/id-ocr.d.ts +8 -7
- package/dist/id-ocr.esm.js +20 -9
- package/dist/id-selfie-flow.d.ts +179 -0
- package/dist/id-selfie-flow.esm.js +917 -0
- package/dist/id-verification.d.ts +2 -191
- package/dist/id-verification.esm.js +3 -43
- package/dist/id.d.ts +7 -18
- package/dist/id.esm.js +47 -53
- package/dist/{idCaptureDefaults-CZajItdO.esm.js → idCaptureDefaults-WeHbQM7W.esm.js} +54 -17
- package/dist/idCaptureManager-BjU-Wyow.d.ts +429 -0
- package/dist/{idCaptureManager-DASPUMtC.esm.js → idCaptureManager-BjiBSrHm.esm.js} +173 -34
- package/dist/idCaptureServices-CFDwqTtQ.esm.js +396 -0
- package/dist/{idCaptureStateMachine-DZ2ZTSxu.esm.js → idCaptureStateMachine-CRwQh8jc.esm.js} +438 -585
- package/dist/{idOcrManager-Tm4LzKR0.esm.js → idOcrManager-CvJZhmBR.esm.js} +4 -7
- package/dist/{idOcrManager-DLfAjDZn.d.ts → idOcrManager-DXc_xRN7.d.ts} +62 -229
- package/dist/{idOcrStateMachine-BJxZCxwS.esm.js → idOcrStateMachine-Bq_e3l4E.esm.js} +15 -20
- package/dist/idVerificationManager-BB4Pj_N6.d.ts +197 -0
- package/dist/idVerificationManager-CduNXhWd.esm.js +51 -0
- package/dist/{idVerificationStateMachine-DXN9WcdM.esm.js → idVerificationStateMachine-GEQWUPU2.esm.js} +5 -7
- package/dist/identity-reuse.d.ts +1 -4
- package/dist/identity-reuse.esm.js +3 -8
- package/dist/{identityReuseManager-LjkPvSQN.esm.js → identityReuseManager-D5vXknnJ.esm.js} +24 -7
- package/dist/{identityReuseManager-CLVOYxcp.d.ts → identityReuseManager-v2TH5g7e.d.ts} +38 -43
- package/dist/{identityReuseStateMachine-Bp-zONoV.esm.js → identityReuseStateMachine-AubRPhIi.esm.js} +6 -8
- package/dist/index-B8weJxmL.d.ts +1 -0
- package/dist/index-BKOWUhxG.d.ts +258 -0
- package/dist/{index-DrpWp15Z.d.ts → index-CLMF0QLQ.d.ts} +3 -3
- package/dist/index.d.ts +1 -3
- package/dist/index.esm.js +2 -15
- package/dist/{invokeOnCaptureCallback-CCS2Ruzi.esm.js → invokeOnCaptureCallback-1m1VJ3Q4.esm.js} +2 -4
- package/dist/{lib-Bjd6nOLG.esm.js → lib-DAyUtOTj.esm.js} +1510 -1589
- package/dist/mandatory-consent.d.ts +2 -10
- package/dist/mandatory-consent.esm.js +3 -8
- package/dist/{mandatoryConsentManager-DeBmOHcQ.d.ts → mandatoryConsentManager-B29kR0XA.d.ts} +60 -85
- package/dist/{mandatoryConsentManager-DZ26sg4B.esm.js → mandatoryConsentManager-BeELm1zS.esm.js} +4 -7
- package/dist/{mandatoryConsentStateMachine-_44ZoDSh.esm.js → mandatoryConsentStateMachine-zroQGzwb.esm.js} +5 -7
- package/dist/manualReviewService-D4IkipnN.esm.js +15 -0
- package/dist/{mediaRecorderOptions-CClCKAiF.esm.js → mediaRecorderOptions-dALSV8af.esm.js} +2 -4
- package/dist/{mediapipeShared-Bcmkzs3x.esm.js → mediapipeShared-B6oNoXEQ.esm.js} +21 -9
- package/dist/{onDeviceFaceResults-DILtthks.esm.js → onDeviceFaceResults-f81FVdQs.esm.js} +30 -87
- package/dist/openviduLazy-CCDpFWg1.esm.js +10 -0
- package/dist/{otp-B1YeyRXu.d.ts → otp-CEWfTj9v.d.ts} +0 -1
- package/dist/{otp-uaXiKt_R.esm.js → otp-D2k3PeSL.esm.js} +3 -14
- package/dist/{permissionGuards-BNOe4Tnu.esm.js → permissionGuards-KINpmKtI.esm.js} +2 -4
- package/dist/{permissionServices-C_kxhNeo.esm.js → permissionServices-UvUcOSRb.esm.js} +35 -28
- package/dist/personhood.d.ts +13 -20
- package/dist/personhood.esm.js +153 -85
- package/dist/phone.d.ts +1 -5
- package/dist/phone.esm.js +3 -10
- package/dist/{phoneManager-_KtitbUA.d.ts → phoneManager-BBU8Lq0O.d.ts} +4 -7
- package/dist/{phoneManager-CRblfdcI.esm.js → phoneManager-Cpiai2IM.esm.js} +82 -12
- package/dist/{phoneStateMachine-DjFGWMjQ.esm.js → phoneStateMachine-E1fUUcNM.esm.js} +7 -9
- package/dist/{platform-0Ot-bF_a.esm.js → platform-BJrm5nzZ.esm.js} +31 -11
- package/dist/privacyLensWorker-DI-Rg83h.esm.js +355 -0
- package/dist/qe-signature.d.ts +4 -6
- package/dist/qe-signature.esm.js +10 -11
- package/dist/{recordingService-CxaYkITO.esm.js → recordingService-CFpfdXSS.esm.js} +13 -31
- package/dist/redirect-to-mobile.d.ts +2 -6
- package/dist/redirect-to-mobile.esm.js +3 -10
- package/dist/{redirectToMobileManager-dv29o_LS.d.ts → redirectToMobileManager-BD2PvT5B.d.ts} +8 -44
- package/dist/{redirectToMobileManager-DbuNUlru.esm.js → redirectToMobileManager-C0dfc7f6.esm.js} +28 -8
- package/dist/{redirectToMobileStateMachine-BRaIJWOM.esm.js → redirectToMobileStateMachine-C9SYCJcH.esm.js} +74 -18
- package/dist/rolldown-runtime-FZ4Itg2g.esm.js +42 -0
- package/dist/{runChildModule-kojSv3MH.esm.js → runChildModule-DpvgAGFA.esm.js} +10 -9
- package/dist/{WasmUtilProvider-BgzcXBdl.esm.js → safeStorage-Ep56I-f_.esm.js} +98 -473
- package/dist/selfie.d.ts +8 -21
- package/dist/selfie.esm.js +40 -47
- package/dist/selfieErrorUtils-C2PYBVsp.esm.js +90 -0
- package/dist/{selfieManager-B1Px3GGa.esm.js → selfieManager-Br4onIMy.esm.js} +7 -10
- package/dist/{selfieManager-4juKfrHG.d.ts → selfieManager-DwlCppg0.d.ts} +3 -4
- package/dist/{selfieStateMachine-D0TS93Tu.esm.js → selfieStateMachine-CNGs8vFK.esm.js} +14 -29
- package/dist/{session-CLsU2Jnb.esm.js → session-CX2H3tmI.esm.js} +16 -7
- package/dist/session.d.ts +12 -10
- package/dist/session.esm.js +5 -15
- package/dist/sessionInitializer-CV6Rj_dn.esm.js +1865 -0
- package/dist/{setup-CfNsYAeB.esm.js → setup-CYdVacqv.esm.js} +319 -137
- package/dist/{setup-CmA2apmN.d.ts → setup-DywQeePQ.d.ts} +186 -4
- package/dist/signature.d.ts +2 -96
- package/dist/signature.esm.js +3 -108
- package/dist/signatureManager-DGBSWz2_.d.ts +106 -0
- package/dist/signatureManager-DdPgcmou.esm.js +113 -0
- package/dist/{signatureStateMachine-CdhlMih-.esm.js → signatureStateMachine-Cf73DGWO.esm.js} +5 -7
- package/dist/spawn-D9jgw9pW.d.ts +1441 -0
- package/dist/src-0Jurt29N.esm.js +4482 -0
- package/dist/{stats-BVy52wLy.esm.js → stats-B0nFKawG.esm.js} +3 -5
- package/dist/stats.esm.js +2 -5
- package/dist/topLevelStateName-B5i2avbh.esm.js +41 -0
- package/dist/{tri-CFAPtAUM.esm.js → tri-4RsGrIt6.esm.js} +3 -119
- package/dist/tri.d.ts +2 -2
- package/dist/tri.esm-BIjHhBJ2.esm.js +2620 -0
- package/dist/tri.esm.js +2 -4
- package/dist/trueSight-B8G85W4z.esm.js +1 -0
- package/dist/trueSightService-6dTpiaTh.esm.js +1894 -0
- package/dist/trust-graph.d.ts +4 -5
- package/dist/trust-graph.esm.js +13 -9
- package/dist/types-BEwVKkLJ.d.ts +15 -0
- package/dist/{types-BKLb3C42.esm.js → types-BN5RPPIZ.esm.js} +1 -2
- package/dist/types-BSBzhHRH.d.ts +57 -0
- package/dist/types-BX_XkMsQ2.d.ts +21 -0
- package/dist/types-BfHiko5D.d.ts +48 -0
- package/dist/{types-D8Cl1N2Z.d.ts → types-BfgmV7s72.d.ts} +2 -2
- package/dist/types-CJ7Yl9K-2.d.ts +164 -0
- package/dist/types-DPIDuhut.d.ts +40 -0
- package/dist/types-DVmXIdzW.d.ts +82 -0
- package/dist/types-DelMqZLe.d.ts +105 -0
- package/dist/types-EELWyWpd.d.ts +6 -0
- package/dist/{types-fO6KIdol.d.ts → types-Hmd7U0JA.d.ts} +80 -6
- package/dist/{types-BUgeB2X6.d.ts → types-KPvmag_B.d.ts} +7 -7
- package/dist/types-M6eb82ra2.d.ts +589 -0
- package/dist/{types-DV3wkhQ4.d.ts → types-Vb4P9ovf.d.ts} +1 -3
- package/dist/{urlUtils-CpiYwn7w.esm.js → urlUtils-D6phjq1-.esm.js} +1 -2
- package/dist/{video-ZY92rkel.esm.js → video-BtSWtHy1.esm.js} +1 -2
- package/dist/video-selfie.d.ts +71 -117
- package/dist/video-selfie.esm.js +575 -643
- package/dist/videoSelfieCameraWarmer-h_VUk5Vu.esm.js +651 -0
- package/dist/videoSelfieStepDetector-D3oo2ofo.d.ts +123 -0
- package/dist/wasm.d.ts +2 -4
- package/dist/wasm.esm.js +4 -15
- package/dist/wasmDefaults-DTUrftxR.esm.js +125 -0
- package/dist/{wasmDsFlagSync-Ch0mFJNT.esm.js → wasmDsFlagSync-BqUCwLY8.esm.js} +2 -4
- package/dist/wasmWebClient-DM8lkb0z.esm.js +407 -0
- package/dist/watchlist-for-business.d.ts +1 -3
- package/dist/watchlist-for-business.esm.js +9 -9
- package/dist/watchlist.d.ts +1 -52
- package/dist/watchlist.esm.js +3 -70
- package/dist/{watchlistForBusinessStateMachine-R1Yp1g5A.esm.js → watchlistForBusinessStateMachine-BcBMkMvV.esm.js} +5 -7
- package/dist/watchlistManager-CjSMmbyq.esm.js +83 -0
- package/dist/watchlistManager-DLXef90v.d.ts +68 -0
- package/dist/{watchlistStateMachine-D07UVq1m.esm.js → watchlistStateMachine-Bl7Wy9Cm.esm.js} +5 -7
- package/dist/workflow.d.ts +239 -203
- package/dist/workflow.esm.js +156 -101
- package/dist/xstate-actors.esm-CtI5S0f4.esm.js +310 -0
- package/dist/{xstate.esm-nY3M5UYm.esm.js → xstate.esm-Cf4e0Cfd.esm.js} +136 -610
- package/package.json +14 -9
- package/dist/Actor-BwgmOPkb.d.ts +0 -2
- package/dist/Face2DProvider-CZU11g6r.esm.js +0 -824
- package/dist/FaceDetectionProvider-CPWg-PAH.d.ts +0 -119
- package/dist/IWasmUtilCapability-DaSNxgA8.d.ts +0 -150
- package/dist/PrivacyLensProvider-B_zrV25p.esm.js +0 -339
- package/dist/StateMachine-D5WO6lHS.d.ts +0 -2
- package/dist/StreamCanvasCapture-DHaWferF.d.ts +0 -42
- package/dist/ae-signature-Pp4oCAHD.esm.js +0 -12
- package/dist/api-DsbUi7TO.esm.js +0 -72
- package/dist/browser-DlFgHpoC-Br3G10gw.esm.js +0 -1425
- package/dist/browserSimulation-DZwEy9bu.esm.js +0 -2804
- package/dist/camera-CxxXV0VN.esm.js +0 -79
- package/dist/canvas-90BqS0NF.d.ts +0 -112
- package/dist/chunk-CIKcdghV.esm.js +0 -49
- package/dist/clientLifecycle-VyzRfALg.esm.js +0 -534
- package/dist/cpf-ocr.d.ts +0 -10
- package/dist/cpf-ocr.esm.js +0 -8
- package/dist/cpfOcrManager-9eM4z4o7.esm.js +0 -190
- package/dist/cpfOcrManager-C5U9E0hf.d.ts +0 -216
- package/dist/createFaceAvatar-BZSg2MNo.esm.js +0 -46
- package/dist/deepsightLoader-CU_tiLMx.esm.js +0 -62
- package/dist/flowServices-DkQmOkLV.esm.js +0 -208
- package/dist/geolocationManager-DaHYFkVO.d.ts +0 -156
- package/dist/getDeviceClass-DIjnTPjR.esm.js +0 -14
- package/dist/http-CnsKEaJY.esm.js +0 -0
- package/dist/idCaptureManager-CwuXtVu6.d.ts +0 -1013
- package/dist/index-BAyZ8_iI.d.ts +0 -93
- package/dist/openviduLazy-jPgABwrt.esm.js +0 -3
- package/dist/openviduLazy-wEojM41w.esm.js +0 -12
- package/dist/qe-signature-BnWIpR-O.esm.js +0 -12
- package/dist/sessionInitializer-Dj7-aJaP.esm.js +0 -547
- package/dist/tri.esm-DDJ1zOqG.esm.js +0 -2593
- package/dist/types-BcF-fii5.d.ts +0 -5
- package/dist/videoSelfieSteps-Djpv7cjb.esm.js +0 -58
- /package/dist/{IVisibilityObserverCapability-BZ1rE7ly.d.ts → IVisibilityObserverCapability-D4tvIB5v.d.ts} +0 -0
- /package/dist/{camera-CKU96nwJ.d.ts → camera-9wWD-pwg.d.ts} +0 -0
- /package/dist/{flowCompletionService-BOSTlAWo.d.ts → flowCompletionService-BlAHsKyv.d.ts} +0 -0
- /package/dist/{types-BgjMAEXl.d.ts → types-Bk_6dmDa.d.ts} +0 -0
- /package/dist/{warmup-Dd0iq6KF.d.ts → warmup-Dv2alr2-.d.ts} +0 -0
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { n as eventModuleNames,
|
|
2
|
-
import {
|
|
3
|
-
import { t as
|
|
4
|
-
import { t as phoneMachine } from "./phoneStateMachine-DjFGWMjQ.esm.js";
|
|
5
|
-
|
|
1
|
+
import { n as eventModuleNames, o as createManagerInstrumentation } from "./events-CxfNJVZW.esm.js";
|
|
2
|
+
import { c as createManager, o as createActor } from "./xstate.esm-Cf4e0Cfd.esm.js";
|
|
3
|
+
import { t as phoneMachine } from "./phoneStateMachine-E1fUUcNM.esm.js";
|
|
6
4
|
//#region src/modules/phone/phoneActor.ts
|
|
7
5
|
function createPhoneActor(options) {
|
|
8
6
|
return createActor(phoneMachine, { input: { config: options.config } }).start();
|
|
9
7
|
}
|
|
10
|
-
|
|
11
8
|
//#endregion
|
|
12
9
|
//#region src/modules/phone/phoneManager.ts
|
|
13
10
|
/**
|
|
@@ -165,7 +162,7 @@ function mapState(snapshot) {
|
|
|
165
162
|
if (typedSnapshot.matches("resendingOtp")) return {
|
|
166
163
|
status: "resendingOtp",
|
|
167
164
|
otpCode: context.otpCode,
|
|
168
|
-
otpLength:
|
|
165
|
+
otpLength: 6
|
|
169
166
|
};
|
|
170
167
|
if (typedSnapshot.matches("sendingInitialOtp")) return { status: "sendingInitialOtp" };
|
|
171
168
|
if (typedSnapshot.matches("awaitingOtp")) return {
|
|
@@ -174,7 +171,7 @@ function mapState(snapshot) {
|
|
|
174
171
|
canResend: !context.resendTimerActive,
|
|
175
172
|
attemptsRemaining: context.attemptsRemaining,
|
|
176
173
|
otpCode: context.otpCode,
|
|
177
|
-
otpLength:
|
|
174
|
+
otpLength: 6,
|
|
178
175
|
otpValidationErrors: context.otpValidationErrors,
|
|
179
176
|
isOtpValid: Object.keys(context.otpValidationErrors ?? {}).length === 0
|
|
180
177
|
};
|
|
@@ -183,7 +180,7 @@ function mapState(snapshot) {
|
|
|
183
180
|
resendTimer: context.resendTimer,
|
|
184
181
|
canResend: !context.resendTimerActive,
|
|
185
182
|
otpCode: context.otpCode,
|
|
186
|
-
otpLength:
|
|
183
|
+
otpLength: 6
|
|
187
184
|
};
|
|
188
185
|
if (typedSnapshot.matches("otpError")) return {
|
|
189
186
|
status: "otpError",
|
|
@@ -192,7 +189,7 @@ function mapState(snapshot) {
|
|
|
192
189
|
resendTimer: context.resendTimer,
|
|
193
190
|
canResend: !context.resendTimerActive,
|
|
194
191
|
otpCode: context.otpCode,
|
|
195
|
-
otpLength:
|
|
192
|
+
otpLength: 6,
|
|
196
193
|
otpValidationErrors: context.otpValidationErrors,
|
|
197
194
|
isOtpValid: Object.keys(context.otpValidationErrors ?? {}).length === 0
|
|
198
195
|
};
|
|
@@ -205,9 +202,29 @@ function mapState(snapshot) {
|
|
|
205
202
|
}
|
|
206
203
|
function createApi({ actor, trackElementClicked }) {
|
|
207
204
|
return {
|
|
205
|
+
/**
|
|
206
|
+
* Initializes the phone verification flow.
|
|
207
|
+
* Transitions from 'idle' to 'loadingPrefill' or 'inputting'.
|
|
208
|
+
* Must be called before any other method.
|
|
209
|
+
*/
|
|
208
210
|
load() {
|
|
209
211
|
actor.send({ type: "LOAD" });
|
|
210
212
|
},
|
|
213
|
+
/**
|
|
214
|
+
* Sets the phone number for verification.
|
|
215
|
+
* Should be called when state is 'inputting'.
|
|
216
|
+
*
|
|
217
|
+
* @param phone - Full phone number with country code (e.g., '+14155551234')
|
|
218
|
+
* @param isValid - Whether the phone number passes validation
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```typescript
|
|
222
|
+
* // Using libphonenumber-js for validation
|
|
223
|
+
* import { isValidPhoneNumber } from 'libphonenumber-js';
|
|
224
|
+
* const phone = '+14155551234';
|
|
225
|
+
* phoneManager.setPhoneNumber(phone, isValidPhoneNumber(phone));
|
|
226
|
+
* ```
|
|
227
|
+
*/
|
|
211
228
|
setPhoneNumber(phone, isValid) {
|
|
212
229
|
actor.send({
|
|
213
230
|
type: "PHONE_CHANGED",
|
|
@@ -215,28 +232,67 @@ function createApi({ actor, trackElementClicked }) {
|
|
|
215
232
|
isValid
|
|
216
233
|
});
|
|
217
234
|
},
|
|
235
|
+
/**
|
|
236
|
+
* Validates the current phone number (e.g., on blur).
|
|
237
|
+
* Populates or clears `validationErrors.phone` on the 'inputting' state.
|
|
238
|
+
*/
|
|
218
239
|
validatePhone() {
|
|
219
240
|
actor.send({ type: "VALIDATE_PHONE" });
|
|
220
241
|
},
|
|
242
|
+
/**
|
|
243
|
+
* Sets the marketing opt-in preference.
|
|
244
|
+
* Only relevant if `config.optinEnabled` is true.
|
|
245
|
+
*
|
|
246
|
+
* @param granted - Whether the user consented to receive marketing messages
|
|
247
|
+
*/
|
|
221
248
|
setOptInGranted(granted) {
|
|
222
249
|
actor.send({
|
|
223
250
|
type: "OPT_IN_CHANGED",
|
|
224
251
|
granted
|
|
225
252
|
});
|
|
226
253
|
},
|
|
254
|
+
/**
|
|
255
|
+
* Submits the phone number for verification.
|
|
256
|
+
* Runs full validation first: if the phone is empty or invalid, populates
|
|
257
|
+
* `validationErrors` and stays on 'inputting'; otherwise transitions to
|
|
258
|
+
* 'submitting', then to 'sendingInitialOtp' or 'finished' (if no OTP).
|
|
259
|
+
*/
|
|
227
260
|
submit() {
|
|
228
261
|
trackElementClicked?.("submit");
|
|
229
262
|
actor.send({ type: "SUBMIT" });
|
|
230
263
|
},
|
|
264
|
+
/**
|
|
265
|
+
* Sets the OTP code without submitting.
|
|
266
|
+
* Use this for controlled input components.
|
|
267
|
+
*
|
|
268
|
+
* @param code - The OTP code entered by the user
|
|
269
|
+
*/
|
|
231
270
|
setOtpCode(code) {
|
|
232
271
|
actor.send({
|
|
233
272
|
type: "OTP_CHANGED",
|
|
234
273
|
code
|
|
235
274
|
});
|
|
236
275
|
},
|
|
276
|
+
/**
|
|
277
|
+
* Validates the current OTP code (e.g. on blur), without submitting.
|
|
278
|
+
* Populates or clears `otpValidationErrors.otp` on the 'awaitingOtp' /
|
|
279
|
+
* 'otpError' states (incomplete code → `isOtpValid` becomes false).
|
|
280
|
+
*/
|
|
237
281
|
validateOtp() {
|
|
238
282
|
actor.send({ type: "VALIDATE_OTP" });
|
|
239
283
|
},
|
|
284
|
+
/**
|
|
285
|
+
* Sets and submits the OTP code in one call.
|
|
286
|
+
* Should be called when state is 'awaitingOtp' or 'otpError'.
|
|
287
|
+
*
|
|
288
|
+
* @param code - The complete OTP code (typically 6 alphanumeric characters)
|
|
289
|
+
*
|
|
290
|
+
* @example
|
|
291
|
+
* ```typescript
|
|
292
|
+
* // Submit OTP when user completes entry
|
|
293
|
+
* phoneManager.submitOtp('HH36LP');
|
|
294
|
+
* ```
|
|
295
|
+
*/
|
|
240
296
|
submitOtp(code) {
|
|
241
297
|
trackElementClicked?.("submitOtp");
|
|
242
298
|
actor.send({
|
|
@@ -245,14 +301,29 @@ function createApi({ actor, trackElementClicked }) {
|
|
|
245
301
|
});
|
|
246
302
|
actor.send({ type: "VERIFY_OTP" });
|
|
247
303
|
},
|
|
304
|
+
/**
|
|
305
|
+
* Requests a new OTP code to be sent.
|
|
306
|
+
* Only works when state is 'awaitingOtp' and `canResend` is true.
|
|
307
|
+
* Resets the resend timer.
|
|
308
|
+
*/
|
|
248
309
|
resendOtp() {
|
|
249
310
|
trackElementClicked?.("resendOtp");
|
|
250
311
|
actor.send({ type: "RESEND_OTP" });
|
|
251
312
|
},
|
|
313
|
+
/**
|
|
314
|
+
* Returns to the phone input screen from OTP entry.
|
|
315
|
+
* Allows the user to change their phone number.
|
|
316
|
+
* Transitions from 'awaitingOtp' or 'otpError' back to 'inputting'.
|
|
317
|
+
*/
|
|
252
318
|
back() {
|
|
253
319
|
trackElementClicked?.("back");
|
|
254
320
|
actor.send({ type: "BACK" });
|
|
255
321
|
},
|
|
322
|
+
/**
|
|
323
|
+
* Resets the manager to initial state.
|
|
324
|
+
* Can be called from 'success' or 'error' states to start over.
|
|
325
|
+
* Clears all stored data including phone number and OTP.
|
|
326
|
+
*/
|
|
256
327
|
reset() {
|
|
257
328
|
actor.send({ type: "RESET" });
|
|
258
329
|
}
|
|
@@ -315,6 +386,5 @@ function createPhoneManagerFromActor(actor) {
|
|
|
315
386
|
instrumentation: createManagerInstrumentation(eventModuleNames.phone, { getEventScreenName: getPhoneScreenName })
|
|
316
387
|
});
|
|
317
388
|
}
|
|
318
|
-
|
|
319
389
|
//#endregion
|
|
320
|
-
export { createPhoneManagerFromActor as n, createPhoneManager as t };
|
|
390
|
+
export { createPhoneManagerFromActor as n, createPhoneManager as t };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { t as BrowserTimerProvider } from "./BrowserTimerProvider-
|
|
2
|
-
import { t as api } from "./api-
|
|
3
|
-
import { t as endpoints } from "./endpoints-
|
|
4
|
-
import {
|
|
5
|
-
import { n as
|
|
6
|
-
|
|
1
|
+
import { t as BrowserTimerProvider } from "./BrowserTimerProvider-BXhgNxLt.esm.js";
|
|
2
|
+
import { t as api } from "./api-Bx3gKW_y.esm.js";
|
|
3
|
+
import { t as endpoints } from "./endpoints-CCzL3XD_.esm.js";
|
|
4
|
+
import { r as assign, t as setup } from "./xstate.esm-Cf4e0Cfd.esm.js";
|
|
5
|
+
import { n as fromPromise, t as fromCallback } from "./xstate-actors.esm-CtI5S0f4.esm.js";
|
|
6
|
+
import { n as isOtpComplete, t as computeOtpValidationErrors } from "./otp-D2k3PeSL.esm.js";
|
|
7
7
|
//#region src/modules/phone/phoneServices.ts
|
|
8
8
|
function getPhoneServerFailureReason(error, invalidStatus) {
|
|
9
9
|
if (error.status === invalidStatus) return "invalidPhone";
|
|
@@ -53,7 +53,6 @@ async function verifyOtp(code, signal) {
|
|
|
53
53
|
throw new Error(getPhoneServerFailureReason(error));
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
|
|
57
56
|
//#endregion
|
|
58
57
|
//#region src/modules/phone/phoneStateMachine.ts
|
|
59
58
|
const RESEND_TIMER_SECONDS = 30;
|
|
@@ -381,6 +380,5 @@ const phoneMachine = setup({
|
|
|
381
380
|
} } }
|
|
382
381
|
}
|
|
383
382
|
});
|
|
384
|
-
|
|
385
383
|
//#endregion
|
|
386
|
-
export { phoneMachine as t };
|
|
384
|
+
export { phoneMachine as t };
|
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
//#region ../infra/src/capabilities/platform.ts
|
|
2
|
-
/**
|
|
3
|
-
* Platform detection utilities for camera operations.
|
|
4
|
-
* These are pure functions with no external dependencies and can be used by all layers.
|
|
5
|
-
*/
|
|
6
|
-
let uxType = null;
|
|
7
1
|
function isTouchDevice() {
|
|
8
2
|
return (typeof navigator !== "undefined" ? navigator.maxTouchPoints > 0 : false) || "ontouchstart" in (typeof document !== "undefined" ? document.documentElement : {});
|
|
9
3
|
}
|
|
10
|
-
function isTabletWithoutAndroid(userAgent) {
|
|
4
|
+
function isTabletWithoutAndroid(userAgent, hasTouch = isTouchDevice()) {
|
|
11
5
|
const isLinux = /Linux/i.test(userAgent);
|
|
12
6
|
const isChrome = /Chrome/i.test(userAgent) && !/Edge/i.test(userAgent);
|
|
13
|
-
return !/Mobile|Android/i.test(userAgent) && isLinux && isChrome &&
|
|
7
|
+
return !/Mobile|Android/i.test(userAgent) && isLinux && isChrome && hasTouch;
|
|
14
8
|
}
|
|
15
9
|
function isIOS(userAgent) {
|
|
16
10
|
const ua = userAgent || (typeof navigator !== "undefined" ? navigator.userAgent : "");
|
|
@@ -21,13 +15,40 @@ function isAndroid(userAgent) {
|
|
|
21
15
|
const ua = userAgent || (typeof navigator !== "undefined" ? navigator.userAgent : "");
|
|
22
16
|
return /Android/i.test(ua);
|
|
23
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* True when the page runs inside an Android WebView — web content hosted by a
|
|
20
|
+
* native app — rather than a standalone Android browser.
|
|
21
|
+
*
|
|
22
|
+
* This distinction matters for camera permission. A WebView has no persistent
|
|
23
|
+
* permission store: the host app answers every `getUserMedia` through
|
|
24
|
+
* `WebChromeClient.onPermissionRequest`, so
|
|
25
|
+
* `navigator.permissions.query({ name: 'camera' })` never reports `'granted'`
|
|
26
|
+
* there, no matter how many times access was granted. Standalone Android
|
|
27
|
+
* browsers do not behave that way, which is why callers must gate on this and
|
|
28
|
+
* not on `isAndroid()`.
|
|
29
|
+
*
|
|
30
|
+
* Two signals, because hosts may rewrite the UA:
|
|
31
|
+
* 1. Chromium stamps a `wv` token into the WebView UA (Android 4.4+). Definitive
|
|
32
|
+
* when present, so it is checked before any browser exclusions.
|
|
33
|
+
* 2. Otherwise the `Version/<n>` + `Chrome/<n>` pair — a WebView emits both,
|
|
34
|
+
* standalone Chrome for Android emits only `Chrome/<n>`.
|
|
35
|
+
*
|
|
36
|
+
* A host that rewrites the UA past recognition is not detectable here; those
|
|
37
|
+
* integrations keep the pre-existing behaviour and simply see `'prompt'`.
|
|
38
|
+
*/
|
|
39
|
+
function isAndroidWebView(userAgent) {
|
|
40
|
+
const ua = userAgent || (typeof navigator !== "undefined" ? navigator.userAgent : "");
|
|
41
|
+
if (!isAndroid(ua)) return false;
|
|
42
|
+
if (/;\s*wv\s*\)/i.test(ua)) return true;
|
|
43
|
+
if (/SamsungBrowser|Firefox|EdgA|OPR|OPT|YaBrowser|HuaweiBrowser/i.test(ua)) return false;
|
|
44
|
+
return /\bVersion\/[\d.]+/.test(ua) && /\bChrome\/[\d.]+/.test(ua);
|
|
45
|
+
}
|
|
24
46
|
function isIPad(userAgent) {
|
|
25
47
|
const ua = userAgent || (typeof navigator !== "undefined" ? navigator.userAgent : "");
|
|
26
48
|
const hasTouchPoints = typeof navigator !== "undefined" ? navigator.maxTouchPoints > 0 : false;
|
|
27
49
|
return /iPad/.test(ua) || /Mac OS/.test(ua) && hasTouchPoints && !/iPhone|iPod/.test(ua);
|
|
28
50
|
}
|
|
29
51
|
function isDesktop(userAgent) {
|
|
30
|
-
if (uxType) return uxType === "desktop";
|
|
31
52
|
const ua = userAgent || (typeof navigator !== "undefined" ? navigator.userAgent : "");
|
|
32
53
|
return !(/Mobile|Android/i.test(ua) || isTabletWithoutAndroid(ua) || isIOS(ua));
|
|
33
54
|
}
|
|
@@ -78,6 +99,5 @@ function isIPhone14OrHigher() {
|
|
|
78
99
|
const { outerHeight, outerWidth, innerHeight, innerWidth } = window;
|
|
79
100
|
return IPHONE_14_PLUS_DIMENSIONS.some((dims) => dims.outerHeight === outerHeight && dims.outerWidth === outerWidth || dims.innerHeight === innerHeight && dims.innerWidth === innerWidth);
|
|
80
101
|
}
|
|
81
|
-
|
|
82
102
|
//#endregion
|
|
83
|
-
export {
|
|
103
|
+
export { isIPad as a, isTabletWithoutAndroid as c, isIOS as i, isAndroidWebView as n, isIPhone14OrHigher as o, isDesktop as r, isSafari as s, isAndroid as t };
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import { n as createStatsWindow } from "./avatarStats-CdUOb3VD.esm.js";
|
|
2
|
+
//#region ../infra/src/avatar/framePacing.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a tolerance-based fps cap. The first frame is always accepted.
|
|
5
|
+
*
|
|
6
|
+
* The default is the literal `8` (= FRAME_PACER_TOLERANCE_MS), NOT the
|
|
7
|
+
* constant: this function is serialized into worker blobs via `toString()`,
|
|
8
|
+
* where a module-scope reference in a default parameter would ReferenceError
|
|
9
|
+
* at runtime on the first one-arg call — and no serialization test evaluates
|
|
10
|
+
* defaults, so it would ship silently.
|
|
11
|
+
*/
|
|
12
|
+
function createFramePacer(maxFps, toleranceMs = 8) {
|
|
13
|
+
const intervalMs = 1e3 / Math.max(maxFps, 1);
|
|
14
|
+
const minGapMs = Math.max(intervalMs - toleranceMs, 0);
|
|
15
|
+
let lastAcceptedAt = Number.NEGATIVE_INFINITY;
|
|
16
|
+
let dropped = 0;
|
|
17
|
+
return {
|
|
18
|
+
shouldRender(nowMs) {
|
|
19
|
+
if (nowMs - lastAcceptedAt >= minGapMs) {
|
|
20
|
+
lastAcceptedAt = nowMs;
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
dropped += 1;
|
|
24
|
+
return false;
|
|
25
|
+
},
|
|
26
|
+
get droppedCount() {
|
|
27
|
+
return dropped;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region ../infra/src/avatar/privacy-lens/privacyLensGlCore.ts
|
|
33
|
+
/**
|
|
34
|
+
* Builds the lens GL pipeline on `canvas`. Throws if WebGL is unavailable or
|
|
35
|
+
* the program fails to compile/link (callers fall back / surface the error).
|
|
36
|
+
* SELF-CONTAINED — see the module doc before editing.
|
|
37
|
+
*/
|
|
38
|
+
function createPrivacyLensGl(canvas, vertSrc, fragSrc, renderSize) {
|
|
39
|
+
canvas.width = renderSize;
|
|
40
|
+
canvas.height = renderSize;
|
|
41
|
+
const gl = canvas.getContext("webgl", {
|
|
42
|
+
alpha: false,
|
|
43
|
+
antialias: false,
|
|
44
|
+
premultipliedAlpha: false,
|
|
45
|
+
preserveDrawingBuffer: false
|
|
46
|
+
}) ?? canvas.getContext("experimental-webgl");
|
|
47
|
+
if (!gl) throw new Error("privacy-lens: WebGL is not available");
|
|
48
|
+
const compile = (type, src) => {
|
|
49
|
+
const shader = gl.createShader(type);
|
|
50
|
+
if (!shader) throw new Error("privacy-lens: createShader failed");
|
|
51
|
+
gl.shaderSource(shader, src);
|
|
52
|
+
gl.compileShader(shader);
|
|
53
|
+
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
54
|
+
const log = gl.getShaderInfoLog(shader);
|
|
55
|
+
gl.deleteShader(shader);
|
|
56
|
+
throw new Error(`privacy-lens: shader compile failed: ${log}`);
|
|
57
|
+
}
|
|
58
|
+
return shader;
|
|
59
|
+
};
|
|
60
|
+
const vs = compile(gl.VERTEX_SHADER, vertSrc);
|
|
61
|
+
const fs = compile(gl.FRAGMENT_SHADER, fragSrc);
|
|
62
|
+
const program = gl.createProgram();
|
|
63
|
+
if (!program) throw new Error("privacy-lens: createProgram failed");
|
|
64
|
+
gl.attachShader(program, vs);
|
|
65
|
+
gl.attachShader(program, fs);
|
|
66
|
+
gl.linkProgram(program);
|
|
67
|
+
gl.deleteShader(vs);
|
|
68
|
+
gl.deleteShader(fs);
|
|
69
|
+
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
|
|
70
|
+
const log = gl.getProgramInfoLog(program);
|
|
71
|
+
gl.deleteProgram(program);
|
|
72
|
+
throw new Error(`privacy-lens: program link failed: ${log}`);
|
|
73
|
+
}
|
|
74
|
+
gl.useProgram(program);
|
|
75
|
+
const quad = gl.createBuffer();
|
|
76
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, quad);
|
|
77
|
+
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
|
|
78
|
+
-1,
|
|
79
|
+
-1,
|
|
80
|
+
1,
|
|
81
|
+
-1,
|
|
82
|
+
-1,
|
|
83
|
+
1,
|
|
84
|
+
1,
|
|
85
|
+
1
|
|
86
|
+
]), gl.STATIC_DRAW);
|
|
87
|
+
const aPos = gl.getAttribLocation(program, "aPos");
|
|
88
|
+
gl.enableVertexAttribArray(aPos);
|
|
89
|
+
gl.vertexAttribPointer(aPos, 2, gl.FLOAT, false, 0, 0);
|
|
90
|
+
const videoTex = gl.createTexture();
|
|
91
|
+
if (!videoTex) throw new Error("privacy-lens: createTexture failed");
|
|
92
|
+
gl.bindTexture(gl.TEXTURE_2D, videoTex);
|
|
93
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
94
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
95
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
96
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
97
|
+
const uniformNames = [
|
|
98
|
+
"uVideo",
|
|
99
|
+
"uRes",
|
|
100
|
+
"uVideoRes",
|
|
101
|
+
"uTime",
|
|
102
|
+
"uFrost",
|
|
103
|
+
"uSandblast",
|
|
104
|
+
"uGrainSize",
|
|
105
|
+
"uWarmth",
|
|
106
|
+
"uBright",
|
|
107
|
+
"uShadow",
|
|
108
|
+
"uSun",
|
|
109
|
+
"uSunSpeed"
|
|
110
|
+
];
|
|
111
|
+
const uniforms = {};
|
|
112
|
+
for (let i = 0; i < uniformNames.length; i += 1) uniforms[uniformNames[i]] = gl.getUniformLocation(program, uniformNames[i]);
|
|
113
|
+
gl.uniform1i(uniforms.uVideo, 0);
|
|
114
|
+
if (uniforms.uRes) gl.uniform2f(uniforms.uRes, renderSize, renderSize);
|
|
115
|
+
gl.viewport(0, 0, renderSize, renderSize);
|
|
116
|
+
gl.clearColor(.88, .86, .83, 1);
|
|
117
|
+
let texWidth = 0;
|
|
118
|
+
let texHeight = 0;
|
|
119
|
+
let disposed = false;
|
|
120
|
+
const setF = (name, value) => {
|
|
121
|
+
const loc = uniforms[name];
|
|
122
|
+
if (loc) gl.uniform1f(loc, value);
|
|
123
|
+
};
|
|
124
|
+
return {
|
|
125
|
+
clear() {
|
|
126
|
+
if (disposed) return;
|
|
127
|
+
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
128
|
+
},
|
|
129
|
+
render(source, srcWidth, srcHeight, timeSec, params, measure) {
|
|
130
|
+
if (disposed) return null;
|
|
131
|
+
const t0 = measure ? performance.now() : 0;
|
|
132
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
133
|
+
gl.bindTexture(gl.TEXTURE_2D, videoTex);
|
|
134
|
+
if (srcWidth !== texWidth || srcHeight !== texHeight) {
|
|
135
|
+
texWidth = srcWidth;
|
|
136
|
+
texHeight = srcHeight;
|
|
137
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, texWidth, texHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
|
138
|
+
if (uniforms.uVideoRes) gl.uniform2f(uniforms.uVideoRes, texWidth, texHeight);
|
|
139
|
+
}
|
|
140
|
+
gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, source);
|
|
141
|
+
const t1 = measure ? performance.now() : 0;
|
|
142
|
+
setF("uTime", timeSec);
|
|
143
|
+
setF("uFrost", params.frost);
|
|
144
|
+
setF("uSandblast", params.sandblast);
|
|
145
|
+
setF("uGrainSize", params.grainSize);
|
|
146
|
+
setF("uWarmth", params.warmth);
|
|
147
|
+
setF("uBright", params.brightness);
|
|
148
|
+
setF("uShadow", params.shadowLift);
|
|
149
|
+
setF("uSun", params.sun);
|
|
150
|
+
setF("uSunSpeed", params.sunSpeed);
|
|
151
|
+
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
|
|
152
|
+
if (!measure) return null;
|
|
153
|
+
const t2 = performance.now();
|
|
154
|
+
return {
|
|
155
|
+
uploadMs: t1 - t0,
|
|
156
|
+
drawMs: t2 - t1
|
|
157
|
+
};
|
|
158
|
+
},
|
|
159
|
+
dispose() {
|
|
160
|
+
if (disposed) return;
|
|
161
|
+
disposed = true;
|
|
162
|
+
gl.deleteProgram(program);
|
|
163
|
+
gl.deleteBuffer(quad);
|
|
164
|
+
gl.deleteTexture(videoTex);
|
|
165
|
+
gl.getExtension("WEBGL_lose_context")?.loseContext();
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
//#endregion
|
|
170
|
+
//#region ../infra/src/avatar/privacy-lens/privacyLensWorker.ts
|
|
171
|
+
/**
|
|
172
|
+
* Worker mode for the privacy lens (ENG-49806 Plan B).
|
|
173
|
+
*
|
|
174
|
+
* Under a saturated main thread (the synchronous WASM detection pipeline can
|
|
175
|
+
* occupy it back-to-back on throttled/low-tier devices) a main-thread lens is
|
|
176
|
+
* starved to single-digit fps regardless of how cheap its frame is — measured
|
|
177
|
+
* at 1.6-3 fps with 0ms upload/draw. The fix is to take the main thread out of
|
|
178
|
+
* the frame path entirely: camera track → `MediaStreamTrackProcessor` →
|
|
179
|
+
* `VideoFrame` stream → worker → OffscreenCanvas WebGL. The main thread only
|
|
180
|
+
* bridges dev-tuning params and stats at 4 Hz.
|
|
181
|
+
*
|
|
182
|
+
* Support: Chromium 94+ (Chrome/Edge/Android WebView/Samsung Internet) — the
|
|
183
|
+
* low-tier Android target segment. Safari/Firefox and strict-CSP hosts that
|
|
184
|
+
* block blob workers fail the probe or the Worker constructor and fall back to
|
|
185
|
+
* the main-thread path automatically (`PrivacyLensProvider`).
|
|
186
|
+
*
|
|
187
|
+
* Packaging: the worker script is assembled AT RUNTIME from
|
|
188
|
+
* `Function.prototype.toString()` of the shared, self-contained functions
|
|
189
|
+
* (`createPrivacyLensGl`, `createFramePacer`, `createStatsWindow`,
|
|
190
|
+
* `privacyLensWorkerMain`) plus JSON-injected shader sources and stats/pacer
|
|
191
|
+
* constants, and loaded via a Blob URL. No separate worker chunk to ship —
|
|
192
|
+
* bundler-agnostic for npm and CDN consumers alike. The serialized functions
|
|
193
|
+
* must therefore never close over module-level values.
|
|
194
|
+
*/
|
|
195
|
+
/**
|
|
196
|
+
* Whether the worker path is available in this environment. All three probes
|
|
197
|
+
* must hold; anything missing (Safari's worker-only MSTP shape, Firefox, old
|
|
198
|
+
* WebView) routes to the main-thread fallback.
|
|
199
|
+
*/
|
|
200
|
+
function canUsePrivacyLensWorker() {
|
|
201
|
+
const g = globalThis;
|
|
202
|
+
if (typeof g.MediaStreamTrackProcessor !== "function" || typeof g.Worker !== "function" || typeof g.HTMLCanvasElement !== "function") return false;
|
|
203
|
+
return "transferControlToOffscreen" in g.HTMLCanvasElement.prototype;
|
|
204
|
+
}
|
|
205
|
+
/** Constructs a MediaStreamTrackProcessor (Chromium main-thread shape). */
|
|
206
|
+
function createTrackProcessor(track) {
|
|
207
|
+
const Ctor = globalThis.MediaStreamTrackProcessor;
|
|
208
|
+
if (!Ctor) throw new Error("MediaStreamTrackProcessor unavailable");
|
|
209
|
+
return new Ctor({ track });
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* The worker's entire logic. SELF-CONTAINED (serialized via toString into the
|
|
213
|
+
* blob): everything it needs arrives via `deps` / messages; no module refs.
|
|
214
|
+
* Frame loop: sequential read → pace → render → close. MSTP buffers at most
|
|
215
|
+
* one frame internally, so reads always yield the freshest frame and closing
|
|
216
|
+
* every frame promptly keeps the camera's frame pool healthy — an unclosed
|
|
217
|
+
* VideoFrame can stall the CAPTURE pipeline, which the lens must never do.
|
|
218
|
+
*/
|
|
219
|
+
function privacyLensWorkerMain(scope, deps) {
|
|
220
|
+
let gl = null;
|
|
221
|
+
let pacer = null;
|
|
222
|
+
let reader = null;
|
|
223
|
+
let params = null;
|
|
224
|
+
let statsEnabled = false;
|
|
225
|
+
let stopped = false;
|
|
226
|
+
let stats = null;
|
|
227
|
+
const pump = async () => {
|
|
228
|
+
const startTime = performance.now();
|
|
229
|
+
while (!stopped && reader && gl && pacer && params) {
|
|
230
|
+
let result;
|
|
231
|
+
try {
|
|
232
|
+
result = await reader.read();
|
|
233
|
+
} catch {
|
|
234
|
+
break;
|
|
235
|
+
}
|
|
236
|
+
if (result.done) break;
|
|
237
|
+
const frame = result.value;
|
|
238
|
+
try {
|
|
239
|
+
const now = performance.now();
|
|
240
|
+
if (!pacer.shouldRender(now)) {
|
|
241
|
+
if (statsEnabled) stats?.noteDropped();
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
const timing = gl.render(frame, frame.displayWidth, frame.displayHeight, (now - startTime) / 1e3, params, statsEnabled);
|
|
245
|
+
if (statsEnabled) stats?.noteRendered(now, timing?.uploadMs, timing?.drawMs);
|
|
246
|
+
} catch {} finally {
|
|
247
|
+
frame.close();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
scope.onmessage = (event) => {
|
|
252
|
+
const msg = event.data;
|
|
253
|
+
if (msg.type === "start") {
|
|
254
|
+
try {
|
|
255
|
+
gl = deps.createGl(msg.canvas, deps.vertSrc, deps.fragSrc, deps.renderSize);
|
|
256
|
+
gl.clear();
|
|
257
|
+
} catch (error) {
|
|
258
|
+
scope.postMessage({
|
|
259
|
+
type: "fatal",
|
|
260
|
+
message: String(error)
|
|
261
|
+
});
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
params = msg.params;
|
|
265
|
+
statsEnabled = msg.statsEnabled;
|
|
266
|
+
stats = deps.createStats({
|
|
267
|
+
variant: "privacy-lens",
|
|
268
|
+
mode: "worker",
|
|
269
|
+
publishIntervalMs: deps.publishIntervalMs,
|
|
270
|
+
gapWindow: deps.gapWindow,
|
|
271
|
+
publish: (snapshot) => scope.postMessage({
|
|
272
|
+
type: "stats",
|
|
273
|
+
snapshot
|
|
274
|
+
})
|
|
275
|
+
});
|
|
276
|
+
pacer = deps.createPacer(msg.maxFps, deps.frameToleranceMs);
|
|
277
|
+
reader = msg.readable.getReader();
|
|
278
|
+
scope.postMessage({ type: "started" });
|
|
279
|
+
pump();
|
|
280
|
+
} else if (msg.type === "params") params = msg.params;
|
|
281
|
+
else if (msg.type === "statsEnabled") statsEnabled = msg.value;
|
|
282
|
+
else if (msg.type === "stop") {
|
|
283
|
+
stopped = true;
|
|
284
|
+
try {
|
|
285
|
+
reader?.cancel();
|
|
286
|
+
} catch {}
|
|
287
|
+
gl?.dispose();
|
|
288
|
+
gl = null;
|
|
289
|
+
scope.postMessage({ type: "stopped" });
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Dev/build transforms that inject module-level references into function bodies.
|
|
295
|
+
* These pass `new Function(src)` (syntactically valid) but throw a
|
|
296
|
+
* `ReferenceError` at worker boot because the injected identifier
|
|
297
|
+
* (`$RefreshSig$`, `cov_xxx()`, …) doesn't exist in the worker scope — silently
|
|
298
|
+
* downgrading everyone to the slow main-thread path via the fatal→fallback net.
|
|
299
|
+
* The vite config excludes `packages/infra` from prefresh for this reason; this
|
|
300
|
+
* list is the runtime backstop for any other instrumenter (coverage, SSR, a
|
|
301
|
+
* consumer's bundler) that the config can't reach.
|
|
302
|
+
*/
|
|
303
|
+
const WORKER_SOURCE_SENTINELS = [
|
|
304
|
+
{
|
|
305
|
+
name: "prefresh / react-refresh",
|
|
306
|
+
pattern: /\$Refresh(Sig|Reg)\$/
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
name: "istanbul coverage",
|
|
310
|
+
pattern: /\bcov_[0-9a-zA-Z]+\(/
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
name: "vite SSR transform",
|
|
314
|
+
pattern: /__vite_ssr_/
|
|
315
|
+
}
|
|
316
|
+
];
|
|
317
|
+
/**
|
|
318
|
+
* Returns the name of the instrumenter that corrupted the serialized worker
|
|
319
|
+
* source, or null if the source is clean. Callers log loudly and fall back to
|
|
320
|
+
* the main-thread lens rather than booting a worker that will `ReferenceError`.
|
|
321
|
+
*/
|
|
322
|
+
function detectWorkerSourceInstrumentation(source) {
|
|
323
|
+
for (const sentinel of WORKER_SOURCE_SENTINELS) if (sentinel.pattern.test(source)) return sentinel.name;
|
|
324
|
+
return null;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Assembles the worker script from the serialized shared functions + injected
|
|
328
|
+
* shader sources and stats/pacer constants. Everything referenced must be
|
|
329
|
+
* self-contained (see module doc); the shaders and the numeric constants
|
|
330
|
+
* (`PUBLISH_INTERVAL_MS`, `GAP_WINDOW`, `FRAME_PACER_TOLERANCE_MS`) are injected
|
|
331
|
+
* as literals so the worker never depends on this module's scope.
|
|
332
|
+
*/
|
|
333
|
+
function buildPrivacyLensWorkerSource(options) {
|
|
334
|
+
if (!Number.isFinite(options.renderSize)) throw new Error(`privacy-lens: renderSize must be finite, got ${String(options.renderSize)}`);
|
|
335
|
+
return [
|
|
336
|
+
"\"use strict\";",
|
|
337
|
+
`const createGl = ${createPrivacyLensGl.toString()};`,
|
|
338
|
+
`const createPacer = ${createFramePacer.toString()};`,
|
|
339
|
+
`const createStats = ${createStatsWindow.toString()};`,
|
|
340
|
+
`const workerMain = ${privacyLensWorkerMain.toString()};`,
|
|
341
|
+
`workerMain(self, {
|
|
342
|
+
createGl,
|
|
343
|
+
createPacer,
|
|
344
|
+
createStats,
|
|
345
|
+
vertSrc: ${JSON.stringify(options.vertSrc)},
|
|
346
|
+
fragSrc: ${JSON.stringify(options.fragSrc)},
|
|
347
|
+
renderSize: ${JSON.stringify(options.renderSize)},
|
|
348
|
+
publishIntervalMs: ${JSON.stringify(500)},
|
|
349
|
+
gapWindow: ${JSON.stringify(128)},
|
|
350
|
+
frameToleranceMs: ${JSON.stringify(8)},
|
|
351
|
+
});`
|
|
352
|
+
].join("\n");
|
|
353
|
+
}
|
|
354
|
+
//#endregion
|
|
355
|
+
export { createPrivacyLensGl as a, detectWorkerSourceInstrumentation as i, canUsePrivacyLensWorker as n, createFramePacer as o, createTrackProcessor as r, buildPrivacyLensWorkerSource as t };
|
package/dist/qe-signature.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import {
|
|
3
|
-
import "./
|
|
4
|
-
import
|
|
5
|
-
|
|
1
|
+
import { t as Manager } from "./Manager-CQQ99QOI.js";
|
|
2
|
+
import { _ as getDefaultConsentChecks, a as ElectronicSignatureConfig, d as QE_CONSENT_KEYS, h as areAllConsented, i as ConsentKey, r as ConsentChecks, s as ElectronicSignatureDocument } from "./types-DVmXIdzW.js";
|
|
3
|
+
import { n as ElectronicSignatureState, o as electronicSignatureMachine } from "./electronicSignatureManager-CcUXQZS7.js";
|
|
4
|
+
import "./electronic-signature.js";
|
|
6
5
|
//#region src/modules/qe-signature/index.d.ts
|
|
7
|
-
|
|
8
6
|
type QeSignatureConfig = Omit<ElectronicSignatureConfig, 'variant'>;
|
|
9
7
|
declare function createQeSignatureManager(options: {
|
|
10
8
|
config: QeSignatureConfig;
|
package/dist/qe-signature.esm.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export { QE_CONSENT_KEYS, areAllConsented, createQeSignatureManager, getDefaultConsentChecks, electronicSignatureMachine as qeSignatureMachine };
|
|
1
|
+
import { a as QE_CONSENT_KEYS, c as getDefaultConsentChecks, o as areAllConsented, r as electronicSignatureMachine, t as createElectronicSignatureManager } from "./electronicSignatureManager-DRYlHPjT.esm.js";
|
|
2
|
+
//#region src/modules/qe-signature/index.ts
|
|
3
|
+
function createQeSignatureManager(options) {
|
|
4
|
+
return createElectronicSignatureManager({ config: {
|
|
5
|
+
...options.config,
|
|
6
|
+
variant: "qe"
|
|
7
|
+
} });
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { QE_CONSENT_KEYS, areAllConsented, createQeSignatureManager, getDefaultConsentChecks, electronicSignatureMachine as qeSignatureMachine };
|