@dynamic-labs-sdk/client 0.17.1 → 0.17.3

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 (120) hide show
  1. package/dist/{InvalidParamError-3-1rSNtf.esm.js → InvalidParamError-C8bqZx25.esm.js} +59 -130
  2. package/dist/InvalidParamError-C8bqZx25.esm.js.map +1 -0
  3. package/dist/{InvalidParamError-zIxsXkiH.cjs.js → InvalidParamError-DvFYOkxL.cjs.js} +65 -187
  4. package/dist/InvalidParamError-DvFYOkxL.cjs.js.map +1 -0
  5. package/dist/{NotWaasWalletAccountError-DVIcEgHJ.esm.js → NotWaasWalletAccountError-C-_6uyUM.esm.js} +3 -3
  6. package/dist/{NotWaasWalletAccountError-DVIcEgHJ.esm.js.map → NotWaasWalletAccountError-C-_6uyUM.esm.js.map} +1 -1
  7. package/dist/{NotWaasWalletAccountError-B_Wl6sTh.cjs.js → NotWaasWalletAccountError-CHSFUjd9.cjs.js} +3 -3
  8. package/dist/{NotWaasWalletAccountError-B_Wl6sTh.cjs.js.map → NotWaasWalletAccountError-CHSFUjd9.cjs.js.map} +1 -1
  9. package/dist/client/core/createCore/createCore.d.ts.map +1 -1
  10. package/dist/client/core/types/DynamicCore.d.ts +20 -0
  11. package/dist/client/core/types/DynamicCore.d.ts.map +1 -1
  12. package/dist/client/core/types/DynamicCoreConfig.d.ts +1 -1
  13. package/dist/client/core/types/DynamicCoreConfig.d.ts.map +1 -1
  14. package/dist/client/types/DynamicClientConfig.d.ts +5 -0
  15. package/dist/client/types/DynamicClientConfig.d.ts.map +1 -1
  16. package/dist/core.cjs.js +24 -11
  17. package/dist/core.cjs.js.map +1 -1
  18. package/dist/core.esm.js +16 -6
  19. package/dist/core.esm.js.map +1 -1
  20. package/dist/exports/core.d.ts +10 -0
  21. package/dist/exports/core.d.ts.map +1 -1
  22. package/dist/{getNetworkProviderFromNetworkId-BJR1GciB.cjs.js → getNetworkProviderFromNetworkId-DK9fnM_Y.cjs.js} +432 -69
  23. package/dist/getNetworkProviderFromNetworkId-DK9fnM_Y.cjs.js.map +1 -0
  24. package/dist/{getNetworkProviderFromNetworkId-C7jp--76.esm.js → getNetworkProviderFromNetworkId-n7VUDpn0.esm.js} +374 -68
  25. package/dist/getNetworkProviderFromNetworkId-n7VUDpn0.esm.js.map +1 -0
  26. package/dist/{getSignedSessionId-DVpOgsL9.cjs.js → getSignedSessionId-B2-EYPik.cjs.js} +7 -17
  27. package/dist/getSignedSessionId-B2-EYPik.cjs.js.map +1 -0
  28. package/dist/{getSignedSessionId-Alfz9eul.esm.js → getSignedSessionId-CM3X3R5t.esm.js} +7 -17
  29. package/dist/getSignedSessionId-CM3X3R5t.esm.js.map +1 -0
  30. package/dist/{getVerifiedCredentialForWalletAccount-DLtDL1Gl.esm.js → getVerifiedCredentialForWalletAccount-Cs7AcMKQ.esm.js} +2 -2
  31. package/dist/{getVerifiedCredentialForWalletAccount-DLtDL1Gl.esm.js.map → getVerifiedCredentialForWalletAccount-Cs7AcMKQ.esm.js.map} +1 -1
  32. package/dist/{getVerifiedCredentialForWalletAccount-D25Vyxub.cjs.js → getVerifiedCredentialForWalletAccount-CyLnpS2G.cjs.js} +3 -2
  33. package/dist/{getVerifiedCredentialForWalletAccount-D25Vyxub.cjs.js.map → getVerifiedCredentialForWalletAccount-CyLnpS2G.cjs.js.map} +1 -1
  34. package/dist/index.cjs.js +182 -79
  35. package/dist/index.cjs.js.map +1 -1
  36. package/dist/index.esm.js +174 -71
  37. package/dist/index.esm.js.map +1 -1
  38. package/dist/{isMfaRequiredForAction-CYYU8V1B.cjs.js → isMfaRequiredForAction-BrRKwK_i.cjs.js} +2 -2
  39. package/dist/{isMfaRequiredForAction-CYYU8V1B.cjs.js.map → isMfaRequiredForAction-BrRKwK_i.cjs.js.map} +1 -1
  40. package/dist/{isMfaRequiredForAction-CPTFDCJp.esm.js → isMfaRequiredForAction-CM26tbT2.esm.js} +2 -2
  41. package/dist/{isMfaRequiredForAction-CPTFDCJp.esm.js.map → isMfaRequiredForAction-CM26tbT2.esm.js.map} +1 -1
  42. package/dist/modules/apiClient/apiClient.types.d.ts +7 -0
  43. package/dist/modules/apiClient/apiClient.types.d.ts.map +1 -1
  44. package/dist/modules/apiClient/constants.d.ts +2 -0
  45. package/dist/modules/apiClient/constants.d.ts.map +1 -1
  46. package/dist/modules/apiClient/createApiClient.d.ts.map +1 -1
  47. package/dist/modules/auth/getElevatedAccessToken/getElevatedAccessToken.d.ts +15 -8
  48. package/dist/modules/auth/getElevatedAccessToken/getElevatedAccessToken.d.ts.map +1 -1
  49. package/dist/modules/auth/logout/logout.d.ts.map +1 -1
  50. package/dist/modules/auth/passkeys/deletePasskey/deletePasskey.d.ts.map +1 -1
  51. package/dist/modules/auth/passkeys/serverRegisterPasskey/serverRegisterPasskey.d.ts.map +1 -1
  52. package/dist/modules/deviceRegistration/getDeviceSigner/getDeviceSigner.d.ts.map +1 -1
  53. package/dist/modules/initializeClient/initializeClient.d.ts.map +1 -1
  54. package/dist/modules/keychainMigration/migrateSessionKeyToKeychain/KeyMigrationError.d.ts +5 -0
  55. package/dist/modules/keychainMigration/migrateSessionKeyToKeychain/KeyMigrationError.d.ts.map +1 -0
  56. package/dist/modules/keychainMigration/migrateSessionKeyToKeychain/migrateSessionKeyToKeychain.d.ts +24 -0
  57. package/dist/modules/keychainMigration/migrateSessionKeyToKeychain/migrateSessionKeyToKeychain.d.ts.map +1 -0
  58. package/dist/modules/mfa/deleteMfaDevice/deleteMfaDevice.d.ts +6 -4
  59. package/dist/modules/mfa/deleteMfaDevice/deleteMfaDevice.d.ts.map +1 -1
  60. package/dist/modules/mfa/registerTotpMfaDevice/registerTotpMfaDevice.d.ts.map +1 -1
  61. package/dist/modules/sessionKeys/generateNonceSignature/generateNonceSignature.d.ts.map +1 -1
  62. package/dist/modules/sessionKeys/generateSessionKeys/generateSessionKeys.d.ts.map +1 -1
  63. package/dist/modules/sessionKeys/generateSessionSignature/generateSessionSignature.d.ts.map +1 -1
  64. package/dist/modules/sessionKeys/getSessionKeys/getSessionKeys.d.ts.map +1 -1
  65. package/dist/modules/sessionKeys/sessionKeys.types.d.ts +0 -2
  66. package/dist/modules/sessionKeys/sessionKeys.types.d.ts.map +1 -1
  67. package/dist/services/instrumentation/constants.d.ts +17 -0
  68. package/dist/services/instrumentation/constants.d.ts.map +1 -0
  69. package/dist/services/instrumentation/createInstrumentation/createInstrumentation.d.ts +18 -0
  70. package/dist/services/instrumentation/createInstrumentation/createInstrumentation.d.ts.map +1 -0
  71. package/dist/services/instrumentation/createInstrumentation/index.d.ts +2 -0
  72. package/dist/services/instrumentation/createInstrumentation/index.d.ts.map +1 -0
  73. package/dist/services/instrumentation/instrumentation.types.d.ts +44 -0
  74. package/dist/services/instrumentation/instrumentation.types.d.ts.map +1 -0
  75. package/dist/services/instrumentation/scrubParameters/index.d.ts +2 -0
  76. package/dist/services/instrumentation/scrubParameters/index.d.ts.map +1 -0
  77. package/dist/services/instrumentation/scrubParameters/scrubParameters.d.ts +8 -0
  78. package/dist/services/instrumentation/scrubParameters/scrubParameters.d.ts.map +1 -0
  79. package/dist/services/keychain/createIndexedDBKeychainService/KeyNotFoundError.d.ts +5 -0
  80. package/dist/services/keychain/createIndexedDBKeychainService/KeyNotFoundError.d.ts.map +1 -0
  81. package/dist/services/keychain/createIndexedDBKeychainService/createIndexedDBKeychainService.d.ts +7 -0
  82. package/dist/services/keychain/createIndexedDBKeychainService/createIndexedDBKeychainService.d.ts.map +1 -0
  83. package/dist/services/keychain/createIndexedDBKeychainService/createIndexedDBKeychainService.types.d.ts +6 -0
  84. package/dist/services/keychain/createIndexedDBKeychainService/createIndexedDBKeychainService.types.d.ts.map +1 -0
  85. package/dist/services/keychain/createIndexedDBKeychainService/index.d.ts +2 -0
  86. package/dist/services/keychain/createIndexedDBKeychainService/index.d.ts.map +1 -0
  87. package/dist/services/keychain/createIndexedDBKeychainService/utils/constants.d.ts +2 -0
  88. package/dist/services/keychain/createIndexedDBKeychainService/utils/constants.d.ts.map +1 -0
  89. package/dist/services/keychain/createIndexedDBKeychainService/utils/deleteIndexedDBItem.d.ts +2 -0
  90. package/dist/services/keychain/createIndexedDBKeychainService/utils/deleteIndexedDBItem.d.ts.map +1 -0
  91. package/dist/services/keychain/createIndexedDBKeychainService/utils/getIndexedDBItem.d.ts +3 -0
  92. package/dist/services/keychain/createIndexedDBKeychainService/utils/getIndexedDBItem.d.ts.map +1 -0
  93. package/dist/services/keychain/createIndexedDBKeychainService/utils/openDatabase.d.ts +2 -0
  94. package/dist/services/keychain/createIndexedDBKeychainService/utils/openDatabase.d.ts.map +1 -0
  95. package/dist/services/keychain/createIndexedDBKeychainService/utils/setIndexedDBItem.d.ts +3 -0
  96. package/dist/services/keychain/createIndexedDBKeychainService/utils/setIndexedDBItem.d.ts.map +1 -0
  97. package/dist/services/keychain/errors/KeychainNotConfiguredError.d.ts +5 -0
  98. package/dist/services/keychain/errors/KeychainNotConfiguredError.d.ts.map +1 -0
  99. package/dist/services/keychain/index.d.ts +3 -0
  100. package/dist/services/keychain/index.d.ts.map +1 -0
  101. package/dist/services/keychain/keychain.types.d.ts +9 -0
  102. package/dist/services/keychain/keychain.types.d.ts.map +1 -0
  103. package/dist/services/realtime/createRealtimeService/createRealtimeService.d.ts +11 -0
  104. package/dist/services/realtime/createRealtimeService/createRealtimeService.d.ts.map +1 -0
  105. package/dist/services/realtime/createRealtimeService/index.d.ts +2 -0
  106. package/dist/services/realtime/createRealtimeService/index.d.ts.map +1 -0
  107. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  108. package/dist/waas.cjs.js +4 -3
  109. package/dist/waas.cjs.js.map +1 -1
  110. package/dist/waas.esm.js +3 -3
  111. package/dist/waasCore.cjs.js +4 -3
  112. package/dist/waasCore.cjs.js.map +1 -1
  113. package/dist/waasCore.esm.js +3 -3
  114. package/package.json +2 -2
  115. package/dist/InvalidParamError-3-1rSNtf.esm.js.map +0 -1
  116. package/dist/InvalidParamError-zIxsXkiH.cjs.js.map +0 -1
  117. package/dist/getNetworkProviderFromNetworkId-BJR1GciB.cjs.js.map +0 -1
  118. package/dist/getNetworkProviderFromNetworkId-C7jp--76.esm.js.map +0 -1
  119. package/dist/getSignedSessionId-Alfz9eul.esm.js.map +0 -1
  120. package/dist/getSignedSessionId-DVpOgsL9.cjs.js.map +0 -1
@@ -1,38 +1,9 @@
1
- //#region rolldown:runtime
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") {
10
- for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
- key = keys[i];
12
- if (!__hasOwnProp.call(to, key) && key !== except) {
13
- __defProp(to, key, {
14
- get: ((k) => from[k]).bind(null, key),
15
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
- });
17
- }
18
- }
19
- }
20
- return to;
21
- };
22
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
- value: mod,
24
- enumerable: true
25
- }) : target, mod));
26
-
27
- //#endregion
1
+ const require_getNetworkProviderFromNetworkId = require('./getNetworkProviderFromNetworkId-DK9fnM_Y.cjs.js');
28
2
  let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
29
- let buffer = require("buffer");
30
- let zod_mini = require("zod/mini");
31
- zod_mini = __toESM(zod_mini);
32
3
 
33
4
  //#region package.json
34
5
  var name = "@dynamic-labs-sdk/client";
35
- var version = "0.17.1";
6
+ var version = "0.17.3";
36
7
  var dependencies = {
37
8
  "@dynamic-labs-sdk/assert-package-version": "workspace:*",
38
9
  "@dynamic-labs-wallet/browser-wallet-client": "0.0.286",
@@ -152,9 +123,11 @@ const NONCE_POOL_SIZE = 5;
152
123
  const DYNAMIC_API_VERSION_HEADER = "x-dyn-api-version";
153
124
  const DYNAMIC_REQUEST_ID_HEADER = "x-dyn-request-id";
154
125
  const DYNAMIC_SDK_VERSION_HEADER = "x-dyn-version";
126
+ const ELEVATED_ACCESS_TOKEN_HEADER = "x-dyn-elevated-access-token";
155
127
  const MFA_TOKEN_HEADER = "x-mfa-auth-token";
156
128
  const SESSION_PUBLIC_KEY_HEADER = "x-dyn-session-public-key";
157
129
  const DYNAMIC_SDK_API_VERSION = dependencies["@dynamic-labs/sdk-api-core"];
130
+ const DYNAMIC_SDK_SESSION_ID_HEADER = "x-dyn-session-id";
158
131
  const CLIENT_SDK_NAME = "ClientSDK";
159
132
 
160
133
  //#endregion
@@ -217,22 +190,54 @@ const isCookieEnabled = (client) => {
217
190
  return dynamicCookiesEnabled || byoJwtCookieEnabled;
218
191
  };
219
192
 
220
- //#endregion
221
- //#region src/utils/getBuffer/getBuffer.ts
222
- const getBuffer = () => typeof Buffer !== "undefined" ? Buffer : buffer.Buffer;
223
-
224
193
  //#endregion
225
194
  //#region src/modules/sessionKeys/getSessionKeys/getSessionKeys.ts
226
195
  const getSessionKeys = (client) => {
196
+ const publicKey = getCore(client).state.get().sessionKeys;
197
+ if (!publicKey) return;
198
+ return { publicKey };
199
+ };
200
+
201
+ //#endregion
202
+ //#region src/modules/auth/getElevatedAccessToken/getElevatedAccessToken.ts
203
+ /**
204
+ * Gets an elevated access token by scope.
205
+ *
206
+ * This function retrieves an elevated access token that contains the specified scope.
207
+ * Expired tokens are automatically filtered out.
208
+ *
209
+ * By default, if the token has `singleUse: true`, it will be automatically
210
+ * consumed (removed from state) after retrieval. Pass `consume: false` to
211
+ * check for token existence without consuming it.
212
+ *
213
+ * @param params - The parameters object.
214
+ * @param params.scope - The scope to match (e.g., 'wallet:export').
215
+ * @param params.consume - Whether to consume single-use tokens (default: true).
216
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
217
+ * @returns The elevated access token if found and not expired, or undefined if not found or expired.
218
+ *
219
+ * @example
220
+ * ```typescript
221
+ * // Retrieve and consume (default)
222
+ * const token = getElevatedAccessToken({ scope: 'wallet:export' });
223
+ *
224
+ * // Check existence without consuming
225
+ * const token = getElevatedAccessToken({ scope: 'credential:unlink', consume: false });
226
+ * ```
227
+ */
228
+ const getElevatedAccessToken = ({ consume = true, scope }, client = getDefaultClient()) => {
227
229
  const core = getCore(client);
228
- const encodedKeys = core.state.get().sessionKeys;
229
- if (!encodedKeys) return;
230
- try {
231
- return JSON.parse(getBuffer().from(encodedKeys, "base64").toString());
232
- } catch (error) {
233
- core.logger.error("Error decoding session keys", error);
234
- return;
230
+ const now = /* @__PURE__ */ new Date();
231
+ const elevatedAccessTokens = core.state.get().elevatedAccessTokens || [];
232
+ const validTokens = elevatedAccessTokens.filter((token$1) => !token$1.expiresAt || token$1.expiresAt > now);
233
+ if (validTokens.length !== elevatedAccessTokens.length) core.state.set({ elevatedAccessTokens: validTokens });
234
+ const token = validTokens.find((token$1) => token$1.scopes.includes(scope));
235
+ if (!token) return;
236
+ if (consume && token.singleUse) {
237
+ const updatedTokens = validTokens.filter((t) => t !== token);
238
+ core.state.set({ elevatedAccessTokens: updatedTokens });
235
239
  }
240
+ return token.token;
236
241
  };
237
242
 
238
243
  //#endregion
@@ -414,128 +419,20 @@ const getNonce = async (client) => {
414
419
  return getNonce(client);
415
420
  };
416
421
 
417
- //#endregion
418
- //#region src/utils/bufferToHex/bufferToHex.ts
419
- /**
420
- * Converts an ArrayBuffer or Uint8Array to a hex-encoded string
421
- */
422
- const bufferToHex = (buffer$1) => [...buffer$1 instanceof Uint8Array ? buffer$1 : new Uint8Array(buffer$1)].map((x) => x.toString(16).padStart(2, "0")).join("");
423
-
424
- //#endregion
425
- //#region src/utils/p256Sign/p256Sign.ts
426
- const p256Sign = async ({ privateKeyJwk, message }) => {
427
- const privateKey = await crypto.subtle.importKey("jwk", privateKeyJwk, {
428
- name: "ECDSA",
429
- namedCurve: "P-256"
430
- }, false, ["sign"]);
431
- return bufferToHex(await crypto.subtle.sign({
432
- hash: "SHA-256",
433
- name: "ECDSA"
434
- }, privateKey, new TextEncoder().encode(message)));
435
- };
436
-
437
- //#endregion
438
- //#region src/services/storage/createStorageKeySchema/createStorageKeySchema.ts
439
- const createStorageKeySchema = (params) => {
440
- return params;
441
- };
442
-
443
- //#endregion
444
- //#region src/utils/base64UrlDecode/base64UrlDecode.ts
445
- /**
446
- * Takes a base64url-encoded string (e.g. "nMueRPiAm51YXEjRtka8S_8Ura3HaqbmqDqMJCZmvkM")
447
- * and return the corresponding bytes, as an array buffer.
448
- */
449
- const base64UrlDecode = (s) => {
450
- s = s?.replace(/-/g, "+").replace(/_/g, "/") || "";
451
- return Uint8Array.from(atob(s), (c) => c.charCodeAt(0));
452
- };
453
-
454
- //#endregion
455
- //#region src/utils/compressRawPublicKey/compressRawPublicKey.ts
456
- /**
457
- * Accepts a public key array buffer, and returns a buffer with the compressed version of the public key
458
- */
459
- const compressRawPublicKey = (rawPublicKey) => {
460
- const rawPublicKeyBytes = new Uint8Array(rawPublicKey);
461
- const len = rawPublicKeyBytes.byteLength;
462
- const compressedBytes = rawPublicKeyBytes.slice(0, 1 + len >>> 1);
463
- compressedBytes[0] = 2 | rawPublicKeyBytes[len - 1] & 1;
464
- return compressedBytes.buffer;
465
- };
466
-
467
- //#endregion
468
- //#region src/utils/p256Keygen/p256Keygen.ts
469
- const p256Keygen = async () => {
470
- const p256Keypair = await crypto.subtle.generateKey({
471
- name: "ECDSA",
472
- namedCurve: "P-256"
473
- }, true, ["sign", "verify"]);
474
- const rawPublicKey = await crypto.subtle.exportKey("raw", p256Keypair.publicKey);
475
- const privateKeyJwk = await crypto.subtle.exportKey("jwk", p256Keypair.privateKey);
476
- const compressedPublicKeyBuffer = compressRawPublicKey(rawPublicKey);
477
- return {
478
- private: bufferToHex(base64UrlDecode(privateKeyJwk.d)),
479
- privateJwk: privateKeyJwk,
480
- public: bufferToHex(compressedPublicKeyBuffer)
481
- };
482
- };
483
-
484
- //#endregion
485
- //#region src/modules/deviceRegistration/getDeviceSigner/deviceSigningKeys.schema.ts
486
- const deviceSigningKeysSchema = zod_mini.object({
487
- privateJwk: zod_mini.custom(),
488
- privateKey: zod_mini.string(),
489
- publicKey: zod_mini.string()
490
- });
491
-
492
- //#endregion
493
- //#region src/modules/deviceRegistration/getDeviceSigner/getOrCreateEnvironmentDeviceSigningKeys/getOrCreateEnvironmentDeviceSigningKeys.ts
494
- /**
495
- * On web we want to auto create the device signing keys for each user.
496
- * And the user device signing keys should never be deleted.
497
- */
498
- const getOrCreateEnvironmentDeviceSigningKeys = async (client) => {
499
- const { storage, environmentId } = getCore(client);
500
- assertDefined(environmentId, "Environment ID is required");
501
- const environmentDeviceSigningKeysStorageKeySchema = createStorageKeySchema({
502
- key: `user_device_signing_keys_${environmentId}`,
503
- schema: deviceSigningKeysSchema
504
- });
505
- const deviceSigningKeys = await storage.getItem(environmentDeviceSigningKeysStorageKeySchema);
506
- if (deviceSigningKeys) return deviceSigningKeys;
507
- const { public: publicKey, private: privateKey, privateJwk } = await p256Keygen();
508
- await storage.setItem(environmentDeviceSigningKeysStorageKeySchema, {
509
- privateJwk,
510
- privateKey,
511
- publicKey
512
- });
513
- return {
514
- privateJwk,
515
- privateKey,
516
- publicKey
517
- };
518
- };
519
-
520
422
  //#endregion
521
423
  //#region src/modules/deviceRegistration/getDeviceSigner/getDeviceSigner.ts
522
424
  const getDeviceSigner = async (client) => {
523
- const { deviceSigner } = getCore(client);
425
+ const { deviceSigner, keychain } = getCore(client);
524
426
  /**
525
- * If the device signer is available, it should handle the device signing
427
+ * If the device signer is available, it should handle the device signing.
526
428
  * This is used for mobile devices with secure enclave.
527
429
  */
528
430
  if (deviceSigner) return deviceSigner;
529
- /**
530
- * For web devices we want to auto create one PK per user id.
531
- */
532
- const environmentDeviceSigningKeys = await getOrCreateEnvironmentDeviceSigningKeys(client);
431
+ const keyName = "device";
432
+ if (!await keychain.getPublicKey(keyName)) await keychain.generateKey(keyName);
533
433
  return {
534
- getPublicKey: async () => environmentDeviceSigningKeys.publicKey,
535
- sign: (payload) => p256Sign({
536
- message: payload,
537
- privateKeyJwk: environmentDeviceSigningKeys.privateJwk
538
- })
434
+ getPublicKey: () => keychain.getPublicKey(keyName),
435
+ sign: (payload) => keychain.sign(keyName, payload)
539
436
  };
540
437
  };
541
438
 
@@ -628,6 +525,7 @@ const createApiClient = (options = {}, client) => {
628
525
  "Content-Type": "application/json",
629
526
  [DYNAMIC_API_VERSION_HEADER]: `API/${DYNAMIC_SDK_API_VERSION}`,
630
527
  [DYNAMIC_REQUEST_ID_HEADER]: randomString({ length: 50 }),
528
+ [DYNAMIC_SDK_SESSION_ID_HEADER]: core.sdkSessionId,
631
529
  [DYNAMIC_SDK_VERSION_HEADER]: `${CLIENT_SDK_NAME}/${version}`,
632
530
  ...core.getApiHeaders(),
633
531
  ...options.headers
@@ -636,6 +534,10 @@ const createApiClient = (options = {}, client) => {
636
534
  if (client.token) settings.headers.Authorization = `Bearer ${client.token}`;
637
535
  if (client.projectSettings && isCookieEnabled(client)) settings.credentials = "include";
638
536
  if (options.includeMfaToken && coreState.mfaToken) settings.headers[MFA_TOKEN_HEADER] = coreState.mfaToken;
537
+ if (options.elevatedAccessTokenScope) {
538
+ const elevatedToken = getElevatedAccessToken({ scope: options.elevatedAccessTokenScope }, client);
539
+ if (elevatedToken) settings.headers[ELEVATED_ACCESS_TOKEN_HEADER] = elevatedToken;
540
+ }
639
541
  const sessionPublicKey = getSessionKeys(client)?.publicKey;
640
542
  const isSessionPublicKeyHeaderPresent = settings.headers[SESSION_PUBLIC_KEY_HEADER] !== void 0;
641
543
  if (sessionPublicKey && !isSessionPublicKeyHeaderPresent) settings.headers[SESSION_PUBLIC_KEY_HEADER] = sessionPublicKey;
@@ -919,12 +821,6 @@ Object.defineProperty(exports, 'ValueMustBeDefinedError', {
919
821
  return ValueMustBeDefinedError;
920
822
  }
921
823
  });
922
- Object.defineProperty(exports, '__toESM', {
923
- enumerable: true,
924
- get: function () {
925
- return __toESM;
926
- }
927
- });
928
824
  Object.defineProperty(exports, 'assertDefined', {
929
825
  enumerable: true,
930
826
  get: function () {
@@ -943,24 +839,12 @@ Object.defineProperty(exports, 'createDeviceSignatureHeadersMiddleware', {
943
839
  return createDeviceSignatureHeadersMiddleware;
944
840
  }
945
841
  });
946
- Object.defineProperty(exports, 'createStorageKeySchema', {
947
- enumerable: true,
948
- get: function () {
949
- return createStorageKeySchema;
950
- }
951
- });
952
842
  Object.defineProperty(exports, 'fetchAndStoreNonces', {
953
843
  enumerable: true,
954
844
  get: function () {
955
845
  return fetchAndStoreNonces;
956
846
  }
957
847
  });
958
- Object.defineProperty(exports, 'getBuffer', {
959
- enumerable: true,
960
- get: function () {
961
- return getBuffer;
962
- }
963
- });
964
848
  Object.defineProperty(exports, 'getChainFromVerifiedCredentialChain', {
965
849
  enumerable: true,
966
850
  get: function () {
@@ -985,6 +869,12 @@ Object.defineProperty(exports, 'getDeviceSigner', {
985
869
  return getDeviceSigner;
986
870
  }
987
871
  });
872
+ Object.defineProperty(exports, 'getElevatedAccessToken', {
873
+ enumerable: true,
874
+ get: function () {
875
+ return getElevatedAccessToken;
876
+ }
877
+ });
988
878
  Object.defineProperty(exports, 'getHeadersForNonceSignedByDeviceSigners', {
989
879
  enumerable: true,
990
880
  get: function () {
@@ -1015,18 +905,6 @@ Object.defineProperty(exports, 'name', {
1015
905
  return name;
1016
906
  }
1017
907
  });
1018
- Object.defineProperty(exports, 'p256Keygen', {
1019
- enumerable: true,
1020
- get: function () {
1021
- return p256Keygen;
1022
- }
1023
- });
1024
- Object.defineProperty(exports, 'p256Sign', {
1025
- enumerable: true,
1026
- get: function () {
1027
- return p256Sign;
1028
- }
1029
- });
1030
908
  Object.defineProperty(exports, 'randomString', {
1031
909
  enumerable: true,
1032
910
  get: function () {
@@ -1045,4 +923,4 @@ Object.defineProperty(exports, 'version', {
1045
923
  return version;
1046
924
  }
1047
925
  });
1048
- //# sourceMappingURL=InvalidParamError-zIxsXkiH.cjs.js.map
926
+ //# sourceMappingURL=InvalidParamError-DvFYOkxL.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidParamError-DvFYOkxL.cjs.js","names":["defaultClient: DynamicClient | null","AuthStorageEnum","token","clientErrorMapper: ErrorMapper","errorToThrow: Error","cause: Error | null","settings: ISettings","SDKApi","Configuration","CHAINS_INFO_MAP: Record<Chain, ChainInfo>","chain"],"sources":["../package.json","../src/client/core/getCore/getCore.ts","../src/errors/base/BaseError.ts","../src/errors/ClientNotFoundError.ts","../src/client/defaultClient/defaultClient.ts","../src/utils/getNonce/constants.ts","../src/modules/apiClient/constants.ts","../src/utils/randomString/randomString.ts","../src/errors/ValueMustBeDefinedError.ts","../src/utils/assertDefined/assertDefined.ts","../src/modules/projectSettings/isCookieEnabled/isCookieEnabled.ts","../src/modules/sessionKeys/getSessionKeys/getSessionKeys.ts","../src/modules/auth/getElevatedAccessToken/getElevatedAccessToken.ts","../src/errors/APIError/APIError.ts","../src/errors/InvalidExternalAuthError.ts","../src/errors/LinkCredentialError.ts","../src/errors/MfaInvalidOtpError.ts","../src/errors/MfaRateLimitedError.ts","../src/errors/SandboxMaximumThresholdReachedError.ts","../src/modules/apiClient/utils/clientErrorMapper/clientErrorMapper.ts","../src/modules/apiClient/utils/convertToApiErrorMiddleware/convertToApiErrorMiddleware.ts","../src/utils/getNonce/getNonce.ts","../src/modules/deviceRegistration/getDeviceSigner/getDeviceSigner.ts","../src/modules/deviceRegistration/getHeadersForNonceSignedByDeviceSigners/getHeadersForNonceSignedByDeviceSigners.ts","../src/modules/apiClient/utils/deviceSignatureHeadersMiddleware/createDeviceSignatureHeadersMiddleware.ts","../src/errors/UnauthorizedError.ts","../src/modules/apiClient/utils/unauthorizedMiddleware/createUnauthorizedMiddleware.ts","../src/modules/apiClient/createApiClient.ts","../src/utils/getNonce/fetchAndStoreNonces/fetchAndStoreNonces.ts","../src/modules/wallets/constants.ts","../src/utils/getChainFromVerifiedCredentialChain/getChainFromVerifiedCredentialChain.ts","../src/constants.ts","../src/modules/waas/constants.ts","../src/errors/InvalidParamError.ts"],"sourcesContent":["","import type { DynamicClient } from '../../types';\nimport type { DynamicCore } from '../types';\n\nexport const getCore = (client: DynamicClient): DynamicCore => {\n // @ts-expect-error - this was hidden from the public API\n return client.__core;\n};\n","import { version } from '../../../package.json';\n\nexport type BaseErrorParameters = {\n /** The underlying error that caused this error, if any */\n cause: Error | null;\n /** The error unique code */\n code: string;\n /** Additional detailed information about the error */\n details?: string;\n /** URL to relevant documentation for this error */\n docsUrl: string | null;\n /** Array of additional contextual messages to be displayed */\n metaMessages?: string[];\n /** Custom name for the error. Defaults to 'BaseError' if not provided */\n name: string;\n /** A brief, human-readable description of the error */\n shortMessage: string;\n};\n\nconst getDetails = ({ details, cause }: BaseErrorParameters) => {\n if (cause instanceof BaseError) {\n return cause.details;\n }\n\n if (cause?.message) {\n return cause.message;\n }\n\n return details;\n};\n\n/**\n * Formats the error message with all available information\n */\nconst formatMessage = ({\n shortMessage,\n details,\n docsUrl,\n metaMessages,\n}: BaseErrorParameters) => {\n return [\n '[Dynamic JS SDK]',\n shortMessage,\n '',\n ...(metaMessages ? [...metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n `Version: ${version}`,\n `Timestamp: ${new Date().toISOString()}`,\n ].join('\\n');\n};\n\n/**\n * Base error class that provides structured error handling with detailed information\n */\nexport abstract class BaseError extends Error {\n /** The error unique code */\n code: string;\n details: string | undefined;\n private readonly formattedMessage: string | undefined;\n override name = 'BaseError';\n override cause: BaseError | Error | undefined;\n\n constructor(args: BaseErrorParameters) {\n const details = getDetails(args);\n const formattedMessage = formatMessage({ ...args, details });\n super(\n args.shortMessage ?? formattedMessage,\n args.cause ? { cause: args.cause } : undefined\n );\n\n this.formattedMessage = formattedMessage;\n this.details = details;\n this.name = args.name ?? this.name;\n this.cause = args.cause ?? this.cause;\n this.code = args.code;\n }\n\n /**\n * Walks the cause chain of the error and returns the root error\n */\n walk(): Error | undefined {\n const cause = this.cause;\n\n if (cause instanceof BaseError) {\n return cause.walk();\n }\n\n return cause;\n }\n\n override toString() {\n return this.formattedMessage;\n }\n}\n","import { BaseError } from './base';\n\nexport class ClientNotFoundError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'client_not_found_error',\n docsUrl: null,\n name: 'ClientNotFoundError',\n shortMessage:\n 'No Dynamic client has been created yet. Make sure you have called createDynamicClient() first.',\n });\n }\n}\n","import { ClientNotFoundError } from '../../errors/ClientNotFoundError';\nimport { getCore } from '../core/getCore';\nimport type { DynamicClient } from '../types';\n\nlet defaultClient: DynamicClient | null = null;\nlet numOfInitializedClients = 0;\n\n/**\n * Returns the DynamicClient instance that was initialized with createDynamicClient.\n *\n * If more than one instance of DynamicClient was initialized, you should not use this function.\n * Instead, you should pass the client instance you stored to the function that needs it.\n */\nexport const getDefaultClient = (): DynamicClient => {\n if (!defaultClient) {\n throw new ClientNotFoundError();\n }\n\n if (numOfInitializedClients > 1) {\n const core = getCore(defaultClient);\n core.logger.debug(\n 'Multiple instances of DynamicClient found. If you are only using one client (recommended), make sure you are not calling ' +\n '\"createDynamicClient\" multiple times. If you are using multiple clients, make sure you are passing which client to use as ' +\n 'the last param of all Dynamic functions.'\n );\n }\n\n return defaultClient;\n};\n\nexport const setDefaultClient = (client: DynamicClient) => {\n defaultClient = client;\n numOfInitializedClients++;\n};\n","export const NONCE_POOL_EXPIRATION_TIME = 60000 * 60 * 24;\n\nexport const NONCE_POOL_SIZE = 5;\n","import { dependencies } from '../../../package.json';\n\nexport const DYNAMIC_API_VERSION_HEADER = 'x-dyn-api-version';\n\nexport const DYNAMIC_REQUEST_ID_HEADER = 'x-dyn-request-id';\n\nexport const DYNAMIC_SDK_VERSION_HEADER = 'x-dyn-version';\n\nexport const ELEVATED_ACCESS_TOKEN_HEADER = 'x-dyn-elevated-access-token';\n\nexport const MFA_TOKEN_HEADER = 'x-mfa-auth-token';\n\nexport const SESSION_PUBLIC_KEY_HEADER = 'x-dyn-session-public-key';\n\nexport const DYNAMIC_SDK_API_VERSION =\n dependencies['@dynamic-labs/sdk-api-core'];\n\nexport const DYNAMIC_SDK_SESSION_ID_HEADER = 'x-dyn-session-id';\n\nexport const CLIENT_SDK_NAME = 'ClientSDK';\n","const DEFAULT_CHARS =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\ntype RandomStringParams = {\n chars?: string;\n length: number;\n};\n\nexport const randomString = ({ chars = DEFAULT_CHARS, length }: RandomStringParams) => {\n const bytes = new Uint8Array(length);\n crypto.getRandomValues(bytes);\n\n let result = '';\n for (let i = 0; i < length; i++) {\n result += chars[bytes[i] % chars.length];\n }\n return result;\n};\n","import { BaseError } from './base';\n\nexport class ValueMustBeDefinedError extends BaseError {\n constructor(message: string) {\n super({\n cause: null,\n code: 'value_must_be_defined_error',\n docsUrl: null,\n name: 'ValueMustBeDefined',\n shortMessage: message,\n });\n }\n}\n","/* eslint-disable func-style -- javascript requires this to be a function */\n\nimport { ValueMustBeDefinedError } from './../../errors/ValueMustBeDefinedError';\n\n/**\n * Asserts that a value is not null or undefined, throwing an error if it is.\n * This function acts as a type guard, narrowing the type to exclude null and undefined.\n *\n * @template T - The type of the value being checked\n * @param value - The value to check for null or undefined\n * @param message - The error message to throw if the value is null or undefined\n * @throws Throws an error with the provided message if value is null or undefined\n * @example\n * ```typescript\n * const maybeString: string | null = getValue();\n * assertDefined(maybeString, 'String value is required');\n * // maybeString is now typed as string (null is excluded)\n * ```\n */\nexport function assertDefined<T>(\n value: T,\n message: string\n): asserts value is Exclude<NonNullable<T>, void> {\n if (value === null || value === undefined) {\n throw new ValueMustBeDefinedError(message);\n }\n}\n","import { AuthStorageEnum } from '@dynamic-labs/sdk-api-core';\n\nimport type { DynamicClient } from '../../../client/types';\nimport { assertDefined } from '../../../utils/assertDefined';\n\n/**\n * Returns true if the client is using Dynamic cookies or a BYO JWT cookie.\n */\nexport const isCookieEnabled = (client: DynamicClient): boolean => {\n assertDefined(client.projectSettings, 'Project settings are not defined');\n\n const securitySettings = client.projectSettings.security;\n\n if (!securitySettings) return false;\n\n // client uses Dynamic cookies\n const dynamicCookiesEnabled = (securitySettings.auth?.storage || []).includes(\n AuthStorageEnum.Cookie\n );\n\n // BYO JWT client puts their non-Dynamic JWT in a cookie\n const byoJwtCookieEnabled = Boolean(\n securitySettings.externalAuth?.cookieName\n );\n\n // should return true for both of these scenarios\n // because we also need to do `credentials: true` in api.ts when\n // a byo jwt client sets their named cookie for their jwt and\n // needs to send it to our backend\n return dynamicCookiesEnabled || byoJwtCookieEnabled;\n};\n","import { getCore } from '../../../client/core/getCore';\nimport type { DynamicClient } from '../../../client/types';\nimport type { SessionKeys } from '../sessionKeys.types';\n\nexport const getSessionKeys = (client: DynamicClient): SessionKeys | undefined => {\n const core = getCore(client);\n\n const publicKey = core.state.get().sessionKeys;\n\n if (!publicKey) {\n return undefined;\n }\n\n return { publicKey };\n};\n","import { getCore } from '../../../client/core/getCore';\nimport { getDefaultClient } from '../../../client/defaultClient';\n\ntype GetElevatedAccessTokenParams = {\n /**\n * Whether to consume single-use tokens after retrieval.\n * Set to `false` to check for token existence without side-effects.\n * @default true\n */\n consume?: boolean;\n scope: string;\n};\n\n/**\n * Gets an elevated access token by scope.\n *\n * This function retrieves an elevated access token that contains the specified scope.\n * Expired tokens are automatically filtered out.\n *\n * By default, if the token has `singleUse: true`, it will be automatically\n * consumed (removed from state) after retrieval. Pass `consume: false` to\n * check for token existence without consuming it.\n *\n * @param params - The parameters object.\n * @param params.scope - The scope to match (e.g., 'wallet:export').\n * @param params.consume - Whether to consume single-use tokens (default: true).\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns The elevated access token if found and not expired, or undefined if not found or expired.\n *\n * @example\n * ```typescript\n * // Retrieve and consume (default)\n * const token = getElevatedAccessToken({ scope: 'wallet:export' });\n *\n * // Check existence without consuming\n * const token = getElevatedAccessToken({ scope: 'credential:unlink', consume: false });\n * ```\n */\nexport const getElevatedAccessToken = (\n { consume = true, scope }: GetElevatedAccessTokenParams,\n client = getDefaultClient()\n): string | undefined => {\n const core = getCore(client);\n\n const now = new Date();\n const elevatedAccessTokens = core.state.get().elevatedAccessTokens || [];\n\n // Filter out expired tokens\n const validTokens = elevatedAccessTokens.filter(\n (token) => !token.expiresAt || token.expiresAt > now\n );\n\n // Remove expired tokens from state if any were found\n if (validTokens.length !== elevatedAccessTokens.length) {\n core.state.set({\n elevatedAccessTokens: validTokens,\n });\n }\n\n const token = validTokens.find((token) => token.scopes.includes(scope));\n\n if (!token) {\n return undefined;\n }\n\n // Check if token should be consumed based on singleUse property\n if (consume && token.singleUse) {\n const updatedTokens = validTokens.filter((t) => t !== token);\n core.state.set({\n elevatedAccessTokens: updatedTokens,\n });\n }\n\n return token.token;\n};\n","import { BaseError } from '../base';\n\nexport class APIError extends BaseError {\n status: number;\n\n constructor(message: string, code: string, status: number) {\n super({\n cause: null,\n code,\n docsUrl: null,\n name: 'APIError',\n shortMessage: message,\n });\n\n this.status = status;\n }\n\n static async fromResponse(response: Response) {\n try {\n const errorBody = await response.clone().json();\n\n if (\n errorBody &&\n 'error' in errorBody &&\n typeof errorBody.error === 'string'\n ) {\n const errorCode =\n 'code' in errorBody && typeof errorBody.code === 'string'\n ? errorBody.code\n : 'unknown_error';\n\n return new APIError(errorBody.error, errorCode, response.status);\n }\n\n return null;\n } catch {\n return null;\n }\n }\n}\n","import { BaseError, type BaseErrorParameters } from './base';\n\nexport class InvalidExternalAuthError extends BaseError {\n constructor({ cause }: Pick<BaseErrorParameters, 'cause'>) {\n super({\n cause,\n code: 'invalid_external_auth_error',\n docsUrl:\n 'https://www.dynamic.xyz/docs/external-auth/third-party-auth-overview',\n name: 'InvalidExternalAuthError',\n shortMessage: 'Error authenticating with external JWT',\n });\n }\n}\n","import { BaseError, type BaseErrorParameters } from './base';\n\nexport class LinkCredentialError extends BaseError {\n constructor({ cause }: Pick<BaseErrorParameters, 'cause'>) {\n super({\n cause,\n code: 'link_credential_error',\n docsUrl: null,\n name: 'LinkCredentialError',\n shortMessage:\n 'The credential you are trying to link is associated with another account and cannot be reassigned.',\n });\n }\n}\n","import { BaseError, type BaseErrorParameters } from './base';\n\nexport class MfaInvalidOtpError extends BaseError {\n constructor({ cause }: Pick<BaseErrorParameters, 'cause'>) {\n super({\n cause,\n code: 'mfa_invalid_otp_error',\n docsUrl: null,\n name: 'MfaInvalidOtpError',\n shortMessage: 'Invalid OTP',\n });\n }\n}\n","import { BaseError, type BaseErrorParameters } from './base';\n\nexport class MfaRateLimitedError extends BaseError {\n constructor({ cause }: Pick<BaseErrorParameters, 'cause'>) {\n super({\n cause,\n code: 'mfa_rate_limited_error',\n docsUrl: null,\n name: 'MfaRateLimitedError',\n shortMessage: 'Rate limited',\n });\n }\n}\n","import { BaseError, type BaseErrorParameters } from './base';\n\nexport class SandboxMaximumThresholdReachedError extends BaseError {\n constructor({ cause }: Pick<BaseErrorParameters, 'cause'>) {\n super({\n cause,\n code: 'sandbox_maximum_threshold_reached_error',\n docsUrl:\n 'https://www.dynamic.xyz/docs/developer-dashboard/sandbox-vs-live#sandbox-vs-live',\n name: 'SandboxMaximumThresholdReachedError',\n shortMessage:\n 'Your sandbox environment has reached the maximum MAU. Please use a live environment for production traffic.',\n });\n }\n}\n","import { APIError } from '../../../../errors/APIError';\nimport { InvalidExternalAuthError } from '../../../../errors/InvalidExternalAuthError';\nimport { LinkCredentialError } from '../../../../errors/LinkCredentialError';\nimport { MfaInvalidOtpError } from '../../../../errors/MfaInvalidOtpError';\nimport { MfaRateLimitedError } from '../../../../errors/MfaRateLimitedError';\nimport { SandboxMaximumThresholdReachedError } from '../../../../errors/SandboxMaximumThresholdReachedError';\nimport type { ErrorMapper } from '../../apiClient.types';\n\n/**\n * Default error mapper for the client that handles common API error codes.\n *\n * This mapper transforms specific API error codes into more specific error types:\n * - `mfa_invalid_code` → `MfaInvalidOtpError`\n * - `mfa_rate_limited` → `MfaRateLimitedError`\n *\n * @param error - The error to be mapped\n * @returns A transformed error if the error code matches a known pattern, or null if no transformation is needed\n *\n * @example\n * ```typescript\n * // This will be automatically applied to all API errors\n * const apiClient = createApiClient({}, client);\n *\n * // The clientErrorMapper will automatically convert mfa_invalid_code errors\n * // to MfaInvalidOtpError instances\n * ```\n */\nexport const clientErrorMapper: ErrorMapper = (error) => {\n if (error instanceof APIError) {\n if (error.code === 'mfa_invalid_code') {\n return new MfaInvalidOtpError({ cause: error });\n }\n\n if (error.code === 'mfa_rate_limited') {\n return new MfaRateLimitedError({ cause: error });\n }\n\n if (error.code === 'invalid_external_auth') {\n return new InvalidExternalAuthError({ cause: error });\n }\n\n if (error.code === 'sandbox_maximum_threshold_reached') {\n return new SandboxMaximumThresholdReachedError({ cause: error });\n }\n\n if (\n error.code === 'merge_accounts_invalid' ||\n error.code === 'reassign_wallet_error'\n ) {\n return new LinkCredentialError({ cause: error });\n }\n }\n\n return null;\n};\n","import type { Middleware, ResponseContext } from '@dynamic-labs/sdk-api-core';\n\nimport { APIError } from '../../../../errors/APIError';\nimport type { ErrorMapper } from '../../apiClient.types';\n\ntype CreateConvertToApiErrorMiddlewareOptions = {\n errorMappers?: ErrorMapper[];\n};\n\n/**\n * Creates middleware that converts HTTP error responses to APIError instances\n * and optionally applies custom error mappers to transform them into specific error types.\n *\n * @param options.errorMappers - Array of error mappers to apply to API errors\n * @returns A middleware function that handles error conversion and mapping\n */\nexport const createConvertToApiErrorMiddleware = ({\n errorMappers = [],\n}: CreateConvertToApiErrorMiddlewareOptions): Middleware => ({\n post: async (context: ResponseContext) => {\n if (context.response.status >= 400) {\n const apiError = await APIError.fromResponse(context.response);\n\n if (apiError) {\n let errorToThrow: Error = apiError;\n\n for (const mapper of errorMappers) {\n const newError = mapper(apiError);\n\n if (newError) {\n errorToThrow = newError;\n break;\n }\n }\n\n throw errorToThrow;\n }\n }\n\n return context.response;\n },\n});\n","import { getCore } from '../../client/core/getCore';\nimport type { DynamicClient } from '../../client/types';\nimport { fetchAndStoreNonces } from './fetchAndStoreNonces/fetchAndStoreNonces';\n\n/**\n * Returns a nonce for wallet ownership verification.\n *\n * Pops the first nonce from the prefetched pool. When the pool is running low\n * (≤1 remaining after pop) a background refetch is triggered. If the pool is\n * empty, nonces are fetched on-demand before returning.\n */\nexport const getNonce = async (\n client: DynamicClient\n): Promise<string> => {\n const core = getCore(client);\n const pool = core.state.get().prefetchedNonces;\n\n if (pool.length > 0) {\n const [nonce, ...remaining] = pool;\n\n core.state.set({ prefetchedNonces: remaining });\n\n if (remaining.length <= 1) {\n void fetchAndStoreNonces(client);\n }\n\n return nonce;\n }\n\n await fetchAndStoreNonces(client);\n\n return getNonce(client);\n};\n","import { getCore } from '../../../client/core/getCore';\nimport type { DynamicClient } from '../../../client/types';\nimport type { DeviceSigner } from '../../../services/deviceSigner';\n\nexport const getDeviceSigner = async (\n client: DynamicClient\n): Promise<DeviceSigner> => {\n const { deviceSigner, keychain } = getCore(client);\n\n /**\n * If the device signer is available, it should handle the device signing.\n * This is used for mobile devices with secure enclave.\n */\n if (deviceSigner) {\n return deviceSigner;\n }\n\n const keyName = 'device';\n\n const existingPublicKey = await keychain.getPublicKey(keyName);\n\n if (!existingPublicKey) {\n await keychain.generateKey(keyName);\n }\n\n return {\n getPublicKey: () => keychain.getPublicKey(keyName) as Promise<string>,\n sign: (payload: string) => keychain.sign(keyName, payload),\n };\n};\n","import type { DynamicClient } from '../../../client/types';\nimport { assertDefined } from '../../../utils/assertDefined';\nimport { getNonce } from '../../../utils/getNonce';\nimport { isCookieEnabled } from '../../projectSettings/isCookieEnabled';\nimport { getDeviceSigner } from '../getDeviceSigner';\n\nexport const getHeadersForNonceSignedByDeviceSigners = async (\n client: DynamicClient\n): Promise<Record<string, string>> => {\n const { projectSettings } = client;\n\n assertDefined(projectSettings, 'Project settings not found');\n\n /**\n * For cookie based environments, the device registration is handled\n * by settings the cookie in the browser.\n * Then we dont need to provide the headers\n */\n if (isCookieEnabled(client)) {\n return {};\n }\n\n const deviceSigner = await getDeviceSigner(client);\n\n const nonce = await getNonce(client);\n\n const signedNonce = await deviceSigner.sign(nonce);\n const publicKey = await deviceSigner.getPublicKey();\n\n return {\n 'x-dynamic-device-nonce': nonce,\n 'x-dynamic-device-publickey': publicKey,\n 'x-dynamic-device-signed-nonce': signedNonce,\n };\n};\n","import type { Middleware } from '@dynamic-labs/sdk-api-core';\nimport { isDeviceNonceSignatureRequiredForUrl } from '@dynamic-labs/sdk-api-core';\n\nimport type { DynamicClient } from '../../../../client/types';\nimport { getHeadersForNonceSignedByDeviceSigners } from '../../../deviceRegistration/getHeadersForNonceSignedByDeviceSigners';\nimport { isCookieEnabled } from '../../../projectSettings/isCookieEnabled';\n\nexport const createDeviceSignatureHeadersMiddleware = (\n client: DynamicClient\n): Middleware => {\n return {\n pre: async (context) => {\n /**\n * The signed nonce is not required for cookie based environments.\n */\n if (\n isDeviceNonceSignatureRequiredForUrl(context.url) &&\n !isCookieEnabled(client)\n ) {\n const deviceSignerHeaders = await getHeadersForNonceSignedByDeviceSigners(\n client\n );\n\n return {\n init: {\n ...context.init,\n headers: {\n ...context.init.headers,\n ...deviceSignerHeaders,\n },\n },\n url: context.url,\n };\n }\n\n return;\n },\n };\n};\n","import { BaseError, type BaseErrorParameters } from './base';\n\nexport class UnauthorizedError extends BaseError {\n constructor({ cause }: Pick<BaseErrorParameters, 'cause'>) {\n super({\n cause,\n code: 'unauthorized_error',\n docsUrl: null,\n name: 'UnauthorizedError',\n shortMessage: 'Unauthorized',\n });\n }\n}\n","import type { Middleware, ResponseContext } from '@dynamic-labs/sdk-api-core';\n\nimport { UnauthorizedError } from '../../../../errors/UnauthorizedError';\n\nexport const createUnauthorizedMiddleware = (): Middleware => ({\n post: async (context: ResponseContext) => {\n if (context.response.status === 401) {\n let cause: Error | null = null;\n\n try {\n const errorBody = await context.response.clone().json();\n\n if (\n errorBody &&\n 'error' in errorBody &&\n typeof errorBody.error === 'string'\n ) {\n // eslint-disable-next-line no-restricted-syntax\n cause = new Error(errorBody.error);\n }\n } catch {\n // Response body isn't valid JSON — proceed without a cause\n }\n\n throw new UnauthorizedError({ cause });\n }\n\n return context.response;\n },\n});\n","import { Configuration, SDKApi } from '@dynamic-labs/sdk-api-core';\n\nimport { version } from '../../../package.json';\nimport { getCore } from '../../client/core/getCore';\nimport type { DynamicClient } from '../../client/types';\nimport { randomString } from '../../utils/randomString';\nimport { isCookieEnabled } from '../projectSettings/isCookieEnabled';\nimport { getSessionKeys } from '../sessionKeys/getSessionKeys';\nimport type { CreateApiClientOptions } from './apiClient.types';\nimport { getElevatedAccessToken } from '../auth/getElevatedAccessToken';\nimport {\n CLIENT_SDK_NAME,\n DYNAMIC_API_VERSION_HEADER,\n DYNAMIC_REQUEST_ID_HEADER,\n DYNAMIC_SDK_API_VERSION,\n DYNAMIC_SDK_SESSION_ID_HEADER,\n DYNAMIC_SDK_VERSION_HEADER,\n ELEVATED_ACCESS_TOKEN_HEADER,\n MFA_TOKEN_HEADER,\n SESSION_PUBLIC_KEY_HEADER,\n} from './constants';\nimport { clientErrorMapper } from './utils/clientErrorMapper';\nimport { createConvertToApiErrorMiddleware } from './utils/convertToApiErrorMiddleware/convertToApiErrorMiddleware';\nimport { createDeviceSignatureHeadersMiddleware } from './utils/deviceSignatureHeadersMiddleware';\nimport { createUnauthorizedMiddleware } from './utils/unauthorizedMiddleware/createUnauthorizedMiddleware';\n\ntype ISettings = {\n basePath: string;\n credentials?: 'include';\n headers: {\n Authorization?: string;\n 'Content-Type': string;\n [DYNAMIC_API_VERSION_HEADER]: string;\n [DYNAMIC_REQUEST_ID_HEADER]: string;\n [DYNAMIC_SDK_SESSION_ID_HEADER]: string;\n [DYNAMIC_SDK_VERSION_HEADER]: string;\n [ELEVATED_ACCESS_TOKEN_HEADER]?: string;\n [MFA_TOKEN_HEADER]?: string;\n [SESSION_PUBLIC_KEY_HEADER]?: string;\n };\n};\n\n/**\n * Returns a new instance of the SDK API client.\n *\n * This is not meant for storing, as it is very light we can create it whenever needed.\n */\nexport const createApiClient = (\n options: CreateApiClientOptions = {},\n client: DynamicClient\n) => {\n const core = getCore(client);\n const coreState = core.state.get();\n\n const settings: ISettings = {\n basePath: core.apiBaseUrl,\n headers: {\n 'Content-Type': 'application/json',\n [DYNAMIC_API_VERSION_HEADER]: `API/${DYNAMIC_SDK_API_VERSION}`,\n [DYNAMIC_REQUEST_ID_HEADER]: randomString({ length: 50 }),\n [DYNAMIC_SDK_SESSION_ID_HEADER]: core.sdkSessionId,\n [DYNAMIC_SDK_VERSION_HEADER]: `${CLIENT_SDK_NAME}/${version}`,\n ...core.getApiHeaders(),\n ...options.headers,\n },\n };\n\n if (client.token) {\n settings.headers.Authorization = `Bearer ${client.token}`;\n }\n\n if (client.projectSettings && isCookieEnabled(client)) {\n settings.credentials = 'include';\n }\n\n if (options.includeMfaToken && coreState.mfaToken) {\n settings.headers[MFA_TOKEN_HEADER] = coreState.mfaToken;\n }\n\n if (options.elevatedAccessTokenScope) {\n const elevatedToken = getElevatedAccessToken(\n { scope: options.elevatedAccessTokenScope },\n client\n );\n if (elevatedToken) {\n settings.headers[ELEVATED_ACCESS_TOKEN_HEADER] = elevatedToken;\n }\n }\n\n const sessionPublicKey = getSessionKeys(client)?.publicKey;\n\n // This check is required to avoid overriding the session public key header\n // that is set by any of our other SDKs using the Dynamic Client SDK.\n const isSessionPublicKeyHeaderPresent =\n settings.headers[SESSION_PUBLIC_KEY_HEADER] !== undefined;\n\n if (sessionPublicKey && !isSessionPublicKeyHeaderPresent) {\n settings.headers[SESSION_PUBLIC_KEY_HEADER] = sessionPublicKey;\n }\n\n return new SDKApi(\n new Configuration({\n ...settings,\n fetchApi: core.fetch,\n middleware: [\n createDeviceSignatureHeadersMiddleware(client),\n createConvertToApiErrorMiddleware({\n errorMappers: [...(options.errorMappers || []), clientErrorMapper],\n }),\n createUnauthorizedMiddleware(),\n ],\n })\n );\n};\n","import { getCore } from '../../../client/core/getCore';\nimport type { DynamicClient } from '../../../client/types';\nimport { createApiClient } from '../../../modules/apiClient';\nimport { NONCE_POOL_EXPIRATION_TIME, NONCE_POOL_SIZE } from '../constants';\n\n/**\n * Fetches a batch of nonces from the API.\n *\n * Prefetching is critical for iOS deep link wallet providers (e.g. Phantom\n * redirect). On iOS, a network request (like fetching a nonce) between a user\n * action and a deeplink call will break the gesture chain, causing iOS to\n * silently ignore the deeplink. By prefetching nonces ahead of time,\n * `getNonce` can return synchronously from cache and the deeplink fires\n * without an interrupting network round-trip.\n */\nexport const fetchAndStoreNonces = async (\n client: DynamicClient\n): Promise<void> => {\n const core = getCore(client);\n\n const { environmentId } = core;\n\n const apiClient = createApiClient({}, client);\n\n const { nonces } = await apiClient.getNonces({\n count: NONCE_POOL_SIZE,\n environmentId,\n });\n\n core.state.set({\n prefetchedNonces: nonces,\n prefetchedNoncesExpiration: Date.now() + NONCE_POOL_EXPIRATION_TIME,\n });\n};\n","import type { Chain } from '../chain';\n\ntype ChainInfo = {\n apiChainName: string;\n blockchainName: string;\n verifiedCredentialChainName: string;\n waasChainNameOverride?: string;\n};\n\nexport const CHAINS_INFO_MAP: Record<Chain, ChainInfo> = {\n ALEO: {\n apiChainName: 'aleo',\n blockchainName: 'Aleo',\n verifiedCredentialChainName: 'aleo',\n },\n ALGO: {\n apiChainName: 'algo',\n blockchainName: 'Algorand',\n verifiedCredentialChainName: 'algorand',\n },\n APTOS: {\n apiChainName: 'aptos',\n blockchainName: 'Aptos',\n verifiedCredentialChainName: 'aptos',\n },\n BTC: {\n apiChainName: 'bitcoin',\n blockchainName: 'Bitcoin',\n verifiedCredentialChainName: 'bip122',\n },\n COSMOS: {\n apiChainName: 'cosmos',\n blockchainName: 'Cosmos',\n verifiedCredentialChainName: 'cosmos',\n },\n ECLIPSE: {\n apiChainName: 'eclipse',\n blockchainName: 'Eclipse',\n verifiedCredentialChainName: 'eclipse',\n },\n EVM: {\n apiChainName: 'evm',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n blockchainName: 'Ethereum',\n verifiedCredentialChainName: 'eip155',\n },\n FLOW: {\n apiChainName: 'flow',\n blockchainName: 'Flow',\n verifiedCredentialChainName: 'flow',\n },\n SOL: {\n apiChainName: 'solana',\n blockchainName: 'Solana',\n verifiedCredentialChainName: 'solana',\n waasChainNameOverride: 'SVM',\n },\n SPARK: {\n apiChainName: 'spark',\n blockchainName: 'Spark',\n verifiedCredentialChainName: 'spark',\n },\n STARK: {\n apiChainName: 'starknet',\n blockchainName: 'Starknet',\n verifiedCredentialChainName: 'starknet',\n },\n STELLAR: {\n apiChainName: 'stellar',\n blockchainName: 'Stellar',\n verifiedCredentialChainName: 'stellar',\n },\n SUI: {\n apiChainName: 'sui',\n blockchainName: 'Sui',\n verifiedCredentialChainName: 'sui',\n },\n TEMPO: {\n apiChainName: 'tempo',\n blockchainName: 'Tempo',\n verifiedCredentialChainName: 'tempo',\n },\n TON: {\n apiChainName: 'ton',\n blockchainName: 'TON',\n verifiedCredentialChainName: 'ton',\n },\n TRON: {\n apiChainName: 'tron',\n blockchainName: 'Tron',\n verifiedCredentialChainName: 'tron',\n },\n};\n","import type { Chain } from '../../modules/chain';\nimport { CHAINS_INFO_MAP } from '../../modules/wallets/constants';\nimport { assertDefined } from '../assertDefined';\n\nexport const getChainFromVerifiedCredentialChain = (\n verifiedCredentialChain: string\n): Chain => {\n const chains = Object.keys(CHAINS_INFO_MAP) as Chain[];\n\n const chain = chains.find(\n (chain) =>\n CHAINS_INFO_MAP[chain].verifiedCredentialChainName ===\n verifiedCredentialChain\n );\n\n assertDefined(chain, `Unknown chain: ${verifiedCredentialChain}`);\n\n return chain;\n};\n","import { dependencies } from '../package.json';\n\nexport const SDK_API_CORE_VERSION = dependencies['@dynamic-labs/sdk-api-core'];\n\nexport const DYNAMIC_ICONIC_SPRITE_URL =\n 'https://iconic.dynamic-static-assets.com/icons/sprite.svg';\n","import { DYNAMIC_ICONIC_SPRITE_URL } from '../../constants';\n\nexport const DEFAULT_WAAS_BASE_API_URL = 'https://app.dynamicauth.com';\nexport const DEFAULT_WAAS_BASE_MPC_RELAY_API_URL =\n 'https://relay.dynamicauth.com';\n\nexport const DYNAMIC_WAAS_METADATA = {\n displayName: 'Dynamic WaaS',\n icon: `${DYNAMIC_ICONIC_SPRITE_URL}#dynamicwaas`,\n normalizedWalletName: 'dynamicwaas',\n};\n","import { BaseError } from './base';\n\nexport class InvalidParamError extends BaseError {\n constructor(message: string) {\n super({\n cause: null,\n code: 'invalid_param_error',\n docsUrl: null,\n name: 'InvalidParamError',\n shortMessage: message,\n });\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { L as BaseError, P as getDefaultClient, R as getCore, u as createApiClient } from "./InvalidParamError-3-1rSNtf.esm.js";
2
- import { r as updateAuthFromVerifyResponse } from "./getVerifiedCredentialForWalletAccount-DLtDL1Gl.esm.js";
1
+ import { F as getCore, P as BaseError, j as getDefaultClient, u as createApiClient } from "./InvalidParamError-C8bqZx25.esm.js";
2
+ import { r as updateAuthFromVerifyResponse } from "./getVerifiedCredentialForWalletAccount-Cs7AcMKQ.esm.js";
3
3
 
4
4
  //#region src/modules/user/refreshAuth/refreshAuth.ts
5
5
  /**
@@ -34,4 +34,4 @@ var NotWaasWalletAccountError = class extends BaseError {
34
34
 
35
35
  //#endregion
36
36
  export { refreshAuth as n, NotWaasWalletAccountError as t };
37
- //# sourceMappingURL=NotWaasWalletAccountError-DVIcEgHJ.esm.js.map
37
+ //# sourceMappingURL=NotWaasWalletAccountError-C-_6uyUM.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotWaasWalletAccountError-DVIcEgHJ.esm.js","names":[],"sources":["../src/modules/user/refreshAuth/refreshAuth.ts","../src/errors/NotWaasWalletAccountError.ts"],"sourcesContent":["import type { VerifyResponse } from '@dynamic-labs/sdk-api-core';\n\nimport { getCore } from '../../../client/core/getCore';\nimport { getDefaultClient } from '../../../client/defaultClient';\nimport { createApiClient } from '../../apiClient';\nimport { updateAuthFromVerifyResponse } from '../../auth/updateAuthFromVerifyResponse';\n\n/**\n * Refreshes the current user's data from the server.\n *\n * This function fetches the latest user information and token from the backend\n * updating the local user and token states with any changes.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the verify response.\n */\nexport const refreshAuth = async (\n client = getDefaultClient()\n): Promise<VerifyResponse> => {\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const response = await apiClient.refreshAuth({\n environmentId: core.environmentId,\n });\n\n updateAuthFromVerifyResponse({ response }, client);\n\n return response;\n};\n","import { BaseError } from './base';\n\ntype NotWaasWalletAccountErrorParams = {\n walletAddress: string;\n};\n\nexport class NotWaasWalletAccountError extends BaseError {\n constructor({ walletAddress }: NotWaasWalletAccountErrorParams) {\n super({\n cause: null,\n code: 'not_waas_wallet_account_error',\n docsUrl: null,\n name: 'NotWaasWalletAccountError',\n shortMessage: `Wallet account ${walletAddress} is not a Dynamic WaaS wallet account`,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAa,cAAc,OACzB,SAAS,kBAAkB,KACC;CAC5B,MAAM,OAAO,QAAQ,OAAO;CAG5B,MAAM,WAAW,MAFC,gBAAgB,EAAE,EAAE,OAAO,CAEZ,YAAY,EAC3C,eAAe,KAAK,eACrB,CAAC;AAEF,8BAA6B,EAAE,UAAU,EAAE,OAAO;AAElD,QAAO;;;;;ACtBT,IAAa,4BAAb,cAA+C,UAAU;CACvD,YAAY,EAAE,iBAAkD;AAC9D,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc,kBAAkB,cAAc;GAC/C,CAAC"}
1
+ {"version":3,"file":"NotWaasWalletAccountError-C-_6uyUM.esm.js","names":[],"sources":["../src/modules/user/refreshAuth/refreshAuth.ts","../src/errors/NotWaasWalletAccountError.ts"],"sourcesContent":["import type { VerifyResponse } from '@dynamic-labs/sdk-api-core';\n\nimport { getCore } from '../../../client/core/getCore';\nimport { getDefaultClient } from '../../../client/defaultClient';\nimport { createApiClient } from '../../apiClient';\nimport { updateAuthFromVerifyResponse } from '../../auth/updateAuthFromVerifyResponse';\n\n/**\n * Refreshes the current user's data from the server.\n *\n * This function fetches the latest user information and token from the backend\n * updating the local user and token states with any changes.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the verify response.\n */\nexport const refreshAuth = async (\n client = getDefaultClient()\n): Promise<VerifyResponse> => {\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const response = await apiClient.refreshAuth({\n environmentId: core.environmentId,\n });\n\n updateAuthFromVerifyResponse({ response }, client);\n\n return response;\n};\n","import { BaseError } from './base';\n\ntype NotWaasWalletAccountErrorParams = {\n walletAddress: string;\n};\n\nexport class NotWaasWalletAccountError extends BaseError {\n constructor({ walletAddress }: NotWaasWalletAccountErrorParams) {\n super({\n cause: null,\n code: 'not_waas_wallet_account_error',\n docsUrl: null,\n name: 'NotWaasWalletAccountError',\n shortMessage: `Wallet account ${walletAddress} is not a Dynamic WaaS wallet account`,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAa,cAAc,OACzB,SAAS,kBAAkB,KACC;CAC5B,MAAM,OAAO,QAAQ,OAAO;CAG5B,MAAM,WAAW,MAFC,gBAAgB,EAAE,EAAE,OAAO,CAEZ,YAAY,EAC3C,eAAe,KAAK,eACrB,CAAC;AAEF,8BAA6B,EAAE,UAAU,EAAE,OAAO;AAElD,QAAO;;;;;ACtBT,IAAa,4BAAb,cAA+C,UAAU;CACvD,YAAY,EAAE,iBAAkD;AAC9D,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc,kBAAkB,cAAc;GAC/C,CAAC"}
@@ -1,5 +1,5 @@
1
- const require_InvalidParamError = require('./InvalidParamError-zIxsXkiH.cjs.js');
2
- const require_getVerifiedCredentialForWalletAccount = require('./getVerifiedCredentialForWalletAccount-D25Vyxub.cjs.js');
1
+ const require_InvalidParamError = require('./InvalidParamError-DvFYOkxL.cjs.js');
2
+ const require_getVerifiedCredentialForWalletAccount = require('./getVerifiedCredentialForWalletAccount-CyLnpS2G.cjs.js');
3
3
 
4
4
  //#region src/modules/user/refreshAuth/refreshAuth.ts
5
5
  /**
@@ -45,4 +45,4 @@ Object.defineProperty(exports, 'refreshAuth', {
45
45
  return refreshAuth;
46
46
  }
47
47
  });
48
- //# sourceMappingURL=NotWaasWalletAccountError-B_Wl6sTh.cjs.js.map
48
+ //# sourceMappingURL=NotWaasWalletAccountError-CHSFUjd9.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotWaasWalletAccountError-B_Wl6sTh.cjs.js","names":["getDefaultClient","getCore","createApiClient","BaseError"],"sources":["../src/modules/user/refreshAuth/refreshAuth.ts","../src/errors/NotWaasWalletAccountError.ts"],"sourcesContent":["import type { VerifyResponse } from '@dynamic-labs/sdk-api-core';\n\nimport { getCore } from '../../../client/core/getCore';\nimport { getDefaultClient } from '../../../client/defaultClient';\nimport { createApiClient } from '../../apiClient';\nimport { updateAuthFromVerifyResponse } from '../../auth/updateAuthFromVerifyResponse';\n\n/**\n * Refreshes the current user's data from the server.\n *\n * This function fetches the latest user information and token from the backend\n * updating the local user and token states with any changes.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the verify response.\n */\nexport const refreshAuth = async (\n client = getDefaultClient()\n): Promise<VerifyResponse> => {\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const response = await apiClient.refreshAuth({\n environmentId: core.environmentId,\n });\n\n updateAuthFromVerifyResponse({ response }, client);\n\n return response;\n};\n","import { BaseError } from './base';\n\ntype NotWaasWalletAccountErrorParams = {\n walletAddress: string;\n};\n\nexport class NotWaasWalletAccountError extends BaseError {\n constructor({ walletAddress }: NotWaasWalletAccountErrorParams) {\n super({\n cause: null,\n code: 'not_waas_wallet_account_error',\n docsUrl: null,\n name: 'NotWaasWalletAccountError',\n shortMessage: `Wallet account ${walletAddress} is not a Dynamic WaaS wallet account`,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAa,cAAc,OACzB,SAASA,4CAAkB,KACC;CAC5B,MAAM,OAAOC,kCAAQ,OAAO;CAG5B,MAAM,WAAW,MAFCC,0CAAgB,EAAE,EAAE,OAAO,CAEZ,YAAY,EAC3C,eAAe,KAAK,eACrB,CAAC;AAEF,4EAA6B,EAAE,UAAU,EAAE,OAAO;AAElD,QAAO;;;;;ACtBT,IAAa,4BAAb,cAA+CC,oCAAU;CACvD,YAAY,EAAE,iBAAkD;AAC9D,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc,kBAAkB,cAAc;GAC/C,CAAC"}
1
+ {"version":3,"file":"NotWaasWalletAccountError-CHSFUjd9.cjs.js","names":["getDefaultClient","getCore","createApiClient","BaseError"],"sources":["../src/modules/user/refreshAuth/refreshAuth.ts","../src/errors/NotWaasWalletAccountError.ts"],"sourcesContent":["import type { VerifyResponse } from '@dynamic-labs/sdk-api-core';\n\nimport { getCore } from '../../../client/core/getCore';\nimport { getDefaultClient } from '../../../client/defaultClient';\nimport { createApiClient } from '../../apiClient';\nimport { updateAuthFromVerifyResponse } from '../../auth/updateAuthFromVerifyResponse';\n\n/**\n * Refreshes the current user's data from the server.\n *\n * This function fetches the latest user information and token from the backend\n * updating the local user and token states with any changes.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the verify response.\n */\nexport const refreshAuth = async (\n client = getDefaultClient()\n): Promise<VerifyResponse> => {\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const response = await apiClient.refreshAuth({\n environmentId: core.environmentId,\n });\n\n updateAuthFromVerifyResponse({ response }, client);\n\n return response;\n};\n","import { BaseError } from './base';\n\ntype NotWaasWalletAccountErrorParams = {\n walletAddress: string;\n};\n\nexport class NotWaasWalletAccountError extends BaseError {\n constructor({ walletAddress }: NotWaasWalletAccountErrorParams) {\n super({\n cause: null,\n code: 'not_waas_wallet_account_error',\n docsUrl: null,\n name: 'NotWaasWalletAccountError',\n shortMessage: `Wallet account ${walletAddress} is not a Dynamic WaaS wallet account`,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAa,cAAc,OACzB,SAASA,4CAAkB,KACC;CAC5B,MAAM,OAAOC,kCAAQ,OAAO;CAG5B,MAAM,WAAW,MAFCC,0CAAgB,EAAE,EAAE,OAAO,CAEZ,YAAY,EAC3C,eAAe,KAAK,eACrB,CAAC;AAEF,4EAA6B,EAAE,UAAU,EAAE,OAAO;AAElD,QAAO;;;;;ACtBT,IAAa,4BAAb,cAA+CC,oCAAU;CACvD,YAAY,EAAE,iBAAkD;AAC9D,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc,kBAAkB,cAAc;GAC/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createCore.d.ts","sourceRoot":"","sources":["../../../../src/client/core/createCore/createCore.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,UAAU,CAAC;AAG9D;;GAEG;AACH,eAAO,MAAM,UAAU,WAAY,mBAAmB,KAAG,WAmExD,CAAC"}
1
+ {"version":3,"file":"createCore.d.ts","sourceRoot":"","sources":["../../../../src/client/core/createCore/createCore.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,UAAU,CAAC;AAG9D;;GAEG;AACH,eAAO,MAAM,UAAU,WAAY,mBAAmB,KAAG,WAqFxD,CAAC"}
@@ -3,10 +3,13 @@ import type { AsyncTrack } from '../../../services/asyncTrack';
3
3
  import type { CrossTabBroadcast } from '../../../services/crossTabBroadcast';
4
4
  import type { DeviceSigner } from '../../../services/deviceSigner';
5
5
  import type { Fetch } from '../../../services/fetch';
6
+ import type { Instrumentation } from '../../../services/instrumentation/instrumentation.types';
7
+ import type { KeychainService } from '../../../services/keychain';
6
8
  import type { Logger } from '../../../services/logger';
7
9
  import type { NavigationHandler } from '../../../services/navigate';
8
10
  import type { OpenDeeplink } from '../../../services/openDeeplink';
9
11
  import type { PasskeyService } from '../../../services/passkey';
12
+ import type { RealtimeService } from '../../../services/realtime';
10
13
  import type { RuntimeServices } from '../../../services/runtimeServices';
11
14
  import type { Storage } from '../../../services/storage/storage.types';
12
15
  import type { DebouncedMutex } from '../../../utils/debouncedMutex';
@@ -63,6 +66,14 @@ export type DynamicCore = {
63
66
  * Instance of the async track service, used for tracking status of SDK initialization promises.
64
67
  */
65
68
  initTrack: AsyncTrack;
69
+ /**
70
+ * Instance of the instrumentation service, used for tracking SDK function calls and errors.
71
+ */
72
+ instrumentation: Instrumentation;
73
+ /**
74
+ * Instance of the keychain service, used for secure non-extractable key management.
75
+ */
76
+ keychain: KeychainService;
66
77
  /**
67
78
  * Instance of the logger service, used for logging messages to the console and controlling the log level.
68
79
  */
@@ -83,10 +94,19 @@ export type DynamicCore = {
83
94
  * Instance of the passkey service, used for prompting the user with passkey authentication.
84
95
  */
85
96
  passkey: PasskeyService;
97
+ /**
98
+ * Instance of the realtime service, used for pub/sub messaging.
99
+ */
100
+ realtime: RealtimeService;
86
101
  /**
87
102
  * Instance of the runtime services, used for registering and accessing services.
88
103
  */
89
104
  runtimeServices: RuntimeServices;
105
+ /**
106
+ * A unique identifier for the current SDK session, generated once at client creation.
107
+ * Included in all API requests and instrumentation events to correlate activity.
108
+ */
109
+ sdkSessionId: string;
90
110
  /**
91
111
  * Reactive object with all variable state of the client.
92
112
  */
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicCore.d.ts","sourceRoot":"","sources":["../../../../src/client/core/types/DynamicCore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;IAErC;;;;;OAKG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;OAEG;IACH,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAExB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,aAAa,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5C;;OAEG;IACH,SAAS,EAAE,UAAU,CAAC;IAEtB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAE1C;;OAEG;IACH,QAAQ,EAAE,iBAAiB,CAAC;IAE5B;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;OAEG;IACH,OAAO,EAAE,cAAc,CAAC;IAExB;;OAEG;IACH,eAAe,EAAE,eAAe,CAAC;IAEjC;;OAEG;IACH,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAEzC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,YAAY,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAElD;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"DynamicCore.d.ts","sourceRoot":"","sources":["../../../../src/client/core/types/DynamicCore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;IAErC;;;;;OAKG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;OAEG;IACH,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAExB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,aAAa,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5C;;OAEG;IACH,SAAS,EAAE,UAAU,CAAC;IAEtB;;OAEG;IACH,eAAe,EAAE,eAAe,CAAC;IAEjC;;OAEG;IACH,QAAQ,EAAE,eAAe,CAAC;IAE1B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAE1C;;OAEG;IACH,QAAQ,EAAE,iBAAiB,CAAC;IAE5B;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;OAEG;IACH,OAAO,EAAE,cAAc,CAAC;IAExB;;OAEG;IACH,QAAQ,EAAE,eAAe,CAAC;IAE1B;;OAEG;IACH,eAAe,EAAE,eAAe,CAAC;IAEjC;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAEzC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,YAAY,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAElD;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -3,7 +3,7 @@ import type { DynamicCore } from './DynamicCore';
3
3
  /**
4
4
  * Available options for internal configuration of the Dynamic SDK client.
5
5
  */
6
- export type DynamicCoreConfig = Partial<Pick<DynamicCore, 'apiBaseUrl' | 'crossTabBroadcast' | 'deviceSigner' | 'fetch' | 'logger' | 'navigate' | 'openDeeplink' | 'passkey' | 'getApiHeaders'>> & {
6
+ export type DynamicCoreConfig = Partial<Pick<DynamicCore, 'apiBaseUrl' | 'crossTabBroadcast' | 'deviceSigner' | 'fetch' | 'keychain' | 'logger' | 'navigate' | 'openDeeplink' | 'passkey' | 'realtime' | 'getApiHeaders'>> & {
7
7
  storageAdapter?: StorageAdapter;
8
8
  };
9
9
  //# sourceMappingURL=DynamicCoreConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicCoreConfig.d.ts","sourceRoot":"","sources":["../../../../src/client/core/types/DynamicCoreConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,IAAI,CACF,WAAW,EACT,YAAY,GACZ,mBAAmB,GACnB,cAAc,GACd,OAAO,GACP,QAAQ,GACR,UAAU,GACV,cAAc,GACd,SAAS,GACT,eAAe,CAClB,CACF,GAAG;IACF,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC"}
1
+ {"version":3,"file":"DynamicCoreConfig.d.ts","sourceRoot":"","sources":["../../../../src/client/core/types/DynamicCoreConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,IAAI,CACF,WAAW,EACT,YAAY,GACZ,mBAAmB,GACnB,cAAc,GACd,OAAO,GACP,UAAU,GACV,QAAQ,GACR,UAAU,GACV,cAAc,GACd,SAAS,GACT,UAAU,GACV,eAAe,CAClB,CACF,GAAG;IACF,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { InstrumentationConfig } from '../../services/instrumentation/instrumentation.types';
1
2
  import type { LogLevel } from '../../services/logger';
2
3
  import type { NetworkData } from '../../modules/wallets/networks/networkProvider/networkProvider.types';
3
4
  import type { DynamicCoreConfig } from '../core/types';
@@ -23,6 +24,10 @@ export type DynamicClientConfig = {
23
24
  * The environment ID of the Dynamic app.
24
25
  */
25
26
  environmentId: string;
27
+ /**
28
+ * Configuration for SDK instrumentation (telemetry and observability).
29
+ */
30
+ instrumentation?: Partial<InstrumentationConfig>;
26
31
  /**
27
32
  * The log level to use for the logger.
28
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicClientConfig.d.ts","sourceRoot":"","sources":["../../../src/client/types/DynamicClientConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sEAAsE,CAAC;AACxG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAE/B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QAEjB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;QAEpB;;;;;;;;WAQG;QACH,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,YAAY,CAAC,EAAE;QACb;;;;;;WAMG;QACH,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,WAAW,CAAC;KACzD,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"DynamicClientConfig.d.ts","sourceRoot":"","sources":["../../../src/client/types/DynamicClientConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAClG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sEAAsE,CAAC;AACxG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAE/B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEjD;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QAEjB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;QAEpB;;;;;;;;WAQG;QACH,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,YAAY,CAAC,EAAE;QACb;;;;;;WAMG;QACH,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,WAAW,CAAC;KACzD,CAAC;CACH,CAAC"}