@dynamic-labs-sdk/client 0.15.0 → 0.16.1

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-BPKi-2Me.esm.js} +20 -13
  2. package/dist/InvalidParamError-BPKi-2Me.esm.js.map +1 -0
  3. package/dist/{InvalidParamError-DzSZbHE5.cjs.js → InvalidParamError-DxdJ-Vjr.cjs.js} +25 -12
  4. package/dist/InvalidParamError-DxdJ-Vjr.cjs.js.map +1 -0
  5. package/dist/{NotWaasWalletAccountError-kNpOqccC.esm.js → NotWaasWalletAccountError-674h4R9F.esm.js} +3 -3
  6. package/dist/{NotWaasWalletAccountError-kNpOqccC.esm.js.map → NotWaasWalletAccountError-674h4R9F.esm.js.map} +1 -1
  7. package/dist/{NotWaasWalletAccountError-DFTloI8C.cjs.js → NotWaasWalletAccountError-CC0TnXFG.cjs.js} +3 -3
  8. package/dist/{NotWaasWalletAccountError-DFTloI8C.cjs.js.map → NotWaasWalletAccountError-CC0TnXFG.cjs.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-4aliEYIC.cjs.js} +3 -3
  19. package/dist/{getNetworkProviderFromNetworkId-BD1iGcEg.cjs.js.map → getNetworkProviderFromNetworkId-4aliEYIC.cjs.js.map} +1 -1
  20. package/dist/{getNetworkProviderFromNetworkId-ySZUpmOr.esm.js → getNetworkProviderFromNetworkId-DMgQWVbk.esm.js} +3 -3
  21. package/dist/{getNetworkProviderFromNetworkId-ySZUpmOr.esm.js.map → getNetworkProviderFromNetworkId-DMgQWVbk.esm.js.map} +1 -1
  22. package/dist/{getSignedSessionId-BxhxGkA4.esm.js → getSignedSessionId-QONqJpzq.esm.js} +3 -3
  23. package/dist/{getSignedSessionId-BxhxGkA4.esm.js.map → getSignedSessionId-QONqJpzq.esm.js.map} +1 -1
  24. package/dist/{getSignedSessionId-s45HpP3W.cjs.js → getSignedSessionId-lflDyi6Y.cjs.js} +3 -3
  25. package/dist/{getSignedSessionId-s45HpP3W.cjs.js.map → getSignedSessionId-lflDyi6Y.cjs.js.map} +1 -1
  26. package/dist/{getVerifiedCredentialForWalletAccount-Ch8h_J_W.esm.js → getVerifiedCredentialForWalletAccount-9U3-GhOF.esm.js} +2 -2
  27. package/dist/{getVerifiedCredentialForWalletAccount-Ch8h_J_W.esm.js.map → getVerifiedCredentialForWalletAccount-9U3-GhOF.esm.js.map} +1 -1
  28. package/dist/{getVerifiedCredentialForWalletAccount-BxrgouFz.cjs.js → getVerifiedCredentialForWalletAccount-BdVRoKMM.cjs.js} +2 -2
  29. package/dist/{getVerifiedCredentialForWalletAccount-BxrgouFz.cjs.js.map → getVerifiedCredentialForWalletAccount-BdVRoKMM.cjs.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-D1sFhYH1.esm.js → isMfaRequiredForAction-BMf88hKI.esm.js} +2 -2
  35. package/dist/{isMfaRequiredForAction-D1sFhYH1.esm.js.map → isMfaRequiredForAction-BMf88hKI.esm.js.map} +1 -1
  36. package/dist/{isMfaRequiredForAction-DaJSsq8Z.cjs.js → isMfaRequiredForAction-Du4D8WDp.cjs.js} +2 -2
  37. package/dist/{isMfaRequiredForAction-DaJSsq8Z.cjs.js.map → isMfaRequiredForAction-Du4D8WDp.cjs.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.cjs.js CHANGED
@@ -1,8 +1,8 @@
1
- const require_InvalidParamError = require('./InvalidParamError-DzSZbHE5.cjs.js');
2
- const require_getNetworkProviderFromNetworkId = require('./getNetworkProviderFromNetworkId-BD1iGcEg.cjs.js');
3
- const require_getVerifiedCredentialForWalletAccount = require('./getVerifiedCredentialForWalletAccount-BxrgouFz.cjs.js');
4
- const require_NotWaasWalletAccountError = require('./NotWaasWalletAccountError-DFTloI8C.cjs.js');
5
- const require_isMfaRequiredForAction = require('./isMfaRequiredForAction-DaJSsq8Z.cjs.js');
1
+ const require_InvalidParamError = require('./InvalidParamError-DxdJ-Vjr.cjs.js');
2
+ const require_getNetworkProviderFromNetworkId = require('./getNetworkProviderFromNetworkId-4aliEYIC.cjs.js');
3
+ const require_getVerifiedCredentialForWalletAccount = require('./getVerifiedCredentialForWalletAccount-BdVRoKMM.cjs.js');
4
+ const require_NotWaasWalletAccountError = require('./NotWaasWalletAccountError-CC0TnXFG.cjs.js');
5
+ const require_isMfaRequiredForAction = require('./isMfaRequiredForAction-Du4D8WDp.cjs.js');
6
6
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
7
7
  let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
8
8
  let zod_mini = require("zod/mini");
@@ -27,6 +27,13 @@ const stateChangeEvents = {
27
27
  user: "userChanged"
28
28
  };
29
29
 
30
+ //#endregion
31
+ //#region src/utils/getNonce/prefetchNoncesIfNeeded/prefetchNoncesIfNeeded.ts
32
+ const prefetchNoncesIfNeeded = async (client) => {
33
+ if (require_InvalidParamError.getCore(client).state.get().prefetchedNonces.length >= require_InvalidParamError.NONCE_POOL_SIZE) return;
34
+ await require_InvalidParamError.fetchAndStoreNonces(client);
35
+ };
36
+
30
37
  //#endregion
31
38
  //#region src/utils/retryOnFail/InvalidRetryOnFailCallError.ts
32
39
  /**
@@ -331,6 +338,8 @@ const stateStorageKeySchema = require_InvalidParamError.createStorageKeySchema({
331
338
  key: "state",
332
339
  schema: zod_mini.object({
333
340
  apiVersion: zod_mini.string(),
341
+ prefetchedNonces: zod_mini.array(zod_mini.string()),
342
+ prefetchedNoncesExpiration: zod_mini.nullable(zod_mini.number()),
334
343
  projectSettings: zod_mini.custom(),
335
344
  unverifiedWalletAccounts: zod_mini.array(unverifiedWalletAccountSchema),
336
345
  user: zod_mini.custom(),
@@ -381,6 +390,10 @@ const hydrateStateWithStorage = async (client) => {
381
390
  if (storedState?.apiVersion === require_InvalidParamError.SDK_API_CORE_VERSION) {
382
391
  stateChanges.unverifiedWalletAccounts = storedState.unverifiedWalletAccounts;
383
392
  stateChanges.walletProviderKeyMap = storedState.walletProviderKeyMap;
393
+ if (storedState.prefetchedNoncesExpiration && storedState.prefetchedNoncesExpiration > Date.now()) {
394
+ stateChanges.prefetchedNonces = storedState.prefetchedNonces;
395
+ stateChanges.prefetchedNoncesExpiration = storedState.prefetchedNoncesExpiration;
396
+ }
384
397
  if (isSessionValid) stateChanges.user = storedState.user;
385
398
  if (isSessionValid || (storedState.unverifiedWalletAccounts ?? []).length > 0) stateChanges.projectSettings = storedState.projectSettings;
386
399
  }
@@ -410,6 +423,8 @@ const syncStateWithStorage = (client) => {
410
423
  });
411
424
  core.storage.setItem(stateStorageKeySchema, {
412
425
  apiVersion: require_InvalidParamError.SDK_API_CORE_VERSION,
426
+ prefetchedNonces: state.prefetchedNonces,
427
+ prefetchedNoncesExpiration: state.prefetchedNoncesExpiration,
413
428
  projectSettings: state.projectSettings,
414
429
  unverifiedWalletAccounts: state.unverifiedWalletAccounts,
415
430
  user: state.user,
@@ -466,7 +481,7 @@ const initializeClient = async (client = require_InvalidParamError.getDefaultCli
466
481
  const fetchProjectSettingsPromise = initializeStorageSyncPromise.then(async () => {
467
482
  if (!core.state.get().projectSettings) await fetchProjectSettings(client);
468
483
  });
469
- fetchProjectSettingsPromise.then(() => require_InvalidParamError.fetchAndStoreNonces(client)).catch((error) => {
484
+ fetchProjectSettingsPromise.then(() => prefetchNoncesIfNeeded(client)).catch((error) => {
470
485
  core.logger.error("Failed to prefetch nonces:", error);
471
486
  });
472
487
  /**
@@ -798,6 +813,7 @@ const getInitialState = () => ({
798
813
  legacyToken: null,
799
814
  mfaToken: null,
800
815
  prefetchedNonces: [],
816
+ prefetchedNoncesExpiration: null,
801
817
  projectSettings: null,
802
818
  sessionExpiresAt: null,
803
819
  sessionKeys: null,
@@ -1566,8 +1582,8 @@ const buildOAuthUrl = async (core, provider) => {
1566
1582
  const isGoogleDriveBackupEnabled = projectSettings.sdk.waas?.backupOptions?.includes(_dynamic_labs_sdk_api_core.WaasBackupOptionsEnum.GoogleDrive);
1567
1583
  const socialProviderUrl = addOAuthUrlParams(socialProvider, getOAuthBaseUrl(socialProvider), { isGoogleDriveBackupEnabled });
1568
1584
  const usingPkce = providersRequiringPkce.includes(provider);
1569
- const state = require_InvalidParamError.randomString(32);
1570
- const codeVerifier = require_InvalidParamError.randomString(43);
1585
+ const state = require_InvalidParamError.randomString({ length: 32 });
1586
+ const codeVerifier = require_InvalidParamError.randomString({ length: 43 });
1571
1587
  socialProviderUrl.searchParams.set("state", state);
1572
1588
  socialProviderUrl.searchParams.set("response_type", "code");
1573
1589
  if (usingPkce) {
@@ -1784,12 +1800,13 @@ const createCheckoutApiClient = async ({ transactionId }, client) => {
1784
1800
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1785
1801
  * @returns The updated checkout transaction
1786
1802
  */
1787
- const attachCheckoutTransactionSource = async ({ fromAddress, fromChainId, transactionId }, client = require_InvalidParamError.getDefaultClient()) => {
1803
+ const attachCheckoutTransactionSource = async ({ fromAddress, fromChainId, fromChainName, transactionId }, client = require_InvalidParamError.getDefaultClient()) => {
1788
1804
  const { apiClient, environmentId, sessionToken } = await createCheckoutApiClient({ transactionId }, client);
1789
1805
  return apiClient.attachSource({
1790
1806
  attachSourceRequest: {
1791
1807
  fromAddress,
1792
1808
  fromChainId,
1809
+ fromChainName,
1793
1810
  sourceType: "wallet"
1794
1811
  },
1795
1812
  environmentId,
@@ -1837,6 +1854,14 @@ const cancelCheckoutTransaction = async ({ transactionId }, client = require_Inv
1837
1854
  return result;
1838
1855
  };
1839
1856
 
1857
+ //#endregion
1858
+ //#region src/modules/checkout/getCheckouts/getCheckouts.ts
1859
+ const getCheckouts = async (client) => {
1860
+ const projectSettings = client.projectSettings;
1861
+ require_InvalidParamError.assertDefined(projectSettings, "Project settings are not available");
1862
+ return projectSettings.checkouts ?? [];
1863
+ };
1864
+
1840
1865
  //#endregion
1841
1866
  //#region src/modules/checkout/createCheckoutTransaction/createCheckoutTransaction.ts
1842
1867
  /**
@@ -1848,8 +1873,12 @@ const cancelCheckoutTransaction = async ({ transactionId }, client = require_Inv
1848
1873
  */
1849
1874
  const createCheckoutTransaction = async (params, client = require_InvalidParamError.getDefaultClient()) => {
1850
1875
  const core = require_InvalidParamError.getCore(client);
1851
- const result = await require_InvalidParamError.createApiClient({}, client).createCheckoutTransaction({
1852
- checkoutId: params.checkoutId,
1876
+ const apiClient = require_InvalidParamError.createApiClient({}, client);
1877
+ const checkouts = await getCheckouts(client);
1878
+ const checkoutId = params.checkoutId ?? checkouts?.[0]?.id;
1879
+ require_InvalidParamError.assertDefined(checkoutId, "No checkout found. Please make sure you have a Checkout setup in the Dashboard.");
1880
+ const result = await apiClient.createCheckoutTransaction({
1881
+ checkoutId,
1853
1882
  checkoutTransactionCreateRequest: {
1854
1883
  amount: params.amount,
1855
1884
  currency: params.currency,
@@ -1888,14 +1917,13 @@ const getCheckoutTransaction = async ({ transactionId }, client = require_Invali
1888
1917
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1889
1918
  * @returns The updated checkout transaction with quote data
1890
1919
  */
1891
- const getCheckoutTransactionQuote = async ({ fromTokenAddress, slippage, toTokenAddress, transactionId }, client = require_InvalidParamError.getDefaultClient()) => {
1920
+ const getCheckoutTransactionQuote = async ({ fromTokenAddress, slippage, transactionId }, client = require_InvalidParamError.getDefaultClient()) => {
1892
1921
  const { apiClient, environmentId, sessionToken } = await createCheckoutApiClient({ transactionId }, client);
1893
1922
  return apiClient.quoteCheckoutTransaction({
1894
1923
  environmentId,
1895
1924
  quoteRequest: {
1896
1925
  fromTokenAddress,
1897
- slippage,
1898
- toTokenAddress
1926
+ slippage
1899
1927
  },
1900
1928
  transactionId,
1901
1929
  xDynamicCheckoutSessionToken: sessionToken
@@ -2075,7 +2103,7 @@ const isDeviceRegistrationRequired = (client = require_InvalidParamError.getDefa
2075
2103
  const revokeAllRegisteredDevices = async (client = require_InvalidParamError.getDefaultClient()) => {
2076
2104
  const core = require_InvalidParamError.getCore(client);
2077
2105
  await require_InvalidParamError.createApiClient({}, client).deleteAllDeviceRegistrations({ environmentId: core.environmentId });
2078
- await require_NotWaasWalletAccountError.refreshAuth(client);
2106
+ await logout(client);
2079
2107
  };
2080
2108
 
2081
2109
  //#endregion
@@ -2083,11 +2111,10 @@ const revokeAllRegisteredDevices = async (client = require_InvalidParamError.get
2083
2111
  const revokeRegisteredDevice = async ({ deviceRegistrationId }, client = require_InvalidParamError.getDefaultClient()) => {
2084
2112
  require_InvalidParamError.assertDefined(deviceRegistrationId, "deviceRegistrationId is required");
2085
2113
  const core = require_InvalidParamError.getCore(client);
2086
- await require_InvalidParamError.createApiClient({}, client).deleteDeviceRegistration({
2114
+ if ((await require_InvalidParamError.createApiClient({}, client).deleteDeviceRegistration({
2087
2115
  deviceRegistrationId,
2088
2116
  environmentId: core.environmentId
2089
- });
2090
- await require_NotWaasWalletAccountError.refreshAuth(client);
2117
+ })).currentDeviceRevoked) await logout(client);
2091
2118
  };
2092
2119
 
2093
2120
  //#endregion
@@ -4981,7 +5008,7 @@ const onWalletProviderEvent = ({ callback, event, walletProviderKey }, client =
4981
5008
  };
4982
5009
 
4983
5010
  //#endregion
4984
- //#region src/utils/getDeviceNameFromUserAgent/getDeviceNameFromUserAgent.ts
5011
+ //#region src/utils/parseUserAgent/parseUserAgent.ts
4985
5012
  const browserMatchers = [
4986
5013
  {
4987
5014
  name: "Edge",
@@ -5008,6 +5035,11 @@ const browserMatchers = [
5008
5035
  pattern: /Chrome|CriOS/
5009
5036
  }
5010
5037
  ];
5038
+ const mobileOsNames = new Set([
5039
+ "iPhone",
5040
+ "iPad",
5041
+ "Android"
5042
+ ]);
5011
5043
  const osMatchers = [
5012
5044
  {
5013
5045
  name: "iPhone",
@@ -5038,14 +5070,16 @@ const osMatchers = [
5038
5070
  pattern: /CrOS/
5039
5071
  }
5040
5072
  ];
5041
- const getDeviceNameFromUserAgent = ({ userAgent }) => {
5042
- if (!userAgent) return null;
5073
+ const parseUserAgent = ({ userAgent }) => {
5074
+ if (!userAgent?.trim()) return null;
5043
5075
  const browser = browserMatchers.find(({ pattern }) => pattern.test(userAgent))?.name;
5044
5076
  const os = osMatchers.find(({ pattern }) => pattern.test(userAgent))?.name;
5045
- if (browser && os) return `${browser} on ${os}`;
5046
- if (browser) return browser;
5047
- if (os) return os;
5048
- return null;
5077
+ if (!browser && !os) return null;
5078
+ const isMobile$1 = os ? mobileOsNames.has(os) : false;
5079
+ return {
5080
+ displayText: browser && os ? `${browser} on ${os}` : browser ?? os ?? "",
5081
+ type: isMobile$1 ? "mobile" : "desktop"
5082
+ };
5049
5083
  };
5050
5084
 
5051
5085
  //#endregion
@@ -5134,7 +5168,6 @@ exports.getCheckoutTransactionQuote = getCheckoutTransactionQuote;
5134
5168
  exports.getCoinbaseBuyUrl = getCoinbaseBuyUrl;
5135
5169
  exports.getConnectedAddresses = getConnectedAddresses;
5136
5170
  exports.getDefaultClient = require_InvalidParamError.getDefaultClient;
5137
- exports.getDeviceNameFromUserAgent = getDeviceNameFromUserAgent;
5138
5171
  exports.getDeviceRegistrationTokenFromUrl = getDeviceRegistrationTokenFromUrl;
5139
5172
  exports.getElevatedAccessToken = getElevatedAccessToken;
5140
5173
  exports.getKrakenAccounts = getKrakenAccounts;
@@ -5177,6 +5210,7 @@ exports.offWalletProviderEvent = offWalletProviderEvent;
5177
5210
  exports.onEvent = require_getVerifiedCredentialForWalletAccount.onEvent;
5178
5211
  exports.onWalletProviderEvent = onWalletProviderEvent;
5179
5212
  exports.onceEvent = require_getVerifiedCredentialForWalletAccount.onceEvent;
5213
+ exports.parseUserAgent = parseUserAgent;
5180
5214
  exports.prepareCheckoutTransaction = prepareCheckoutTransaction;
5181
5215
  exports.proveWalletAccountOwnership = proveWalletAccountOwnership;
5182
5216
  exports.refreshAuth = require_NotWaasWalletAccountError.refreshAuth;