@web3auth/no-modal 11.0.2 → 11.2.0

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 (48) hide show
  1. package/dist/lib.cjs/account-linking/react.js +1 -0
  2. package/dist/lib.cjs/account-linking/vue.js +1 -0
  3. package/dist/lib.cjs/base/connector/baseConnector.js +42 -11
  4. package/dist/lib.cjs/base/errors/index.js +5 -1
  5. package/dist/lib.cjs/base/utils.js +1 -1
  6. package/dist/lib.cjs/connectors/auth-connector/authConnector.js +23 -16
  7. package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +5 -5
  8. package/dist/lib.cjs/connectors/injected-evm-connector/injectedEvmConnector.js +6 -5
  9. package/dist/lib.cjs/connectors/injected-solana-connector/walletStandardConnector.js +6 -5
  10. package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +82 -31
  11. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/config.js +0 -3
  12. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/index.js +0 -1
  13. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +8 -6
  14. package/dist/lib.cjs/index.js +8 -8
  15. package/dist/lib.cjs/noModal.js +48 -22
  16. package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +9 -2
  17. package/dist/lib.cjs/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +1 -43
  18. package/dist/lib.cjs/react/context/useWeb3AuthInnerContextValue.js +10 -0
  19. package/dist/lib.cjs/react/solana/provider.js +65 -32
  20. package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +2 -1
  21. package/dist/lib.cjs/types/base/connector/interfaces.d.ts +1 -0
  22. package/dist/lib.cjs/types/base/errors/index.d.ts +1 -0
  23. package/dist/lib.cjs/types/base/interfaces.d.ts +2 -1
  24. package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +1 -0
  25. package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/config.d.ts +0 -1
  26. package/dist/lib.cjs/types/vue/solana/provider.d.ts +2 -2
  27. package/dist/lib.cjs/vue/solana/provider.js +55 -21
  28. package/dist/lib.cjs/vue/useWeb3AuthInnerContextValue.js +12 -2
  29. package/dist/lib.esm/base/connector/baseConnector.js +42 -11
  30. package/dist/lib.esm/base/errors/index.js +5 -1
  31. package/dist/lib.esm/base/utils.js +1 -1
  32. package/dist/lib.esm/connectors/auth-connector/authConnector.js +21 -15
  33. package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +5 -5
  34. package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +6 -5
  35. package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +6 -5
  36. package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +86 -31
  37. package/dist/lib.esm/connectors/wallet-connect-v2-connector/config.js +1 -4
  38. package/dist/lib.esm/connectors/wallet-connect-v2-connector/index.js +1 -1
  39. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +8 -7
  40. package/dist/lib.esm/index.js +2 -2
  41. package/dist/lib.esm/noModal.js +48 -22
  42. package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +9 -2
  43. package/dist/lib.esm/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +1 -9
  44. package/dist/lib.esm/react/context/useWeb3AuthInnerContextValue.js +10 -0
  45. package/dist/lib.esm/react/solana/provider.js +64 -30
  46. package/dist/lib.esm/vue/solana/provider.js +55 -19
  47. package/dist/lib.esm/vue/useWeb3AuthInnerContextValue.js +10 -0
  48. package/package.json +7 -7
@@ -7,6 +7,7 @@ import { useWeb3Auth } from '../hooks/useWeb3Auth.js';
7
7
  import { useChain } from '../hooks/useChain.js';
8
8
  import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
9
9
  import { log } from '../../base/loglevel.js';
10
+ import { getCaipChainId } from '../../base/utils.js';
10
11
 
11
12
  const _excluded = ["children"];
12
13
  const DEVNET_ENDPOINT = "https://api.devnet.solana.com";
@@ -36,13 +37,29 @@ function makePlaceholder(rpc) {
36
37
  });
37
38
  }
38
39
  function dispose(client) {
39
- void client.actions.disconnectWallet().catch(() => {});
40
40
  client.destroy();
41
41
  }
42
+ function resolveSolanaChain(web3Auth, connection) {
43
+ var _web3Auth$coreOptions3;
44
+ const currentChain = web3Auth === null || web3Auth === void 0 ? void 0 : web3Auth.currentChain;
45
+ if ((currentChain === null || currentChain === void 0 ? void 0 : currentChain.chainNamespace) === CHAIN_NAMESPACES.SOLANA) {
46
+ return currentChain;
47
+ }
48
+ const connectedScope = connection !== null && connection !== void 0 && connection.solanaWallet && "scope" in connection.solanaWallet && typeof connection.solanaWallet.scope === "string" ? connection.solanaWallet.scope : null;
49
+ if (connectedScope) {
50
+ var _web3Auth$coreOptions2;
51
+ const connectedChain = web3Auth === null || web3Auth === void 0 || (_web3Auth$coreOptions2 = web3Auth.coreOptions.chains) === null || _web3Auth$coreOptions2 === void 0 ? void 0 : _web3Auth$coreOptions2.find(chain => {
52
+ return chain.chainNamespace === CHAIN_NAMESPACES.SOLANA && getCaipChainId(chain) === connectedScope;
53
+ });
54
+ if (connectedChain) return connectedChain;
55
+ }
56
+ return (web3Auth === null || web3Auth === void 0 || (_web3Auth$coreOptions3 = web3Auth.coreOptions.chains) === null || _web3Auth$coreOptions3 === void 0 ? void 0 : _web3Auth$coreOptions3.find(chain => chain.chainNamespace === CHAIN_NAMESPACES.SOLANA)) || null;
57
+ }
42
58
 
43
59
  /**
44
- * Builds the SolanaClient for Framework Kit React hooks: placeholder when idle, Web3Auth-backed when
45
- * connected on Solana. Ref + state so React re-renders on swap and effects dispose the right instance.
60
+ * Builds the SolanaClient for Framework Kit React hooks.
61
+ * For multichain wallets, keep the Solana client warm across namespace switches so
62
+ * switching back to Solana can reuse the existing wallet session.
46
63
  */
47
64
  function useFrameworkKitSolanaClient() {
48
65
  const {
@@ -55,12 +72,13 @@ function useFrameworkKitSolanaClient() {
55
72
  chainId,
56
73
  chainNamespace
57
74
  } = useChain();
58
- const ref = useRef(null);
75
+ const solClientRef = useRef(null);
76
+ const connectedClientRef = useRef(null);
59
77
  const [client, setClient] = useState(() => {
60
78
  const c = makePlaceholder({
61
79
  rpcTarget: DEVNET_ENDPOINT
62
80
  });
63
- ref.current = c;
81
+ solClientRef.current = c;
64
82
  return c;
65
83
  });
66
84
  useEffect(() => {
@@ -69,54 +87,61 @@ function useFrameworkKitSolanaClient() {
69
87
  });
70
88
  }, [isInitialized, web3Auth]);
71
89
  useEffect(() => () => {
72
- const c = ref.current;
73
- if (c) {
74
- dispose(c);
75
- ref.current = null;
90
+ const connectedClient = connectedClientRef.current;
91
+ const currentClient = solClientRef.current;
92
+ if (currentClient) {
93
+ dispose(currentClient);
94
+ solClientRef.current = null;
95
+ }
96
+ if (connectedClient && connectedClient !== currentClient) {
97
+ dispose(connectedClient);
76
98
  }
99
+ connectedClientRef.current = null;
77
100
  }, []);
78
101
  useEffect(() => {
79
102
  let stale = false;
80
- const adopt = next => {
103
+ const adopt = nextClient => {
81
104
  if (stale) {
82
- dispose(next);
105
+ dispose(nextClient);
83
106
  return;
84
107
  }
85
- const prev = ref.current;
86
- if (prev === next) return;
87
- if (prev) dispose(prev);
88
- ref.current = next;
89
- setClient(next);
108
+ const prevClient = solClientRef.current;
109
+ if (prevClient === nextClient) return;
110
+ if (prevClient) dispose(prevClient);
111
+ solClientRef.current = nextClient;
112
+ setClient(nextClient);
90
113
  };
91
- (async _web3Auth$currentChai => {
114
+ (async () => {
92
115
  const rpc = placeholderRpc(isInitialized, web3Auth);
93
- const solanaWallet = connection === null || connection === void 0 ? void 0 : connection.solanaWallet;
94
- const onSolana = isConnected && Boolean(solanaWallet) && chainNamespace === CHAIN_NAMESPACES.SOLANA && (web3Auth === null || web3Auth === void 0 || (_web3Auth$currentChai = web3Auth.currentChain) === null || _web3Auth$currentChai === void 0 ? void 0 : _web3Auth$currentChai.chainNamespace) === CHAIN_NAMESPACES.SOLANA;
95
- if (!onSolana) {
96
- adopt(makePlaceholder(rpc));
97
- return;
98
- }
99
116
  const conn = connection;
100
- if (!conn || !solanaWallet) {
117
+ const currentChain = web3Auth === null || web3Auth === void 0 ? void 0 : web3Auth.currentChain;
118
+ if ((currentChain === null || currentChain === void 0 ? void 0 : currentChain.chainNamespace) !== CHAIN_NAMESPACES.SOLANA) {
101
119
  adopt(makePlaceholder(rpc));
102
120
  return;
103
121
  }
104
-
105
- // only reconnect for the primary connector
106
- if (conn.connectorName !== (web3Auth === null || web3Auth === void 0 ? void 0 : web3Auth.primaryConnectorName)) {
122
+ const preferredSolanaChain = resolveSolanaChain(web3Auth, conn);
123
+ const shouldKeepSolanaClient = isConnected && Boolean(conn === null || conn === void 0 ? void 0 : conn.solanaWallet) && Boolean(preferredSolanaChain) &&
124
+ // only manage the client for the primary connector
125
+ (conn === null || conn === void 0 ? void 0 : conn.connectorName) === (web3Auth === null || web3Auth === void 0 ? void 0 : web3Auth.primaryConnectorName);
126
+ if (!shouldKeepSolanaClient) {
127
+ const connectedClient = connectedClientRef.current;
128
+ connectedClientRef.current = null;
129
+ if (connectedClient) {
130
+ dispose(connectedClient);
131
+ }
107
132
  adopt(makePlaceholder(rpc));
108
133
  return;
109
134
  }
110
135
  try {
111
136
  const solanaWalletId = "wallet-standard:" + conn.connectorName;
112
- const connector = createWalletStandardConnector(solanaWallet, {
137
+ const connector = createWalletStandardConnector(conn.solanaWallet, {
113
138
  id: solanaWalletId,
114
139
  name: conn.connectorName
115
140
  });
116
141
  const {
117
142
  rpcTarget,
118
143
  wsTarget
119
- } = web3Auth.currentChain;
144
+ } = preferredSolanaChain;
120
145
  const wired = createClient({
121
146
  endpoint: rpcTarget,
122
147
  websocketEndpoint: wsTarget,
@@ -129,7 +154,16 @@ function useFrameworkKitSolanaClient() {
129
154
  dispose(wired);
130
155
  return;
131
156
  }
132
- adopt(wired);
157
+ const prevConnectedClient = connectedClientRef.current;
158
+ connectedClientRef.current = wired;
159
+ if (chainNamespace === CHAIN_NAMESPACES.SOLANA && (currentChain === null || currentChain === void 0 ? void 0 : currentChain.chainNamespace) === CHAIN_NAMESPACES.SOLANA) {
160
+ adopt(wired);
161
+ } else {
162
+ adopt(makePlaceholder(rpc));
163
+ }
164
+ if (prevConnectedClient && prevConnectedClient !== wired) {
165
+ dispose(prevConnectedClient);
166
+ }
133
167
  } catch (e) {
134
168
  log.error("Failed to create or connect Solana client", e);
135
169
  adopt(makePlaceholder(rpc));
@@ -1,24 +1,36 @@
1
1
  import { createWalletStandardConnector, createClient } from '@solana/client';
2
- import { defineComponent, ref, provide, watch, h, Fragment } from 'vue';
2
+ import { defineComponent, ref, provide, watch, onBeforeUnmount, h, Fragment } from 'vue';
3
3
  import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
4
4
  import { SOLANA_CLIENT_KEY } from './constants.js';
5
5
  import { useWeb3Auth } from '../composables/useWeb3Auth.js';
6
6
  import { useChain } from '../composables/useChain.js';
7
7
  import { log } from '../../base/loglevel.js';
8
+ import { getCaipChainId } from '../../base/utils.js';
8
9
 
9
10
  const disposeClient = async client => {
10
- try {
11
- await client.actions.disconnectWallet();
12
- } catch (e) {
13
- log.warn("Solana client disconnect", e);
14
- }
15
11
  client.destroy();
16
12
  };
13
+ const resolveSolanaChain = (web3Auth, connection) => {
14
+ var _web3Auth$coreOptions2;
15
+ const currentChain = web3Auth === null || web3Auth === void 0 ? void 0 : web3Auth.currentChain;
16
+ if ((currentChain === null || currentChain === void 0 ? void 0 : currentChain.chainNamespace) === CHAIN_NAMESPACES.SOLANA) {
17
+ return currentChain;
18
+ }
19
+ const connectedScope = connection !== null && connection !== void 0 && connection.solanaWallet && "scope" in connection.solanaWallet && typeof connection.solanaWallet.scope === "string" ? connection.solanaWallet.scope : null;
20
+ if (connectedScope) {
21
+ var _web3Auth$coreOptions;
22
+ const connectedChain = web3Auth === null || web3Auth === void 0 || (_web3Auth$coreOptions = web3Auth.coreOptions.chains) === null || _web3Auth$coreOptions === void 0 ? void 0 : _web3Auth$coreOptions.find(chain => {
23
+ return chain.chainNamespace === CHAIN_NAMESPACES.SOLANA && getCaipChainId(chain) === connectedScope;
24
+ });
25
+ if (connectedChain) return connectedChain;
26
+ }
27
+ return (web3Auth === null || web3Auth === void 0 || (_web3Auth$coreOptions2 = web3Auth.coreOptions.chains) === null || _web3Auth$coreOptions2 === void 0 ? void 0 : _web3Auth$coreOptions2.find(chain => chain.chainNamespace === CHAIN_NAMESPACES.SOLANA)) || null;
28
+ };
17
29
 
18
30
  /**
19
31
  * Syncs Web3Auth Solana connection with Framework Kit client.
20
- * When user is connected via Web3Auth and current chain is Solana, creates a Framework Kit client
21
- * with Web3Auth as the wallet connector and connects it (same pattern as Wagmi provider).
32
+ * For multichain wallets, keep the Solana client warm across namespace switches so
33
+ * switching back to Solana can reuse the existing wallet session.
22
34
  */
23
35
  const SolanaProvider = defineComponent({
24
36
  name: "SolanaProvider",
@@ -34,6 +46,8 @@ const SolanaProvider = defineComponent({
34
46
  chainId
35
47
  } = useChain();
36
48
  const clientRef = ref(null);
49
+ let connectedClient = null;
50
+ // let connectedClientKey: string | null = null;
37
51
  // Holds the token for the newest requested sync run. Older async runs compare against it
38
52
  // before publishing results so a slower reconnect cannot overwrite a newer chain/account update.
39
53
  let activeSyncToken = null;
@@ -49,21 +63,26 @@ const SolanaProvider = defineComponent({
49
63
  const newIsConnected = isConnected.value;
50
64
  const newConnection = connection.value;
51
65
  const currentChain = (_web3Auth$value = web3Auth.value) === null || _web3Auth$value === void 0 ? void 0 : _web3Auth$value.currentChain;
52
- if (!newIsConnected || !(newConnection !== null && newConnection !== void 0 && newConnection.solanaWallet) || (currentChain === null || currentChain === void 0 ? void 0 : currentChain.chainNamespace) !== CHAIN_NAMESPACES.SOLANA ||
53
- // only reconnect for the primary connector
54
- newConnection.connectorName !== ((_web3Auth$value2 = web3Auth.value) === null || _web3Auth$value2 === void 0 ? void 0 : _web3Auth$value2.primaryConnectorName)) {
55
- const prevClient = clientRef.value;
66
+ if ((currentChain === null || currentChain === void 0 ? void 0 : currentChain.chainNamespace) !== CHAIN_NAMESPACES.SOLANA) {
67
+ // Mirror the React provider behavior: hide the live Solana client from injected
68
+ // consumers whenever Web3Auth is currently scoped to a non-Solana namespace.
56
69
  clientRef.value = null;
70
+ return;
71
+ }
72
+ const preferredSolanaChain = resolveSolanaChain(web3Auth.value, newConnection);
73
+ const shouldKeepSolanaClient = newIsConnected && Boolean(newConnection === null || newConnection === void 0 ? void 0 : newConnection.solanaWallet) && Boolean(preferredSolanaChain) &&
74
+ // only manage the client for the primary connector
75
+ (newConnection === null || newConnection === void 0 ? void 0 : newConnection.connectorName) === ((_web3Auth$value2 = web3Auth.value) === null || _web3Auth$value2 === void 0 ? void 0 : _web3Auth$value2.primaryConnectorName);
76
+ if (!shouldKeepSolanaClient) {
77
+ clientRef.value = null;
78
+ const prevClient = connectedClient;
79
+ connectedClient = null;
80
+ // connectedClientKey = null;
57
81
  if (prevClient) {
58
82
  await disposeClient(prevClient);
59
83
  }
60
84
  return;
61
85
  }
62
- const prevClient = clientRef.value;
63
- clientRef.value = null;
64
- if (prevClient) {
65
- await disposeClient(prevClient);
66
- }
67
86
  let client = null;
68
87
  try {
69
88
  // create a wallet standard connector from connected wallet
@@ -77,7 +96,7 @@ const SolanaProvider = defineComponent({
77
96
  const {
78
97
  rpcTarget,
79
98
  wsTarget
80
- } = currentChain;
99
+ } = preferredSolanaChain;
81
100
  client = createClient({
82
101
  endpoint: rpcTarget,
83
102
  websocketEndpoint: wsTarget,
@@ -93,7 +112,13 @@ const SolanaProvider = defineComponent({
93
112
  await disposeClient(client);
94
113
  return;
95
114
  }
96
- clientRef.value = client;
115
+ const prevClient = connectedClient;
116
+ connectedClient = client;
117
+ // connectedClientKey = nextClientKey;
118
+ clientRef.value = (currentChain === null || currentChain === void 0 ? void 0 : currentChain.chainNamespace) === CHAIN_NAMESPACES.SOLANA ? client : null;
119
+ if (prevClient) {
120
+ await disposeClient(prevClient);
121
+ }
97
122
  } catch (err) {
98
123
  if (client) {
99
124
  await disposeClient(client);
@@ -112,6 +137,17 @@ const SolanaProvider = defineComponent({
112
137
  }, {
113
138
  immediate: true
114
139
  });
140
+ onBeforeUnmount(() => {
141
+ const publishedClient = clientRef.value;
142
+ clientRef.value = null;
143
+ const prevClient = connectedClient;
144
+ connectedClient = null;
145
+ if (prevClient) {
146
+ void disposeClient(prevClient);
147
+ } else if (publishedClient) {
148
+ void disposeClient(publishedClient);
149
+ }
150
+ });
115
151
  return () => {
116
152
  var _slots$default, _slots$default2;
117
153
  return h(Fragment, null, (_slots$default = (_slots$default2 = slots.default) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots)) !== null && _slots$default !== void 0 ? _slots$default : []);
@@ -148,6 +148,14 @@ function useWeb3AuthInnerContextValue({
148
148
  chainId.value = web3Auth.value.currentChainId;
149
149
  chainNamespace.value = (_currentChain$chainNa4 = (_currentChain4 = web3Auth.value.currentChain) === null || _currentChain4 === void 0 ? void 0 : _currentChain4.chainNamespace) !== null && _currentChain$chainNa4 !== void 0 ? _currentChain$chainNa4 : null;
150
150
  };
151
+ const connectorDataUpdatedListener = data => {
152
+ const updatedData = data.data;
153
+ if (updatedData.chainId && chainId.value !== updatedData.chainId) {
154
+ var _currentChain5;
155
+ chainId.value = updatedData.chainId;
156
+ chainNamespace.value = (_currentChain5 = web3Auth.value.currentChain) === null || _currentChain5 === void 0 ? void 0 : _currentChain5.chainNamespace;
157
+ }
158
+ };
151
159
  if (prevWeb3Auth && newWeb3Auth !== prevWeb3Auth) {
152
160
  prevWeb3Auth.removeListener(CONNECTOR_EVENTS.NOT_READY, notReadyListener);
153
161
  prevWeb3Auth.removeListener(CONNECTOR_EVENTS.READY, readyListener);
@@ -159,6 +167,7 @@ function useWeb3AuthInnerContextValue({
159
167
  prevWeb3Auth.removeListener(CONNECTOR_EVENTS.REHYDRATION_ERROR, errorListener);
160
168
  prevWeb3Auth.removeListener(CONNECTOR_EVENTS.MFA_ENABLED, mfaEnabledListener);
161
169
  prevWeb3Auth.removeListener(CONNECTOR_EVENTS.CONNECTION_UPDATED, connectionUpdatedListener);
170
+ prevWeb3Auth.removeListener(CONNECTOR_EVENTS.CONNECTOR_DATA_UPDATED, connectorDataUpdatedListener);
162
171
  if (prevWeb3Auth.loginMode === LOGIN_MODE.MODAL) {
163
172
  prevWeb3Auth.removeListener(CONNECTOR_EVENTS.CONSENT_ACCEPTED, consentAcceptedListener);
164
173
  }
@@ -175,6 +184,7 @@ function useWeb3AuthInnerContextValue({
175
184
  newWeb3Auth.on(CONNECTOR_EVENTS.REHYDRATION_ERROR, errorListener);
176
185
  newWeb3Auth.on(CONNECTOR_EVENTS.MFA_ENABLED, mfaEnabledListener);
177
186
  newWeb3Auth.on(CONNECTOR_EVENTS.CONNECTION_UPDATED, connectionUpdatedListener);
187
+ newWeb3Auth.on(CONNECTOR_EVENTS.CONNECTOR_DATA_UPDATED, connectorDataUpdatedListener);
178
188
  if (newWeb3Auth.loginMode === LOGIN_MODE.MODAL) {
179
189
  newWeb3Auth.on(CONNECTOR_EVENTS.CONSENT_ACCEPTED, consentAcceptedListener);
180
190
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@web3auth/no-modal",
3
- "version": "11.0.2",
3
+ "version": "11.2.0",
4
4
  "description": "Multi chain wallet aggregator for web3Auth",
5
5
  "keywords": [
6
6
  "web3Auth/no-modal",
@@ -65,9 +65,9 @@
65
65
  }
66
66
  },
67
67
  "dependencies": {
68
- "@metamask/connect-evm": "^1.4.0",
69
- "@metamask/connect-multichain": "^0.15.0",
70
- "@metamask/connect-solana": "^1.2.0",
68
+ "@metamask/connect-evm": "^2.0.0",
69
+ "@metamask/connect-multichain": "^1.0.0",
70
+ "@metamask/connect-solana": "^2.0.0",
71
71
  "@segment/analytics-next": "^1.84.0",
72
72
  "@solana/client": "^1.7.0",
73
73
  "@solana/kit": "^6.9.0",
@@ -75,7 +75,7 @@
75
75
  "@toruslabs/base-controllers": "^9.10.0",
76
76
  "@toruslabs/constants": "^16.1.1",
77
77
  "@toruslabs/eccrypto": "^7.0.0",
78
- "@toruslabs/ethereum-controllers": "^9.10.0",
78
+ "@toruslabs/ethereum-controllers": "^9.11.0",
79
79
  "@toruslabs/http-helpers": "^9.0.0",
80
80
  "@toruslabs/loglevel-sentry": "^9.0.0",
81
81
  "@toruslabs/metadata-helpers": "^8.2.0",
@@ -88,7 +88,7 @@
88
88
  "@walletconnect/types": "^2.23.9",
89
89
  "@walletconnect/utils": "^2.23.9",
90
90
  "@web3auth/auth": "^11.8.1",
91
- "@web3auth/ws-embed": "^6.0.4",
91
+ "@web3auth/ws-embed": "^6.1.0",
92
92
  "bignumber.js": "~9.3.1",
93
93
  "deepmerge": "^4.3.1",
94
94
  "ethers": "^6.16.0",
@@ -252,5 +252,5 @@
252
252
  "node": ">=22.x",
253
253
  "npm": ">=10.x"
254
254
  },
255
- "gitHead": "de91630f1420601b3a9b2377c0dff760b8674013"
255
+ "gitHead": "e2f5aedf569d05ffb73ce089bd9189c47cb163c6"
256
256
  }