@incodetech/core 2.3.0-rc.0 → 2.3.0-rc.10

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 (162) hide show
  1. package/dist/{BrowserDiagnosticsCryptoProvider-C_9o3L2L.esm.js → BrowserDiagnosticsCryptoProvider-BuzqvbhN.esm.js} +6 -24
  2. package/dist/{FaceDetectionProvider-DTetAE8H.esm.js → FaceDetectionProvider-BZYHujqz.esm.js} +10 -55
  3. package/dist/{IWasmUtilCapability-CXXDA5l1.d.ts → IWasmUtilCapability-CNWRl7jr.d.ts} +1 -43
  4. package/dist/{MotionSensorProvider-BgTYwg9L.esm.js → MotionSensorProvider-DyhbM4Si.esm.js} +1 -1
  5. package/dist/{StreamCanvasCapture-B3YT2Bt6.d.ts → StreamCanvasCapture-_8gdW5Lk.d.ts} +1 -1
  6. package/dist/{addressSearch-BRSu_aGA.esm.js → addressSearch-DyHGgeX8.esm.js} +1 -1
  7. package/dist/ae-signature.esm.js +1 -1
  8. package/dist/antifraud.esm.js +2 -2
  9. package/dist/{antifraudManager-Bg9ynGum.esm.js → antifraudManager-DNkw66oW.esm.js} +1 -1
  10. package/dist/{antifraudStateMachine-BHxehiJZ.esm.js → antifraudStateMachine-DBeq47D2.esm.js} +1 -1
  11. package/dist/{apiError-D0v5hFyN.esm.js → apiError-iTFZ5fiI.esm.js} +1 -1
  12. package/dist/authentication.d.ts +3 -3
  13. package/dist/authentication.esm.js +2 -2
  14. package/dist/{authenticationManager-DXTIUcma.d.ts → authenticationManager-B23V74p7.d.ts} +1 -1
  15. package/dist/{authenticationManager-C4B4-29g.esm.js → authenticationManager-D22ju23T.esm.js} +4 -4
  16. package/dist/{authenticationStateMachine-DJ0zUm-A.esm.js → authenticationStateMachine-TyFaCegB.esm.js} +3 -3
  17. package/dist/{backCameraStream-BOtyQowf.esm.js → backCameraStream-B0-YgP_y.esm.js} +1 -0
  18. package/dist/camera.esm.js +1 -1
  19. package/dist/certificate-issuance.esm.js +2 -2
  20. package/dist/{certificateIssuanceManager-Bfvkq7Cy.esm.js → certificateIssuanceManager-C3-CI0_s.esm.js} +1 -1
  21. package/dist/{certificateIssuanceStateMachine-BBD5h8c4.esm.js → certificateIssuanceStateMachine-CxqS_nD-.esm.js} +1 -1
  22. package/dist/consent.esm.js +2 -2
  23. package/dist/{consentManager-B5Vqdez-.esm.js → consentManager-B6E1XJDw.esm.js} +1 -1
  24. package/dist/{consentStateMachine-DbUmqWgV.esm.js → consentStateMachine-DTSfdGiW.esm.js} +1 -1
  25. package/dist/{createCameraCycleOwnership-DQ5-F2oW.esm.js → createCameraCycleOwnership-DnwTl1ad.esm.js} +7 -2
  26. package/dist/cross-document-data-match.esm.js +1 -1
  27. package/dist/{crossDocumentDataMatchManager-QMOGwHXR.esm.js → crossDocumentDataMatchManager-9XhFVZ5S.esm.js} +1 -1
  28. package/dist/curp-validation.esm.js +2 -2
  29. package/dist/{curpValidationManager-D1ppROcF.esm.js → curpValidationManager-DbIMYFcJ.esm.js} +1 -1
  30. package/dist/{curpValidationStateMachine-DvUPC_8S.esm.js → curpValidationStateMachine-g5kMfuLj.esm.js} +1 -1
  31. package/dist/custom-fields.esm.js +1 -1
  32. package/dist/custom-watchlist.esm.js +2 -2
  33. package/dist/{customFieldsManager-2j_PBq4U.esm.js → customFieldsManager-CzWZTkW-.esm.js} +1 -1
  34. package/dist/{customWatchlistManager-DUVrEdw9.esm.js → customWatchlistManager-DWTED5Ur.esm.js} +1 -1
  35. package/dist/{customWatchlistStateMachine-qZVgkKgP.esm.js → customWatchlistStateMachine-DOQou6TW.esm.js} +1 -1
  36. package/dist/{deepsightLoader-Dm7ejW4v.esm.js → deepsightLoader-DamOBrBJ.esm.js} +7 -7
  37. package/dist/document-capture.d.ts +1 -1
  38. package/dist/document-capture.esm.js +2 -2
  39. package/dist/{documentCaptureManager-DR_Wv-3H.esm.js → documentCaptureManager-BRPxqYD2.esm.js} +1 -1
  40. package/dist/{documentCaptureManager-DensIj5F.d.ts → documentCaptureManager-lEtCM320.d.ts} +14 -0
  41. package/dist/{documentCaptureStateMachine-CWOATHfE.esm.js → documentCaptureStateMachine-D312sSIu.esm.js} +14 -9
  42. package/dist/dynamic-forms.esm.js +2 -2
  43. package/dist/{dynamicFormsManager-Dt98SDfV.esm.js → dynamicFormsManager-DKgiusbF.esm.js} +1 -1
  44. package/dist/{dynamicFormsStateMachine-obKr4IIp.esm.js → dynamicFormsStateMachine-BV8yR5iN.esm.js} +2 -2
  45. package/dist/ekyb.esm.js +3 -3
  46. package/dist/{ekybManager-DNZKrKF3.esm.js → ekybManager-8VUBu8VW.esm.js} +1 -1
  47. package/dist/{ekybStateMachine-DjhHQXZ8.esm.js → ekybStateMachine-Bnsefu9M.esm.js} +3 -3
  48. package/dist/ekyc.esm.js +2 -2
  49. package/dist/{ekycManager-CmQBpeiI.esm.js → ekycManager-BlQ-Qj4E.esm.js} +1 -1
  50. package/dist/{ekycStateMachine-CmdW2gVm.esm.js → ekycStateMachine-CshSNJhh.esm.js} +2 -2
  51. package/dist/electronic-signature.esm.js +1 -1
  52. package/dist/{electronicSignatureManager-DzulxM4_.esm.js → electronicSignatureManager--YFXVldr.esm.js} +2 -2
  53. package/dist/email.esm.js +2 -2
  54. package/dist/{emailManager-B5ek_UfM.esm.js → emailManager-bR1N5rV_.esm.js} +1 -1
  55. package/dist/{emailStateMachine-CyPFZ7dW.esm.js → emailStateMachine-Bc_6oIYw.esm.js} +1 -1
  56. package/dist/{endpoints-D3B9mUHh.esm.js → endpoints-B-3Q-LUw.esm.js} +0 -3
  57. package/dist/extensibility.d.ts +9 -9
  58. package/dist/extensibility.esm.js +34 -34
  59. package/dist/face-match.esm.js +2 -2
  60. package/dist/{faceCaptureManagerFactory-pCmG4MeF.esm.js → faceCaptureManagerFactory-Bk6pVs6E.esm.js} +3 -3
  61. package/dist/{faceCaptureManagerFactory-CvtqcLxs.d.ts → faceCaptureManagerFactory-DMLstvui.d.ts} +84 -45
  62. package/dist/{faceCaptureSetup-BSextack.esm.js → faceCaptureSetup-CGQDK97m.esm.js} +283 -100
  63. package/dist/{faceMatchManager-Caal2zyV.esm.js → faceMatchManager-Bmv0HzuY.esm.js} +1 -1
  64. package/dist/{faceMatchStateMachine-BUc5FXYy.esm.js → faceMatchStateMachine-mRIHQ3dA.esm.js} +1 -1
  65. package/dist/{feature-management-B0sGlozZ.esm.js → feature-management-C8OAO_CZ.esm.js} +1 -1
  66. package/dist/feature-management.esm.js +1 -1
  67. package/dist/field-comparison.esm.js +1 -1
  68. package/dist/{fieldComparisonManager-BIs6HPJG.esm.js → fieldComparisonManager-CC-klG0h.esm.js} +1 -1
  69. package/dist/fiscal-qr.d.ts +1 -1
  70. package/dist/fiscal-qr.esm.js +1 -1
  71. package/dist/{fiscalQrManager-CHcBJwUM.d.ts → fiscalQrManager-B1STmT6z.d.ts} +4 -1
  72. package/dist/{fiscalQrManager-Bp_-3LJr.esm.js → fiscalQrManager-DbCVMIBx.esm.js} +17 -5
  73. package/dist/flow.d.ts +2 -2
  74. package/dist/flow.esm.js +3 -3
  75. package/dist/{flowCompletionService-CLtbWhSK.esm.js → flowCompletionService-C0zcPnqK.esm.js} +2 -2
  76. package/dist/{flowServices-B5FwukTQ.esm.js → flowServices-G1FDrkLd.esm.js} +6 -6
  77. package/dist/geolocation.esm.js +2 -2
  78. package/dist/{geolocationManager-DIw-xq9a.esm.js → geolocationManager-DNixQOgf.esm.js} +1 -1
  79. package/dist/{geolocationStateMachine-DpG0TFOU.esm.js → geolocationStateMachine-D1aZJ6eR.esm.js} +2 -2
  80. package/dist/government-validation.esm.js +2 -2
  81. package/dist/{governmentValidationManager-TjC9iVjH.esm.js → governmentValidationManager-CacFOtKO.esm.js} +1 -1
  82. package/dist/{governmentValidationStateMachine-D1ZnEqdd.esm.js → governmentValidationStateMachine-CoaZOSTP.esm.js} +1 -1
  83. package/dist/id-ocr.esm.js +2 -2
  84. package/dist/id-selfie-flow.d.ts +1 -1
  85. package/dist/id-selfie-flow.esm.js +10 -10
  86. package/dist/id-verification.esm.js +2 -2
  87. package/dist/id.d.ts +3 -3
  88. package/dist/id.esm.js +4 -4
  89. package/dist/{idCaptureDefaults-BcxjQDI3.esm.js → idCaptureDefaults-sJahGQgV.esm.js} +4 -206
  90. package/dist/{idCaptureManager-Vby8oYqh.esm.js → idCaptureManager-B8lo-ksK.esm.js} +5 -5
  91. package/dist/{idCaptureManager-CvmHOWWd.d.ts → idCaptureManager-BaHEyQyr.d.ts} +33 -16
  92. package/dist/{idCaptureServices-CJIxD9ep.esm.js → idCaptureServices-DLqls7Xv.esm.js} +71 -122
  93. package/dist/{idCaptureStateMachine-CmqihkUy.esm.js → idCaptureStateMachine-CCPGFPRF.esm.js} +226 -91
  94. package/dist/{idOcrManager-DHU22hVn.esm.js → idOcrManager-r46XfZGE.esm.js} +1 -1
  95. package/dist/{idOcrStateMachine-33UvRAHE.esm.js → idOcrStateMachine-ClDEP-VI.esm.js} +1 -1
  96. package/dist/{idVerificationManager-CyaixD0D.esm.js → idVerificationManager-DT42c77H.esm.js} +1 -1
  97. package/dist/{idVerificationStateMachine-BPGrQZEm.esm.js → idVerificationStateMachine-DbDVIh9t.esm.js} +1 -1
  98. package/dist/identity-reuse.esm.js +2 -2
  99. package/dist/{identityReuseManager-CWaNHBO3.esm.js → identityReuseManager-yG3acUrQ.esm.js} +1 -1
  100. package/dist/{identityReuseStateMachine-CQgnATo5.esm.js → identityReuseStateMachine-BhAkuIra.esm.js} +1 -1
  101. package/dist/index.d.ts +1 -1
  102. package/dist/index.esm.js +1 -1
  103. package/dist/mandatory-consent.esm.js +2 -2
  104. package/dist/{mandatoryConsentManager-Du-m-tZ_.esm.js → mandatoryConsentManager-7dI0D08q.esm.js} +1 -1
  105. package/dist/{mandatoryConsentStateMachine-DSDAk7WZ.esm.js → mandatoryConsentStateMachine-DC5Mo6M1.esm.js} +1 -1
  106. package/dist/{multipartRecordingService-B3C_zlev.esm.js → multipartRecordingService-YKu0Bd7S.esm.js} +496 -3
  107. package/dist/{permissionGuards-uYZYFu4J.esm.js → permissionGuards-D6TfVop2.esm.js} +1 -1
  108. package/dist/{permissionServices-Bj_fyWtv.esm.js → permissionServices-EY3_Vx6c.esm.js} +2 -2
  109. package/dist/phone.esm.js +2 -2
  110. package/dist/{phoneManager-N1-sbrY4.esm.js → phoneManager-IjhSv5XS.esm.js} +1 -1
  111. package/dist/{phoneStateMachine-jl8LJKCo.esm.js → phoneStateMachine-CXdXufKg.esm.js} +1 -1
  112. package/dist/qe-signature.esm.js +1 -1
  113. package/dist/redirect-to-mobile.esm.js +2 -2
  114. package/dist/{redirectToMobileManager-DsFzdTwA.esm.js → redirectToMobileManager-FLEWJtv8.esm.js} +1 -1
  115. package/dist/{redirectToMobileStateMachine-v3otpT-L.esm.js → redirectToMobileStateMachine-CSWWgUTO.esm.js} +1 -1
  116. package/dist/{runChildModule-TuyGE00X.esm.js → runChildModule-B3Z4iJnG.esm.js} +1 -1
  117. package/dist/{safeStorage-B-trhxg6.esm.js → safeStorage-BdU9_m2E.esm.js} +1 -1
  118. package/dist/{sdkVersion-CLxKvdyz.esm.js → sdkVersion-CD9fJC2Y.esm.js} +1 -1
  119. package/dist/selfie.d.ts +4 -4
  120. package/dist/selfie.esm.js +8 -8
  121. package/dist/{selfieErrorUtils-C77GXJH6.esm.js → selfieErrorUtils-UiQ46EBa.esm.js} +2 -2
  122. package/dist/{selfieManager-D1KRJ39M.d.ts → selfieManager-CDCTOrcg.d.ts} +1 -1
  123. package/dist/{selfieManager-CihVnODO.esm.js → selfieManager-DzOPNipB.esm.js} +4 -4
  124. package/dist/{selfieStateMachine-fwMmNtOi.esm.js → selfieStateMachine-CidiobBW.esm.js} +4 -4
  125. package/dist/{session-BHIeAamR.esm.js → session-BABCfUhC.esm.js} +4 -4
  126. package/dist/session.esm.js +4 -4
  127. package/dist/{sessionInitializer-BLoK7SP9.esm.js → sessionInitializer-BK5NjMe0.esm.js} +6 -6
  128. package/dist/{setup-Cv-JM9QC.d.ts → setup-Cyko6cAn.d.ts} +6 -18
  129. package/dist/{setup-msLybMbC.esm.js → setup-D4YCSH31.esm.js} +14 -202
  130. package/dist/signature.esm.js +2 -2
  131. package/dist/{signatureManager-ChsB-nMD.esm.js → signatureManager-B72np4ZO.esm.js} +1 -1
  132. package/dist/{signatureStateMachine-BHPwkJZS.esm.js → signatureStateMachine-ce_XMA3l.esm.js} +1 -1
  133. package/dist/{stats-DkK-f8JT.esm.js → stats-CZcy2J53.esm.js} +1 -1
  134. package/dist/stats.esm.js +1 -1
  135. package/dist/{tri-4RsGrIt6.esm.js → tri-xzRLIIMN.esm.js} +0 -10
  136. package/dist/tri.esm.js +1 -1
  137. package/dist/{trueSightService-CKrrfV0Q.esm.js → trueSightService-D8yZwF3G.esm.js} +190 -571
  138. package/dist/{types-CM-jtjJ2.d.ts → types-Bnl58jUQ.d.ts} +2 -6
  139. package/dist/{types-ZT1XFIJ8.d.ts → types-ChAowIxT.d.ts} +1 -1
  140. package/dist/{types-CjKBS37a2.d.ts → types-byBHOzCG2.d.ts} +5 -15
  141. package/dist/video-selfie.d.ts +1 -1
  142. package/dist/video-selfie.esm.js +6 -7
  143. package/dist/{videoSelfieCameraWarmer-CB1IzZkt.esm.js → videoSelfieCameraWarmer-C80ZPDZ8.esm.js} +8 -8
  144. package/dist/{videoSelfieStepDetector-5YHFe0Mq.d.ts → videoSelfieStepDetector-Co0Gu2k2.d.ts} +43 -13
  145. package/dist/{virtualCameraCheck-WOloJ-do.esm.js → virtualCameraCheck-Cjab7FTI.esm.js} +1 -1
  146. package/dist/{warmup-CUUnwYxe.esm.js → warmup-ChDwHSel.esm.js} +5 -0
  147. package/dist/wasm.d.ts +1 -1
  148. package/dist/wasm.esm.js +3 -2
  149. package/dist/{wasmDsFlagSync-B2e8p268.esm.js → wasmDsFlagSync-DYrLUEII.esm.js} +1 -1
  150. package/dist/watchlist-for-business.esm.js +2 -2
  151. package/dist/watchlist.esm.js +2 -2
  152. package/dist/{watchlistForBusinessManager-CpuuB1J2.esm.js → watchlistForBusinessManager-CIMkpEhu.esm.js} +1 -1
  153. package/dist/{watchlistForBusinessStateMachine-DEzgjz7C.esm.js → watchlistForBusinessStateMachine-CJ-MvUre.esm.js} +1 -1
  154. package/dist/{watchlistManager-CI8BHFob.esm.js → watchlistManager-CixcLNDT.esm.js} +1 -1
  155. package/dist/{watchlistStateMachine-DvOby3a-.esm.js → watchlistStateMachine-CBqk2w-h.esm.js} +1 -1
  156. package/dist/workflow.esm.js +34 -34
  157. package/package.json +1 -6
  158. package/dist/FaceDetectionProvider-LdZ47bWy.d.ts +0 -36
  159. package/dist/personhood.d.ts +0 -538
  160. package/dist/personhood.esm.js +0 -1574
  161. package/dist/recordingsRepository-CCWy13M-.esm.js +0 -72
  162. package/dist/types-BT_Oalip.d.ts +0 -1
@@ -1,16 +1,15 @@
1
- import { t as ensureWasmPipelines } from "./setup-msLybMbC.esm.js";
2
- import { i as numberParam, n as defineExperimentParams, t as booleanParam, u as resolveExperimentOnce } from "./feature-management-B0sGlozZ.esm.js";
1
+ import { t as ensureWasmPipelines } from "./setup-D4YCSH31.esm.js";
2
+ import { i as numberParam, n as defineExperimentParams, t as booleanParam, u as resolveExperimentOnce } from "./feature-management-C8OAO_CZ.esm.js";
3
3
  import { t as api } from "./api-Bx3gKW_y.esm.js";
4
- import { t as endpoints } from "./endpoints-D3B9mUHh.esm.js";
4
+ import { t as endpoints } from "./endpoints-B-3Q-LUw.esm.js";
5
5
  import { i as isDesktop } from "./platform-DkcRc9JV.esm.js";
6
6
  import { i as assign, t as setup } from "./xstate.esm-BuFLFuzz.esm.js";
7
7
  import { n as fromPromise } from "./xstate-actors.esm-BXeQ-Ucz.esm.js";
8
- import { s as queryCameraPermission } from "./permissionServices-Bj_fyWtv.esm.js";
9
- import { n as startRecording, r as stopRecording$1, t as createRecordingSession } from "./recordingsRepository-CCWy13M-.esm.js";
10
- import { a as isBackFacingTrack, n as getBackCameraStream } from "./backCameraStream-BOtyQowf.esm.js";
8
+ import { s as queryCameraPermission } from "./permissionServices-EY3_Vx6c.esm.js";
9
+ import { n as CameraCompositor, t as MultipartRecordingService } from "./multipartRecordingService-YKu0Bd7S.esm.js";
10
+ import { a as isBackFacingTrack, n as getBackCameraStream } from "./backCameraStream-B0-YgP_y.esm.js";
11
11
  import { t as getDeviceClass } from "./getDeviceClass-5NYZg9s6.esm.js";
12
- import { t as MultipartRecordingService } from "./multipartRecordingService-B3C_zlev.esm.js";
13
- import { i as CameraCompositor, n as DEFAULT_ID_CAPTURE_THRESHOLDS, r as IdCaptureProvider } from "./idCaptureDefaults-BcxjQDI3.esm.js";
12
+ import { n as DEFAULT_ID_CAPTURE_THRESHOLDS, r as IdCaptureProvider } from "./idCaptureDefaults-sJahGQgV.esm.js";
14
13
  //#region src/internal/camera/cameraServices.ts
15
14
  function createCameraServices(camera) {
16
15
  return {
@@ -569,55 +568,16 @@ async function uploadIdImage(params) {
569
568
  throw new Error(`${ID_ERROR_CODES.UPLOAD_ERROR}: ${errorMessage}`);
570
569
  }
571
570
  }
572
- function buildStandardResolution(width, height) {
573
- return height > width ? {
574
- width: 1080,
575
- height: 1920
576
- } : {
577
- width: 1920,
578
- height: 1080
579
- };
580
- }
581
- function buildResolutionFromStream(stream) {
582
- const track = stream.getVideoTracks()[0];
583
- if (!track) return "1080x1920";
584
- const settings = track.getSettings();
585
- const width = settings.width;
586
- const height = settings.height;
587
- if (typeof width === "number" && typeof height === "number") {
588
- const standard = buildStandardResolution(width, height);
589
- return `${standard.width}x${standard.height}`;
590
- }
591
- return "1080x1920";
592
- }
593
- function preloadIdRecordingProvider(config) {}
594
571
  const multipartIdSessions = /* @__PURE__ */ new WeakMap();
595
- const legacyIdRecordingStreams = /* @__PURE__ */ new WeakMap();
596
572
  const idRecordingFinalizations = /* @__PURE__ */ new WeakMap();
597
- const releasedLegacyIdRecordings = /* @__PURE__ */ new WeakSet();
598
- const legacyIdDisconnects = /* @__PURE__ */ new WeakMap();
599
- function createMultipartSessionHandle(service, compositor, recordingSource, resolution, hasAudio) {
600
- const session = {
601
- token: "",
602
- sessionId: "",
603
- videoRecordingId: "",
604
- connection: {
605
- sessionId: void 0,
606
- publisher: {
607
- getStreamId: () => void 0,
608
- replaceVideoTrack: async () => {},
609
- destroy: () => {}
610
- },
611
- disconnect: async () => {}
612
- },
613
- resolution,
614
- hasAudio
615
- };
573
+ function createMultipartSessionHandle(service, compositor, recordingSource) {
574
+ const session = {};
616
575
  multipartIdSessions.set(session, {
617
576
  compositor,
618
577
  needsVideoSourceReplacement: false,
619
578
  recorderPaused: false,
620
579
  recordingSource,
580
+ audioSource: recordingSource.getAudioTracks(),
621
581
  service
622
582
  });
623
583
  return session;
@@ -639,46 +599,18 @@ async function startRecordingSession(params) {
639
599
  if (multipartSession) multipartSession.recorderPaused = false;
640
600
  return params.existing;
641
601
  }
642
- const hasAudio = params.stream.getAudioTracks().length > 0;
643
- const resolution = buildResolutionFromStream(params.stream);
644
- if (!params.config.recording?.capability) {
645
- const service = new MultipartRecordingService(params.type);
646
- const recordingSource = params.stream.clone();
647
- const compositor = new CameraCompositor({ fps: 30 });
648
- try {
649
- const recordingStream = compositor.start(recordingSource);
650
- await service.start(recordingStream);
651
- } catch (error) {
652
- compositor.stop();
653
- service.cleanup();
654
- throw error;
655
- }
656
- return createMultipartSessionHandle(service, compositor, recordingSource, resolution, hasAudio);
602
+ const service = new MultipartRecordingService(params.type);
603
+ const recordingSource = params.stream.clone();
604
+ const compositor = new CameraCompositor({ fps: 30 });
605
+ try {
606
+ const recordingStream = compositor.start(recordingSource);
607
+ await service.start(recordingStream);
608
+ } catch (error) {
609
+ compositor.stop();
610
+ service.cleanup();
611
+ throw error;
657
612
  }
658
- const provider = params.config.recording.capability;
659
- const clonedStream = params.stream.clone();
660
- const session = await createRecordingSession(params.type);
661
- const connection = await provider.connect({
662
- sessionToken: session.token,
663
- stream: clonedStream,
664
- events: {}
665
- });
666
- await startRecording({
667
- videoRecordingId: session.videoRecordingId,
668
- type: params.type,
669
- resolution,
670
- hasAudio
671
- });
672
- const recordingSession = {
673
- token: session.token,
674
- sessionId: session.sessionId,
675
- videoRecordingId: session.videoRecordingId,
676
- connection,
677
- resolution,
678
- hasAudio
679
- };
680
- legacyIdRecordingStreams.set(recordingSession, clonedStream);
681
- return recordingSession;
613
+ return createMultipartSessionHandle(service, compositor, recordingSource);
682
614
  }
683
615
  function pauseRecordingForAttempt(session) {
684
616
  const multipartSession = multipartIdSessions.get(session);
@@ -689,68 +621,85 @@ function prepareRecordingForCameraRetry(session) {
689
621
  const multipartSession = multipartIdSessions.get(session);
690
622
  if (!multipartSession) return;
691
623
  if (!multipartSession.recorderPaused) multipartSession.recorderPaused = multipartSession.service.pause();
692
- multipartSession.compositor.pause();
693
- multipartSession.recordingSource.getVideoTracks().forEach((track) => track.stop());
624
+ releaseCameraClone(multipartSession, { keepAudio: true });
694
625
  multipartSession.needsVideoSourceReplacement = true;
695
626
  }
696
- function releaseLegacyRecordingResources(session) {
697
- if (releasedLegacyIdRecordings.has(session)) return;
698
- releasedLegacyIdRecordings.add(session);
627
+ /**
628
+ * Resumes a recording paused with `pauseRecordingForAttempt` while its camera
629
+ * clone is still attached (no source replacement pending). Returns whether the
630
+ * recorder is recording again.
631
+ */
632
+ function resumeRecordingAfterPause(session) {
633
+ const multipartSession = multipartIdSessions.get(session);
634
+ if (!multipartSession || multipartSession.needsVideoSourceReplacement) return false;
635
+ if (!multipartSession.recorderPaused) return true;
636
+ if (!multipartSession.service.resume()) return false;
637
+ multipartSession.recorderPaused = false;
638
+ return true;
639
+ }
640
+ /**
641
+ * True only for a live SDK-managed multipart session. A session that has
642
+ * already been finalized or disposed is no longer in the registry, so callers
643
+ * use this to avoid resuming or re-pausing a torn-down recording.
644
+ */
645
+ function isSuspendableRecordingSession(session) {
646
+ return multipartIdSessions.has(session);
647
+ }
648
+ /**
649
+ * Ends the compositor's camera clone on the calling thread. The composite
650
+ * stream and its upload stay alive; only the tracks that pin the physical
651
+ * camera end. `keepAudio` preserves the compositor's audio track across a
652
+ * video-source swap. Every release path must call this before any async work
653
+ * so no camera clone can overlap a PRC or POC camera switch (ENG-47407) or pin
654
+ * the device for the next module (ENG-56648).
655
+ */
656
+ function releaseCameraClone(multipartSession, options) {
699
657
  try {
700
- session.connection.publisher.destroy();
658
+ multipartSession.compositor.pause();
701
659
  } catch {}
702
- const clonedStream = legacyIdRecordingStreams.get(session);
703
- legacyIdRecordingStreams.delete(session);
704
- for (const track of clonedStream?.getTracks() ?? []) try {
660
+ const tracks = options.keepAudio ? multipartSession.recordingSource.getVideoTracks() : /* @__PURE__ */ new Set([...multipartSession.recordingSource.getTracks(), ...multipartSession.audioSource]);
661
+ for (const track of tracks) try {
705
662
  track.stop();
706
663
  } catch {}
707
664
  }
708
- function disconnectLegacyRecording(session) {
709
- const existing = legacyIdDisconnects.get(session);
710
- if (existing) return existing;
711
- const disconnect = session.connection.disconnect();
712
- legacyIdDisconnects.set(session, disconnect);
713
- return disconnect;
714
- }
715
665
  /**
716
- * Fully drains an ID recording before the protected camera cycle runs POC.
717
- * Every recorder clone is stopped before this promise settles.
666
+ * Completes an ID recording: drains the multipart upload and releases the
667
+ * compositor. The camera clone ends synchronously, before this function
668
+ * returns its promise, so a step that ends mid-attempt never pins the camera
669
+ * while the upload finishes (ENG-56648). The composite canvas stays alive until
670
+ * the recorder has emitted its final chunk.
718
671
  */
719
672
  async function finalizeRecordingSession(session) {
720
673
  const existing = idRecordingFinalizations.get(session);
721
674
  if (existing) return existing;
722
675
  const multipartSession = multipartIdSessions.get(session);
723
- const finalization = multipartSession ? (async () => {
724
- multipartIdSessions.delete(session);
676
+ if (!multipartSession) return {};
677
+ multipartIdSessions.delete(session);
678
+ releaseCameraClone(multipartSession, { keepAudio: false });
679
+ const finalization = (async () => {
725
680
  try {
726
681
  return await multipartSession.service.stop();
727
682
  } finally {
728
683
  multipartSession.compositor.stop();
729
684
  }
730
- })() : (async () => {
731
- try {
732
- await stopRecording$1(session.videoRecordingId);
733
- return { recordingId: session.videoRecordingId || null };
734
- } finally {
735
- releaseLegacyRecordingResources(session);
736
- await disconnectLegacyRecording(session);
737
- }
738
685
  })();
739
686
  idRecordingFinalizations.set(session, finalization);
740
687
  return finalization;
741
688
  }
742
- /** Synchronous teardown used when an attempt is cancelled before finalization. */
689
+ /**
690
+ * Teardown for an attempt released before finalization. The camera clone ends
691
+ * synchronously, before this function returns; the upload completes in the
692
+ * background with whatever was recorded.
693
+ */
743
694
  function disposeRecordingSession(session) {
744
695
  const multipartSession = multipartIdSessions.get(session);
745
696
  if (multipartSession) {
746
697
  multipartIdSessions.delete(session);
698
+ releaseCameraClone(multipartSession, { keepAudio: false });
747
699
  const finalization = multipartSession.service.stop().finally(() => multipartSession.compositor.stop());
748
700
  idRecordingFinalizations.set(session, finalization);
749
701
  finalization.catch(() => {});
750
- return;
751
702
  }
752
- releaseLegacyRecordingResources(session);
753
- disconnectLegacyRecording(session).catch(() => {});
754
703
  }
755
704
  function stopRecording(session) {
756
705
  finalizeRecordingSession(session).catch(() => {});
@@ -830,4 +779,4 @@ async function addBarcode(params) {
830
779
  return res.data;
831
780
  }
832
781
  //#endregion
833
- export { getIdCameraStream as S, ID_ERROR_CODES as _, getRealQualityValue as a, CAPTURE_OPTIMIZING as b, preloadIdRecordingProvider as c, startRecordingSession as d, stopRecording as f, validateUploadResponse as g, uploadManualIdFile as h, finalizeRecordingSession as i, prepareRecordingForCameraRetry as l, uploadIdImage as m, barcodeToBase64 as n, initializeIdCapture as o, stopStream as p, disposeRecordingSession as r, pauseRecordingForAttempt as s, addBarcode as t, processId as u, resolveCaptureOptimizingTreatment as v, OPTIMIZING_WATCHDOG_MARGIN_MS as x, resolveIdCaptureThresholds as y };
782
+ export { getIdCameraStream as C, OPTIMIZING_WATCHDOG_MARGIN_MS as S, validateUploadResponse as _, getRealQualityValue as a, resolveIdCaptureThresholds as b, pauseRecordingForAttempt as c, resumeRecordingAfterPause as d, startRecordingSession as f, uploadManualIdFile as g, uploadIdImage as h, finalizeRecordingSession as i, prepareRecordingForCameraRetry as l, stopStream as m, barcodeToBase64 as n, initializeIdCapture as o, stopRecording as p, disposeRecordingSession as r, isSuspendableRecordingSession as s, addBarcode as t, processId as u, ID_ERROR_CODES as v, CAPTURE_OPTIMIZING as x, resolveCaptureOptimizingTreatment as y };