@incodetech/core 0.0.0-dev-20260701-bdeaa221 → 0.0.0-dev-20260701-b6fc71dc
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/{addressSearch-BGuQejtl.esm.js → addressSearch-C6cEsEqK.esm.js} +1 -1
- package/dist/{ae-signature-G5MZoOKy.esm.js → ae-signature-hbFTJkGk.esm.js} +1 -1
- package/dist/ae-signature.d.ts +1 -1
- package/dist/ae-signature.esm.js +3 -3
- package/dist/antifraud.esm.js +3 -3
- package/dist/{antifraudManager-BwWxvE5A.esm.js → antifraudManager-BKdQoMFf.esm.js} +2 -2
- package/dist/{antifraudStateMachine-DLKtOiwd.esm.js → antifraudStateMachine-C0NGnP9W.esm.js} +1 -1
- package/dist/authentication.esm.js +5 -5
- package/dist/{authenticationManager-Mk-k_cwG.esm.js → authenticationManager-BVM5Czih.esm.js} +3 -3
- package/dist/{authenticationStateMachine-BMnMVLy-.esm.js → authenticationStateMachine-BUb8hzFa.esm.js} +2 -2
- package/dist/certificate-issuance.d.ts +28 -28
- package/dist/certificate-issuance.esm.js +2 -2
- package/dist/{certificateIssuanceStateMachine-x9HFaxKK.esm.js → certificateIssuanceStateMachine-BGtRVDgj.esm.js} +1 -1
- package/dist/consent.d.ts +1 -1
- package/dist/consent.esm.js +3 -3
- package/dist/{consentManager-Cj83yok8.esm.js → consentManager-BtnPZUW4.esm.js} +2 -2
- package/dist/{consentManager-B--Uv8aw.d.ts → consentManager-DTzlkzyY.d.ts} +52 -52
- package/dist/{consentStateMachine-YtU_4jUt.esm.js → consentStateMachine-DO2JqoZW.esm.js} +1 -1
- package/dist/cpf-ocr.d.ts +1 -1
- package/dist/cpf-ocr.esm.js +2 -2
- package/dist/{cpfOcrManager-D8H0HGKj.esm.js → cpfOcrManager-C4rLgKsu.esm.js} +1 -1
- package/dist/{cpfOcrManager-C0BUpDyT.d.ts → cpfOcrManager-DvYfmJuu.d.ts} +20 -20
- package/dist/cross-document-data-match.esm.js +1 -1
- package/dist/curp-validation.esm.js +3 -3
- package/dist/{curpValidationManager-DRHOME_q.esm.js → curpValidationManager-BafobPXC.esm.js} +2 -2
- package/dist/{curpValidationStateMachine-B68HEUSO.esm.js → curpValidationStateMachine-DXTPK6vI.esm.js} +1 -1
- package/dist/custom-fields.esm.js +1 -1
- package/dist/custom-watchlist.esm.js +2 -2
- package/dist/{customWatchlistStateMachine-ji778XCE.esm.js → customWatchlistStateMachine-B4G3Chkx.esm.js} +1 -1
- package/dist/document-capture.d.ts +173 -173
- package/dist/document-capture.esm.js +2 -2
- package/dist/document-upload.d.ts +46 -46
- package/dist/document-upload.esm.js +1 -1
- package/dist/{documentCaptureStateMachine-BKXzGfAp.esm.js → documentCaptureStateMachine-DSOX2epf.esm.js} +1 -1
- package/dist/dynamic-forms.esm.js +2 -2
- package/dist/{dynamicFormsStateMachine-BZSn4t1z.esm.js → dynamicFormsStateMachine-BXHcaocI.esm.js} +1 -1
- package/dist/ekyb.esm.js +6 -6
- package/dist/{ekybStateMachine-DiyeD-bn.esm.js → ekybStateMachine-CTf3nb0j.esm.js} +3 -3
- package/dist/ekyc.esm.js +3 -3
- package/dist/{ekycStateMachine-C9681Yzd.esm.js → ekycStateMachine-Bytm3LyZ.esm.js} +2 -2
- package/dist/electronic-signature.d.ts +1 -1
- package/dist/electronic-signature.esm.js +2 -2
- package/dist/{electronicSignatureManager-DTX6Pccb.esm.js → electronicSignatureManager-BNglIp7-.esm.js} +1 -1
- package/dist/email.esm.js +3 -3
- package/dist/{emailManager-CyJ3OwB0.esm.js → emailManager-CH6GlUSk.esm.js} +2 -2
- package/dist/{emailStateMachine-DlZr3jep.esm.js → emailStateMachine-CajoaJk-.esm.js} +1 -1
- package/dist/extensibility.d.ts +5 -5
- package/dist/extensibility.esm.js +29 -29
- package/dist/face-match.esm.js +2 -2
- package/dist/{faceCaptureManagerFactory-C6K2AbsU.esm.js → faceCaptureManagerFactory-BbFl762r.esm.js} +2 -2
- package/dist/{faceCaptureSetup-Bq_wPGhK.esm.js → faceCaptureSetup-CIkrBLYz.esm.js} +1 -1
- package/dist/{faceMatchStateMachine-v8z7PvvD.esm.js → faceMatchStateMachine-CDx5ZRhv.esm.js} +1 -1
- package/dist/field-comparison.esm.js +2 -2
- package/dist/{fieldComparisonManager-D0RJA6Qx.esm.js → fieldComparisonManager-Bf42dczM.esm.js} +1 -1
- package/dist/fiscal-qr.esm.js +1 -1
- package/dist/flow.d.ts +2 -2
- package/dist/flow.esm.js +5 -5
- package/dist/{flowServices-nx81re-L.esm.js → flowServices-B0ai-ANo.esm.js} +1 -1
- package/dist/geolocation.esm.js +2 -2
- package/dist/{geolocationStateMachine-5NOAiXiW.esm.js → geolocationStateMachine-BYfOOOG0.esm.js} +1 -1
- package/dist/government-validation.esm.js +2 -2
- package/dist/{governmentValidationStateMachine-DK1YeRDr.esm.js → governmentValidationStateMachine-yCQaD7zl.esm.js} +1 -1
- package/dist/home.d.ts +10 -10
- package/dist/home.esm.js +1 -1
- package/dist/id-ocr.d.ts +55 -55
- package/dist/id-ocr.esm.js +2 -2
- package/dist/id-verification.d.ts +25 -25
- package/dist/id-verification.esm.js +2 -2
- package/dist/id.d.ts +1 -1
- package/dist/id.esm.js +5 -5
- package/dist/{idCaptureManager-CeaNK-Ve.esm.js → idCaptureManager-FXTdeOsf.esm.js} +4 -3
- package/dist/{idCaptureManager-DDkfMlsm.d.ts → idCaptureManager-fvEYwU_l.d.ts} +16 -9
- package/dist/{idCaptureStateMachine-DdlLGjwa.esm.js → idCaptureStateMachine-BlLvve6M.esm.js} +193 -141
- package/dist/{idOcrStateMachine-Tr48722s.esm.js → idOcrStateMachine-6vUdYjRV.esm.js} +1 -1
- package/dist/{idVerificationStateMachine-DwjJiKun.esm.js → idVerificationStateMachine-cT7LtSYe.esm.js} +1 -1
- package/dist/identity-reuse.d.ts +1 -1
- package/dist/identity-reuse.esm.js +3 -3
- package/dist/{identityReuseManager-piMy-REi.d.ts → identityReuseManager-BOnaxwJI.d.ts} +35 -35
- package/dist/{identityReuseManager-DjhuypVV.esm.js → identityReuseManager-BeyKVX1g.esm.js} +2 -2
- package/dist/{identityReuseStateMachine-CE7CiLs9.esm.js → identityReuseStateMachine-BYYzDw-l.esm.js} +1 -1
- package/dist/{index-B75DQgX_.d.ts → index-E3D7OvnG.d.ts} +168 -168
- package/dist/index.esm.js +3 -3
- package/dist/mandatory-consent.d.ts +1 -1
- package/dist/mandatory-consent.esm.js +3 -3
- package/dist/{mandatoryConsentManager-CwQSmcyl.esm.js → mandatoryConsentManager-CNbs9cub.esm.js} +2 -2
- package/dist/{mandatoryConsentManager-BT8eEhPZ.d.ts → mandatoryConsentManager-CyoaXoEe.d.ts} +52 -52
- package/dist/{mandatoryConsentStateMachine-DMHuQ9p6.esm.js → mandatoryConsentStateMachine-DgAXyMs4.esm.js} +1 -1
- package/dist/personhood.esm.js +1 -1
- package/dist/phone.esm.js +3 -3
- package/dist/{phoneManager-DoREHm5q.esm.js → phoneManager-CiiQOE21.esm.js} +2 -2
- package/dist/{phoneStateMachine-DBCFyMqD.esm.js → phoneStateMachine-sn2Nt44W.esm.js} +1 -1
- package/dist/{qe-signature-CvRT6Nr8.esm.js → qe-signature-D5gwX-fY.esm.js} +1 -1
- package/dist/qe-signature.d.ts +1 -1
- package/dist/qe-signature.esm.js +3 -3
- package/dist/redirect-to-mobile.esm.js +3 -3
- package/dist/{redirectToMobileManager-BlK4U22c.esm.js → redirectToMobileManager-DIc_xDDn.esm.js} +2 -2
- package/dist/{redirectToMobileStateMachine-DbHl-Hnq.esm.js → redirectToMobileStateMachine-H-iEztA6.esm.js} +1 -1
- package/dist/{runChildModule-Cm4q5mtc.esm.js → runChildModule-Wr_2wB1m.esm.js} +1 -1
- package/dist/selfie.esm.js +5 -5
- package/dist/{selfieManager-mMYgwONo.esm.js → selfieManager-CjFFQTKK.esm.js} +3 -3
- package/dist/{selfieStateMachine-j8QNgRSM.esm.js → selfieStateMachine-2UJDOv3d.esm.js} +2 -2
- package/dist/session.esm.js +2 -2
- package/dist/{sessionInitializer-BPoQYSR2.esm.js → sessionInitializer-Dfc__RkA.esm.js} +2 -2
- package/dist/{setup-DttzrMgn.esm.js → setup-f4ttZO62.esm.js} +2 -2
- package/dist/signature.esm.js +2 -2
- package/dist/{signatureStateMachine-Ds7LOonk.esm.js → signatureStateMachine-c-HlL0-y.esm.js} +1 -1
- package/dist/{tri-RHgg98ap.esm.js → tri-D6YWLiyE.esm.js} +10 -0
- package/dist/tri.esm.js +1 -1
- package/dist/trust-graph.d.ts +2 -2
- package/dist/trust-graph.esm.js +1 -1
- package/dist/video-selfie.d.ts +2 -2
- package/dist/video-selfie.esm.js +4 -4
- package/dist/wasm.esm.js +3 -3
- package/dist/watchlist-for-business.esm.js +2 -2
- package/dist/watchlist.esm.js +2 -2
- package/dist/{watchlistForBusinessStateMachine-DXpbE4Sx.esm.js → watchlistForBusinessStateMachine-DNaxGviI.esm.js} +1 -1
- package/dist/{watchlistStateMachine-ByxT83kR.esm.js → watchlistStateMachine-DPLVxv_x.esm.js} +1 -1
- package/dist/workflow.d.ts +156 -156
- package/dist/workflow.esm.js +35 -35
- package/dist/{xstate.esm-r0zHjE2E.esm.js → xstate.esm-Bomq1a0z.esm.js} +41 -1
- package/package.json +1 -1
package/dist/id.esm.js
CHANGED
|
@@ -6,13 +6,13 @@ import { n as eventModuleNames } from "./types-ElOJAGaM.esm.js";
|
|
|
6
6
|
import "./endpoints-BzMJFAPV.esm.js";
|
|
7
7
|
import "./stats-CYcScXcO.esm.js";
|
|
8
8
|
import "./browserSimulation-TsSoavQv.esm.js";
|
|
9
|
-
import "./sessionInitializer-
|
|
9
|
+
import "./sessionInitializer-Dfc__RkA.esm.js";
|
|
10
10
|
import "./getDeviceData-TrKM8NPh.esm.js";
|
|
11
11
|
import "./thumbmarkAdapter-fHBUDlAP.esm.js";
|
|
12
12
|
import "./IpifyProvider-BRW14_uo.esm.js";
|
|
13
13
|
import "./platform-uIVQUnJP.esm.js";
|
|
14
|
-
import "./tri-
|
|
15
|
-
import { a as fromPromise, r as assign, s as createActor } from "./xstate.esm-
|
|
14
|
+
import "./tri-D6YWLiyE.esm.js";
|
|
15
|
+
import { a as fromPromise, r as assign, s as createActor } from "./xstate.esm-Bomq1a0z.esm.js";
|
|
16
16
|
import "./apiError-C7SFQTB2.esm.js";
|
|
17
17
|
import "./BrowserVisibilityObserverProvider-rim9Jrz-.esm.js";
|
|
18
18
|
import "./MotionSensorProvider-DCbId4De.esm.js";
|
|
@@ -33,9 +33,9 @@ import "./permissionGuards-BR2oN573.esm.js";
|
|
|
33
33
|
import "./recordingService-D8zRQbVb.esm.js";
|
|
34
34
|
import "./mediaRecorderOptions-C3NAkVgK.esm.js";
|
|
35
35
|
import "./session-D4m9r-7U.esm.js";
|
|
36
|
-
import { a as
|
|
36
|
+
import { a as preloadIdRecordingProvider, c as stopRecording, d as uploadManualIdFile, f as validateUploadResponse, g as MANUAL_UPLOAD_MAX_RETRIES, h as MANUAL_UPLOAD_MAX_FILE_SIZE_BYTES, i as initializeIdCapture, l as stopStream, m as MANUAL_UPLOAD_EXHAUSTION_FORWARD_MS, o as processId, p as ID_ERROR_CODES, s as startRecordingSession, t as idCaptureMachine, u as uploadIdImage } from "./idCaptureStateMachine-BlLvve6M.esm.js";
|
|
37
37
|
import "./idCaptureDefaults-GTCesE6K.esm.js";
|
|
38
|
-
import { n as createIdCaptureActor, r as createIdCaptureManagerFromActor, t as createIdCaptureManager } from "./idCaptureManager-
|
|
38
|
+
import { n as createIdCaptureActor, r as createIdCaptureManagerFromActor, t as createIdCaptureManager } from "./idCaptureManager-FXTdeOsf.esm.js";
|
|
39
39
|
import { t as invokeOnCaptureCallback } from "./invokeOnCaptureCallback-DrpXOwkG.esm.js";
|
|
40
40
|
|
|
41
41
|
//#region src/modules/id/idCaptureOnlyStateMachine.ts
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { n as createManagerInstrumentation, t as topLevelStateName } from "./events-CqGY1yMq.esm.js";
|
|
2
2
|
import { n as eventModuleNames } from "./types-ElOJAGaM.esm.js";
|
|
3
|
-
import {
|
|
3
|
+
import { l as createManager, s as createActor } from "./xstate.esm-Bomq1a0z.esm.js";
|
|
4
4
|
import { n as setWasmDsFlagSync, t as BrowserVisibilityObserverProvider } from "./BrowserVisibilityObserverProvider-rim9Jrz-.esm.js";
|
|
5
5
|
import { o as resetWasmMotionPrimedForModule, r as primeMotionFromUserGestureIfNeeded } from "./permissionServices-BJhGL13R.esm.js";
|
|
6
6
|
import { t as BrowserStorageProvider } from "./BrowserStorageProvider-CrrN540a.esm.js";
|
|
7
|
-
import {
|
|
7
|
+
import { _ as mapDigitalIdScreenName, n as MAX_EXPIRED_FIRST_SIDE_ATTEMPTS, r as mapIdManualUploadScreenName, t as idCaptureMachine } from "./idCaptureStateMachine-BlLvve6M.esm.js";
|
|
8
8
|
|
|
9
9
|
//#region src/internal/idCapture/idCaptureManagerFactory.ts
|
|
10
10
|
function getPermissionStatus(snapshot) {
|
|
@@ -236,9 +236,10 @@ function mapState(snapshot) {
|
|
|
236
236
|
if (snapshot.matches("expiredExhausted")) return { status: "expiredExhausted" };
|
|
237
237
|
if (snapshot.matches("expired")) {
|
|
238
238
|
const counter = context.expiredFromUpload ? context.expiredAttempts : context.processingExpiredAttempts;
|
|
239
|
+
const cap = context.expiredFromUpload ? MAX_EXPIRED_FIRST_SIDE_ATTEMPTS : context.config.captureAttempts;
|
|
239
240
|
return {
|
|
240
241
|
status: "expired",
|
|
241
|
-
attemptsRemaining: Math.max(0,
|
|
242
|
+
attemptsRemaining: Math.max(0, cap - counter),
|
|
242
243
|
currentMode: context.currentMode
|
|
243
244
|
};
|
|
244
245
|
}
|
|
@@ -423,8 +423,11 @@ type IdCaptureContext = {
|
|
|
423
423
|
attemptsRemaining: number;
|
|
424
424
|
/**
|
|
425
425
|
* Number of consecutive `isDocumentExpired === true` upload responses for
|
|
426
|
-
* the current side. Reset on side
|
|
427
|
-
*
|
|
426
|
+
* the current side (V1's `expiredFirstSideAttempt`). Reset on every side
|
|
427
|
+
* change; preserved across the same-side soft-retry cycle
|
|
428
|
+
* (`expired → capture`). Compared against `config.captureAttempts`. This is
|
|
429
|
+
* a per-side local counter only — the cross-side expired-back→front redirect
|
|
430
|
+
* is bounded separately by `expiredRedirected` (see below).
|
|
428
431
|
*/
|
|
429
432
|
expiredAttempts: number;
|
|
430
433
|
/**
|
|
@@ -470,14 +473,18 @@ type IdCaptureContext = {
|
|
|
470
473
|
*/
|
|
471
474
|
forceFinishAfterProcessing: boolean;
|
|
472
475
|
/**
|
|
473
|
-
*
|
|
474
|
-
*
|
|
475
|
-
* (
|
|
476
|
-
*
|
|
477
|
-
*
|
|
478
|
-
*
|
|
476
|
+
* One-shot flag (V1's `expiredRedirected`). Set when an expired BACK upload
|
|
477
|
+
* in a multi-side flow sends the user back to FRONT capture for one more
|
|
478
|
+
* attempt (Figma Story #2.1 / ENG-46592). Session-global — preserved across
|
|
479
|
+
* the front/back side resets so it survives the flip cycle. Once set, any
|
|
480
|
+
* further expired upload routes straight to `expiredExhausted` instead of
|
|
481
|
+
* redirecting again, so the back→front redirect happens AT MOST ONCE per
|
|
482
|
+
* session. This is what keeps total captures within the backend's
|
|
483
|
+
* max-attempts/OCR cap (re-respects ENG-45666). Session-global: preserved
|
|
484
|
+
* across side resets and mid-flow `resetContext` restarts (like V1's
|
|
485
|
+
* localStorage flag); a fresh session starts it `false`.
|
|
479
486
|
*/
|
|
480
|
-
|
|
487
|
+
expiredRedirected: boolean;
|
|
481
488
|
uploadError: IdErrorCode | undefined;
|
|
482
489
|
permissionResult: PermissionResult | 'refresh' | undefined;
|
|
483
490
|
resetDetection: (() => void) | undefined;
|
package/dist/{idCaptureStateMachine-DdlLGjwa.esm.js → idCaptureStateMachine-BlLvve6M.esm.js}
RENAMED
|
@@ -3,9 +3,9 @@ import { r as getToken, t as api } from "./api-DsbUi7TO.esm.js";
|
|
|
3
3
|
import { v as revokeObjectURL } from "./events-CqGY1yMq.esm.js";
|
|
4
4
|
import { t as endpoints } from "./endpoints-BzMJFAPV.esm.js";
|
|
5
5
|
import { t as addDeviceStats } from "./stats-CYcScXcO.esm.js";
|
|
6
|
-
import { t as getDisableIpify } from "./sessionInitializer-
|
|
6
|
+
import { t as getDisableIpify } from "./sessionInitializer-Dfc__RkA.esm.js";
|
|
7
7
|
import { n as isDesktop } from "./platform-uIVQUnJP.esm.js";
|
|
8
|
-
import { a as fromPromise, i as fromCallback, n as sendTo, o as and, r as assign, t as setup } from "./xstate.esm-
|
|
8
|
+
import { a as fromPromise, c as not, i as fromCallback, n as sendTo, o as and, r as assign, t as setup } from "./xstate.esm-Bomq1a0z.esm.js";
|
|
9
9
|
import { n as invokeRequestPermissionActor, t as checkPermission } from "./permissionServices-BJhGL13R.esm.js";
|
|
10
10
|
import { _ as stopRecording$1, g as startRecording, h as createRecordingSession, y as StreamCanvasProcessingSession } from "./onDeviceFaceResults-DlErdHcT.esm.js";
|
|
11
11
|
import { t as IncodeCanvas } from "./canvas-_I95hkPg.esm.js";
|
|
@@ -1166,6 +1166,157 @@ function mapIdManualUploadScreenName(value, context) {
|
|
|
1166
1166
|
return "IDmanual.upload.uploadedFront";
|
|
1167
1167
|
}
|
|
1168
1168
|
|
|
1169
|
+
//#endregion
|
|
1170
|
+
//#region src/modules/id/idCaptureGuards.ts
|
|
1171
|
+
const hasShowTutorialGuard = ({ context }) => context.config.showTutorial;
|
|
1172
|
+
const hasAgeAssuranceGuard = ({ context }) => context.config.ageAssurance === true;
|
|
1173
|
+
const hasShowDocumentChooserGuard = ({ context }) => !context.config.onlyBack && (context.config.showDocumentChooserScreen ?? false);
|
|
1174
|
+
const isPermissionGrantedGuard = ({ event }) => {
|
|
1175
|
+
if ("output" in event) return event.output === "granted";
|
|
1176
|
+
return false;
|
|
1177
|
+
};
|
|
1178
|
+
const isReadyForCaptureGuard = ({ context, event }) => {
|
|
1179
|
+
return isReadyForCaptureFromPermission(resolveStoredPermissionResult("output" in event ? event.output : void 0, context.permissionResult), context.config.ds);
|
|
1180
|
+
};
|
|
1181
|
+
const needsMotionPrimeOnlyGuard = ({ context, event }) => {
|
|
1182
|
+
return needsMotionPrimeOnlyFromPermission(resolveStoredPermissionResult("output" in event ? event.output : void 0, context.permissionResult), context.config.ds);
|
|
1183
|
+
};
|
|
1184
|
+
const isPermissionDeniedErrorGuard = ({ event }) => {
|
|
1185
|
+
if ("error" in event) {
|
|
1186
|
+
const error = event.error;
|
|
1187
|
+
return error?.name === "NotAllowedError" || error?.name === "PermissionDeniedError";
|
|
1188
|
+
}
|
|
1189
|
+
return false;
|
|
1190
|
+
};
|
|
1191
|
+
const hasStreamGuard = ({ context }) => context.stream !== void 0;
|
|
1192
|
+
const hasAttemptsRemainingGuard = ({ context }) => context.attemptsRemaining > 0;
|
|
1193
|
+
const hasCapturedImageGuard = ({ context }) => {
|
|
1194
|
+
return context.provider?.getCapturedCanvas() !== null;
|
|
1195
|
+
};
|
|
1196
|
+
const hasUploadValidationErrorGuard = ({ context }) => {
|
|
1197
|
+
if (!context.uploadResponse) return false;
|
|
1198
|
+
return validateUploadResponse(context.uploadResponse, {
|
|
1199
|
+
skipGlareFront: context.uploadResponse.skipGlareFront,
|
|
1200
|
+
skipGlareBack: context.uploadResponse.skipGlareBack
|
|
1201
|
+
}) !== void 0;
|
|
1202
|
+
};
|
|
1203
|
+
const isFrontModeGuard = ({ context }) => context.currentMode === "front" || context.currentMode === "passport";
|
|
1204
|
+
/**
|
|
1205
|
+
* `config.onlyFront` from the orchestrated flow JSON is intentionally not
|
|
1206
|
+
* read here: the flow value cannot account for per-document overrides, so the
|
|
1207
|
+
* backend resolves the real policy per document at upload time
|
|
1208
|
+
* (via `skipBackIdCapture` on the upload response). Standalone
|
|
1209
|
+
* `idCaptureManager` consumers that pass `onlyFront: true` directly will
|
|
1210
|
+
* therefore also be ignored — re-wire this guard if that capability is needed
|
|
1211
|
+
* again.
|
|
1212
|
+
*/
|
|
1213
|
+
const isOnlyFrontGuard = (_args) => false;
|
|
1214
|
+
const shouldContinueToBackGuard = ({ context }) => {
|
|
1215
|
+
if (context.currentMode !== "front" && context.currentMode !== "passport") return false;
|
|
1216
|
+
if (context.config.onlyBack) return false;
|
|
1217
|
+
if (context.config.usSmartCapture) return false;
|
|
1218
|
+
if (context.uploadResponse?.skipBackIdCapture) {
|
|
1219
|
+
if (!(context.config.alwaysCaptureBackOfId === true && context.currentMode !== "passport")) return false;
|
|
1220
|
+
}
|
|
1221
|
+
return true;
|
|
1222
|
+
};
|
|
1223
|
+
const shouldContinueToFrontGuard = ({ context }) => context.config.usSmartCapture === true && context.currentMode === "back" && context.uploadResponse?.forceFrontIdCapture === true;
|
|
1224
|
+
const hasMandatoryConsentGuard = ({ context }) => context.uploadResponse?.showMandatoryConsent === true;
|
|
1225
|
+
const isDeepsightEnabledGuard = ({ context }) => context.dependencies !== void 0;
|
|
1226
|
+
const isDeepsightReadyGuard = ({ context }) => context.deepsightService !== void 0;
|
|
1227
|
+
const needsDeepsightInitGuard = ({ context }) => context.dependencies !== void 0 && context.deepsightService === void 0 && !context.deepsightInitAttempted;
|
|
1228
|
+
const hasOnlyManualUploadAvailableGuard = ({ context }) => context.availableDocumentTypes.length === 1 && context.availableDocumentTypes[0] === "manualIdUpload";
|
|
1229
|
+
const isManualIdUploadSelectedGuard = ({ event }) => event.type === "SELECT_DOCUMENT" && event.documentType === "manualIdUpload";
|
|
1230
|
+
const isDigitalIdUploadSelectedGuard = ({ event }) => event.type === "SELECT_DOCUMENT" && event.documentType === "digitalIdUpload";
|
|
1231
|
+
const isUploadExpiredGuard = ({ context }) => context.uploadResponse?.isDocumentExpired === true;
|
|
1232
|
+
/**
|
|
1233
|
+
* Fixed cap on same-side expired retries, intentionally decoupled from the
|
|
1234
|
+
* dashboard-configurable `captureAttempts`.
|
|
1235
|
+
*
|
|
1236
|
+
* Business decision: the expired-ID retry policy is a fixed UX limit ("let the
|
|
1237
|
+
* user try a different ID a bounded number of times"), separate from the
|
|
1238
|
+
* generic capture-quality retry budget. The value `3` and this separation are
|
|
1239
|
+
* prescribed by the ENG-41643 spec — "[WEB] Document FE - Handle Expired ID
|
|
1240
|
+
* Errors on Front and Back ID Capture"
|
|
1241
|
+
* (https://app.notion.com/p/3264c3caef498080a44adf5ab62fcb77): *"Add
|
|
1242
|
+
* `MAX_EXPIRED_FIRST_SIDE_ATTEMPTS = 3` constant"* / *"Allow up to 3 attempts
|
|
1243
|
+
* when expired ID is detected on first side capture"*. SDK V1 implements it as
|
|
1244
|
+
* exactly this hardcoded constant (incode-welcome `Capture.tsx`), independent
|
|
1245
|
+
* of the configured capture-attempts; this restores that parity for ENG-46592
|
|
1246
|
+
* (https://app.notion.com/p/36b4c3caef4980f58f3ee3b1b4e234f2).
|
|
1247
|
+
*
|
|
1248
|
+
* NOTE: ENG-45666's acceptance text says the cap should follow "a specified
|
|
1249
|
+
* number of times if differently set on dashboard/SDK level". That wording
|
|
1250
|
+
* conflicts with the ENG-41643 spec + V1 for the *expired* path specifically;
|
|
1251
|
+
* V1 parity was chosen as source of truth here (see changeset
|
|
1252
|
+
* `eng-46592-r2-expired-id-v1-parity`). The configurable `captureAttempts`
|
|
1253
|
+
* still governs generic (non-expired) capture retries.
|
|
1254
|
+
*/
|
|
1255
|
+
const MAX_EXPIRED_FIRST_SIDE_ATTEMPTS = 3;
|
|
1256
|
+
/**
|
|
1257
|
+
* True when *this* expired upload will exhaust the same-side expired budget.
|
|
1258
|
+
* Compares the post-increment count, so the exhaustion branch can be picked in
|
|
1259
|
+
* the same tick that runs `incrementExpiredAttempts`:
|
|
1260
|
+
* - attempt 1 → 0+1=1 (not exhausted)
|
|
1261
|
+
* - attempt 2 → 1+1=2 (not exhausted)
|
|
1262
|
+
* - attempt 3 → 2+1=3 (exhausted, force-back / finish)
|
|
1263
|
+
*/
|
|
1264
|
+
const isExpiredAttemptsExhaustedGuard = ({ context }) => context.expiredAttempts + 1 >= MAX_EXPIRED_FIRST_SIDE_ATTEMPTS;
|
|
1265
|
+
const isNotPassportModeGuard = ({ context }) => context.currentMode !== "passport";
|
|
1266
|
+
/**
|
|
1267
|
+
* V1 parity for `shouldApplyAlwaysCaptureBackOverride` — force-redirects to
|
|
1268
|
+
* back capture after expired-front-attempts exhaust, but only when:
|
|
1269
|
+
* - we're on the front side
|
|
1270
|
+
* - `alwaysCaptureBackOfId` is set
|
|
1271
|
+
* - the flow isn't single-side (onlyBack / usSmartCapture)
|
|
1272
|
+
* - the session isn't a Digital ID upload (digital IDs are PDFs — no back
|
|
1273
|
+
* side exists, so the override never applies regardless of config)
|
|
1274
|
+
*/
|
|
1275
|
+
const shouldForceBackOnExpiredGuard = ({ context }) => context.currentMode === "front" && context.config.alwaysCaptureBackOfId === true && !context.config.onlyBack && !context.config.usSmartCapture && !context.isDigitalUpload;
|
|
1276
|
+
const wasExpiredFromUploadGuard = ({ context }) => context.expiredFromUpload === true;
|
|
1277
|
+
const shouldSkipProcessIdGuard = ({ context }) => context.skipProcessId === true;
|
|
1278
|
+
/**
|
|
1279
|
+
* Bug 4 fix: when `expiredExhausted` is reached via the per-upload-expired
|
|
1280
|
+
* exhaustion path with a back side captured (or the entire single-side back
|
|
1281
|
+
* flow), we want `processId` to run once on Continue so the backend
|
|
1282
|
+
* processes whatever sides were uploaded. Front-only exhaustion (no back to
|
|
1283
|
+
* process) and the force-back V1 path keep using `setSkipProcessId` instead.
|
|
1284
|
+
*/
|
|
1285
|
+
const shouldProcessAfterExhaustionGuard = ({ context }) => context.exhaustedFromUpload === true && context.currentMode === "back" && (context.config.onlyBack === true || context.config.usSmartCapture === true);
|
|
1286
|
+
/**
|
|
1287
|
+
* `processing.onDone` reads this to short-circuit straight to `finished`
|
|
1288
|
+
* after the post-exhaustion `processId` call returns — without it, an
|
|
1289
|
+
* `isDocumentExpired:true` response would loop back to the Expired screen
|
|
1290
|
+
* we just terminated.
|
|
1291
|
+
*/
|
|
1292
|
+
const forceFinishAfterProcessingGuard = ({ context }) => context.forceFinishAfterProcessing === true;
|
|
1293
|
+
/**
|
|
1294
|
+
* Cap on the end-of-flow (`processId`) expired path — digital uploads and the
|
|
1295
|
+
* multi-side post-capture process step. This path intentionally still keys off
|
|
1296
|
+
* the dashboard-configurable `config.captureAttempts`, unlike the per-upload
|
|
1297
|
+
* (camera) same-side expired path, which uses the fixed
|
|
1298
|
+
* `MAX_EXPIRED_FIRST_SIDE_ATTEMPTS` (decoupled for V1 parity — see ENG-46592).
|
|
1299
|
+
* The two expired caps are therefore different by design.
|
|
1300
|
+
*/
|
|
1301
|
+
const isProcessingExpiredExhaustedGuard = ({ context }) => context.processingExpiredAttempts + 1 >= context.config.captureAttempts;
|
|
1302
|
+
/**
|
|
1303
|
+
* True when capturing the back side of a two-sided (front+back) ID flow.
|
|
1304
|
+
* Used to redirect an expired-back capture to front rather than retrying
|
|
1305
|
+
* the same back side (Figma Story #2.1).
|
|
1306
|
+
* Excludes onlyBack and usSmartCapture — those are single-side back flows
|
|
1307
|
+
* with no front to redirect to.
|
|
1308
|
+
*/
|
|
1309
|
+
const isBackModeInMultiSideFlowGuard = ({ context }) => context.currentMode === "back" && !context.config.onlyBack && !context.config.usSmartCapture;
|
|
1310
|
+
/**
|
|
1311
|
+
* True once the user has already been redirected from an expired second-side
|
|
1312
|
+
* (back) capture to the first side (front) for their one extra attempt
|
|
1313
|
+
* (V1's `expiredRedirected`). Used to make the expired-back→front redirect a
|
|
1314
|
+
* one-shot: any subsequent expired upload routes to `expiredExhausted` instead
|
|
1315
|
+
* of redirecting again, so total captures stay within the backend's
|
|
1316
|
+
* max-attempts/OCR cap (ENG-46592 / re-respects ENG-45666).
|
|
1317
|
+
*/
|
|
1318
|
+
const wasExpiredRedirectedGuard = ({ context }) => context.expiredRedirected === true;
|
|
1319
|
+
|
|
1169
1320
|
//#endregion
|
|
1170
1321
|
//#region src/modules/id/idCaptureHelpers.ts
|
|
1171
1322
|
/**
|
|
@@ -1750,122 +1901,6 @@ function getCurrentModeFromEvent(context, event) {
|
|
|
1750
1901
|
return context.currentMode;
|
|
1751
1902
|
}
|
|
1752
1903
|
|
|
1753
|
-
//#endregion
|
|
1754
|
-
//#region src/modules/id/idCaptureGuards.ts
|
|
1755
|
-
const hasShowTutorialGuard = ({ context }) => context.config.showTutorial;
|
|
1756
|
-
const hasAgeAssuranceGuard = ({ context }) => context.config.ageAssurance === true;
|
|
1757
|
-
const hasShowDocumentChooserGuard = ({ context }) => !context.config.onlyBack && (context.config.showDocumentChooserScreen ?? false);
|
|
1758
|
-
const isPermissionGrantedGuard = ({ event }) => {
|
|
1759
|
-
if ("output" in event) return event.output === "granted";
|
|
1760
|
-
return false;
|
|
1761
|
-
};
|
|
1762
|
-
const isReadyForCaptureGuard = ({ context, event }) => {
|
|
1763
|
-
return isReadyForCaptureFromPermission(resolveStoredPermissionResult("output" in event ? event.output : void 0, context.permissionResult), context.config.ds);
|
|
1764
|
-
};
|
|
1765
|
-
const needsMotionPrimeOnlyGuard = ({ context, event }) => {
|
|
1766
|
-
return needsMotionPrimeOnlyFromPermission(resolveStoredPermissionResult("output" in event ? event.output : void 0, context.permissionResult), context.config.ds);
|
|
1767
|
-
};
|
|
1768
|
-
const isPermissionDeniedErrorGuard = ({ event }) => {
|
|
1769
|
-
if ("error" in event) {
|
|
1770
|
-
const error = event.error;
|
|
1771
|
-
return error?.name === "NotAllowedError" || error?.name === "PermissionDeniedError";
|
|
1772
|
-
}
|
|
1773
|
-
return false;
|
|
1774
|
-
};
|
|
1775
|
-
const hasStreamGuard = ({ context }) => context.stream !== void 0;
|
|
1776
|
-
const hasAttemptsRemainingGuard = ({ context }) => context.attemptsRemaining > 0;
|
|
1777
|
-
const hasCapturedImageGuard = ({ context }) => {
|
|
1778
|
-
return context.provider?.getCapturedCanvas() !== null;
|
|
1779
|
-
};
|
|
1780
|
-
const hasUploadValidationErrorGuard = ({ context }) => {
|
|
1781
|
-
if (!context.uploadResponse) return false;
|
|
1782
|
-
return validateUploadResponse(context.uploadResponse, {
|
|
1783
|
-
skipGlareFront: context.uploadResponse.skipGlareFront,
|
|
1784
|
-
skipGlareBack: context.uploadResponse.skipGlareBack
|
|
1785
|
-
}) !== void 0;
|
|
1786
|
-
};
|
|
1787
|
-
const isFrontModeGuard = ({ context }) => context.currentMode === "front" || context.currentMode === "passport";
|
|
1788
|
-
/**
|
|
1789
|
-
* `config.onlyFront` from the orchestrated flow JSON is intentionally not
|
|
1790
|
-
* read here: the flow value cannot account for per-document overrides, so the
|
|
1791
|
-
* backend resolves the real policy per document at upload time
|
|
1792
|
-
* (via `skipBackIdCapture` on the upload response). Standalone
|
|
1793
|
-
* `idCaptureManager` consumers that pass `onlyFront: true` directly will
|
|
1794
|
-
* therefore also be ignored — re-wire this guard if that capability is needed
|
|
1795
|
-
* again.
|
|
1796
|
-
*/
|
|
1797
|
-
const isOnlyFrontGuard = (_args) => false;
|
|
1798
|
-
const shouldContinueToBackGuard = ({ context }) => {
|
|
1799
|
-
if (context.currentMode !== "front" && context.currentMode !== "passport") return false;
|
|
1800
|
-
if (context.config.onlyBack) return false;
|
|
1801
|
-
if (context.config.usSmartCapture) return false;
|
|
1802
|
-
if (context.uploadResponse?.skipBackIdCapture) {
|
|
1803
|
-
if (!(context.config.alwaysCaptureBackOfId === true && context.currentMode !== "passport")) return false;
|
|
1804
|
-
}
|
|
1805
|
-
return true;
|
|
1806
|
-
};
|
|
1807
|
-
const shouldContinueToFrontGuard = ({ context }) => context.config.usSmartCapture === true && context.currentMode === "back" && context.uploadResponse?.forceFrontIdCapture === true;
|
|
1808
|
-
const hasMandatoryConsentGuard = ({ context }) => context.uploadResponse?.showMandatoryConsent === true;
|
|
1809
|
-
const isDeepsightEnabledGuard = ({ context }) => context.dependencies !== void 0;
|
|
1810
|
-
const isDeepsightReadyGuard = ({ context }) => context.deepsightService !== void 0;
|
|
1811
|
-
const needsDeepsightInitGuard = ({ context }) => context.dependencies !== void 0 && context.deepsightService === void 0 && !context.deepsightInitAttempted;
|
|
1812
|
-
const hasOnlyManualUploadAvailableGuard = ({ context }) => context.availableDocumentTypes.length === 1 && context.availableDocumentTypes[0] === "manualIdUpload";
|
|
1813
|
-
const isManualIdUploadSelectedGuard = ({ event }) => event.type === "SELECT_DOCUMENT" && event.documentType === "manualIdUpload";
|
|
1814
|
-
const isDigitalIdUploadSelectedGuard = ({ event }) => event.type === "SELECT_DOCUMENT" && event.documentType === "digitalIdUpload";
|
|
1815
|
-
const isUploadExpiredGuard = ({ context }) => context.uploadResponse?.isDocumentExpired === true;
|
|
1816
|
-
/**
|
|
1817
|
-
* True when *this* expired upload will exhaust the budget. Compares the
|
|
1818
|
-
* post-increment count, so the exhaustion branch can be picked in the same
|
|
1819
|
-
* tick that runs `incrementExpiredAttempts`. With `captureAttempts=3`:
|
|
1820
|
-
* - attempt 1 → 0+1=1 (not exhausted)
|
|
1821
|
-
* - attempt 2 → 1+1=2 (not exhausted)
|
|
1822
|
-
* - attempt 3 → 2+1=3 (exhausted, force-back / finish)
|
|
1823
|
-
*/
|
|
1824
|
-
const isExpiredAttemptsExhaustedGuard = ({ context }) => context.expiredAttempts + 1 >= context.config.captureAttempts;
|
|
1825
|
-
const isNotPassportModeGuard = ({ context }) => context.currentMode !== "passport";
|
|
1826
|
-
/**
|
|
1827
|
-
* V1 parity for `shouldApplyAlwaysCaptureBackOverride` — force-redirects to
|
|
1828
|
-
* back capture after expired-front-attempts exhaust, but only when:
|
|
1829
|
-
* - we're on the front side
|
|
1830
|
-
* - `alwaysCaptureBackOfId` is set
|
|
1831
|
-
* - the flow isn't single-side (onlyBack / usSmartCapture)
|
|
1832
|
-
* - the session isn't a Digital ID upload (digital IDs are PDFs — no back
|
|
1833
|
-
* side exists, so the override never applies regardless of config)
|
|
1834
|
-
*/
|
|
1835
|
-
const shouldForceBackOnExpiredGuard = ({ context }) => context.currentMode === "front" && context.config.alwaysCaptureBackOfId === true && !context.config.onlyBack && !context.config.usSmartCapture && !context.isDigitalUpload;
|
|
1836
|
-
const wasExpiredFromUploadGuard = ({ context }) => context.expiredFromUpload === true;
|
|
1837
|
-
const shouldSkipProcessIdGuard = ({ context }) => context.skipProcessId === true;
|
|
1838
|
-
/**
|
|
1839
|
-
* Bug 4 fix: when `expiredExhausted` is reached via the per-upload-expired
|
|
1840
|
-
* exhaustion path with a back side captured (or the entire single-side back
|
|
1841
|
-
* flow), we want `processId` to run once on Continue so the backend
|
|
1842
|
-
* processes whatever sides were uploaded. Front-only exhaustion (no back to
|
|
1843
|
-
* process) and the force-back V1 path keep using `setSkipProcessId` instead.
|
|
1844
|
-
*/
|
|
1845
|
-
const shouldProcessAfterExhaustionGuard = ({ context }) => context.exhaustedFromUpload === true && context.currentMode === "back" && (context.config.onlyBack === true || context.config.usSmartCapture === true);
|
|
1846
|
-
/**
|
|
1847
|
-
* `processing.onDone` reads this to short-circuit straight to `finished`
|
|
1848
|
-
* after the post-exhaustion `processId` call returns — without it, an
|
|
1849
|
-
* `isDocumentExpired:true` response would loop back to the Expired screen
|
|
1850
|
-
* we just terminated.
|
|
1851
|
-
*/
|
|
1852
|
-
const forceFinishAfterProcessingGuard = ({ context }) => context.forceFinishAfterProcessing === true;
|
|
1853
|
-
/**
|
|
1854
|
-
* Cap on the end-of-flow expired path. All capture types (camera, digital,
|
|
1855
|
-
* manual) share `config.captureAttempts` for consistency — the user-visible
|
|
1856
|
-
* "X attempts remaining" counter is the same regardless of how the document
|
|
1857
|
-
* was submitted.
|
|
1858
|
-
*/
|
|
1859
|
-
const isProcessingExpiredExhaustedGuard = ({ context }) => context.processingExpiredAttempts + 1 >= context.config.captureAttempts;
|
|
1860
|
-
/**
|
|
1861
|
-
* True when capturing the back side of a two-sided (front+back) ID flow.
|
|
1862
|
-
* Used to redirect an expired-back capture to front rather than retrying
|
|
1863
|
-
* the same back side (Figma Story #2.1).
|
|
1864
|
-
* Excludes onlyBack and usSmartCapture — those are single-side back flows
|
|
1865
|
-
* with no front to redirect to.
|
|
1866
|
-
*/
|
|
1867
|
-
const isBackModeInMultiSideFlowGuard = ({ context }) => context.currentMode === "back" && !context.config.onlyBack && !context.config.usSmartCapture;
|
|
1868
|
-
|
|
1869
1904
|
//#endregion
|
|
1870
1905
|
//#region src/modules/id/idCaptureStateMachine.ts
|
|
1871
1906
|
function getIdErrorCodeFromUnknown(error) {
|
|
@@ -1927,8 +1962,7 @@ const _idCaptureMachine = setup({
|
|
|
1927
1962
|
uploadProgress: void 0,
|
|
1928
1963
|
manualCaptureTriggered: false,
|
|
1929
1964
|
attemptsRemaining: context.config.captureAttempts,
|
|
1930
|
-
expiredAttempts:
|
|
1931
|
-
skipExpiredAttemptsReset: false,
|
|
1965
|
+
expiredAttempts: 0,
|
|
1932
1966
|
expiredFromUpload: false,
|
|
1933
1967
|
exhaustedFromUpload: false,
|
|
1934
1968
|
forceFinishAfterProcessing: false,
|
|
@@ -1953,6 +1987,7 @@ const _idCaptureMachine = setup({
|
|
|
1953
1987
|
uploadProgress: void 0,
|
|
1954
1988
|
manualCaptureTriggered: false,
|
|
1955
1989
|
attemptsRemaining: context.config.captureAttempts,
|
|
1990
|
+
expiredAttempts: 0,
|
|
1956
1991
|
expiredFromUpload: false,
|
|
1957
1992
|
exhaustedFromUpload: false,
|
|
1958
1993
|
forceFinishAfterProcessing: false,
|
|
@@ -2063,7 +2098,7 @@ const _idCaptureMachine = setup({
|
|
|
2063
2098
|
setSkipProcessId: assign({ skipProcessId: () => true }),
|
|
2064
2099
|
setExpiredFromUpload: assign({ expiredFromUpload: () => true }),
|
|
2065
2100
|
setExhaustedFromUpload: assign({ exhaustedFromUpload: () => true }),
|
|
2066
|
-
|
|
2101
|
+
setExpiredRedirected: assign({ expiredRedirected: () => true }),
|
|
2067
2102
|
setForceFinishAfterProcessing: assign({ forceFinishAfterProcessing: () => true }),
|
|
2068
2103
|
clearExpiredFromUpload: assign({ expiredFromUpload: () => false })
|
|
2069
2104
|
},
|
|
@@ -2100,6 +2135,7 @@ const _idCaptureMachine = setup({
|
|
|
2100
2135
|
shouldProcessAfterExhaustion: shouldProcessAfterExhaustionGuard,
|
|
2101
2136
|
forceFinishAfterProcessing: forceFinishAfterProcessingGuard,
|
|
2102
2137
|
isBackModeInMultiSideFlow: isBackModeInMultiSideFlowGuard,
|
|
2138
|
+
wasExpiredRedirected: wasExpiredRedirectedGuard,
|
|
2103
2139
|
isManualUploadExhausted: ({ event }) => event.output?.result === "exhausted",
|
|
2104
2140
|
isDigitalUploadExhausted: ({ event }) => event.output?.result === "exhausted",
|
|
2105
2141
|
isDigitalUploadSuccessful: ({ event }) => event.output?.result === "success"
|
|
@@ -2126,7 +2162,7 @@ const _idCaptureMachine = setup({
|
|
|
2126
2162
|
recordingSession: void 0,
|
|
2127
2163
|
attemptsRemaining: input.config.captureAttempts,
|
|
2128
2164
|
expiredAttempts: 0,
|
|
2129
|
-
|
|
2165
|
+
expiredRedirected: false,
|
|
2130
2166
|
processingExpiredAttempts: 0,
|
|
2131
2167
|
skipProcessId: input.config.skipProcessId === true,
|
|
2132
2168
|
expiredFromUpload: false,
|
|
@@ -2656,6 +2692,15 @@ const _idCaptureMachine = setup({
|
|
|
2656
2692
|
target: "#idCapture.finished",
|
|
2657
2693
|
guard: and(["shouldSkipProcessId", "isUploadExpired"])
|
|
2658
2694
|
},
|
|
2695
|
+
{
|
|
2696
|
+
target: "#idCapture.expiredExhausted",
|
|
2697
|
+
guard: and([
|
|
2698
|
+
"isNotPassportMode",
|
|
2699
|
+
"isUploadExpired",
|
|
2700
|
+
"wasExpiredRedirected"
|
|
2701
|
+
]),
|
|
2702
|
+
actions: ["setExhaustedFromUpload"]
|
|
2703
|
+
},
|
|
2659
2704
|
{
|
|
2660
2705
|
target: "#idCapture.expiredExhausted",
|
|
2661
2706
|
guard: and([
|
|
@@ -2857,12 +2902,16 @@ const _idCaptureMachine = setup({
|
|
|
2857
2902
|
expired: { on: { RETRY_CAPTURE: [
|
|
2858
2903
|
{
|
|
2859
2904
|
target: "#idCapture.backFinished",
|
|
2860
|
-
guard: and([
|
|
2905
|
+
guard: and([
|
|
2906
|
+
"wasExpiredFromUpload",
|
|
2907
|
+
"isBackModeInMultiSideFlow",
|
|
2908
|
+
not("wasExpiredRedirected")
|
|
2909
|
+
]),
|
|
2861
2910
|
actions: [
|
|
2862
2911
|
"resetDetection",
|
|
2863
2912
|
"clearExpiredFromUpload",
|
|
2864
2913
|
"clearUploadFailure",
|
|
2865
|
-
"
|
|
2914
|
+
"setExpiredRedirected"
|
|
2866
2915
|
]
|
|
2867
2916
|
},
|
|
2868
2917
|
{
|
|
@@ -2894,22 +2943,25 @@ const _idCaptureMachine = setup({
|
|
|
2894
2943
|
actions: "resetContext"
|
|
2895
2944
|
}
|
|
2896
2945
|
] } },
|
|
2897
|
-
expiredExhausted: {
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2946
|
+
expiredExhausted: {
|
|
2947
|
+
entry: "flagIdManualReview",
|
|
2948
|
+
on: { CONTINUE_EXHAUSTED: [
|
|
2949
|
+
{
|
|
2950
|
+
target: "#idCapture.frontFinished",
|
|
2951
|
+
guard: "shouldForceBackOnExpired",
|
|
2952
|
+
actions: ["setSkipProcessId"]
|
|
2953
|
+
},
|
|
2954
|
+
{
|
|
2955
|
+
target: "#idCapture.processing",
|
|
2956
|
+
guard: "shouldProcessAfterExhaustion",
|
|
2957
|
+
actions: ["setForceFinishAfterProcessing"]
|
|
2958
|
+
},
|
|
2959
|
+
{
|
|
2960
|
+
target: "#idCapture.finished",
|
|
2961
|
+
actions: ["setSkipProcessId"]
|
|
2962
|
+
}
|
|
2963
|
+
] }
|
|
2964
|
+
},
|
|
2913
2965
|
finished: {
|
|
2914
2966
|
entry: [
|
|
2915
2967
|
"stopMediaRecording",
|
|
@@ -3016,4 +3068,4 @@ const _idCaptureMachine = setup({
|
|
|
3016
3068
|
const idCaptureMachine = _idCaptureMachine;
|
|
3017
3069
|
|
|
3018
3070
|
//#endregion
|
|
3019
|
-
export {
|
|
3071
|
+
export { mapDigitalIdScreenName as _, preloadIdRecordingProvider as a, stopRecording as c, uploadManualIdFile as d, validateUploadResponse as f, MANUAL_UPLOAD_MAX_RETRIES as g, MANUAL_UPLOAD_MAX_FILE_SIZE_BYTES as h, initializeIdCapture as i, stopStream as l, MANUAL_UPLOAD_EXHAUSTION_FORWARD_MS as m, MAX_EXPIRED_FIRST_SIDE_ATTEMPTS as n, processId as o, ID_ERROR_CODES as p, mapIdManualUploadScreenName as r, startRecordingSession as s, idCaptureMachine as t, uploadIdImage as u };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as api } from "./api-DsbUi7TO.esm.js";
|
|
2
2
|
import { _ as getTimestamp } from "./events-CqGY1yMq.esm.js";
|
|
3
3
|
import { t as endpoints } from "./endpoints-BzMJFAPV.esm.js";
|
|
4
|
-
import { a as fromPromise, r as assign, t as setup } from "./xstate.esm-
|
|
4
|
+
import { a as fromPromise, r as assign, t as setup } from "./xstate.esm-Bomq1a0z.esm.js";
|
|
5
5
|
import { t as validateCPF } from "./cpf-BKaho0j_.esm.js";
|
|
6
6
|
|
|
7
7
|
//#region ../infra/src/providers/browser/DateFormattingProvider.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as api } from "./api-DsbUi7TO.esm.js";
|
|
2
2
|
import { t as endpoints } from "./endpoints-BzMJFAPV.esm.js";
|
|
3
|
-
import { a as fromPromise, t as setup } from "./xstate.esm-
|
|
3
|
+
import { a as fromPromise, t as setup } from "./xstate.esm-Bomq1a0z.esm.js";
|
|
4
4
|
|
|
5
5
|
//#region src/modules/id-verification/idVerificationServices.ts
|
|
6
6
|
/**
|
package/dist/identity-reuse.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import "./Manager-BUc6OqO5.js";
|
|
2
2
|
import "./Actor-Du_LU0S4.js";
|
|
3
|
-
import { c as identityReuseMachine, d as ReusableDocument, f as SubmitResponse, i as createIdentityReuseManagerFromActor, l as FetchDocumentsResponse, n as IdentityReuseState, o as SCAN_NEW_DOCUMENT, r as createIdentityReuseManager, s as SelectedDocumentId, t as IdentityReuseManager, u as IdentityReuseConfig } from "./identityReuseManager-
|
|
3
|
+
import { c as identityReuseMachine, d as ReusableDocument, f as SubmitResponse, i as createIdentityReuseManagerFromActor, l as FetchDocumentsResponse, n as IdentityReuseState, o as SCAN_NEW_DOCUMENT, r as createIdentityReuseManager, s as SelectedDocumentId, t as IdentityReuseManager, u as IdentityReuseConfig } from "./identityReuseManager-BOnaxwJI.js";
|
|
4
4
|
export { type FetchDocumentsResponse, type IdentityReuseConfig, type IdentityReuseManager, type IdentityReuseState, type ReusableDocument, SCAN_NEW_DOCUMENT, type SelectedDocumentId, type SubmitResponse, createIdentityReuseManager, createIdentityReuseManagerFromActor, identityReuseMachine };
|
|
@@ -2,8 +2,8 @@ import "./api-DsbUi7TO.esm.js";
|
|
|
2
2
|
import "./events-CqGY1yMq.esm.js";
|
|
3
3
|
import "./types-ElOJAGaM.esm.js";
|
|
4
4
|
import "./endpoints-BzMJFAPV.esm.js";
|
|
5
|
-
import "./xstate.esm-
|
|
6
|
-
import { n as identityReuseMachine, t as SCAN_NEW_DOCUMENT } from "./identityReuseStateMachine-
|
|
7
|
-
import { n as createIdentityReuseManagerFromActor, t as createIdentityReuseManager } from "./identityReuseManager-
|
|
5
|
+
import "./xstate.esm-Bomq1a0z.esm.js";
|
|
6
|
+
import { n as identityReuseMachine, t as SCAN_NEW_DOCUMENT } from "./identityReuseStateMachine-BYYzDw-l.esm.js";
|
|
7
|
+
import { n as createIdentityReuseManagerFromActor, t as createIdentityReuseManager } from "./identityReuseManager-BeyKVX1g.esm.js";
|
|
8
8
|
|
|
9
9
|
export { SCAN_NEW_DOCUMENT, createIdentityReuseManager, createIdentityReuseManagerFromActor, identityReuseMachine };
|