@dynamic-labs-sdk/client 0.26.7 → 0.26.10

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 (201) hide show
  1. package/dist/{InvalidParamError-WXK434H2.esm.js → InvalidParamError-De4xrOs4.esm.js} +17 -101
  2. package/dist/InvalidParamError-De4xrOs4.esm.js.map +1 -0
  3. package/dist/{InvalidParamError-F90z0K5r.native.esm.js → InvalidParamError-DfGaCYmW.native.esm.js} +17 -101
  4. package/dist/InvalidParamError-DfGaCYmW.native.esm.js.map +1 -0
  5. package/dist/{InvalidParamError-DFpM4bIX.cjs → InvalidParamError-XWDgGlk3.cjs} +43 -127
  6. package/dist/InvalidParamError-XWDgGlk3.cjs.map +1 -0
  7. package/dist/{NotWaasWalletAccountError-D_qlVMCG.esm.js → NotWaasWalletAccountError-Bws_qXec.native.esm.js} +5 -5
  8. package/dist/{NotWaasWalletAccountError-QZZmjyhq.native.esm.js.map → NotWaasWalletAccountError-Bws_qXec.native.esm.js.map} +1 -1
  9. package/dist/{NotWaasWalletAccountError-QZZmjyhq.native.esm.js → NotWaasWalletAccountError-CdAul2Xh.esm.js} +5 -5
  10. package/dist/{NotWaasWalletAccountError-D_qlVMCG.esm.js.map → NotWaasWalletAccountError-CdAul2Xh.esm.js.map} +1 -1
  11. package/dist/{NotWaasWalletAccountError-DbzO2LzZ.cjs → NotWaasWalletAccountError-rJzT_0wz.cjs} +5 -5
  12. package/dist/{NotWaasWalletAccountError-DbzO2LzZ.cjs.map → NotWaasWalletAccountError-rJzT_0wz.cjs.map} +1 -1
  13. package/dist/core.cjs +53 -113
  14. package/dist/core.cjs.map +1 -1
  15. package/dist/core.esm.js +16 -76
  16. package/dist/core.esm.js.map +1 -1
  17. package/dist/core.native.esm.js +16 -76
  18. package/dist/core.native.esm.js.map +1 -1
  19. package/dist/{getNetworkProviderFromNetworkId-BV9lOcuP.cjs → getNetworkProviderFromNetworkId-C_6K_daH.cjs} +110 -362
  20. package/dist/getNetworkProviderFromNetworkId-C_6K_daH.cjs.map +1 -0
  21. package/dist/{getNetworkProviderFromNetworkId-BVurb9VE.esm.js → getNetworkProviderFromNetworkId-Cqzo1MhF.esm.js} +41 -293
  22. package/dist/getNetworkProviderFromNetworkId-Cqzo1MhF.esm.js.map +1 -0
  23. package/dist/{getNetworkProviderFromNetworkId-DbR2qejA.native.esm.js → getNetworkProviderFromNetworkId-Dz1Wd9-n.native.esm.js} +41 -293
  24. package/dist/getNetworkProviderFromNetworkId-Dz1Wd9-n.native.esm.js.map +1 -0
  25. package/dist/{getSignedSessionId-CNkcX15D.cjs → getSignedSessionId-B2YC9266.cjs} +10 -34
  26. package/dist/getSignedSessionId-B2YC9266.cjs.map +1 -0
  27. package/dist/{getSignedSessionId-DFiqF8_b.esm.js → getSignedSessionId-D-G950gE.native.esm.js} +7 -31
  28. package/dist/getSignedSessionId-D-G950gE.native.esm.js.map +1 -0
  29. package/dist/{getSignedSessionId-DXtxIjxF.native.esm.js → getSignedSessionId-G9BPBkMb.esm.js} +7 -31
  30. package/dist/getSignedSessionId-G9BPBkMb.esm.js.map +1 -0
  31. package/dist/{getVerifiedCredentialForWalletAccount-6di80gqF.esm.js → getVerifiedCredentialForWalletAccount-DqXnLSqq.esm.js} +19 -127
  32. package/dist/getVerifiedCredentialForWalletAccount-DqXnLSqq.esm.js.map +1 -0
  33. package/dist/{getVerifiedCredentialForWalletAccount-4eVkx2ZN.cjs → getVerifiedCredentialForWalletAccount-SS1WQ2i3.cjs} +67 -175
  34. package/dist/getVerifiedCredentialForWalletAccount-SS1WQ2i3.cjs.map +1 -0
  35. package/dist/{getVerifiedCredentialForWalletAccount-CHIZTYim.native.esm.js → getVerifiedCredentialForWalletAccount-a1WXUW0u.native.esm.js} +19 -127
  36. package/dist/getVerifiedCredentialForWalletAccount-a1WXUW0u.native.esm.js.map +1 -0
  37. package/dist/index.cjs +203 -635
  38. package/dist/index.cjs.map +1 -1
  39. package/dist/index.esm.js +161 -593
  40. package/dist/index.esm.js.map +1 -1
  41. package/dist/index.native.esm.js +156 -588
  42. package/dist/index.native.esm.js.map +1 -1
  43. package/dist/{isMfaRequiredForAction-DKSH9YEU.esm.js → isMfaRequiredForAction-CPlDnHuj.esm.js} +6 -18
  44. package/dist/isMfaRequiredForAction-CPlDnHuj.esm.js.map +1 -0
  45. package/dist/{isMfaRequiredForAction-ZwjmqVg-.cjs → isMfaRequiredForAction-CYVZ_XGq.cjs} +7 -19
  46. package/dist/isMfaRequiredForAction-CYVZ_XGq.cjs.map +1 -0
  47. package/dist/{isMfaRequiredForAction-cJ294BGH.native.esm.js → isMfaRequiredForAction-CwUE98S3.native.esm.js} +6 -18
  48. package/dist/isMfaRequiredForAction-CwUE98S3.native.esm.js.map +1 -0
  49. package/dist/modules/apiClient/createApiClient.d.ts +1 -1
  50. package/dist/modules/apiClient/utils/deviceSignatureHeadersMiddleware/createDeviceSignatureHeadersMiddleware.d.ts +1 -1
  51. package/dist/modules/apiClient/utils/deviceSignatureHeadersMiddleware/createDeviceSignatureHeadersMiddleware.d.ts.map +1 -1
  52. package/dist/modules/auth/createVisit/createVisit.d.ts +1 -1
  53. package/dist/modules/auth/createVisit/createVisit.d.ts.map +1 -1
  54. package/dist/modules/auth/passkeys/getPasskeys/getPasskeys.d.ts +1 -1
  55. package/dist/modules/auth/social/getUserSocialAccounts/getUserSocialAccounts.d.ts +1 -1
  56. package/dist/modules/auth/social/oauth/detectOAuthRedirect/detectOAuthRedirect.d.ts +1 -1
  57. package/dist/modules/auth/social/oauth/detectSocialRedirectUrl/detectSocialRedirectUrl.d.ts +1 -1
  58. package/dist/modules/auth/updateAuthFromVerifyResponse/updateAuthFromVerifyResponse.d.ts +1 -1
  59. package/dist/modules/auth/updateAuthFromVerifyResponse/updateAuthFromVerifyResponse.d.ts.map +1 -1
  60. package/dist/modules/balances/getBalances/getBalances.d.ts +1 -1
  61. package/dist/modules/balances/getMultichainBalances/getMultichainBalances.d.ts +1 -1
  62. package/dist/modules/captcha/consumeCaptchaToken/consumeCaptchaToken.d.ts +1 -1
  63. package/dist/modules/checkout/getCheckoutTransaction/getCheckoutTransaction.d.ts +1 -1
  64. package/dist/modules/checkout/getCheckoutTransactionQuote/getCheckoutTransactionQuote.d.ts +1 -1
  65. package/dist/modules/checkout/trackCheckoutTransaction/trackCheckoutTransaction.d.ts +1 -1
  66. package/dist/modules/checkout/utils/requiresConversion/requiresConversion.d.ts +1 -1
  67. package/dist/modules/clientEvents/clientEvents.d.ts +3 -3
  68. package/dist/modules/deviceRegistration/detectDeviceRegistrationRedirect/detectDeviceRegistrationRedirect.d.ts +1 -1
  69. package/dist/modules/deviceRegistration/getDeviceRegistrationTokenFromUrl/getDeviceRegistrationTokenFromUrl.d.ts +1 -1
  70. package/dist/modules/deviceRegistration/getDeviceSigner/getDeviceSigner.d.ts +1 -1
  71. package/dist/modules/deviceRegistration/getDeviceSigner/getDeviceSigner.d.ts.map +1 -1
  72. package/dist/modules/deviceRegistration/getHeadersForNonceSignedByDeviceSigners/getHeadersForNonceSignedByDeviceSigners.d.ts +1 -1
  73. package/dist/modules/deviceRegistration/getHeadersForNonceSignedByDeviceSigners/getHeadersForNonceSignedByDeviceSigners.d.ts.map +1 -1
  74. package/dist/modules/deviceRegistration/getRegisteredDevices/getRegisteredDevices.d.ts +1 -1
  75. package/dist/modules/deviceRegistration/getRegisteredDevices/getRegisteredDevices.d.ts.map +1 -1
  76. package/dist/modules/extension/registerExtension/registerExtension.d.ts +1 -1
  77. package/dist/modules/funding/coinbase/addCoinbaseOnrampOrderEventListener/addCoinbaseOnrampOrderEventListener.d.ts +1 -1
  78. package/dist/modules/funding/coinbase/getCoinbaseBuyUrl/getCoinbaseBuyUrl.d.ts +1 -1
  79. package/dist/modules/funding/coinbase/getMissingVerificationForCoinbaseOnrampOrder/getMissingVerificationForCoinbaseOnrampOrder.d.ts +1 -1
  80. package/dist/modules/funding/kraken/getKrakenAccounts/getKrakenAccounts.d.ts +1 -1
  81. package/dist/modules/funding/kraken/getKrakenWhitelistedAddresses/getKrakenWhitelistedAddresses.d.ts +1 -1
  82. package/dist/modules/initializeClient/waitForClientInitialized/waitForClientInitialized.d.ts +1 -1
  83. package/dist/modules/initializeClient/waitForProjectSettings/waitForProjectSettings.d.ts +1 -1
  84. package/dist/modules/initializeClient/waitForProjectSettings/waitForProjectSettings.d.ts.map +1 -1
  85. package/dist/modules/legacyWalletBook/getWalletConnectCatalog/getWalletConnectCatalog.d.ts +1 -1
  86. package/dist/modules/legacyWalletBook/getWalletConnectCatalogWalletByWalletProviderKey/getWalletConnectCatalogWalletByWalletProviderKey.d.ts +1 -1
  87. package/dist/modules/mfa/consumeMfaTokenIfRequiredForAction/consumeMfaTokenIfRequiredForAction.d.ts +1 -1
  88. package/dist/modules/mfa/consumeMfaTokenIfRequiredForAction/consumeMfaTokenIfRequiredForAction.d.ts.map +1 -1
  89. package/dist/modules/mfa/getMfaDevices/getMfaDevices.d.ts +1 -1
  90. package/dist/modules/mfa/getMfaMethods/getMfaMethods.d.ts +1 -1
  91. package/dist/modules/mfa/getMfaRecoveryCodes/getMfaRecoveryCodes.d.ts +1 -1
  92. package/dist/modules/projectSettings/fetchProjectSettings/fetchProjectSettings.d.ts +1 -1
  93. package/dist/modules/sessionKeys/generateSessionKeys/generateSessionKeys.d.ts +1 -1
  94. package/dist/modules/sessionKeys/generateSessionKeys/generateSessionKeys.d.ts.map +1 -1
  95. package/dist/modules/sessionKeys/getSessionKeys/getSessionKeys.d.ts +1 -1
  96. package/dist/modules/sessionKeys/getSessionKeys/getSessionKeys.d.ts.map +1 -1
  97. package/dist/modules/sessionKeys/getSignedSessionId/getSignedSessionId.d.ts +1 -1
  98. package/dist/modules/sessionKeys/getSignedSessionId/getSignedSessionId.d.ts.map +1 -1
  99. package/dist/modules/swap/getSwapQuote/getSwapQuote.d.ts +1 -1
  100. package/dist/modules/swap/getSwapStatus/getSwapStatus.d.ts +1 -1
  101. package/dist/modules/wallets/getAvailableWalletProvidersData/getAvailableWalletProvidersData.d.ts +1 -1
  102. package/dist/modules/wallets/getConnectedAddresses/getConnectedAddresses.d.ts +1 -1
  103. package/dist/modules/wallets/getOwnerWalletAccountForSmartWalletAccount/getOwnerWalletAccountForSmartWalletAccount.d.ts +1 -1
  104. package/dist/modules/wallets/getOwnerWalletAccountForSmartWalletAccount/getOwnerWalletAccountForSmartWalletAccount.d.ts.map +1 -1
  105. package/dist/modules/wallets/getWalletAccounts/getWalletAccounts.d.ts +1 -1
  106. package/dist/modules/wallets/getWalletProviders/getWalletProviders.d.ts +1 -1
  107. package/dist/modules/wallets/networks/createBaseNetworkProvider/createBaseNetworkProvider.d.ts +1 -1
  108. package/dist/modules/wallets/networks/createBaseNetworkProvider/createBaseNetworkProvider.d.ts.map +1 -1
  109. package/dist/modules/wallets/networks/getActiveNetworkData/getActiveNetworkData.d.ts +1 -1
  110. package/dist/modules/wallets/networks/getActiveNetworkId/getActiveNetworkId.d.ts +1 -1
  111. package/dist/modules/wallets/networks/getBalance/getBalance.d.ts +1 -1
  112. package/dist/modules/wallets/networks/getBalanceForAddress/getBalanceForAddress.d.ts +1 -1
  113. package/dist/modules/wallets/networks/getNetworkDataForNetworkId/getNetworkDataForNetworkId.d.ts +1 -1
  114. package/dist/modules/wallets/networks/getNetworkDataForNetworkId/getNetworkDataForNetworkId.d.ts.map +1 -1
  115. package/dist/modules/wallets/networks/getNetworkProviderFromNetworkId/getNetworkProviderFromNetworkId.d.ts +1 -1
  116. package/dist/modules/wallets/networks/getNetworkProviderFromNetworkId/getNetworkProviderFromNetworkId.d.ts.map +1 -1
  117. package/dist/modules/wallets/networks/getNetworkProviders/getNetworkProviders.d.ts +1 -1
  118. package/dist/modules/wallets/networks/getNetworksData/getNetworksData.d.ts +1 -1
  119. package/dist/modules/wallets/networks/getTransactionHistory/getTransactionHistory.d.ts +1 -1
  120. package/dist/modules/wallets/primaryWalletAccount/getPrimaryWalletAccount/getPrimaryWalletAccount.d.ts +1 -1
  121. package/dist/modules/wallets/unverifiedWalletAccounts/removeUnverifiedWalletAccount/removeUnverifiedWalletAccount.d.ts +1 -1
  122. package/dist/modules/wallets/unverifiedWalletAccounts/setUnverifiedWalletAccounts/setUnverifiedWalletAccounts.d.ts +1 -1
  123. package/dist/modules/wallets/utils/getSignInMessage/createSignInMessageStatement/createSignInMessageStatement.d.ts +1 -1
  124. package/dist/modules/wallets/utils/getSignInMessage/createSignInMessageStatement/createSignInMessageStatement.d.ts.map +1 -1
  125. package/dist/modules/wallets/utils/getVerifiedCredentialForWalletAccount/getVerifiedCredentialForWalletAccount.d.ts +1 -1
  126. package/dist/modules/wallets/utils/getVerifiedCredentialForWalletAccount/getVerifiedCredentialForWalletAccount.d.ts.map +1 -1
  127. package/dist/modules/wallets/utils/getWalletProviderFromWalletAccount/getWalletProviderFromWalletAccount.d.ts +1 -1
  128. package/dist/modules/wallets/utils/getWalletProviderFromWalletAccount/getWalletProviderFromWalletAccount.d.ts.map +1 -1
  129. package/dist/modules/wallets/verifyMessageSignatureOwnership/verifyMessageSignatureOwnership.d.ts +1 -1
  130. package/dist/modules/wallets/walletProvider/defaultImplementations/getActiveNetworkIdFromLastKnownRegistry/getActiveNetworkIdFromLastKnownRegistry.d.ts +1 -1
  131. package/dist/modules/wallets/walletProvider/defaultImplementations/getActiveNetworkIdFromLastKnownRegistry/getActiveNetworkIdFromLastKnownRegistry.d.ts.map +1 -1
  132. package/dist/modules/wallets/walletProvider/defaultImplementations/switchActiveNetworkInLastKnownRegistry/switchActiveNetworkInLastKnownRegistry.d.ts +1 -1
  133. package/dist/modules/wallets/walletProvider/defaultImplementations/switchActiveNetworkInLastKnownRegistry/switchActiveNetworkInLastKnownRegistry.d.ts.map +1 -1
  134. package/dist/modules/wallets/walletProvider/events/createWalletProviderEventEmitter/createWalletProviderEventEmitter.d.ts +1 -1
  135. package/dist/modules/wallets/walletProvider/events/offWalletProviderEvent/offWalletProviderEvent.d.ts +1 -1
  136. package/dist/modules/wallets/walletProvider/events/onWalletProviderEvent/onWalletProviderEvent.d.ts +1 -1
  137. package/dist/modules/wallets/walletProvider/walletProviderKeyMap/updateWalletProviderKeysForVerifiedCredentials/updateWalletProviderKeysForVerifiedCredentials.d.ts +1 -1
  138. package/dist/modules/wallets/walletProvider/walletProviderKeyMap/updateWalletProviderKeysForVerifiedCredentials/updateWalletProviderKeysForVerifiedCredentials.d.ts.map +1 -1
  139. package/dist/services/crossTabBroadcast/createCrossTabBroadcast/createCrossTabBroadcast.d.ts +1 -1
  140. package/dist/services/keychain/createKeychainService/createKeychainService.d.ts +1 -1
  141. package/dist/services/keychain/createKeychainService/createKeychainService.d.ts.map +1 -1
  142. package/dist/services/logger/createLogger/createLogger.d.ts +1 -1
  143. package/dist/services/realtime/createRealtimeChannelSchema/createRealtimeChannelSchema.d.ts +1 -1
  144. package/dist/services/realtime/createRealtimeService/createRealtimeService.d.ts +1 -1
  145. package/dist/services/runtimeServices/createRuntimeServiceAccessKey/createRuntimeServiceAccessKey.d.ts +1 -1
  146. package/dist/services/storage/createLocalStorageAdapter/createLocalStorageAdapter.d.ts +1 -1
  147. package/dist/services/storage/createStorage/createStorage.d.ts +1 -1
  148. package/dist/services/storage/createStorageKeySchema/createStorageKeySchema.d.ts +1 -1
  149. package/dist/services/storage/createStorageKeySchema/createStorageKeySchema.d.ts.map +1 -1
  150. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  151. package/dist/utils/deferredPromise/createDeferredPromise.d.ts +1 -1
  152. package/dist/utils/deferredPromise/createDeferredPromise.d.ts.map +1 -1
  153. package/dist/utils/getChainFromVerifiedCredentialChain/getChainFromVerifiedCredentialChain.d.ts +1 -1
  154. package/dist/utils/getChainFromVerifiedCredentialChain/getChainFromVerifiedCredentialChain.d.ts.map +1 -1
  155. package/dist/utils/getNonce/getNonce.d.ts +1 -1
  156. package/dist/utils/observable/subscribeWithSelector/subscribeWithSelector.d.ts +1 -1
  157. package/dist/waas.cjs +7 -7
  158. package/dist/waas.cjs.map +1 -1
  159. package/dist/waas.esm.js +6 -6
  160. package/dist/waas.esm.js.map +1 -1
  161. package/dist/waas.native.esm.js +6 -6
  162. package/dist/waas.native.esm.js.map +1 -1
  163. package/dist/waasCore.cjs +26 -26
  164. package/dist/waasCore.cjs.map +1 -1
  165. package/dist/waasCore.esm.js +25 -25
  166. package/dist/waasCore.esm.js.map +1 -1
  167. package/dist/waasCore.native.esm.js +25 -25
  168. package/dist/waasCore.native.esm.js.map +1 -1
  169. package/package.json +4 -44
  170. package/android/build.gradle +0 -71
  171. package/android/src/main/java/xyz/dynamic/client/DynamicClientPackage.kt +0 -42
  172. package/android/src/main/java/xyz/dynamic/client/keychain/KeyStoreKeyManager.kt +0 -147
  173. package/android/src/main/java/xyz/dynamic/client/keychain/KeychainModule.kt +0 -85
  174. package/android/src/main/java/xyz/dynamic/client/manifest/ReactNativeManifestModule.kt +0 -25
  175. package/dist/InvalidParamError-DFpM4bIX.cjs.map +0 -1
  176. package/dist/InvalidParamError-F90z0K5r.native.esm.js.map +0 -1
  177. package/dist/InvalidParamError-WXK434H2.esm.js.map +0 -1
  178. package/dist/getNetworkProviderFromNetworkId-BV9lOcuP.cjs.map +0 -1
  179. package/dist/getNetworkProviderFromNetworkId-BVurb9VE.esm.js.map +0 -1
  180. package/dist/getNetworkProviderFromNetworkId-DbR2qejA.native.esm.js.map +0 -1
  181. package/dist/getSignedSessionId-CNkcX15D.cjs.map +0 -1
  182. package/dist/getSignedSessionId-DFiqF8_b.esm.js.map +0 -1
  183. package/dist/getSignedSessionId-DXtxIjxF.native.esm.js.map +0 -1
  184. package/dist/getVerifiedCredentialForWalletAccount-4eVkx2ZN.cjs.map +0 -1
  185. package/dist/getVerifiedCredentialForWalletAccount-6di80gqF.esm.js.map +0 -1
  186. package/dist/getVerifiedCredentialForWalletAccount-CHIZTYim.native.esm.js.map +0 -1
  187. package/dist/isMfaRequiredForAction-DKSH9YEU.esm.js.map +0 -1
  188. package/dist/isMfaRequiredForAction-ZwjmqVg-.cjs.map +0 -1
  189. package/dist/isMfaRequiredForAction-cJ294BGH.native.esm.js.map +0 -1
  190. package/dynamic-labs-sdk-client.podspec +0 -27
  191. package/ios/Keychain.h +0 -4
  192. package/ios/Keychain.mm +0 -101
  193. package/ios/ReactNativeManifest.h +0 -4
  194. package/ios/ReactNativeManifest.mm +0 -45
  195. package/ios/ReactNativeManifestImpl.swift +0 -20
  196. package/ios/SecureEnclaveKeyManager.swift +0 -180
  197. package/react-native.config.cjs +0 -14
  198. package/src/turboModules/NativeKeychain.native.spec.ts +0 -45
  199. package/src/turboModules/NativeKeychain.ts +0 -21
  200. package/src/turboModules/NativeReactNativeManifest.native.spec.ts +0 -55
  201. package/src/turboModules/NativeReactNativeManifest.ts +0 -29
@@ -1,4 +1,4 @@
1
- import { C as isCookieEnabled, D as instrumentFunction, F as getDefaultClient, R as BaseError, i as DYNAMIC_WAAS_METADATA, s as __getChainFromVerifiedCredentialChain_wrapped, t as InvalidParamError, w as assertDefined, z as getCore } from "./InvalidParamError-F90z0K5r.native.esm.js";
1
+ import { C as isCookieEnabled, F as getDefaultClient, R as BaseError, i as DYNAMIC_WAAS_METADATA, s as getChainFromVerifiedCredentialChain, t as InvalidParamError, w as assertDefined, z as getCore } from "./InvalidParamError-DfGaCYmW.native.esm.js";
2
2
  import { JwtVerifiedCredentialFormatEnum, WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
3
3
 
4
4
  //#region src/utils/setCookie/setCookie.ts
@@ -22,7 +22,7 @@ const setCookie = (cookie) => {
22
22
  * @param params.listener - The callback function to execute when the event is fired.
23
23
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
24
24
  * @returns A function that can be called to remove the listener.
25
- * @instrumented
25
+ * @not-instrumented
26
26
  */
27
27
  const onEvent = ({ event, listener }, client = getDefaultClient()) => {
28
28
  const { eventEmitter } = getCore(client);
@@ -40,7 +40,7 @@ const onEvent = ({ event, listener }, client = getDefaultClient()) => {
40
40
  * @param params.event - The event name to remove the listener from.
41
41
  * @param params.listener - The callback function to remove.
42
42
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
43
- * @instrumented
43
+ * @not-instrumented
44
44
  */
45
45
  const offEvent = ({ event, listener }, client = getDefaultClient()) => {
46
46
  const { eventEmitter } = getCore(client);
@@ -56,7 +56,7 @@ const offEvent = ({ event, listener }, client = getDefaultClient()) => {
56
56
  * @param params.listener - The callback function to execute when the event is fired.
57
57
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
58
58
  * @returns A function that can be called to remove the listener before it fires.
59
- * @instrumented
59
+ * @not-instrumented
60
60
  */
61
61
  const onceEvent = ({ event, listener }, client = getDefaultClient()) => {
62
62
  const { eventEmitter } = getCore(client);
@@ -80,42 +80,6 @@ const emitEvent = ({ event, args }, client) => {
80
80
  const { eventEmitter } = getCore(client);
81
81
  eventEmitter.emit(event, args);
82
82
  };
83
- const __onEvent_impl = onEvent;
84
- const __onEvent_wrapped = instrumentFunction({
85
- fn: __onEvent_impl,
86
- functionName: "onEvent",
87
- getCore: () => {
88
- try {
89
- return getCore(getDefaultClient());
90
- } catch {
91
- return;
92
- }
93
- }
94
- });
95
- const __offEvent_impl = offEvent;
96
- const __offEvent_wrapped = instrumentFunction({
97
- fn: __offEvent_impl,
98
- functionName: "offEvent",
99
- getCore: () => {
100
- try {
101
- return getCore(getDefaultClient());
102
- } catch {
103
- return;
104
- }
105
- }
106
- });
107
- const __onceEvent_impl = onceEvent;
108
- const __onceEvent_wrapped = instrumentFunction({
109
- fn: __onceEvent_impl,
110
- functionName: "onceEvent",
111
- getCore: () => {
112
- try {
113
- return getCore(getDefaultClient());
114
- } catch {
115
- return;
116
- }
117
- }
118
- });
119
83
 
120
84
  //#endregion
121
85
  //#region src/errors/InvalidWalletProviderKeyError.ts
@@ -236,7 +200,7 @@ const getWalletProviderKeyFromVerifiedCredential = ({ verifiedCredential }, clie
236
200
  assertDefined(verifiedCredential.walletProvider, `Failed to get wallet provider for verified credential with ID ${verifiedCredential.id}: missing walletProvider`);
237
201
  assertDefined(verifiedCredential.chain, `Failed to get wallet provider for verified credential with ID ${verifiedCredential.id}: missing chain`);
238
202
  return { walletProviderKey: formatWalletProviderKey({
239
- chain: __getChainFromVerifiedCredentialChain_wrapped(verifiedCredential.chain),
203
+ chain: getChainFromVerifiedCredentialChain(verifiedCredential.chain),
240
204
  displayName: verifiedCredential.walletName,
241
205
  walletProviderType: verifiedCredential.walletProvider
242
206
  }) };
@@ -248,7 +212,7 @@ const getWalletProviderKeyFromVerifiedCredential = ({ verifiedCredential }, clie
248
212
  const convertVerifiedCredentialToWalletAccount = ({ verifiedCredential }, client) => {
249
213
  assertDefined(verifiedCredential.address, "Missing address in verified credential");
250
214
  assertDefined(verifiedCredential.chain, "Missing chain in verified credential");
251
- const chain = __getChainFromVerifiedCredentialChain_wrapped(verifiedCredential.chain);
215
+ const chain = getChainFromVerifiedCredentialChain(verifiedCredential.chain);
252
216
  const { walletProviderKey } = getWalletProviderKeyFromVerifiedCredential({ verifiedCredential }, client);
253
217
  const walletAccountId = formatWalletAccountId({
254
218
  address: verifiedCredential.address,
@@ -299,7 +263,7 @@ const getWalletAccountsFromState = ({ unverifiedWalletAccounts, user }, client)
299
263
  *
300
264
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
301
265
  * @returns An array of wallet accounts associated with the session.
302
- * @instrumented
266
+ * @not-instrumented
303
267
  */
304
268
  const getWalletAccounts = (client = getDefaultClient()) => {
305
269
  const { unverifiedWalletAccounts, user } = getCore(client).state.get();
@@ -308,18 +272,6 @@ const getWalletAccounts = (client = getDefaultClient()) => {
308
272
  user
309
273
  }, client);
310
274
  };
311
- const __getWalletAccounts_impl = getWalletAccounts;
312
- const __getWalletAccounts_wrapped = instrumentFunction({
313
- fn: __getWalletAccounts_impl,
314
- functionName: "getWalletAccounts",
315
- getCore: () => {
316
- try {
317
- return getCore(getDefaultClient());
318
- } catch {
319
- return;
320
- }
321
- }
322
- });
323
275
 
324
276
  //#endregion
325
277
  //#region src/errors/NoWalletProviderFoundError.ts
@@ -345,7 +297,7 @@ var NoWalletProviderFoundError = class extends BaseError {
345
297
  * @template - The type of service to be created/accessed
346
298
  * @param key - Unique identifier for the service in the registry
347
299
  * @param builder - Function that creates the service instance when called with a DynamicClient
348
- * @instrumented
300
+ * @not-instrumented
349
301
  */
350
302
  const createRuntimeServiceAccessKey = (key, builder) => (client) => {
351
303
  const { runtimeServices } = getCore(client);
@@ -355,18 +307,6 @@ const createRuntimeServiceAccessKey = (key, builder) => (client) => {
355
307
  runtimeServices.register(key, service);
356
308
  return service;
357
309
  };
358
- const __createRuntimeServiceAccessKey_impl = createRuntimeServiceAccessKey;
359
- const __createRuntimeServiceAccessKey_wrapped = instrumentFunction({
360
- fn: __createRuntimeServiceAccessKey_impl,
361
- functionName: "createRuntimeServiceAccessKey",
362
- getCore: () => {
363
- try {
364
- return getCore(getDefaultClient());
365
- } catch {
366
- return;
367
- }
368
- }
369
- });
370
310
 
371
311
  //#endregion
372
312
  //#region src/modules/wallets/walletProviderRegistry/createWalletProviderRegistry/createWalletProviderRegistry.ts
@@ -451,7 +391,7 @@ const createWalletProviderRegistry = (client) => {
451
391
  * const provider = registry.getByKey('metamaskevm');
452
392
  * ```
453
393
  */
454
- const getWalletProviderRegistry = __createRuntimeServiceAccessKey_wrapped("walletProviderRegistry", (client) => createWalletProviderRegistry(client));
394
+ const getWalletProviderRegistry = createRuntimeServiceAccessKey("walletProviderRegistry", (client) => createWalletProviderRegistry(client));
455
395
 
456
396
  //#endregion
457
397
  //#region src/modules/wallets/walletProviderRegistry/walletProviderRegistry.types.ts
@@ -480,24 +420,12 @@ let WalletProviderPriority = /* @__PURE__ */ function(WalletProviderPriority$1)
480
420
 
481
421
  //#endregion
482
422
  //#region src/modules/wallets/utils/getWalletProviderFromWalletAccount/getWalletProviderFromWalletAccount.ts
483
- /** @instrumented */
423
+ /** @not-instrumented */
484
424
  const getWalletProviderFromWalletAccount = ({ walletAccount }, client) => {
485
425
  const walletProvider = getWalletProviderRegistry(client).getByKey(walletAccount.walletProviderKey);
486
426
  if (!walletProvider) throw new NoWalletProviderFoundError({ walletProviderKey: walletAccount.walletProviderKey });
487
427
  return walletProvider;
488
428
  };
489
- const __getWalletProviderFromWalletAccount_impl = getWalletProviderFromWalletAccount;
490
- const __getWalletProviderFromWalletAccount_wrapped = instrumentFunction({
491
- fn: __getWalletProviderFromWalletAccount_impl,
492
- functionName: "getWalletProviderFromWalletAccount",
493
- getCore: () => {
494
- try {
495
- return getCore(getDefaultClient());
496
- } catch {
497
- return;
498
- }
499
- }
500
- });
501
429
 
502
430
  //#endregion
503
431
  //#region src/modules/auth/consts.ts
@@ -511,7 +439,7 @@ const DYNAMIC_AUTH_COOKIE_NAME = "DYNAMIC_JWT_TOKEN";
511
439
  */
512
440
  const emitWalletAccountsChangedEvent = (client) => {
513
441
  emitEvent({
514
- args: { walletAccounts: __getWalletAccounts_wrapped(client) },
442
+ args: { walletAccounts: getWalletAccounts(client) },
515
443
  event: "walletAccountsChanged"
516
444
  }, client);
517
445
  };
@@ -547,23 +475,11 @@ const isUserMissingMfaAuth = (client = getDefaultClient()) => {
547
475
  //#region src/modules/wallets/getWalletProviders/getWalletProviders.ts
548
476
  /**
549
477
  * Get all available wallet providers to interact with internally.
550
- * @instrumented
478
+ * @not-instrumented
551
479
  */
552
480
  const getWalletProviders = (client) => {
553
481
  return getWalletProviderRegistry(client).listProviders();
554
482
  };
555
- const __getWalletProviders_impl = getWalletProviders;
556
- const __getWalletProviders_wrapped = instrumentFunction({
557
- fn: __getWalletProviders_impl,
558
- functionName: "getWalletProviders",
559
- getCore: () => {
560
- try {
561
- return getCore(getDefaultClient());
562
- } catch {
563
- return;
564
- }
565
- }
566
- });
567
483
 
568
484
  //#endregion
569
485
  //#region src/modules/waas/isWaasWalletProvider/isWaasWalletProvider.ts
@@ -576,7 +492,7 @@ const isWaasWalletProvider = (walletProvider) => {
576
492
  //#region src/modules/waas/findWaasWalletProviderByChain/findWaasWalletProviderByChain.ts
577
493
  /** @not-instrumented */
578
494
  const findWaasWalletProviderByChain = ({ chain }, client) => {
579
- const providers = __getWalletProviders_wrapped(client);
495
+ const providers = getWalletProviders(client);
580
496
  const waasProviderKey = formatWalletProviderKey({
581
497
  chain,
582
498
  displayName: DYNAMIC_WAAS_METADATA.displayName,
@@ -611,7 +527,7 @@ const restoreUserSharesForAllWalletAccounts = async (client) => {
611
527
  * when we know it will fails and just add noise to the logs.
612
528
  */
613
529
  if (isUserMissingMfaAuth(client)) return;
614
- const waasWalletAccounts = __getWalletAccounts_wrapped(client).filter((walletAccount) => isWaasWalletAccount({ walletAccount }));
530
+ const waasWalletAccounts = getWalletAccounts(client).filter((walletAccount) => isWaasWalletAccount({ walletAccount }));
615
531
  await Promise.all(waasWalletAccounts.map(async (walletAccount) => {
616
532
  const provider = findWaasWalletProviderByChain({ chain: walletAccount.chain }, client);
617
533
  /**
@@ -730,7 +646,7 @@ const upsertElevatedAccessToken = ({ currentTokens, newToken }) => {
730
646
 
731
647
  //#endregion
732
648
  //#region src/modules/auth/updateAuthFromVerifyResponse/updateAuthFromVerifyResponse.ts
733
- /** @instrumented */
649
+ /** @not-instrumented */
734
650
  const updateAuthFromVerifyResponse = ({ response }, client) => {
735
651
  const core = getCore(client);
736
652
  const previousState = { ...core.state.get() };
@@ -762,47 +678,23 @@ const updateAuthFromVerifyResponse = ({ response }, client) => {
762
678
  checkAndRaiseWalletAccountsChangedEvent({ previousState }, client);
763
679
  if (!previousState.user && Boolean(newState.user)) restoreUserSharesForAllWalletAccounts(client);
764
680
  };
765
- const __updateAuthFromVerifyResponse_impl = updateAuthFromVerifyResponse;
766
- const __updateAuthFromVerifyResponse_wrapped = instrumentFunction({
767
- fn: __updateAuthFromVerifyResponse_impl,
768
- functionName: "updateAuthFromVerifyResponse",
769
- getCore: () => {
770
- try {
771
- return getCore(getDefaultClient());
772
- } catch {
773
- return;
774
- }
775
- }
776
- });
777
681
 
778
682
  //#endregion
779
683
  //#region src/modules/wallets/getWalletProviderByKey/getWalletProviderByKey.ts
780
684
  /** @not-instrumented */
781
685
  const getWalletProviderByKey = ({ walletProviderKey }, client) => {
782
- const walletProvider = __getWalletProviders_wrapped(client).find((walletProvider$1) => walletProvider$1.key === walletProviderKey);
686
+ const walletProvider = getWalletProviders(client).find((walletProvider$1) => walletProvider$1.key === walletProviderKey);
783
687
  if (!walletProvider) throw new NoWalletProviderFoundError({ walletProviderKey });
784
688
  return walletProvider;
785
689
  };
786
690
 
787
691
  //#endregion
788
692
  //#region src/modules/wallets/utils/getVerifiedCredentialForWalletAccount/getVerifiedCredentialForWalletAccount.ts
789
- /** @instrumented */
693
+ /** @not-instrumented */
790
694
  const getVerifiedCredentialForWalletAccount = ({ walletAccount }, client) => {
791
695
  return client.user?.verifiedCredentials.find((vc) => vc.id === walletAccount.verifiedCredentialId);
792
696
  };
793
- const __getVerifiedCredentialForWalletAccount_impl = getVerifiedCredentialForWalletAccount;
794
- const __getVerifiedCredentialForWalletAccount_wrapped = instrumentFunction({
795
- fn: __getVerifiedCredentialForWalletAccount_impl,
796
- functionName: "getVerifiedCredentialForWalletAccount",
797
- getCore: () => {
798
- try {
799
- return getCore(getDefaultClient());
800
- } catch {
801
- return;
802
- }
803
- }
804
- });
805
697
 
806
698
  //#endregion
807
- export { emitEvent as A, formatWalletAccountId as C, __offEvent_wrapped as D, InvalidWalletProviderKeyError as E, __onEvent_wrapped as O, normalizeWalletNameWithChain as S, splitWalletProviderKey as T, getWalletProviderRegistry as _, parseElevatedAccessToken as a, __getWalletAccounts_wrapped as b, findWaasWalletProviderByChain as c, isUserMissingMfaAuth as d, checkAndRaiseWalletAccountsChangedEvent as f, WalletProviderPriority as g, __getWalletProviderFromWalletAccount_wrapped as h, upsertElevatedAccessToken as i, setCookie as j, __onceEvent_wrapped as k, isWaasWalletProvider as l, DYNAMIC_AUTH_COOKIE_NAME as m, getWalletProviderByKey as n, restoreUserSharesForAllWalletAccounts as o, emitWalletAccountsChangedEvent as p, __updateAuthFromVerifyResponse_wrapped as r, isWaasWalletAccount as s, __getVerifiedCredentialForWalletAccount_wrapped as t, __getWalletProviders_wrapped as u, __createRuntimeServiceAccessKey_wrapped as v, normalizeAddress as w, formatWalletProviderKey as x, NoWalletProviderFoundError as y };
808
- //# sourceMappingURL=getVerifiedCredentialForWalletAccount-CHIZTYim.native.esm.js.map
699
+ export { onceEvent as A, formatWalletAccountId as C, emitEvent as D, InvalidWalletProviderKeyError as E, offEvent as O, normalizeWalletNameWithChain as S, splitWalletProviderKey as T, getWalletProviderRegistry as _, parseElevatedAccessToken as a, getWalletAccounts as b, findWaasWalletProviderByChain as c, isUserMissingMfaAuth as d, checkAndRaiseWalletAccountsChangedEvent as f, WalletProviderPriority as g, getWalletProviderFromWalletAccount as h, upsertElevatedAccessToken as i, setCookie as j, onEvent as k, isWaasWalletProvider as l, DYNAMIC_AUTH_COOKIE_NAME as m, getWalletProviderByKey as n, restoreUserSharesForAllWalletAccounts as o, emitWalletAccountsChangedEvent as p, updateAuthFromVerifyResponse as r, isWaasWalletAccount as s, getVerifiedCredentialForWalletAccount as t, getWalletProviders as u, createRuntimeServiceAccessKey as v, normalizeAddress as w, formatWalletProviderKey as x, NoWalletProviderFoundError as y };
700
+ //# sourceMappingURL=getVerifiedCredentialForWalletAccount-a1WXUW0u.native.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getVerifiedCredentialForWalletAccount-a1WXUW0u.native.esm.js","names":["walletAccountsMap: Map<string, WalletAccount>","newState: Partial<DynamicCoreState>","walletProvider"],"sources":["../src/utils/setCookie/setCookie.ts","../src/modules/clientEvents/clientEvents.ts","../src/errors/InvalidWalletProviderKeyError.ts","../src/modules/wallets/walletProvider/splitWalletProviderKey/splitWalletProviderKey.ts","../src/modules/wallets/utils/normalizeAddress/normalizeAddress.ts","../src/modules/wallets/utils/formatWalletAccountId/formatWalletAccountId.ts","../src/modules/wallets/utils/convertUnverifiedWalletAccountToWalletAccount/convertUnverifiedWalletAccountToWalletAccount.ts","../src/modules/wallets/utils/normalizeWalletNameWithChain/normalizeWalletNameWithChain.ts","../src/modules/wallets/utils/formatWalletProviderKey/formatWalletProviderKey.ts","../src/modules/wallets/walletProvider/walletProviderKeyMap/getWalletProviderKeyFromVerifiedCredential/getWalletProviderKeyFromVerifiedCredential.ts","../src/modules/wallets/utils/convertVerifiedCredentialToWalletAccount/convertVerifiedCredentialToWalletAccount.ts","../src/modules/wallets/getWalletAccounts/getWalletAccountsFromState/getWalletAccountsFromState.ts","../src/modules/wallets/getWalletAccounts/getWalletAccounts.ts","../src/errors/NoWalletProviderFoundError.ts","../src/services/runtimeServices/createRuntimeServiceAccessKey/createRuntimeServiceAccessKey.ts","../src/modules/wallets/walletProviderRegistry/createWalletProviderRegistry/createWalletProviderRegistry.ts","../src/modules/wallets/walletProviderRegistry/getWalletProviderRegistry/getWalletProviderRegistry.ts","../src/modules/wallets/walletProviderRegistry/walletProviderRegistry.types.ts","../src/modules/wallets/utils/getWalletProviderFromWalletAccount/getWalletProviderFromWalletAccount.ts","../src/modules/auth/consts.ts","../src/modules/wallets/emitWalletAccountsChangedEvent/emitWalletAccountsChangedEvent.ts","../src/modules/auth/updateAuthFromVerifyResponse/checkAndRaiseWalletAccountsChangedEvent/checkAndRaiseWalletAccountsChangedEvent.ts","../src/modules/mfa/isUserMissingMfaAuth/isUserMissingMfaAuth.ts","../src/modules/wallets/getWalletProviders/getWalletProviders.ts","../src/modules/waas/isWaasWalletProvider/isWaasWalletProvider.ts","../src/modules/waas/findWaasWalletProviderByChain/findWaasWalletProviderByChain.ts","../src/modules/waas/isWaasWalletAccount/isWaasWalletAccount.ts","../src/modules/waas/restoreUserSharesForAllWalletAccounts/restoreUserSharesForAllWalletAccounts.ts","../src/modules/auth/decodeJwt/decodeJwt.ts","../src/modules/auth/updateAuthFromVerifyResponse/elevatedAccessTokens/normalizeScopes/normalizeScopes.ts","../src/modules/auth/updateAuthFromVerifyResponse/elevatedAccessTokens/parseElevatedAccessToken/parseElevatedAccessToken.ts","../src/modules/auth/updateAuthFromVerifyResponse/elevatedAccessTokens/upsertElevatedAccessToken/upsertElevatedAccessToken.ts","../src/modules/auth/updateAuthFromVerifyResponse/updateAuthFromVerifyResponse.ts","../src/modules/wallets/getWalletProviderByKey/getWalletProviderByKey.ts","../src/modules/wallets/utils/getVerifiedCredentialForWalletAccount/getVerifiedCredentialForWalletAccount.ts"],"sourcesContent":["/**\n * Sefelly sets the cookie in the browser.\n * @not-instrumented\n */\n// eslint-disable-next-line custom-rules/require-single-object-param\nexport const setCookie = (cookie: string) => {\n // eslint-disable-next-line no-restricted-globals\n document.cookie = cookie;\n};\n","/* eslint-disable custom-rules/function-name-matches-filename */\nimport { getCore } from '../../client/core/getCore';\nimport { getDefaultClient } from '../../client/defaultClient';\nimport type { DynamicClient } from '../../client/types';\nimport type {\n DynamicEvents,\n EmitEventParams,\n OffEventParams,\n OnEventParams,\n OnceEventParams,\n} from './clientEvents.types';\n\n/**\n * Adds an event listener for Dynamic client events.\n *\n * This function allows you to listen for various events emitted by the Dynamic client,\n * such as authentication state changes, wallet connections, and more.\n *\n * @param params.event - The event name to listen for.\n * @param params.listener - The callback function to execute when the event is fired.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A function that can be called to remove the listener.\n * @not-instrumented\n */\nexport const onEvent = <E extends keyof DynamicEvents>(\n { event, listener }: OnEventParams<E>,\n client = getDefaultClient()\n) => {\n const { eventEmitter } = getCore(client);\n\n eventEmitter.on(event, listener);\n\n return () => {\n eventEmitter.off(event, listener);\n };\n};\n\n/**\n * Removes an event listener from Dynamic client events.\n *\n * This function unsubscribes a previously registered event listener\n * from the specified Dynamic client event.\n *\n * @param params.event - The event name to remove the listener from.\n * @param params.listener - The callback function to remove.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @not-instrumented\n */\n// eslint-disable-next-line custom-rules/one-function-per-file\nexport const offEvent = <E extends keyof DynamicEvents>(\n { event, listener }: OffEventParams<E>,\n client = getDefaultClient()\n) => {\n const { eventEmitter } = getCore(client);\n\n eventEmitter.off(event, listener);\n};\n\n/**\n * Adds a one-time event listener for Dynamic client events.\n *\n * This function listens for an event that will automatically remove itself\n * after being triggered once.\n *\n * @param params.event - The event name to listen for.\n * @param params.listener - The callback function to execute when the event is fired.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A function that can be called to remove the listener before it fires.\n * @not-instrumented\n */\n// eslint-disable-next-line custom-rules/one-function-per-file\nexport const onceEvent = <E extends keyof DynamicEvents>(\n { event, listener }: OnceEventParams<E>,\n client = getDefaultClient()\n) => {\n const { eventEmitter } = getCore(client);\n\n eventEmitter.once(event, listener);\n\n return () => {\n eventEmitter.off(event, listener);\n };\n};\n\n/**\n * Emits a Dynamic client event.\n *\n * This function triggers an event that will be received by all registered\n * listeners for the specified event type.\n *\n * @param params.event - The event name to emit.\n * @param params.args - The arguments to pass to event listeners.\n * @param client - The Dynamic client instance.\n * @not-instrumented\n */\n// eslint-disable-next-line custom-rules/one-function-per-file\nexport const emitEvent = <E extends keyof DynamicEvents>(\n { event, args }: EmitEventParams<E>,\n client: DynamicClient\n) => {\n const { eventEmitter } = getCore(client);\n\n eventEmitter.emit(event, args);\n};\n","import { BaseError } from './base';\n\nexport class InvalidWalletProviderKeyError extends BaseError {\n // eslint-disable-next-line custom-rules/require-single-object-param\n constructor(value: string) {\n super({\n cause: null,\n code: 'invalid_wallet_provider_key',\n docsUrl: null,\n name: 'InvalidWalletProviderKeyError',\n shortMessage: `Invalid wallet provider key: ${value}. Key must be in the format of <normalizedWalletNameWithChain>:<walletProviderType>[:<suffix>]`,\n });\n }\n}\n","import { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport { InvalidWalletProviderKeyError } from '../../../../errors/InvalidWalletProviderKeyError';\n\ntype SplitWalletProviderKeyResult = {\n normalizedWalletNameWithChain: string;\n suffix: string | undefined;\n walletProviderType: WalletProviderEnum;\n};\n\n/** @not-instrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\nexport const splitWalletProviderKey = (\n walletProviderKey: string\n): SplitWalletProviderKeyResult => {\n const [normalizedWalletNameWithChain, walletProviderType, suffix, ...rest] =\n walletProviderKey.split(':');\n\n if (\n !normalizedWalletNameWithChain ||\n !Object.values(WalletProviderEnum).includes(\n walletProviderType as WalletProviderEnum\n ) ||\n rest.length > 0\n ) {\n throw new InvalidWalletProviderKeyError(walletProviderKey);\n }\n\n return {\n normalizedWalletNameWithChain,\n suffix,\n walletProviderType: walletProviderType as WalletProviderEnum,\n };\n};\n","import type { Chain } from '../../../chain';\n\nexport type NormalizeAddressOptions = {\n /** The raw address to normalize. */\n address: string;\n\n /** The chain the address belongs to. */\n chain: Chain;\n};\n\n/** @not-instrumented */\nexport const normalizeAddress = ({ address, chain }: NormalizeAddressOptions) => {\n let normalizedAddress = address;\n\n if (normalizedAddress?.startsWith('0x')) {\n normalizedAddress = normalizedAddress.slice(2);\n }\n\n /**\n * These are standard from CAIP-2: https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-2.md\n * see also: https://github.com/ChainAgnostic/namespaces\n * note: no standard namespace currently exists for flow\n */\n const chainsThatRequireLowercaseAddress: Chain[] = ['EVM', 'FLOW'];\n\n normalizedAddress = chainsThatRequireLowercaseAddress.includes(chain)\n ? normalizedAddress?.toLowerCase()\n : normalizedAddress;\n\n return normalizedAddress;\n};\n","import type { Chain } from '../../../chain';\nimport { splitWalletProviderKey } from '../../walletProvider/splitWalletProviderKey';\nimport { normalizeAddress } from '../normalizeAddress';\n\ntype CreateWalletAccountIdParams = {\n address: string;\n chain: Chain;\n walletProviderKey: string;\n};\n\n/** @not-instrumented */\nexport const formatWalletAccountId = ({\n address,\n chain,\n walletProviderKey,\n}: CreateWalletAccountIdParams): string => {\n const { normalizedWalletNameWithChain } =\n splitWalletProviderKey(walletProviderKey);\n\n const normalizedAddress = normalizeAddress({ address, chain });\n\n return `${normalizedWalletNameWithChain}:${normalizedAddress}`;\n};\n","import type { UnverifiedWalletAccount } from '../../unverifiedWalletAccounts';\nimport type { WalletAccount } from '../../walletAccount';\nimport { formatWalletAccountId } from '../formatWalletAccountId';\n\ntype ConvertUnverifiedWalletAccountToWalletAccountParams = {\n unverifiedWalletAccount: UnverifiedWalletAccount;\n};\n\n/** @not-instrumented */\nexport const convertUnverifiedWalletAccountToWalletAccount = ({\n unverifiedWalletAccount,\n}: ConvertUnverifiedWalletAccountToWalletAccountParams): WalletAccount => ({\n address: unverifiedWalletAccount.address,\n addressesWithTypes: unverifiedWalletAccount.addressesWithTypes,\n chain: unverifiedWalletAccount.chain,\n id: formatWalletAccountId({\n address: unverifiedWalletAccount.address,\n chain: unverifiedWalletAccount.chain,\n walletProviderKey: unverifiedWalletAccount.walletProviderKey,\n }),\n lastSelectedAt: unverifiedWalletAccount.lastSelectedAt,\n verifiedCredentialId: null,\n walletProviderKey: unverifiedWalletAccount.walletProviderKey,\n});\n","import type { Chain } from '../../../chain';\n\ntype NormalizeWalletNameWithChainParams = {\n chain: Chain;\n displayName: string;\n};\n\n/**\n * Format the raw wallet name and chain to get the value we can use for\n * verified credentials' `walletName` field.\n * @not-instrumented\n */\nexport const normalizeWalletNameWithChain = ({\n displayName,\n chain,\n}: NormalizeWalletNameWithChainParams): string => {\n const sanitizedWalletName = displayName\n .replace(/[^a-zA-Z0-9]/g, '')\n .toLowerCase();\n\n const chainLowered = chain.toLocaleLowerCase();\n\n if (sanitizedWalletName.endsWith(chainLowered)) {\n return sanitizedWalletName;\n }\n\n return `${sanitizedWalletName}${chainLowered}`;\n};\n","import type { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport type { Chain } from '../../../chain';\nimport { normalizeWalletNameWithChain } from '../normalizeWalletNameWithChain';\n\ntype FormatWalletProviderKeyParams = {\n chain: Chain;\n displayName: string;\n suffix?: string;\n walletProviderType: WalletProviderEnum;\n};\n\n/**\n * Assembles the wallet provider key from the wallet name, chain, and wallet provider type.\n *\n * The suffix is optional and can be used to add a uniquely identifying string to the key, which\n * might be necessary for some wallet providers (like Wallet Connect).\n *\n * IMPORTANT: Do NOT add a suffix unless absolutely necessary, as it will cause the wallet account\n * to not be able to find its wallet provider when connecting to a new device (it won't be possible\n * to determine the full key just from the Verified Credential data).\n * @not-instrumented\n */\nexport const formatWalletProviderKey = ({\n suffix,\n chain,\n displayName,\n walletProviderType,\n}: FormatWalletProviderKeyParams) => {\n const normalizedNameWithChain = normalizeWalletNameWithChain({\n chain,\n displayName,\n });\n\n return `${normalizedNameWithChain}:${walletProviderType}${\n suffix ? `:${suffix}` : ''\n }`;\n};\n","import type { JwtVerifiedCredential } from '@dynamic-labs/sdk-api-core';\n\nimport { getCore } from '../../../../../client/core/getCore';\nimport type { DynamicClient } from '../../../../../client/types';\nimport { assertDefined } from '../../../../../utils/assertDefined';\nimport { getChainFromVerifiedCredentialChain } from '../../../../../utils/getChainFromVerifiedCredentialChain';\nimport { formatWalletProviderKey } from '../../../utils/formatWalletProviderKey';\n\ntype GetWalletProviderKeyFromVerifiedCredentialParams = {\n verifiedCredential: JwtVerifiedCredential;\n};\n\n/** @not-instrumented */\nexport const getWalletProviderKeyFromVerifiedCredential = (\n { verifiedCredential }: GetWalletProviderKeyFromVerifiedCredentialParams,\n client: DynamicClient\n) => {\n const core = getCore(client);\n\n const { walletProviderKeyMap } = core.state.get();\n\n const storedWalletProviderKey = walletProviderKeyMap[verifiedCredential.id];\n\n if (storedWalletProviderKey) {\n return { walletProviderKey: storedWalletProviderKey };\n }\n\n /**\n * We fallback to comprising the wallet provider key from walletName and walletProvider.\n *\n * Some wallet provider types (like Wallet Connect) also use a special suffix for their wallet provider\n * keys, so this won't be enough for them.\n * Therefore, for those specific wallet providers, the wallet account will remain without a wallet provider\n * and will require reconnection.\n * Read walletProvider.types.ts for more info.\n */\n assertDefined(\n verifiedCredential.walletName,\n `Failed to get wallet provider for verified credential with ID ${verifiedCredential.id}: missing walletName`\n );\n\n assertDefined(\n verifiedCredential.walletProvider,\n `Failed to get wallet provider for verified credential with ID ${verifiedCredential.id}: missing walletProvider`\n );\n\n assertDefined(\n verifiedCredential.chain,\n `Failed to get wallet provider for verified credential with ID ${verifiedCredential.id}: missing chain`\n );\n\n /**\n * Historically, walletNames did not include the chain name as a suffix.\n * This piece of logic simply ensures we normalize any legacy walletNames to conform.\n */\n const chain = getChainFromVerifiedCredentialChain(verifiedCredential.chain);\n\n const walletProviderKey = formatWalletProviderKey({\n chain,\n displayName: verifiedCredential.walletName,\n walletProviderType: verifiedCredential.walletProvider,\n });\n\n return { walletProviderKey };\n};\n","import type { JwtVerifiedCredential } from '@dynamic-labs/sdk-api-core';\n\nimport type { DynamicClient } from '../../../../client/types';\nimport { assertDefined } from '../../../../utils/assertDefined';\nimport { getChainFromVerifiedCredentialChain } from '../../../../utils/getChainFromVerifiedCredentialChain';\nimport type { HardwareWalletVendor } from '../../hardwareWallet/hardwareWallet.types';\nimport type { WalletAccount } from '../../walletAccount';\nimport { getWalletProviderKeyFromVerifiedCredential } from '../../walletProvider/walletProviderKeyMap/getWalletProviderKeyFromVerifiedCredential';\nimport { formatWalletAccountId } from '../formatWalletAccountId';\n\ntype ConvertVerifiedCredentialToWalletAccountParams = {\n verifiedCredential: JwtVerifiedCredential;\n};\n\n/** @not-instrumented */\nexport const convertVerifiedCredentialToWalletAccount = (\n { verifiedCredential }: ConvertVerifiedCredentialToWalletAccountParams,\n client: DynamicClient\n): WalletAccount => {\n assertDefined(\n verifiedCredential.address,\n 'Missing address in verified credential'\n );\n assertDefined(\n verifiedCredential.chain,\n 'Missing chain in verified credential'\n );\n\n const chain = getChainFromVerifiedCredentialChain(verifiedCredential.chain);\n\n const { walletProviderKey } = getWalletProviderKeyFromVerifiedCredential(\n {\n verifiedCredential,\n },\n client\n );\n\n const walletAccountId = formatWalletAccountId({\n address: verifiedCredential.address,\n chain,\n walletProviderKey,\n });\n\n return {\n address: verifiedCredential.address,\n addressesWithTypes: verifiedCredential.walletAdditionalAddresses,\n chain,\n hardwareWalletVendor: verifiedCredential.walletProperties?.hardwareWallet as\n | HardwareWalletVendor\n | undefined,\n id: walletAccountId,\n lastSelectedAt: verifiedCredential.lastSelectedAt ?? null,\n verifiedCredentialId: verifiedCredential.id,\n walletProviderKey,\n };\n};\n","import type { SdkUser } from '@dynamic-labs/sdk-api-core';\nimport { JwtVerifiedCredentialFormatEnum } from '@dynamic-labs/sdk-api-core';\n\nimport type { DynamicClient } from '../../../../client/types';\nimport type { UnverifiedWalletAccount } from '../../unverifiedWalletAccounts';\nimport { convertUnverifiedWalletAccountToWalletAccount } from '../../utils/convertUnverifiedWalletAccountToWalletAccount';\nimport { convertVerifiedCredentialToWalletAccount } from '../../utils/convertVerifiedCredentialToWalletAccount';\nimport type { WalletAccount } from '../../walletAccount';\n\ntype GetWalletAccountsFromStateParams = {\n unverifiedWalletAccounts: UnverifiedWalletAccount[];\n user: SdkUser | null;\n};\n\n/** @not-instrumented */\nexport const getWalletAccountsFromState = (\n { unverifiedWalletAccounts, user }: GetWalletAccountsFromStateParams,\n client: DynamicClient\n): WalletAccount[] => {\n const walletAccountsMap: Map<string, WalletAccount> = new Map();\n\n /**\n * Handle the unverified wallet accounts before the user verified credentials\n * so the later verified wallet accounts can override the unverified wallet accounts\n */\n unverifiedWalletAccounts.forEach((unverifiedWalletAccount) => {\n const walletAccount = convertUnverifiedWalletAccountToWalletAccount({\n unverifiedWalletAccount,\n });\n\n walletAccountsMap.set(walletAccount.id, walletAccount);\n });\n\n /**\n * Handle user verified credentials\n */\n const verifiedCredentials = user?.verifiedCredentials ?? [];\n\n verifiedCredentials\n .filter(\n (verified) =>\n verified.format === JwtVerifiedCredentialFormatEnum.Blockchain\n )\n .forEach((verifiedWalletAccount) => {\n const walletAccount = convertVerifiedCredentialToWalletAccount(\n {\n verifiedCredential: verifiedWalletAccount,\n },\n client\n );\n\n walletAccountsMap.set(walletAccount.id, walletAccount);\n });\n\n return Array.from(walletAccountsMap.values());\n};\n","import { getCore } from '../../../client/core/getCore';\nimport { getDefaultClient } from '../../../client/defaultClient';\nimport type { WalletAccount } from '../walletAccount';\nimport { getWalletAccountsFromState } from './getWalletAccountsFromState';\n\n/**\n * Retrieves all wallet accounts associated with the current session.\n *\n * This function returns both verified and unverified wallet accounts,\n * combining data from user credentials and local unverified accounts.\n * You can differentiate between verified and unverified wallet accounts by\n * checking the `verifiedCredentialId` property.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An array of wallet accounts associated with the session.\n * @not-instrumented\n */\nexport const getWalletAccounts = (\n client = getDefaultClient()\n): WalletAccount[] => {\n const core = getCore(client);\n const { unverifiedWalletAccounts, user } = core.state.get();\n\n return getWalletAccountsFromState({ unverifiedWalletAccounts, user }, client);\n};\n","import { BaseError } from './base';\n\ntype NoWalletProviderFoundErrorParams = {\n walletProviderKey: string;\n};\n\nexport class NoWalletProviderFoundError extends BaseError {\n constructor({ walletProviderKey }: NoWalletProviderFoundErrorParams) {\n super({\n cause: null,\n code: 'no_wallet_provider_found_error',\n docsUrl: null,\n name: 'NoWalletProviderFoundError',\n shortMessage: `No wallet provider found with key: ${walletProviderKey}`,\n });\n }\n}\n","import type { DynamicClient } from '../../../client/types/DynamicClient';\nimport { getCore } from '../../../client/core/getCore';\n\n/**\n * Creates a service accessor function that manages service instantiation and caching.\n * The returned function will either retrieve an existing service from the registry or\n * create a new one using the provided builder function.\n *\n * @template - The type of service to be created/accessed\n * @param key - Unique identifier for the service in the registry\n * @param builder - Function that creates the service instance when called with a DynamicClient\n * @not-instrumented\n */\nexport const createRuntimeServiceAccessKey =\n // eslint-disable-next-line custom-rules/require-single-object-param\n <T>(key: string, builder: (client: DynamicClient) => T) =>\n (client: DynamicClient): T => {\n const { runtimeServices } = getCore(client);\n\n const currentService = runtimeServices.getByKey<T>(key);\n\n if (currentService) {\n return currentService;\n }\n\n const service = builder(client);\n\n runtimeServices.register(key, service);\n\n return service;\n };\n","import type { DynamicClient } from '../../../../client/types';\nimport { emitEvent } from '../../../clientEvents';\nimport type { WalletProvider } from '../../walletProvider/walletProvider.types';\nimport type { WalletProviderRegistry } from '../walletProviderRegistry.types';\n\n/**\n * Creates a new wallet provider registry that manages wallet providers with priority-based registration.\n *\n * @returns The wallet provider registry instance\n *\n * @example\n * ```typescript\n * const registry = createWalletProviderRegistry();\n *\n * registry.register({\n * priority: WalletProviderPriority.WALLET_SDK,\n * walletProvider: myWalletProvider\n * });\n *\n * const provider = registry.getByKey('my-wallet-key');\n * const providers = registry.listProviders();\n * ```\n * @not-instrumented\n */\nexport const createWalletProviderRegistry = (\n client: DynamicClient\n): WalletProviderRegistry => {\n const registry = new Map<\n string,\n { priority: number; walletProvider: WalletProvider }\n >();\n\n return {\n getByKey: (key) => registry.get(key)?.walletProvider,\n listProviders: () =>\n Array.from(registry.values()).map((v) => v.walletProvider),\n register: (args) => {\n const existingEntry = registry.get(args.walletProvider.key);\n\n if (existingEntry) {\n if (existingEntry.priority < args.priority) {\n registry.set(args.walletProvider.key, args);\n\n emitEvent(\n {\n args: { walletProviderKey: args.walletProvider.key },\n event: 'walletProviderChanged',\n },\n client\n );\n }\n } else {\n registry.set(args.walletProvider.key, args);\n\n emitEvent(\n {\n args: { walletProvider: args.walletProvider },\n event: 'walletProviderRegistered',\n },\n client\n );\n\n emitEvent(\n {\n args: { walletProviderKey: args.walletProvider.key },\n event: 'walletProviderChanged',\n },\n client\n );\n }\n },\n unregister: (key) => {\n registry.delete(key);\n\n emitEvent(\n {\n args: { walletProviderKey: key },\n event: 'walletProviderUnregistered',\n },\n client\n );\n },\n };\n};\n","import { createRuntimeServiceAccessKey } from '../../../../services/runtimeServices';\nimport { createWalletProviderRegistry } from '../createWalletProviderRegistry';\n\n/**\n * This function provides access to a shared instance of the wallet provider registry.\n *\n * It ensures that the same registry instance is used throughout the client to maintaining\n * consistency of registered wallet providers across different parts of the codebase.\n *\n * @returns The wallet provider registry instance\n *\n * @example\n * ```typescript\n * // Get the registry instance\n * const registry = getWalletProviderRegistry();\n *\n * // Register a wallet provider\n * registry.register({\n * priority: WalletProviderPriority.WALLET_SDK,\n * walletProvider: myWalletProvider\n * });\n *\n * // Retrieve a specific provider\n * const provider = registry.getByKey('metamaskevm');\n * ```\n */\nexport const getWalletProviderRegistry = createRuntimeServiceAccessKey(\n 'walletProviderRegistry',\n (client) => createWalletProviderRegistry(client)\n);\n","import type { WalletProvider } from '../walletProvider/walletProvider.types';\n\n// eslint-disable-next-line custom-rules/no-enums\nexport enum WalletProviderPriority {\n /**\n * Highest priority should be used by wallet providers that implement\n * the most reliable wallet integration.\n * example: The SDK provided by the wallet provider.\n */\n WALLET_SDK = 100,\n /**\n * Medium priority should be used by wallet providers that implement\n * a wallet integration via some reliable standard.\n * example: A wallet provider that uses EIP6963 announcement.\n */\n WALLET_SELF_ANNOUNCEMENT_STANDARD = 50,\n /**\n * Low priority should be used by wallet providers that implement\n * a wallet integration on a less reliable standard.\n * example: A wallet provider that uses window.ethereum, where the\n * window key can be overridden by other extensions.\n */\n WINDOW_INJECT = 20,\n}\n\nexport type WalletProviderRegistry = {\n /**\n * Retrieves a wallet provider by its key.\n * @param key - The key of the wallet provider.\n * @returns The wallet provider.\n */\n getByKey: (key: string) => WalletProvider | undefined;\n /**\n * Retrieves all wallet providers.\n * @returns The wallet providers.\n */\n listProviders: () => WalletProvider[];\n /**\n * Registers a wallet provider.\n * @param args - The arguments for the wallet provider.\n */\n register: (args: {\n priority: WalletProviderPriority;\n walletProvider: WalletProvider;\n }) => void;\n /**\n * Unregisters a wallet provider.\n * @param key - The key of the wallet provider.\n */\n unregister: (key: string) => void;\n};\n","import type { DynamicClient } from '../../../../client/types';\nimport { NoWalletProviderFoundError } from '../../../../errors/NoWalletProviderFoundError';\nimport type { WalletAccount } from '../../walletAccount';\nimport { getWalletProviderRegistry } from '../../walletProviderRegistry';\n\ntype GetWalletProviderFromWalletAccountParams = {\n walletAccount: WalletAccount;\n};\n\n/** @not-instrumented */\nexport const getWalletProviderFromWalletAccount = (\n { walletAccount }: GetWalletProviderFromWalletAccountParams,\n client: DynamicClient\n) => {\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = walletProviderRegistry.getByKey(\n walletAccount.walletProviderKey\n );\n\n if (!walletProvider) {\n throw new NoWalletProviderFoundError({\n walletProviderKey: walletAccount.walletProviderKey,\n });\n }\n\n return walletProvider;\n};\n","export const DYNAMIC_AUTH_COOKIE_NAME = 'DYNAMIC_JWT_TOKEN';\n","import type { DynamicClient } from '../../../client/types';\nimport { emitEvent } from '../../clientEvents';\nimport { getWalletAccounts } from '../getWalletAccounts';\n\n/**\n * Emits the `walletAccountsChanged` event.\n * @not-instrumented\n */\nexport const emitWalletAccountsChangedEvent = (client: DynamicClient): void => {\n const walletAccounts = getWalletAccounts(client);\n\n emitEvent(\n {\n args: { walletAccounts },\n event: 'walletAccountsChanged',\n },\n client\n );\n};\n","import { getCore } from '../../../../client/core/getCore';\nimport type { DynamicClient } from '../../../../client/types';\nimport { emitWalletAccountsChangedEvent } from '../../../wallets/emitWalletAccountsChangedEvent';\nimport { getWalletAccountsFromState } from '../../../wallets/getWalletAccounts/getWalletAccountsFromState';\n\ntype CheckAndRaiseWalletAccountsChangedEventParams = {\n previousState: Readonly<DynamicCoreState>;\n};\n\n/** @not-instrumented */\nexport const checkAndRaiseWalletAccountsChangedEvent = (\n { previousState }: CheckAndRaiseWalletAccountsChangedEventParams,\n client: DynamicClient\n) => {\n const core = getCore(client);\n\n const walletAccountsHashBefore = getWalletAccountsHash(previousState, client);\n\n const walletAccountsHashAfter = getWalletAccountsHash(\n core.state.get(),\n client\n );\n\n if (walletAccountsHashBefore !== walletAccountsHashAfter) {\n emitWalletAccountsChangedEvent(client);\n }\n};\n\n \n \nconst getWalletAccountsHash = (\n state: Readonly<DynamicCoreState>,\n client: DynamicClient\n) =>\n getWalletAccountsFromState(state, client)\n .map((walletAccount) => JSON.stringify(walletAccount))\n .sort()\n .join('-');\n","import { getDefaultClient } from '../../../client/defaultClient';\nimport { assertDefined } from '../../../utils/assertDefined';\n\n/**\n * Checks if the user requires additional MFA authentication.\n *\n * This function determines if the current user session requires\n * additional multi-factor authentication to access certain features.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns True if the user needs additional MFA authentication, false otherwise.\n * @not-instrumented\n */\nexport const isUserMissingMfaAuth = (client = getDefaultClient()) => {\n const user = client.user;\n\n assertDefined(user, 'User not logged in');\n\n return Boolean(user.scope?.includes('requiresAdditionalAuth'));\n};\n","import type { DynamicClient } from '../../../client/types';\nimport { getWalletProviderRegistry } from '../walletProviderRegistry';\n\n/**\n * Get all available wallet providers to interact with internally.\n * @not-instrumented\n */\nexport const getWalletProviders = (client: DynamicClient) => {\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n return walletProviderRegistry.listProviders();\n};\n","import type { WalletProvider } from '../../wallets/walletProvider';\nimport { DYNAMIC_WAAS_METADATA } from '../constants';\nimport type { WaasWalletProvider } from '../waas.types';\n\n/** @not-instrumented */\nexport const isWaasWalletProvider = (\n walletProvider: WalletProvider\n): walletProvider is WaasWalletProvider => {\n return walletProvider.key.includes(\n DYNAMIC_WAAS_METADATA.normalizedWalletName\n );\n};\n","import { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport type { DynamicClient } from '../../../client/types/DynamicClient';\nimport type { Chain } from '../../chain';\nimport { getWalletProviders } from '../../wallets/getWalletProviders';\nimport { formatWalletProviderKey } from '../../wallets/utils/formatWalletProviderKey';\nimport { DYNAMIC_WAAS_METADATA } from '../constants';\nimport { isWaasWalletProvider } from '../isWaasWalletProvider';\nimport type { WaasWalletProvider } from '../waas.types';\n\ntype FindWaasWalletProviderByChainParams = {\n chain: Chain;\n};\n\n/** @not-instrumented */\nexport const findWaasWalletProviderByChain = (\n { chain }: FindWaasWalletProviderByChainParams,\n client: DynamicClient\n): WaasWalletProvider | null => {\n const providers = getWalletProviders(client);\n\n const waasProviderKey = formatWalletProviderKey({\n chain,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType: WalletProviderEnum.EmbeddedWallet,\n });\n\n const waasProvider = providers.find(\n (provider) => provider.key === waasProviderKey && provider.chain === chain\n );\n\n if (!waasProvider || !isWaasWalletProvider(waasProvider)) {\n return null;\n }\n\n return waasProvider;\n};\n","import type { WalletAccount } from '../../wallets/walletAccount';\nimport { DYNAMIC_WAAS_METADATA } from '../constants';\n\ntype IsWaasWalletAccountParams = {\n walletAccount: WalletAccount;\n};\n\n/**\n * This function determines whether the provided wallet account is a Dynamic\n * WaaS wallet account.\n *\n * @param params.walletAccount - The wallet account to check.\n * @returns True if the wallet account is a WaaS wallet account, false otherwise.\n * @not-instrumented\n */\nexport const isWaasWalletAccount = ({\n walletAccount,\n}: IsWaasWalletAccountParams): boolean => {\n return walletAccount.walletProviderKey.includes(\n DYNAMIC_WAAS_METADATA.normalizedWalletName\n );\n};\n","import type { DynamicClient } from '../../../client/types';\nimport { isUserMissingMfaAuth } from '../../mfa/isUserMissingMfaAuth';\nimport { getWalletAccounts } from '../../wallets/getWalletAccounts';\nimport { findWaasWalletProviderByChain } from '../findWaasWalletProviderByChain';\nimport { isWaasWalletAccount } from '../isWaasWalletAccount';\n\n/** @not-instrumented */\nexport const restoreUserSharesForAllWalletAccounts = async (\n client: DynamicClient\n) => {\n /**\n * Restoring the user shares will fails if the user is missing the MFA auth.\n * This early return prevents the attempt to restore the user shares to fail\n * when we know it will fails and just add noise to the logs.\n */\n if (isUserMissingMfaAuth(client)) {\n return;\n }\n\n const walletAccounts = getWalletAccounts(client);\n\n const waasWalletAccounts = walletAccounts.filter((walletAccount) =>\n isWaasWalletAccount({ walletAccount })\n );\n\n await Promise.all(\n waasWalletAccounts.map(async (walletAccount) => {\n const provider = findWaasWalletProviderByChain(\n { chain: walletAccount.chain },\n client\n );\n\n /**\n * The environment might not have the embedded wallet extensions installed.\n * In that case there is no provider for the chain and we can skip restoring the user share.\n */\n if (!provider) return;\n\n return provider.restoreUserShareForWalletAccount({ walletAccount });\n })\n );\n};\n","import { InvalidParamError } from '../../../errors/InvalidParamError';\n\nexport type JwtPayload = {\n [key: string]: unknown;\n exp: number;\n iat: number;\n scope: string;\n singleUse?: boolean;\n sub: string;\n};\n\n/**\n * Decodes a JWT token and returns the full payload.\n *\n * This function extracts and returns the complete JWT payload including scopes,\n * expiration time, and other claims.\n *\n * @param jwt - The JWT token string.\n * @returns The decoded JWT payload object.\n * @throws InvalidParamError if the token is invalid or cannot be decoded.\n *\n * @example\n * ```typescript\n * const payload = decodeJwt(jwt);\n * // Returns: { scopes: ['wallet:export'], exp: 1234567890, ... }\n * ```\n * @not-instrumented\n */\n// eslint-disable-next-line custom-rules/require-single-object-param\nexport const decodeJwt = (jwt: string): JwtPayload => {\n try {\n // JWT format: header.payload.signature\n const parts = jwt.split('.');\n if (parts.length !== 3) {\n throw new InvalidParamError('Invalid JWT format');\n }\n\n // Decode the payload (second part)\n // Base64URL decode: replace URL-safe characters and decode\n const base64Payload = parts[1].replaceAll('-', '+').replaceAll('_', '/');\n // Add padding if needed\n const paddedPayload =\n base64Payload + '='.repeat((4 - (base64Payload.length % 4)) % 4);\n const decodedPayload = atob(paddedPayload);\n const claims = JSON.parse(decodedPayload) as JwtPayload;\n\n return claims;\n } catch (error) {\n if (error instanceof InvalidParamError) {\n throw error;\n }\n throw new InvalidParamError(\n `Failed to decode JWT: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n};\n","/**\n * Normalizes scopes by deduplicating and sorting them.\n * This creates a canonical representation for comparison.\n *\n * @param scopes - Array of scope strings (may contain duplicates)\n * @returns Normalized, sorted array of unique scopes\n * @not-instrumented\n */\n// eslint-disable-next-line custom-rules/require-single-object-param\nexport const normalizeScopes = (scopes: string[]): string[] => {\n return [...new Set(scopes)].sort((a, b) => a.localeCompare(b));\n};\n","import { decodeJwt } from '../../../decodeJwt';\nimport type { ParsedElevatedAccessToken } from '../elevatedAccessTokens.types';\nimport { normalizeScopes } from '../normalizeScopes';\n\nexport type ParseElevatedAccessTokenOptions = {\n /** JWT string containing the elevated access token. */\n token: string;\n};\n\n/**\n * Validates and parses an elevated access token from a JWT string.\n * Extracts scopes, expiration, and validates the token structure.\n *\n * Policy decisions:\n * - Tokens without scopes are rejected (returns null)\n * - Tokens with empty scopes array are rejected (returns null)\n * - Tokens without exp field are rejected (returns null)\n * - Expired tokens are rejected (returns null)\n *\n * @returns Parsed token data or null if token is invalid/expired\n * @not-instrumented\n */\nexport const parseElevatedAccessToken = ({\n token,\n}: ParseElevatedAccessTokenOptions): ParsedElevatedAccessToken | null => {\n const payload = decodeJwt(token);\n const rawScopeClaim = payload?.scope;\n const processedScopes = rawScopeClaim?.split(' ') ?? [];\n const filteredScopes = processedScopes.filter((s) => s.length > 0);\n const singleUse = payload.singleUse ?? false;\n\n // Reject tokens without scopes or with empty scopes\n if (!filteredScopes || filteredScopes.length === 0) {\n return null;\n }\n\n // Reject tokens without exp field\n if (!payload.exp) {\n return null;\n }\n\n // Convert exp (seconds) to Date (milliseconds)\n const expiresAt = new Date(payload.exp * 1000);\n\n // Reject expired tokens\n if (expiresAt <= new Date()) {\n return null;\n }\n\n return {\n expiresAt,\n normalizedScopes: normalizeScopes(filteredScopes),\n scopes: filteredScopes,\n singleUse,\n token,\n };\n};\n","import type {\n ElevatedAccessToken,\n ParsedElevatedAccessToken,\n} from '../elevatedAccessTokens.types';\nimport { normalizeScopes } from '../normalizeScopes';\n\n/**\n * Upserts an elevated access token into the current tokens array.\n *\n * Policy: Only one token per normalized scope-set is allowed.\n * If a token with the same normalized scopes exists, it is replaced.\n * This ensures we don't accumulate multiple tokens for the same scope combination.\n *\n * @param currentTokens - Current array of elevated access tokens\n * @param newToken - New token to upsert\n * @returns Updated array of tokens with the new token upserted\n * @not-instrumented\n */\nexport const upsertElevatedAccessToken = ({\n currentTokens,\n newToken,\n}: {\n currentTokens: ElevatedAccessToken[];\n newToken: ParsedElevatedAccessToken;\n}): ElevatedAccessToken[] => {\n const newScopeKey = normalizeScopes(newToken.scopes).join(' ');\n\n // Remove any existing token with the same normalized scopes\n const filteredTokens = currentTokens.filter((existingToken) => {\n const existingScopeKey = normalizeScopes(existingToken.scopes).join(' ');\n return existingScopeKey !== newScopeKey;\n });\n\n // Add the new token\n return [\n ...filteredTokens,\n {\n expiresAt: newToken.expiresAt,\n scopes: newToken.scopes,\n singleUse: newToken.singleUse,\n token: newToken.token,\n },\n ];\n};\n","import type { VerifyResponse } from '@dynamic-labs/sdk-api-core';\n\nimport { getCore } from '../../../client/core/getCore';\nimport type { DynamicCoreState } from '../../../client/core/types';\nimport type { DynamicClient } from '../../../client/types';\nimport { setCookie } from '../../../utils/setCookie';\nimport { isCookieEnabled } from '../../projectSettings/isCookieEnabled';\nimport { restoreUserSharesForAllWalletAccounts } from '../../waas/restoreUserSharesForAllWalletAccounts';\nimport { DYNAMIC_AUTH_COOKIE_NAME } from '../consts';\nimport { checkAndRaiseWalletAccountsChangedEvent } from './checkAndRaiseWalletAccountsChangedEvent';\nimport { parseElevatedAccessToken } from './elevatedAccessTokens/parseElevatedAccessToken';\nimport { upsertElevatedAccessToken } from './elevatedAccessTokens/upsertElevatedAccessToken';\n\ntype UpdateAuthFromVerifyResponseParams = {\n response: VerifyResponse;\n};\n\n/** @not-instrumented */\nexport const updateAuthFromVerifyResponse = (\n { response }: UpdateAuthFromVerifyResponseParams,\n client: DynamicClient\n) => {\n const core = getCore(client);\n\n const previousState = { ...core.state.get() };\n\n const { user, minifiedJwt, jwt, expiresAt, mfaToken, elevatedAccessToken } =\n response;\n\n // Expires at is in seconds, so we need to convert it to milliseconds\n const sessionExpiresAt = new Date(expiresAt * 1000);\n\n const newState: Partial<DynamicCoreState> = {\n legacyToken: jwt ?? null,\n sessionExpiresAt: sessionExpiresAt,\n token: minifiedJwt ?? null,\n user,\n };\n\n // only override the mfaToken if a new one is provided in the response\n if (mfaToken) {\n newState.mfaToken = mfaToken;\n }\n\n // Add elevated access token to the array if a new one is provided in the response\n // Policy: Only one token per normalized scope-set is allowed (old tokens are replaced)\n // Always preserve existing tokens to ensure they're synced to storage\n const currentTokens = core.state.get().elevatedAccessTokens || [];\n newState.elevatedAccessTokens = currentTokens;\n \n if (elevatedAccessToken) {\n const parsedToken = parseElevatedAccessToken({\n token: elevatedAccessToken,\n });\n if (parsedToken) {\n newState.elevatedAccessTokens = upsertElevatedAccessToken({\n currentTokens,\n newToken: parsedToken,\n });\n }\n }\n\n core.state.set(newState);\n\n /**\n * For customers using a sandbox environment with cookies enabled, we need to set the cookie\n * programmatically because Redcoast won't set the cookie via headers. We set the cookie programmatically\n * so customers can access the cookie from document.cookie consistently between sandbox and live environments.\n */\n if (minifiedJwt && isCookieEnabled(client)) {\n const expireDate = sessionExpiresAt.toUTCString();\n\n setCookie(\n `${DYNAMIC_AUTH_COOKIE_NAME}=${minifiedJwt}; expires=${expireDate}; path=/; SameSite=Lax`\n );\n }\n\n checkAndRaiseWalletAccountsChangedEvent({ previousState }, client);\n\n // if the user is logging in, we should restore user shares\n // for all wallet accounts for performance reasons\n const isUserLoggingIn = !previousState.user && Boolean(newState.user);\n if (isUserLoggingIn) {\n void restoreUserSharesForAllWalletAccounts(client);\n }\n};\n","import type { DynamicClient } from '../../../client/types';\nimport { NoWalletProviderFoundError } from '../../../errors/NoWalletProviderFoundError';\nimport { getWalletProviders } from '../getWalletProviders';\n\ntype GetWalletProviderByKeyParams = {\n walletProviderKey: string;\n};\n\n/** @not-instrumented */\nexport const getWalletProviderByKey = (\n { walletProviderKey }: GetWalletProviderByKeyParams,\n client: DynamicClient\n) => {\n const walletProviders = getWalletProviders(client);\n\n const walletProvider = walletProviders.find(\n (walletProvider) => walletProvider.key === walletProviderKey\n );\n\n if (!walletProvider) {\n throw new NoWalletProviderFoundError({ walletProviderKey });\n }\n\n return walletProvider;\n};\n","import type { DynamicClient } from '../../../../client/types/DynamicClient';\nimport type { WalletAccount } from '../../walletAccount';\n\ntype GetVerifiedCredentialForWalletAccountParams = {\n walletAccount: WalletAccount;\n};\n\n/** @not-instrumented */\nexport const getVerifiedCredentialForWalletAccount = (\n { walletAccount }: GetVerifiedCredentialForWalletAccountParams,\n client: DynamicClient\n) => {\n return client.user?.verifiedCredentials.find(\n (vc) => vc.id === walletAccount.verifiedCredentialId\n );\n};\n"],"mappings":"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"}