@incodetech/core 0.0.0-dev-20260909-14ef44cf → 0.0.0-dev-20260910-30fb659a

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 (66) hide show
  1. package/dist/{BrowserDiagnosticsCryptoProvider-BqvOagjI.esm.js → BrowserDiagnosticsCryptoProvider-BCbOmuXk.esm.js} +1 -1
  2. package/dist/ae-signature.esm.js +1 -1
  3. package/dist/{apiError-CE5YD5T0.esm.js → apiError-CaZfzHR5.esm.js} +1 -1
  4. package/dist/authentication.esm.js +2 -2
  5. package/dist/{authenticationManager-BMqAIjH1.esm.js → authenticationManager-DGbFYQEa.esm.js} +3 -3
  6. package/dist/{authenticationStateMachine-BKMxS3yH.esm.js → authenticationStateMachine-ChM9tVwT.esm.js} +2 -2
  7. package/dist/consent.d.ts +1 -1
  8. package/dist/{consentManager-DLOyIZzt.d.ts → consentManager-uhDPdU6i.d.ts} +1 -1
  9. package/dist/{deepsightLoader-nTArZgT2.esm.js → deepsightLoader-CgAY2Xik.esm.js} +2 -2
  10. package/dist/device.esm.js +5 -2
  11. package/dist/dynamic-forms.esm.js +2 -2
  12. package/dist/{dynamicFormsManager-HVbJKaF8.esm.js → dynamicFormsManager-DbJ2sx60.esm.js} +1 -1
  13. package/dist/{dynamicFormsStateMachine-BGYqEGcO.esm.js → dynamicFormsStateMachine-DdOXUivK.esm.js} +1 -1
  14. package/dist/ekyb.esm.js +3 -3
  15. package/dist/{ekybManager-D080qI3d.esm.js → ekybManager-DQb_i9cC.esm.js} +1 -1
  16. package/dist/{ekybStateMachine-4Ac_gP-0.esm.js → ekybStateMachine-CbK8tAgd.esm.js} +1 -1
  17. package/dist/electronic-signature.esm.js +1 -1
  18. package/dist/{electronicSignatureManager-CuZp9R8p.esm.js → electronicSignatureManager-BO07Vfiv.esm.js} +1 -1
  19. package/dist/extensibility.d.ts +4 -4
  20. package/dist/extensibility.esm.js +10 -10
  21. package/dist/{faceCaptureManagerFactory-waLeHRj_.esm.js → faceCaptureManagerFactory-DgAdH1KT.esm.js} +1 -1
  22. package/dist/{faceCaptureSetup-JxQbmDt_.esm.js → faceCaptureSetup-DdCkYn9V.esm.js} +1 -1
  23. package/dist/{feature-management-DkbzJPHi.esm.js → feature-management-B1auhoHt.esm.js} +30 -5
  24. package/dist/feature-management.esm.js +1 -1
  25. package/dist/flow.d.ts +19 -0
  26. package/dist/flow.esm.js +106 -23
  27. package/dist/{flowCompletionService-1HFgv9BU.esm.js → flowCompletionService-DJNQBnYX.esm.js} +1 -1
  28. package/dist/{flowServices-C2pUbFWe.esm.js → flowServices-B6Dn_OP0.esm.js} +58 -14
  29. package/dist/geolocation.esm.js +2 -2
  30. package/dist/{geolocationManager-CeDChUNS.esm.js → geolocationManager-B9Fpz7LU.esm.js} +1 -1
  31. package/dist/{geolocationStateMachine-C1fxKLJP.esm.js → geolocationStateMachine-iLoEsywE.esm.js} +1 -1
  32. package/dist/id-ocr.d.ts +1 -1
  33. package/dist/id-selfie-flow.esm.js +7 -7
  34. package/dist/id.esm.js +4 -4
  35. package/dist/{idCaptureDefaults-CbCpNaoY.esm.js → idCaptureDefaults-R53rpPfW.esm.js} +1 -1
  36. package/dist/{idCaptureManager-Cpd9uT8z.esm.js → idCaptureManager-CvDHZ2YE.esm.js} +3 -3
  37. package/dist/{idCaptureServices-X5poMwbu.esm.js → idCaptureServices-D_mcjCtz.esm.js} +3 -3
  38. package/dist/{idCaptureStateMachine-BZPAUJzI.esm.js → idCaptureStateMachine-CL_f4BrG.esm.js} +7 -7
  39. package/dist/{idOcrManager-CFlDwUvN.d.ts → idOcrManager-BF_cXZq8.d.ts} +1 -1
  40. package/dist/identity-reuse.d.ts +1 -1
  41. package/dist/{identityReuseManager-BXEBBI3N.d.ts → identityReuseManager-BFDI7iFK.d.ts} +1 -1
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.esm.js +1 -1
  44. package/dist/mandatory-consent.d.ts +1 -1
  45. package/dist/{mandatoryConsentManager-eFC-htLS.d.ts → mandatoryConsentManager-CSh8HjSF.d.ts} +1 -1
  46. package/dist/{onDeviceFaceResults-BgIPrRr2.esm.js → onDeviceFaceResults-BtD_Dij3.esm.js} +4 -4
  47. package/dist/personhood.esm.js +4 -4
  48. package/dist/qe-signature.esm.js +1 -1
  49. package/dist/{runChildModule-Bq791c2t.esm.js → runChildModule-DL_BwJt5.esm.js} +1 -1
  50. package/dist/{sdkVersion-Bc55H50S.esm.js → sdkVersion-CeUGP0Pv.esm.js} +1 -1
  51. package/dist/selfie.esm.js +5 -5
  52. package/dist/{selfieManager-I_h3YE2X.esm.js → selfieManager-CiVA7398.esm.js} +3 -3
  53. package/dist/{selfieStateMachine-DJwDxPAT.esm.js → selfieStateMachine-BCbLR8OJ.esm.js} +2 -2
  54. package/dist/{session-CoY3St8F.esm.js → session-B-b1IjuR.esm.js} +3 -3
  55. package/dist/session.d.ts +16 -1
  56. package/dist/session.esm.js +5 -5
  57. package/dist/{sessionInitializer-BEjB0UVH.esm.js → sessionInitializer-Gw37lpQ_.esm.js} +92 -33
  58. package/dist/{setup-DLn1eHU9.esm.js → setup-CxO2a0J_.esm.js} +6 -5
  59. package/dist/{setup-B9s2jaZK.d.ts → setup-D6yz9se2.d.ts} +14 -0
  60. package/dist/{trueSightService-VUN8WK4N.esm.js → trueSightService-BTf2KSpq.esm.js} +2 -2
  61. package/dist/video-selfie.esm.js +4 -4
  62. package/dist/{videoSelfieCameraWarmer-Dkey7P7h.esm.js → videoSelfieCameraWarmer-C0GHxpmK.esm.js} +3 -3
  63. package/dist/wasm.d.ts +1 -1
  64. package/dist/wasm.esm.js +1 -1
  65. package/dist/workflow.esm.js +14 -14
  66. package/package.json +3 -3
@@ -1,8 +1,8 @@
1
- import { E as updateFeatureManagementUser } from "./feature-management-DkbzJPHi.esm.js";
1
+ import { E as updateFeatureManagementUser } from "./feature-management-B1auhoHt.esm.js";
2
2
  import { c as setToken, r as getToken, t as api } from "./api-Bx3gKW_y.esm.js";
3
- import { _ as noteTokenActivated, d as fetchFeatureConfig, f as isFeatureEnabled, l as trueSightLog, m as noteEnvironment, p as resetFeatureConfigCache, s as startTrueSightCollection } from "./trueSightService-VUN8WK4N.esm.js";
3
+ import { _ as noteTokenActivated, d as fetchFeatureConfig, f as isFeatureEnabled, l as trueSightLog, m as noteEnvironment, p as resetFeatureConfigCache, s as startTrueSightCollection } from "./trueSightService-BTf2KSpq.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-Bc55H50S.esm.js";
5
+ import { t as SDK_VERSION } from "./sdkVersion-CeUGP0Pv.esm.js";
6
6
  import { t as endpoints } from "./endpoints-D3B9mUHh.esm.js";
7
7
  import { n as flushDeviceStatsQueue, r as resetDeviceStatsQueue } from "./stats-DkK-f8JT.esm.js";
8
8
  import { t as getParsedUserAgent } from "./getParsedUserAgent-B2iFDql1.esm.js";
@@ -1466,8 +1466,18 @@ var FingerprintProvider = class {
1466
1466
  constructor(ipLookup) {
1467
1467
  this.ipLookup = ipLookup;
1468
1468
  }
1469
+ prime() {
1470
+ this.startVisitorId();
1471
+ }
1472
+ startVisitorId() {
1473
+ if (!this.visitorIdPromise) {
1474
+ this.visitorIdPromise = getThumbmarkId();
1475
+ this.visitorIdPromise.catch(() => void 0);
1476
+ }
1477
+ return this.visitorIdPromise;
1478
+ }
1469
1479
  async getFingerprint(disableIpify = false) {
1470
- const visitorId = await getThumbmarkId();
1480
+ const visitorId = await this.startVisitorId();
1471
1481
  const [deviceInfo, ip] = await Promise.all([getDeviceFingerprintInfo(), disableIpify ? Promise.resolve("") : this.ipLookup.getIp()]);
1472
1482
  return {
1473
1483
  visitorId,
@@ -1680,6 +1690,25 @@ function preloadOptionalFlow() {
1680
1690
  let cachedFingerprintSuccess = false;
1681
1691
  let cachedFingerprintResult;
1682
1692
  let sessionInitPromise = null;
1693
+ let fingerprintSettled = null;
1694
+ function createFingerprintSettled() {
1695
+ let resolve = () => void 0;
1696
+ return {
1697
+ promise: new Promise((r) => {
1698
+ resolve = r;
1699
+ }),
1700
+ resolve
1701
+ };
1702
+ }
1703
+ /**
1704
+ * Resolves once the device-fingerprint step of the current session
1705
+ * activation has settled (submitted, failed, or skipped) — with the backend's
1706
+ * result when there is one. Resolves immediately when no activation is in
1707
+ * flight. Pairs with `initializeSession({ awaitFingerprint: false })`.
1708
+ */
1709
+ function whenSessionFingerprintSettled() {
1710
+ return fingerprintSettled?.promise ?? Promise.resolve(cachedFingerprintResult);
1711
+ }
1683
1712
  /**
1684
1713
  * Activates a session by setting the auth token on the HTTP client and
1685
1714
  * preloading session-scoped state.
@@ -1710,7 +1739,7 @@ let sessionInitPromise = null;
1710
1739
  * ```
1711
1740
  */
1712
1741
  async function initializeSession(options = {}) {
1713
- const { token, hostingApp, signal, preloadFlow } = options;
1742
+ const { token, hostingApp, signal, preloadFlow, awaitFingerprint = true } = options;
1714
1743
  let triLinkPromise = Promise.resolve();
1715
1744
  if (token !== void 0 && token !== getToken()) {
1716
1745
  setToken(token);
@@ -1721,6 +1750,7 @@ async function initializeSession(options = {}) {
1721
1750
  const flowPreloadPromise = getToken() && preloadFlow === true ? preloadOptionalFlow() : Promise.resolve();
1722
1751
  await triLinkPromise;
1723
1752
  if (sessionInitialized && cachedFeatures) {
1753
+ if (awaitFingerprint) await whenSessionFingerprintSettled();
1724
1754
  await flowPreloadPromise;
1725
1755
  return {
1726
1756
  features: cachedFeatures,
@@ -1731,9 +1761,19 @@ async function initializeSession(options = {}) {
1731
1761
  }
1732
1762
  if (sessionInitPromise) {
1733
1763
  const result = await sessionInitPromise;
1764
+ if (awaitFingerprint) await whenSessionFingerprintSettled();
1734
1765
  await flowPreloadPromise;
1735
- return result;
1766
+ return {
1767
+ ...result,
1768
+ fingerprintSuccess: cachedFingerprintSuccess,
1769
+ fingerprintResult: cachedFingerprintResult
1770
+ };
1736
1771
  }
1772
+ const settled = createFingerprintSettled();
1773
+ fingerprintSettled = settled;
1774
+ const fingerprintProvider = clientFingerprintEnabled ? new FingerprintProvider(new IpifyProvider()) : void 0;
1775
+ fingerprintProvider?.prime?.();
1776
+ let fingerprintPromise;
1737
1777
  sessionInitPromise = (async () => {
1738
1778
  let features;
1739
1779
  let serverDisableIpify = false;
@@ -1747,27 +1787,16 @@ async function initializeSession(options = {}) {
1747
1787
  startTrueSightCollection();
1748
1788
  }
1749
1789
  const disableIpify = resolveDisableIpify(serverDisableIpify);
1750
- await updateFeatureManagementUser({ customIDs: { hashed_onboarding_id: features.sessionIdentifier || void 0 } });
1751
- let fingerprintSuccess = false;
1752
- let fingerprintResult;
1753
- if (clientFingerprintEnabled) try {
1754
- const fingerprintProvider = new FingerprintProvider(new IpifyProvider());
1755
- const browserEnv = new BrowserEnvironmentProvider();
1756
- fingerprintResult = await submitDeviceFingerprint({
1757
- disableIpify,
1758
- hostingApp,
1759
- signal
1760
- }, {
1761
- fingerprintProvider,
1762
- browserEnv
1763
- });
1764
- fingerprintSuccess = true;
1765
- flushDeviceStatsQueue();
1766
- } catch (error) {
1767
- console.warn("Failed to submit device fingerprint:", error);
1768
- trueSightLog("warning", "session", "other", "device fingerprint submit failed");
1769
- }
1770
- else flushDeviceStatsQueue();
1790
+ const preloadedFlow = await flowPreloadPromise;
1791
+ await updateFeatureManagementUser({ customIDs: {
1792
+ hashed_onboarding_id: features.sessionIdentifier || void 0,
1793
+ flow_id: preloadedFlow?.flowId
1794
+ } });
1795
+ fingerprintPromise = submitSessionFingerprint(fingerprintProvider, {
1796
+ disableIpify,
1797
+ hostingApp,
1798
+ signal
1799
+ }, settled);
1771
1800
  try {
1772
1801
  const browserInfo = new BrowserInfoProvider().getBrowserInfo();
1773
1802
  const language = new BrowserEnvironmentProvider().getNavigatorProperty("language");
@@ -1791,25 +1820,54 @@ async function initializeSession(options = {}) {
1791
1820
  } catch (error) {
1792
1821
  console.warn("Failed to send browser info event:", error);
1793
1822
  }
1823
+ if (awaitFingerprint) await fingerprintPromise;
1794
1824
  sessionInitialized = true;
1795
1825
  cachedFeatures = features;
1796
1826
  cachedDisableIpify = disableIpify;
1797
- cachedFingerprintSuccess = fingerprintSuccess;
1798
- cachedFingerprintResult = fingerprintResult;
1799
1827
  await flowPreloadPromise;
1800
1828
  return {
1801
1829
  features,
1802
1830
  disableIpify,
1803
- fingerprintSuccess,
1804
- fingerprintResult
1831
+ fingerprintSuccess: cachedFingerprintSuccess,
1832
+ fingerprintResult: cachedFingerprintResult
1805
1833
  };
1806
1834
  })().finally(() => {
1807
1835
  sessionInitPromise = null;
1808
- getAnalyticsBatcher()?.start();
1836
+ if (!fingerprintPromise) settled.resolve(void 0);
1837
+ (fingerprintPromise ?? Promise.resolve()).finally(() => {
1838
+ if (fingerprintSettled === settled) getAnalyticsBatcher()?.start();
1839
+ });
1809
1840
  });
1810
1841
  return sessionInitPromise;
1811
1842
  }
1812
1843
  /**
1844
+ * Device-fingerprint step of session activation. Writes the cached result only
1845
+ * while it still belongs to the current activation (a token change resets
1846
+ * `fingerprintSettled`) and always settles the waiter.
1847
+ */
1848
+ async function submitSessionFingerprint(fingerprintProvider, options, settled) {
1849
+ const isCurrent = () => fingerprintSettled === settled;
1850
+ try {
1851
+ if (fingerprintProvider) try {
1852
+ const result = await submitDeviceFingerprint(options, {
1853
+ fingerprintProvider,
1854
+ browserEnv: new BrowserEnvironmentProvider()
1855
+ });
1856
+ if (isCurrent()) {
1857
+ cachedFingerprintResult = result;
1858
+ cachedFingerprintSuccess = true;
1859
+ flushDeviceStatsQueue();
1860
+ }
1861
+ } catch (error) {
1862
+ console.warn("Failed to submit device fingerprint:", error);
1863
+ trueSightLog("warning", "session", "other", "device fingerprint submit failed");
1864
+ }
1865
+ else if (isCurrent()) flushDeviceStatsQueue();
1866
+ } finally {
1867
+ settled.resolve(isCurrent() ? cachedFingerprintResult : void 0);
1868
+ }
1869
+ }
1870
+ /**
1813
1871
  * Gets the cached disableIpify flag.
1814
1872
  * Returns false if session hasn't been initialized.
1815
1873
  */
@@ -1839,9 +1897,10 @@ function resetSessionInit() {
1839
1897
  cachedFingerprintSuccess = false;
1840
1898
  cachedFingerprintResult = void 0;
1841
1899
  sessionInitPromise = null;
1900
+ fingerprintSettled = null;
1842
1901
  resetFeatureConfigCache();
1843
1902
  resetIpifyCache();
1844
1903
  resetDeviceStatsQueue();
1845
1904
  }
1846
1905
  //#endregion
1847
- export { getDeviceFingerprintInfo as _, resetSessionInit as a, getStandaloneFlowPolicy as c, resolveStandaloneFlowPolicy as d, setStandaloneFlowPolicy as f, getThumbmarkId as g, IpifyProvider as h, initializeSession as i, registerFlowPreloader as l, getFingerprint as m, getFingerprintEnabled as n, setClientFingerprintEnabled as o, isBrowserSimulation as p, getSessionFingerprintResult as r, setClientIpLookupEnabled as s, getDisableIpify as t, resetStandaloneFlowPolicy as u, BrowserEnvironmentProvider as v };
1906
+ export { getThumbmarkId as _, resetSessionInit as a, whenSessionFingerprintSettled as c, resetStandaloneFlowPolicy as d, resolveStandaloneFlowPolicy as f, IpifyProvider as g, getFingerprint as h, initializeSession as i, getStandaloneFlowPolicy as l, isBrowserSimulation as m, getFingerprintEnabled as n, setClientFingerprintEnabled as o, setStandaloneFlowPolicy as p, getSessionFingerprintResult as r, setClientIpLookupEnabled as s, getDisableIpify as t, registerFlowPreloader as u, getDeviceFingerprintInfo as v, BrowserEnvironmentProvider as y };
@@ -1,16 +1,16 @@
1
1
  import { d as deriveSiblingJsPath, f as WASM_MODEL_FILES } from "./wasmWebClient-BJCaFeBL.esm.js";
2
2
  import { c as warmupWasm, r as WasmUtilProvider, s as setWasmOnDeviceMode, t as resolveLocalStorage } from "./safeStorage-0bZuUtSP.esm.js";
3
3
  import { t as BrowserTimerProvider } from "./BrowserTimerProvider-BXhgNxLt.esm.js";
4
- 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-DkbzJPHi.esm.js";
4
+ 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-B1auhoHt.esm.js";
5
5
  import { t as getTimestamp } from "./IBrowserEnvironmentCapability-DEaRRk-R.esm.js";
6
6
  import { a as resetApi, i as isApiConfigured, n as getApi, r as getToken, s as setHttpRequestObserver, t as api } from "./api-Bx3gKW_y.esm.js";
7
- import { S as upgradeToWasmHttpClient$1, b as installFreshHttpClient, g as noteTestingSignals, l as trueSightLog, n as initializeTrueSightDiagnostics, o as resetTrueSight, t as finalizeTrueSight, u as categoryForEndpoint, x as resetHttpClientState, y as getStoredHttpConfig } from "./trueSightService-VUN8WK4N.esm.js";
7
+ import { S as upgradeToWasmHttpClient$1, b as installFreshHttpClient, g as noteTestingSignals, l as trueSightLog, n as initializeTrueSightDiagnostics, o as resetTrueSight, t as finalizeTrueSight, u as categoryForEndpoint, x as resetHttpClientState, y as getStoredHttpConfig } from "./trueSightService-BTf2KSpq.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, d as resolveStandaloneFlowPolicy, f as setStandaloneFlowPolicy, i as initializeSession, l as registerFlowPreloader, o as setClientFingerprintEnabled, s as setClientIpLookupEnabled, u as resetStandaloneFlowPolicy, v as BrowserEnvironmentProvider } from "./sessionInitializer-BEjB0UVH.esm.js";
9
+ import { a as resetSessionInit, d as resetStandaloneFlowPolicy, f as resolveStandaloneFlowPolicy, i as initializeSession, o as setClientFingerprintEnabled, p as setStandaloneFlowPolicy, s as setClientIpLookupEnabled, u as registerFlowPreloader, y as BrowserEnvironmentProvider } from "./sessionInitializer-Gw37lpQ_.esm.js";
10
10
  import { t as endpoints } from "./endpoints-D3B9mUHh.esm.js";
11
11
  import { r as resetDeviceStatsQueue, t as addDeviceStats } from "./stats-DkK-f8JT.esm.js";
12
12
  import { a as resetTRI, n as initializeTRI, o as resetTRIProviderInstance } from "./tri-4RsGrIt6.esm.js";
13
- import { n as preloadDashboardFlow, r as resetDashboardFlowCache } from "./flowServices-C2pUbFWe.esm.js";
13
+ import { i as resetDashboardFlowCache, r as preloadDashboardFlow } from "./flowServices-B6Dn_OP0.esm.js";
14
14
  //#region ../infra/src/wasm/wasmDefaults.ts
15
15
  const WASM_CDN_BASE_URL = "https://cdn.incodesmile.com/ml-wasm-kit-release";
16
16
  /** The WASM version bundled and tested with this SDK release. */
@@ -752,7 +752,7 @@ async function setup(options) {
752
752
  if (!getIsFeatureManagementLocked()) if (options.featureManagement === false) optOutFeatureManagement();
753
753
  else {
754
754
  const featureManagementSetupOptions = typeof options.featureManagement === "object" ? options.featureManagement : {};
755
- await initializeFeatureManagement({
755
+ const featureManagementReady = initializeFeatureManagement({
756
756
  environment: getEnvironment(),
757
757
  clientExperimentId: featureManagementSetupOptions.clientExperimentId,
758
758
  disableStableId: featureManagementSetupOptions.disableStableId,
@@ -761,6 +761,7 @@ async function setup(options) {
761
761
  appVersion: featureManagementSetupOptions.appVersion,
762
762
  redactedUserInfo: featureManagementSetupOptions.redactedUserInfo
763
763
  });
764
+ if (featureManagementSetupOptions.awaitInitialization === true) await featureManagementReady;
764
765
  }
765
766
  else if (options.featureManagement !== void 0) console.error("[FeatureManagement] Feature management is locked after the first setup() call and cannot be changed (re-enabled, disabled, or reconfigured). Ignoring this change. Call reset() before changing it.");
766
767
  if (options.tri) await initializeTRI(options.tri, { sessionToken: options.token });
@@ -309,6 +309,20 @@ type SetupOptions = {
309
309
  * The boolean shorthand (`featureManagement: true`) is equivalent to `{}`.
310
310
  */
311
311
  type FeatureManagementSetupOptions = {
312
+ /**
313
+ * Whether `setup()` waits for feature management to finish loading gate and
314
+ * experiment values before it resolves. Default `false`: `setup()` resolves
315
+ * as soon as the HTTP client is ready and the values load in the background
316
+ * (typically 150–250 ms sooner, which a host spends on `createSession` /
317
+ * mounting `<incode-flow>` instead). Reads made before loading settles
318
+ * return their documented defaults (`status: 'uninitialized'`); await
319
+ * `getIsFeatureManagementInitialized()` from
320
+ * `@incodetech/core/feature-management` when you need a value that early,
321
+ * or set `true` to restore the blocking behaviour. `<incode-flow>` /
322
+ * `<incode-workflow>` and the SDK's own modules are unaffected: the identity
323
+ * update they depend on waits for readiness itself.
324
+ */
325
+ awaitInitialization?: boolean;
312
326
  /**
313
327
  * Integrator-scoped randomization/targeting unit, registered as
314
328
  * the `client_experiment_id` custom ID during initialization.
@@ -2,7 +2,7 @@ import { a as setWebApiHttpTransport, i as initializeWasmWebClient, o as setupWa
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 { S as subscribeEvent, n as eventModuleNames } from "./events-ijlbX_Wx.esm.js";
5
- import { t as SDK_VERSION } from "./sdkVersion-Bc55H50S.esm.js";
5
+ import { t as SDK_VERSION } from "./sdkVersion-CeUGP0Pv.esm.js";
6
6
  import { t as endpoints } from "./endpoints-D3B9mUHh.esm.js";
7
7
  //#region ../infra/src/http/createApi.ts
8
8
  var FetchHttpError = class extends Error {
@@ -1320,7 +1320,7 @@ let cryptoProviderPromise = null;
1320
1320
  * the service's prewarm).
1321
1321
  */
1322
1322
  function loadDiagnosticsCryptoProvider() {
1323
- cryptoProviderPromise ??= import("./BrowserDiagnosticsCryptoProvider-BqvOagjI.esm.js").then((module) => new module.BrowserDiagnosticsCryptoProvider());
1323
+ cryptoProviderPromise ??= import("./BrowserDiagnosticsCryptoProvider-BCbOmuXk.esm.js").then((module) => new module.BrowserDiagnosticsCryptoProvider());
1324
1324
  return cryptoProviderPromise;
1325
1325
  }
1326
1326
  /**
@@ -1,16 +1,16 @@
1
- import { t as ensureWasmPipelines } from "./setup-DLn1eHU9.esm.js";
1
+ import { t as ensureWasmPipelines } from "./setup-CxO2a0J_.esm.js";
2
2
  import { r as WasmUtilProvider } from "./safeStorage-0bZuUtSP.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-D3B9mUHh.esm.js";
6
- import { d as videoSelfieWasmPipelines, l as facingModeForStep, u as resolveVideoSelfieSteps } from "./flowServices-C2pUbFWe.esm.js";
6
+ import { d as resolveVideoSelfieSteps, f as videoSelfieWasmPipelines, u as facingModeForStep } from "./flowServices-B6Dn_OP0.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
10
  import { t as MultipartRecordingService } from "./multipartRecordingService-B3C_zlev.esm.js";
11
- import { i as CameraCompositor } from "./idCaptureDefaults-CbCpNaoY.esm.js";
11
+ import { i as CameraCompositor } from "./idCaptureDefaults-R53rpPfW.esm.js";
12
12
  import { t as VIDEO_SELFIE_VALIDATION_ATTEMPTS_EXHAUSTED_CODE } from "./advanceableErrors-CpF2cBy6.esm.js";
13
- import { a as isConnectionError, n as defaultAcquireCamera, r as createDefaultStepDetector, t as createVideoSelfieCameraWarmer } from "./videoSelfieCameraWarmer-Dkey7P7h.esm.js";
13
+ import { a as isConnectionError, n as defaultAcquireCamera, r as createDefaultStepDetector, t as createVideoSelfieCameraWarmer } from "./videoSelfieCameraWarmer-C0GHxpmK.esm.js";
14
14
  import { t as videoSelfieFlowModuleMachine } from "./videoSelfieFlowModuleMachine-BUe2uACW.esm.js";
15
15
  //#region src/modules/video-selfie/videoSelfieWasm.ts
16
16
  function warmupVideoSelfieWasm(config, steps = resolveVideoSelfieSteps(config)) {
@@ -1,17 +1,17 @@
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-D3B9mUHh.esm.js";
4
- import { l as facingModeForStep, u as resolveVideoSelfieSteps } from "./flowServices-C2pUbFWe.esm.js";
4
+ import { d as resolveVideoSelfieSteps, u as facingModeForStep } from "./flowServices-B6Dn_OP0.esm.js";
5
5
  import { i as requestCameraWithFallback, r as requestCameraAccess } from "./camera-_2sXMXiF.esm.js";
6
6
  import { t as checkPermission } from "./permissionServices-J5S1dEIf.esm.js";
7
- import { a as encryptSelfieImage, l as startDetection, p as FaceDetectionProvider } from "./onDeviceFaceResults-BgIPrRr2.esm.js";
7
+ import { a as encryptSelfieImage, l as startDetection, p as FaceDetectionProvider } from "./onDeviceFaceResults-BtD_Dij3.esm.js";
8
8
  import { a as StreamCanvasProcessingSession } from "./recordingsRepository-CCWy13M-.esm.js";
9
9
  import { n as getBackCameraStream } from "./backCameraStream-DE_5qY04.esm.js";
10
10
  import { n as getWindowDimensions } from "./getDeviceClass-CeBiEayS.esm.js";
11
11
  import { t as FACE_ERROR_CODES } from "./types-BN5RPPIZ.esm.js";
12
12
  import { a as uploadSelfie, r as processFace, t as getFaceErrorCodeFromUnknown } from "./selfieErrorUtils-C6gC06J7.esm.js";
13
13
  import { t as StreamCanvasCapture } from "./StreamCanvasCapture-D2XcXCZ4.esm.js";
14
- import { n as DEFAULT_ID_CAPTURE_THRESHOLDS, r as IdCaptureProvider, t as DEFAULT_ID_CAPTURE_GEOMETRY } from "./idCaptureDefaults-CbCpNaoY.esm.js";
14
+ import { n as DEFAULT_ID_CAPTURE_THRESHOLDS, r as IdCaptureProvider, t as DEFAULT_ID_CAPTURE_GEOMETRY } from "./idCaptureDefaults-R53rpPfW.esm.js";
15
15
  //#region src/modules/video-selfie/videoSelfieCompareService.ts
16
16
  async function postVideoSelfieCompare(endpoint, base64Image) {
17
17
  return (await api.post(endpoint, { base64Image })).data;
package/dist/wasm.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as WASM_MODEL_FILES, c as WasmPipeline, l as WasmSource, o as WasmGlueLoader, r as warmupWasm, s as WasmModelName, t as WarmupConfig } from "./warmup-CXHBgvFC.js";
2
- import { c as setWasmConfig, i as initializeWasmUtil, n as WasmConfig, r as ensureWasmPipelines, s as resolveWasmConfigForPipelines, u as upgradeToWasmHttpClient } from "./setup-B9s2jaZK.js";
2
+ import { c as setWasmConfig, i as initializeWasmUtil, n as WasmConfig, r as ensureWasmPipelines, s as resolveWasmConfigForPipelines, u as upgradeToWasmHttpClient } from "./setup-D6yz9se2.js";
3
3
  //#region ../infra/src/wasm/wasmDefaults.d.ts
4
4
  /** The WASM version bundled and tested with this SDK release. */
5
5
  declare const DEFAULT_WASM_VERSION = "v2.14.07-post7-post3";
package/dist/wasm.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { f as WASM_MODEL_FILES, h as WASM_PIPELINE_MODEL_NAMES, p as WASM_PIPELINE_LAZY_MODEL_NAMES } from "./wasmWebClient-BJCaFeBL.esm.js";
2
- import { a as resolveWasmConfigForPipelines, c as upgradeToWasmHttpClient, d as buildDefaultWasmConfig, f as buildWasmConfigFromBasePath, m as resolveWasmConfig, n as initializeWasmUtil, o as setWasmConfig, t as ensureWasmPipelines, u as DEFAULT_WASM_VERSION } from "./setup-DLn1eHU9.esm.js";
2
+ import { a as resolveWasmConfigForPipelines, c as upgradeToWasmHttpClient, d as buildDefaultWasmConfig, f as buildWasmConfigFromBasePath, m as resolveWasmConfig, n as initializeWasmUtil, o as setWasmConfig, t as ensureWasmPipelines, u as DEFAULT_WASM_VERSION } from "./setup-CxO2a0J_.esm.js";
3
3
  import { c as warmupWasm } from "./safeStorage-0bZuUtSP.esm.js";
4
4
  //#region src/defineWasm.ts
5
5
  function requiredModels(pipelines) {
@@ -1,29 +1,29 @@
1
- import { E as updateFeatureManagementUser } from "./feature-management-DkbzJPHi.esm.js";
1
+ import { E as updateFeatureManagementUser } from "./feature-management-B1auhoHt.esm.js";
2
2
  import { t as api } from "./api-Bx3gKW_y.esm.js";
3
- import { l as trueSightLog } from "./trueSightService-VUN8WK4N.esm.js";
3
+ import { l as trueSightLog } from "./trueSightService-BTf2KSpq.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-BEjB0UVH.esm.js";
5
+ import { i as initializeSession, r as getSessionFingerprintResult } from "./sessionInitializer-Gw37lpQ_.esm.js";
6
6
  import { t as endpoints } from "./endpoints-D3B9mUHh.esm.js";
7
- import { i as toIncodeApiError } from "./apiError-CE5YD5T0.esm.js";
8
- import { g as toEkybConfig } from "./flowServices-C2pUbFWe.esm.js";
7
+ import { i as toIncodeApiError } from "./apiError-CaZfzHR5.esm.js";
8
+ import { _ as toEkybConfig } from "./flowServices-B6Dn_OP0.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-CuZp9R8p.esm.js";
12
+ import { r as electronicSignatureMachine } from "./electronicSignatureManager-BO07Vfiv.esm.js";
13
13
  import "./ae-signature.esm.js";
14
14
  import { t as antifraudMachine } from "./antifraudStateMachine-BHxehiJZ.esm.js";
15
- import { t as authenticationMachine } from "./authenticationStateMachine-BKMxS3yH.esm.js";
15
+ import { t as authenticationMachine } from "./authenticationStateMachine-ChM9tVwT.esm.js";
16
16
  import { t as certificateIssuanceMachine } from "./certificateIssuanceStateMachine-BBD5h8c4.esm.js";
17
17
  import { t as consentMachine } from "./consentStateMachine-DbUmqWgV.esm.js";
18
18
  import { t as curpValidationMachine } from "./curpValidationStateMachine-DvUPC_8S.esm.js";
19
19
  import { t as customWatchlistMachine } from "./customWatchlistStateMachine-qZVgkKgP.esm.js";
20
20
  import { t as documentCaptureMachine } from "./documentCaptureStateMachine-D_9dw5b1.esm.js";
21
- import { t as dynamicFormsMachine } from "./dynamicFormsStateMachine-BGYqEGcO.esm.js";
22
- import { t as ekybMachine } from "./ekybStateMachine-4Ac_gP-0.esm.js";
21
+ import { t as dynamicFormsMachine } from "./dynamicFormsStateMachine-DdOXUivK.esm.js";
22
+ import { t as ekybMachine } from "./ekybStateMachine-CbK8tAgd.esm.js";
23
23
  import { t as ekycMachine } from "./ekycStateMachine-CmdW2gVm.esm.js";
24
24
  import { t as emailMachine } from "./emailStateMachine-CyPFZ7dW.esm.js";
25
- import { t as selfieMachine } from "./selfieStateMachine-DJwDxPAT.esm.js";
26
- import { t as idCaptureMachine } from "./idCaptureStateMachine-BZPAUJzI.esm.js";
25
+ import { t as selfieMachine } from "./selfieStateMachine-BCbLR8OJ.esm.js";
26
+ import { t as idCaptureMachine } from "./idCaptureStateMachine-CL_f4BrG.esm.js";
27
27
  import { t as phoneMachine } from "./phoneStateMachine-jl8LJKCo.esm.js";
28
28
  import { t as watchlistMachine } from "./watchlistStateMachine-DvOby3a-.esm.js";
29
29
  import { t as watchlistForBusinessMachine } from "./watchlistForBusinessStateMachine-DEzgjz7C.esm.js";
@@ -32,12 +32,12 @@ import { t as mandatoryConsentMachine } from "./mandatoryConsentStateMachine-DSD
32
32
  import { t as idOcrStateMachine } from "./idOcrStateMachine-33UvRAHE.esm.js";
33
33
  import { n as redirectToMobileMachine } from "./redirectToMobileStateMachine-v3otpT-L.esm.js";
34
34
  import { t as signatureMachine } from "./signatureStateMachine-BHPwkJZS.esm.js";
35
- import { t as geolocationMachine } from "./geolocationStateMachine-C1fxKLJP.esm.js";
35
+ import { t as geolocationMachine } from "./geolocationStateMachine-iLoEsywE.esm.js";
36
36
  import { t as governmentValidationMachine } from "./governmentValidationStateMachine-D1ZnEqdd.esm.js";
37
37
  import { t as idVerificationMachine } from "./idVerificationStateMachine-BPGrQZEm.esm.js";
38
38
  import { t as faceMatchMachine } from "./faceMatchStateMachine-BUc5FXYy.esm.js";
39
- import { n as getFinishStatus, r as getTotalScoreStatus } from "./flowCompletionService-1HFgv9BU.esm.js";
40
- import { n as attachFlowEventEmitter, t as runChildModule } from "./runChildModule-Bq791c2t.esm.js";
39
+ import { n as getFinishStatus, r as getTotalScoreStatus } from "./flowCompletionService-DJNQBnYX.esm.js";
40
+ import { n as attachFlowEventEmitter, t as runChildModule } from "./runChildModule-DL_BwJt5.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": "0.0.0-dev-20260909-14ef44cf",
3
+ "version": "0.0.0-dev-20260910-30fb659a",
4
4
  "license": "ISC",
5
5
  "repository": {
6
6
  "type": "git",
@@ -276,8 +276,8 @@
276
276
  "tsdown": "^0.22.8",
277
277
  "typescript": "^5.9.3",
278
278
  "vitest": "4.1.10",
279
- "@incodetech/infra": "1.3.0",
280
- "@incodetech/config": "1.0.2"
279
+ "@incodetech/config": "1.0.2",
280
+ "@incodetech/infra": "1.3.0"
281
281
  },
282
282
  "scripts": {
283
283
  "build": "tsdown -c tsdown.config.ts",