@dynamic-labs-sdk/client 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/{InvalidParamError-Dyk0GfyN.esm.js → InvalidParamError-Cty-xWsw.esm.js} +20 -13
  2. package/dist/InvalidParamError-Cty-xWsw.esm.js.map +1 -0
  3. package/dist/{InvalidParamError-DzSZbHE5.cjs.js → InvalidParamError-DO9X0rAe.cjs.js} +25 -12
  4. package/dist/InvalidParamError-DO9X0rAe.cjs.js.map +1 -0
  5. package/dist/{NotWaasWalletAccountError-DFTloI8C.cjs.js → NotWaasWalletAccountError-Bj3-tWL3.cjs.js} +3 -3
  6. package/dist/{NotWaasWalletAccountError-DFTloI8C.cjs.js.map → NotWaasWalletAccountError-Bj3-tWL3.cjs.js.map} +1 -1
  7. package/dist/{NotWaasWalletAccountError-kNpOqccC.esm.js → NotWaasWalletAccountError-x0HlFCot.esm.js} +3 -3
  8. package/dist/{NotWaasWalletAccountError-kNpOqccC.esm.js.map → NotWaasWalletAccountError-x0HlFCot.esm.js.map} +1 -1
  9. package/dist/client/core/createCore/getInitialState.d.ts.map +1 -1
  10. package/dist/core.cjs.js +6 -5
  11. package/dist/core.cjs.js.map +1 -1
  12. package/dist/core.esm.js +6 -6
  13. package/dist/core.esm.js.map +1 -1
  14. package/dist/exports/core.d.ts +2 -0
  15. package/dist/exports/core.d.ts.map +1 -1
  16. package/dist/exports/index.d.ts +1 -1
  17. package/dist/exports/index.d.ts.map +1 -1
  18. package/dist/{getNetworkProviderFromNetworkId-BD1iGcEg.cjs.js → getNetworkProviderFromNetworkId-B2NiAPL7.cjs.js} +3 -3
  19. package/dist/{getNetworkProviderFromNetworkId-BD1iGcEg.cjs.js.map → getNetworkProviderFromNetworkId-B2NiAPL7.cjs.js.map} +1 -1
  20. package/dist/{getNetworkProviderFromNetworkId-ySZUpmOr.esm.js → getNetworkProviderFromNetworkId-DKM-ec3L.esm.js} +3 -3
  21. package/dist/{getNetworkProviderFromNetworkId-ySZUpmOr.esm.js.map → getNetworkProviderFromNetworkId-DKM-ec3L.esm.js.map} +1 -1
  22. package/dist/{getSignedSessionId-s45HpP3W.cjs.js → getSignedSessionId-BQb75faX.cjs.js} +3 -3
  23. package/dist/{getSignedSessionId-s45HpP3W.cjs.js.map → getSignedSessionId-BQb75faX.cjs.js.map} +1 -1
  24. package/dist/{getSignedSessionId-BxhxGkA4.esm.js → getSignedSessionId-DczIbYxd.esm.js} +3 -3
  25. package/dist/{getSignedSessionId-BxhxGkA4.esm.js.map → getSignedSessionId-DczIbYxd.esm.js.map} +1 -1
  26. package/dist/{getVerifiedCredentialForWalletAccount-BxrgouFz.cjs.js → getVerifiedCredentialForWalletAccount-CTL5-19B.cjs.js} +2 -2
  27. package/dist/{getVerifiedCredentialForWalletAccount-BxrgouFz.cjs.js.map → getVerifiedCredentialForWalletAccount-CTL5-19B.cjs.js.map} +1 -1
  28. package/dist/{getVerifiedCredentialForWalletAccount-Ch8h_J_W.esm.js → getVerifiedCredentialForWalletAccount-CpUomVzT.esm.js} +2 -2
  29. package/dist/{getVerifiedCredentialForWalletAccount-Ch8h_J_W.esm.js.map → getVerifiedCredentialForWalletAccount-CpUomVzT.esm.js.map} +1 -1
  30. package/dist/index.cjs.js +60 -26
  31. package/dist/index.cjs.js.map +1 -1
  32. package/dist/index.esm.js +60 -26
  33. package/dist/index.esm.js.map +1 -1
  34. package/dist/{isMfaRequiredForAction-DaJSsq8Z.cjs.js → isMfaRequiredForAction-DyrKyoVd.cjs.js} +2 -2
  35. package/dist/{isMfaRequiredForAction-DaJSsq8Z.cjs.js.map → isMfaRequiredForAction-DyrKyoVd.cjs.js.map} +1 -1
  36. package/dist/{isMfaRequiredForAction-D1sFhYH1.esm.js → isMfaRequiredForAction-Hi4dCidj.esm.js} +2 -2
  37. package/dist/{isMfaRequiredForAction-D1sFhYH1.esm.js.map → isMfaRequiredForAction-Hi4dCidj.esm.js.map} +1 -1
  38. package/dist/modules/checkout/attachCheckoutTransactionSource/attachCheckoutTransactionSource.d.ts +3 -1
  39. package/dist/modules/checkout/attachCheckoutTransactionSource/attachCheckoutTransactionSource.d.ts.map +1 -1
  40. package/dist/modules/checkout/createCheckoutTransaction/createCheckoutTransaction.d.ts +1 -1
  41. package/dist/modules/checkout/createCheckoutTransaction/createCheckoutTransaction.d.ts.map +1 -1
  42. package/dist/modules/checkout/getCheckoutTransactionQuote/getCheckoutTransactionQuote.d.ts +1 -2
  43. package/dist/modules/checkout/getCheckoutTransactionQuote/getCheckoutTransactionQuote.d.ts.map +1 -1
  44. package/dist/modules/checkout/getCheckouts/getCheckouts.d.ts +4 -0
  45. package/dist/modules/checkout/getCheckouts/getCheckouts.d.ts.map +1 -0
  46. package/dist/modules/checkout/getCheckouts/index.d.ts +2 -0
  47. package/dist/modules/checkout/getCheckouts/index.d.ts.map +1 -0
  48. package/dist/modules/deviceRegistration/revokeRegisteredDevice/revokeRegisteredDevice.d.ts.map +1 -1
  49. package/dist/modules/storageSync/hydrateStateWithStorage/hydrateStateWithStorage.d.ts.map +1 -1
  50. package/dist/modules/storageSync/schema.d.ts +2 -0
  51. package/dist/modules/storageSync/schema.d.ts.map +1 -1
  52. package/dist/modules/storageSync/syncStateWithStorage/syncStateWithStorage.d.ts.map +1 -1
  53. package/dist/modules/waas/createWaasProvider/createWaasProvider.d.ts.map +1 -1
  54. package/dist/modules/waas/waas.types.d.ts +1 -0
  55. package/dist/modules/waas/waas.types.d.ts.map +1 -1
  56. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  57. package/dist/utils/getNonce/constants.d.ts +1 -0
  58. package/dist/utils/getNonce/constants.d.ts.map +1 -1
  59. package/dist/utils/getNonce/fetchAndStoreNonces/fetchAndStoreNonces.d.ts.map +1 -1
  60. package/dist/utils/getNonce/prefetchNoncesIfNeeded/prefetchNoncesIfNeeded.d.ts +3 -0
  61. package/dist/utils/getNonce/prefetchNoncesIfNeeded/prefetchNoncesIfNeeded.d.ts.map +1 -0
  62. package/dist/utils/getNonce/state.d.ts +4 -0
  63. package/dist/utils/getNonce/state.d.ts.map +1 -1
  64. package/dist/utils/parseUserAgent/index.d.ts +2 -0
  65. package/dist/utils/parseUserAgent/index.d.ts.map +1 -0
  66. package/dist/utils/parseUserAgent/parseUserAgent.d.ts +10 -0
  67. package/dist/utils/parseUserAgent/parseUserAgent.d.ts.map +1 -0
  68. package/dist/utils/randomString/randomString.d.ts +6 -1
  69. package/dist/utils/randomString/randomString.d.ts.map +1 -1
  70. package/dist/waas.cjs.js +3 -3
  71. package/dist/waas.esm.js +3 -3
  72. package/dist/waasCore.cjs.js +5 -4
  73. package/dist/waasCore.cjs.js.map +1 -1
  74. package/dist/waasCore.esm.js +5 -4
  75. package/dist/waasCore.esm.js.map +1 -1
  76. package/package.json +4 -3
  77. package/dist/InvalidParamError-Dyk0GfyN.esm.js.map +0 -1
  78. package/dist/InvalidParamError-DzSZbHE5.cjs.js.map +0 -1
  79. package/dist/utils/getDeviceNameFromUserAgent/getDeviceNameFromUserAgent.d.ts +0 -6
  80. package/dist/utils/getDeviceNameFromUserAgent/getDeviceNameFromUserAgent.d.ts.map +0 -1
  81. package/dist/utils/getDeviceNameFromUserAgent/index.d.ts +0 -2
  82. package/dist/utils/getDeviceNameFromUserAgent/index.d.ts.map +0 -1
package/dist/index.esm.js CHANGED
@@ -1,8 +1,8 @@
1
- import { A as randomString, C as InvalidExternalAuthError, D as isCookieEnabled, I as BaseError, L as getCore, N as getDefaultClient, O as assertDefined, P as setDefaultClient, R as name, S as LinkCredentialError, a as DYNAMIC_ICONIC_SPRITE_URL, b as MfaRateLimitedError, c as CHAINS_INFO_MAP, d as UnauthorizedError, g as createStorageKeySchema, j as CLIENT_SDK_NAME, k as ValueMustBeDefinedError, l as fetchAndStoreNonces, o as SDK_API_CORE_VERSION, s as getChainFromVerifiedCredentialChain, t as InvalidParamError, u as createApiClient, v as getNonce, w as APIError, x as MfaInvalidOtpError, y as SandboxMaximumThresholdReachedError, z as version } from "./InvalidParamError-Dyk0GfyN.esm.js";
2
- import { A as isEqualShallow, C as isServerSideRendering, D as REFRESH_USER_STATE_FROM_COOKIE_TRACKER_KEY, E as INITIALIZE_STORAGE_SYNC_TRACKER_KEY, N as createLocalStorageAdapter, O as generateSessionKeys, S as createDeferredPromise, T as GENERATE_SESSION_KEYS_TRACKER_KEY, _ as NoNetworkProvidersError, a as updateWalletProviderKeysForVerifiedCredentials, c as createSignInMessageStatement, d as createVisit, f as hasExtension, g as WalletAlreadyLinkedToAnotherUserError, h as isCaptchaRequired, i as getNetworksData, j as createStorage, k as subscribeWithSelector, l as formatSignInMessage, m as consumeCaptchaToken, o as verifyMessageSignatureOwnership, p as setCaptchaToken, s as removeUnverifiedWalletAccount, t as getNetworkProviderFromNetworkId, u as setUnverifiedWalletAccounts, v as createLogger, w as FETCH_PROJECT_SETTINGS_TRACKER_KEY, x as CannotTrackError, y as createCrossTabBroadcast } from "./getNetworkProviderFromNetworkId-ySZUpmOr.esm.js";
3
- import { D as onceEvent, E as onEvent, O as setCookie, S as splitWalletProviderKey, T as offEvent, _ as getWalletAccounts, b as formatWalletAccountId, c as getWalletProviders, d as DYNAMIC_AUTH_COOKIE_NAME, f as getWalletProviderFromWalletAccount, g as NoWalletProviderFoundError, i as restoreUserSharesForAllWalletAccounts, l as checkAndRaiseWalletAccountsChangedEvent, n as getWalletProviderByKey, r as updateAuthFromVerifyResponse, t as getVerifiedCredentialForWalletAccount, u as emitWalletAccountsChangedEvent, w as emitEvent, x as normalizeAddress } from "./getVerifiedCredentialForWalletAccount-Ch8h_J_W.esm.js";
4
- import { n as refreshAuth, t as NotWaasWalletAccountError } from "./NotWaasWalletAccountError-kNpOqccC.esm.js";
5
- import { n as getMfaMethods, r as consumeMfaToken, t as isMfaRequiredForAction } from "./isMfaRequiredForAction-D1sFhYH1.esm.js";
1
+ import { A as randomString, B as version, C as InvalidExternalAuthError, D as isCookieEnabled, F as setDefaultClient, L as BaseError, N as NONCE_POOL_SIZE, O as assertDefined, P as getDefaultClient, R as getCore, S as LinkCredentialError, a as DYNAMIC_ICONIC_SPRITE_URL, b as MfaRateLimitedError, c as CHAINS_INFO_MAP, d as UnauthorizedError, g as createStorageKeySchema, j as CLIENT_SDK_NAME, k as ValueMustBeDefinedError, l as fetchAndStoreNonces, o as SDK_API_CORE_VERSION, s as getChainFromVerifiedCredentialChain, t as InvalidParamError, u as createApiClient, v as getNonce, w as APIError, x as MfaInvalidOtpError, y as SandboxMaximumThresholdReachedError, z as name } from "./InvalidParamError-Cty-xWsw.esm.js";
2
+ import { A as isEqualShallow, C as isServerSideRendering, D as REFRESH_USER_STATE_FROM_COOKIE_TRACKER_KEY, E as INITIALIZE_STORAGE_SYNC_TRACKER_KEY, N as createLocalStorageAdapter, O as generateSessionKeys, S as createDeferredPromise, T as GENERATE_SESSION_KEYS_TRACKER_KEY, _ as NoNetworkProvidersError, a as updateWalletProviderKeysForVerifiedCredentials, c as createSignInMessageStatement, d as createVisit, f as hasExtension, g as WalletAlreadyLinkedToAnotherUserError, h as isCaptchaRequired, i as getNetworksData, j as createStorage, k as subscribeWithSelector, l as formatSignInMessage, m as consumeCaptchaToken, o as verifyMessageSignatureOwnership, p as setCaptchaToken, s as removeUnverifiedWalletAccount, t as getNetworkProviderFromNetworkId, u as setUnverifiedWalletAccounts, v as createLogger, w as FETCH_PROJECT_SETTINGS_TRACKER_KEY, x as CannotTrackError, y as createCrossTabBroadcast } from "./getNetworkProviderFromNetworkId-DKM-ec3L.esm.js";
3
+ import { D as onceEvent, E as onEvent, O as setCookie, S as splitWalletProviderKey, T as offEvent, _ as getWalletAccounts, b as formatWalletAccountId, c as getWalletProviders, d as DYNAMIC_AUTH_COOKIE_NAME, f as getWalletProviderFromWalletAccount, g as NoWalletProviderFoundError, i as restoreUserSharesForAllWalletAccounts, l as checkAndRaiseWalletAccountsChangedEvent, n as getWalletProviderByKey, r as updateAuthFromVerifyResponse, t as getVerifiedCredentialForWalletAccount, u as emitWalletAccountsChangedEvent, w as emitEvent, x as normalizeAddress } from "./getVerifiedCredentialForWalletAccount-CpUomVzT.esm.js";
4
+ import { n as refreshAuth, t as NotWaasWalletAccountError } from "./NotWaasWalletAccountError-x0HlFCot.esm.js";
5
+ import { n as getMfaMethods, r as consumeMfaToken, t as isMfaRequiredForAction } from "./isMfaRequiredForAction-Hi4dCidj.esm.js";
6
6
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
7
7
  import { AuthModeEnum, ExchangeKeyEnum, JwtVerifiedCredentialFormatEnum, MFAAction, MfaBackupCodeAcknowledgement, ProviderEnum, WaasBackupOptionsEnum, WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
8
8
  import * as z from "zod/mini";
@@ -25,6 +25,13 @@ const stateChangeEvents = {
25
25
  user: "userChanged"
26
26
  };
27
27
 
28
+ //#endregion
29
+ //#region src/utils/getNonce/prefetchNoncesIfNeeded/prefetchNoncesIfNeeded.ts
30
+ const prefetchNoncesIfNeeded = async (client) => {
31
+ if (getCore(client).state.get().prefetchedNonces.length >= NONCE_POOL_SIZE) return;
32
+ await fetchAndStoreNonces(client);
33
+ };
34
+
28
35
  //#endregion
29
36
  //#region src/utils/retryOnFail/InvalidRetryOnFailCallError.ts
30
37
  /**
@@ -329,6 +336,8 @@ const stateStorageKeySchema = createStorageKeySchema({
329
336
  key: "state",
330
337
  schema: z.object({
331
338
  apiVersion: z.string(),
339
+ prefetchedNonces: z.array(z.string()),
340
+ prefetchedNoncesExpiration: z.nullable(z.number()),
332
341
  projectSettings: z.custom(),
333
342
  unverifiedWalletAccounts: z.array(unverifiedWalletAccountSchema),
334
343
  user: z.custom(),
@@ -379,6 +388,10 @@ const hydrateStateWithStorage = async (client) => {
379
388
  if (storedState?.apiVersion === SDK_API_CORE_VERSION) {
380
389
  stateChanges.unverifiedWalletAccounts = storedState.unverifiedWalletAccounts;
381
390
  stateChanges.walletProviderKeyMap = storedState.walletProviderKeyMap;
391
+ if (storedState.prefetchedNoncesExpiration && storedState.prefetchedNoncesExpiration > Date.now()) {
392
+ stateChanges.prefetchedNonces = storedState.prefetchedNonces;
393
+ stateChanges.prefetchedNoncesExpiration = storedState.prefetchedNoncesExpiration;
394
+ }
382
395
  if (isSessionValid) stateChanges.user = storedState.user;
383
396
  if (isSessionValid || (storedState.unverifiedWalletAccounts ?? []).length > 0) stateChanges.projectSettings = storedState.projectSettings;
384
397
  }
@@ -408,6 +421,8 @@ const syncStateWithStorage = (client) => {
408
421
  });
409
422
  core.storage.setItem(stateStorageKeySchema, {
410
423
  apiVersion: SDK_API_CORE_VERSION,
424
+ prefetchedNonces: state.prefetchedNonces,
425
+ prefetchedNoncesExpiration: state.prefetchedNoncesExpiration,
411
426
  projectSettings: state.projectSettings,
412
427
  unverifiedWalletAccounts: state.unverifiedWalletAccounts,
413
428
  user: state.user,
@@ -464,7 +479,7 @@ const initializeClient = async (client = getDefaultClient()) => {
464
479
  const fetchProjectSettingsPromise = initializeStorageSyncPromise.then(async () => {
465
480
  if (!core.state.get().projectSettings) await fetchProjectSettings(client);
466
481
  });
467
- fetchProjectSettingsPromise.then(() => fetchAndStoreNonces(client)).catch((error) => {
482
+ fetchProjectSettingsPromise.then(() => prefetchNoncesIfNeeded(client)).catch((error) => {
468
483
  core.logger.error("Failed to prefetch nonces:", error);
469
484
  });
470
485
  /**
@@ -796,6 +811,7 @@ const getInitialState = () => ({
796
811
  legacyToken: null,
797
812
  mfaToken: null,
798
813
  prefetchedNonces: [],
814
+ prefetchedNoncesExpiration: null,
799
815
  projectSettings: null,
800
816
  sessionExpiresAt: null,
801
817
  sessionKeys: null,
@@ -1564,8 +1580,8 @@ const buildOAuthUrl = async (core, provider) => {
1564
1580
  const isGoogleDriveBackupEnabled = projectSettings.sdk.waas?.backupOptions?.includes(WaasBackupOptionsEnum.GoogleDrive);
1565
1581
  const socialProviderUrl = addOAuthUrlParams(socialProvider, getOAuthBaseUrl(socialProvider), { isGoogleDriveBackupEnabled });
1566
1582
  const usingPkce = providersRequiringPkce.includes(provider);
1567
- const state = randomString(32);
1568
- const codeVerifier = randomString(43);
1583
+ const state = randomString({ length: 32 });
1584
+ const codeVerifier = randomString({ length: 43 });
1569
1585
  socialProviderUrl.searchParams.set("state", state);
1570
1586
  socialProviderUrl.searchParams.set("response_type", "code");
1571
1587
  if (usingPkce) {
@@ -1782,12 +1798,13 @@ const createCheckoutApiClient = async ({ transactionId }, client) => {
1782
1798
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1783
1799
  * @returns The updated checkout transaction
1784
1800
  */
1785
- const attachCheckoutTransactionSource = async ({ fromAddress, fromChainId, transactionId }, client = getDefaultClient()) => {
1801
+ const attachCheckoutTransactionSource = async ({ fromAddress, fromChainId, fromChainName, transactionId }, client = getDefaultClient()) => {
1786
1802
  const { apiClient, environmentId, sessionToken } = await createCheckoutApiClient({ transactionId }, client);
1787
1803
  return apiClient.attachSource({
1788
1804
  attachSourceRequest: {
1789
1805
  fromAddress,
1790
1806
  fromChainId,
1807
+ fromChainName,
1791
1808
  sourceType: "wallet"
1792
1809
  },
1793
1810
  environmentId,
@@ -1835,6 +1852,14 @@ const cancelCheckoutTransaction = async ({ transactionId }, client = getDefaultC
1835
1852
  return result;
1836
1853
  };
1837
1854
 
1855
+ //#endregion
1856
+ //#region src/modules/checkout/getCheckouts/getCheckouts.ts
1857
+ const getCheckouts = async (client) => {
1858
+ const projectSettings = client.projectSettings;
1859
+ assertDefined(projectSettings, "Project settings are not available");
1860
+ return projectSettings.checkouts ?? [];
1861
+ };
1862
+
1838
1863
  //#endregion
1839
1864
  //#region src/modules/checkout/createCheckoutTransaction/createCheckoutTransaction.ts
1840
1865
  /**
@@ -1846,8 +1871,12 @@ const cancelCheckoutTransaction = async ({ transactionId }, client = getDefaultC
1846
1871
  */
1847
1872
  const createCheckoutTransaction = async (params, client = getDefaultClient()) => {
1848
1873
  const core = getCore(client);
1849
- const result = await createApiClient({}, client).createCheckoutTransaction({
1850
- checkoutId: params.checkoutId,
1874
+ const apiClient = createApiClient({}, client);
1875
+ const checkouts = await getCheckouts(client);
1876
+ const checkoutId = params.checkoutId ?? checkouts?.[0]?.id;
1877
+ assertDefined(checkoutId, "No checkout found. Please make sure you have a Checkout setup in the Dashboard.");
1878
+ const result = await apiClient.createCheckoutTransaction({
1879
+ checkoutId,
1851
1880
  checkoutTransactionCreateRequest: {
1852
1881
  amount: params.amount,
1853
1882
  currency: params.currency,
@@ -1886,14 +1915,13 @@ const getCheckoutTransaction = async ({ transactionId }, client = getDefaultClie
1886
1915
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1887
1916
  * @returns The updated checkout transaction with quote data
1888
1917
  */
1889
- const getCheckoutTransactionQuote = async ({ fromTokenAddress, slippage, toTokenAddress, transactionId }, client = getDefaultClient()) => {
1918
+ const getCheckoutTransactionQuote = async ({ fromTokenAddress, slippage, transactionId }, client = getDefaultClient()) => {
1890
1919
  const { apiClient, environmentId, sessionToken } = await createCheckoutApiClient({ transactionId }, client);
1891
1920
  return apiClient.quoteCheckoutTransaction({
1892
1921
  environmentId,
1893
1922
  quoteRequest: {
1894
1923
  fromTokenAddress,
1895
- slippage,
1896
- toTokenAddress
1924
+ slippage
1897
1925
  },
1898
1926
  transactionId,
1899
1927
  xDynamicCheckoutSessionToken: sessionToken
@@ -2073,7 +2101,7 @@ const isDeviceRegistrationRequired = (client = getDefaultClient()) => {
2073
2101
  const revokeAllRegisteredDevices = async (client = getDefaultClient()) => {
2074
2102
  const core = getCore(client);
2075
2103
  await createApiClient({}, client).deleteAllDeviceRegistrations({ environmentId: core.environmentId });
2076
- await refreshAuth(client);
2104
+ await logout(client);
2077
2105
  };
2078
2106
 
2079
2107
  //#endregion
@@ -2081,11 +2109,10 @@ const revokeAllRegisteredDevices = async (client = getDefaultClient()) => {
2081
2109
  const revokeRegisteredDevice = async ({ deviceRegistrationId }, client = getDefaultClient()) => {
2082
2110
  assertDefined(deviceRegistrationId, "deviceRegistrationId is required");
2083
2111
  const core = getCore(client);
2084
- await createApiClient({}, client).deleteDeviceRegistration({
2112
+ if ((await createApiClient({}, client).deleteDeviceRegistration({
2085
2113
  deviceRegistrationId,
2086
2114
  environmentId: core.environmentId
2087
- });
2088
- await refreshAuth(client);
2115
+ })).currentDeviceRevoked) await logout(client);
2089
2116
  };
2090
2117
 
2091
2118
  //#endregion
@@ -4979,7 +5006,7 @@ const onWalletProviderEvent = ({ callback, event, walletProviderKey }, client =
4979
5006
  };
4980
5007
 
4981
5008
  //#endregion
4982
- //#region src/utils/getDeviceNameFromUserAgent/getDeviceNameFromUserAgent.ts
5009
+ //#region src/utils/parseUserAgent/parseUserAgent.ts
4983
5010
  const browserMatchers = [
4984
5011
  {
4985
5012
  name: "Edge",
@@ -5006,6 +5033,11 @@ const browserMatchers = [
5006
5033
  pattern: /Chrome|CriOS/
5007
5034
  }
5008
5035
  ];
5036
+ const mobileOsNames = new Set([
5037
+ "iPhone",
5038
+ "iPad",
5039
+ "Android"
5040
+ ]);
5009
5041
  const osMatchers = [
5010
5042
  {
5011
5043
  name: "iPhone",
@@ -5036,14 +5068,16 @@ const osMatchers = [
5036
5068
  pattern: /CrOS/
5037
5069
  }
5038
5070
  ];
5039
- const getDeviceNameFromUserAgent = ({ userAgent }) => {
5040
- if (!userAgent) return null;
5071
+ const parseUserAgent = ({ userAgent }) => {
5072
+ if (!userAgent?.trim()) return null;
5041
5073
  const browser = browserMatchers.find(({ pattern }) => pattern.test(userAgent))?.name;
5042
5074
  const os = osMatchers.find(({ pattern }) => pattern.test(userAgent))?.name;
5043
- if (browser && os) return `${browser} on ${os}`;
5044
- if (browser) return browser;
5045
- if (os) return os;
5046
- return null;
5075
+ if (!browser && !os) return null;
5076
+ const isMobile$1 = os ? mobileOsNames.has(os) : false;
5077
+ return {
5078
+ displayText: browser && os ? `${browser} on ${os}` : browser ?? os ?? "",
5079
+ type: isMobile$1 ? "mobile" : "desktop"
5080
+ };
5047
5081
  };
5048
5082
 
5049
5083
  //#endregion
@@ -5051,5 +5085,5 @@ const getDeviceNameFromUserAgent = ({ userAgent }) => {
5051
5085
  assertPackageVersion(name, version);
5052
5086
 
5053
5087
  //#endregion
5054
- export { BaseError, CheckoutSessionTokenMissingError, ClientAlreadyInitializedError, DeeplinkConnectAndVerifyUnsupportedError, FeeEstimationFailedError, InvalidDeviceRegistrationRedirectError, InvalidExternalAuthError, InvalidParamError, InvalidRedirectStorageStateError, LinkCredentialError, MFAAction, MfaInvalidOtpError, MfaRateLimitedError, MissingRedirectStorageStateError, MissingSocialUrlParamError, MissingUserVerificationError, NetworkAddingUnavailableError, NetworkNotAddedError, NetworkSwitchingUnavailableError, NoAddressFoundError, NoNetworkProvidersError, NoPasskeyCredentialsFoundError, NoSmartWalletAccountSignerFoundError, NoWebAuthNSupportError, NotWaasWalletAccountError, SandboxMaximumThresholdReachedError, SimulationFailedError, UnauthorizedError, UnavailableInServerSideError, UnrecognizedNetworkError, UserNotAuthenticatedError, UserRejectedError, WalletAccountAlreadyVerifiedError, WalletAccountNotSelectedError, WalletAlreadyLinkedToAnotherUserError, WalletProviderMethodUnavailableError, acknowledgeRecoveryCodes, addCoinbaseOnrampOrderEventListener, addNetwork, assertWalletAccountSigningAvailability, assertWalletProviderMethodDefined, attachCheckoutTransactionSource, authenticateMfaRecoveryCode, authenticatePasskeyMFA, authenticateTotpMfaDevice, authenticateWithSocial, broadcastCheckoutTransaction, canConnectWithHardwareWallet, cancelCheckoutTransaction, completeDeviceRegistration, completeSocialAuthentication, connectAndVerifyWithWalletProvider, connectWithWalletProvider, consumeMfaToken, createCheckoutTransaction, createCoinbaseOnrampOrder, createCryptoDotComPayment, createDynamicClient, createKrakenExchangeTransfer, createNewMfaRecoveryCodes, deleteMfaDevice, deletePasskey, deleteUser, detectDeviceRegistrationRedirect, detectOAuthRedirect, fetchProjectSettings, getActiveNetworkData, getActiveNetworkId, getAvailableWalletProvidersData, getBalance, getBalanceForAddress, getCheckoutTransaction, getCheckoutTransactionQuote, getCoinbaseBuyUrl, getConnectedAddresses, getDefaultClient, getDeviceNameFromUserAgent, getDeviceRegistrationTokenFromUrl, getElevatedAccessToken, getKrakenAccounts, getKrakenWhitelistedAddresses, getMfaDevices, getMfaMethods, getMfaRecoveryCodes, getMissingVerificationForCoinbaseOnrampOrder, getMultichainBalances, getNetworksData, getOwnerWalletAccountForSmartWalletAccount, getPasskeys, getPrimaryWalletAccount, getRegisteredDevices, getTransactionHistory, getUserSocialAccounts, getWalletAccountAddressByType, getWalletAccountFromAddress, getWalletAccounts, getWalletConnectCatalog, getWalletConnectCatalogWalletByWalletProviderKey, getWalletProviderDataByKey, hasExtension, initializeClient, isCaptchaRequired, isDeeplinkWalletProvider, isDeviceRegistrationRequired, isHardwareWalletAccount, isMfaRequiredForAction, isMobile, isPendingRecoveryCodesAcknowledgment, isProgrammaticNetworkSwitchAvailable, isSignedIn, isUserMissingMfaAuth, isUserOnboardingComplete, isWalletAccountVerified, logout, offEvent, offWalletProviderEvent, onEvent, onWalletProviderEvent, onceEvent, prepareCheckoutTransaction, proveWalletAccountOwnership, refreshAuth, refreshUser, registerPasskey, registerTotpMfaDevice, removeWalletAccount, revokeAllRegisteredDevices, revokeRegisteredDevice, selectPrimaryWalletAccount, sendEmailOTP, sendSmsOTP, setCaptchaToken, setDefaultMfaDevice, signInWithExternalJwt, signInWithPasskey, signMessage, submitCheckoutTransaction, supportedCountries, switchActiveNetwork, transferAmount, transferWalletAccount, unlinkSocialAccount, updateUser, verifyOTP, verifyWalletAccount, waitForClientInitialized };
5088
+ export { BaseError, CheckoutSessionTokenMissingError, ClientAlreadyInitializedError, DeeplinkConnectAndVerifyUnsupportedError, FeeEstimationFailedError, InvalidDeviceRegistrationRedirectError, InvalidExternalAuthError, InvalidParamError, InvalidRedirectStorageStateError, LinkCredentialError, MFAAction, MfaInvalidOtpError, MfaRateLimitedError, MissingRedirectStorageStateError, MissingSocialUrlParamError, MissingUserVerificationError, NetworkAddingUnavailableError, NetworkNotAddedError, NetworkSwitchingUnavailableError, NoAddressFoundError, NoNetworkProvidersError, NoPasskeyCredentialsFoundError, NoSmartWalletAccountSignerFoundError, NoWebAuthNSupportError, NotWaasWalletAccountError, SandboxMaximumThresholdReachedError, SimulationFailedError, UnauthorizedError, UnavailableInServerSideError, UnrecognizedNetworkError, UserNotAuthenticatedError, UserRejectedError, WalletAccountAlreadyVerifiedError, WalletAccountNotSelectedError, WalletAlreadyLinkedToAnotherUserError, WalletProviderMethodUnavailableError, acknowledgeRecoveryCodes, addCoinbaseOnrampOrderEventListener, addNetwork, assertWalletAccountSigningAvailability, assertWalletProviderMethodDefined, attachCheckoutTransactionSource, authenticateMfaRecoveryCode, authenticatePasskeyMFA, authenticateTotpMfaDevice, authenticateWithSocial, broadcastCheckoutTransaction, canConnectWithHardwareWallet, cancelCheckoutTransaction, completeDeviceRegistration, completeSocialAuthentication, connectAndVerifyWithWalletProvider, connectWithWalletProvider, consumeMfaToken, createCheckoutTransaction, createCoinbaseOnrampOrder, createCryptoDotComPayment, createDynamicClient, createKrakenExchangeTransfer, createNewMfaRecoveryCodes, deleteMfaDevice, deletePasskey, deleteUser, detectDeviceRegistrationRedirect, detectOAuthRedirect, fetchProjectSettings, getActiveNetworkData, getActiveNetworkId, getAvailableWalletProvidersData, getBalance, getBalanceForAddress, getCheckoutTransaction, getCheckoutTransactionQuote, getCoinbaseBuyUrl, getConnectedAddresses, getDefaultClient, getDeviceRegistrationTokenFromUrl, getElevatedAccessToken, getKrakenAccounts, getKrakenWhitelistedAddresses, getMfaDevices, getMfaMethods, getMfaRecoveryCodes, getMissingVerificationForCoinbaseOnrampOrder, getMultichainBalances, getNetworksData, getOwnerWalletAccountForSmartWalletAccount, getPasskeys, getPrimaryWalletAccount, getRegisteredDevices, getTransactionHistory, getUserSocialAccounts, getWalletAccountAddressByType, getWalletAccountFromAddress, getWalletAccounts, getWalletConnectCatalog, getWalletConnectCatalogWalletByWalletProviderKey, getWalletProviderDataByKey, hasExtension, initializeClient, isCaptchaRequired, isDeeplinkWalletProvider, isDeviceRegistrationRequired, isHardwareWalletAccount, isMfaRequiredForAction, isMobile, isPendingRecoveryCodesAcknowledgment, isProgrammaticNetworkSwitchAvailable, isSignedIn, isUserMissingMfaAuth, isUserOnboardingComplete, isWalletAccountVerified, logout, offEvent, offWalletProviderEvent, onEvent, onWalletProviderEvent, onceEvent, parseUserAgent, prepareCheckoutTransaction, proveWalletAccountOwnership, refreshAuth, refreshUser, registerPasskey, registerTotpMfaDevice, removeWalletAccount, revokeAllRegisteredDevices, revokeRegisteredDevice, selectPrimaryWalletAccount, sendEmailOTP, sendSmsOTP, setCaptchaToken, setDefaultMfaDevice, signInWithExternalJwt, signInWithPasskey, signMessage, submitCheckoutTransaction, supportedCountries, switchActiveNetwork, transferAmount, transferWalletAccount, unlinkSocialAccount, updateUser, verifyOTP, verifyWalletAccount, waitForClientInitialized };
5055
5089
  //# sourceMappingURL=index.esm.js.map