@dynamic-labs-sdk/client 1.20.0 → 1.21.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 (165) hide show
  1. package/dist/{updateAuthFromVerifyResponse-DGrmo9MJ.native.esm.js → NativeModuleNotLinkedError-DsfdAti9.native.esm.js} +33 -4
  2. package/dist/NativeModuleNotLinkedError-DsfdAti9.native.esm.js.map +1 -0
  3. package/dist/client/createDynamicClient/assertClientProps/assertClientProps.d.ts +16 -0
  4. package/dist/client/createDynamicClient/assertClientProps/assertClientProps.d.ts.map +1 -0
  5. package/dist/client/createDynamicClient/assertClientProps/index.d.ts +2 -0
  6. package/dist/client/createDynamicClient/assertClientProps/index.d.ts.map +1 -0
  7. package/dist/client/createDynamicClient/createDynamicClient.d.ts.map +1 -1
  8. package/dist/client/types/DynamicClientConfig.d.ts +35 -0
  9. package/dist/client/types/DynamicClientConfig.d.ts.map +1 -1
  10. package/dist/consumeMfaTokenIfRequiredForAction-CblIF3QS.esm.js +12 -0
  11. package/dist/consumeMfaTokenIfRequiredForAction-CblIF3QS.esm.js.map +1 -0
  12. package/dist/consumeMfaTokenIfRequiredForAction-CrdEGCJs.cjs +17 -0
  13. package/dist/consumeMfaTokenIfRequiredForAction-CrdEGCJs.cjs.map +1 -0
  14. package/dist/core.cjs +9 -8
  15. package/dist/core.cjs.map +1 -1
  16. package/dist/core.esm.js +6 -5
  17. package/dist/core.esm.js.map +1 -1
  18. package/dist/core.native.esm.js +5 -5
  19. package/dist/errors/WaasLoadFailedError.d.ts +45 -0
  20. package/dist/errors/WaasLoadFailedError.d.ts.map +1 -0
  21. package/dist/exports/index.d.ts +1 -0
  22. package/dist/exports/index.d.ts.map +1 -1
  23. package/dist/exports/waas.d.ts +10 -0
  24. package/dist/exports/waas.d.ts.map +1 -1
  25. package/dist/{getNetworkProviderFromNetworkId-xmoBE1cZ.native.esm.js → getNetworkProviderFromNetworkId-CA5-rcb9.native.esm.js} +2 -3
  26. package/dist/{getNetworkProviderFromNetworkId-xmoBE1cZ.native.esm.js.map → getNetworkProviderFromNetworkId-CA5-rcb9.native.esm.js.map} +1 -1
  27. package/dist/{getNetworkProviderFromNetworkId-DaVOUpiF.cjs → getNetworkProviderFromNetworkId-DksFqRIB.cjs} +48 -13
  28. package/dist/getNetworkProviderFromNetworkId-DksFqRIB.cjs.map +1 -0
  29. package/dist/{getNetworkProviderFromNetworkId-BlBx4Zh2.esm.js → getNetworkProviderFromNetworkId-DlOQ94mF.esm.js} +48 -13
  30. package/dist/getNetworkProviderFromNetworkId-DlOQ94mF.esm.js.map +1 -0
  31. package/dist/{getSignedSessionId-BVc-sgeN.esm.js → getSignedSessionId-BHGXB2ZS.native.esm.js} +3 -3
  32. package/dist/{getSignedSessionId-DlmNVy-g.native.esm.js.map → getSignedSessionId-BHGXB2ZS.native.esm.js.map} +1 -1
  33. package/dist/{getSignedSessionId-3L_aMxVD.cjs → getSignedSessionId-BWTQMtk6.cjs} +2 -17
  34. package/dist/getSignedSessionId-BWTQMtk6.cjs.map +1 -0
  35. package/dist/{getSignedSessionId-DlmNVy-g.native.esm.js → getSignedSessionId-C4igTuKk.esm.js} +3 -12
  36. package/dist/getSignedSessionId-C4igTuKk.esm.js.map +1 -0
  37. package/dist/{getWalletProviderByKey-BilyW5Jr.cjs → getWalletProviderByKey--ChkWHSF.cjs} +2 -2
  38. package/dist/{getWalletProviderByKey-BilyW5Jr.cjs.map → getWalletProviderByKey--ChkWHSF.cjs.map} +1 -1
  39. package/dist/{getWalletProviderByKey-PIO1ygzj.esm.js → getWalletProviderByKey-CXC1EXpO.esm.js} +2 -2
  40. package/dist/{getWalletProviderByKey-PIO1ygzj.esm.js.map → getWalletProviderByKey-CXC1EXpO.esm.js.map} +1 -1
  41. package/dist/{getWalletProviderByKey-Ccx26JsF.native.esm.js → getWalletProviderByKey-CeY5t5tY.native.esm.js} +2 -2
  42. package/dist/{getWalletProviderByKey-Ccx26JsF.native.esm.js.map → getWalletProviderByKey-CeY5t5tY.native.esm.js.map} +1 -1
  43. package/dist/index.cjs +48 -20
  44. package/dist/index.cjs.map +1 -1
  45. package/dist/index.esm.js +34 -7
  46. package/dist/index.esm.js.map +1 -1
  47. package/dist/index.native.esm.js +34 -7
  48. package/dist/index.native.esm.js.map +1 -1
  49. package/dist/{isDynamicWaasEnabled-C4oPJ0fw.native.esm.js → isDynamicWaasEnabled-CsNM4kzO.native.esm.js} +2 -2
  50. package/dist/{isDynamicWaasEnabled-C4oPJ0fw.native.esm.js.map → isDynamicWaasEnabled-CsNM4kzO.native.esm.js.map} +1 -1
  51. package/dist/{isDynamicWaasEnabled-JpnXC0f7.esm.js → isDynamicWaasEnabled-DwY38pjA.esm.js} +2 -2
  52. package/dist/{isDynamicWaasEnabled-JpnXC0f7.esm.js.map → isDynamicWaasEnabled-DwY38pjA.esm.js.map} +1 -1
  53. package/dist/{isDynamicWaasEnabled-DXVcXa66.cjs → isDynamicWaasEnabled-v7x1B-0g.cjs} +2 -2
  54. package/dist/{isDynamicWaasEnabled-DXVcXa66.cjs.map → isDynamicWaasEnabled-v7x1B-0g.cjs.map} +1 -1
  55. package/dist/{isMfaRequiredForAction-D6rt_Tzn.native.esm.js → isMfaRequiredForAction-C-wDmRZj.native.esm.js} +3 -32
  56. package/dist/isMfaRequiredForAction-C-wDmRZj.native.esm.js.map +1 -0
  57. package/dist/isMfaRequiredForAction-C_a46AcW.esm.js +77 -0
  58. package/dist/isMfaRequiredForAction-C_a46AcW.esm.js.map +1 -0
  59. package/dist/isMfaRequiredForAction-m43LQlLi.cjs +94 -0
  60. package/dist/isMfaRequiredForAction-m43LQlLi.cjs.map +1 -0
  61. package/dist/{isUserOnboardingComplete-diGA1wlX.esm.js → isUserOnboardingComplete-CUZO4avc.esm.js} +44 -4
  62. package/dist/isUserOnboardingComplete-CUZO4avc.esm.js.map +1 -0
  63. package/dist/{isUserOnboardingComplete-DnExOJu7.native.esm.js → isUserOnboardingComplete-CzyupoSE.native.esm.js} +44 -4
  64. package/dist/{isUserOnboardingComplete-CsoV3ae7.cjs.map → isUserOnboardingComplete-CzyupoSE.native.esm.js.map} +1 -1
  65. package/dist/{isUserOnboardingComplete-CsoV3ae7.cjs → isUserOnboardingComplete-D_O53a98.cjs} +49 -3
  66. package/dist/isUserOnboardingComplete-D_O53a98.cjs.map +1 -0
  67. package/dist/{migrateFromFireblocks-BrWXstt8.cjs → migrateFromFireblocks-BbRj_YOv.cjs} +54 -3
  68. package/dist/migrateFromFireblocks-BbRj_YOv.cjs.map +1 -0
  69. package/dist/{migrateFromFireblocks-CqL5l58Q.native.esm.js → migrateFromFireblocks-Vic3tb61.esm.js} +43 -4
  70. package/dist/migrateFromFireblocks-Vic3tb61.esm.js.map +1 -0
  71. package/dist/migrateFromFireblocks-hfh_j7wm.native.esm.js +321 -0
  72. package/dist/migrateFromFireblocks-hfh_j7wm.native.esm.js.map +1 -0
  73. package/dist/modules/waas/businessAccounts/addBusinessAccountMember/addBusinessAccountMember.d.ts +25 -0
  74. package/dist/modules/waas/businessAccounts/addBusinessAccountMember/addBusinessAccountMember.d.ts.map +1 -0
  75. package/dist/modules/waas/businessAccounts/addBusinessAccountMember/index.d.ts +2 -0
  76. package/dist/modules/waas/businessAccounts/addBusinessAccountMember/index.d.ts.map +1 -0
  77. package/dist/modules/waas/businessAccounts/addBusinessAccountSigner/addBusinessAccountSigner.d.ts +35 -0
  78. package/dist/modules/waas/businessAccounts/addBusinessAccountSigner/addBusinessAccountSigner.d.ts.map +1 -0
  79. package/dist/modules/waas/businessAccounts/addBusinessAccountSigner/index.d.ts +2 -0
  80. package/dist/modules/waas/businessAccounts/addBusinessAccountSigner/index.d.ts.map +1 -0
  81. package/dist/modules/waas/businessAccounts/addWalletToBusinessAccount/addWalletToBusinessAccount.d.ts +19 -0
  82. package/dist/modules/waas/businessAccounts/addWalletToBusinessAccount/addWalletToBusinessAccount.d.ts.map +1 -0
  83. package/dist/modules/waas/businessAccounts/addWalletToBusinessAccount/index.d.ts +2 -0
  84. package/dist/modules/waas/businessAccounts/addWalletToBusinessAccount/index.d.ts.map +1 -0
  85. package/dist/modules/waas/businessAccounts/businessAccounts.types.d.ts +184 -0
  86. package/dist/modules/waas/businessAccounts/businessAccounts.types.d.ts.map +1 -0
  87. package/dist/modules/waas/businessAccounts/createBusinessAccount/createBusinessAccount.d.ts +16 -0
  88. package/dist/modules/waas/businessAccounts/createBusinessAccount/createBusinessAccount.d.ts.map +1 -0
  89. package/dist/modules/waas/businessAccounts/createBusinessAccount/index.d.ts +2 -0
  90. package/dist/modules/waas/businessAccounts/createBusinessAccount/index.d.ts.map +1 -0
  91. package/dist/modules/waas/businessAccounts/createWalletForBusinessAccount/createWalletForBusinessAccount.d.ts +36 -0
  92. package/dist/modules/waas/businessAccounts/createWalletForBusinessAccount/createWalletForBusinessAccount.d.ts.map +1 -0
  93. package/dist/modules/waas/businessAccounts/createWalletForBusinessAccount/index.d.ts +2 -0
  94. package/dist/modules/waas/businessAccounts/createWalletForBusinessAccount/index.d.ts.map +1 -0
  95. package/dist/modules/waas/businessAccounts/getBusinessAccount/getBusinessAccount.d.ts +15 -0
  96. package/dist/modules/waas/businessAccounts/getBusinessAccount/getBusinessAccount.d.ts.map +1 -0
  97. package/dist/modules/waas/businessAccounts/getBusinessAccount/index.d.ts +2 -0
  98. package/dist/modules/waas/businessAccounts/getBusinessAccount/index.d.ts.map +1 -0
  99. package/dist/modules/waas/businessAccounts/getBusinessAccountsClient/getBusinessAccountsClient.d.ts +12 -0
  100. package/dist/modules/waas/businessAccounts/getBusinessAccountsClient/getBusinessAccountsClient.d.ts.map +1 -0
  101. package/dist/modules/waas/businessAccounts/getBusinessAccountsClient/index.d.ts +2 -0
  102. package/dist/modules/waas/businessAccounts/getBusinessAccountsClient/index.d.ts.map +1 -0
  103. package/dist/modules/waas/businessAccounts/listBusinessAccounts/index.d.ts +2 -0
  104. package/dist/modules/waas/businessAccounts/listBusinessAccounts/index.d.ts.map +1 -0
  105. package/dist/modules/waas/businessAccounts/listBusinessAccounts/listBusinessAccounts.d.ts +10 -0
  106. package/dist/modules/waas/businessAccounts/listBusinessAccounts/listBusinessAccounts.d.ts.map +1 -0
  107. package/dist/modules/waas/businessAccounts/removeBusinessAccountMember/index.d.ts +2 -0
  108. package/dist/modules/waas/businessAccounts/removeBusinessAccountMember/index.d.ts.map +1 -0
  109. package/dist/modules/waas/businessAccounts/removeBusinessAccountMember/removeBusinessAccountMember.d.ts +33 -0
  110. package/dist/modules/waas/businessAccounts/removeBusinessAccountMember/removeBusinessAccountMember.d.ts.map +1 -0
  111. package/dist/modules/waas/businessAccounts/removeBusinessAccountSigner/index.d.ts +2 -0
  112. package/dist/modules/waas/businessAccounts/removeBusinessAccountSigner/index.d.ts.map +1 -0
  113. package/dist/modules/waas/businessAccounts/removeBusinessAccountSigner/removeBusinessAccountSigner.d.ts +37 -0
  114. package/dist/modules/waas/businessAccounts/removeBusinessAccountSigner/removeBusinessAccountSigner.d.ts.map +1 -0
  115. package/dist/modules/waas/createWaasClient/createWaasClient.d.ts.map +1 -1
  116. package/dist/modules/waas/createWaasProvider/createWaasProvider.d.ts.map +1 -1
  117. package/dist/modules/waas/createWaasProvider/isWaasLoadExhaustionError.d.ts +11 -0
  118. package/dist/modules/waas/createWaasProvider/isWaasLoadExhaustionError.d.ts.map +1 -0
  119. package/dist/modules/waas/waas.types.d.ts +11 -0
  120. package/dist/modules/waas/waas.types.d.ts.map +1 -1
  121. package/dist/services/keychain/createKeychainService/utils/openDatabase.d.ts +9 -1
  122. package/dist/services/keychain/createKeychainService/utils/openDatabase.d.ts.map +1 -1
  123. package/dist/services/keychain/createKeychainService/utils/withDatabase/withDatabase.d.ts +2 -1
  124. package/dist/services/keychain/createKeychainService/utils/withDatabase/withDatabase.d.ts.map +1 -1
  125. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  126. package/dist/{updateAuthFromVerifyResponse-CVDQVEQM.esm.js → updateAuthFromVerifyResponse-BEoc7f0m.esm.js} +262 -4
  127. package/dist/updateAuthFromVerifyResponse-BEoc7f0m.esm.js.map +1 -0
  128. package/dist/{updateAuthFromVerifyResponse-B0K1VJ8b.cjs → updateAuthFromVerifyResponse-Dg8THxkT.cjs} +289 -19
  129. package/dist/updateAuthFromVerifyResponse-Dg8THxkT.cjs.map +1 -0
  130. package/dist/utils/createTranslateRejection/createTranslateRejection.d.ts +29 -0
  131. package/dist/utils/createTranslateRejection/createTranslateRejection.d.ts.map +1 -0
  132. package/dist/utils/createTranslateRejection/index.d.ts +3 -0
  133. package/dist/utils/createTranslateRejection/index.d.ts.map +1 -0
  134. package/dist/waas.cjs +281 -17
  135. package/dist/waas.cjs.map +1 -1
  136. package/dist/waas.esm.js +273 -18
  137. package/dist/waas.esm.js.map +1 -1
  138. package/dist/waas.native.esm.js +272 -18
  139. package/dist/waas.native.esm.js.map +1 -1
  140. package/dist/waasCore.cjs +291 -170
  141. package/dist/waasCore.cjs.map +1 -1
  142. package/dist/waasCore.esm.js +285 -164
  143. package/dist/waasCore.esm.js.map +1 -1
  144. package/dist/waasCore.native.esm.js +273 -371
  145. package/dist/waasCore.native.esm.js.map +1 -1
  146. package/ios/DynamicClientScreenshotProtection.mm +70 -32
  147. package/package.json +4 -4
  148. package/dist/getNetworkProviderFromNetworkId-BlBx4Zh2.esm.js.map +0 -1
  149. package/dist/getNetworkProviderFromNetworkId-DaVOUpiF.cjs.map +0 -1
  150. package/dist/getSignedSessionId-3L_aMxVD.cjs.map +0 -1
  151. package/dist/getSignedSessionId-BVc-sgeN.esm.js.map +0 -1
  152. package/dist/isMfaRequiredForAction-20E6GsSc.esm.js +0 -336
  153. package/dist/isMfaRequiredForAction-20E6GsSc.esm.js.map +0 -1
  154. package/dist/isMfaRequiredForAction-9bYtZcve.cjs +0 -384
  155. package/dist/isMfaRequiredForAction-9bYtZcve.cjs.map +0 -1
  156. package/dist/isMfaRequiredForAction-D6rt_Tzn.native.esm.js.map +0 -1
  157. package/dist/isUserOnboardingComplete-DnExOJu7.native.esm.js.map +0 -1
  158. package/dist/isUserOnboardingComplete-diGA1wlX.esm.js.map +0 -1
  159. package/dist/migrateFromFireblocks--G-432sl.esm.js +0 -65
  160. package/dist/migrateFromFireblocks--G-432sl.esm.js.map +0 -1
  161. package/dist/migrateFromFireblocks-BrWXstt8.cjs.map +0 -1
  162. package/dist/migrateFromFireblocks-CqL5l58Q.native.esm.js.map +0 -1
  163. package/dist/updateAuthFromVerifyResponse-B0K1VJ8b.cjs.map +0 -1
  164. package/dist/updateAuthFromVerifyResponse-CVDQVEQM.esm.js.map +0 -1
  165. package/dist/updateAuthFromVerifyResponse-DGrmo9MJ.native.esm.js.map +0 -1
@@ -3,10 +3,10 @@ import * as z from "zod/mini";
3
3
 
4
4
  //#region package.json
5
5
  var name = "@dynamic-labs-sdk/client";
6
- var version = "1.20.0";
6
+ var version = "1.21.1";
7
7
  var dependencies = {
8
8
  "@dynamic-labs-sdk/assert-package-version": "workspace:*",
9
- "@dynamic-labs-wallet/browser-wallet-client": "1.0.70",
9
+ "@dynamic-labs-wallet/browser-wallet-client": "1.0.73",
10
10
  "@dynamic-labs-wallet/forward-mpc-client": "1.0.1",
11
11
  "@dynamic-labs/sdk-api-core": "catalog:",
12
12
  "@simplewebauthn/browser": "13.1.0",
@@ -868,6 +868,41 @@ const emitEvent = ({ event, args }, client) => {
868
868
  eventEmitter.emit(event, args);
869
869
  };
870
870
 
871
+ //#endregion
872
+ //#region src/utils/retryOnFail/InvalidRetryOnFailCallError.ts
873
+ /**
874
+ * This error is thrown when the `retryOnFail` function is called with an invalid
875
+ * number of retries (i.e. less than 0).
876
+ */
877
+ var InvalidRetryOnFailCallError = class extends BaseError {
878
+ constructor(maxRetries) {
879
+ super({
880
+ cause: null,
881
+ code: "invalid_retry_on_fail_call_error",
882
+ docsUrl: null,
883
+ name: "InvalidRetryOnFailCallError",
884
+ shortMessage: `Invalid retries parameter for retryOnFail call: ${maxRetries}`
885
+ });
886
+ }
887
+ };
888
+
889
+ //#endregion
890
+ //#region src/utils/retryOnFail/retryOnFail.ts
891
+ /** @notInstrumented */
892
+ const retryOnFail = async ({ delay = 0, fn, maxRetries }) => {
893
+ for (let retry = 0; retry <= maxRetries; retry++) try {
894
+ return await fn();
895
+ } catch (error) {
896
+ if (retry >= maxRetries) throw error;
897
+ if (delay > 0) await new Promise((resolve) => setTimeout(resolve, delay));
898
+ }
899
+ /**
900
+ * Reaching this point should never happen and this
901
+ * error is thrown to help us debug the issue.
902
+ */
903
+ throw new InvalidRetryOnFailCallError(maxRetries);
904
+ };
905
+
871
906
  //#endregion
872
907
  //#region src/errors/InvalidWalletProviderKeyError.ts
873
908
  var InvalidWalletProviderKeyError = class extends BaseError {
@@ -1186,6 +1221,115 @@ const getWalletAccounts = (client = getDefaultClient()) => {
1186
1221
  }, client);
1187
1222
  };
1188
1223
 
1224
+ //#endregion
1225
+ //#region src/modules/auth/isSignedIn/isSignedIn.ts
1226
+ /**
1227
+ * Checks if the user is currently signed in to the Dynamic client.
1228
+ *
1229
+ * The client is considered to be in a signed in state if a user has
1230
+ * authenticated or if the client has at least one wallet connected.
1231
+ *
1232
+ * @deprecated What counts as "signed in" is your app's business logic, not the
1233
+ * SDK's. This helper bakes in one opinion (a user OR any connected wallet),
1234
+ * which rarely matches every app and forces a dependency on us for every
1235
+ * variation. Compose your own check from the underlying primitives instead —
1236
+ * e.g. `Boolean(client.user) || isAnyWalletAccountConnected(client)` — and
1237
+ * layer in whatever your app requires (device registration, completed
1238
+ * onboarding, satisfied MFA, a required embedded wallet, …). See the
1239
+ * "Check if signed in" guide:
1240
+ * https://www.dynamic.xyz/docs/javascript/user-session-management
1241
+ *
1242
+ * @example
1243
+ * ```ts
1244
+ * if (isSignedIn()) {
1245
+ * console.log('User is authenticated or has a wallet connected');
1246
+ * }
1247
+ * ```
1248
+ *
1249
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1250
+ * @returns True if the user is signed in, false otherwise.
1251
+ * @see logout
1252
+ * @see isAnyWalletAccountConnected
1253
+ * @notInstrumented
1254
+ */
1255
+ const isSignedIn = (client = getDefaultClient()) => Boolean(client.user || getWalletAccounts(client).length > 0);
1256
+
1257
+ //#endregion
1258
+ //#region src/modules/projectSettings/fetchProjectSettings/projectSettingsExpirationScheme.ts
1259
+ /**
1260
+ * The schema to track the expiration time of the project settings.
1261
+ */
1262
+ const projectSettingsExpirationStorageKeySchema = createStorageKeySchema({
1263
+ key: "projectSettingsExpiration",
1264
+ schema: z.number()
1265
+ });
1266
+
1267
+ //#endregion
1268
+ //#region src/modules/projectSettings/fetchProjectSettings/fetchProjectSettings.ts
1269
+ /**
1270
+ * Expiration time of the project settings in milliseconds.
1271
+ */
1272
+ const PROJECT_SETTINGS_EXPIRATION_TIME = 1e3 * 60 * 5;
1273
+ /**
1274
+ * Fetches and updates the project settings from the API.
1275
+ *
1276
+ * This function retrieves the latest project configuration settings
1277
+ * from Dynamic's servers, including authentication options, enabled chains,
1278
+ * and security configurations. The settings are cached for performance.
1279
+ *
1280
+ * @example
1281
+ * ```ts
1282
+ * const settings = await fetchProjectSettings();
1283
+ * console.log('Enabled chains:', settings.chains);
1284
+ * ```
1285
+ *
1286
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1287
+ * @returns A promise that resolves to the updated project settings.
1288
+ * @see createDynamicClient
1289
+ * @see initializeClient
1290
+ * @notInstrumented
1291
+ * @noHook Internal settings fetch that is not part of the public hook surface.
1292
+ */
1293
+ const fetchProjectSettings = async (client = getDefaultClient()) => {
1294
+ const core = getCore(client);
1295
+ const currentExpiration = await core.storage.getItem(projectSettingsExpirationStorageKeySchema);
1296
+ if (Boolean(client.projectSettings) && !(currentExpiration && currentExpiration < Date.now()) && isSignedIn(client)) return client.projectSettings;
1297
+ const apiClient = createApiClient({}, client);
1298
+ core.logger.debug("[fetchProjectSettings] Fetching project settings...");
1299
+ const doFetch = async () => apiClient.getEnvironmentSettings({
1300
+ environmentId: core.environmentId,
1301
+ sdkVersion: `${CLIENT_SDK_NAME}/${core.version}`
1302
+ }, { credentials: "omit" });
1303
+ const projectSettings = await retryOnFail({
1304
+ fn: doFetch,
1305
+ maxRetries: 2
1306
+ });
1307
+ core.state.set({ projectSettings: projectSettings ?? null });
1308
+ await core.storage.setItem(projectSettingsExpirationStorageKeySchema, Date.now() + PROJECT_SETTINGS_EXPIRATION_TIME);
1309
+ return projectSettings;
1310
+ };
1311
+
1312
+ //#endregion
1313
+ //#region src/modules/sessionKeys/generateSessionKeys/generateSessionKeys.ts
1314
+ /** @notInstrumented */
1315
+ const generateSessionKeys = async (client) => {
1316
+ const core = getCore(client);
1317
+ const currentState = core.state.get();
1318
+ const isRotation = Boolean(currentState.sessionKeys);
1319
+ const logContext = {
1320
+ environmentId: core.environmentId,
1321
+ operation: isRotation ? "rotate" : "create",
1322
+ userId: currentState.user?.id ?? null
1323
+ };
1324
+ core.logger.info(isRotation ? "[generateSessionKeys] Rotating session key..." : "[generateSessionKeys] Creating session key...", logContext);
1325
+ await core.keychain.removeKey("session");
1326
+ const publicKey = await core.keychain.generateKey("session");
1327
+ assertDefined(publicKey, "Public key not found");
1328
+ core.state.set({ sessionKeys: publicKey });
1329
+ core.logger.info(isRotation ? "[generateSessionKeys] Session key rotated" : "[generateSessionKeys] Session key created", logContext);
1330
+ return { publicKey };
1331
+ };
1332
+
1189
1333
  //#endregion
1190
1334
  //#region src/errors/NoWalletProviderFoundError.ts
1191
1335
  var NoWalletProviderFoundError = class extends BaseError {
@@ -1341,6 +1485,51 @@ const getWalletProviderFromWalletAccount = ({ walletAccount }, client) => {
1341
1485
  return walletProvider;
1342
1486
  };
1343
1487
 
1488
+ //#endregion
1489
+ //#region src/modules/wallets/utils/getAvailableWalletProvidersFromWalletAccounts/getAvailableWalletProvidersFromWalletAccounts.ts
1490
+ /** @notInstrumented */
1491
+ const getAvailableWalletProvidersFromWalletAccounts = (client) => {
1492
+ const core = getCore(client);
1493
+ const walletProvidersMap = /* @__PURE__ */ new Map();
1494
+ getWalletAccounts(client).forEach((walletAccount) => {
1495
+ if (walletProvidersMap.has(walletAccount.walletProviderKey)) return;
1496
+ try {
1497
+ const walletProvider = getWalletProviderFromWalletAccount({ walletAccount }, client);
1498
+ walletProvidersMap.set(walletAccount.walletProviderKey, walletProvider);
1499
+ } catch (error) {
1500
+ core.logger.debug("Wallet provider not found for wallet account", {
1501
+ error,
1502
+ walletAccount: walletAccount.address
1503
+ });
1504
+ }
1505
+ });
1506
+ return Array.from(walletProvidersMap.values());
1507
+ };
1508
+
1509
+ //#endregion
1510
+ //#region src/modules/wallets/destroyWalletProviders/destroyWalletProviders.ts
1511
+ /**
1512
+ * Tear down every wallet provider on the client.
1513
+ *
1514
+ * Each provider's `destroy` is responsible for its own local + remote
1515
+ * cleanup. We swallow errors so a failing destroy on one provider does not
1516
+ * block teardown of the others (e.g. during logout).
1517
+ *
1518
+ * @notInstrumented
1519
+ */
1520
+ const destroyWalletProviders = async ({ reason }, client) => {
1521
+ const core = getCore(client);
1522
+ const walletProviders = getAvailableWalletProvidersFromWalletAccounts(client);
1523
+ await Promise.all(walletProviders.map(async (walletProvider) => {
1524
+ if (!walletProvider.destroy) return;
1525
+ try {
1526
+ await walletProvider.destroy({ reason });
1527
+ } catch (err) {
1528
+ core.logger.error(`Error destroying wallet provider ${walletProvider.key}`, err);
1529
+ }
1530
+ }));
1531
+ };
1532
+
1344
1533
  //#endregion
1345
1534
  //#region src/modules/auth/consts.ts
1346
1535
  const DYNAMIC_AUTH_COOKIE_NAME = "DYNAMIC_JWT_TOKEN";
@@ -1753,6 +1942,75 @@ const instrumentFunction = ({ fn, functionName, getCore: getCore$1, selectors })
1753
1942
  return wrapped;
1754
1943
  };
1755
1944
 
1945
+ //#endregion
1946
+ //#region src/modules/auth/logoutWithReason/logoutWithReason.ts
1947
+ /**
1948
+ * Logs the user out with an explicit reason.
1949
+ *
1950
+ * Revokes the session, clears auth state, terminates wallet providers, and
1951
+ * emits the `logout` client event with the given reason. The reason is also
1952
+ * captured as an argument on the function-instrumentation event, which is
1953
+ * how Datadog distinguishes between different logout causes.
1954
+ *
1955
+ * Use this instead of the public `logout` when triggering a logout from
1956
+ * internal or extension code — the caller owns the reason string, so the
1957
+ * telemetry correctly attributes *why* the logout happened.
1958
+ *
1959
+ * @param params - The logout params.
1960
+ * @param params.reason - Why the logout is being triggered. Extension authors
1961
+ * needing a reason outside the SDK catalog can cast with `as LogoutReason`.
1962
+ * @param client - The Dynamic client instance.
1963
+ * @instrumented
1964
+ */
1965
+ const logoutWithReason = async ({ reason }, client) => {
1966
+ const core = getCore(client);
1967
+ core.logger.debug("[logoutWithReason] Logging out...", { reason });
1968
+ await destroyWalletProviders({ reason }, client);
1969
+ if (client.user !== null) {
1970
+ const apiClient = createApiClient({}, client);
1971
+ try {
1972
+ await apiClient.revokeSession({ environmentId: core.environmentId });
1973
+ } catch (error) {
1974
+ core.logger.error("Failed to revoke session", error);
1975
+ }
1976
+ /**
1977
+ * This deletes the auth cookie if it exists.
1978
+ * If the cookie doesn't exist, this sets a new cookie that expires immediately.
1979
+ */
1980
+ if (isCookieEnabled(client)) setCookie(`${DYNAMIC_AUTH_COOKIE_NAME}=; Max-Age=-99999999; path=/; SameSite=Lax${getSecureCookieAttribute()}`);
1981
+ }
1982
+ await core.keychain.removeKey("session");
1983
+ core.state.set({
1984
+ captchaToken: null,
1985
+ elevatedAccessTokens: [],
1986
+ legacyToken: null,
1987
+ mfaToken: null,
1988
+ sessionExpiresAt: null,
1989
+ sessionKeys: null,
1990
+ token: null,
1991
+ unverifiedWalletAccounts: [],
1992
+ user: null
1993
+ });
1994
+ emitEvent({
1995
+ args: { reason },
1996
+ event: "logout"
1997
+ }, client);
1998
+ fetchProjectSettings(client);
1999
+ generateSessionKeys(client);
2000
+ };
2001
+ const __logoutWithReason_impl = logoutWithReason;
2002
+ const __logoutWithReason_wrapped = instrumentFunction({
2003
+ fn: __logoutWithReason_impl,
2004
+ functionName: "logoutWithReason",
2005
+ getCore: () => {
2006
+ try {
2007
+ return getCore(getDefaultClient());
2008
+ } catch {
2009
+ return;
2010
+ }
2011
+ }
2012
+ });
2013
+
1756
2014
  //#endregion
1757
2015
  //#region src/constants.ts
1758
2016
  const SDK_API_CORE_VERSION = dependencies["@dynamic-labs/sdk-api-core"];
@@ -2043,5 +2301,5 @@ const updateAuthFromVerifyResponse = ({ response }, client) => {
2043
2301
  };
2044
2302
 
2045
2303
  //#endregion
2046
- export { createStorageKeySchema as $, getWalletAccounts as A, offEvent as B, extractSessionId as C, getWalletProviderRegistry as D, WalletProviderPriority as E, formatWalletAccountId as F, fetchAndStoreNonces as G, onceEvent as H, normalizeAddress as I, createDeviceSignatureHeadersMiddleware as J, createApiClient as K, splitWalletProviderKey as L, normalizeWalletNameWithChain as M, getChainFromVerifiedCredentialChain as N, createRuntimeServiceAccessKey as O, CHAINS_INFO_MAP as P, updateNoncePoolStorage as Q, InvalidWalletProviderKeyError as R, getOperatingSystem as S, version as St, getWalletProviderFromWalletAccount as T, setCookie as U, onEvent as V, getSecureCookieAttribute as W, getDeviceSigner as X, getHeadersForNonceSignedByDeviceSigners as Y, getNonce as Z, SDK_API_CORE_VERSION as _, setDefaultClient as _t, initializeWaasClientsForEagerRecovery as a, APIError as at, DEFAULT_PII_FIELDS as b, getCore as bt, isWaasWalletProvider as c, assertDefined as ct, DYNAMIC_WAAS_METADATA as d, randomString as dt, SandboxMaximumThresholdReachedError as et, getWalletProviders as f, getPlatform as ft, DYNAMIC_ICONIC_SPRITE_URL as g, getDefaultClient as gt, emitWalletAccountsChangedEvent as h, NONCE_POOL_SIZE as ht, InvalidParamError as i, InvalidExternalAuthError as it, formatWalletProviderKey as j, NoWalletProviderFoundError as k, DEFAULT_WAAS_BASE_API_URL as l, ValueMustBeDefinedError as lt, checkAndRaiseWalletAccountsChangedEvent as m, DYNAMIC_SDK_API_VERSION as mt, upsertElevatedAccessToken as n, MfaInvalidOtpError as nt, isWaasWalletAccount as o, getSessionKeys as ot, isUserMissingMfaAuth as p, CLIENT_SDK_NAME as pt, UnauthorizedError as q, parseElevatedAccessToken as r, LinkCredentialError as rt, findWaasWalletProviderByChain as s, isCookieEnabled as st, updateAuthFromVerifyResponse as t, MfaRateLimitedError as tt, DEFAULT_WAAS_BASE_MPC_RELAY_API_URL as u, getElevatedAccessToken as ut, instrumentFunction as v, ClientNotFoundError as vt, DYNAMIC_AUTH_COOKIE_NAME as w, getUserAgent as x, name as xt, scrubParameters as y, BaseError as yt, emitEvent as z };
2047
- //# sourceMappingURL=updateAuthFromVerifyResponse-CVDQVEQM.esm.js.map
2304
+ export { getNonce as $, generateSessionKeys as A, splitWalletProviderKey as B, getOperatingSystem as C, name as Ct, getWalletProviderRegistry as D, WalletProviderPriority as E, normalizeWalletNameWithChain as F, onEvent as G, retryOnFail as H, getChainFromVerifiedCredentialChain as I, createApiClient as J, onceEvent as K, CHAINS_INFO_MAP as L, isSignedIn as M, getWalletAccounts as N, createRuntimeServiceAccessKey as O, formatWalletProviderKey as P, getDeviceSigner as Q, formatWalletAccountId as R, getUserAgent as S, getCore as St, getWalletProviderFromWalletAccount as T, emitEvent as U, InvalidWalletProviderKeyError as V, offEvent as W, createDeviceSignatureHeadersMiddleware as X, UnauthorizedError as Y, getHeadersForNonceSignedByDeviceSigners as Z, SDK_API_CORE_VERSION as _, NONCE_POOL_SIZE as _t, initializeWaasClientsForEagerRecovery as a, LinkCredentialError as at, scrubParameters as b, ClientNotFoundError as bt, isWaasWalletProvider as c, getSessionKeys as ct, DYNAMIC_WAAS_METADATA as d, ValueMustBeDefinedError as dt, updateNoncePoolStorage as et, getWalletProviders as f, getElevatedAccessToken as ft, DYNAMIC_ICONIC_SPRITE_URL as g, DYNAMIC_SDK_API_VERSION as gt, emitWalletAccountsChangedEvent as h, CLIENT_SDK_NAME as ht, InvalidParamError as i, MfaInvalidOtpError as it, fetchProjectSettings as j, NoWalletProviderFoundError as k, DEFAULT_WAAS_BASE_API_URL as l, isCookieEnabled as lt, checkAndRaiseWalletAccountsChangedEvent as m, getPlatform as mt, upsertElevatedAccessToken as n, SandboxMaximumThresholdReachedError as nt, isWaasWalletAccount as o, InvalidExternalAuthError as ot, isUserMissingMfaAuth as p, randomString as pt, fetchAndStoreNonces as q, parseElevatedAccessToken as r, MfaRateLimitedError as rt, findWaasWalletProviderByChain as s, APIError as st, updateAuthFromVerifyResponse as t, createStorageKeySchema as tt, DEFAULT_WAAS_BASE_MPC_RELAY_API_URL as u, assertDefined as ut, __logoutWithReason_wrapped as v, getDefaultClient as vt, extractSessionId as w, version as wt, DEFAULT_PII_FIELDS as x, BaseError as xt, instrumentFunction as y, setDefaultClient as yt, normalizeAddress as z };
2305
+ //# sourceMappingURL=updateAuthFromVerifyResponse-BEoc7f0m.esm.js.map