@wagmi/core 0.6.11 → 0.7.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 (184) hide show
  1. package/chains/package.json +2 -2
  2. package/connectors/coinbaseWallet/package.json +2 -2
  3. package/connectors/metaMask/package.json +2 -2
  4. package/connectors/mock/package.json +2 -2
  5. package/connectors/walletConnect/package.json +2 -2
  6. package/dist/{declarations/src/connectors/base.d.ts → base-5bd9b5ed.d.ts} +8 -5
  7. package/dist/chains.d.ts +3 -0
  8. package/dist/chains.js +29 -0
  9. package/dist/chunk-2EDVJWOA.js +3496 -0
  10. package/dist/chunk-4DNFSL2K.js +376 -0
  11. package/dist/chunk-MQXBDTVK.js +29 -0
  12. package/dist/{declarations/src/connectors → connectors}/coinbaseWallet.d.ts +10 -6
  13. package/dist/connectors/coinbaseWallet.js +215 -0
  14. package/dist/{declarations/src/connectors → connectors}/metaMask.d.ts +11 -4
  15. package/dist/connectors/metaMask.js +115 -0
  16. package/dist/connectors/mock/index.d.ts +78 -0
  17. package/dist/connectors/mock/index.js +190 -0
  18. package/dist/{declarations/src/connectors → connectors}/walletConnect.d.ts +9 -5
  19. package/dist/connectors/walletConnect.js +160 -0
  20. package/dist/{declarations/src/types/contracts.d.ts → contracts-fb6a6ff0.d.ts} +122 -17
  21. package/dist/{declarations/src/types/index.d.ts → index-bacc1c49.d.ts} +86 -17
  22. package/dist/index.d.ts +1738 -0
  23. package/dist/index.js +165 -0
  24. package/dist/{declarations/src/connectors/injected.d.ts → injected-6980e5c3.d.ts} +9 -6
  25. package/dist/internal.d.ts +8 -0
  26. package/dist/internal.js +8 -0
  27. package/dist/providers/alchemy.d.ts +11 -0
  28. package/dist/providers/alchemy.js +32 -0
  29. package/dist/providers/infura.d.ts +11 -0
  30. package/dist/providers/infura.js +32 -0
  31. package/dist/providers/jsonRpc.d.ts +14 -0
  32. package/dist/providers/jsonRpc.js +44 -0
  33. package/dist/providers/public.d.ts +8 -0
  34. package/dist/providers/public.js +30 -0
  35. package/internal/package.json +2 -2
  36. package/package.json +40 -51
  37. package/providers/alchemy/package.json +2 -2
  38. package/providers/infura/package.json +2 -2
  39. package/providers/jsonRpc/package.json +2 -2
  40. package/providers/public/package.json +2 -2
  41. package/chains/dist/wagmi-core-chains.cjs.d.ts +0 -1
  42. package/chains/dist/wagmi-core-chains.cjs.dev.js +0 -26
  43. package/chains/dist/wagmi-core-chains.cjs.js +0 -7
  44. package/chains/dist/wagmi-core-chains.cjs.prod.js +0 -26
  45. package/chains/dist/wagmi-core-chains.esm.js +0 -2
  46. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.d.ts +0 -1
  47. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +0 -274
  48. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.js +0 -7
  49. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +0 -274
  50. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +0 -252
  51. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.d.ts +0 -1
  52. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +0 -153
  53. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.js +0 -7
  54. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +0 -153
  55. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +0 -149
  56. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.d.ts +0 -1
  57. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +0 -262
  58. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.js +0 -7
  59. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +0 -262
  60. package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +0 -253
  61. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.d.ts +0 -1
  62. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +0 -227
  63. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.js +0 -7
  64. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +0 -227
  65. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +0 -205
  66. package/dist/chains-73cc6c23.cjs.prod.js +0 -526
  67. package/dist/chains-8fce19d8.esm.js +0 -502
  68. package/dist/chains-fe1f4131.cjs.dev.js +0 -526
  69. package/dist/debounce-0862bf88.esm.js +0 -18
  70. package/dist/debounce-2d836dc9.cjs.prod.js +0 -20
  71. package/dist/debounce-46ac0312.cjs.dev.js +0 -20
  72. package/dist/declarations/src/actions/accounts/connect.d.ts +0 -18
  73. package/dist/declarations/src/actions/accounts/disconnect.d.ts +0 -1
  74. package/dist/declarations/src/actions/accounts/fetchBalance.d.ts +0 -19
  75. package/dist/declarations/src/actions/accounts/fetchSigner.d.ts +0 -7
  76. package/dist/declarations/src/actions/accounts/getAccount.d.ts +0 -36
  77. package/dist/declarations/src/actions/accounts/getNetwork.d.ts +0 -8
  78. package/dist/declarations/src/actions/accounts/index.d.ts +0 -12
  79. package/dist/declarations/src/actions/accounts/signMessage.d.ts +0 -7
  80. package/dist/declarations/src/actions/accounts/signTypedData.d.ts +0 -23
  81. package/dist/declarations/src/actions/accounts/switchNetwork.d.ts +0 -6
  82. package/dist/declarations/src/actions/accounts/watchAccount.d.ts +0 -12
  83. package/dist/declarations/src/actions/accounts/watchNetwork.d.ts +0 -10
  84. package/dist/declarations/src/actions/accounts/watchSigner.d.ts +0 -5
  85. package/dist/declarations/src/actions/contracts/fetchToken.d.ts +0 -21
  86. package/dist/declarations/src/actions/contracts/getContract.d.ts +0 -113
  87. package/dist/declarations/src/actions/contracts/index.d.ts +0 -11
  88. package/dist/declarations/src/actions/contracts/multicall.d.ts +0 -17
  89. package/dist/declarations/src/actions/contracts/prepareWriteContract.d.ts +0 -47
  90. package/dist/declarations/src/actions/contracts/readContract.d.ts +0 -15
  91. package/dist/declarations/src/actions/contracts/readContracts.d.ts +0 -28
  92. package/dist/declarations/src/actions/contracts/watchContractEvent.d.ts +0 -28
  93. package/dist/declarations/src/actions/contracts/watchMulticall.d.ts +0 -10
  94. package/dist/declarations/src/actions/contracts/watchReadContract.d.ts +0 -7
  95. package/dist/declarations/src/actions/contracts/watchReadContracts.d.ts +0 -10
  96. package/dist/declarations/src/actions/contracts/writeContract.d.ts +0 -72
  97. package/dist/declarations/src/actions/ens/fetchEnsAddress.d.ts +0 -9
  98. package/dist/declarations/src/actions/ens/fetchEnsAvatar.d.ts +0 -8
  99. package/dist/declarations/src/actions/ens/fetchEnsName.d.ts +0 -9
  100. package/dist/declarations/src/actions/ens/fetchEnsResolver.d.ts +0 -9
  101. package/dist/declarations/src/actions/ens/index.d.ts +0 -4
  102. package/dist/declarations/src/actions/index.d.ts +0 -6
  103. package/dist/declarations/src/actions/network-status/fetchBlockNumber.d.ts +0 -5
  104. package/dist/declarations/src/actions/network-status/fetchFeeData.d.ts +0 -16
  105. package/dist/declarations/src/actions/network-status/index.d.ts +0 -3
  106. package/dist/declarations/src/actions/network-status/watchBlockNumber.d.ts +0 -7
  107. package/dist/declarations/src/actions/providers/getProvider.d.ts +0 -7
  108. package/dist/declarations/src/actions/providers/getWebSocketProvider.d.ts +0 -7
  109. package/dist/declarations/src/actions/providers/index.d.ts +0 -4
  110. package/dist/declarations/src/actions/providers/watchProvider.d.ts +0 -4
  111. package/dist/declarations/src/actions/providers/watchWebSocketProvider.d.ts +0 -4
  112. package/dist/declarations/src/actions/transactions/fetchTransaction.d.ts +0 -21
  113. package/dist/declarations/src/actions/transactions/index.d.ts +0 -4
  114. package/dist/declarations/src/actions/transactions/prepareSendTransaction.d.ts +0 -37
  115. package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +0 -48
  116. package/dist/declarations/src/actions/transactions/waitForTransaction.d.ts +0 -18
  117. package/dist/declarations/src/chains.d.ts +0 -1
  118. package/dist/declarations/src/client.d.ts +0 -91
  119. package/dist/declarations/src/connectors/index.d.ts +0 -2
  120. package/dist/declarations/src/connectors/mock/connector.d.ts +0 -34
  121. package/dist/declarations/src/connectors/mock/index.d.ts +0 -2
  122. package/dist/declarations/src/connectors/mock/provider.d.ts +0 -41
  123. package/dist/declarations/src/constants/abis.d.ts +0 -941
  124. package/dist/declarations/src/constants/blockExplorers.d.ts +0 -9
  125. package/dist/declarations/src/constants/chains.d.ts +0 -64
  126. package/dist/declarations/src/constants/index.d.ts +0 -7
  127. package/dist/declarations/src/constants/rpcs.d.ts +0 -11
  128. package/dist/declarations/src/constants/units.d.ts +0 -1
  129. package/dist/declarations/src/errors.d.ts +0 -134
  130. package/dist/declarations/src/index.d.ts +0 -14
  131. package/dist/declarations/src/internal.d.ts +0 -3
  132. package/dist/declarations/src/providers/alchemy.d.ts +0 -6
  133. package/dist/declarations/src/providers/infura.d.ts +0 -6
  134. package/dist/declarations/src/providers/jsonRpc.d.ts +0 -10
  135. package/dist/declarations/src/providers/public.d.ts +0 -4
  136. package/dist/declarations/src/storage.d.ts +0 -12
  137. package/dist/declarations/src/types/utils.d.ts +0 -103
  138. package/dist/declarations/src/utils/assertActiveChain.d.ts +0 -5
  139. package/dist/declarations/src/utils/configureChains.d.ts +0 -26
  140. package/dist/declarations/src/utils/debounce.d.ts +0 -1
  141. package/dist/declarations/src/utils/deepEqual.d.ts +0 -2
  142. package/dist/declarations/src/utils/getInjectedName.d.ts +0 -2
  143. package/dist/declarations/src/utils/index.d.ts +0 -11
  144. package/dist/declarations/src/utils/logger.d.ts +0 -1
  145. package/dist/declarations/src/utils/minimizeContractInterface.d.ts +0 -5
  146. package/dist/declarations/src/utils/normalizeChainId.d.ts +0 -1
  147. package/dist/declarations/src/utils/normalizeFunctionName.d.ts +0 -17
  148. package/dist/declarations/src/utils/parseContractResult.d.ts +0 -7
  149. package/dist/getProvider-58ea0031.cjs.dev.js +0 -1143
  150. package/dist/getProvider-922d7937.cjs.prod.js +0 -1143
  151. package/dist/getProvider-b69e06ef.esm.js +0 -1105
  152. package/dist/rpcs-38f4faba.cjs.prod.js +0 -57
  153. package/dist/rpcs-52ea3d8d.cjs.dev.js +0 -57
  154. package/dist/rpcs-d533516e.esm.js +0 -51
  155. package/dist/wagmi-core.cjs.d.ts +0 -1
  156. package/dist/wagmi-core.cjs.dev.js +0 -2683
  157. package/dist/wagmi-core.cjs.js +0 -7
  158. package/dist/wagmi-core.cjs.prod.js +0 -2683
  159. package/dist/wagmi-core.esm.js +0 -2599
  160. package/internal/dist/wagmi-core-internal.cjs.d.ts +0 -1
  161. package/internal/dist/wagmi-core-internal.cjs.dev.js +0 -9
  162. package/internal/dist/wagmi-core-internal.cjs.js +0 -7
  163. package/internal/dist/wagmi-core-internal.cjs.prod.js +0 -9
  164. package/internal/dist/wagmi-core-internal.esm.js +0 -1
  165. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.d.ts +0 -1
  166. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.dev.js +0 -36
  167. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.js +0 -7
  168. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.prod.js +0 -36
  169. package/providers/alchemy/dist/wagmi-core-providers-alchemy.esm.js +0 -32
  170. package/providers/infura/dist/wagmi-core-providers-infura.cjs.d.ts +0 -1
  171. package/providers/infura/dist/wagmi-core-providers-infura.cjs.dev.js +0 -36
  172. package/providers/infura/dist/wagmi-core-providers-infura.cjs.js +0 -7
  173. package/providers/infura/dist/wagmi-core-providers-infura.cjs.prod.js +0 -36
  174. package/providers/infura/dist/wagmi-core-providers-infura.esm.js +0 -32
  175. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.d.ts +0 -1
  176. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.dev.js +0 -46
  177. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.js +0 -7
  178. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.prod.js +0 -46
  179. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.esm.js +0 -42
  180. package/providers/public/dist/wagmi-core-providers-public.cjs.d.ts +0 -1
  181. package/providers/public/dist/wagmi-core-providers-public.cjs.dev.js +0 -32
  182. package/providers/public/dist/wagmi-core-providers-public.cjs.js +0 -7
  183. package/providers/public/dist/wagmi-core-providers-public.cjs.prod.js +0 -32
  184. package/providers/public/dist/wagmi-core-providers-public.esm.js +0 -28
@@ -1,227 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var getProvider = require('../../../dist/getProvider-922d7937.cjs.prod.js');
6
- var ethers = require('ethers');
7
- var utils = require('ethers/lib/utils');
8
- require('zustand/middleware');
9
- require('zustand/vanilla');
10
- require('eventemitter3');
11
- require('../../../dist/chains-73cc6c23.cjs.prod.js');
12
- require('../../../dist/rpcs-38f4faba.cjs.prod.js');
13
-
14
- function _interopNamespace(e) {
15
- if (e && e.__esModule) return e;
16
- var n = Object.create(null);
17
- if (e) {
18
- Object.keys(e).forEach(function (k) {
19
- if (k !== 'default') {
20
- var d = Object.getOwnPropertyDescriptor(e, k);
21
- Object.defineProperty(n, k, d.get ? d : {
22
- enumerable: true,
23
- get: function () { return e[k]; }
24
- });
25
- }
26
- });
27
- }
28
- n["default"] = e;
29
- return Object.freeze(n);
30
- }
31
-
32
- /**
33
- * Wallets that support chain switching through WalletConnect
34
- * - imToken (token.im)
35
- * - MetaMask (metamask.io)
36
- * - Rainbow (rainbow.me)
37
- */
38
-
39
- const switchChainAllowedRegex = /(imtoken|metamask|rainbow)/i;
40
-
41
- var _provider = /*#__PURE__*/new WeakMap();
42
-
43
- var _switchChain = /*#__PURE__*/new WeakSet();
44
-
45
- class WalletConnectConnector extends getProvider.Connector {
46
- constructor(config) {
47
- super(config);
48
-
49
- getProvider._classPrivateMethodInitSpec(this, _switchChain);
50
-
51
- getProvider._defineProperty(this, "id", 'walletConnect');
52
-
53
- getProvider._defineProperty(this, "name", 'WalletConnect');
54
-
55
- getProvider._defineProperty(this, "ready", true);
56
-
57
- getProvider._classPrivateFieldInitSpec(this, _provider, {
58
- writable: true,
59
- value: void 0
60
- });
61
-
62
- getProvider._defineProperty(this, "onAccountsChanged", accounts => {
63
- if (accounts.length === 0) this.emit('disconnect');else this.emit('change', {
64
- account: utils.getAddress(accounts[0])
65
- });
66
- });
67
-
68
- getProvider._defineProperty(this, "onChainChanged", chainId => {
69
- const id = getProvider.normalizeChainId(chainId);
70
- const unsupported = this.isChainUnsupported(id);
71
- this.emit('change', {
72
- chain: {
73
- id,
74
- unsupported
75
- }
76
- });
77
- });
78
-
79
- getProvider._defineProperty(this, "onDisconnect", () => {
80
- this.emit('disconnect');
81
- });
82
- }
83
-
84
- async connect() {
85
- let {
86
- chainId
87
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
88
-
89
- try {
90
- var _provider$connector, _provider$connector$p;
91
-
92
- let targetChainId = chainId;
93
-
94
- if (!targetChainId) {
95
- const lastUsedChainId = getProvider.getClient().lastUsedChainId;
96
- if (lastUsedChainId && !this.isChainUnsupported(lastUsedChainId)) targetChainId = lastUsedChainId;
97
- }
98
-
99
- const provider = await this.getProvider({
100
- chainId: targetChainId,
101
- create: true
102
- });
103
- provider.on('accountsChanged', this.onAccountsChanged);
104
- provider.on('chainChanged', this.onChainChanged);
105
- provider.on('disconnect', this.onDisconnect); // Defer message to the next tick to ensure wallet connect data (provided by `.enable()`) is available
106
-
107
- setTimeout(() => this.emit('message', {
108
- type: 'connecting'
109
- }), 0);
110
- const accounts = await provider.enable();
111
- const account = utils.getAddress(accounts[0]);
112
- const id = await this.getChainId();
113
- const unsupported = this.isChainUnsupported(id); // Not all WalletConnect options support programmatic chain switching
114
- // Only enable for wallet options that do
115
-
116
- const walletName = ((_provider$connector = provider.connector) === null || _provider$connector === void 0 ? void 0 : (_provider$connector$p = _provider$connector.peerMeta) === null || _provider$connector$p === void 0 ? void 0 : _provider$connector$p.name) ?? '';
117
- if (switchChainAllowedRegex.test(walletName)) this.switchChain = getProvider._classPrivateMethodGet(this, _switchChain, _switchChain2);
118
- return {
119
- account,
120
- chain: {
121
- id,
122
- unsupported
123
- },
124
- provider: new ethers.providers.Web3Provider(provider)
125
- };
126
- } catch (error) {
127
- if (/user closed modal/i.test(error.message)) throw new getProvider.UserRejectedRequestError(error);
128
- throw error;
129
- }
130
- }
131
-
132
- async disconnect() {
133
- const provider = await this.getProvider();
134
- await provider.disconnect();
135
- provider.removeListener('accountsChanged', this.onAccountsChanged);
136
- provider.removeListener('chainChanged', this.onChainChanged);
137
- provider.removeListener('disconnect', this.onDisconnect);
138
- typeof localStorage !== 'undefined' && localStorage.removeItem('walletconnect');
139
- }
140
-
141
- async getAccount() {
142
- const provider = await this.getProvider();
143
- const accounts = provider.accounts; // return checksum address
144
-
145
- return utils.getAddress(accounts[0]);
146
- }
147
-
148
- async getChainId() {
149
- const provider = await this.getProvider();
150
- const chainId = getProvider.normalizeChainId(provider.chainId);
151
- return chainId;
152
- }
153
-
154
- async getProvider() {
155
- let {
156
- chainId,
157
- create
158
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
159
-
160
- // Force create new provider
161
- if (!getProvider._classPrivateFieldGet(this, _provider) || chainId || create) {
162
- var _this$options, _this$options2;
163
-
164
- const rpc = !((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.infuraId) ? this.chains.reduce((rpc, chain) => ({ ...rpc,
165
- [chain.id]: chain.rpcUrls.default
166
- }), {}) : {};
167
- const WalletConnectProvider = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@walletconnect/ethereum-provider')); })).default;
168
-
169
- getProvider._classPrivateFieldSet(this, _provider, new WalletConnectProvider({ ...this.options,
170
- chainId,
171
- rpc: { ...rpc,
172
- ...((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.rpc)
173
- }
174
- }));
175
- }
176
-
177
- return getProvider._classPrivateFieldGet(this, _provider);
178
- }
179
-
180
- async getSigner() {
181
- let {
182
- chainId
183
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
184
- const [provider, account] = await Promise.all([this.getProvider({
185
- chainId
186
- }), this.getAccount()]);
187
- return new ethers.providers.Web3Provider(provider, chainId).getSigner(account);
188
- }
189
-
190
- async isAuthorized() {
191
- try {
192
- const account = await this.getAccount();
193
- return !!account;
194
- } catch {
195
- return false;
196
- }
197
- }
198
-
199
- }
200
-
201
- async function _switchChain2(chainId) {
202
- const provider = await this.getProvider();
203
- const id = utils.hexValue(chainId);
204
-
205
- try {
206
- await provider.request({
207
- method: 'wallet_switchEthereumChain',
208
- params: [{
209
- chainId: id
210
- }]
211
- });
212
- return this.chains.find(x => x.id === chainId) ?? {
213
- id: chainId,
214
- name: `Chain ${id}`,
215
- network: `${id}`,
216
- rpcUrls: {
217
- default: ''
218
- }
219
- };
220
- } catch (error) {
221
- const message = typeof error === 'string' ? error : error === null || error === void 0 ? void 0 : error.message;
222
- if (/user rejected request/i.test(message)) throw new getProvider.UserRejectedRequestError(error);
223
- throw new getProvider.SwitchChainError(error);
224
- }
225
- }
226
-
227
- exports.WalletConnectConnector = WalletConnectConnector;
@@ -1,205 +0,0 @@
1
- import { m as Connector, _ as _classPrivateMethodInitSpec, t as _defineProperty, v as _classPrivateFieldInitSpec, n as normalizeChainId, g as getClient, u as _classPrivateMethodGet, U as UserRejectedRequestError, x as _classPrivateFieldGet, w as _classPrivateFieldSet, q as SwitchChainError } from '../../../dist/getProvider-b69e06ef.esm.js';
2
- import { providers } from 'ethers';
3
- import { getAddress, hexValue } from 'ethers/lib/utils';
4
- import 'zustand/middleware';
5
- import 'zustand/vanilla';
6
- import 'eventemitter3';
7
- import '../../../dist/chains-8fce19d8.esm.js';
8
- import '../../../dist/rpcs-d533516e.esm.js';
9
-
10
- /**
11
- * Wallets that support chain switching through WalletConnect
12
- * - imToken (token.im)
13
- * - MetaMask (metamask.io)
14
- * - Rainbow (rainbow.me)
15
- */
16
-
17
- const switchChainAllowedRegex = /(imtoken|metamask|rainbow)/i;
18
-
19
- var _provider = /*#__PURE__*/new WeakMap();
20
-
21
- var _switchChain = /*#__PURE__*/new WeakSet();
22
-
23
- class WalletConnectConnector extends Connector {
24
- constructor(config) {
25
- super(config);
26
-
27
- _classPrivateMethodInitSpec(this, _switchChain);
28
-
29
- _defineProperty(this, "id", 'walletConnect');
30
-
31
- _defineProperty(this, "name", 'WalletConnect');
32
-
33
- _defineProperty(this, "ready", true);
34
-
35
- _classPrivateFieldInitSpec(this, _provider, {
36
- writable: true,
37
- value: void 0
38
- });
39
-
40
- _defineProperty(this, "onAccountsChanged", accounts => {
41
- if (accounts.length === 0) this.emit('disconnect');else this.emit('change', {
42
- account: getAddress(accounts[0])
43
- });
44
- });
45
-
46
- _defineProperty(this, "onChainChanged", chainId => {
47
- const id = normalizeChainId(chainId);
48
- const unsupported = this.isChainUnsupported(id);
49
- this.emit('change', {
50
- chain: {
51
- id,
52
- unsupported
53
- }
54
- });
55
- });
56
-
57
- _defineProperty(this, "onDisconnect", () => {
58
- this.emit('disconnect');
59
- });
60
- }
61
-
62
- async connect() {
63
- let {
64
- chainId
65
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
66
-
67
- try {
68
- var _provider$connector, _provider$connector$p;
69
-
70
- let targetChainId = chainId;
71
-
72
- if (!targetChainId) {
73
- const lastUsedChainId = getClient().lastUsedChainId;
74
- if (lastUsedChainId && !this.isChainUnsupported(lastUsedChainId)) targetChainId = lastUsedChainId;
75
- }
76
-
77
- const provider = await this.getProvider({
78
- chainId: targetChainId,
79
- create: true
80
- });
81
- provider.on('accountsChanged', this.onAccountsChanged);
82
- provider.on('chainChanged', this.onChainChanged);
83
- provider.on('disconnect', this.onDisconnect); // Defer message to the next tick to ensure wallet connect data (provided by `.enable()`) is available
84
-
85
- setTimeout(() => this.emit('message', {
86
- type: 'connecting'
87
- }), 0);
88
- const accounts = await provider.enable();
89
- const account = getAddress(accounts[0]);
90
- const id = await this.getChainId();
91
- const unsupported = this.isChainUnsupported(id); // Not all WalletConnect options support programmatic chain switching
92
- // Only enable for wallet options that do
93
-
94
- const walletName = ((_provider$connector = provider.connector) === null || _provider$connector === void 0 ? void 0 : (_provider$connector$p = _provider$connector.peerMeta) === null || _provider$connector$p === void 0 ? void 0 : _provider$connector$p.name) ?? '';
95
- if (switchChainAllowedRegex.test(walletName)) this.switchChain = _classPrivateMethodGet(this, _switchChain, _switchChain2);
96
- return {
97
- account,
98
- chain: {
99
- id,
100
- unsupported
101
- },
102
- provider: new providers.Web3Provider(provider)
103
- };
104
- } catch (error) {
105
- if (/user closed modal/i.test(error.message)) throw new UserRejectedRequestError(error);
106
- throw error;
107
- }
108
- }
109
-
110
- async disconnect() {
111
- const provider = await this.getProvider();
112
- await provider.disconnect();
113
- provider.removeListener('accountsChanged', this.onAccountsChanged);
114
- provider.removeListener('chainChanged', this.onChainChanged);
115
- provider.removeListener('disconnect', this.onDisconnect);
116
- typeof localStorage !== 'undefined' && localStorage.removeItem('walletconnect');
117
- }
118
-
119
- async getAccount() {
120
- const provider = await this.getProvider();
121
- const accounts = provider.accounts; // return checksum address
122
-
123
- return getAddress(accounts[0]);
124
- }
125
-
126
- async getChainId() {
127
- const provider = await this.getProvider();
128
- const chainId = normalizeChainId(provider.chainId);
129
- return chainId;
130
- }
131
-
132
- async getProvider() {
133
- let {
134
- chainId,
135
- create
136
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
137
-
138
- // Force create new provider
139
- if (!_classPrivateFieldGet(this, _provider) || chainId || create) {
140
- var _this$options, _this$options2;
141
-
142
- const rpc = !((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.infuraId) ? this.chains.reduce((rpc, chain) => ({ ...rpc,
143
- [chain.id]: chain.rpcUrls.default
144
- }), {}) : {};
145
- const WalletConnectProvider = (await import('@walletconnect/ethereum-provider')).default;
146
-
147
- _classPrivateFieldSet(this, _provider, new WalletConnectProvider({ ...this.options,
148
- chainId,
149
- rpc: { ...rpc,
150
- ...((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.rpc)
151
- }
152
- }));
153
- }
154
-
155
- return _classPrivateFieldGet(this, _provider);
156
- }
157
-
158
- async getSigner() {
159
- let {
160
- chainId
161
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
162
- const [provider, account] = await Promise.all([this.getProvider({
163
- chainId
164
- }), this.getAccount()]);
165
- return new providers.Web3Provider(provider, chainId).getSigner(account);
166
- }
167
-
168
- async isAuthorized() {
169
- try {
170
- const account = await this.getAccount();
171
- return !!account;
172
- } catch {
173
- return false;
174
- }
175
- }
176
-
177
- }
178
-
179
- async function _switchChain2(chainId) {
180
- const provider = await this.getProvider();
181
- const id = hexValue(chainId);
182
-
183
- try {
184
- await provider.request({
185
- method: 'wallet_switchEthereumChain',
186
- params: [{
187
- chainId: id
188
- }]
189
- });
190
- return this.chains.find(x => x.id === chainId) ?? {
191
- id: chainId,
192
- name: `Chain ${id}`,
193
- network: `${id}`,
194
- rpcUrls: {
195
- default: ''
196
- }
197
- };
198
- } catch (error) {
199
- const message = typeof error === 'string' ? error : error === null || error === void 0 ? void 0 : error.message;
200
- if (/user rejected request/i.test(message)) throw new UserRejectedRequestError(error);
201
- throw new SwitchChainError(error);
202
- }
203
- }
204
-
205
- export { WalletConnectConnector };