@dynamic-labs-sdk/client 0.1.0-alpha.15 → 0.1.0-alpha.17

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 (84) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/constants.cjs.js +2 -2
  3. package/constants.esm.js +2 -2
  4. package/core.cjs.js +4 -0
  5. package/core.esm.js +2 -2
  6. package/getChainFromVerifiedCredentialChain.cjs.js +2 -2
  7. package/getChainFromVerifiedCredentialChain.esm.js +2 -2
  8. package/getNetworkProviderFromNetworkId.esm.js +1 -1
  9. package/getWalletProviderByKey.cjs.js +133 -35
  10. package/getWalletProviderByKey.esm.js +132 -37
  11. package/index.cjs.js +48 -13
  12. package/index.esm.js +50 -15
  13. package/package.json +3 -3
  14. package/src/client/core/createCore/getInitialState.d.ts.map +1 -1
  15. package/src/errors/InvalidWalletProviderKeyError.d.ts +5 -0
  16. package/src/errors/InvalidWalletProviderKeyError.d.ts.map +1 -0
  17. package/src/exports/core.d.ts +4 -0
  18. package/src/exports/core.d.ts.map +1 -1
  19. package/src/exports/index.d.ts +1 -0
  20. package/src/exports/index.d.ts.map +1 -1
  21. package/src/modules/auth/createVisit/createVisit.d.ts.map +1 -1
  22. package/src/modules/auth/social/oauth/redirectStateStorageSchema/redirectStateStorageSchema.d.ts +1 -1
  23. package/src/modules/auth/updateAuthFromVerifyResponse/checkAndRaiseWalletAccountsChangedEvent/checkAndRaiseWalletAccountsChangedEvent.d.ts.map +1 -1
  24. package/src/modules/projectSettings/fetchProjectSettings/projectSettingsExpirationScheme.d.ts +1 -1
  25. package/src/modules/projectSettings/fetchProjectSettings/projectSettingsExpirationScheme.d.ts.map +1 -1
  26. package/src/modules/storageSync/hydrateStateWithStorage/hydrateStateWithStorage.d.ts.map +1 -1
  27. package/src/modules/storageSync/schema.d.ts +3 -2
  28. package/src/modules/storageSync/schema.d.ts.map +1 -1
  29. package/src/modules/storageSync/syncStateWithStorage/syncStateWithStorage.d.ts.map +1 -1
  30. package/src/modules/waas/constants.d.ts +2 -2
  31. package/src/modules/waas/createWaasWalletAccounts/createWaasWalletAccounts.d.ts.map +1 -1
  32. package/src/modules/waas/getWaasWalletProviderByChain/getWaasWalletProviderByChain.d.ts.map +1 -1
  33. package/src/modules/waas/isWaasWalletAccount/isWaasWalletAccount.d.ts.map +1 -1
  34. package/src/modules/waas/isWaasWalletProvider/isWaasWalletProvider.d.ts.map +1 -1
  35. package/src/modules/wallets/connectWithWalletProvider/connectWithWalletProvider.d.ts +2 -1
  36. package/src/modules/wallets/connectWithWalletProvider/connectWithWalletProvider.d.ts.map +1 -1
  37. package/src/modules/wallets/getAvailableWalletProvidersData/getAvailableWalletProvidersData.d.ts.map +1 -1
  38. package/src/modules/wallets/getWalletAccounts/getWalletAccounts.d.ts.map +1 -1
  39. package/src/modules/wallets/getWalletAccounts/getWalletAccountsFromState/getWalletAccountsFromState.d.ts +9 -1
  40. package/src/modules/wallets/getWalletAccounts/getWalletAccountsFromState/getWalletAccountsFromState.d.ts.map +1 -1
  41. package/src/modules/wallets/getWalletProviderDataByKey/getWalletProviderDataByKey.d.ts.map +1 -1
  42. package/src/modules/wallets/networks/lastKnownNetworkRegistry/createLastKnownNetworkRegistry/schema.d.ts +1 -1
  43. package/src/modules/wallets/networks/lastKnownNetworkRegistry/createLastKnownNetworkRegistry/schema.d.ts.map +1 -1
  44. package/src/modules/wallets/removeWalletAccount/removeWalletAccount.d.ts.map +1 -1
  45. package/src/modules/wallets/utils/convertUnverifiedWalletAccountToWalletAccount/convertUnverifiedWalletAccountToWalletAccount.d.ts +5 -1
  46. package/src/modules/wallets/utils/convertUnverifiedWalletAccountToWalletAccount/convertUnverifiedWalletAccountToWalletAccount.d.ts.map +1 -1
  47. package/src/modules/wallets/utils/convertVerifiedCredentialToWalletAccount/convertVerifiedCredentialToWalletAccount.d.ts +6 -1
  48. package/src/modules/wallets/utils/convertVerifiedCredentialToWalletAccount/convertVerifiedCredentialToWalletAccount.d.ts.map +1 -1
  49. package/src/modules/wallets/utils/{createWalletAccountId/createWalletAccountId.d.ts → formatWalletAccountId/formatWalletAccountId.d.ts} +2 -2
  50. package/src/modules/wallets/utils/formatWalletAccountId/formatWalletAccountId.d.ts.map +1 -0
  51. package/src/modules/wallets/utils/formatWalletAccountId/index.d.ts +2 -0
  52. package/src/modules/wallets/utils/formatWalletAccountId/index.d.ts.map +1 -0
  53. package/src/modules/wallets/utils/formatWalletProviderKey/formatWalletProviderKey.d.ts +17 -2
  54. package/src/modules/wallets/utils/formatWalletProviderKey/formatWalletProviderKey.d.ts.map +1 -1
  55. package/src/modules/wallets/utils/normalizeWalletNameWithChain/index.d.ts +2 -0
  56. package/src/modules/wallets/utils/normalizeWalletNameWithChain/index.d.ts.map +1 -0
  57. package/src/modules/wallets/utils/normalizeWalletNameWithChain/normalizeWalletNameWithChain.d.ts +12 -0
  58. package/src/modules/wallets/utils/normalizeWalletNameWithChain/normalizeWalletNameWithChain.d.ts.map +1 -0
  59. package/src/modules/wallets/verifyWalletAccount/verifyWalletAccount.d.ts.map +1 -1
  60. package/src/modules/wallets/walletProvider/splitWalletProviderKey/index.d.ts +2 -0
  61. package/src/modules/wallets/walletProvider/splitWalletProviderKey/index.d.ts.map +1 -0
  62. package/src/modules/wallets/walletProvider/splitWalletProviderKey/splitWalletProviderKey.d.ts +9 -0
  63. package/src/modules/wallets/walletProvider/splitWalletProviderKey/splitWalletProviderKey.d.ts.map +1 -0
  64. package/src/modules/wallets/walletProvider/walletProvider.types.d.ts +14 -4
  65. package/src/modules/wallets/walletProvider/walletProvider.types.d.ts.map +1 -1
  66. package/src/modules/wallets/walletProvider/walletProviderKeyMap/getWalletProviderKeyFromVerifiedCredential/getWalletProviderKeyFromVerifiedCredential.d.ts +10 -0
  67. package/src/modules/wallets/walletProvider/walletProviderKeyMap/getWalletProviderKeyFromVerifiedCredential/getWalletProviderKeyFromVerifiedCredential.d.ts.map +1 -0
  68. package/src/modules/wallets/walletProvider/walletProviderKeyMap/getWalletProviderKeyFromVerifiedCredential/index.d.ts +2 -0
  69. package/src/modules/wallets/walletProvider/walletProviderKeyMap/getWalletProviderKeyFromVerifiedCredential/index.d.ts.map +1 -0
  70. package/src/modules/wallets/walletProvider/walletProviderKeyMap/schema.d.ts +3 -0
  71. package/src/modules/wallets/walletProvider/walletProviderKeyMap/schema.d.ts.map +1 -0
  72. package/src/modules/wallets/walletProvider/walletProviderKeyMap/state.d.ts +16 -0
  73. package/src/modules/wallets/walletProvider/walletProviderKeyMap/state.d.ts.map +1 -0
  74. package/src/modules/wallets/walletProvider/walletProviderKeyMap/walletProviderKeyMap.types.d.ts +12 -0
  75. package/src/modules/wallets/walletProvider/walletProviderKeyMap/walletProviderKeyMap.types.d.ts.map +1 -0
  76. package/src/services/storage/index.d.ts +1 -1
  77. package/src/services/storage/index.d.ts.map +1 -1
  78. package/waas.cjs.js +12 -4
  79. package/waas.esm.js +13 -5
  80. package/waasCore.cjs.js +1 -1
  81. package/waasCore.esm.js +1 -1
  82. package/src/modules/wallets/utils/createWalletAccountId/createWalletAccountId.d.ts.map +0 -1
  83. package/src/modules/wallets/utils/createWalletAccountId/index.d.ts +0 -2
  84. package/src/modules/wallets/utils/createWalletAccountId/index.d.ts.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,127 @@
1
+ ## 0.1.0-alpha.17 (2025-10-02)
2
+
3
+ ### 🩹 Fixes
4
+
5
+ - add return type to connect with wallet provider ([#497](https://github.com/dynamic-labs/dynamic-sdk/pull/497))
6
+
7
+ ## 0.1.0-alpha.16 (2025-10-01)
8
+
9
+ ### 🚀 Features
10
+
11
+ - logout user when session expires ([#47](https://github.com/dynamic-labs/dynamic-sdk/pull/47))
12
+ - add sms verification ([#78](https://github.com/dynamic-labs/dynamic-sdk/pull/78))
13
+ - raise changed events for state variables ([#79](https://github.com/dynamic-labs/dynamic-sdk/pull/79))
14
+ - allow extending the client ([#80](https://github.com/dynamic-labs/dynamic-sdk/pull/80))
15
+ - allow manual init of client ([#88](https://github.com/dynamic-labs/dynamic-sdk/pull/88))
16
+ - add signMessage ([#111](https://github.com/dynamic-labs/dynamic-sdk/pull/111))
17
+ - support social sign in ([#123](https://github.com/dynamic-labs/dynamic-sdk/pull/123))
18
+ - add updateUser function ([#138](https://github.com/dynamic-labs/dynamic-sdk/pull/138))
19
+ - add acknowledgeRecoveryCodes function ([#139](https://github.com/dynamic-labs/dynamic-sdk/pull/139))
20
+ - add getMfaDevices function ([#140](https://github.com/dynamic-labs/dynamic-sdk/pull/140))
21
+ - add deleteMfaDevice function ([#141](https://github.com/dynamic-labs/dynamic-sdk/pull/141))
22
+ - add registerTotpMfaDevice function ([#142](https://github.com/dynamic-labs/dynamic-sdk/pull/142))
23
+ - add getMfaRecoveryCodes function ([#143](https://github.com/dynamic-labs/dynamic-sdk/pull/143))
24
+ - cache project settings for connected users ([#148](https://github.com/dynamic-labs/dynamic-sdk/pull/148))
25
+ - add createNewMfaRecoveryCodes function ([#144](https://github.com/dynamic-labs/dynamic-sdk/pull/144))
26
+ - add setDefaultMfaDevice function ([#149](https://github.com/dynamic-labs/dynamic-sdk/pull/149))
27
+ - add support for solana wallet standard ([#133](https://github.com/dynamic-labs/dynamic-sdk/pull/133))
28
+ - add primary wallet account ([#128](https://github.com/dynamic-labs/dynamic-sdk/pull/128))
29
+ - add authTotpMfaDevice function ([#146](https://github.com/dynamic-labs/dynamic-sdk/pull/146))
30
+ - add authMfaRecoveryCode function ([#147](https://github.com/dynamic-labs/dynamic-sdk/pull/147))
31
+ - add new getMultichainBalances api method ([#219](https://github.com/dynamic-labs/dynamic-sdk/pull/219))
32
+ - adds authenticated event ([#222](https://github.com/dynamic-labs/dynamic-sdk/pull/222))
33
+ - raise an error if different dynamic packages are on different versions ([#253](https://github.com/dynamic-labs/dynamic-sdk/pull/253))
34
+ - add signInWithExternalJwt function ([#263](https://github.com/dynamic-labs/dynamic-sdk/pull/263))
35
+ - add network provider registry and API ([#266](https://github.com/dynamic-labs/dynamic-sdk/pull/266))
36
+ - add ethereum netowrk providers ([#267](https://github.com/dynamic-labs/dynamic-sdk/pull/267))
37
+ - add solana network provider ([#268](https://github.com/dynamic-labs/dynamic-sdk/pull/268))
38
+ - add proveWalletAccountOwnership function ([#295](https://github.com/dynamic-labs/dynamic-sdk/pull/295))
39
+ - format evm wallet addresses to conform to eip55 ([#300](https://github.com/dynamic-labs/dynamic-sdk/pull/300))
40
+ - add viem public client ([#272](https://github.com/dynamic-labs/dynamic-sdk/pull/272))
41
+ - add getSolanaConnection ([#275](https://github.com/dynamic-labs/dynamic-sdk/pull/275))
42
+ - add dynamic waas evm extension ([#299](https://github.com/dynamic-labs/dynamic-sdk/pull/299))
43
+ - add refreshUser function ([#332](https://github.com/dynamic-labs/dynamic-sdk/pull/332))
44
+ - add get network method ([#321](https://github.com/dynamic-labs/dynamic-sdk/pull/321))
45
+ - add createWaasWallet function ([#343](https://github.com/dynamic-labs/dynamic-sdk/pull/343))
46
+ - allow switching network ([#323](https://github.com/dynamic-labs/dynamic-sdk/pull/323))
47
+ - introduce getBalance and getBalanceForAddress ([#335](https://github.com/dynamic-labs/dynamic-sdk/pull/335))
48
+ - add delegateWaasKeyShares function ([#353](https://github.com/dynamic-labs/dynamic-sdk/pull/353))
49
+ - add updateWaasPassword function ([#354](https://github.com/dynamic-labs/dynamic-sdk/pull/354))
50
+ - add exportWaasClientKeyshares function ([#355](https://github.com/dynamic-labs/dynamic-sdk/pull/355))
51
+ - add importWaasPrivateKey function ([#356](https://github.com/dynamic-labs/dynamic-sdk/pull/356))
52
+ - add refreshWaasWalletAccountShares function ([#357](https://github.com/dynamic-labs/dynamic-sdk/pull/357))
53
+ - add backupWaasKeySharesToGoogleDrive function ([#358](https://github.com/dynamic-labs/dynamic-sdk/pull/358))
54
+ - add exportWaasPrivateKey function ([#359](https://github.com/dynamic-labs/dynamic-sdk/pull/359))
55
+ - add isWaasWalletAccount function ([#365](https://github.com/dynamic-labs/dynamic-sdk/pull/365))
56
+ - add createWalletClientForWalletAccount function ([#367](https://github.com/dynamic-labs/dynamic-sdk/pull/367))
57
+ - add connectAndVerifyWithWalletProvider function ([#385](https://github.com/dynamic-labs/dynamic-sdk/pull/385))
58
+ - add event listening for wallet providers ([#389](https://github.com/dynamic-labs/dynamic-sdk/pull/389))
59
+ - expose the session expires at date ([#420](https://github.com/dynamic-labs/dynamic-sdk/pull/420))
60
+ - refresh user when cookies are enabled ([#430](https://github.com/dynamic-labs/dynamic-sdk/pull/430))
61
+ - introduce waitForClientInitialized ([#436](https://github.com/dynamic-labs/dynamic-sdk/pull/436))
62
+ - introduce isMobile helper utility ([#441](https://github.com/dynamic-labs/dynamic-sdk/pull/441))
63
+ - persist unverified wallets in local storage ([#448](https://github.com/dynamic-labs/dynamic-sdk/pull/448))
64
+ - **QNTM-3387:** add sui base infrastructure and core client ([#240](https://github.com/dynamic-labs/dynamic-sdk/pull/240))
65
+ - **SIN-7:** Add Signin with Passkey ([#201](https://github.com/dynamic-labs/dynamic-sdk/pull/201))
66
+ - **wallets:** adds methods to connect and verify a wallet ([#99](https://github.com/dynamic-labs/dynamic-sdk/pull/99))
67
+
68
+ ### 🩹 Fixes
69
+
70
+ - make the client package public ([#74](https://github.com/dynamic-labs/dynamic-sdk/pull/74))
71
+ - properly export state changed events ([#85](https://github.com/dynamic-labs/dynamic-sdk/pull/85))
72
+ - client core accidentally sharing state among different instances ([#89](https://github.com/dynamic-labs/dynamic-sdk/pull/89))
73
+ - support server side rendering ([#92](https://github.com/dynamic-labs/dynamic-sdk/pull/92))
74
+ - use correct import path for commonjs ([#125](https://github.com/dynamic-labs/dynamic-sdk/pull/125))
75
+ - ensure change events are fired only when state changes ([#168](https://github.com/dynamic-labs/dynamic-sdk/pull/168))
76
+ - solana integration ([#169](https://github.com/dynamic-labs/dynamic-sdk/pull/169))
77
+ - throw when attempting to set undefined prop in storage ([#200](https://github.com/dynamic-labs/dynamic-sdk/pull/200))
78
+ - allow the api call to include cookie credentials ([#209](https://github.com/dynamic-labs/dynamic-sdk/pull/209))
79
+ - convert api headers to get api headers ([#211](https://github.com/dynamic-labs/dynamic-sdk/pull/211))
80
+ - import zod mini using namespace ([#214](https://github.com/dynamic-labs/dynamic-sdk/pull/214))
81
+ - bind fetch to window ([#265](https://github.com/dynamic-labs/dynamic-sdk/pull/265))
82
+ - update default API base URL ([#296](https://github.com/dynamic-labs/dynamic-sdk/pull/296))
83
+ - remove version pin on sdk-api-core ([#351](https://github.com/dynamic-labs/dynamic-sdk/pull/351))
84
+ - sending transaction with solana ([#381](https://github.com/dynamic-labs/dynamic-sdk/pull/381))
85
+ - set client version to project settings api call ([#414](https://github.com/dynamic-labs/dynamic-sdk/pull/414))
86
+ - logout with wallet standard sol wallets ([#423](https://github.com/dynamic-labs/dynamic-sdk/pull/423))
87
+ - logout user when any api call fails with 401 ([#432](https://github.com/dynamic-labs/dynamic-sdk/pull/432))
88
+ - logout for connected only wallets ([#437](https://github.com/dynamic-labs/dynamic-sdk/pull/437))
89
+ - ensure server side rendering will not trigger any api call ([#445](https://github.com/dynamic-labs/dynamic-sdk/pull/445))
90
+ - handle 401 when initializing the SDK ([#446](https://github.com/dynamic-labs/dynamic-sdk/pull/446))
91
+ - logout user when any api call fails with 401 " ([#432](https://github.com/dynamic-labs/dynamic-sdk/pull/432), [#450](https://github.com/dynamic-labs/dynamic-sdk/pull/450))
92
+ - logout user only when it fails to refresh user with cookies ([#451](https://github.com/dynamic-labs/dynamic-sdk/pull/451))
93
+ - update how wallet account id is computed to support multiple wallet accounts with the same address ([#481](https://github.com/dynamic-labs/dynamic-sdk/pull/481))
94
+ - **mfa:** make device id optional ([#175](https://github.com/dynamic-labs/dynamic-sdk/pull/175))
95
+ - **mfa:** allow create mfa options to authTotpMfaDevice ([#178](https://github.com/dynamic-labs/dynamic-sdk/pull/178))
96
+
97
+ ### 🔧 Refactors
98
+
99
+ - rename initializationManager to asyncTrack ([#26](https://github.com/dynamic-labs/dynamic-sdk/pull/26))
100
+ - modularize DynamicCoreState with global interface ([#93](https://github.com/dynamic-labs/dynamic-sdk/pull/93))
101
+ - add setVerifyResponse ([#106](https://github.com/dynamic-labs/dynamic-sdk/pull/106))
102
+ - rename set verify response function ([#122](https://github.com/dynamic-labs/dynamic-sdk/pull/122))
103
+ - clean up social implementation ([#145](https://github.com/dynamic-labs/dynamic-sdk/pull/145))
104
+ - reorganize exports index file ([#303](https://github.com/dynamic-labs/dynamic-sdk/pull/303))
105
+ - rename events folder to clientEvents ([#305](https://github.com/dynamic-labs/dynamic-sdk/pull/305))
106
+ - dry network provider type ([#308](https://github.com/dynamic-labs/dynamic-sdk/pull/308))
107
+ - rename types files to include the features name ([#319](https://github.com/dynamic-labs/dynamic-sdk/pull/319))
108
+ - use evm instead of other terms ([#306](https://github.com/dynamic-labs/dynamic-sdk/pull/306))
109
+ - rename net configuration to net data ([#322](https://github.com/dynamic-labs/dynamic-sdk/pull/322))
110
+ - move waas-utils to client package ([#342](https://github.com/dynamic-labs/dynamic-sdk/pull/342))
111
+ - assert signed session id in getSignedSessionId ([#361](https://github.com/dynamic-labs/dynamic-sdk/pull/361))
112
+ - add consumeMfaTokenIfRequiredForAction function ([#363](https://github.com/dynamic-labs/dynamic-sdk/pull/363))
113
+ - waas sign message defined in waas provider ([#377](https://github.com/dynamic-labs/dynamic-sdk/pull/377))
114
+ - ban chain enum ([#386](https://github.com/dynamic-labs/dynamic-sdk/pull/386))
115
+ - ban misplaced waas exports ([#387](https://github.com/dynamic-labs/dynamic-sdk/pull/387))
116
+ - also apply lint-tsc for specfiles ([#399](https://github.com/dynamic-labs/dynamic-sdk/pull/399))
117
+ - require client to always be passed as a param for internal code ([#401](https://github.com/dynamic-labs/dynamic-sdk/pull/401))
118
+ - linter rule for addExtension functions ([#433](https://github.com/dynamic-labs/dynamic-sdk/pull/433))
119
+ - improve demo ui and organization ([#434](https://github.com/dynamic-labs/dynamic-sdk/pull/434))
120
+ - misc improvements ([#438](https://github.com/dynamic-labs/dynamic-sdk/pull/438))
121
+ - add linter rule for unpinned dependencies ([#439](https://github.com/dynamic-labs/dynamic-sdk/pull/439))
122
+ - rework captcha code for demo ([#449](https://github.com/dynamic-labs/dynamic-sdk/pull/449))
123
+ - rename schemas ([#471](https://github.com/dynamic-labs/dynamic-sdk/pull/471))
124
+
1
125
  ## 0.1.0-alpha.15 (2025-10-01)
2
126
 
3
127
  This was a version bump only, there were no code changes.
package/constants.cjs.js CHANGED
@@ -3,9 +3,9 @@
3
3
  const DEFAULT_WAAS_BASE_API_URL = 'https://app.dynamicauth.com';
4
4
  const DEFAULT_WAAS_BASE_MPC_RELAY_API_URL = 'https://relay.dynamicauth.com';
5
5
  const DYNAMIC_WAAS_METADATA = {
6
+ displayName: 'Dynamic WaaS',
6
7
  icon: 'https://iconic.dynamic-static-assets.com/icons/sprite.svg#dynamicwaas',
7
- key: 'dynamicwaas',
8
- name: 'Dynamic WaaS'
8
+ normalizedWalletName: 'dynamicwaas'
9
9
  };
10
10
 
11
11
  exports.DEFAULT_WAAS_BASE_API_URL = DEFAULT_WAAS_BASE_API_URL;
package/constants.esm.js CHANGED
@@ -1,9 +1,9 @@
1
1
  const DEFAULT_WAAS_BASE_API_URL = 'https://app.dynamicauth.com';
2
2
  const DEFAULT_WAAS_BASE_MPC_RELAY_API_URL = 'https://relay.dynamicauth.com';
3
3
  const DYNAMIC_WAAS_METADATA = {
4
+ displayName: 'Dynamic WaaS',
4
5
  icon: 'https://iconic.dynamic-static-assets.com/icons/sprite.svg#dynamicwaas',
5
- key: 'dynamicwaas',
6
- name: 'Dynamic WaaS'
6
+ normalizedWalletName: 'dynamicwaas'
7
7
  };
8
8
 
9
9
  export { DYNAMIC_WAAS_METADATA as D, DEFAULT_WAAS_BASE_MPC_RELAY_API_URL as a, DEFAULT_WAAS_BASE_API_URL as b };
package/core.cjs.js CHANGED
@@ -262,6 +262,7 @@ exports.getVerifiedCredentialForWalletAccount = getNetworkProviderFromNetworkId.
262
262
  exports.hasExtension = getNetworkProviderFromNetworkId.hasExtension;
263
263
  exports.setCaptchaToken = getNetworkProviderFromNetworkId.setCaptchaToken;
264
264
  exports.subscribeWithSelector = getNetworkProviderFromNetworkId.subscribeWithSelector;
265
+ exports.InvalidWalletProviderKeyError = getWalletProviderByKey.InvalidWalletProviderKeyError;
265
266
  exports.NoWalletProviderFoundError = getWalletProviderByKey.NoWalletProviderFoundError;
266
267
  Object.defineProperty(exports, "WalletProviderPriority", {
267
268
  enumerable: true,
@@ -269,10 +270,13 @@ Object.defineProperty(exports, "WalletProviderPriority", {
269
270
  });
270
271
  exports.createRuntimeServiceAccessKey = getWalletProviderByKey.createRuntimeServiceAccessKey;
271
272
  exports.emitEvent = getWalletProviderByKey.emitEvent;
273
+ exports.formatWalletAccountId = getWalletProviderByKey.formatWalletAccountId;
272
274
  exports.formatWalletProviderKey = getWalletProviderByKey.formatWalletProviderKey;
273
275
  exports.getWalletProviderFromWalletAccount = getWalletProviderByKey.getWalletProviderFromWalletAccount;
274
276
  exports.getWalletProviderRegistry = getWalletProviderByKey.getWalletProviderRegistry;
275
277
  exports.getWalletProviders = getWalletProviderByKey.getWalletProviders;
278
+ exports.normalizeWalletNameWithChain = getWalletProviderByKey.normalizeWalletNameWithChain;
279
+ exports.splitWalletProviderKey = getWalletProviderByKey.splitWalletProviderKey;
276
280
  exports.updateAuthFromVerifyResponse = getWalletProviderByKey.updateAuthFromVerifyResponse;
277
281
  exports.consumeMfaTokenIfRequiredForAction = getSignedSessionId.consumeMfaTokenIfRequiredForAction;
278
282
  exports.getSignedSessionId = getSignedSessionId.getSignedSessionId;
package/core.esm.js CHANGED
@@ -3,8 +3,8 @@ import { B as BaseError, a as getCore, e as assertDefined, b as getBuffer, n as
3
3
  export { A as APIError, j as ClientNotFoundError, D as DYNAMIC_SDK_API_VERSION, V as ValueMustBeDefinedError, c as createApiClient, k as getChainFromVerifiedCredentialChain, g as getDefaultClient, i as isCookieEnabled } from './getChainFromVerifiedCredentialChain.esm.js';
4
4
  import { F as FETCH_PROJECT_SETTINGS_TRACKER_KEY, c as createStorageKeySchema, n as getNetworkProviders, N as NoNetworkProvidersError } from './getNetworkProviderFromNetworkId.esm.js';
5
5
  export { C as CannotTrackError, o as InvalidStorageSet, e as consumeCaptchaToken, d as createLocalStorageAdapter, a as createLogger, b as createStorage, f as formatSignInMessage, p as getNetworkProviderBuilderRegistry, j as getNetworkProviderFromNetworkId, g as getVerifiedCredentialForWalletAccount, m as hasExtension, l as setCaptchaToken, s as subscribeWithSelector } from './getNetworkProviderFromNetworkId.esm.js';
6
- import { b as getWalletProviderByKey, j as createRuntimeServiceAccessKey } from './getWalletProviderByKey.esm.js';
7
- export { N as NoWalletProviderFoundError, W as WalletProviderPriority, e as emitEvent, k as formatWalletProviderKey, a as getWalletProviderFromWalletAccount, l as getWalletProviderRegistry, f as getWalletProviders, u as updateAuthFromVerifyResponse } from './getWalletProviderByKey.esm.js';
6
+ import { b as getWalletProviderByKey, k as createRuntimeServiceAccessKey } from './getWalletProviderByKey.esm.js';
7
+ export { I as InvalidWalletProviderKeyError, N as NoWalletProviderFoundError, W as WalletProviderPriority, e as emitEvent, f as formatWalletAccountId, l as formatWalletProviderKey, a as getWalletProviderFromWalletAccount, p as getWalletProviderRegistry, h as getWalletProviders, n as normalizeWalletNameWithChain, m as splitWalletProviderKey, u as updateAuthFromVerifyResponse } from './getWalletProviderByKey.esm.js';
8
8
  export { c as consumeMfaTokenIfRequiredForAction, g as getSignedSessionId } from './getSignedSessionId.esm.js';
9
9
  import * as z from 'zod/mini';
10
10
  import EventEmitter from 'eventemitter3';
@@ -4,9 +4,9 @@ var sdkApiCore = require('@dynamic-labs/sdk-api-core');
4
4
  var buffer = require('buffer');
5
5
 
6
6
  var name = "@dynamic-labs-sdk/client";
7
- var version = "0.1.0-alpha.15";
7
+ var version = "0.1.0-alpha.17";
8
8
  var dependencies = {
9
- "@dynamic-labs/sdk-api-core": "0.0.788"};
9
+ "@dynamic-labs/sdk-api-core": "0.0.791"};
10
10
 
11
11
  const getCore = (client)=>{
12
12
  // @ts-expect-error - this was hidden from the public API
@@ -2,9 +2,9 @@ import { AuthStorageEnum, SDKApi, Configuration } from '@dynamic-labs/sdk-api-co
2
2
  import { Buffer as Buffer$1 } from 'buffer';
3
3
 
4
4
  var name = "@dynamic-labs-sdk/client";
5
- var version = "0.1.0-alpha.15";
5
+ var version = "0.1.0-alpha.17";
6
6
  var dependencies = {
7
- "@dynamic-labs/sdk-api-core": "0.0.788"};
7
+ "@dynamic-labs/sdk-api-core": "0.0.791"};
8
8
 
9
9
  const getCore = (client)=>{
10
10
  // @ts-expect-error - this was hidden from the public API
@@ -1,6 +1,6 @@
1
1
  import { B as BaseError, g as getDefaultClient, e as assertDefined, a as getCore, f as CHAINS_INFO_MAP } from './getChainFromVerifiedCredentialChain.esm.js';
2
2
  import { EventEmitter } from 'eventemitter3';
3
- import { j as createRuntimeServiceAccessKey } from './getWalletProviderByKey.esm.js';
3
+ import { k as createRuntimeServiceAccessKey } from './getWalletProviderByKey.esm.js';
4
4
 
5
5
  /**
6
6
  * Shallow compare two objects.
@@ -71,6 +71,30 @@ var sdkApiCore = require('@dynamic-labs/sdk-api-core');
71
71
  eventEmitter.emit(event, args);
72
72
  };
73
73
 
74
+ class InvalidWalletProviderKeyError extends getChainFromVerifiedCredentialChain.BaseError {
75
+ constructor(value){
76
+ super({
77
+ cause: null,
78
+ code: 'invalid_wallet_provider_key',
79
+ docsUrl: null,
80
+ name: 'InvalidWalletProviderKeyError',
81
+ shortMessage: `Invalid wallet provider key: ${value}. Key must be in the format of <normalizedWalletNameWithChain>:<walletProviderType>[:<suffix>]`
82
+ });
83
+ }
84
+ }
85
+
86
+ const splitWalletProviderKey = (walletProviderKey)=>{
87
+ const [normalizedWalletNameWithChain, walletProviderType, suffix, ...rest] = walletProviderKey.split(':');
88
+ if (!normalizedWalletNameWithChain || !Object.values(sdkApiCore.WalletProviderEnum).includes(walletProviderType) || rest.length > 0) {
89
+ throw new InvalidWalletProviderKeyError(walletProviderKey);
90
+ }
91
+ return {
92
+ normalizedWalletNameWithChain,
93
+ suffix,
94
+ walletProviderType: walletProviderType
95
+ };
96
+ };
97
+
74
98
  const normalizeAddress = (address, chain)=>{
75
99
  let normalizedAddress = address;
76
100
  if (normalizedAddress == null ? void 0 : normalizedAddress.startsWith('0x')) {
@@ -88,12 +112,16 @@ const normalizeAddress = (address, chain)=>{
88
112
  return normalizedAddress;
89
113
  };
90
114
 
91
- const createWalletAccountId = ({ address, chain, walletProviderKey })=>`${walletProviderKey}-${normalizeAddress(address, chain)}`;
115
+ const formatWalletAccountId = ({ address, chain, walletProviderKey })=>{
116
+ const { normalizedWalletNameWithChain } = splitWalletProviderKey(walletProviderKey);
117
+ const normalizedAddress = normalizeAddress(address, chain);
118
+ return `${normalizedWalletNameWithChain}:${normalizedAddress}`;
119
+ };
92
120
 
93
- const convertUnverifiedWalletAccountToWalletAccount = (unverifiedWalletAccount)=>({
121
+ const convertUnverifiedWalletAccountToWalletAccount = ({ unverifiedWalletAccount })=>({
94
122
  address: unverifiedWalletAccount.address,
95
123
  chain: unverifiedWalletAccount.chain,
96
- id: createWalletAccountId({
124
+ id: formatWalletAccountId({
97
125
  address: unverifiedWalletAccount.address,
98
126
  chain: unverifiedWalletAccount.chain,
99
127
  walletProviderKey: unverifiedWalletAccount.walletProviderKey
@@ -104,52 +132,112 @@ const convertUnverifiedWalletAccountToWalletAccount = (unverifiedWalletAccount)=
104
132
  });
105
133
 
106
134
  /**
107
- * Format the wallet name and chain to get a wallet provider key.
108
- */ const formatWalletProviderKey = (walletName, chain)=>{
109
- const sanitizedWalletName = walletName.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
110
- return `${sanitizedWalletName}${chain.toLocaleLowerCase()}`;
135
+ * Format the raw wallet name and chain to get the value we can use for
136
+ * verified credentials' `walletName` field.
137
+ */ const normalizeWalletNameWithChain = ({ displayName, chain })=>{
138
+ const sanitizedWalletName = displayName.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
139
+ const chainLowered = chain.toLocaleLowerCase();
140
+ if (sanitizedWalletName.endsWith(chainLowered)) {
141
+ return sanitizedWalletName;
142
+ }
143
+ return `${sanitizedWalletName}${chainLowered}`;
111
144
  };
112
145
 
113
- const convertVerifiedCredentialToWalletAccount = (verified)=>{
114
- getChainFromVerifiedCredentialChain.assertDefined(verified.address, 'Missing address in verified credential');
115
- getChainFromVerifiedCredentialChain.assertDefined(verified.chain, 'Missing chain in verified credential');
116
- getChainFromVerifiedCredentialChain.assertDefined(verified.walletName, 'Missing wallet name in verified credential');
117
- const chain = getChainFromVerifiedCredentialChain.getChainFromVerifiedCredentialChain(verified.chain);
118
- const hasChainInWalletName = verified.walletName.endsWith(chain.toLowerCase());
119
- // we need to make sure the walletProviderKey follows the correct format ([walletName][chain])
120
- // some walletNames will follow the legacy format (e.g. "phantom" instead of "phantomsol", "metamask" instead of "metamaskevm")
121
- // so we need to make sure we parse it correctly
122
- const walletProviderKey = hasChainInWalletName ? verified.walletName : formatWalletProviderKey(verified.walletName, chain);
123
- var _verified_lastSelectedAt;
146
+ /**
147
+ * Assembles the wallet provider key from the wallet name, chain, and wallet provider type.
148
+ *
149
+ * The suffix is optional and can be used to add a uniquely identifying string to the key, which
150
+ * might be necessary for some wallet providers (like Wallet Connect).
151
+ *
152
+ * IMPORTANT: Do NOT add a suffix unless absolutely necessary, as it will cause the wallet account
153
+ * to not be able to find its wallet provider when connecting to a new device (it won't be possible
154
+ * to determine the full key just from the Verified Credential data).
155
+ */ const formatWalletProviderKey = ({ suffix, chain, displayName, walletProviderType })=>{
156
+ const normalizedNameWithChain = normalizeWalletNameWithChain({
157
+ chain,
158
+ displayName
159
+ });
160
+ return `${normalizedNameWithChain}:${walletProviderType}${suffix ? `:${suffix}` : ''}`;
161
+ };
162
+
163
+ const getWalletProviderKeyFromVerifiedCredential = ({ verifiedCredential }, client)=>{
164
+ const core = getChainFromVerifiedCredentialChain.getCore(client);
165
+ const { walletProviderKeyMap } = core.state.get();
166
+ const storedWalletProviderKey = walletProviderKeyMap[verifiedCredential.id];
167
+ if (storedWalletProviderKey) {
168
+ return {
169
+ walletProviderKey: storedWalletProviderKey
170
+ };
171
+ }
172
+ /**
173
+ * We fallback to comprising the wallet provider key from walletName and walletProvider.
174
+ *
175
+ * Some wallet provider types (like Wallet Connect) also use a special suffix for their wallet provider
176
+ * keys, so this won't be enough for them.
177
+ * Therefore, for those specific wallet providers, the wallet account will remain without a wallet provider
178
+ * and will require reconnection.
179
+ * Read walletProvider.types.ts for more info.
180
+ */ getChainFromVerifiedCredentialChain.assertDefined(verifiedCredential.walletName, `Failed to get wallet provider for verified credential with ID ${verifiedCredential.id}: missing walletName`);
181
+ getChainFromVerifiedCredentialChain.assertDefined(verifiedCredential.walletProvider, `Failed to get wallet provider for verified credential with ID ${verifiedCredential.id}: missing walletProvider`);
182
+ getChainFromVerifiedCredentialChain.assertDefined(verifiedCredential.chain, `Failed to get wallet provider for verified credential with ID ${verifiedCredential.id}: missing chain`);
183
+ /**
184
+ * Historically, walletNames did not include the chain name as a suffix.
185
+ * This piece of logic simply ensures we normalize any legacy walletNames to conform.
186
+ */ const chain = getChainFromVerifiedCredentialChain.getChainFromVerifiedCredentialChain(verifiedCredential.chain);
187
+ const walletProviderKey = formatWalletProviderKey({
188
+ chain,
189
+ displayName: verifiedCredential.walletName,
190
+ walletProviderType: verifiedCredential.walletProvider
191
+ });
124
192
  return {
125
- address: verified.address,
193
+ walletProviderKey
194
+ };
195
+ };
196
+
197
+ const convertVerifiedCredentialToWalletAccount = ({ verifiedCredential }, client)=>{
198
+ getChainFromVerifiedCredentialChain.assertDefined(verifiedCredential.address, 'Missing address in verified credential');
199
+ getChainFromVerifiedCredentialChain.assertDefined(verifiedCredential.chain, 'Missing chain in verified credential');
200
+ const chain = getChainFromVerifiedCredentialChain.getChainFromVerifiedCredentialChain(verifiedCredential.chain);
201
+ const { walletProviderKey } = getWalletProviderKeyFromVerifiedCredential({
202
+ verifiedCredential
203
+ }, client);
204
+ const walletAccountId = formatWalletAccountId({
205
+ address: verifiedCredential.address,
126
206
  chain,
127
- id: createWalletAccountId({
128
- address: verified.address,
129
- chain,
130
- walletProviderKey
131
- }),
132
- lastSelectedAt: (_verified_lastSelectedAt = verified.lastSelectedAt) != null ? _verified_lastSelectedAt : null,
133
- verifiedCredentialId: verified.id,
207
+ walletProviderKey
208
+ });
209
+ var _verifiedCredential_lastSelectedAt;
210
+ return {
211
+ address: verifiedCredential.address,
212
+ chain,
213
+ id: walletAccountId,
214
+ lastSelectedAt: (_verifiedCredential_lastSelectedAt = verifiedCredential.lastSelectedAt) != null ? _verifiedCredential_lastSelectedAt : null,
215
+ verifiedCredentialId: verifiedCredential.id,
134
216
  walletProviderKey
135
217
  };
136
218
  };
137
219
 
138
- const getWalletAccountsFromState = (state)=>{
139
- const { unverifiedWalletAccounts, user } = state;
220
+ const getWalletAccountsFromState = ({ unverifiedWalletAccounts, user }, client)=>{
140
221
  const walletAccountsMap = new Map();
141
222
  /**
142
223
  * Handle the unverified wallet accounts before the user verified credentials
143
224
  * so the later verified wallet accounts can override the unverified wallet accounts
144
225
  */ unverifiedWalletAccounts.forEach((unverifiedWalletAccount)=>{
145
- const walletAccount = convertUnverifiedWalletAccountToWalletAccount(unverifiedWalletAccount);
226
+ const walletAccount = convertUnverifiedWalletAccountToWalletAccount({
227
+ unverifiedWalletAccount
228
+ });
146
229
  walletAccountsMap.set(walletAccount.id, walletAccount);
147
230
  });
148
231
  var _user_verifiedCredentials;
149
232
  /**
150
233
  * Handle user verified credentials
151
234
  */ const verifiedCredentials = (_user_verifiedCredentials = user == null ? void 0 : user.verifiedCredentials) != null ? _user_verifiedCredentials : [];
152
- verifiedCredentials.filter((verified)=>verified.format === sdkApiCore.JwtVerifiedCredentialFormatEnum.Blockchain).map((verifiedWalletAccount)=>convertVerifiedCredentialToWalletAccount(verifiedWalletAccount)).forEach((verifiedWalletAccount)=>walletAccountsMap.set(verifiedWalletAccount.id, verifiedWalletAccount));
235
+ verifiedCredentials.filter((verified)=>verified.format === sdkApiCore.JwtVerifiedCredentialFormatEnum.Blockchain).forEach((verifiedWalletAccount)=>{
236
+ const walletAccount = convertVerifiedCredentialToWalletAccount({
237
+ verifiedCredential: verifiedWalletAccount
238
+ }, client);
239
+ walletAccountsMap.set(walletAccount.id, walletAccount);
240
+ });
153
241
  return Array.from(walletAccountsMap.values());
154
242
  };
155
243
 
@@ -163,7 +251,14 @@ const getWalletAccountsFromState = (state)=>{
163
251
  *
164
252
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
165
253
  * @returns An array of wallet accounts associated with the session.
166
- */ const getWalletAccounts = (client = getChainFromVerifiedCredentialChain.getDefaultClient())=>getWalletAccountsFromState(getChainFromVerifiedCredentialChain.getCore(client).state.get());
254
+ */ const getWalletAccounts = (client = getChainFromVerifiedCredentialChain.getDefaultClient())=>{
255
+ const core = getChainFromVerifiedCredentialChain.getCore(client);
256
+ const { unverifiedWalletAccounts, user } = core.state.get();
257
+ return getWalletAccountsFromState({
258
+ unverifiedWalletAccounts,
259
+ user
260
+ }, client);
261
+ };
167
262
 
168
263
  class NoWalletProviderFoundError extends getChainFromVerifiedCredentialChain.BaseError {
169
264
  constructor({ walletProviderKey }){
@@ -332,13 +427,13 @@ const DYNAMIC_AUTH_COOKIE_NAME = 'DYNAMIC_JWT_TOKEN';
332
427
 
333
428
  const checkAndRaiseWalletAccountsChangedEvent = ({ previousState }, client)=>{
334
429
  const core = getChainFromVerifiedCredentialChain.getCore(client);
335
- const walletAccountsHashBefore = getWalletAccountsHash(previousState);
336
- const walletAccountsHashAfter = getWalletAccountsHash(core.state.get());
430
+ const walletAccountsHashBefore = getWalletAccountsHash(previousState, client);
431
+ const walletAccountsHashAfter = getWalletAccountsHash(core.state.get(), client);
337
432
  if (walletAccountsHashBefore !== walletAccountsHashAfter) {
338
433
  emitWalletAccountsChangedEvent(client);
339
434
  }
340
435
  };
341
- const getWalletAccountsHash = (state)=>getWalletAccountsFromState(state).map(({ id })=>id).sort().join('-');
436
+ const getWalletAccountsHash = (state, client)=>getWalletAccountsFromState(state, client).map(({ id })=>id).sort().join('-');
342
437
 
343
438
  const updateAuthFromVerifyResponse = ({ response }, client)=>{
344
439
  const core = getChainFromVerifiedCredentialChain.getCore(client);
@@ -385,11 +480,12 @@ const getWalletProviderByKey = ({ walletProviderKey }, client)=>{
385
480
  };
386
481
 
387
482
  exports.DYNAMIC_AUTH_COOKIE_NAME = DYNAMIC_AUTH_COOKIE_NAME;
483
+ exports.InvalidWalletProviderKeyError = InvalidWalletProviderKeyError;
388
484
  exports.NoWalletProviderFoundError = NoWalletProviderFoundError;
389
485
  exports.createRuntimeServiceAccessKey = createRuntimeServiceAccessKey;
390
- exports.createWalletAccountId = createWalletAccountId;
391
486
  exports.emitEvent = emitEvent;
392
487
  exports.emitWalletAccountsChangedEvent = emitWalletAccountsChangedEvent;
488
+ exports.formatWalletAccountId = formatWalletAccountId;
393
489
  exports.formatWalletProviderKey = formatWalletProviderKey;
394
490
  exports.getWalletAccounts = getWalletAccounts;
395
491
  exports.getWalletProviderByKey = getWalletProviderByKey;
@@ -397,8 +493,10 @@ exports.getWalletProviderFromWalletAccount = getWalletProviderFromWalletAccount;
397
493
  exports.getWalletProviderRegistry = getWalletProviderRegistry;
398
494
  exports.getWalletProviders = getWalletProviders;
399
495
  exports.normalizeAddress = normalizeAddress;
496
+ exports.normalizeWalletNameWithChain = normalizeWalletNameWithChain;
400
497
  exports.offEvent = offEvent;
401
498
  exports.onEvent = onEvent;
402
499
  exports.onceEvent = onceEvent;
403
500
  exports.setCookie = setCookie;
501
+ exports.splitWalletProviderKey = splitWalletProviderKey;
404
502
  exports.updateAuthFromVerifyResponse = updateAuthFromVerifyResponse;