@dynamic-labs-sdk/client 0.25.0 → 0.25.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 (199) hide show
  1. package/android/build.gradle +71 -0
  2. package/android/src/main/java/xyz/dynamic/client/DynamicClientPackage.kt +42 -0
  3. package/android/src/main/java/xyz/dynamic/client/keychain/KeyStoreKeyManager.kt +147 -0
  4. package/android/src/main/java/xyz/dynamic/client/keychain/KeychainModule.kt +85 -0
  5. package/android/src/main/java/xyz/dynamic/client/manifest/ReactNativeManifestModule.kt +25 -0
  6. package/dist/{InvalidParamError-B5NwKSKU.native.esm.js → InvalidParamError-BDHw6nr1.native.esm.js} +7 -6
  7. package/dist/InvalidParamError-BDHw6nr1.native.esm.js.map +1 -0
  8. package/dist/{InvalidParamError-D-d-UfBL.cjs.js → InvalidParamError-BqDEZ6er.cjs.js} +3 -3
  9. package/dist/InvalidParamError-BqDEZ6er.cjs.js.map +1 -0
  10. package/dist/{InvalidParamError-BiVmL7nM.esm.js → InvalidParamError-DcN56mC-.esm.js} +2 -2
  11. package/dist/InvalidParamError-DcN56mC-.esm.js.map +1 -0
  12. package/dist/{NotWaasWalletAccountError-BX5lUnKT.native.esm.js → NotWaasWalletAccountError-B_TYSgak.native.esm.js} +3 -3
  13. package/dist/{NotWaasWalletAccountError-BX5lUnKT.native.esm.js.map → NotWaasWalletAccountError-B_TYSgak.native.esm.js.map} +1 -1
  14. package/dist/{NotWaasWalletAccountError-Bo4VhW4n.esm.js → NotWaasWalletAccountError-CQ7CMol4.esm.js} +3 -3
  15. package/dist/{NotWaasWalletAccountError-Bo4VhW4n.esm.js.map → NotWaasWalletAccountError-CQ7CMol4.esm.js.map} +1 -1
  16. package/dist/{NotWaasWalletAccountError-BJaemI4V.cjs.js → NotWaasWalletAccountError-ftYfHk_N.cjs.js} +3 -3
  17. package/dist/{NotWaasWalletAccountError-BJaemI4V.cjs.js.map → NotWaasWalletAccountError-ftYfHk_N.cjs.js.map} +1 -1
  18. package/dist/core.cjs.js +36 -6
  19. package/dist/core.cjs.js.map +1 -1
  20. package/dist/core.esm.js +34 -6
  21. package/dist/core.esm.js.map +1 -1
  22. package/dist/core.native.esm.js +46 -6
  23. package/dist/core.native.esm.js.map +1 -1
  24. package/dist/errors/NativeModuleNotLinkedError.d.ts +9 -0
  25. package/dist/errors/NativeModuleNotLinkedError.d.ts.map +1 -0
  26. package/dist/errors/ReactNativeOnlyError.d.ts +9 -0
  27. package/dist/errors/ReactNativeOnlyError.d.ts.map +1 -0
  28. package/dist/exports/core.d.ts +8 -2
  29. package/dist/exports/core.d.ts.map +1 -1
  30. package/dist/{getNetworkProviderFromNetworkId-5dK99mQR.esm.js → getNetworkProviderFromNetworkId-BRWuk0I8.native.esm.js} +408 -153
  31. package/dist/getNetworkProviderFromNetworkId-BRWuk0I8.native.esm.js.map +1 -0
  32. package/dist/{getNetworkProviderFromNetworkId-DWOYr3uv.native.esm.js → getNetworkProviderFromNetworkId-COHxfpo-.esm.js} +273 -46
  33. package/dist/getNetworkProviderFromNetworkId-COHxfpo-.esm.js.map +1 -0
  34. package/dist/{getNetworkProviderFromNetworkId-Cl2XDWo9.cjs.js → getNetworkProviderFromNetworkId-ClfETwqS.cjs.js} +302 -51
  35. package/dist/getNetworkProviderFromNetworkId-ClfETwqS.cjs.js.map +1 -0
  36. package/dist/{getSignedSessionId-DakTrfSz.esm.js → getSignedSessionId-B6ry-rvs.esm.js} +3 -3
  37. package/dist/{getSignedSessionId-DakTrfSz.esm.js.map → getSignedSessionId-B6ry-rvs.esm.js.map} +1 -1
  38. package/dist/{getSignedSessionId-BbhZjeRt.cjs.js → getSignedSessionId-Bkw9TATj.cjs.js} +3 -3
  39. package/dist/{getSignedSessionId-BbhZjeRt.cjs.js.map → getSignedSessionId-Bkw9TATj.cjs.js.map} +1 -1
  40. package/dist/{getSignedSessionId-Dk3_TQLq.native.esm.js → getSignedSessionId-C58DvQAd.native.esm.js} +3 -3
  41. package/dist/{getSignedSessionId-Dk3_TQLq.native.esm.js.map → getSignedSessionId-C58DvQAd.native.esm.js.map} +1 -1
  42. package/dist/{getVerifiedCredentialForWalletAccount-BDvkZbtb.cjs.js → getVerifiedCredentialForWalletAccount-DEiU9FZG.cjs.js} +11 -10
  43. package/dist/getVerifiedCredentialForWalletAccount-DEiU9FZG.cjs.js.map +1 -0
  44. package/dist/{getVerifiedCredentialForWalletAccount-ByUSFAHs.esm.js → getVerifiedCredentialForWalletAccount-DP4VQBly.esm.js} +10 -9
  45. package/dist/getVerifiedCredentialForWalletAccount-DP4VQBly.esm.js.map +1 -0
  46. package/dist/{getVerifiedCredentialForWalletAccount-Dhqf6Tdl.native.esm.js → getVerifiedCredentialForWalletAccount-d_bHvLLE.native.esm.js} +10 -9
  47. package/dist/getVerifiedCredentialForWalletAccount-d_bHvLLE.native.esm.js.map +1 -0
  48. package/dist/index.cjs.js +75 -276
  49. package/dist/index.cjs.js.map +1 -1
  50. package/dist/index.esm.js +71 -272
  51. package/dist/index.esm.js.map +1 -1
  52. package/dist/index.native.esm.js +71 -272
  53. package/dist/index.native.esm.js.map +1 -1
  54. package/dist/{isMfaRequiredForAction-y15A_lhP.native.esm.js → isMfaRequiredForAction-Cjbuyen3.native.esm.js} +2 -2
  55. package/dist/{isMfaRequiredForAction-y15A_lhP.native.esm.js.map → isMfaRequiredForAction-Cjbuyen3.native.esm.js.map} +1 -1
  56. package/dist/{isMfaRequiredForAction-SFbQW5j5.esm.js → isMfaRequiredForAction-D8GPFYzv.esm.js} +2 -2
  57. package/dist/{isMfaRequiredForAction-SFbQW5j5.esm.js.map → isMfaRequiredForAction-D8GPFYzv.esm.js.map} +1 -1
  58. package/dist/{isMfaRequiredForAction-CYrluCK-.cjs.js → isMfaRequiredForAction-mZub0YwI.cjs.js} +2 -2
  59. package/dist/{isMfaRequiredForAction-CYrluCK-.cjs.js.map → isMfaRequiredForAction-mZub0YwI.cjs.js.map} +1 -1
  60. package/dist/modules/auth/externalAuth/requestExternalAuthElevatedToken/requestExternalAuthElevatedToken.d.ts.map +1 -1
  61. package/dist/modules/auth/initializeAuth/initializeAuth.d.ts +1 -1
  62. package/dist/modules/auth/initializeAuth/setLongTimeout/setLongTimeout.d.ts +8 -2
  63. package/dist/modules/auth/initializeAuth/setLongTimeout/setLongTimeout.d.ts.map +1 -1
  64. package/dist/modules/auth/logout/logout.d.ts +1 -1
  65. package/dist/modules/auth/logout/logout.d.ts.map +1 -1
  66. package/dist/modules/auth/logoutReason.d.ts +4 -7
  67. package/dist/modules/auth/logoutReason.d.ts.map +1 -1
  68. package/dist/modules/auth/logoutWithReason/index.d.ts +2 -0
  69. package/dist/modules/auth/logoutWithReason/index.d.ts.map +1 -0
  70. package/dist/modules/auth/logoutWithReason/logoutWithReason.d.ts +24 -0
  71. package/dist/modules/auth/logoutWithReason/logoutWithReason.d.ts.map +1 -0
  72. package/dist/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/addOAuthUrlParams/addOAuthUrlParams.d.ts +7 -4
  73. package/dist/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/addOAuthUrlParams/addOAuthUrlParams.d.ts.map +1 -1
  74. package/dist/modules/auth/social/oauth/authenticateWithSocial/buildOAuthUrl/buildOAuthUrl.d.ts.map +1 -1
  75. package/dist/modules/auth/updateAuthFromVerifyResponse/elevatedAccessTokens/parseElevatedAccessToken/parseElevatedAccessToken.d.ts +6 -4
  76. package/dist/modules/auth/updateAuthFromVerifyResponse/elevatedAccessTokens/parseElevatedAccessToken/parseElevatedAccessToken.d.ts.map +1 -1
  77. package/dist/modules/auth/updateAuthFromVerifyResponse/updateAuthFromVerifyResponse.d.ts.map +1 -1
  78. package/dist/modules/initializeClient/initializeClient.d.ts.map +1 -1
  79. package/dist/modules/instrumentation/setInstrumentationEnabled/setInstrumentationEnabled.d.ts +6 -2
  80. package/dist/modules/instrumentation/setInstrumentationEnabled/setInstrumentationEnabled.d.ts.map +1 -1
  81. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/shouldFilterWallet/shouldFilterWallet.d.ts +9 -5
  82. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/shouldFilterWallet/shouldFilterWallet.d.ts.map +1 -1
  83. package/dist/modules/storageSync/schema.d.ts.map +1 -1
  84. package/dist/modules/user/deleteUser/deleteUser.d.ts +1 -1
  85. package/dist/modules/wallets/utils/isSameAddress/isSameAddress.d.ts +9 -1
  86. package/dist/modules/wallets/utils/isSameAddress/isSameAddress.d.ts.map +1 -1
  87. package/dist/modules/wallets/utils/normalizeAddress/normalizeAddress.d.ts +7 -1
  88. package/dist/modules/wallets/utils/normalizeAddress/normalizeAddress.d.ts.map +1 -1
  89. package/dist/modules/wallets/verifyWalletAccountForSignInOrTransfer/verifyWalletAccountForSignInOrTransfer.d.ts.map +1 -1
  90. package/dist/services/keychain/createKeychainService/ImportKeyNotSupportedError.d.ts +5 -0
  91. package/dist/services/keychain/createKeychainService/ImportKeyNotSupportedError.d.ts.map +1 -0
  92. package/dist/services/keychain/createKeychainService/KeyNotFoundError.d.ts.map +1 -0
  93. package/dist/services/keychain/createKeychainService/createKeychainService.d.ts +4 -0
  94. package/dist/services/keychain/createKeychainService/createKeychainService.d.ts.map +1 -0
  95. package/dist/services/keychain/createKeychainService/createKeychainService.types.d.ts +11 -0
  96. package/dist/services/keychain/createKeychainService/createKeychainService.types.d.ts.map +1 -0
  97. package/dist/services/keychain/createKeychainService/index.d.ts +2 -0
  98. package/dist/services/keychain/createKeychainService/index.d.ts.map +1 -0
  99. package/dist/services/keychain/createKeychainService/utils/constants.d.ts.map +1 -0
  100. package/dist/services/keychain/createKeychainService/utils/deleteIndexedDBItem.d.ts +9 -0
  101. package/dist/services/keychain/createKeychainService/utils/deleteIndexedDBItem.d.ts.map +1 -0
  102. package/dist/services/keychain/createKeychainService/utils/getIndexedDBItem.d.ts +10 -0
  103. package/dist/services/keychain/createKeychainService/utils/getIndexedDBItem.d.ts.map +1 -0
  104. package/dist/services/keychain/createKeychainService/utils/openDatabase.d.ts.map +1 -0
  105. package/dist/services/keychain/createKeychainService/utils/setIndexedDBItem.d.ts +10 -0
  106. package/dist/services/keychain/createKeychainService/utils/setIndexedDBItem.d.ts.map +1 -0
  107. package/dist/services/keychain/createKeychainService/utils/withDatabase/index.d.ts.map +1 -0
  108. package/dist/services/keychain/createKeychainService/utils/withDatabase/withDatabase.d.ts.map +1 -0
  109. package/dist/services/keychain/index.d.ts +1 -1
  110. package/dist/services/keychain/index.d.ts.map +1 -1
  111. package/dist/services/nativeManifest/getReactNativeManifest/getReactNativeManifest.d.ts +11 -0
  112. package/dist/services/nativeManifest/getReactNativeManifest/getReactNativeManifest.d.ts.map +1 -0
  113. package/dist/services/nativeManifest/getReactNativeManifest/index.d.ts +2 -0
  114. package/dist/services/nativeManifest/getReactNativeManifest/index.d.ts.map +1 -0
  115. package/dist/services/nativeManifest/nativeManifest.types.d.ts +14 -0
  116. package/dist/services/nativeManifest/nativeManifest.types.d.ts.map +1 -0
  117. package/dist/services/storage/createLocalStorageAdapter/createLocalStorageAdapter.d.ts +2 -2
  118. package/dist/services/storage/createStorage/createStorage.d.ts +4 -2
  119. package/dist/services/storage/createStorage/createStorage.d.ts.map +1 -1
  120. package/dist/services/storage/createStorageKeySchema/createStorageKeySchema.d.ts +2 -1
  121. package/dist/services/storage/createStorageKeySchema/createStorageKeySchema.d.ts.map +1 -1
  122. package/dist/services/storage/index.d.ts +1 -1
  123. package/dist/services/storage/index.d.ts.map +1 -1
  124. package/dist/services/storage/storage.types.d.ts +27 -3
  125. package/dist/services/storage/storage.types.d.ts.map +1 -1
  126. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  127. package/dist/utils/base64urlFromBytes/base64urlFromBytes.d.ts +8 -0
  128. package/dist/utils/base64urlFromBytes/base64urlFromBytes.d.ts.map +1 -0
  129. package/dist/utils/base64urlFromBytes/index.d.ts +2 -0
  130. package/dist/utils/base64urlFromBytes/index.d.ts.map +1 -0
  131. package/dist/utils/bytesFromBase64url/bytesFromBase64url.d.ts +8 -0
  132. package/dist/utils/bytesFromBase64url/bytesFromBase64url.d.ts.map +1 -0
  133. package/dist/utils/bytesFromBase64url/index.d.ts +2 -0
  134. package/dist/utils/bytesFromBase64url/index.d.ts.map +1 -0
  135. package/dist/utils/derToP1363/InvalidDERSignatureError.d.ts +5 -0
  136. package/dist/utils/derToP1363/InvalidDERSignatureError.d.ts.map +1 -0
  137. package/dist/utils/derToP1363/derToP1363.d.ts +8 -0
  138. package/dist/utils/derToP1363/derToP1363.d.ts.map +1 -0
  139. package/dist/utils/derToP1363/index.d.ts +2 -0
  140. package/dist/utils/derToP1363/index.d.ts.map +1 -0
  141. package/dist/utils/randomString/randomString.d.ts +1 -1
  142. package/dist/utils/randomString/randomString.d.ts.map +1 -1
  143. package/dist/waas.cjs.js +4 -4
  144. package/dist/waas.esm.js +3 -3
  145. package/dist/waas.native.esm.js +3 -3
  146. package/dist/waasCore.cjs.js +4 -4
  147. package/dist/waasCore.cjs.js.map +1 -1
  148. package/dist/waasCore.esm.js +3 -3
  149. package/dist/waasCore.esm.js.map +1 -1
  150. package/dist/waasCore.native.esm.js +3 -3
  151. package/dist/waasCore.native.esm.js.map +1 -1
  152. package/dynamic-labs-sdk-client.podspec +27 -0
  153. package/ios/Keychain.h +4 -0
  154. package/ios/Keychain.mm +101 -0
  155. package/ios/ReactNativeManifest.h +4 -0
  156. package/ios/ReactNativeManifest.mm +45 -0
  157. package/ios/ReactNativeManifestImpl.swift +20 -0
  158. package/ios/SecureEnclaveKeyManager.swift +180 -0
  159. package/package.json +34 -4
  160. package/react-native.config.cjs +14 -0
  161. package/dist/InvalidParamError-B5NwKSKU.native.esm.js.map +0 -1
  162. package/dist/InvalidParamError-BiVmL7nM.esm.js.map +0 -1
  163. package/dist/InvalidParamError-D-d-UfBL.cjs.js.map +0 -1
  164. package/dist/getNetworkProviderFromNetworkId-5dK99mQR.esm.js.map +0 -1
  165. package/dist/getNetworkProviderFromNetworkId-Cl2XDWo9.cjs.js.map +0 -1
  166. package/dist/getNetworkProviderFromNetworkId-DWOYr3uv.native.esm.js.map +0 -1
  167. package/dist/getVerifiedCredentialForWalletAccount-BDvkZbtb.cjs.js.map +0 -1
  168. package/dist/getVerifiedCredentialForWalletAccount-ByUSFAHs.esm.js.map +0 -1
  169. package/dist/getVerifiedCredentialForWalletAccount-Dhqf6Tdl.native.esm.js.map +0 -1
  170. package/dist/modules/auth/handleSessionExpiration/handleSessionExpiration.d.ts +0 -11
  171. package/dist/modules/auth/handleSessionExpiration/handleSessionExpiration.d.ts.map +0 -1
  172. package/dist/modules/auth/handleSessionExpiration/index.d.ts +0 -2
  173. package/dist/modules/auth/handleSessionExpiration/index.d.ts.map +0 -1
  174. package/dist/modules/auth/performLogout/index.d.ts +0 -2
  175. package/dist/modules/auth/performLogout/index.d.ts.map +0 -1
  176. package/dist/modules/auth/performLogout/performLogout.d.ts +0 -12
  177. package/dist/modules/auth/performLogout/performLogout.d.ts.map +0 -1
  178. package/dist/services/keychain/createIndexedDBKeychainService/KeyNotFoundError.d.ts.map +0 -1
  179. package/dist/services/keychain/createIndexedDBKeychainService/createIndexedDBKeychainService.d.ts +0 -8
  180. package/dist/services/keychain/createIndexedDBKeychainService/createIndexedDBKeychainService.d.ts.map +0 -1
  181. package/dist/services/keychain/createIndexedDBKeychainService/createIndexedDBKeychainService.types.d.ts +0 -6
  182. package/dist/services/keychain/createIndexedDBKeychainService/createIndexedDBKeychainService.types.d.ts.map +0 -1
  183. package/dist/services/keychain/createIndexedDBKeychainService/index.d.ts +0 -2
  184. package/dist/services/keychain/createIndexedDBKeychainService/index.d.ts.map +0 -1
  185. package/dist/services/keychain/createIndexedDBKeychainService/utils/constants.d.ts.map +0 -1
  186. package/dist/services/keychain/createIndexedDBKeychainService/utils/deleteIndexedDBItem.d.ts +0 -3
  187. package/dist/services/keychain/createIndexedDBKeychainService/utils/deleteIndexedDBItem.d.ts.map +0 -1
  188. package/dist/services/keychain/createIndexedDBKeychainService/utils/getIndexedDBItem.d.ts +0 -4
  189. package/dist/services/keychain/createIndexedDBKeychainService/utils/getIndexedDBItem.d.ts.map +0 -1
  190. package/dist/services/keychain/createIndexedDBKeychainService/utils/openDatabase.d.ts.map +0 -1
  191. package/dist/services/keychain/createIndexedDBKeychainService/utils/setIndexedDBItem.d.ts +0 -4
  192. package/dist/services/keychain/createIndexedDBKeychainService/utils/setIndexedDBItem.d.ts.map +0 -1
  193. package/dist/services/keychain/createIndexedDBKeychainService/utils/withDatabase/index.d.ts.map +0 -1
  194. package/dist/services/keychain/createIndexedDBKeychainService/utils/withDatabase/withDatabase.d.ts.map +0 -1
  195. /package/dist/services/keychain/{createIndexedDBKeychainService → createKeychainService}/KeyNotFoundError.d.ts +0 -0
  196. /package/dist/services/keychain/{createIndexedDBKeychainService → createKeychainService}/utils/constants.d.ts +0 -0
  197. /package/dist/services/keychain/{createIndexedDBKeychainService → createKeychainService}/utils/openDatabase.d.ts +0 -0
  198. /package/dist/services/keychain/{createIndexedDBKeychainService → createKeychainService}/utils/withDatabase/index.d.ts +0 -0
  199. /package/dist/services/keychain/{createIndexedDBKeychainService → createKeychainService}/utils/withDatabase/withDatabase.d.ts +0 -0
@@ -1,5 +1,5 @@
1
- import { F as getDefaultClient, R as BaseError, c as CHAINS_INFO_MAP, k as assertDefined, u as __createApiClient_wrapped, w as instrumentFunction, z as getCore } from "./InvalidParamError-B5NwKSKU.native.esm.js";
2
- import { _ as __createRuntimeServiceAccessKey_wrapped, d as checkAndRaiseWalletAccountsChangedEvent, m as __getWalletProviderFromWalletAccount_wrapped, x as normalizeWalletNameWithChain } from "./getVerifiedCredentialForWalletAccount-Dhqf6Tdl.native.esm.js";
1
+ import { F as getDefaultClient, M as CLIENT_SDK_NAME, O as isCookieEnabled, R as BaseError, c as CHAINS_INFO_MAP, k as assertDefined, u as __createApiClient_wrapped, w as instrumentFunction, z as getCore } from "./InvalidParamError-DcN56mC-.esm.js";
2
+ import { A as setCookie, _ as __createRuntimeServiceAccessKey_wrapped, d as checkAndRaiseWalletAccountsChangedEvent, k as emitEvent, m as __getWalletProviderFromWalletAccount_wrapped, p as DYNAMIC_AUTH_COOKIE_NAME, x as normalizeWalletNameWithChain, y as __getWalletAccounts_wrapped } from "./getVerifiedCredentialForWalletAccount-DP4VQBly.esm.js";
3
3
  import { AuthModeEnum } from "@dynamic-labs/sdk-api-core";
4
4
  import * as z from "zod/mini";
5
5
  import { Buffer as Buffer$1 } from "buffer";
@@ -66,10 +66,59 @@ const __subscribeWithSelector_wrapped = instrumentFunction({
66
66
  }
67
67
  });
68
68
 
69
+ //#endregion
70
+ //#region src/utils/retryOnFail/InvalidRetryOnFailCallError.ts
71
+ /**
72
+ * This error is thrown when the `retryOnFail` function is called with an invalid
73
+ * number of retries (i.e. less than 0).
74
+ */
75
+ var InvalidRetryOnFailCallError = class extends BaseError {
76
+ constructor(maxRetries) {
77
+ super({
78
+ cause: null,
79
+ code: "invalid_retry_on_fail_call_error",
80
+ docsUrl: null,
81
+ name: "InvalidRetryOnFailCallError",
82
+ shortMessage: `Invalid retries parameter for retryOnFail call: ${maxRetries}`
83
+ });
84
+ }
85
+ };
86
+
87
+ //#endregion
88
+ //#region src/utils/retryOnFail/retryOnFail.ts
89
+ /** @not-instrumented */
90
+ const retryOnFail = async ({ delay = 0, fn, maxRetries }) => {
91
+ for (let retry = 0; retry <= maxRetries; retry++) try {
92
+ return await fn();
93
+ } catch (error) {
94
+ if (retry >= maxRetries) throw error;
95
+ if (delay > 0) await new Promise((resolve) => setTimeout(resolve, delay));
96
+ }
97
+ /**
98
+ * Reaching this point should never happen and this
99
+ * error is thrown to help us debug the issue.
100
+ */
101
+ throw new InvalidRetryOnFailCallError(maxRetries);
102
+ };
103
+
104
+ //#endregion
105
+ //#region src/modules/auth/isSignedIn/isSignedIn.ts
106
+ /**
107
+ * Checks if the user is currently signed in to the Dynamic client.
108
+ *
109
+ * The client is considered to be in a signed in state if a user has
110
+ * authenticated or if the client has at least one wallet connected.
111
+ *
112
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
113
+ * @returns True if the user is signed in, false otherwise.
114
+ * @not-instrumented
115
+ */
116
+ const isSignedIn = (client = getDefaultClient()) => Boolean(client.user || __getWalletAccounts_wrapped(client).length > 0);
117
+
69
118
  //#endregion
70
119
  //#region src/services/storage/createLocalStorageAdapter/createLocalStorageAdapter.ts
71
120
  /**
72
- * Creates a localStorage adapter
121
+ * Creates a localStorage adapter.
73
122
  * @instrumented
74
123
  */
75
124
  const createLocalStorageAdapter = () => ({
@@ -144,14 +193,19 @@ const parseFromStorage = (value) => {
144
193
  //#endregion
145
194
  //#region src/services/storage/createStorage/createStorage.ts
146
195
  /**
147
- * Creates a Storage service to interact with storage adapter
196
+ * Creates a Storage service to interact with storage adapter.
197
+ * Reads the `storageTier` from each key's config and passes it
198
+ * to the adapter on every operation, defaulting to `'default'`.
148
199
  * @instrumented
149
200
  */
150
201
  const createStorage = ({ prefix = "", storageAdapter }) => {
151
202
  const getPrefixedKey = (key) => prefix ? `${prefix}_${key}` : key;
203
+ const getAdapterOptions = (storageTier) => ({ storageTier: storageTier ?? "default" });
152
204
  return {
153
205
  getItem: async (storageKeySchema) => {
154
- const rawItem = await storageAdapter.getItem(getPrefixedKey(storageKeySchema.key));
206
+ const prefixedKey = getPrefixedKey(storageKeySchema.key);
207
+ const options = getAdapterOptions(storageKeySchema.config?.storageTier);
208
+ const rawItem = await storageAdapter.getItem(prefixedKey, options);
155
209
  const parsedItem = rawItem ? parseFromStorage(rawItem) : null;
156
210
  /**
157
211
  * The item saved to localStorage may be malformed.
@@ -165,11 +219,11 @@ const createStorage = ({ prefix = "", storageAdapter }) => {
165
219
  * The item saved to localStorage may be malformed.
166
220
  * In this case, we remove it and return null.
167
221
  */
168
- await storageAdapter.removeItem(getPrefixedKey(storageKeySchema.key));
222
+ await storageAdapter.removeItem(prefixedKey, options);
169
223
  return null;
170
224
  },
171
225
  removeItem: async (storageKeySchema) => {
172
- await storageAdapter.removeItem(getPrefixedKey(storageKeySchema.key));
226
+ await storageAdapter.removeItem(getPrefixedKey(storageKeySchema.key), getAdapterOptions(storageKeySchema.config?.storageTier));
173
227
  },
174
228
  setItem: async (storageKeySchema, value) => {
175
229
  const parsed = storageKeySchema.schema.safeParse(value);
@@ -178,7 +232,7 @@ const createStorage = ({ prefix = "", storageAdapter }) => {
178
232
  value: JSON.stringify(value)
179
233
  });
180
234
  const item = formatForStorage(parsed.data);
181
- await storageAdapter.setItem(getPrefixedKey(storageKeySchema.key), item);
235
+ await storageAdapter.setItem(getPrefixedKey(storageKeySchema.key), item, getAdapterOptions(storageKeySchema.config?.storageTier));
182
236
  }
183
237
  };
184
238
  };
@@ -214,6 +268,64 @@ const __createStorageKeySchema_wrapped = instrumentFunction({
214
268
  }
215
269
  });
216
270
 
271
+ //#endregion
272
+ //#region src/modules/projectSettings/fetchProjectSettings/projectSettingsExpirationScheme.ts
273
+ /**
274
+ * The schema to track the expiration time of the project settings.
275
+ */
276
+ const projectSettingsExpirationStorageKeySchema = __createStorageKeySchema_wrapped({
277
+ key: "projectSettingsExpiration",
278
+ schema: z.number()
279
+ });
280
+
281
+ //#endregion
282
+ //#region src/modules/projectSettings/fetchProjectSettings/fetchProjectSettings.ts
283
+ /**
284
+ * Expiration time of the project settings in milliseconds.
285
+ */
286
+ const PROJECT_SETTINGS_EXPIRATION_TIME = 1e3 * 60 * 5;
287
+ /**
288
+ * Fetches and updates the project settings from the API.
289
+ *
290
+ * This function retrieves the latest project configuration settings
291
+ * from Dynamic's servers, including authentication options, enabled chains,
292
+ * and security configurations. The settings are cached for performance.
293
+ *
294
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
295
+ * @returns A promise that resolves to the updated project settings.
296
+ * @instrumented
297
+ */
298
+ const fetchProjectSettings = async (client = getDefaultClient()) => {
299
+ const core = getCore(client);
300
+ const currentExpiration = await core.storage.getItem(projectSettingsExpirationStorageKeySchema);
301
+ if (Boolean(client.projectSettings) && !(currentExpiration && currentExpiration < Date.now()) && isSignedIn(client)) return client.projectSettings;
302
+ const apiClient = __createApiClient_wrapped({}, client);
303
+ core.logger.debug("[fetchProjectSettings] Fetching project settings...");
304
+ const doFetch = async () => apiClient.getEnvironmentSettings({
305
+ environmentId: core.environmentId,
306
+ sdkVersion: `${CLIENT_SDK_NAME}/${core.version}`
307
+ }, { credentials: "omit" });
308
+ const projectSettings = await retryOnFail({
309
+ fn: doFetch,
310
+ maxRetries: 2
311
+ });
312
+ core.state.set({ projectSettings: projectSettings ?? null });
313
+ await core.storage.setItem(projectSettingsExpirationStorageKeySchema, Date.now() + PROJECT_SETTINGS_EXPIRATION_TIME);
314
+ return projectSettings;
315
+ };
316
+ const __fetchProjectSettings_impl = fetchProjectSettings;
317
+ const __fetchProjectSettings_wrapped = instrumentFunction({
318
+ fn: __fetchProjectSettings_impl,
319
+ functionName: "fetchProjectSettings",
320
+ getCore: () => {
321
+ try {
322
+ return getCore(getDefaultClient());
323
+ } catch {
324
+ return;
325
+ }
326
+ }
327
+ });
328
+
217
329
  //#endregion
218
330
  //#region src/modules/sessionKeys/generateSessionKeys/generateSessionKeys.ts
219
331
  /** @instrumented */
@@ -236,6 +348,115 @@ const __generateSessionKeys_wrapped = instrumentFunction({
236
348
  }
237
349
  });
238
350
 
351
+ //#endregion
352
+ //#region src/modules/wallets/utils/getAvailableWalletProvidersFromWalletAccounts/getAvailableWalletProvidersFromWalletAccounts.ts
353
+ /** @not-instrumented */
354
+ const getAvailableWalletProvidersFromWalletAccounts = (client) => {
355
+ const core = getCore(client);
356
+ const walletProvidersMap = /* @__PURE__ */ new Map();
357
+ __getWalletAccounts_wrapped(client).forEach((walletAccount) => {
358
+ if (walletProvidersMap.has(walletAccount.walletProviderKey)) return;
359
+ try {
360
+ const walletProvider = __getWalletProviderFromWalletAccount_wrapped({ walletAccount }, client);
361
+ walletProvidersMap.set(walletAccount.walletProviderKey, walletProvider);
362
+ } catch (error) {
363
+ core.logger.debug("Wallet provider not found for wallet account", {
364
+ error,
365
+ walletAccount: walletAccount.address
366
+ });
367
+ }
368
+ });
369
+ return Array.from(walletProvidersMap.values());
370
+ };
371
+
372
+ //#endregion
373
+ //#region src/modules/wallets/disconnectAndTerminateWalletProviders/disconnectAndTerminateWalletProviders.ts
374
+ /**
375
+ * Disconnect and terminate each wallet provider, if available.
376
+ * @not-instrumented
377
+ */
378
+ const disconnectAndTerminateWalletProviders = async ({ reason }, client) => {
379
+ const core = getCore(client);
380
+ const walletProviders = getAvailableWalletProvidersFromWalletAccounts(client);
381
+ await Promise.all(walletProviders.map(async (walletProvider) => {
382
+ if (walletProvider.terminate) await walletProvider.terminate({ reason });
383
+ if (walletProvider.disconnect) try {
384
+ await walletProvider.disconnect();
385
+ } catch (err) {
386
+ core.logger.error(`Error disconnecting from wallet ${walletProvider.key}`, err);
387
+ }
388
+ }));
389
+ };
390
+
391
+ //#endregion
392
+ //#region src/modules/auth/logoutWithReason/logoutWithReason.ts
393
+ /**
394
+ * Logs the user out with an explicit reason.
395
+ *
396
+ * Revokes the session, clears auth state, terminates wallet providers, and
397
+ * emits the `logout` client event with the given reason. The reason is also
398
+ * captured as an argument on the function-instrumentation event, which is
399
+ * how Datadog distinguishes between different logout causes.
400
+ *
401
+ * Use this instead of the public `logout` when triggering a logout from
402
+ * internal or extension code — the caller owns the reason string, so the
403
+ * telemetry correctly attributes *why* the logout happened.
404
+ *
405
+ * @param params - The logout params.
406
+ * @param params.reason - Why the logout is being triggered. Extension authors
407
+ * needing a reason outside the SDK catalog can cast with `as LogoutReason`.
408
+ * @param client - The Dynamic client instance.
409
+ * @instrumented
410
+ */
411
+ const logoutWithReason = async ({ reason }, client) => {
412
+ const core = getCore(client);
413
+ core.logger.debug("[logoutWithReason] Logging out...", { reason });
414
+ await disconnectAndTerminateWalletProviders({ reason }, client);
415
+ if (client.user !== null) {
416
+ const apiClient = __createApiClient_wrapped({}, client);
417
+ try {
418
+ await apiClient.revokeSession({ environmentId: core.environmentId });
419
+ } catch (error) {
420
+ core.logger.error("Failed to revoke session", error);
421
+ }
422
+ /**
423
+ * This deletes the auth cookie if it exists.
424
+ * If the cookie doesn't exist, this sets a new cookie that expires immediately.
425
+ */
426
+ if (isCookieEnabled(client)) setCookie(`${DYNAMIC_AUTH_COOKIE_NAME}=; Max-Age=-99999999; path=/; SameSite=Lax`);
427
+ }
428
+ await core.keychain.removeKey("session");
429
+ core.state.set({
430
+ captchaToken: null,
431
+ elevatedAccessTokens: [],
432
+ legacyToken: null,
433
+ mfaToken: null,
434
+ sessionExpiresAt: null,
435
+ sessionKeys: null,
436
+ token: null,
437
+ unverifiedWalletAccounts: [],
438
+ user: null
439
+ });
440
+ emitEvent({
441
+ args: { reason },
442
+ event: "logout"
443
+ }, client);
444
+ __fetchProjectSettings_wrapped(client);
445
+ __generateSessionKeys_wrapped(client);
446
+ };
447
+ const __logoutWithReason_impl = logoutWithReason;
448
+ const __logoutWithReason_wrapped = instrumentFunction({
449
+ fn: __logoutWithReason_impl,
450
+ functionName: "logoutWithReason",
451
+ getCore: () => {
452
+ try {
453
+ return getCore(getDefaultClient());
454
+ } catch {
455
+ return;
456
+ }
457
+ }
458
+ });
459
+
239
460
  //#endregion
240
461
  //#region src/utils/getBuffer/getBuffer.ts
241
462
  /** @not-instrumented */
@@ -443,7 +664,7 @@ const compressRawPublicKey = (rawPublicKey) => {
443
664
  };
444
665
 
445
666
  //#endregion
446
- //#region src/services/keychain/createIndexedDBKeychainService/KeyNotFoundError.ts
667
+ //#region src/services/keychain/createKeychainService/KeyNotFoundError.ts
447
668
  var KeyNotFoundError = class extends BaseError {
448
669
  constructor(keyName) {
449
670
  super({
@@ -457,38 +678,38 @@ var KeyNotFoundError = class extends BaseError {
457
678
  };
458
679
 
459
680
  //#endregion
460
- //#region src/services/keychain/createIndexedDBKeychainService/utils/constants.ts
681
+ //#region src/services/keychain/createKeychainService/utils/constants.ts
461
682
  const STORE_NAME = "keys";
462
683
 
463
684
  //#endregion
464
- //#region src/services/keychain/createIndexedDBKeychainService/utils/deleteIndexedDBItem.ts
685
+ //#region src/services/keychain/createKeychainService/utils/deleteIndexedDBItem.ts
465
686
  /** @not-instrumented */
466
- const deleteIndexedDBItem = (db, keyName) => new Promise((resolve, reject) => {
687
+ const deleteIndexedDBItem = ({ db, keyName }) => new Promise((resolve, reject) => {
467
688
  const request = db.transaction(STORE_NAME, "readwrite").objectStore(STORE_NAME).delete(keyName);
468
689
  request.onsuccess = () => resolve();
469
690
  request.onerror = () => reject(request.error);
470
691
  });
471
692
 
472
693
  //#endregion
473
- //#region src/services/keychain/createIndexedDBKeychainService/utils/getIndexedDBItem.ts
694
+ //#region src/services/keychain/createKeychainService/utils/getIndexedDBItem.ts
474
695
  /** @not-instrumented */
475
- const getIndexedDBItem = (db, keyName) => new Promise((resolve, reject) => {
696
+ const getIndexedDBItem = ({ db, keyName }) => new Promise((resolve, reject) => {
476
697
  const request = db.transaction(STORE_NAME, "readonly").objectStore(STORE_NAME).get(keyName);
477
698
  request.onsuccess = () => resolve(request.result);
478
699
  request.onerror = () => reject(request.error);
479
700
  });
480
701
 
481
702
  //#endregion
482
- //#region src/services/keychain/createIndexedDBKeychainService/utils/setIndexedDBItem.ts
703
+ //#region src/services/keychain/createKeychainService/utils/setIndexedDBItem.ts
483
704
  /** @not-instrumented */
484
- const setIndexedDBItem = (db, entry) => new Promise((resolve, reject) => {
705
+ const setIndexedDBItem = ({ db, entry }) => new Promise((resolve, reject) => {
485
706
  const request = db.transaction(STORE_NAME, "readwrite").objectStore(STORE_NAME).put(entry);
486
707
  request.onsuccess = () => resolve();
487
708
  request.onerror = () => reject(request.error);
488
709
  });
489
710
 
490
711
  //#endregion
491
- //#region src/services/keychain/createIndexedDBKeychainService/utils/openDatabase.ts
712
+ //#region src/services/keychain/createKeychainService/utils/openDatabase.ts
492
713
  /** @not-instrumented */
493
714
  const openDatabase = (dbName) => new Promise((resolve, reject) => {
494
715
  const request = indexedDB.open(dbName, 1);
@@ -501,7 +722,7 @@ const openDatabase = (dbName) => new Promise((resolve, reject) => {
501
722
  });
502
723
 
503
724
  //#endregion
504
- //#region src/services/keychain/createIndexedDBKeychainService/utils/withDatabase/withDatabase.ts
725
+ //#region src/services/keychain/createKeychainService/utils/withDatabase/withDatabase.ts
505
726
  /**
506
727
  * Scopes a database connection to the lifetime of a callback.
507
728
  * Opens a connection, passes it to the operation, and guarantees
@@ -518,10 +739,10 @@ const withDatabase = async ({ dbName, operation }) => {
518
739
  };
519
740
 
520
741
  //#endregion
521
- //#region src/services/keychain/createIndexedDBKeychainService/createIndexedDBKeychainService.ts
742
+ //#region src/services/keychain/createKeychainService/createKeychainService.ts
522
743
  const DEFAULT_DB_NAME = "dynamic_keychain";
523
744
  /** @instrumented */
524
- const createIndexedDBKeychainService = (params) => {
745
+ const createKeychainService = (params) => {
525
746
  const dbName = params?.dbName ?? DEFAULT_DB_NAME;
526
747
  const generateKey = async (keyName) => {
527
748
  const keyPair = await crypto.subtle.generateKey({
@@ -531,10 +752,13 @@ const createIndexedDBKeychainService = (params) => {
531
752
  const publicKeyHex = bufferToHex(compressRawPublicKey(await crypto.subtle.exportKey("raw", keyPair.publicKey)));
532
753
  await withDatabase({
533
754
  dbName,
534
- operation: (db) => setIndexedDBItem(db, {
535
- keyName,
536
- privateKey: keyPair.privateKey,
537
- publicKeyHex
755
+ operation: (db) => setIndexedDBItem({
756
+ db,
757
+ entry: {
758
+ keyName,
759
+ privateKey: keyPair.privateKey,
760
+ publicKeyHex
761
+ }
538
762
  })
539
763
  });
540
764
  return publicKeyHex;
@@ -557,10 +781,13 @@ const createIndexedDBKeychainService = (params) => {
557
781
  const publicKeyHex = bufferToHex(compressRawPublicKey(await crypto.subtle.exportKey("raw", publicCryptoKey)));
558
782
  await withDatabase({
559
783
  dbName,
560
- operation: (db) => setIndexedDBItem(db, {
561
- keyName,
562
- privateKey,
563
- publicKeyHex
784
+ operation: (db) => setIndexedDBItem({
785
+ db,
786
+ entry: {
787
+ keyName,
788
+ privateKey,
789
+ publicKeyHex
790
+ }
564
791
  })
565
792
  });
566
793
  return publicKeyHex;
@@ -568,13 +795,19 @@ const createIndexedDBKeychainService = (params) => {
568
795
  const getPublicKey = async (keyName) => {
569
796
  return (await withDatabase({
570
797
  dbName,
571
- operation: (db) => getIndexedDBItem(db, keyName)
798
+ operation: (db) => getIndexedDBItem({
799
+ db,
800
+ keyName
801
+ })
572
802
  }))?.publicKeyHex ?? null;
573
803
  };
574
804
  const sign = async (keyName, message) => {
575
805
  const entry = await withDatabase({
576
806
  dbName,
577
- operation: (db) => getIndexedDBItem(db, keyName)
807
+ operation: (db) => getIndexedDBItem({
808
+ db,
809
+ keyName
810
+ })
578
811
  });
579
812
  if (!entry) throw new KeyNotFoundError(keyName);
580
813
  const data = new TextEncoder().encode(message);
@@ -586,13 +819,19 @@ const createIndexedDBKeychainService = (params) => {
586
819
  const hasKey = async (keyName) => {
587
820
  return await withDatabase({
588
821
  dbName,
589
- operation: (db) => getIndexedDBItem(db, keyName)
822
+ operation: (db) => getIndexedDBItem({
823
+ db,
824
+ keyName
825
+ })
590
826
  }) !== void 0;
591
827
  };
592
828
  const removeKey = async (keyName) => {
593
829
  await withDatabase({
594
830
  dbName,
595
- operation: (db) => deleteIndexedDBItem(db, keyName)
831
+ operation: (db) => deleteIndexedDBItem({
832
+ db,
833
+ keyName
834
+ })
596
835
  });
597
836
  };
598
837
  return {
@@ -604,18 +843,6 @@ const createIndexedDBKeychainService = (params) => {
604
843
  sign
605
844
  };
606
845
  };
607
- const __createIndexedDBKeychainService_impl = createIndexedDBKeychainService;
608
- const __createIndexedDBKeychainService_wrapped = instrumentFunction({
609
- fn: __createIndexedDBKeychainService_impl,
610
- functionName: "createIndexedDBKeychainService",
611
- getCore: () => {
612
- try {
613
- return getCore(getDefaultClient());
614
- } catch {
615
- return;
616
- }
617
- }
618
- });
619
846
 
620
847
  //#endregion
621
848
  //#region src/errors/InvalidRealtimePublishError.ts
@@ -1298,5 +1525,5 @@ const __getNetworkProviderFromNetworkId_wrapped = instrumentFunction({
1298
1525
  });
1299
1526
 
1300
1527
  //#endregion
1301
- export { REFRESH_USER_STATE_FROM_VALID_TOKEN_TRACKER_KEY as A, CrossTabBroadcastMessageSchema as C, GENERATE_SESSION_KEYS_TRACKER_KEY as D, FETCH_PROJECT_SETTINGS_TRACKER_KEY as E, __createStorage_wrapped as F, InvalidStorageSet as I, __createLocalStorageAdapter_wrapped as L, getBuffer as M, __generateSessionKeys_wrapped as N, INITIALIZE_STORAGE_SYNC_TRACKER_KEY as O, __createStorageKeySchema_wrapped as P, __subscribeWithSelector_wrapped as R, __createCrossTabBroadcast_wrapped as S, __createDeferredPromise_wrapped as T, WalletAlreadyLinkedToAnotherUserError as _, __updateWalletProviderKeysForVerifiedCredentials_wrapped as a, __createIndexedDBKeychainService_wrapped as b, __createSignInMessageStatement_wrapped as c, __createVisit_wrapped as d, hasExtension as f, isCaptchaRequired as g, __consumeCaptchaToken_wrapped as h, __getNetworksData_wrapped as i, isServerSideRendering as j, REFRESH_USER_STATE_FROM_COOKIE_TRACKER_KEY as k, formatSignInMessage as l, __setCaptchaToken_wrapped as m, __getNetworkProviders_wrapped as n, __verifyMessageSignatureOwnership_wrapped as o, __createRealtimeChannelSchema_wrapped as p, getNetworkProviderBuilderRegistry as r, __removeUnverifiedWalletAccount_wrapped as s, __getNetworkProviderFromNetworkId_wrapped as t, __setUnverifiedWalletAccounts_wrapped as u, NoNetworkProvidersError as v, CannotTrackError as w, __createLogger_wrapped as x, __createRealtimeService_wrapped as y, isEqualShallow as z };
1302
- //# sourceMappingURL=getNetworkProviderFromNetworkId-DWOYr3uv.native.esm.js.map
1528
+ export { REFRESH_USER_STATE_FROM_VALID_TOKEN_TRACKER_KEY as A, isSignedIn as B, CrossTabBroadcastMessageSchema as C, GENERATE_SESSION_KEYS_TRACKER_KEY as D, FETCH_PROJECT_SETTINGS_TRACKER_KEY as E, __fetchProjectSettings_wrapped as F, __subscribeWithSelector_wrapped as H, __createStorageKeySchema_wrapped as I, __createStorage_wrapped as L, getBuffer as M, __logoutWithReason_wrapped as N, INITIALIZE_STORAGE_SYNC_TRACKER_KEY as O, __generateSessionKeys_wrapped as P, InvalidStorageSet as R, __createCrossTabBroadcast_wrapped as S, __createDeferredPromise_wrapped as T, isEqualShallow as U, retryOnFail as V, WalletAlreadyLinkedToAnotherUserError as _, __updateWalletProviderKeysForVerifiedCredentials_wrapped as a, createKeychainService as b, __createSignInMessageStatement_wrapped as c, __createVisit_wrapped as d, hasExtension as f, isCaptchaRequired as g, __consumeCaptchaToken_wrapped as h, __getNetworksData_wrapped as i, isServerSideRendering as j, REFRESH_USER_STATE_FROM_COOKIE_TRACKER_KEY as k, formatSignInMessage as l, __setCaptchaToken_wrapped as m, __getNetworkProviders_wrapped as n, __verifyMessageSignatureOwnership_wrapped as o, __createRealtimeChannelSchema_wrapped as p, getNetworkProviderBuilderRegistry as r, __removeUnverifiedWalletAccount_wrapped as s, __getNetworkProviderFromNetworkId_wrapped as t, __setUnverifiedWalletAccounts_wrapped as u, NoNetworkProvidersError as v, CannotTrackError as w, __createLogger_wrapped as x, __createRealtimeService_wrapped as y, __createLocalStorageAdapter_wrapped as z };
1529
+ //# sourceMappingURL=getNetworkProviderFromNetworkId-COHxfpo-.esm.js.map