@incodetech/core 0.0.0-dev-20260928-e8e00ca9 → 0.0.0-dev-20260928-85249f77
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/{BrowserDiagnosticsCryptoProvider-CglolaLX.esm.js → BrowserDiagnosticsCryptoProvider-BuzqvbhN.esm.js} +6 -24
- package/dist/{FaceDetectionProvider-ZWuTisXf.esm.js → FaceDetectionProvider-CSjiXOo7.esm.js} +7 -7
- package/dist/{MotionSensorProvider-Bti5f6op.esm.js → MotionSensorProvider-1Ul_1GPn.esm.js} +1 -1
- package/dist/ae-signature.esm.js +1 -1
- package/dist/{apiError-DqxsUXGC.esm.js → apiError-DmDlw1pl.esm.js} +1 -1
- package/dist/authentication.d.ts +2 -2
- package/dist/authentication.esm.js +2 -2
- package/dist/{authenticationManager-DgCLrxXN.esm.js → authenticationManager-B9l6NeDe.esm.js} +4 -4
- package/dist/{authenticationManager-B-MR_-Si.d.ts → authenticationManager-DE40FMUU.d.ts} +1 -1
- package/dist/{authenticationStateMachine-DECsoldb.esm.js → authenticationStateMachine-BGme0djA.esm.js} +3 -3
- package/dist/camera.esm.js +1 -1
- package/dist/consent.d.ts +1 -1
- package/dist/{consentManager-Cv_0QKLD.d.ts → consentManager-CTdFloVJ.d.ts} +1 -1
- package/dist/{createCameraCycleOwnership-BjoMVvya.esm.js → createCameraCycleOwnership-P1AtkhRJ.esm.js} +6 -1
- package/dist/{deepsightLoader-DidR7w-7.esm.js → deepsightLoader-BY2NIp7n.esm.js} +6 -6
- package/dist/document-capture.d.ts +1 -1
- package/dist/document-capture.esm.js +2 -2
- package/dist/{documentCaptureManager-CbAGkHWh.d.ts → documentCaptureManager-C8eO0hbv.d.ts} +1 -1
- package/dist/{documentCaptureManager-7e1RLKhG.esm.js → documentCaptureManager-DRAn04PI.esm.js} +1 -1
- package/dist/{documentCaptureStateMachine-DyJb_vDQ.esm.js → documentCaptureStateMachine-BS9VBtqN.esm.js} +2 -2
- package/dist/dynamic-forms.esm.js +2 -2
- package/dist/{dynamicFormsManager-B5GSLZvO.esm.js → dynamicFormsManager-CTJzsDqC.esm.js} +1 -1
- package/dist/{dynamicFormsStateMachine-DAq-HoCA.esm.js → dynamicFormsStateMachine-8oOTouxq.esm.js} +1 -1
- package/dist/ekyb.esm.js +3 -3
- package/dist/{ekybManager-7ljnpTt2.esm.js → ekybManager-CKNCVYs7.esm.js} +1 -1
- package/dist/{ekybStateMachine-CD8oLnoa.esm.js → ekybStateMachine-BDQHv558.esm.js} +1 -1
- package/dist/electronic-signature.esm.js +1 -1
- package/dist/{electronicSignatureManager-r2Zci23-.esm.js → electronicSignatureManager-BbgLJk1x.esm.js} +1 -1
- package/dist/extensibility.d.ts +9 -9
- package/dist/extensibility.esm.js +12 -12
- package/dist/{faceCaptureManagerFactory-OSygJ72q.esm.js → faceCaptureManagerFactory-DG4z3rkR.esm.js} +3 -3
- package/dist/{faceCaptureManagerFactory-BgbP5N1j.d.ts → faceCaptureManagerFactory-s0Vhw_wP.d.ts} +80 -40
- package/dist/{faceCaptureSetup-DSvOibxj.esm.js → faceCaptureSetup-GzW2oNiM.esm.js} +261 -58
- package/dist/{feature-management-BhzWEsyZ.esm.js → feature-management-02JHuEhD.esm.js} +1 -1
- package/dist/feature-management.esm.js +1 -1
- package/dist/flow.esm.js +3 -3
- package/dist/{flowCompletionService-B-ri1Pvq.esm.js → flowCompletionService-BAg6qc6d.esm.js} +1 -1
- package/dist/{flowServices-C62Eyo7N.esm.js → flowServices-Dc-EUuwB.esm.js} +5 -5
- package/dist/geolocation.esm.js +2 -2
- package/dist/{geolocationManager-BU4OLtRY.esm.js → geolocationManager-v0LZK1kW.esm.js} +1 -1
- package/dist/{geolocationStateMachine-D8UrSeXQ.esm.js → geolocationStateMachine-DfdsEj7L.esm.js} +1 -1
- package/dist/id-ocr.d.ts +1 -1
- package/dist/id-selfie-flow.esm.js +9 -10
- package/dist/id.d.ts +2 -2
- package/dist/id.esm.js +4 -4
- package/dist/{idCaptureDefaults-B6gkShby.esm.js → idCaptureDefaults-Ba-m1uO3.esm.js} +3 -3
- package/dist/{idCaptureManager-DIT7ZyEa.esm.js → idCaptureManager-Bfrj7DvH.esm.js} +6 -5
- package/dist/{idCaptureManager-poTdJI74.d.ts → idCaptureManager-DfHdJLmj.d.ts} +29 -5
- package/dist/{idCaptureServices-Cl67CI_t.esm.js → idCaptureServices-DKeVf0Gu.esm.js} +67 -12
- package/dist/{idCaptureStateMachine-BADMFRXg.esm.js → idCaptureStateMachine-BL3MnDOu.esm.js} +222 -77
- package/dist/{idOcrManager-DT3kPIB3.d.ts → idOcrManager-BTdHlJ9D.d.ts} +1 -1
- package/dist/identity-reuse.d.ts +1 -1
- package/dist/{identityReuseManager-x2QG6QAm.d.ts → identityReuseManager-D0-4bAeK.d.ts} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/mandatory-consent.d.ts +1 -1
- package/dist/{mandatoryConsentManager-DzIGk6u7.d.ts → mandatoryConsentManager-S94mjtTG.d.ts} +1 -1
- package/dist/{multipartRecordingService-Dw0scizg.esm.js → multipartRecordingService-mwKFTlhR.esm.js} +42 -1
- package/dist/{permissionGuards-DAyjPT2R.esm.js → permissionGuards-DS36X5Hh.esm.js} +1 -1
- package/dist/{permissionServices-DIaG8BlW.esm.js → permissionServices-B9IqVf3c.esm.js} +2 -2
- package/dist/qe-signature.esm.js +1 -1
- package/dist/{runChildModule-CoWvzHhB.esm.js → runChildModule-DQbERvPv.esm.js} +1 -1
- package/dist/{safeStorage-C511Hltw.esm.js → safeStorage-Q_iUpxa8.esm.js} +1 -1
- package/dist/{sdkVersion-sSFpdmZk.esm.js → sdkVersion-kGZmwBhf.esm.js} +1 -1
- package/dist/selfie.d.ts +2 -2
- package/dist/selfie.esm.js +7 -7
- package/dist/{selfieManager-Be-moOeO.esm.js → selfieManager-B-F-lrAH.esm.js} +4 -4
- package/dist/{selfieManager-oSsnyvBl.d.ts → selfieManager-PVc2k2Oq.d.ts} +1 -1
- package/dist/{selfieStateMachine-0bHX1R9_.esm.js → selfieStateMachine--KjoErrq.esm.js} +2 -2
- package/dist/{session-DjUhUWYA.esm.js → session-Bb5KuwEu.esm.js} +3 -3
- package/dist/session.esm.js +4 -4
- package/dist/{sessionInitializer-_BmsjkUB.esm.js → sessionInitializer-D-gzxDwN.esm.js} +4 -4
- package/dist/{setup-CHHZ8BBM.d.ts → setup-BdeKbA9K.d.ts} +4 -17
- package/dist/{setup-D7B4g7Jc.esm.js → setup-Cb7Ws1HA.esm.js} +8 -58
- package/dist/{tri-4RsGrIt6.esm.js → tri-xzRLIIMN.esm.js} +0 -10
- package/dist/tri.esm.js +1 -1
- package/dist/{trueSightService-Bb116pCE.esm.js → trueSightService-D8dk4ZID.esm.js} +16 -554
- package/dist/video-selfie.esm.js +5 -5
- package/dist/{videoSelfieCameraWarmer-CeZLd5w_.esm.js → videoSelfieCameraWarmer-CkdLS8NK.esm.js} +5 -5
- package/dist/{warmup-REsua-sF.esm.js → warmup-DLq_t-Zu.esm.js} +5 -0
- package/dist/wasm.d.ts +1 -1
- package/dist/wasm.esm.js +3 -3
- package/dist/{wasmDsFlagSync-Czjlp68o.esm.js → wasmDsFlagSync-DyNj8RY_.esm.js} +1 -1
- package/dist/workflow.esm.js +15 -15
- package/package.json +2 -7
- package/dist/FaceDetectionProvider-Di1DmZu1.d.ts +0 -36
- package/dist/StreamCanvasProcessingSession-CBnbTnOr.esm.js +0 -42
- package/dist/personhood.d.ts +0 -537
- package/dist/personhood.esm.js +0 -1574
- package/dist/types-CfuWgAi-.d.ts +0 -1
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { l as trueSightLog, m as isTrueSightTesting } from "./trueSightService-
|
|
1
|
+
import { l as trueSightLog, m as isTrueSightTesting } from "./trueSightService-D8dk4ZID.esm.js";
|
|
2
2
|
import { t as getTimestamp } from "./IBrowserEnvironmentCapability-DEaRRk-R.esm.js";
|
|
3
3
|
import { r as getToken, t as api } from "./api-Bx3gKW_y.esm.js";
|
|
4
|
-
import "./sessionInitializer-
|
|
4
|
+
import "./sessionInitializer-D-gzxDwN.esm.js";
|
|
5
5
|
import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
|
|
6
6
|
import { t as addDeviceStats } from "./stats-CZcy2J53.esm.js";
|
|
7
7
|
import { t as isAndroid } from "./platform-DkcRc9JV.esm.js";
|
|
8
8
|
import { i as assign, n as enqueueActions, r as sendTo, t as setup } from "./xstate.esm-Bg3FuvIs.esm.js";
|
|
9
9
|
import { n as fromPromise, t as fromCallback } from "./xstate-actors.esm-Ccyzgxj1.esm.js";
|
|
10
|
-
import { n as invokeRequestPermissionActor, t as checkPermission } from "./permissionServices-
|
|
11
|
-
import { a as sendLabelInspectionEvent, i as initializeDeepsightSession, r as initializeCamera, s as stopStream, t as FaceDetectionProvider } from "./FaceDetectionProvider-
|
|
10
|
+
import { n as invokeRequestPermissionActor, t as checkPermission } from "./permissionServices-B9IqVf3c.esm.js";
|
|
11
|
+
import { a as sendLabelInspectionEvent, i as initializeDeepsightSession, r as initializeCamera, s as stopStream, t as FaceDetectionProvider } from "./FaceDetectionProvider-CSjiXOo7.esm.js";
|
|
12
12
|
import { t as FACE_ERROR_CODES } from "./types-BN5RPPIZ.esm.js";
|
|
13
|
-
import { i as flagFaceManualReview, n as runProtectedAttempt, o as PROTECTED_CAPTURE_TARGET, r as cameraCycleProvider, t as createCameraCycleOwnership } from "./createCameraCycleOwnership-
|
|
13
|
+
import { i as flagFaceManualReview, n as runProtectedAttempt, o as PROTECTED_CAPTURE_TARGET, r as cameraCycleProvider, t as createCameraCycleOwnership } from "./createCameraCycleOwnership-P1AtkhRJ.esm.js";
|
|
14
14
|
import { n as releaseFaceAvatarWarmup, r as warmFaceAvatar, t as createFaceAvatar } from "./createFaceAvatar-BNHdeFj8.esm.js";
|
|
15
15
|
import { t as IncodeCanvas } from "./canvas-BxFzWTt-.esm.js";
|
|
16
|
-
import { n as needsMotionPrimeOnlyFromPermission, r as resolveStoredPermissionResult, t as isReadyForCaptureFromPermission } from "./permissionGuards-
|
|
16
|
+
import { n as needsMotionPrimeOnlyFromPermission, r as resolveStoredPermissionResult, t as isReadyForCaptureFromPermission } from "./permissionGuards-DS36X5Hh.esm.js";
|
|
17
|
+
import { a as getAdaptiveMediaRecorderOptions, i as createRecordingCompositor, n as WorkerEncoderRecordingProvider, t as MultipartRecordingService } from "./multipartRecordingService-mwKFTlhR.esm.js";
|
|
17
18
|
import { t as getDeviceClass } from "./getDeviceClass-5NYZg9s6.esm.js";
|
|
18
|
-
import { a as getAdaptiveMediaRecorderOptions, i as createRecordingCompositor, n as WorkerEncoderRecordingProvider, t as MultipartRecordingService } from "./multipartRecordingService-Dw0scizg.esm.js";
|
|
19
19
|
//#region src/internal/avatar/concealment.ts
|
|
20
20
|
/**
|
|
21
21
|
* Maps a backend concealment option to the internal avatar flags. `OPTION_NONE`
|
|
@@ -268,7 +268,28 @@ var LocalRecordingProvider = class {
|
|
|
268
268
|
recorder?.stream?.getTracks().forEach((track) => track.stop());
|
|
269
269
|
});
|
|
270
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* Discards the in-progress recording without producing a result: detaches
|
|
273
|
+
* the recorder's handlers, stops it, releases its cloned tracks and clears
|
|
274
|
+
* the flags. Idempotent, and safe after `stopRecording` or when never
|
|
275
|
+
* started. Mirrors `MultipartRecordingProvider.reset()` so an attempt that is
|
|
276
|
+
* released before finalization cannot leave a live camera clone behind
|
|
277
|
+
* (ENG-56648).
|
|
278
|
+
*/
|
|
271
279
|
reset() {
|
|
280
|
+
this.removeEventListeners();
|
|
281
|
+
const recorder = this.mediaRecorder;
|
|
282
|
+
if (recorder) {
|
|
283
|
+
recorder.ondataavailable = null;
|
|
284
|
+
recorder.onerror = null;
|
|
285
|
+
recorder.onstop = null;
|
|
286
|
+
if (recorder.state !== "inactive") try {
|
|
287
|
+
recorder.stop();
|
|
288
|
+
} catch {}
|
|
289
|
+
recorder.stream?.getTracks().forEach((track) => track.stop());
|
|
290
|
+
this.mediaRecorder = null;
|
|
291
|
+
}
|
|
292
|
+
this.stream = null;
|
|
272
293
|
this._isRecording = false;
|
|
273
294
|
this._error = null;
|
|
274
295
|
this._hasError = false;
|
|
@@ -343,69 +364,147 @@ var LocalRecordingService = class {
|
|
|
343
364
|
* the interview asynchronously by the backend's `selfie` scope consumer, so
|
|
344
365
|
* its upload id must not be forwarded to `/omni/add/face` as a legacy
|
|
345
366
|
* `recordingId`.
|
|
367
|
+
*
|
|
368
|
+
* The recording is scoped to the capture step (ENG-56648). The recorder
|
|
369
|
+
* records a stable `CameraCompositor` stream instead of a raw camera clone, so
|
|
370
|
+
* every attempt can end its own clone before PRC and POC run and the next
|
|
371
|
+
* attempt swaps a fresh clone into the same multipart upload. The owning
|
|
372
|
+
* controller completes the upload once the backend accepts a capture or the
|
|
373
|
+
* step ends without a retry.
|
|
346
374
|
*/
|
|
347
375
|
var MultipartFaceRecordingService = class {
|
|
348
376
|
constructor() {
|
|
349
|
-
this.
|
|
350
|
-
this.service = new MultipartRecordingService("selfie", new WorkerEncoderRecordingProvider(this.
|
|
377
|
+
this.recordingCompositor = createRecordingCompositor();
|
|
378
|
+
this.service = new MultipartRecordingService("selfie", new WorkerEncoderRecordingProvider(this.recordingCompositor));
|
|
379
|
+
this.audioSource = [];
|
|
380
|
+
this.needsVideoSourceReplacement = false;
|
|
351
381
|
this.pausedForAttempt = false;
|
|
382
|
+
this.startInFlight = false;
|
|
383
|
+
this.suspendRequested = false;
|
|
384
|
+
this.stopping = false;
|
|
352
385
|
}
|
|
353
386
|
async start(stream) {
|
|
354
|
-
if (this.
|
|
355
|
-
|
|
356
|
-
this.
|
|
387
|
+
if (this.stopping) throw new Error("Face recording already completed");
|
|
388
|
+
if (this.compositor) {
|
|
389
|
+
await this.resume(stream);
|
|
357
390
|
return;
|
|
358
391
|
}
|
|
359
|
-
if (this.recordingSource) return;
|
|
360
392
|
const recordingSource = stream.clone();
|
|
393
|
+
const compositor = this.recordingCompositor;
|
|
394
|
+
this.startInFlight = true;
|
|
361
395
|
try {
|
|
362
|
-
const composite =
|
|
396
|
+
const composite = compositor.start(recordingSource);
|
|
363
397
|
await this.service.start(composite);
|
|
364
398
|
} catch (error) {
|
|
365
|
-
|
|
399
|
+
compositor.stop();
|
|
366
400
|
recordingSource.getTracks().forEach((track) => track.stop());
|
|
401
|
+
this.service.cleanup();
|
|
367
402
|
throw error;
|
|
403
|
+
} finally {
|
|
404
|
+
this.startInFlight = false;
|
|
405
|
+
}
|
|
406
|
+
if (this.stopping) {
|
|
407
|
+
compositor.stop();
|
|
408
|
+
recordingSource.getTracks().forEach((track) => track.stop());
|
|
409
|
+
this.service.cleanup();
|
|
410
|
+
return;
|
|
368
411
|
}
|
|
412
|
+
this.compositor = compositor;
|
|
369
413
|
this.recordingSource = recordingSource;
|
|
414
|
+
this.audioSource = recordingSource.getAudioTracks();
|
|
415
|
+
if (this.suspendRequested) {
|
|
416
|
+
this.suspendRequested = false;
|
|
417
|
+
this.suspend();
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Pauses the container and ends the camera clone on the calling thread. The
|
|
422
|
+
* composite stream and the upload stay open for the next attempt.
|
|
423
|
+
*/
|
|
424
|
+
suspend() {
|
|
425
|
+
if (this.stopping) return;
|
|
426
|
+
if (!this.compositor) {
|
|
427
|
+
this.suspendRequested = this.startInFlight;
|
|
428
|
+
return;
|
|
429
|
+
}
|
|
430
|
+
if (!this.pausedForAttempt) this.pausedForAttempt = this.service.pause();
|
|
431
|
+
this.releaseCameraClone({ keepAudio: true });
|
|
432
|
+
this.needsVideoSourceReplacement = true;
|
|
370
433
|
}
|
|
371
434
|
async prepareUpload() {
|
|
372
|
-
this.
|
|
435
|
+
this.suspend();
|
|
373
436
|
return { recordingId: null };
|
|
374
437
|
}
|
|
375
438
|
async stop() {
|
|
376
|
-
|
|
377
|
-
await this.service.stop();
|
|
378
|
-
} finally {
|
|
379
|
-
this.pausedForAttempt = false;
|
|
380
|
-
this.releaseCompositor();
|
|
381
|
-
}
|
|
439
|
+
await this.complete();
|
|
382
440
|
return { recordingId: null };
|
|
383
441
|
}
|
|
384
442
|
pauseForBackground() {
|
|
385
|
-
this.
|
|
443
|
+
this.suspend();
|
|
386
444
|
}
|
|
387
|
-
async resumeFromBackground() {
|
|
388
|
-
this.
|
|
445
|
+
async resumeFromBackground(stream) {
|
|
446
|
+
if (!this.compositor || this.stopping) return;
|
|
447
|
+
await this.resume(stream);
|
|
389
448
|
}
|
|
390
449
|
async stopAndGetVideo() {
|
|
391
|
-
|
|
392
|
-
await this.service.stop();
|
|
393
|
-
} finally {
|
|
394
|
-
this.pausedForAttempt = false;
|
|
395
|
-
this.releaseCompositor();
|
|
396
|
-
}
|
|
450
|
+
await this.complete();
|
|
397
451
|
return { videoBase64: void 0 };
|
|
398
452
|
}
|
|
399
453
|
cleanup() {
|
|
454
|
+
this.suspendRequested = false;
|
|
400
455
|
this.pausedForAttempt = false;
|
|
456
|
+
this.needsVideoSourceReplacement = false;
|
|
457
|
+
this.releaseCameraClone({ keepAudio: false });
|
|
458
|
+
this.compositor?.stop();
|
|
459
|
+
this.compositor = void 0;
|
|
460
|
+
this.recordingSource = void 0;
|
|
461
|
+
this.audioSource = [];
|
|
401
462
|
this.service.cleanup();
|
|
402
|
-
this.releaseCompositor();
|
|
403
463
|
}
|
|
404
|
-
/**
|
|
405
|
-
|
|
406
|
-
this.compositor
|
|
407
|
-
|
|
408
|
-
this.
|
|
464
|
+
/** Swaps this attempt's camera clone into the composite and resumes. */
|
|
465
|
+
async resume(stream) {
|
|
466
|
+
const compositor = this.compositor;
|
|
467
|
+
if (!compositor) return;
|
|
468
|
+
if (this.needsVideoSourceReplacement) {
|
|
469
|
+
const recordingSource = stream.clone();
|
|
470
|
+
recordingSource.getAudioTracks().forEach((track) => track.stop());
|
|
471
|
+
compositor.switchVideo(recordingSource);
|
|
472
|
+
this.needsVideoSourceReplacement = false;
|
|
473
|
+
this.recordingSource = recordingSource;
|
|
474
|
+
const result = await compositor.resume();
|
|
475
|
+
if (result !== "resumed") throw new Error(`Face recording camera did not resume: ${result}`);
|
|
476
|
+
}
|
|
477
|
+
if (this.pausedForAttempt && !this.service.resume()) throw new Error("Face recording did not resume");
|
|
478
|
+
this.pausedForAttempt = false;
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Completes the scoped upload. The camera clone ends synchronously before the
|
|
482
|
+
* drain so a step that ends mid-attempt never pins the camera; the composite
|
|
483
|
+
* stays alive until the recorder has emitted its final chunk.
|
|
484
|
+
*/
|
|
485
|
+
async complete() {
|
|
486
|
+
this.stopping = true;
|
|
487
|
+
this.suspendRequested = false;
|
|
488
|
+
this.releaseCameraClone({ keepAudio: false });
|
|
489
|
+
try {
|
|
490
|
+
await this.service.stop();
|
|
491
|
+
} finally {
|
|
492
|
+
this.compositor?.stop();
|
|
493
|
+
this.compositor = void 0;
|
|
494
|
+
this.recordingSource = void 0;
|
|
495
|
+
this.audioSource = [];
|
|
496
|
+
this.pausedForAttempt = false;
|
|
497
|
+
this.needsVideoSourceReplacement = false;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
releaseCameraClone(options) {
|
|
501
|
+
try {
|
|
502
|
+
this.compositor?.pause();
|
|
503
|
+
} catch {}
|
|
504
|
+
const tracks = options.keepAudio ? this.recordingSource?.getVideoTracks() ?? [] : /* @__PURE__ */ new Set([...this.recordingSource?.getTracks() ?? [], ...this.audioSource]);
|
|
505
|
+
for (const track of tracks) try {
|
|
506
|
+
track.stop();
|
|
507
|
+
} catch {}
|
|
409
508
|
}
|
|
410
509
|
};
|
|
411
510
|
/**
|
|
@@ -429,51 +528,88 @@ function createRecordingService(params) {
|
|
|
429
528
|
//#endregion
|
|
430
529
|
//#region src/internal/faceCapture/protectedFaceAttempt.ts
|
|
431
530
|
const ON_DEVICE_MANUAL_CAPTURE_TIMEOUT_MS = 2147483647;
|
|
531
|
+
/**
|
|
532
|
+
* Recorder hooks for one protected face attempt.
|
|
533
|
+
*
|
|
534
|
+
* The recording service comes from the owner of the capture step (the face
|
|
535
|
+
* controller), so a step-scoped service (`suspend` present) is started or
|
|
536
|
+
* resumed by every attempt, paused with its camera clone ended before POC, and
|
|
537
|
+
* suspended again on release; only the controller completes it (ENG-56648).
|
|
538
|
+
* Per-attempt services (local video liveness, capture-only video) keep their
|
|
539
|
+
* stop-before-POC and cleanup-on-release behavior.
|
|
540
|
+
*/
|
|
432
541
|
var ProtectedFaceRecorderHooks = class {
|
|
433
|
-
constructor(config,
|
|
434
|
-
this.config = config;
|
|
435
|
-
this.dependencies = dependencies;
|
|
542
|
+
constructor(config, delivery, getRecordingService) {
|
|
436
543
|
this.delivery = delivery;
|
|
544
|
+
this.getRecordingService = getRecordingService;
|
|
545
|
+
this.disposed = false;
|
|
437
546
|
this.mode = config.onDeviceFaceResultsSubmissionEnabled === true || config.enableFaceRecording !== true && config.deepsightLiveness !== "VIDEOLIVENESS" ? "none" : "finalizeBeforePoc";
|
|
438
547
|
}
|
|
439
548
|
async start(unprotectedStream) {
|
|
440
549
|
if (this.mode === "none") return;
|
|
441
|
-
const
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
}
|
|
448
|
-
|
|
550
|
+
const service = await this.getRecordingService();
|
|
551
|
+
if (!service) return;
|
|
552
|
+
this.service = service;
|
|
553
|
+
if (this.disposed) {
|
|
554
|
+
this.suspendOrCleanup();
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
try {
|
|
558
|
+
await service.start(unprotectedStream);
|
|
559
|
+
} catch (error) {
|
|
560
|
+
if (service.suspend) {
|
|
561
|
+
service.suspend();
|
|
562
|
+
trueSightLog("warning", "recording", "faceScan", "face recording did not resume for this attempt");
|
|
563
|
+
return;
|
|
564
|
+
}
|
|
565
|
+
throw error;
|
|
566
|
+
}
|
|
567
|
+
if (this.disposed) this.suspendOrCleanup();
|
|
449
568
|
}
|
|
450
569
|
async prepareForPoc() {
|
|
451
|
-
|
|
570
|
+
const service = this.service;
|
|
571
|
+
if (!service) return {};
|
|
452
572
|
if (this.delivery === "local") {
|
|
453
573
|
try {
|
|
454
|
-
const result = await
|
|
574
|
+
const result = await service.stopAndGetVideo();
|
|
455
575
|
this.captureOnlyVideoBase64 = result.videoBase64;
|
|
456
576
|
} catch {
|
|
457
577
|
this.captureOnlyVideoBase64 = void 0;
|
|
458
578
|
}
|
|
459
579
|
return {};
|
|
460
580
|
}
|
|
461
|
-
return
|
|
581
|
+
if (service.suspend) return service.prepareUpload();
|
|
582
|
+
return service.stop();
|
|
462
583
|
}
|
|
463
584
|
async resumeAfterPoc() {}
|
|
464
585
|
pauseForBackground() {
|
|
465
586
|
this.service?.pauseForBackground?.();
|
|
466
587
|
}
|
|
467
588
|
async resumeFromBackground(unprotectedStream) {
|
|
468
|
-
|
|
589
|
+
const service = this.service;
|
|
590
|
+
if (!service?.resumeFromBackground || this.disposed) return;
|
|
591
|
+
try {
|
|
592
|
+
await service.resumeFromBackground(unprotectedStream);
|
|
593
|
+
} catch {
|
|
594
|
+
service.suspend?.();
|
|
595
|
+
trueSightLog("warning", "recording", "faceScan", "face recording did not resume after foreground");
|
|
596
|
+
}
|
|
469
597
|
}
|
|
470
598
|
dispose() {
|
|
599
|
+
this.disposed = true;
|
|
471
600
|
try {
|
|
472
|
-
this.
|
|
601
|
+
this.suspendOrCleanup();
|
|
473
602
|
} finally {
|
|
474
603
|
this.service = void 0;
|
|
475
604
|
}
|
|
476
605
|
}
|
|
606
|
+
/** Step-scoped services suspend (the owner completes them); others clean up. */
|
|
607
|
+
suspendOrCleanup() {
|
|
608
|
+
const service = this.service;
|
|
609
|
+
if (!service) return;
|
|
610
|
+
if (service.suspend) service.suspend();
|
|
611
|
+
else service.cleanup();
|
|
612
|
+
}
|
|
477
613
|
takeCaptureOnlyVideo() {
|
|
478
614
|
const video = this.captureOnlyVideoBase64;
|
|
479
615
|
this.captureOnlyVideoBase64 = void 0;
|
|
@@ -497,9 +633,19 @@ var ProtectedFaceAttemptRuntime = class ProtectedFaceAttemptRuntime {
|
|
|
497
633
|
this.recorderTransferred = false;
|
|
498
634
|
this.pendingSignals = [];
|
|
499
635
|
this.provider = options.faceDetection;
|
|
500
|
-
this.recorder = new ProtectedFaceRecorderHooks(options.config, options.
|
|
636
|
+
this.recorder = new ProtectedFaceRecorderHooks(options.config, options.delivery, options.getRecordingService ?? (() => this.createAttemptRecordingService()));
|
|
501
637
|
this.cycleOwnership = createCameraCycleOwnership(options.cycle);
|
|
502
638
|
}
|
|
639
|
+
/** Per-attempt fallback when no step owner supplies the recording service. */
|
|
640
|
+
async createAttemptRecordingService() {
|
|
641
|
+
const wasmUtil = await this.options.dependencies.getWasmUtil();
|
|
642
|
+
return createRecordingService({
|
|
643
|
+
config: this.options.config,
|
|
644
|
+
wasmUtil,
|
|
645
|
+
sessionToken: getToken(),
|
|
646
|
+
localDelivery: this.options.delivery === "local"
|
|
647
|
+
});
|
|
648
|
+
}
|
|
503
649
|
get delivery() {
|
|
504
650
|
return this.options.delivery;
|
|
505
651
|
}
|
|
@@ -765,6 +911,8 @@ function createProtectedFaceControllerActor(options) {
|
|
|
765
911
|
let committedPreview;
|
|
766
912
|
let pendingAutoPreview;
|
|
767
913
|
let recording = {};
|
|
914
|
+
let stepRecording;
|
|
915
|
+
let stepRecordingPending;
|
|
768
916
|
let generation = 0;
|
|
769
917
|
let active = true;
|
|
770
918
|
let diagnosticAttempt = 0;
|
|
@@ -783,6 +931,48 @@ function createProtectedFaceControllerActor(options) {
|
|
|
783
931
|
if (!controllerInput) throw new Error("Protected face controller is not bound");
|
|
784
932
|
return controllerInput;
|
|
785
933
|
};
|
|
934
|
+
/**
|
|
935
|
+
* One recording service per capture step (ENG-56648). Every attempt of the
|
|
936
|
+
* step starts or resumes it; `completeStepRecording` completes it when the
|
|
937
|
+
* backend accepts a capture or the step ends without a retry.
|
|
938
|
+
*/
|
|
939
|
+
const getStepRecordingService = () => {
|
|
940
|
+
if (stepRecording) return Promise.resolve(stepRecording);
|
|
941
|
+
if (stepRecordingPending) return stepRecordingPending;
|
|
942
|
+
const input = getControllerInput();
|
|
943
|
+
const pending = (async () => {
|
|
944
|
+
const wasmUtil = await input.dependencies.getWasmUtil();
|
|
945
|
+
if (!active) return;
|
|
946
|
+
stepRecording ??= createRecordingService({
|
|
947
|
+
config: input.config,
|
|
948
|
+
wasmUtil,
|
|
949
|
+
sessionToken: getToken(),
|
|
950
|
+
localDelivery: options.delivery === "local"
|
|
951
|
+
});
|
|
952
|
+
return stepRecording;
|
|
953
|
+
})();
|
|
954
|
+
stepRecordingPending = pending;
|
|
955
|
+
pending.finally(() => {
|
|
956
|
+
if (stepRecordingPending === pending) stepRecordingPending = void 0;
|
|
957
|
+
});
|
|
958
|
+
return pending;
|
|
959
|
+
};
|
|
960
|
+
const completeStepRecording = () => {
|
|
961
|
+
const service = stepRecording;
|
|
962
|
+
stepRecording = void 0;
|
|
963
|
+
if (!service) return;
|
|
964
|
+
if (!service.suspend) {
|
|
965
|
+
try {
|
|
966
|
+
service.cleanup();
|
|
967
|
+
} catch {}
|
|
968
|
+
return;
|
|
969
|
+
}
|
|
970
|
+
service.stop().catch(() => void 0).finally(() => {
|
|
971
|
+
try {
|
|
972
|
+
service.cleanup();
|
|
973
|
+
} catch {}
|
|
974
|
+
});
|
|
975
|
+
};
|
|
786
976
|
const ensureRuntime = () => {
|
|
787
977
|
if (!runtime) {
|
|
788
978
|
const input = getControllerInput();
|
|
@@ -798,7 +988,8 @@ function createProtectedFaceControllerActor(options) {
|
|
|
798
988
|
acquireCamera: (provider) => initializeCamera({
|
|
799
989
|
config: input.config,
|
|
800
990
|
provider
|
|
801
|
-
})
|
|
991
|
+
}),
|
|
992
|
+
getRecordingService: getStepRecordingService
|
|
802
993
|
});
|
|
803
994
|
if (deepsightService) runtime.setDeepsightService(deepsightService);
|
|
804
995
|
}
|
|
@@ -1042,12 +1233,16 @@ function createProtectedFaceControllerActor(options) {
|
|
|
1042
1233
|
case "RESET":
|
|
1043
1234
|
releaseCurrent("retry");
|
|
1044
1235
|
return;
|
|
1236
|
+
case "COMPLETE_RECORDING":
|
|
1237
|
+
completeStepRecording();
|
|
1238
|
+
return;
|
|
1045
1239
|
case "RELEASE": releaseCurrent(command.reason);
|
|
1046
1240
|
}
|
|
1047
1241
|
});
|
|
1048
1242
|
return () => {
|
|
1049
1243
|
active = false;
|
|
1050
1244
|
releaseCurrent("externalStop");
|
|
1245
|
+
completeStepRecording();
|
|
1051
1246
|
};
|
|
1052
1247
|
});
|
|
1053
1248
|
}
|
|
@@ -1281,6 +1476,10 @@ const faceCaptureMachine = setup({
|
|
|
1281
1476
|
if (!isProtectedFaceControllerRunning(self)) return;
|
|
1282
1477
|
enqueue.sendTo("protectedFaceController", { type: "RESET" });
|
|
1283
1478
|
}),
|
|
1479
|
+
completeProtectedRecording: enqueueActions(({ enqueue, self }) => {
|
|
1480
|
+
if (!isProtectedFaceControllerRunning(self)) return;
|
|
1481
|
+
enqueue.sendTo("protectedFaceController", { type: "COMPLETE_RECORDING" });
|
|
1482
|
+
}),
|
|
1284
1483
|
sendProtectedAutoCapture: enqueueActions(({ enqueue, self, event }) => {
|
|
1285
1484
|
if (!isProtectedFaceControllerRunning(self)) return;
|
|
1286
1485
|
enqueue.sendTo("protectedFaceController", {
|
|
@@ -1764,7 +1963,7 @@ const faceCaptureMachine = setup({
|
|
|
1764
1963
|
}
|
|
1765
1964
|
] } },
|
|
1766
1965
|
success: {
|
|
1767
|
-
entry: "cleanup",
|
|
1966
|
+
entry: ["completeProtectedRecording", "cleanup"],
|
|
1768
1967
|
after: { 3e3: { target: "#faceCapture.processing" } }
|
|
1769
1968
|
}
|
|
1770
1969
|
}
|
|
@@ -1780,7 +1979,7 @@ const faceCaptureMachine = setup({
|
|
|
1780
1979
|
onError: { target: "finished" }
|
|
1781
1980
|
} },
|
|
1782
1981
|
terminalProcessing: {
|
|
1783
|
-
entry: "cleanup",
|
|
1982
|
+
entry: ["completeProtectedRecording", "cleanup"],
|
|
1784
1983
|
invoke: {
|
|
1785
1984
|
id: "processFace",
|
|
1786
1985
|
src: "processFace",
|
|
@@ -1809,7 +2008,11 @@ const faceCaptureMachine = setup({
|
|
|
1809
2008
|
type: "final"
|
|
1810
2009
|
},
|
|
1811
2010
|
error: {
|
|
1812
|
-
entry: [
|
|
2011
|
+
entry: [
|
|
2012
|
+
"completeProtectedRecording",
|
|
2013
|
+
"stopMediaStream",
|
|
2014
|
+
"releaseAvatarWarmup"
|
|
2015
|
+
],
|
|
1813
2016
|
on: { RESET: {
|
|
1814
2017
|
target: "idle",
|
|
1815
2018
|
actions: ["resetProtectedController", "resetContext"]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as __toESM } from "./rolldown-runtime-FDOR9p9I.esm.js";
|
|
2
|
-
import { t as SDK_VERSION } from "./sdkVersion-
|
|
2
|
+
import { t as SDK_VERSION } from "./sdkVersion-kGZmwBhf.esm.js";
|
|
3
3
|
import { t as BrowserLazyImportProvider } from "./BrowserLazyImportProvider-BhoA957O.esm.js";
|
|
4
4
|
let currentEnvironment;
|
|
5
5
|
/** Effective tier: the explicitly-set value, else the default (see note above). */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { E as updateFeatureManagementUser, T as subscribeFeatureManagement, _ as getIsFeatureManagementInitialized, a as stringParam, d as ONBOARDING_WEB_SDK_PARAMETER_STORE, f as getExperiment, g as getFeatureParameterStore, h as getFeatureManagementVersion, i as numberParam, l as resolveExperiment, m as getFeatureGate, n as defineExperimentParams, o as EXPERIMENT_UNAVAILABLE_SENTINEL, p as getFeatureDynamicConfig, r as enumParam, s as exposeExperimentOnce, t as booleanParam, u as resolveExperimentOnce, x as logEvent, y as getLayer } from "./feature-management-
|
|
1
|
+
import { E as updateFeatureManagementUser, T as subscribeFeatureManagement, _ as getIsFeatureManagementInitialized, a as stringParam, d as ONBOARDING_WEB_SDK_PARAMETER_STORE, f as getExperiment, g as getFeatureParameterStore, h as getFeatureManagementVersion, i as numberParam, l as resolveExperiment, m as getFeatureGate, n as defineExperimentParams, o as EXPERIMENT_UNAVAILABLE_SENTINEL, p as getFeatureDynamicConfig, r as enumParam, s as exposeExperimentOnce, t as booleanParam, u as resolveExperimentOnce, x as logEvent, y as getLayer } from "./feature-management-02JHuEhD.esm.js";
|
|
2
2
|
export { EXPERIMENT_UNAVAILABLE_SENTINEL, ONBOARDING_WEB_SDK_PARAMETER_STORE, booleanParam, defineExperimentParams, enumParam, exposeExperimentOnce, getExperiment, getFeatureDynamicConfig, getFeatureGate, getFeatureManagementVersion, getFeatureParameterStore, getIsFeatureManagementInitialized, getLayer, logEvent, numberParam, resolveExperiment, resolveExperimentOnce, stringParam, subscribeFeatureManagement, updateFeatureManagementUser };
|
package/dist/flow.esm.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { v as addEvent } from "./events-ijlbX_Wx.esm.js";
|
|
2
|
-
import { a as resolveDashboardModuleConfig, c as getRequiredWasmPipelines, j as mergeDashboardConfig, l as normalizeFlowModules, n as getFlow, o as enrichFlowModuleConfig, r as preloadDashboardFlow, s as getNextRequiredWasmPipelines, t as completeDeferredActivation, u as resolveFlowModuleConfig } from "./flowServices-
|
|
2
|
+
import { a as resolveDashboardModuleConfig, c as getRequiredWasmPipelines, j as mergeDashboardConfig, l as normalizeFlowModules, n as getFlow, o as enrichFlowModuleConfig, r as preloadDashboardFlow, s as getNextRequiredWasmPipelines, t as completeDeferredActivation, u as resolveFlowModuleConfig } from "./flowServices-Dc-EUuwB.esm.js";
|
|
3
3
|
import { i as assign, s as createActor, t as setup, u as createManager } from "./xstate.esm-Bg3FuvIs.esm.js";
|
|
4
4
|
import { n as fromPromise } from "./xstate-actors.esm-Ccyzgxj1.esm.js";
|
|
5
|
-
import { n as getFinishStatus, r as getTotalScoreStatus, t as classifyScoreStatus } from "./flowCompletionService-
|
|
6
|
-
import { n as attachFlowEventEmitter, t as runChildModule } from "./runChildModule-
|
|
5
|
+
import { n as getFinishStatus, r as getTotalScoreStatus, t as classifyScoreStatus } from "./flowCompletionService-BAg6qc6d.esm.js";
|
|
6
|
+
import { n as attachFlowEventEmitter, t as runChildModule } from "./runChildModule-DQbERvPv.esm.js";
|
|
7
7
|
import { n as isAdvanceableError } from "./advanceableErrors-CpF2cBy6.esm.js";
|
|
8
8
|
//#region src/modules/flow/noOpFlowModuleMachine.ts
|
|
9
9
|
const noOpFlowModuleMachine = setup({}).createMachine({
|
package/dist/{flowCompletionService-B-ri1Pvq.esm.js → flowCompletionService-BAg6qc6d.esm.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as api } from "./api-Bx3gKW_y.esm.js";
|
|
2
2
|
import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
|
|
3
|
-
import { i as toIncodeApiError } from "./apiError-
|
|
3
|
+
import { i as toIncodeApiError } from "./apiError-DmDlw1pl.esm.js";
|
|
4
4
|
//#region src/modules/flow/flowCompletionService.ts
|
|
5
5
|
const getFinishStatus = async (flowId, signal) => {
|
|
6
6
|
const url = `${endpoints.finishStatus}${flowId ? `?flowId=${flowId}` : ""}`;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { n as getWasmStatus } from "./warmup-
|
|
2
|
-
import { E as updateFeatureManagementUser } from "./feature-management-
|
|
1
|
+
import { n as getWasmStatus } from "./warmup-DLq_t-Zu.esm.js";
|
|
2
|
+
import { E as updateFeatureManagementUser } from "./feature-management-02JHuEhD.esm.js";
|
|
3
3
|
import { r as getToken, t as api } from "./api-Bx3gKW_y.esm.js";
|
|
4
|
-
import { i as initializeSession, l as whenSessionFingerprintSettled, r as getSessionFingerprintResult, u as getStandaloneFlowPolicy } from "./sessionInitializer-
|
|
4
|
+
import { i as initializeSession, l as whenSessionFingerprintSettled, r as getSessionFingerprintResult, u as getStandaloneFlowPolicy } from "./sessionInitializer-D-gzxDwN.esm.js";
|
|
5
5
|
import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
|
|
6
|
-
import { i as toIncodeApiError } from "./apiError-
|
|
7
|
-
import "./session-
|
|
6
|
+
import { i as toIncodeApiError } from "./apiError-DmDlw1pl.esm.js";
|
|
7
|
+
import "./session-Bb5KuwEu.esm.js";
|
|
8
8
|
import { i as toEkycConfig } from "./ekycUtils-Dew1rBG0.esm.js";
|
|
9
9
|
//#region src/modules/flow/dashboardConfig.ts
|
|
10
10
|
function isPlainObject(value) {
|
package/dist/geolocation.esm.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { t as createGeolocationManager } from "./geolocationManager-
|
|
2
|
-
import { t as geolocationMachine } from "./geolocationStateMachine-
|
|
1
|
+
import { t as createGeolocationManager } from "./geolocationManager-v0LZK1kW.esm.js";
|
|
2
|
+
import { t as geolocationMachine } from "./geolocationStateMachine-DfdsEj7L.esm.js";
|
|
3
3
|
export { createGeolocationManager, geolocationMachine };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as eventModuleNames, o as createManagerInstrumentation } from "./events-ijlbX_Wx.esm.js";
|
|
2
2
|
import { s as createActor, u as createManager } from "./xstate.esm-Bg3FuvIs.esm.js";
|
|
3
|
-
import { t as geolocationMachine } from "./geolocationStateMachine-
|
|
3
|
+
import { t as geolocationMachine } from "./geolocationStateMachine-DfdsEj7L.esm.js";
|
|
4
4
|
//#region ../infra/src/providers/browser/BrowserGeolocationProvider.ts
|
|
5
5
|
var BrowserGeolocationProvider = class {
|
|
6
6
|
getCurrentPosition() {
|
package/dist/{geolocationStateMachine-D8UrSeXQ.esm.js → geolocationStateMachine-DfdsEj7L.esm.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as api } from "./api-Bx3gKW_y.esm.js";
|
|
2
2
|
import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
|
|
3
3
|
import { a as isIOS, t as isAndroid } from "./platform-DkcRc9JV.esm.js";
|
|
4
|
-
import { n as isConnectivityError } from "./apiError-
|
|
4
|
+
import { n as isConnectivityError } from "./apiError-DmDlw1pl.esm.js";
|
|
5
5
|
import { i as assign, t as setup } from "./xstate.esm-Bg3FuvIs.esm.js";
|
|
6
6
|
import { n as fromPromise } from "./xstate-actors.esm-Ccyzgxj1.esm.js";
|
|
7
7
|
//#region src/modules/geolocation/geolocationServices.ts
|
package/dist/id-ocr.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as UpdateOcrDataParams, n as OcrData, o as ValidationRule, r as OcrFieldConfig, t as IdOcrConfig } from "./types-CJ7Yl9K-.js";
|
|
2
|
-
import { a as IdOcrActor, i as createIdOcrManagerFromActor, n as IdOcrState, o as IdOcrOcrDocument, r as createIdOcrManager, s as idOcrStateMachine, t as IdOcrManager } from "./idOcrManager-
|
|
2
|
+
import { a as IdOcrActor, i as createIdOcrManagerFromActor, n as IdOcrState, o as IdOcrOcrDocument, r as createIdOcrManager, s as idOcrStateMachine, t as IdOcrManager } from "./idOcrManager-BTdHlJ9D.js";
|
|
3
3
|
//#region src/modules/id-ocr/idOcrFields.d.ts
|
|
4
4
|
declare const OCR_FIELDS: OcrFieldConfig[];
|
|
5
5
|
declare const getOcrFields: (config: Pick<IdOcrConfig, "cpfOnly" | "flowId">) => OcrFieldConfig[];
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
import { r as WasmUtilProvider } from "./safeStorage-
|
|
2
|
-
import { t as ensureWasmPipelines } from "./setup-
|
|
1
|
+
import { r as WasmUtilProvider } from "./safeStorage-Q_iUpxa8.esm.js";
|
|
2
|
+
import { t as ensureWasmPipelines } from "./setup-Cb7Ws1HA.esm.js";
|
|
3
3
|
import { t as BrowserTimerProvider } from "./BrowserTimerProvider-BXhgNxLt.esm.js";
|
|
4
|
-
import { a as resolveDashboardModuleConfig, d as facingModeForStep } from "./flowServices-
|
|
4
|
+
import { a as resolveDashboardModuleConfig, d as facingModeForStep } from "./flowServices-Dc-EUuwB.esm.js";
|
|
5
5
|
import { i as assign, r as sendTo, s as createActor, t as setup, u as createManager } from "./xstate.esm-Bg3FuvIs.esm.js";
|
|
6
6
|
import { n as fromPromise, t as fromCallback } from "./xstate-actors.esm-Ccyzgxj1.esm.js";
|
|
7
|
-
import { n as encryptSelfieImage, o as startDetection, t as FaceDetectionProvider } from "./FaceDetectionProvider-
|
|
8
|
-
import {
|
|
7
|
+
import { n as encryptSelfieImage, o as startDetection, t as FaceDetectionProvider } from "./FaceDetectionProvider-CSjiXOo7.esm.js";
|
|
8
|
+
import { o as StreamCanvasProcessingSession, r as CameraCompositor } from "./multipartRecordingService-mwKFTlhR.esm.js";
|
|
9
9
|
import { n as getWindowDimensions } from "./getDeviceClass-CeBiEayS.esm.js";
|
|
10
10
|
import { i as uploadSelfie, r as processFace } from "./selfieErrorUtils-yjRptLFi.esm.js";
|
|
11
|
-
import { r as
|
|
12
|
-
import {
|
|
13
|
-
import { h as ID_ERROR_CODES, l as processId, m as validateUploadResponse, p as uploadIdImage } from "./idCaptureServices-Cl67CI_t.esm.js";
|
|
11
|
+
import { n as DEFAULT_ID_CAPTURE_THRESHOLDS, r as IdCaptureProvider, t as DEFAULT_ID_CAPTURE_GEOMETRY } from "./idCaptureDefaults-Ba-m1uO3.esm.js";
|
|
12
|
+
import { _ as ID_ERROR_CODES, g as validateUploadResponse, h as uploadIdImage, u as processId } from "./idCaptureServices-DKeVf0Gu.esm.js";
|
|
14
13
|
import { t as StreamCanvasCapture } from "./StreamCanvasCapture-C9jtgBdT.esm.js";
|
|
15
|
-
import { n as getFinishStatus } from "./flowCompletionService-
|
|
16
|
-
import { i as delay, n as defaultAcquireCamera, o as isSelfieValidationError, s as isWrongVideoSelfieIdSide } from "./videoSelfieCameraWarmer-
|
|
14
|
+
import { n as getFinishStatus } from "./flowCompletionService-BAg6qc6d.esm.js";
|
|
15
|
+
import { i as delay, n as defaultAcquireCamera, o as isSelfieValidationError, s as isWrongVideoSelfieIdSide } from "./videoSelfieCameraWarmer-CkdLS8NK.esm.js";
|
|
17
16
|
//#region src/modules/id-selfie-flow/idSelfieFlowStepDetector.ts
|
|
18
17
|
/** Default autocapture window for the selfie step. */
|
|
19
18
|
const SELFIE_AUTOCAPTURE_MS = 1e4;
|
package/dist/id.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { n as PermissionStatus, t as PermissionResult } from "./types-BEwVKkLJ.j
|
|
|
3
3
|
import { t as CameraStream } from "./camera-9wWD-pwg.js";
|
|
4
4
|
import { r as IdCaptureSettings, t as DetectionOrientation } from "./IIdCaptureCapability-DBsv9-7M.js";
|
|
5
5
|
import { A as DeviceWalletDecision, B as DigitalIdFunnelEntry, C as IdCapturedImageData, D as IdFlowStep, E as IdErrorCode, F as DeviceWalletProvider, G as DigitalIdProviderId, H as ResolvedDigitalIdRoute, L as DIGITAL_ID_DOCUMENT_TYPES, M as DeviceWalletFailReason, N as DeviceWalletOutput, O as UploadIdResponse, P as DeviceWalletPlatform, R as DIGITAL_ID_REGISTRY, S as IdCaptureThresholds, T as IdError, U as isRedirectFlowType, V as DigitalIdPlatformSupport, W as resolveDigitalIdImplementation, _ as IdCaptureGeometry, a as CaptureOnlyResponse, b as IdCaptureOnlyConfig, c as DetectionStatus, d as IdCaptureContext, f as IdCaptureDependencies, g as IdCaptureEvent, h as IdCaptureDigitalIdRedirectOption, i as CaptureIdResponse, j as DeviceWalletDecryptResponse, l as ID_ERROR_CODES, m as IdCaptureDigitalIdMethod, n as AcceptedDocumentType, o as CapturedImage, p as IdCaptureDigitalIdFlowType, q as RedirectReturnParams, r as AddBarcodeV3Response, s as DetectionArea, t as AcceptedDocument, u as IdCaptureConfig, v as IdCaptureInput, w as IdDocumentType, x as IdCaptureOutput, y as IdCaptureMode, z as DigitalIdDocumentType } from "./types-B2aRpKiG2.js";
|
|
6
|
-
import { A as barcodeToBase64, B as
|
|
6
|
+
import { A as barcodeToBase64, B as startRecordingSession, C as FinalizedIdRecording, D as UploadIdImageParams, E as StartRecordingParams, F as isSuspendableRecordingSession, H as stopStream, I as pauseRecordingForAttempt, L as prepareRecordingForCameraRetry, M as finalizeRecordingSession, N as getRealQualityValue, O as ValidationError, P as initializeIdCapture, R as processId, S as AddBarcodeParams, T as InitializeIdCaptureParams, U as uploadIdImage, V as stopRecording, W as validateUploadResponse, _ as CreateIdCaptureActorOptions, a as RenderWalletError, b as IdCaptureMachine, c as DeviceWalletManager, d as CreateDeviceWalletActorOptions, f as CreateIdCaptureOnlyActorOptions, g as idCaptureOnlyMachine, h as IdCaptureOnlyMachine, j as disposeRecordingSession, k as addBarcode, l as DeviceWalletState, m as createIdCaptureOnlyActor, n as IdCaptureManager, o as RenderWalletParams, p as IdCaptureOnlyActor, r as IdCaptureState, s as renderWallet, t as createIdCaptureManager, u as createDeviceWalletManager, v as IdCaptureActor, w as IdCaptureInitResult, x as idCaptureMachine, y as createIdCaptureActor, z as resumeRecordingAfterPause } from "./idCaptureManager-DfHdJLmj.js";
|
|
7
7
|
//#region src/modules/id/deviceWallet/deviceWalletErrors.d.ts
|
|
8
8
|
/**
|
|
9
9
|
* Fail reason → i18n key for the device-wallet error screen (same shape as
|
|
@@ -47,4 +47,4 @@ declare function createIdCaptureOnlyManagerFromActor(actor: IdCaptureOnlyActor,
|
|
|
47
47
|
*/
|
|
48
48
|
declare function createIdCaptureOnlyManager(options: CreateIdCaptureOnlyActorOptions): IdCaptureOnlyManager;
|
|
49
49
|
//#endregion
|
|
50
|
-
export { AcceptedDocument, AcceptedDocumentType, AddBarcodeParams, AddBarcodeV3Response, type CameraStream, CaptureIdResponse, CaptureOnlyResponse, CapturedImage, type CreateDeviceWalletActorOptions, type CreateIdCaptureActorOptions, type CreateIdCaptureOnlyActorOptions, DEVICE_WALLET_ERROR_KEYS, DIGITAL_ID_DOCUMENT_TYPES, DIGITAL_ID_REGISTRY, DetectionArea, type DetectionOrientation, DetectionStatus, type DeviceWalletDecision, type DeviceWalletDecryptResponse, type DeviceWalletFailReason, type DeviceWalletManager, type DeviceWalletOutput, type DeviceWalletPlatform, type DeviceWalletProvider, type DeviceWalletState, type DigitalIdDocumentType, type DigitalIdFunnelEntry, type DigitalIdPlatformSupport, type DigitalIdProviderId, FinalizedIdRecording, ID_ERROR_CODES, type IdCaptureActor, IdCaptureConfig, IdCaptureContext, IdCaptureDependencies, IdCaptureDigitalIdFlowType, IdCaptureDigitalIdMethod, IdCaptureDigitalIdRedirectOption, IdCaptureEvent, IdCaptureGeometry, IdCaptureInitResult, IdCaptureInput, type IdCaptureMachine, type IdCaptureManager, IdCaptureMode, type IdCaptureOnlyActor, IdCaptureOnlyConfig, type IdCaptureOnlyMachine, type IdCaptureOnlyManager, IdCaptureOutput, type IdCaptureSettings, type IdCaptureState, IdCaptureThresholds, IdCapturedImageData, IdDocumentType, IdError, IdErrorCode, IdFlowStep, InitializeIdCaptureParams, type PermissionResult, type PermissionStatus, type RedirectReturnParams, type RenderWalletError, type RenderWalletParams, type ResolvedDigitalIdRoute, StartRecordingParams, UploadIdImageParams, UploadIdResponse, ValidationError, addBarcode, barcodeToBase64, createDeviceWalletManager, createIdCaptureActor, createIdCaptureManager, createIdCaptureOnlyActor, createIdCaptureOnlyManager, createIdCaptureOnlyManagerFromActor, disposeRecordingSession, finalizeRecordingSession, getRealQualityValue, idCaptureMachine, idCaptureOnlyMachine, initializeIdCapture, isRedirectFlowType, pauseRecordingForAttempt, prepareRecordingForCameraRetry, processId, renderWallet, resolveDigitalIdImplementation, resolveWalletPlatform, startRecordingSession, stopRecording, stopStream, uploadIdImage, validateUploadResponse };
|
|
50
|
+
export { AcceptedDocument, AcceptedDocumentType, AddBarcodeParams, AddBarcodeV3Response, type CameraStream, CaptureIdResponse, CaptureOnlyResponse, CapturedImage, type CreateDeviceWalletActorOptions, type CreateIdCaptureActorOptions, type CreateIdCaptureOnlyActorOptions, DEVICE_WALLET_ERROR_KEYS, DIGITAL_ID_DOCUMENT_TYPES, DIGITAL_ID_REGISTRY, DetectionArea, type DetectionOrientation, DetectionStatus, type DeviceWalletDecision, type DeviceWalletDecryptResponse, type DeviceWalletFailReason, type DeviceWalletManager, type DeviceWalletOutput, type DeviceWalletPlatform, type DeviceWalletProvider, type DeviceWalletState, type DigitalIdDocumentType, type DigitalIdFunnelEntry, type DigitalIdPlatformSupport, type DigitalIdProviderId, FinalizedIdRecording, ID_ERROR_CODES, type IdCaptureActor, IdCaptureConfig, IdCaptureContext, IdCaptureDependencies, IdCaptureDigitalIdFlowType, IdCaptureDigitalIdMethod, IdCaptureDigitalIdRedirectOption, IdCaptureEvent, IdCaptureGeometry, IdCaptureInitResult, IdCaptureInput, type IdCaptureMachine, type IdCaptureManager, IdCaptureMode, type IdCaptureOnlyActor, IdCaptureOnlyConfig, type IdCaptureOnlyMachine, type IdCaptureOnlyManager, IdCaptureOutput, type IdCaptureSettings, type IdCaptureState, IdCaptureThresholds, IdCapturedImageData, IdDocumentType, IdError, IdErrorCode, IdFlowStep, InitializeIdCaptureParams, type PermissionResult, type PermissionStatus, type RedirectReturnParams, type RenderWalletError, type RenderWalletParams, type ResolvedDigitalIdRoute, StartRecordingParams, UploadIdImageParams, UploadIdResponse, ValidationError, addBarcode, barcodeToBase64, createDeviceWalletManager, createIdCaptureActor, createIdCaptureManager, createIdCaptureOnlyActor, createIdCaptureOnlyManager, createIdCaptureOnlyManagerFromActor, disposeRecordingSession, finalizeRecordingSession, getRealQualityValue, idCaptureMachine, idCaptureOnlyMachine, initializeIdCapture, isRedirectFlowType, isSuspendableRecordingSession, pauseRecordingForAttempt, prepareRecordingForCameraRetry, processId, renderWallet, resolveDigitalIdImplementation, resolveWalletPlatform, resumeRecordingAfterPause, startRecordingSession, stopRecording, stopStream, uploadIdImage, validateUploadResponse };
|