@incodetech/core 2.3.0-rc.11 → 2.3.0-rc.12

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.
Files changed (58) hide show
  1. package/dist/{FaceDetectionProvider-D5FNNkoJ.esm.js → FaceDetectionProvider-BLINJUJ_.esm.js} +5 -5
  2. package/dist/ae-signature.esm.js +1 -1
  3. package/dist/{apiError-BmktKO7R.esm.js → apiError-4S2Z_rSf.esm.js} +1 -1
  4. package/dist/authentication.esm.js +2 -2
  5. package/dist/{authenticationManager-CSCtXfWz.esm.js → authenticationManager-Cds7_1k7.esm.js} +3 -3
  6. package/dist/{authenticationStateMachine-BBPaXbO0.esm.js → authenticationStateMachine-CNb31qDV.esm.js} +2 -2
  7. package/dist/{deepsightLoader-U24VrP2r.esm.js → deepsightLoader-D7aKM2Fr.esm.js} +3 -3
  8. package/dist/dynamic-forms.esm.js +2 -2
  9. package/dist/{dynamicFormsManager-DJ9GQ1HY.esm.js → dynamicFormsManager-C6vQOzNN.esm.js} +1 -1
  10. package/dist/{dynamicFormsStateMachine-D6oLfWyM.esm.js → dynamicFormsStateMachine-CEf-u1Vj.esm.js} +1 -1
  11. package/dist/ekyb.esm.js +3 -3
  12. package/dist/{ekybManager-BDtwhSrQ.esm.js → ekybManager-CvyL5PAV.esm.js} +1 -1
  13. package/dist/{ekybStateMachine-B4qbgC_I.esm.js → ekybStateMachine-BsIr7Uh-.esm.js} +1 -1
  14. package/dist/electronic-signature.esm.js +1 -1
  15. package/dist/{electronicSignatureManager-i9KSHGcI.esm.js → electronicSignatureManager-CnMuiOGf.esm.js} +1 -1
  16. package/dist/extensibility.d.ts +2 -2
  17. package/dist/extensibility.esm.js +10 -10
  18. package/dist/{faceCaptureManagerFactory-Df6oe5Zi.esm.js → faceCaptureManagerFactory-Dyt7CSl-.esm.js} +1 -1
  19. package/dist/{faceCaptureSetup-DrJvjpVf.esm.js → faceCaptureSetup-DhQCy2ex.esm.js} +7 -6
  20. package/dist/{feature-management-CT71kF7K.esm.js → feature-management-DVOpWeB4.esm.js} +1 -1
  21. package/dist/feature-management.esm.js +1 -1
  22. package/dist/flow.esm.js +3 -3
  23. package/dist/{flowCompletionService-DbMQ7zEQ.esm.js → flowCompletionService-BSfi8EEC.esm.js} +1 -1
  24. package/dist/{flowServices-ZXug3wzs.esm.js → flowServices-DoPimvFm.esm.js} +4 -4
  25. package/dist/geolocation.esm.js +2 -2
  26. package/dist/{geolocationManager-DbfRyrLW.esm.js → geolocationManager-CpPHA-m7.esm.js} +1 -1
  27. package/dist/{geolocationStateMachine-CP8_KHBU.esm.js → geolocationStateMachine-5M86MRiv.esm.js} +1 -1
  28. package/dist/id-selfie-flow.d.ts +1 -1
  29. package/dist/id-selfie-flow.esm.js +8 -8
  30. package/dist/id.esm.js +3 -3
  31. package/dist/{idCaptureDefaults-CqdpEg3N.esm.js → idCaptureDefaults-DkNKy4mw.esm.js} +1 -1
  32. package/dist/{idCaptureManager-Bs6p5LKF.esm.js → idCaptureManager-cLKLxge3.esm.js} +3 -3
  33. package/dist/{idCaptureServices-xi9Pthk2.esm.js → idCaptureServices-CP8ZJr8Y.esm.js} +8 -7
  34. package/dist/{idCaptureStateMachine-BYgxfqHv.esm.js → idCaptureStateMachine-5DZ07r8_.esm.js} +10 -10
  35. package/dist/identity-reuse.d.ts +1 -1
  36. package/dist/{identityReuseManager-v2TH5g7e.d.ts → identityReuseManager-BFDI7iFK.d.ts} +4 -4
  37. package/dist/index.esm.js +1 -1
  38. package/dist/mandatory-consent.d.ts +1 -1
  39. package/dist/{mandatoryConsentManager-CJSyhTpi.d.ts → mandatoryConsentManager-Csfl7_XQ.d.ts} +4 -4
  40. package/dist/{multipartRecordingService-YKu0Bd7S.esm.js → multipartRecordingService-mwKFTlhR.esm.js} +689 -8
  41. package/dist/qe-signature.esm.js +1 -1
  42. package/dist/{runChildModule-BhK3islQ.esm.js → runChildModule-DnSpmfi_.esm.js} +1 -1
  43. package/dist/{sdkVersion-B8ok4TX0.esm.js → sdkVersion-D9RnzkVL.esm.js} +1 -1
  44. package/dist/selfie.esm.js +5 -5
  45. package/dist/{selfieManager-CGWnCp26.esm.js → selfieManager-CKG9Ycb8.esm.js} +3 -3
  46. package/dist/{selfieStateMachine-B27MSUWB.esm.js → selfieStateMachine-D4F_8Mmv.esm.js} +2 -2
  47. package/dist/{session-BRsgJ-Ek.esm.js → session-BnAXj1AO.esm.js} +3 -3
  48. package/dist/session.esm.js +4 -4
  49. package/dist/{sessionInitializer-NKOKaYzH.esm.js → sessionInitializer-FZeu_jKW.esm.js} +3 -3
  50. package/dist/{setup-BqZsYdcN.esm.js → setup-DEPf5jcB.esm.js} +4 -4
  51. package/dist/{trueSightService-CvCQ1O8I.esm.js → trueSightService-B8ESMOpB.esm.js} +1 -1
  52. package/dist/video-selfie.d.ts +61 -3
  53. package/dist/video-selfie.esm.js +7 -6
  54. package/dist/{videoSelfieCameraWarmer-DEwDuHEE.esm.js → videoSelfieCameraWarmer-DC3RYtMs.esm.js} +4 -4
  55. package/dist/{videoSelfieStepDetector-Co0Gu2k2.d.ts → videoSelfieStepDetector-CAqAG2G3.d.ts} +49 -0
  56. package/dist/wasm.esm.js +2 -2
  57. package/dist/workflow.esm.js +14 -14
  58. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { a as NAMIRIAL_QES_CONSENT_KEYS, c as areAllConsented, o as NAMIRIAL_QES_PROVIDER_CODE, r as electronicSignatureMachine, s as QE_CONSENT_KEYS, t as createElectronicSignatureManager, u as getDefaultConsentChecks } from "./electronicSignatureManager-i9KSHGcI.esm.js";
1
+ import { a as NAMIRIAL_QES_CONSENT_KEYS, c as areAllConsented, o as NAMIRIAL_QES_PROVIDER_CODE, r as electronicSignatureMachine, s as QE_CONSENT_KEYS, t as createElectronicSignatureManager, u as getDefaultConsentChecks } from "./electronicSignatureManager-CnMuiOGf.esm.js";
2
2
  //#region src/modules/qe-signature/index.ts
3
3
  function createQeSignatureManager(options) {
4
4
  return createElectronicSignatureManager({ config: {
@@ -1,4 +1,4 @@
1
- import { a as notifyTrueSightManagerStopped, i as notifyTrueSightFlowEvent } from "./trueSightService-CvCQ1O8I.esm.js";
1
+ import { a as notifyTrueSightManagerStopped, i as notifyTrueSightFlowEvent } from "./trueSightService-B8ESMOpB.esm.js";
2
2
  import { t as getTimestamp } from "./IBrowserEnvironmentCapability-DEaRRk-R.esm.js";
3
3
  import { C as createEventBus } from "./events-ijlbX_Wx.esm.js";
4
4
  import { s as createActor } from "./xstate.esm-BuFLFuzz.esm.js";
@@ -1,4 +1,4 @@
1
1
  //#region src/internal/version/sdkVersion.ts
2
- const SDK_VERSION = "2.3.0-rc.11+32dda8c";
2
+ const SDK_VERSION = "2.3.0-rc.12+d64bf7c";
3
3
  //#endregion
4
4
  export { SDK_VERSION as t };
@@ -1,14 +1,14 @@
1
1
  import { r as WasmUtilProvider } from "./safeStorage-BdU9_m2E.esm.js";
2
- import { l as BrowserStorageProvider } from "./setup-BqZsYdcN.esm.js";
2
+ import { l as BrowserStorageProvider } from "./setup-DEPf5jcB.esm.js";
3
3
  import { n as eventModuleNames } from "./events-ijlbX_Wx.esm.js";
4
4
  import { s as createActor } from "./xstate.esm-BuFLFuzz.esm.js";
5
5
  import { n as fromPromise } from "./xstate-actors.esm-BXeQ-Ucz.esm.js";
6
- import { n as createDefaultProtectedFaceControllerActor, t as faceCaptureMachine } from "./faceCaptureSetup-DrJvjpVf.esm.js";
7
- import { t as createFaceCaptureManagerFromActor } from "./faceCaptureManagerFactory-Df6oe5Zi.esm.js";
6
+ import { n as createDefaultProtectedFaceControllerActor, t as faceCaptureMachine } from "./faceCaptureSetup-DhQCy2ex.esm.js";
7
+ import { t as createFaceCaptureManagerFromActor } from "./faceCaptureManagerFactory-Dyt7CSl-.esm.js";
8
8
  import { s as PROTECTED_CAPTURE_TARGET } from "./createCameraCycleOwnership-DnwTl1ad.esm.js";
9
9
  import { r as processFace } from "./selfieErrorUtils-UiQ46EBa.esm.js";
10
- import { t as selfieMachine } from "./selfieStateMachine-B27MSUWB.esm.js";
11
- import { n as createSelfieManagerFromActor, t as createSelfieManager } from "./selfieManager-CGWnCp26.esm.js";
10
+ import { t as selfieMachine } from "./selfieStateMachine-D4F_8Mmv.esm.js";
11
+ import { n as createSelfieManagerFromActor, t as createSelfieManager } from "./selfieManager-CKG9Ycb8.esm.js";
12
12
  import { t as invokeOnCaptureCallback } from "./invokeOnCaptureCallback-BjzPjJ_p.esm.js";
13
13
  /**
14
14
  * Selfie state machine variant for the captureOnly flow. Shares the full base
@@ -1,9 +1,9 @@
1
1
  import { r as WasmUtilProvider } from "./safeStorage-BdU9_m2E.esm.js";
2
- import { l as BrowserStorageProvider } from "./setup-BqZsYdcN.esm.js";
2
+ import { l as BrowserStorageProvider } from "./setup-DEPf5jcB.esm.js";
3
3
  import { n as eventModuleNames } from "./events-ijlbX_Wx.esm.js";
4
4
  import { s as createActor } from "./xstate.esm-BuFLFuzz.esm.js";
5
- import { t as createFaceCaptureManagerFromActor } from "./faceCaptureManagerFactory-Df6oe5Zi.esm.js";
6
- import { t as selfieMachine } from "./selfieStateMachine-B27MSUWB.esm.js";
5
+ import { t as createFaceCaptureManagerFromActor } from "./faceCaptureManagerFactory-Dyt7CSl-.esm.js";
6
+ import { t as selfieMachine } from "./selfieStateMachine-D4F_8Mmv.esm.js";
7
7
  //#region src/modules/selfie/selfieActor.ts
8
8
  function createSelfieActor(options) {
9
9
  const dependencies = options.dependencies ?? {
@@ -1,7 +1,7 @@
1
1
  import { i as assign } from "./xstate.esm-BuFLFuzz.esm.js";
2
2
  import { n as fromPromise } from "./xstate-actors.esm-BXeQ-Ucz.esm.js";
3
- import { n as createDefaultProtectedFaceControllerActor, r as manualFaceUploadMachine, t as faceCaptureMachine } from "./faceCaptureSetup-DrJvjpVf.esm.js";
4
- import { c as isOnDeviceMode } from "./FaceDetectionProvider-D5FNNkoJ.esm.js";
3
+ import { n as createDefaultProtectedFaceControllerActor, r as manualFaceUploadMachine, t as faceCaptureMachine } from "./faceCaptureSetup-DhQCy2ex.esm.js";
4
+ import { c as isOnDeviceMode } from "./FaceDetectionProvider-BLINJUJ_.esm.js";
5
5
  import { t as FACE_ERROR_CODES } from "./types-BN5RPPIZ.esm.js";
6
6
  import { s as PROTECTED_CAPTURE_TARGET } from "./createCameraCycleOwnership-DnwTl1ad.esm.js";
7
7
  import { i as uploadManualSelfie, n as validateUploadResponse, r as processFace } from "./selfieErrorUtils-UiQ46EBa.esm.js";
@@ -1,8 +1,8 @@
1
- import { g as noteSessionCreated, l as trueSightLog } from "./trueSightService-CvCQ1O8I.esm.js";
1
+ import { g as noteSessionCreated, l as trueSightLog } from "./trueSightService-B8ESMOpB.esm.js";
2
2
  import { n as getApi } from "./api-Bx3gKW_y.esm.js";
3
- import "./sessionInitializer-NKOKaYzH.esm.js";
3
+ import "./sessionInitializer-FZeu_jKW.esm.js";
4
4
  import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
5
- import { i as toIncodeApiError } from "./apiError-BmktKO7R.esm.js";
5
+ import { i as toIncodeApiError } from "./apiError-4S2Z_rSf.esm.js";
6
6
  //#region src/internal/session/sessionService.ts
7
7
  /**
8
8
  * HTTP status codes the QR validation endpoint emits, keyed by their semantic
@@ -1,5 +1,5 @@
1
- import { i as initializeSession, l as whenSessionFingerprintSettled } from "./sessionInitializer-NKOKaYzH.esm.js";
2
- import { t as IncodeApiError } from "./apiError-BmktKO7R.esm.js";
3
- import { a as refreshQrUrlUuid, i as createSession, n as QrValidationError, o as validateQrUuid, r as bootstrapSession, t as QR_VALIDATION_ERROR_CODES } from "./session-BRsgJ-Ek.esm.js";
4
- import { n as getFinishStatus } from "./flowCompletionService-DbMQ7zEQ.esm.js";
1
+ import { i as initializeSession, l as whenSessionFingerprintSettled } from "./sessionInitializer-FZeu_jKW.esm.js";
2
+ import { t as IncodeApiError } from "./apiError-4S2Z_rSf.esm.js";
3
+ import { a as refreshQrUrlUuid, i as createSession, n as QrValidationError, o as validateQrUuid, r as bootstrapSession, t as QR_VALIDATION_ERROR_CODES } from "./session-BnAXj1AO.esm.js";
4
+ import { n as getFinishStatus } from "./flowCompletionService-BSfi8EEC.esm.js";
5
5
  export { IncodeApiError, QR_VALIDATION_ERROR_CODES, QrValidationError, bootstrapSession, createSession, getFinishStatus, initializeSession, refreshQrUrlUuid, validateQrUuid, whenSessionFingerprintSettled };
@@ -1,8 +1,8 @@
1
- import { d as fetchFeatureConfig, f as isFeatureEnabled, h as noteEnvironment, l as trueSightLog, p as resetFeatureConfigCache, s as startTrueSightCollection, v as noteTokenActivated } from "./trueSightService-CvCQ1O8I.esm.js";
2
- import { E as updateFeatureManagementUser } from "./feature-management-CT71kF7K.esm.js";
1
+ import { d as fetchFeatureConfig, f as isFeatureEnabled, h as noteEnvironment, l as trueSightLog, p as resetFeatureConfigCache, s as startTrueSightCollection, v as noteTokenActivated } from "./trueSightService-B8ESMOpB.esm.js";
2
+ import { E as updateFeatureManagementUser } from "./feature-management-DVOpWeB4.esm.js";
3
3
  import { c as setToken, r as getToken, t as api } from "./api-Bx3gKW_y.esm.js";
4
4
  import { v as addEvent, y as getAnalyticsBatcher } from "./events-ijlbX_Wx.esm.js";
5
- import { t as SDK_VERSION } from "./sdkVersion-B8ok4TX0.esm.js";
5
+ import { t as SDK_VERSION } from "./sdkVersion-D9RnzkVL.esm.js";
6
6
  import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
7
7
  import { n as flushDeviceStatsQueue, r as resetDeviceStatsQueue } from "./stats-CZcy2J53.esm.js";
8
8
  import { t as getParsedUserAgent } from "./getParsedUserAgent-B2iFDql1.esm.js";
@@ -1,16 +1,16 @@
1
- import { D as resolveWasmConfig, S as upgradeToWasmHttpClient$1, b as installFreshHttpClient, l as trueSightLog, o as resetTrueSight, t as finalizeTrueSight, x as resetHttpClientState, y as getStoredHttpConfig } from "./trueSightService-CvCQ1O8I.esm.js";
1
+ import { D as resolveWasmConfig, S as upgradeToWasmHttpClient$1, b as installFreshHttpClient, l as trueSightLog, o as resetTrueSight, t as finalizeTrueSight, x as resetHttpClientState, y as getStoredHttpConfig } from "./trueSightService-B8ESMOpB.esm.js";
2
2
  import { i as setWasmOnDeviceMode, o as warmupWasm } from "./warmup-ChDwHSel.esm.js";
3
3
  import { r as WasmUtilProvider, t as resolveLocalStorage } from "./safeStorage-BdU9_m2E.esm.js";
4
4
  import { t as BrowserTimerProvider } from "./BrowserTimerProvider-BXhgNxLt.esm.js";
5
- import { C as resetFeatureManagement, D as applyEnvironment, O as getEnvironment, S as optOutFeatureManagement, b as initializeFeatureManagement, c as resetResolvedExperiments, k as resetEnvironment, v as getIsFeatureManagementLocked, w as resetFeatureManagementProviderInstance } from "./feature-management-CT71kF7K.esm.js";
5
+ import { C as resetFeatureManagement, D as applyEnvironment, O as getEnvironment, S as optOutFeatureManagement, b as initializeFeatureManagement, c as resetResolvedExperiments, k as resetEnvironment, v as getIsFeatureManagementLocked, w as resetFeatureManagementProviderInstance } from "./feature-management-DVOpWeB4.esm.js";
6
6
  import { t as getTimestamp } from "./IBrowserEnvironmentCapability-DEaRRk-R.esm.js";
7
7
  import { a as resetApi, i as isApiConfigured, n as getApi, r as getToken, t as api } from "./api-Bx3gKW_y.esm.js";
8
8
  import { b as resetAnalyticsBatcher, c as resetExperimentAssignments, x as setAnalyticsBatcher, y as getAnalyticsBatcher } from "./events-ijlbX_Wx.esm.js";
9
- import { a as resetSessionInit, c as setClientIpLookupEnabled, d as registerFlowPreloader, f as resetStandaloneFlowPolicy, i as initializeSession, m as setStandaloneFlowPolicy, o as setClientFingerprintEnabled, p as resolveStandaloneFlowPolicy, s as setClientHostingApp } from "./sessionInitializer-NKOKaYzH.esm.js";
9
+ import { a as resetSessionInit, c as setClientIpLookupEnabled, d as registerFlowPreloader, f as resetStandaloneFlowPolicy, i as initializeSession, m as setStandaloneFlowPolicy, o as setClientFingerprintEnabled, p as resolveStandaloneFlowPolicy, s as setClientHostingApp } from "./sessionInitializer-FZeu_jKW.esm.js";
10
10
  import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
11
11
  import { r as resetDeviceStatsQueue, t as addDeviceStats } from "./stats-CZcy2J53.esm.js";
12
12
  import { a as resetTRI, n as initializeTRI, o as resetTRIProviderInstance } from "./tri-xzRLIIMN.esm.js";
13
- import { i as resetDashboardFlowCache, r as preloadDashboardFlow } from "./flowServices-ZXug3wzs.esm.js";
13
+ import { i as resetDashboardFlowCache, r as preloadDashboardFlow } from "./flowServices-DoPimvFm.esm.js";
14
14
  //#region ../infra/src/providers/browser/BrowserPageLifecycleProvider.ts
15
15
  var BrowserPageLifecycleProvider = class {
16
16
  sendBeacon(url, body, contentType = "application/json") {
@@ -2,7 +2,7 @@ import { a as setWebApiHttpTransport, f as deriveSiblingJsPath, i as initializeW
2
2
  import { t as getTimestamp } from "./IBrowserEnvironmentCapability-DEaRRk-R.esm.js";
3
3
  import { i as isApiConfigured, n as getApi, o as setClient, r as getToken, t as api } from "./api-Bx3gKW_y.esm.js";
4
4
  import { n as eventModuleNames } from "./events-ijlbX_Wx.esm.js";
5
- import { t as SDK_VERSION } from "./sdkVersion-B8ok4TX0.esm.js";
5
+ import { t as SDK_VERSION } from "./sdkVersion-D9RnzkVL.esm.js";
6
6
  import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
7
7
  //#region ../infra/src/wasm/wasmDefaults.ts
8
8
  const WASM_CDN_BASE_URL = "https://cdn.incodesmile.com/ml-wasm-kit-release";
@@ -5,7 +5,7 @@ import "./Actor-iTq7YY48.js";
5
5
  import { t as IVisibilityObserverCapability } from "./IVisibilityObserverCapability-D4tvIB5v.js";
6
6
  import { t as CameraStream } from "./camera-9wWD-pwg.js";
7
7
  import { t as DetectionOrientation } from "./IIdCaptureCapability-RNiFhvXR.js";
8
- import { a as FacingMode, i as CameraCompositor, n as VideoSelfieDetectionStatus, o as VideoSelfieConfig, r as VideoSelfieValidationFailure, s as VideoSelfieStep, t as StepDetector } from "./videoSelfieStepDetector-Co0Gu2k2.js";
8
+ import { a as FacingMode, i as CameraCompositor, n as VideoSelfieDetectionStatus, o as VideoSelfieConfig, r as VideoSelfieValidationFailure, s as VideoSelfieStep, t as StepDetector } from "./videoSelfieStepDetector-CAqAG2G3.js";
9
9
  //#region ../infra/src/capabilities/ITimerCapability.d.ts
10
10
  type TimerHandle = ReturnType<typeof setTimeout>;
11
11
  type ITimerCapability = {
@@ -15,6 +15,62 @@ type ITimerCapability = {
15
15
  clearInterval(handle: TimerHandle): void;
16
16
  };
17
17
  //#endregion
18
+ //#region ../infra/src/capabilities/IMultipartRecordingCapability.d.ts
19
+ /**
20
+ * A single chunk of a recording, ready to be uploaded as one S3 multipart
21
+ * part. `partNumber` is 1-based and strictly increasing across a recording.
22
+ */
23
+ type MultipartRecordingPart = {
24
+ partNumber: number;
25
+ chunk: Blob;
26
+ };
27
+ /**
28
+ * Records a `MediaStream` and emits it as a sequence of size-bounded parts
29
+ * (suitable for S3 multipart upload) instead of one blob at the end. Every
30
+ * part except the last is guaranteed to be at least the S3 minimum part size;
31
+ * the final part (flushed on stop) may be smaller.
32
+ *
33
+ * The capability owns only the recording/buffering mechanics — it has no
34
+ * knowledge of HTTP. Callers upload each emitted part themselves via `onPart`.
35
+ */
36
+ type IMultipartRecordingCapability = {
37
+ readonly isRecording: boolean;
38
+ readonly hasError: boolean;
39
+ readonly error: string | null;
40
+ /**
41
+ * Start recording `stream`. `onPart` fires once per part: whenever the
42
+ * internal buffer crosses the part-size threshold during recording, and once
43
+ * more for the remaining buffer when `stopRecording` is called.
44
+ */
45
+ startRecording(stream: MediaStream, onPart: (part: MultipartRecordingPart) => void): void;
46
+ /**
47
+ * Temporarily stop gathering media into the current recording without
48
+ * finalizing its container. Returns whether the recorder is paused.
49
+ * Video Selfie requires this operation; omission is treated as a failed
50
+ * pause. It remains optional for compatibility with other consumers.
51
+ */
52
+ pauseRecording?(): boolean;
53
+ /**
54
+ * Continue gathering media into a recording previously paused with
55
+ * `pauseRecording`. Returns whether the recorder is recording again.
56
+ * Video Selfie requires this operation; omission is treated as a failed
57
+ * resume. It remains optional for compatibility with other consumers.
58
+ */
59
+ resumeRecording?(): boolean;
60
+ /**
61
+ * Stop recording, flush the remaining buffer as the final part (via the
62
+ * `onPart` callback passed to `startRecording`), and resolve once the
63
+ * recorder has fully stopped and that final part has been emitted.
64
+ */
65
+ stopRecording(): Promise<void>;
66
+ /**
67
+ * Discard an in-progress recording without flushing: stops the recorder and
68
+ * releases its (cloned) stream tracks, drops buffered data, and clears error
69
+ * state. Idempotent — safe after `stopRecording` or when never started.
70
+ */
71
+ reset(): void;
72
+ };
73
+ //#endregion
18
74
  //#region src/internal/recordings/videoSelfieUploadService.d.ts
19
75
  /** What the multipart upload records. Must be sent on every protocol call. */
20
76
  type VideoUploadScope = 'videoselfie' | 'selfie' | 'frontId' | 'backId';
@@ -46,14 +102,16 @@ type MultipartRecordingResult = {
46
102
  */
47
103
  declare class MultipartRecordingService {
48
104
  private readonly scope;
49
- private recorder;
105
+ private readonly recorder;
50
106
  private timer;
51
107
  private session;
52
108
  private uploader;
53
109
  private chunksEmitted;
54
110
  private stopPromise;
55
111
  private abandonRequested;
56
- constructor(scope?: VideoUploadScope);
112
+ constructor(scope?: VideoUploadScope,
113
+ /** Recordings encoded in the compositor worker pass their own recorder. */
114
+ recorder?: IMultipartRecordingCapability);
57
115
  get isRecording(): boolean;
58
116
  start(stream: MediaStream): Promise<void>;
59
117
  /** Pause the current media container without finalizing its upload. */
@@ -1,15 +1,15 @@
1
1
  import { r as WasmUtilProvider } from "./safeStorage-BdU9_m2E.esm.js";
2
- import { t as ensureWasmPipelines } from "./setup-BqZsYdcN.esm.js";
2
+ import { t as ensureWasmPipelines } from "./setup-DEPf5jcB.esm.js";
3
3
  import { t as BrowserTimerProvider } from "./BrowserTimerProvider-BXhgNxLt.esm.js";
4
4
  import { t as api } from "./api-Bx3gKW_y.esm.js";
5
5
  import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
6
- import { d as facingModeForStep, f as resolveVideoSelfieSteps, p as videoSelfieWasmPipelines } from "./flowServices-ZXug3wzs.esm.js";
6
+ import { d as facingModeForStep, f as resolveVideoSelfieSteps, p as videoSelfieWasmPipelines } from "./flowServices-DoPimvFm.esm.js";
7
7
  import { i as assign, r as sendTo, s as createActor, t as setup, u as createManager } from "./xstate.esm-BuFLFuzz.esm.js";
8
8
  import { n as fromPromise, t as fromCallback } from "./xstate-actors.esm-BXeQ-Ucz.esm.js";
9
9
  import { t as BrowserVisibilityObserverProvider } from "./BrowserVisibilityObserverProvider-BrJN1B8A.esm.js";
10
- import { n as CameraCompositor, t as MultipartRecordingService } from "./multipartRecordingService-YKu0Bd7S.esm.js";
10
+ import { i as createRecordingCompositor, n as WorkerEncoderRecordingProvider, t as MultipartRecordingService } from "./multipartRecordingService-mwKFTlhR.esm.js";
11
11
  import { t as VIDEO_SELFIE_VALIDATION_ATTEMPTS_EXHAUSTED_CODE } from "./advanceableErrors-CpF2cBy6.esm.js";
12
- import { a as isConnectionError, n as defaultAcquireCamera, r as createDefaultStepDetector, t as createVideoSelfieCameraWarmer } from "./videoSelfieCameraWarmer-DEwDuHEE.esm.js";
12
+ import { a as isConnectionError, n as defaultAcquireCamera, r as createDefaultStepDetector, t as createVideoSelfieCameraWarmer } from "./videoSelfieCameraWarmer-DC3RYtMs.esm.js";
13
13
  import { t as videoSelfieFlowModuleMachine } from "./videoSelfieFlowModuleMachine-BUe2uACW.esm.js";
14
14
  //#region src/modules/video-selfie/videoSelfieWasm.ts
15
15
  function warmupVideoSelfieWasm(config, steps = resolveVideoSelfieSteps(config)) {
@@ -374,9 +374,10 @@ const videoSelfieRecordingMachine = videoSelfieRecordingSetup.createMachine({
374
374
  initial: "idle",
375
375
  context: ({ input }) => {
376
376
  const visibilityObserver = input.visibilityObserver;
377
+ const compositor = input.dependencies?.createCompositor?.() ?? createRecordingCompositor();
377
378
  return {
378
- service: input.dependencies?.createRecordingService?.() ?? new MultipartRecordingService(),
379
- compositor: input.dependencies?.createCompositor?.() ?? new CameraCompositor(),
379
+ service: input.dependencies?.createRecordingService?.() ?? new MultipartRecordingService("videoselfie", new WorkerEncoderRecordingProvider(compositor)),
380
+ compositor,
380
381
  acquireCamera: input.dependencies?.acquireCamera ?? defaultAcquireCamera,
381
382
  ensureWasmReady: input.ensureWasmReady,
382
383
  detect: input.dependencies?.detect ?? manualStepDetector,
@@ -1,16 +1,16 @@
1
1
  import { t as BrowserTimerProvider } from "./BrowserTimerProvider-BXhgNxLt.esm.js";
2
2
  import { t as api } from "./api-Bx3gKW_y.esm.js";
3
3
  import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
4
- import { d as facingModeForStep, f as resolveVideoSelfieSteps } from "./flowServices-ZXug3wzs.esm.js";
4
+ import { d as facingModeForStep, f as resolveVideoSelfieSteps } from "./flowServices-DoPimvFm.esm.js";
5
5
  import { a as requestCameraWithFallback, i as requestCameraAccess } from "./camera-sIa9ceW2.esm.js";
6
6
  import { t as checkPermission } from "./permissionServices-EY3_Vx6c.esm.js";
7
- import { n as encryptSelfieImage, o as startDetection, t as FaceDetectionProvider } from "./FaceDetectionProvider-D5FNNkoJ.esm.js";
7
+ import { n as encryptSelfieImage, o as startDetection, t as FaceDetectionProvider } from "./FaceDetectionProvider-BLINJUJ_.esm.js";
8
8
  import { t as FACE_ERROR_CODES } from "./types-BN5RPPIZ.esm.js";
9
- import { i as StreamCanvasProcessingSession } from "./multipartRecordingService-YKu0Bd7S.esm.js";
9
+ import { o as StreamCanvasProcessingSession } from "./multipartRecordingService-mwKFTlhR.esm.js";
10
10
  import { n as getBackCameraStream } from "./backCameraStream-B0-YgP_y.esm.js";
11
11
  import { n as getWindowDimensions } from "./getDeviceClass-CeBiEayS.esm.js";
12
12
  import { a as uploadSelfie, r as processFace, t as getFaceErrorCodeFromUnknown } from "./selfieErrorUtils-UiQ46EBa.esm.js";
13
- import { n as DEFAULT_ID_CAPTURE_THRESHOLDS, r as IdCaptureProvider, t as DEFAULT_ID_CAPTURE_GEOMETRY } from "./idCaptureDefaults-CqdpEg3N.esm.js";
13
+ import { n as DEFAULT_ID_CAPTURE_THRESHOLDS, r as IdCaptureProvider, t as DEFAULT_ID_CAPTURE_GEOMETRY } from "./idCaptureDefaults-DkNKy4mw.esm.js";
14
14
  import { t as StreamCanvasCapture } from "./StreamCanvasCapture-C9jtgBdT.esm.js";
15
15
  //#region src/modules/video-selfie/videoSelfieCompareService.ts
16
16
  async function postVideoSelfieCompare(endpoint, base64Image) {
@@ -29,6 +29,19 @@ type FacingMode = 'user' | 'environment';
29
29
  //#region ../infra/src/media/CameraCompositor.d.ts
30
30
  type CameraCompositorOptions = {
31
31
  fps?: number;
32
+ maxLongEdge?: number;
33
+ maxShortEdge?: number;
34
+ /** Worker transport: drop frames to hold the output at `fps`. */
35
+ paceWorkerFrames?: boolean;
36
+ /**
37
+ * Worker transport: record by encoding inside the worker (see
38
+ * {@link CameraCompositor.startWorkerRecording}) instead of handing the
39
+ * composite stream to a `MediaRecorder`.
40
+ */
41
+ encodeInWorker?: {
42
+ bitrate: number;
43
+ timesliceMs: number;
44
+ };
32
45
  resumeTimeoutMs?: number;
33
46
  };
34
47
  type CameraCompositorResumeResult = 'resumed' | 'video-ended' | 'audio-ended' | 'timed-out';
@@ -50,6 +63,10 @@ type CameraCompositorResumeResult = 'resumed' | 'video-ended' | 'audio-ended' |
50
63
  * `captureStream`, for Safari, Firefox and strict-CSP hosts that block blob
51
64
  * workers.
52
65
  *
66
+ * With `encodeInWorker`, the worker transport also records: it encodes and
67
+ * muxes the WebM itself (see `startWorkerRecording`), so no `MediaRecorder`
68
+ * — which needs the main thread for every frame — is involved.
69
+ *
53
70
  * A worker that dies mid-recording (GPU-process crash, OOM) is released at
54
71
  * once; the composite track stays valid but receives no further frames, and
55
72
  * the next `resume()` reports `timed-out` so the caller reacquires the camera
@@ -62,6 +79,14 @@ declare class CameraCompositor {
62
79
  private readonly fps;
63
80
  private readonly frameIntervalMs;
64
81
  private readonly resumeTimeoutMs;
82
+ private readonly maxLongEdge;
83
+ private readonly maxShortEdge;
84
+ private readonly paceWorkerFrames;
85
+ private readonly encodeInWorker;
86
+ private workerEncoding;
87
+ private onWorkerPart;
88
+ private workerRecordingError;
89
+ private workerRecordingStopped;
65
90
  private canvas;
66
91
  private ctx;
67
92
  private video;
@@ -90,6 +115,30 @@ declare class CameraCompositor {
90
115
  * video track is stopped.
91
116
  */
92
117
  switchVideo(stream: CameraStream): void;
118
+ /**
119
+ * True when this compositor records by itself: the worker transport started
120
+ * with `encodeInWorker` and the browser has `VideoEncoder`. Use the
121
+ * `*WorkerRecording` methods instead of a `MediaRecorder` then; the
122
+ * composite stream receives no frames.
123
+ */
124
+ get encodesInWorker(): boolean;
125
+ /** Last in-worker encoder error, if any. */
126
+ get workerRecordingErrorMessage(): string | null;
127
+ /**
128
+ * Start a new WebM recording inside the worker. `onPart` receives whole
129
+ * WebM clusters (~`timesliceMs` each, keyframe first; the first part also
130
+ * carries the header), in order. Returns false when not encoding in-worker.
131
+ */
132
+ startWorkerRecording(onPart: (chunk: Blob) => void): boolean;
133
+ pauseWorkerRecording(): boolean;
134
+ resumeWorkerRecording(): boolean;
135
+ /**
136
+ * Flush the encoder and resolve once every part has reached `onPart`.
137
+ * Resolves at once if the worker is gone (its buffered frames are lost).
138
+ */
139
+ stopWorkerRecording(): Promise<void>;
140
+ /** Stop in-worker recording and drop whatever it still emits. */
141
+ cancelWorkerRecording(): void;
93
142
  /** The composite stream being recorded, if compositing is active. */
94
143
  get stream(): MediaStream | undefined;
95
144
  /** Pause source playback and drawing while the page is backgrounded. */
package/dist/wasm.esm.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { g as WASM_PIPELINE_MODEL_NAMES, m as WASM_PIPELINE_LAZY_MODEL_NAMES, p as WASM_MODEL_FILES } from "./wasmWebClient-B7baE-Wf.esm.js";
2
- import { C as DEFAULT_WASM_VERSION, D as resolveWasmConfig, T as buildWasmConfigFromBasePath, w as buildDefaultWasmConfig } from "./trueSightService-CvCQ1O8I.esm.js";
2
+ import { C as DEFAULT_WASM_VERSION, D as resolveWasmConfig, T as buildWasmConfigFromBasePath, w as buildDefaultWasmConfig } from "./trueSightService-B8ESMOpB.esm.js";
3
3
  import { o as warmupWasm } from "./warmup-ChDwHSel.esm.js";
4
- import { a as resolveWasmConfigForPipelines, c as upgradeToWasmHttpClient, n as initializeWasmUtil, o as setWasmConfig, t as ensureWasmPipelines } from "./setup-BqZsYdcN.esm.js";
4
+ import { a as resolveWasmConfigForPipelines, c as upgradeToWasmHttpClient, n as initializeWasmUtil, o as setWasmConfig, t as ensureWasmPipelines } from "./setup-DEPf5jcB.esm.js";
5
5
  //#region src/defineWasm.ts
6
6
  function requiredModels(pipelines) {
7
7
  const models = /* @__PURE__ */ new Set();
@@ -1,29 +1,29 @@
1
- import { l as trueSightLog } from "./trueSightService-CvCQ1O8I.esm.js";
2
- import { E as updateFeatureManagementUser } from "./feature-management-CT71kF7K.esm.js";
1
+ import { l as trueSightLog } from "./trueSightService-B8ESMOpB.esm.js";
2
+ import { E as updateFeatureManagementUser } from "./feature-management-DVOpWeB4.esm.js";
3
3
  import { t as api } from "./api-Bx3gKW_y.esm.js";
4
4
  import { n as eventModuleNames, o as createManagerInstrumentation, v as addEvent } from "./events-ijlbX_Wx.esm.js";
5
- import { i as initializeSession, r as getSessionFingerprintResult } from "./sessionInitializer-NKOKaYzH.esm.js";
5
+ import { i as initializeSession, r as getSessionFingerprintResult } from "./sessionInitializer-FZeu_jKW.esm.js";
6
6
  import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
7
- import { i as toIncodeApiError } from "./apiError-BmktKO7R.esm.js";
8
- import { v as toEkybConfig } from "./flowServices-ZXug3wzs.esm.js";
7
+ import { i as toIncodeApiError } from "./apiError-4S2Z_rSf.esm.js";
8
+ import { v as toEkybConfig } from "./flowServices-DoPimvFm.esm.js";
9
9
  import { i as toEkycConfig } from "./ekycUtils-Dew1rBG0.esm.js";
10
10
  import { i as assign, s as createActor, t as setup, u as createManager } from "./xstate.esm-BuFLFuzz.esm.js";
11
11
  import { n as fromPromise } from "./xstate-actors.esm-BXeQ-Ucz.esm.js";
12
- import { r as electronicSignatureMachine } from "./electronicSignatureManager-i9KSHGcI.esm.js";
12
+ import { r as electronicSignatureMachine } from "./electronicSignatureManager-CnMuiOGf.esm.js";
13
13
  import "./ae-signature.esm.js";
14
14
  import { t as antifraudMachine } from "./antifraudStateMachine-DBeq47D2.esm.js";
15
- import { t as authenticationMachine } from "./authenticationStateMachine-BBPaXbO0.esm.js";
15
+ import { t as authenticationMachine } from "./authenticationStateMachine-CNb31qDV.esm.js";
16
16
  import { t as certificateIssuanceMachine } from "./certificateIssuanceStateMachine-CxqS_nD-.esm.js";
17
17
  import { t as consentMachine } from "./consentStateMachine-DTSfdGiW.esm.js";
18
18
  import { t as curpValidationMachine } from "./curpValidationStateMachine-g5kMfuLj.esm.js";
19
19
  import { t as customWatchlistMachine } from "./customWatchlistStateMachine-DOQou6TW.esm.js";
20
20
  import { t as documentCaptureMachine } from "./documentCaptureStateMachine-D312sSIu.esm.js";
21
- import { t as dynamicFormsMachine } from "./dynamicFormsStateMachine-D6oLfWyM.esm.js";
22
- import { t as ekybMachine } from "./ekybStateMachine-B4qbgC_I.esm.js";
21
+ import { t as dynamicFormsMachine } from "./dynamicFormsStateMachine-CEf-u1Vj.esm.js";
22
+ import { t as ekybMachine } from "./ekybStateMachine-BsIr7Uh-.esm.js";
23
23
  import { t as ekycMachine } from "./ekycStateMachine-CshSNJhh.esm.js";
24
24
  import { t as emailMachine } from "./emailStateMachine-Bc_6oIYw.esm.js";
25
- import { t as selfieMachine } from "./selfieStateMachine-B27MSUWB.esm.js";
26
- import { t as idCaptureMachine } from "./idCaptureStateMachine-BYgxfqHv.esm.js";
25
+ import { t as selfieMachine } from "./selfieStateMachine-D4F_8Mmv.esm.js";
26
+ import { t as idCaptureMachine } from "./idCaptureStateMachine-5DZ07r8_.esm.js";
27
27
  import { t as phoneMachine } from "./phoneStateMachine-CXdXufKg.esm.js";
28
28
  import { t as watchlistMachine } from "./watchlistStateMachine-CBqk2w-h.esm.js";
29
29
  import { t as watchlistForBusinessMachine } from "./watchlistForBusinessStateMachine-CJ-MvUre.esm.js";
@@ -32,12 +32,12 @@ import { t as mandatoryConsentMachine } from "./mandatoryConsentStateMachine-DC5
32
32
  import { t as idOcrStateMachine } from "./idOcrStateMachine-ClDEP-VI.esm.js";
33
33
  import { n as redirectToMobileMachine } from "./redirectToMobileStateMachine-CSWWgUTO.esm.js";
34
34
  import { t as signatureMachine } from "./signatureStateMachine-ce_XMA3l.esm.js";
35
- import { t as geolocationMachine } from "./geolocationStateMachine-CP8_KHBU.esm.js";
35
+ import { t as geolocationMachine } from "./geolocationStateMachine-5M86MRiv.esm.js";
36
36
  import { t as governmentValidationMachine } from "./governmentValidationStateMachine-CoaZOSTP.esm.js";
37
37
  import { t as idVerificationMachine } from "./idVerificationStateMachine-DbDVIh9t.esm.js";
38
38
  import { t as faceMatchMachine } from "./faceMatchStateMachine-mRIHQ3dA.esm.js";
39
- import { n as getFinishStatus, r as getTotalScoreStatus } from "./flowCompletionService-DbMQ7zEQ.esm.js";
40
- import { n as attachFlowEventEmitter, t as runChildModule } from "./runChildModule-BhK3islQ.esm.js";
39
+ import { n as getFinishStatus, r as getTotalScoreStatus } from "./flowCompletionService-BSfi8EEC.esm.js";
40
+ import { n as attachFlowEventEmitter, t as runChildModule } from "./runChildModule-DnSpmfi_.esm.js";
41
41
  import { n as isAdvanceableError } from "./advanceableErrors-CpF2cBy6.esm.js";
42
42
  import "./qe-signature.esm.js";
43
43
  import { t as videoSelfieFlowModuleMachine } from "./videoSelfieFlowModuleMachine-BUe2uACW.esm.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@incodetech/core",
3
- "version": "2.3.0-rc.11",
3
+ "version": "2.3.0-rc.12",
4
4
  "license": "ISC",
5
5
  "repository": {
6
6
  "type": "git",