@incodetech/core 2.2.0-rc.6 → 2.2.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/{BrowserDiagnosticsCryptoProvider-Ce3rctBe.esm.js → BrowserDiagnosticsCryptoProvider-B8vorxN5.esm.js} +1 -1
- package/dist/{addressSearch-DQyrvDQj.esm.js → addressSearch-D1XpBdUS.esm.js} +1 -1
- package/dist/ae-signature.esm.js +1 -1
- package/dist/antifraud.esm.js +2 -2
- package/dist/{antifraudManager-BMZvuxv0.esm.js → antifraudManager-CQFNgSPt.esm.js} +2 -2
- package/dist/{antifraudStateMachine-r4VxSBS4.esm.js → antifraudStateMachine-Bf_JVNwn.esm.js} +2 -2
- package/dist/{apiError-BSXFYi4z.esm.js → apiError-BA1d_au0.esm.js} +1 -1
- package/dist/authentication.esm.js +2 -2
- package/dist/{authenticationManager-DYqYkfs6.esm.js → authenticationManager-zh9TC62P.esm.js} +3 -3
- package/dist/{authenticationStateMachine-9tP0fEe0.esm.js → authenticationStateMachine-xzi-vnvE.esm.js} +4 -4
- package/dist/certificate-issuance.esm.js +2 -2
- package/dist/{certificateIssuanceStateMachine-COd7_l2T.esm.js → certificateIssuanceStateMachine-D_R92TYu.esm.js} +2 -2
- package/dist/consent.esm.js +2 -2
- package/dist/{consentManager-DyBXdkFn.esm.js → consentManager-BxjpLZAG.esm.js} +2 -2
- package/dist/{consentStateMachine-WD-S-Yhs.esm.js → consentStateMachine-D9D4ON8Z.esm.js} +2 -2
- package/dist/cross-document-data-match.esm.js +1 -1
- package/dist/{crossDocumentDataMatchManager-pNkutndd.esm.js → crossDocumentDataMatchManager-CGT0V6RV.esm.js} +2 -2
- package/dist/curp-validation.esm.js +2 -2
- package/dist/{curpValidationManager-DEesnLee.esm.js → curpValidationManager-6Nmkn5u1.esm.js} +2 -2
- package/dist/{curpValidationStateMachine-9KwnqeoB.esm.js → curpValidationStateMachine-Ds7KMacK.esm.js} +2 -2
- package/dist/custom-fields.esm.js +2 -2
- package/dist/custom-watchlist.esm.js +2 -2
- package/dist/{customWatchlistStateMachine-B_ey3TFj.esm.js → customWatchlistStateMachine-YWSgKLbF.esm.js} +2 -2
- package/dist/{deepsightLoader-CraWVfCs.esm.js → deepsightLoader--wMKWECS.esm.js} +3 -3
- package/dist/document-capture.esm.js +2 -2
- package/dist/document-upload.esm.js +2 -2
- package/dist/{documentCaptureManager-DwM7AmEJ.esm.js → documentCaptureManager-DsQQhWry.esm.js} +2 -2
- package/dist/{documentCaptureStateMachine-D2jBwwVb.esm.js → documentCaptureStateMachine-BM4Ex_5x.esm.js} +2 -2
- package/dist/dynamic-forms.esm.js +2 -2
- package/dist/{dynamicFormsManager-CXkZG8c6.esm.js → dynamicFormsManager-fFVIRBNv.esm.js} +2 -2
- package/dist/{dynamicFormsStateMachine-Cl3kW4E7.esm.js → dynamicFormsStateMachine-D6D7oEYk.esm.js} +3 -3
- package/dist/ekyb.esm.js +3 -3
- package/dist/{ekybManager-BY8ijn3M.esm.js → ekybManager-Y3MkoXpC.esm.js} +2 -2
- package/dist/{ekybStateMachine-Cyv8iPyH.esm.js → ekybStateMachine-3nlnqdlr.esm.js} +4 -4
- package/dist/ekyc.esm.js +2 -2
- package/dist/{ekycManager-CasdX1Ou.esm.js → ekycManager-DgT48ky6.esm.js} +2 -2
- package/dist/{ekycStateMachine-DHvksnrr.esm.js → ekycStateMachine-CQwqiR-R.esm.js} +3 -3
- package/dist/electronic-signature.esm.js +1 -1
- package/dist/{electronicSignatureManager-CAHjq6JR.esm.js → electronicSignatureManager-DGbAJ00W.esm.js} +3 -3
- package/dist/email.esm.js +2 -2
- package/dist/{emailManager-NLzaP12q.esm.js → emailManager-BY0jeYwR.esm.js} +2 -2
- package/dist/{emailStateMachine-Bm894MHB.esm.js → emailStateMachine-Crw8QVmc.esm.js} +2 -2
- package/dist/extensibility.d.ts +2 -2
- package/dist/extensibility.esm.js +28 -28
- package/dist/face-match.esm.js +2 -2
- package/dist/{faceCaptureManagerFactory-BdAtEQUX.esm.js → faceCaptureManagerFactory-CVnZ0fa5.esm.js} +2 -2
- package/dist/{faceCaptureSetup-BUNskJhm.esm.js → faceCaptureSetup-Cd-04W_X.esm.js} +4 -4
- package/dist/{faceMatchManager-DEVhhdf4.esm.js → faceMatchManager-Ri4UbNz0.esm.js} +2 -2
- package/dist/{faceMatchStateMachine-CJiO2yLO.esm.js → faceMatchStateMachine-20DdZ3jg.esm.js} +2 -2
- package/dist/{feature-management-Bo_xbwQa.esm.js → feature-management-CPQ4qv3F.esm.js} +1 -1
- package/dist/feature-management.esm.js +1 -1
- package/dist/field-comparison.esm.js +1 -1
- package/dist/{fieldComparisonManager-BRYsIi34.esm.js → fieldComparisonManager-Cg6kPQQx.esm.js} +2 -2
- package/dist/fiscal-qr.esm.js +2 -2
- package/dist/flow.d.ts +1 -1
- package/dist/flow.esm.js +5 -5
- package/dist/{flowCompletionService-J_2XiDZG.esm.js → flowCompletionService-tfeoGre9.esm.js} +1 -1
- package/dist/{flowServices-BydHVxc7.esm.js → flowServices-f5Ruz7R9.esm.js} +4 -4
- package/dist/geolocation.esm.js +2 -2
- package/dist/{geolocationManager-BF_JcCgS.esm.js → geolocationManager-CH6RfqFH.esm.js} +2 -2
- package/dist/{geolocationStateMachine-rYPrOUyM.esm.js → geolocationStateMachine-DmbWFely.esm.js} +3 -3
- package/dist/government-validation.esm.js +2 -2
- package/dist/{governmentValidationStateMachine-BYKYUdza.esm.js → governmentValidationStateMachine-CK9DrZXX.esm.js} +2 -2
- package/dist/home.esm.js +1 -1
- package/dist/id-ocr.esm.js +2 -2
- package/dist/id-selfie-flow.esm.js +8 -8
- package/dist/id-verification.esm.js +2 -2
- package/dist/id.d.ts +2 -2
- package/dist/id.esm.js +5 -5
- package/dist/{idCaptureManager-C5zp-Xje.esm.js → idCaptureManager-BYwTZ2H8.esm.js} +12 -16
- package/dist/{idCaptureManager-BjU-Wyow.d.ts → idCaptureManager-CqrqSjJV.d.ts} +20 -10
- package/dist/{idCaptureServices-28d5mDGM.esm.js → idCaptureServices-44kwQItl.esm.js} +141 -15
- package/dist/{idCaptureStateMachine-3jTqEo76.esm.js → idCaptureStateMachine-kZ5OpdfM.esm.js} +445 -54
- package/dist/{idOcrManager-D_2k-6Vv.esm.js → idOcrManager-BIQYQXXj.esm.js} +2 -2
- package/dist/{idOcrStateMachine-Bq_e3l4E.esm.js → idOcrStateMachine-cSxzHpHt.esm.js} +2 -2
- package/dist/{idVerificationManager-DdlrWSSB.esm.js → idVerificationManager-JpV_SAsl.esm.js} +2 -2
- package/dist/{idVerificationStateMachine-GEQWUPU2.esm.js → idVerificationStateMachine-nPeUNyFq.esm.js} +2 -2
- package/dist/identity-reuse.esm.js +2 -2
- package/dist/{identityReuseManager-CzLZNgdh.esm.js → identityReuseManager-kNCg9AbD.esm.js} +2 -2
- package/dist/{identityReuseStateMachine-AubRPhIi.esm.js → identityReuseStateMachine-DyulxDjP.esm.js} +2 -2
- package/dist/index.esm.js +1 -1
- package/dist/mandatory-consent.esm.js +2 -2
- package/dist/{mandatoryConsentManager-CEIkNukS.esm.js → mandatoryConsentManager-B4Niyg_u.esm.js} +2 -2
- package/dist/{mandatoryConsentStateMachine-zroQGzwb.esm.js → mandatoryConsentStateMachine-B4-1u-L8.esm.js} +2 -2
- package/dist/{onDeviceFaceResults-CTinxa9H.esm.js → onDeviceFaceResults-CUHwyZT4.esm.js} +3 -3
- package/dist/personhood.esm.js +5 -5
- package/dist/phone.esm.js +2 -2
- package/dist/{phoneManager-B_03mKyi.esm.js → phoneManager-FsJ0W2Ei.esm.js} +2 -2
- package/dist/{phoneStateMachine-E1fUUcNM.esm.js → phoneStateMachine-Ba0wKHyX.esm.js} +2 -2
- package/dist/qe-signature.esm.js +1 -1
- package/dist/{recordingService-DtWTn91V.esm.js → recordingService-3NSENVwp.esm.js} +1 -1
- package/dist/redirect-to-mobile.esm.js +2 -2
- package/dist/{redirectToMobileManager-Bgo6eqri.esm.js → redirectToMobileManager-y4VQB11M.esm.js} +3 -3
- package/dist/{redirectToMobileStateMachine-C9SYCJcH.esm.js → redirectToMobileStateMachine-Cyv2x0PP.esm.js} +2 -2
- package/dist/{runChildModule-Bl5F16W9.esm.js → runChildModule-Dukuw23X.esm.js} +3 -3
- package/dist/{sdkVersion-DEks9mOi.esm.js → sdkVersion-D1Bm59g6.esm.js} +1 -1
- package/dist/selfie.esm.js +6 -6
- package/dist/{selfieManager-D1jZ1_6k.esm.js → selfieManager-Bj6B2ZVy.esm.js} +3 -3
- package/dist/{selfieStateMachine-CW_c5AnO.esm.js → selfieStateMachine-CHV_WNst.esm.js} +4 -4
- package/dist/{session-ChIfu6mP.esm.js → session-BFdLgN4i.esm.js} +4 -4
- package/dist/session.esm.js +4 -4
- package/dist/{sessionInitializer-BFJAT3u0.esm.js → sessionInitializer-dlfDehHk.esm.js} +4 -4
- package/dist/{setup-CcxP8TVK.esm.js → setup-BIAtLa8k.esm.js} +5 -5
- package/dist/signature.esm.js +2 -2
- package/dist/{signatureManager-DoACIR02.esm.js → signatureManager-Ca43yhwk.esm.js} +2 -2
- package/dist/{signatureStateMachine-Cf73DGWO.esm.js → signatureStateMachine-K1LMRrxG.esm.js} +2 -2
- package/dist/trueSight-B_icM8r2.esm.js +1 -0
- package/dist/{trueSightService-B49-Eq-5.esm.js → trueSightService---iW2KKJ.esm.js} +2 -2
- package/dist/trust-graph.esm.js +1 -1
- package/dist/{types-M6eb82ra2.d.ts → types-Bdf8_LYB2.d.ts} +69 -13
- package/dist/video-selfie.esm.js +5 -5
- package/dist/{videoSelfieCameraWarmer-qld900rY.esm.js → videoSelfieCameraWarmer-NEhFZvWx.esm.js} +2 -2
- package/dist/wasm.esm.js +1 -1
- package/dist/watchlist-for-business.esm.js +2 -2
- package/dist/watchlist.esm.js +2 -2
- package/dist/{watchlistForBusinessStateMachine-BcBMkMvV.esm.js → watchlistForBusinessStateMachine-CxFnlshm.esm.js} +2 -2
- package/dist/{watchlistManager-CPBZnFYj.esm.js → watchlistManager-LoNZH9qm.esm.js} +2 -2
- package/dist/{watchlistStateMachine-Bl7Wy9Cm.esm.js → watchlistStateMachine-DIKQDoUT.esm.js} +2 -2
- package/dist/workflow.esm.js +36 -36
- package/dist/{xstate-actors.esm-CtI5S0f4.esm.js → xstate-actors.esm-BXeQ-Ucz.esm.js} +1 -1
- package/dist/{xstate.esm-Cf4e0Cfd.esm.js → xstate.esm-BuFLFuzz.esm.js} +1 -1
- package/package.json +2 -2
- package/dist/trueSight-CAaztf3O.esm.js +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { i as numberParam, n as defineExperimentParams, t as booleanParam, u as resolveExperimentOnce } from "./feature-management-
|
|
1
|
+
import { i as numberParam, n as defineExperimentParams, t as booleanParam, u as resolveExperimentOnce } from "./feature-management-CPQ4qv3F.esm.js";
|
|
2
2
|
import { t as api } from "./api-Bx3gKW_y.esm.js";
|
|
3
3
|
import { t as endpoints } from "./endpoints-CCzL3XD_.esm.js";
|
|
4
4
|
import { r as isDesktop } from "./platform-BJrm5nzZ.esm.js";
|
|
5
|
-
import { h as stopRecording$1, m as startRecording, p as createRecordingSession } from "./onDeviceFaceResults-
|
|
5
|
+
import { h as stopRecording$1, m as startRecording, p as createRecordingSession } from "./onDeviceFaceResults-CUHwyZT4.esm.js";
|
|
6
6
|
import { n as getBackCameraStream } from "./backCameraStream-CUeYm5eu.esm.js";
|
|
7
7
|
import { t as getDeviceClass } from "./getDeviceClass-9y-kbVDw.esm.js";
|
|
8
|
-
import { n as preloadOpenViduProvider } from "./recordingService-
|
|
8
|
+
import { n as preloadOpenViduProvider } from "./recordingService-3NSENVwp.esm.js";
|
|
9
9
|
import { n as DEFAULT_ID_CAPTURE_THRESHOLDS, r as IdCaptureProvider } from "./idCaptureDefaults-WeHbQM7W.esm.js";
|
|
10
10
|
//#region src/modules/id/idCameraStream.ts
|
|
11
11
|
async function getIdCameraStream(deviceId) {
|
|
@@ -14,25 +14,149 @@ async function getIdCameraStream(deviceId) {
|
|
|
14
14
|
//#endregion
|
|
15
15
|
//#region src/modules/id/idCaptureExperiments.ts
|
|
16
16
|
/**
|
|
17
|
+
* IDC-05 splits the WASM frames-aggregation window into a silent live half
|
|
18
|
+
* (`framesAggregationIntervalMs`, "Taking photo…") and an optimizing half
|
|
19
|
+
* (`resultPreviewDwellMs`, "Successfully captured" / "Optimizing your capture…")
|
|
20
|
+
* during which detection keeps running, so the frame that finally uploads is
|
|
21
|
+
* the best across both halves. WASM receives their sum. iOS uses 1500 + 1500
|
|
22
|
+
* (`IDCaptureExp05Timing`).
|
|
23
|
+
*
|
|
24
|
+
* The two param names below are the **Statsig payload keys**, deliberately kept
|
|
25
|
+
* as originally configured; everything downstream of
|
|
26
|
+
* `resolveCaptureOptimizingTreatment` speaks of the optimizing phase instead
|
|
27
|
+
* (`captureWindowMs` / `optimizingDwellMs`). Renaming a key here renames what
|
|
28
|
+
* the console must send, and a payload still using the old spelling would
|
|
29
|
+
* silently fall back to these code defaults.
|
|
30
|
+
*
|
|
31
|
+
* The split is NOT pinned to a fixed total. The only ceiling is the session's
|
|
32
|
+
* autocapture budget, applied in `resolveCaptureOptimizingTreatment`: a
|
|
33
|
+
* payload whose halves exceed it is halved to fit rather than rejected, and a
|
|
34
|
+
* session whose budget cannot fit a meaningful split runs the countdown arm.
|
|
35
|
+
* Note this means the console payload decides total capture duration — a
|
|
36
|
+
* treatment payload that leaves `framesAggregationIntervalMs` at its 3000
|
|
37
|
+
* default produces a 4500ms window against the 5s default budget, i.e. longer
|
|
38
|
+
* than the countdown arm's 3000ms. Set both halves explicitly.
|
|
39
|
+
*/
|
|
40
|
+
const MAX_OPTIMIZING_DWELL_MS = 2500;
|
|
41
|
+
const DEFAULT_OPTIMIZING_DWELL_MS = 1500;
|
|
42
|
+
/**
|
|
43
|
+
* How long the machine waits for WASM's commit *after* the optimizing phase has
|
|
44
|
+
* had its full dwell, before treating the window as abandoned
|
|
45
|
+
* (`optimizingGrace`, `idCaptureStateMachine.ts`).
|
|
46
|
+
*
|
|
47
|
+
* The phase is expected to last exactly one dwell: it starts at
|
|
48
|
+
* `T0 + captureWindowMs` and WASM closes its aggregation window with
|
|
49
|
+
* `onCapture` at `T0 + captureWindowMs + optimizingDwellMs`. This grace covers
|
|
50
|
+
* the case where that `onCapture` never arrives — aggregation aborting
|
|
51
|
+
* mid-phase because the document left the frame, so the window the frozen still
|
|
52
|
+
* belongs to is simply abandoned.
|
|
53
|
+
*
|
|
54
|
+
* Sized to be unreachable on a healthy phase: WASM's frame loop and the JS
|
|
55
|
+
* boundary timer both jitter, and a late boundary only *delays* the phase, which
|
|
56
|
+
* delays this grace with it — so the only way to overrun a full second past the
|
|
57
|
+
* dwell is that no commit is coming.
|
|
58
|
+
*/
|
|
59
|
+
const OPTIMIZING_WATCHDOG_MARGIN_MS = 1e3;
|
|
60
|
+
/**
|
|
17
61
|
* IDC-05 — resolved by core because `framesAggregationIntervalMs` feeds
|
|
18
62
|
* `setThresholds` before detection can run.
|
|
63
|
+
*
|
|
64
|
+
* `framesAggregationIntervalMs` carries no upper bound here because it means
|
|
65
|
+
* two different things depending on the arm: the WHOLE aggregation window in
|
|
66
|
+
* the countdown arm, only the pre-boundary half in the treatment arm. Bounding it
|
|
67
|
+
* for one would break the other, so the arm-aware handling lives in
|
|
68
|
+
* `resolveCaptureOptimizingTreatment`. Its code default stays at the
|
|
69
|
+
* canonical 3000 so an unallocated session keeps shipped control behavior.
|
|
19
70
|
*/
|
|
20
|
-
const
|
|
71
|
+
const CAPTURE_OPTIMIZING = {
|
|
21
72
|
storeParam: "idcExp05ShowResult",
|
|
22
73
|
...defineExperimentParams({
|
|
23
74
|
showCaptureResultPreview: booleanParam(false),
|
|
24
|
-
framesAggregationIntervalMs: numberParam(DEFAULT_ID_CAPTURE_THRESHOLDS.framesAggregationInterval)
|
|
75
|
+
framesAggregationIntervalMs: numberParam(DEFAULT_ID_CAPTURE_THRESHOLDS.framesAggregationInterval, { min: 0 }),
|
|
76
|
+
resultPreviewDwellMs: numberParam(DEFAULT_OPTIMIZING_DWELL_MS, {
|
|
77
|
+
min: 0,
|
|
78
|
+
max: MAX_OPTIMIZING_DWELL_MS
|
|
79
|
+
})
|
|
25
80
|
})
|
|
26
81
|
};
|
|
27
82
|
//#endregion
|
|
28
83
|
//#region src/modules/id/idCaptureThresholds.ts
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
84
|
+
/**
|
|
85
|
+
* WASM restarts its manual-capture timer at first ID *detection* but only opens
|
|
86
|
+
* the frames-aggregation window at the first *good-quality* frame, and never
|
|
87
|
+
* stops that timer once aggregation begins. If it fires mid-window it captures
|
|
88
|
+
* early (`CapturingManager.cpp`, the `isLookingForBestFrame` branch of the
|
|
89
|
+
* `manualCaptureTimer` interval callback), which would truncate the
|
|
90
|
+
* optimizing half.
|
|
91
|
+
*/
|
|
92
|
+
const AUTOCAPTURE_SAFETY_MARGIN_MS = 500;
|
|
93
|
+
/**
|
|
94
|
+
* Smallest autocapture budget that can still carry a meaningful IDC-05 split.
|
|
95
|
+
*
|
|
96
|
+
* An over-budget payload is halved to fit (below), so the budget alone decides
|
|
97
|
+
* how short each half can get. At 3000ms each half is 1500ms — the iOS timing
|
|
98
|
+
* and the shortest pre-boundary window that reliably yields a best frame. Below
|
|
99
|
+
* that the session runs the countdown arm instead: a 1000ms/1000ms split would
|
|
100
|
+
* reveal a frame WASM has barely had time to score.
|
|
101
|
+
*
|
|
102
|
+
* Budget is `autocaptureTimeout - AUTOCAPTURE_SAFETY_MARGIN_MS`, so this floor
|
|
103
|
+
* means an effective `autocaptureTimeout` of at least 3500ms.
|
|
104
|
+
*/
|
|
105
|
+
const MIN_EXPERIMENT_AUTOCAPTURE_BUDGET_MS = 3e3;
|
|
106
|
+
/**
|
|
107
|
+
* The autocapture window WASM will be given, derived the same way whether the
|
|
108
|
+
* caller is building thresholds or checking whether a split window fits inside
|
|
109
|
+
* it. Shared so the two can't drift.
|
|
110
|
+
*/
|
|
111
|
+
function resolveAutocaptureTimeout(config) {
|
|
112
|
+
return config.thresholds?.autocaptureTimeout ?? (config.autoCaptureTimeout ?? 5) * 1e3;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Resolves the IDC-05 arm and, for the treatment, the two halves of the capture
|
|
116
|
+
* window. Precedence:
|
|
117
|
+
*
|
|
118
|
+
* 1. An explicit `config.thresholds.framesAggregationInterval` (host/headless
|
|
119
|
+
* override) opts the session OUT of the treatment: the host has deliberately
|
|
120
|
+
* pinned the capture window, and splitting it against that intent is worse
|
|
121
|
+
* than not running the experiment on that traffic.
|
|
122
|
+
* 2. Countdown arm (or unallocated) → the experiment's interval straight
|
|
123
|
+
* through, unchanged from before this split existed.
|
|
124
|
+
* 3. Treatment arm, budget too small for a viable split → countdown arm on the
|
|
125
|
+
* CANONICAL window (not the payload's, see below).
|
|
126
|
+
* 4. Treatment arm → the payload's two halves, each halved to `budget / 2` if
|
|
127
|
+
* their sum would overrun the autocapture budget. Deliberately no contract
|
|
128
|
+
* on the total and no rejection path: an out-of-range payload is fitted, not
|
|
129
|
+
* refused, so no session logs a warning or silently runs mis-timed.
|
|
130
|
+
*/
|
|
131
|
+
function resolveCaptureOptimizingTreatment(config) {
|
|
132
|
+
if (config.supportsOptimizingStatus !== true) return void 0;
|
|
133
|
+
const { params } = resolveExperimentOnce(CAPTURE_OPTIMIZING);
|
|
134
|
+
const hostInterval = config.thresholds?.framesAggregationInterval;
|
|
135
|
+
if (hostInterval !== void 0) return {
|
|
136
|
+
mode: "countdown",
|
|
137
|
+
framesAggregationInterval: hostInterval
|
|
138
|
+
};
|
|
139
|
+
const budget = resolveAutocaptureTimeout(config) - AUTOCAPTURE_SAFETY_MARGIN_MS;
|
|
140
|
+
if (!params.showCaptureResultPreview) return {
|
|
141
|
+
mode: "countdown",
|
|
34
142
|
framesAggregationInterval: params.framesAggregationIntervalMs
|
|
35
143
|
};
|
|
144
|
+
if (budget < MIN_EXPERIMENT_AUTOCAPTURE_BUDGET_MS) return {
|
|
145
|
+
mode: "countdown",
|
|
146
|
+
framesAggregationInterval: DEFAULT_ID_CAPTURE_THRESHOLDS.framesAggregationInterval
|
|
147
|
+
};
|
|
148
|
+
let captureWindowMs = params.framesAggregationIntervalMs;
|
|
149
|
+
let optimizingDwellMs = params.resultPreviewDwellMs;
|
|
150
|
+
if (captureWindowMs + optimizingDwellMs > budget) {
|
|
151
|
+
captureWindowMs = Math.floor(budget / 2);
|
|
152
|
+
optimizingDwellMs = captureWindowMs;
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
mode: "optimizing",
|
|
156
|
+
framesAggregationInterval: captureWindowMs + optimizingDwellMs,
|
|
157
|
+
captureWindowMs,
|
|
158
|
+
optimizingDwellMs
|
|
159
|
+
};
|
|
36
160
|
}
|
|
37
161
|
/**
|
|
38
162
|
* Single source of truth for the WASM ID-capture thresholds passed to
|
|
@@ -41,9 +165,11 @@ function resolveCaptureResultPreviewTreatment(config) {
|
|
|
41
165
|
* 3000ms) — with precedence:
|
|
42
166
|
*
|
|
43
167
|
* 1. An explicit `config.thresholds.framesAggregationInterval` (host/headless
|
|
44
|
-
* override) always wins
|
|
45
|
-
*
|
|
46
|
-
*
|
|
168
|
+
* override) always wins. Such a session never runs the IDC-05 treatment
|
|
169
|
+
* (see `resolveCaptureOptimizingTreatment`), so the override is the whole
|
|
170
|
+
* window, undivided.
|
|
171
|
+
* 2. Otherwise, the IDC-05-resolved interval — the summed split window in the
|
|
172
|
+
* treatment arm, the plain interval in the countdown arm.
|
|
47
173
|
* 3. Otherwise, the canonical default.
|
|
48
174
|
*
|
|
49
175
|
* `idDetectedTimeout`/`autocaptureTimeout` are derived here too (from
|
|
@@ -64,7 +190,7 @@ function resolveIdCaptureThresholds(config, experimentInterval) {
|
|
|
64
190
|
...config.thresholds,
|
|
65
191
|
framesAggregationInterval: config.thresholds?.framesAggregationInterval ?? experimentInterval ?? DEFAULT_ID_CAPTURE_THRESHOLDS.framesAggregationInterval,
|
|
66
192
|
idDetectedTimeout: config.thresholds?.idDetectedTimeout ?? (config.deviceIdleTimeout ?? 10) * 1e3,
|
|
67
|
-
autocaptureTimeout:
|
|
193
|
+
autocaptureTimeout: resolveAutocaptureTimeout(config)
|
|
68
194
|
};
|
|
69
195
|
}
|
|
70
196
|
//#endregion
|
|
@@ -393,4 +519,4 @@ async function addBarcode(params) {
|
|
|
393
519
|
return res.data;
|
|
394
520
|
}
|
|
395
521
|
//#endregion
|
|
396
|
-
export { processId as a, stopStream as c, validateUploadResponse as d, ID_ERROR_CODES as f,
|
|
522
|
+
export { getIdCameraStream as _, processId as a, stopStream as c, validateUploadResponse as d, ID_ERROR_CODES as f, OPTIMIZING_WATCHDOG_MARGIN_MS as g, CAPTURE_OPTIMIZING as h, preloadIdRecordingProvider as i, uploadIdImage as l, resolveIdCaptureThresholds as m, barcodeToBase64 as n, startRecordingSession as o, resolveCaptureOptimizingTreatment as p, initializeIdCapture as r, stopRecording as s, addBarcode as t, uploadManualIdFile as u };
|