@wagmi/core 0.2.0-next.9 → 0.2.2

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 (101) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +30 -0
  3. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.d.ts +1 -11
  4. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +234 -0
  5. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.js +6 -15
  6. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +234 -0
  7. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +212 -0
  8. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.d.ts +1 -0
  9. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +62 -0
  10. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.js +7 -0
  11. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +62 -0
  12. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +58 -0
  13. package/connectors/metaMask/package.json +4 -0
  14. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.d.ts +1 -11
  15. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +250 -0
  16. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.js +6 -15
  17. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +250 -0
  18. package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +241 -0
  19. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.d.ts +1 -11
  20. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +183 -0
  21. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.js +6 -15
  22. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +183 -0
  23. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +161 -0
  24. package/dist/base-159de546.esm.js +513 -0
  25. package/dist/base-5812b724.cjs.dev.js +540 -0
  26. package/dist/base-59f3457e.cjs.prod.js +540 -0
  27. package/dist/classPrivateMethodGet-55c9909f.esm.js +16 -0
  28. package/dist/classPrivateMethodGet-976c8120.cjs.dev.js +19 -0
  29. package/dist/classPrivateMethodGet-d7330ed7.cjs.prod.js +19 -0
  30. package/dist/client-4d8337e7.cjs.prod.js +606 -0
  31. package/dist/client-5d456446.esm.js +595 -0
  32. package/dist/client-f77a08e4.cjs.dev.js +606 -0
  33. package/dist/declarations/src/actions/accounts/connect.d.ts +16 -0
  34. package/dist/declarations/src/actions/accounts/disconnect.d.ts +1 -0
  35. package/dist/declarations/src/actions/accounts/fetchBalance.d.ts +20 -0
  36. package/dist/declarations/src/actions/accounts/fetchSigner.d.ts +3 -0
  37. package/dist/declarations/src/actions/accounts/getAccount.d.ts +7 -0
  38. package/dist/declarations/src/actions/accounts/getNetwork.d.ts +9 -0
  39. package/dist/declarations/src/actions/accounts/index.d.ts +12 -0
  40. package/dist/declarations/src/actions/accounts/signMessage.d.ts +9 -0
  41. package/dist/declarations/src/actions/accounts/signTypedData.d.ts +13 -0
  42. package/dist/declarations/src/actions/accounts/switchNetwork.d.ts +6 -0
  43. package/dist/declarations/src/actions/accounts/watchAccount.d.ts +4 -0
  44. package/dist/declarations/src/actions/accounts/watchNetwork.d.ts +3 -0
  45. package/dist/declarations/src/actions/accounts/watchSigner.d.ts +3 -0
  46. package/dist/declarations/src/actions/contracts/getContract.d.ts +11 -0
  47. package/dist/declarations/src/actions/contracts/index.d.ts +5 -0
  48. package/dist/declarations/src/actions/contracts/readContract.d.ts +14 -0
  49. package/dist/declarations/src/actions/contracts/watchContractEvent.d.ts +14 -0
  50. package/dist/declarations/src/actions/contracts/watchReadContract.d.ts +7 -0
  51. package/dist/declarations/src/actions/contracts/writeContract.d.ts +11 -0
  52. package/dist/declarations/src/actions/ens/fetchEnsAddress.d.ts +8 -0
  53. package/dist/declarations/src/actions/ens/fetchEnsAvatar.d.ts +8 -0
  54. package/dist/declarations/src/actions/ens/fetchEnsName.d.ts +8 -0
  55. package/dist/declarations/src/actions/ens/fetchEnsResolver.d.ts +9 -0
  56. package/dist/declarations/src/actions/ens/index.d.ts +4 -0
  57. package/dist/declarations/src/actions/index.d.ts +7 -0
  58. package/dist/declarations/src/actions/network-status/fetchBlockNumber.d.ts +5 -0
  59. package/dist/declarations/src/actions/network-status/fetchFeeData.d.ts +16 -0
  60. package/dist/declarations/src/actions/network-status/index.d.ts +3 -0
  61. package/dist/declarations/src/actions/network-status/watchBlockNumber.d.ts +6 -0
  62. package/dist/declarations/src/actions/providers/getProvider.d.ts +7 -0
  63. package/dist/declarations/src/actions/providers/getWebSocketProvider.d.ts +7 -0
  64. package/dist/declarations/src/actions/providers/index.d.ts +4 -0
  65. package/dist/declarations/src/actions/providers/watchProvider.d.ts +4 -0
  66. package/dist/declarations/src/actions/providers/watchWebSocketProvider.d.ts +4 -0
  67. package/dist/declarations/src/actions/tokens/fetchToken.d.ts +20 -0
  68. package/dist/declarations/src/actions/tokens/index.d.ts +1 -0
  69. package/dist/declarations/src/actions/transactions/index.d.ts +2 -0
  70. package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +7 -0
  71. package/dist/declarations/src/actions/transactions/waitForTransaction.d.ts +17 -0
  72. package/dist/declarations/src/client.d.ts +81 -0
  73. package/dist/declarations/src/connectors/base.d.ts +55 -0
  74. package/dist/declarations/src/connectors/coinbaseWallet.d.ts +52 -0
  75. package/dist/declarations/src/connectors/index.d.ts +2 -0
  76. package/dist/declarations/src/connectors/injected.d.ts +48 -0
  77. package/dist/declarations/src/connectors/metaMask.d.ts +13 -0
  78. package/dist/declarations/src/connectors/mock/connector.d.ts +37 -0
  79. package/dist/declarations/src/connectors/mock/index.d.ts +2 -0
  80. package/dist/declarations/src/connectors/mock/provider.d.ts +42 -0
  81. package/dist/declarations/src/connectors/walletConnect.d.ts +32 -0
  82. package/dist/declarations/src/constants/abis.d.ts +2 -0
  83. package/dist/declarations/src/constants/blockExplorers.d.ts +9 -0
  84. package/dist/declarations/src/constants/chains.d.ts +21 -0
  85. package/dist/declarations/src/constants/index.d.ts +7 -0
  86. package/dist/declarations/src/constants/rpcs.d.ts +9 -0
  87. package/dist/declarations/src/constants/units.d.ts +1 -0
  88. package/dist/declarations/src/errors.d.ts +28 -0
  89. package/dist/declarations/src/index.d.ts +12 -0
  90. package/dist/declarations/src/storage.d.ts +12 -0
  91. package/dist/declarations/src/types/index.d.ts +101 -0
  92. package/dist/declarations/src/utils/getInjectedName.d.ts +1 -0
  93. package/dist/declarations/src/utils/index.d.ts +3 -0
  94. package/dist/declarations/src/utils/normalizeChainId.d.ts +1 -0
  95. package/dist/declarations/src/utils/warn.d.ts +1 -0
  96. package/dist/wagmi-core.cjs.d.ts +1 -11
  97. package/dist/wagmi-core.cjs.dev.js +653 -0
  98. package/dist/wagmi-core.cjs.js +6 -15
  99. package/dist/wagmi-core.cjs.prod.js +653 -0
  100. package/dist/wagmi-core.esm.js +593 -0
  101. package/package.json +24 -12
@@ -0,0 +1,593 @@
1
+ import { c as client, g as getClient } from './client-5d456446.esm.js';
2
+ export { C as Client, I as InjectedConnector, C as WagmiClient, a as createClient, b as createStorage, a as createWagmiClient, b as createWagmiStorage, n as noopStorage } from './client-5d456446.esm.js';
3
+ import { C as ConnectorAlreadyConnectedError, a as allChains, b as ConnectorNotFoundError, U as UserRejectedRequestError, S as SwitchChainNotSupportedError } from './base-159de546.esm.js';
4
+ export { A as AddChainError, k as ChainNotConfiguredError, c as Connector, C as ConnectorAlreadyConnectedError, b as ConnectorNotFoundError, l as SwitchChainError, S as SwitchChainNotSupportedError, U as UserRejectedRequestError, d as alchemyRpcUrls, a as allChains, e as chain, f as chainId, g as defaultChains, h as defaultL2Chains, i as etherscanBlockExplorers, j as infuraRpcUrls, n as normalizeChainId } from './base-159de546.esm.js';
5
+ import { Contract } from 'ethers/lib/ethers';
6
+ import { formatUnits, getAddress } from 'ethers/lib/utils';
7
+ import './classPrivateMethodGet-55c9909f.esm.js';
8
+ import 'ethers';
9
+ import 'zustand/vanilla';
10
+ import 'zustand/middleware';
11
+ import 'eventemitter3';
12
+
13
+ // https://ethereum.org/en/developers/docs/standards/tokens/erc-20
14
+ const erc20ABI = ['event Approval(address indexed _owner, address indexed _spender, uint256 _value)', 'event Transfer(address indexed _from, address indexed _to, uint256 _value)', 'function allowance(address _owner, address _spender) public view returns (uint256 remaining)', 'function approve(address _spender, uint256 _value) public returns (bool success)', 'function balanceOf(address _owner) public view returns (uint256 balance)', 'function decimals() public view returns (uint8)', 'function name() public view returns (string)', 'function symbol() public view returns (string)', 'function totalSupply() public view returns (uint256)', 'function transfer(address _to, uint256 _value) public returns (bool success)', 'function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)']; // https://ethereum.org/en/developers/docs/standards/tokens/erc-721
15
+
16
+ const erc721ABI = ['event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);', 'event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);', 'event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);', 'function approve(address _approved, uint256 _tokenId) external payable;', 'function balanceOf(address _owner) external view returns (uint256);', 'function getApproved(uint256 _tokenId) external view returns (address);', 'function isApprovedForAll(address _owner, address _operator) external view returns (bool);', 'function name() view returns (string memory)', 'function ownerOf(uint256 _tokenId) external view returns (address);', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;', 'function setApprovalForAll(address _operator, bool _approved) external;', 'function symbol() view returns (string memory)', 'function tokenByIndex(uint256 _index) view returns (uint256)', 'function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns (uint256 tokenId)', 'function tokenURI(uint256 _tokenId) view returns (string memory)', 'function totalSupply() view returns (uint256)', 'function transferFrom(address _from, address _to, uint256 _tokenId) external payable;'];
17
+
18
+ // https://github.com/ethers-io/ethers.js/blob/master/packages/units/src.ts/index.ts#L10-L18
19
+ const units = ['wei', 'kwei', 'mwei', 'gwei', 'szabo', 'finney', 'ether'];
20
+
21
+ async function connect(_ref) {
22
+ let {
23
+ connector
24
+ } = _ref;
25
+ const activeConnector = client.connector;
26
+ if (connector.id === (activeConnector === null || activeConnector === void 0 ? void 0 : activeConnector.id)) throw new ConnectorAlreadyConnectedError();
27
+ const data = await connector.connect();
28
+ client.setLastUsedConnector(connector.id);
29
+ client.setState(x => ({ ...x,
30
+ connector,
31
+ chains: connector === null || connector === void 0 ? void 0 : connector.chains,
32
+ data
33
+ }));
34
+ client.storage.setItem('connected', true);
35
+ return { ...data,
36
+ connector
37
+ };
38
+ }
39
+
40
+ async function disconnect() {
41
+ const client = getClient();
42
+ if (client.connector) await client.connector.disconnect();
43
+ client.clearState();
44
+ client.storage.removeItem('connected');
45
+ }
46
+
47
+ function getProvider() {
48
+ let {
49
+ chainId
50
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
51
+ const client = getClient();
52
+ if (chainId && typeof client.config.provider === 'function') return client.config.provider({
53
+ chainId
54
+ });
55
+ return client.provider;
56
+ }
57
+
58
+ function getWebSocketProvider() {
59
+ let {
60
+ chainId
61
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
62
+ const client = getClient();
63
+ if (chainId && typeof client.config.webSocketProvider === 'function') return client.config.webSocketProvider({
64
+ chainId
65
+ });
66
+ return client.webSocketProvider;
67
+ }
68
+
69
+ function watchProvider(args, callback) {
70
+ const client = getClient();
71
+
72
+ const handleChange = async () => callback(getProvider(args));
73
+
74
+ const unsubscribe = client.subscribe(_ref => {
75
+ let {
76
+ provider
77
+ } = _ref;
78
+ return provider;
79
+ }, handleChange);
80
+ return unsubscribe;
81
+ }
82
+
83
+ function watchWebSocketProvider(args, callback) {
84
+ const client = getClient();
85
+
86
+ const handleChange = async () => callback(getWebSocketProvider(args));
87
+
88
+ const unsubscribe = client.subscribe(_ref => {
89
+ let {
90
+ webSocketProvider
91
+ } = _ref;
92
+ return webSocketProvider;
93
+ }, handleChange);
94
+ return unsubscribe;
95
+ }
96
+
97
+ async function fetchBalance(_ref) {
98
+ var _client$connector$cha, _client$connector, _chain$nativeCurrency, _chain$nativeCurrency2, _chain$nativeCurrency3, _chain$nativeCurrency4;
99
+
100
+ let {
101
+ addressOrName,
102
+ chainId,
103
+ formatUnits: unit = 'ether',
104
+ token
105
+ } = _ref;
106
+ const client = getClient();
107
+ const provider = getProvider({
108
+ chainId
109
+ });
110
+
111
+ if (token) {
112
+ const contract = new Contract(token, erc20ABI, provider);
113
+ const [value, decimals, symbol] = await Promise.all([contract.balanceOf(addressOrName), contract.decimals(), contract.symbol()]);
114
+ return {
115
+ decimals,
116
+ formatted: formatUnits(value, unit),
117
+ symbol,
118
+ unit,
119
+ value
120
+ };
121
+ }
122
+
123
+ const chains = [...((_client$connector$cha = (_client$connector = client.connector) === null || _client$connector === void 0 ? void 0 : _client$connector.chains) !== null && _client$connector$cha !== void 0 ? _client$connector$cha : []), ...allChains];
124
+ const value = await provider.getBalance(addressOrName);
125
+ const chain = chains.find(x => x.id === provider.network.chainId);
126
+ return {
127
+ decimals: (_chain$nativeCurrency = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency2 = chain.nativeCurrency) === null || _chain$nativeCurrency2 === void 0 ? void 0 : _chain$nativeCurrency2.decimals) !== null && _chain$nativeCurrency !== void 0 ? _chain$nativeCurrency : 18,
128
+ formatted: formatUnits(value, unit),
129
+ symbol: (_chain$nativeCurrency3 = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency4 = chain.nativeCurrency) === null || _chain$nativeCurrency4 === void 0 ? void 0 : _chain$nativeCurrency4.symbol) !== null && _chain$nativeCurrency3 !== void 0 ? _chain$nativeCurrency3 : 'ETH',
130
+ unit,
131
+ value
132
+ };
133
+ }
134
+
135
+ async function fetchSigner() {
136
+ var _client$connector, _client$connector$get;
137
+
138
+ const client = getClient();
139
+ const signer = (await ((_client$connector = client.connector) === null || _client$connector === void 0 ? void 0 : (_client$connector$get = _client$connector.getSigner) === null || _client$connector$get === void 0 ? void 0 : _client$connector$get.call(_client$connector))) || null;
140
+ return signer;
141
+ }
142
+
143
+ function getAccount() {
144
+ const {
145
+ data,
146
+ connector
147
+ } = getClient();
148
+ return {
149
+ address: data === null || data === void 0 ? void 0 : data.account,
150
+ connector
151
+ };
152
+ }
153
+
154
+ function getNetwork() {
155
+ var _client$data, _client$data$chain, _client$chains, _find, _client$data2;
156
+
157
+ const client = getClient();
158
+ const chainId = (_client$data = client.data) === null || _client$data === void 0 ? void 0 : (_client$data$chain = _client$data.chain) === null || _client$data$chain === void 0 ? void 0 : _client$data$chain.id;
159
+ const activeChains = (_client$chains = client.chains) !== null && _client$chains !== void 0 ? _client$chains : [];
160
+ const activeChain = (_find = [...activeChains, ...allChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
161
+ id: chainId,
162
+ name: "Chain ".concat(chainId),
163
+ rpcUrls: {
164
+ default: ''
165
+ }
166
+ };
167
+ return {
168
+ chain: chainId ? { ...activeChain,
169
+ ...((_client$data2 = client.data) === null || _client$data2 === void 0 ? void 0 : _client$data2.chain),
170
+ id: chainId
171
+ } : undefined,
172
+ chains: activeChains
173
+ };
174
+ }
175
+
176
+ async function signMessage(args) {
177
+ try {
178
+ const signer = await fetchSigner();
179
+ if (!signer) throw new ConnectorNotFoundError();
180
+ return await signer.signMessage(args.message);
181
+ } catch (error_) {
182
+ let error = error_;
183
+ if (error_.code === 4001) error = new UserRejectedRequestError();
184
+ throw error;
185
+ }
186
+ }
187
+
188
+ async function signTypedData(args) {
189
+ try {
190
+ const signer = await fetchSigner();
191
+ if (!signer) throw new ConnectorNotFoundError(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
192
+
193
+ return await signer._signTypedData(args.domain, args.types, args.value);
194
+ } catch (error_) {
195
+ let error = error_;
196
+ if (error_.code === 4001) error = new UserRejectedRequestError();
197
+ throw error;
198
+ }
199
+ }
200
+
201
+ async function switchNetwork(_ref) {
202
+ var _client$connector;
203
+
204
+ let {
205
+ chainId
206
+ } = _ref;
207
+ const client = getClient();
208
+ if (!((_client$connector = client.connector) !== null && _client$connector !== void 0 && _client$connector.switchChain)) throw new SwitchChainNotSupportedError();
209
+ const chain = await client.connector.switchChain(chainId);
210
+ return chain;
211
+ }
212
+
213
+ function watchAccount(callback) {
214
+ const client = getClient();
215
+
216
+ const handleChange = () => callback(getAccount());
217
+
218
+ const unsubscribe = client.subscribe(_ref => {
219
+ let {
220
+ data,
221
+ connector
222
+ } = _ref;
223
+ return {
224
+ account: data === null || data === void 0 ? void 0 : data.account,
225
+ connector
226
+ };
227
+ }, handleChange, {
228
+ equalityFn: (selected, previous) => selected.account === previous.account && selected.connector === previous.connector
229
+ });
230
+ return unsubscribe;
231
+ }
232
+
233
+ function watchNetwork(callback) {
234
+ const client = getClient();
235
+
236
+ const handleChange = () => callback(getNetwork());
237
+
238
+ const unsubscribe = client.subscribe(_ref => {
239
+ var _data$chain;
240
+
241
+ let {
242
+ data,
243
+ chains
244
+ } = _ref;
245
+ return {
246
+ chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
247
+ chains
248
+ };
249
+ }, handleChange, {
250
+ equalityFn: (selected, previous) => selected.chainId === previous.chainId && selected.chains === previous.chains
251
+ });
252
+ return unsubscribe;
253
+ }
254
+
255
+ function watchSigner(callback) {
256
+ const client = getClient();
257
+
258
+ const handleChange = async () => callback(await fetchSigner());
259
+
260
+ const unsubscribe = client.subscribe(_ref => {
261
+ var _data$chain;
262
+
263
+ let {
264
+ data,
265
+ connector
266
+ } = _ref;
267
+ return {
268
+ account: data === null || data === void 0 ? void 0 : data.account,
269
+ chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
270
+ connector
271
+ };
272
+ }, handleChange, {
273
+ equalityFn: (selected, previous) => selected.account === previous.account && selected.chainId === previous.chainId && selected.connector === previous.connector
274
+ });
275
+ return unsubscribe;
276
+ }
277
+
278
+ function getContract(_ref) {
279
+ let {
280
+ addressOrName,
281
+ contractInterface,
282
+ signerOrProvider
283
+ } = _ref;
284
+ return new Contract(addressOrName, contractInterface, signerOrProvider);
285
+ }
286
+
287
+ async function readContract(contractConfig, functionName) {
288
+ let {
289
+ args,
290
+ chainId,
291
+ overrides
292
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
293
+ const provider = getProvider({
294
+ chainId
295
+ });
296
+ const contract = getContract({
297
+ signerOrProvider: provider,
298
+ ...contractConfig
299
+ });
300
+ const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
301
+ const contractFunction = contract[functionName];
302
+ if (!contractFunction) console.warn("\"".concat(functionName, "\" does not in interface for contract \"").concat(contractConfig.addressOrName, "\""));
303
+ const response = await (contractFunction === null || contractFunction === void 0 ? void 0 : contractFunction(...params));
304
+ return response;
305
+ }
306
+
307
+ function watchContractEvent(
308
+ /** Contract configuration */
309
+ contractArgs,
310
+ /** Event name to listen to */
311
+ eventName, callback) {
312
+ let {
313
+ chainId,
314
+ once
315
+ } = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
316
+ let contract;
317
+
318
+ const watchEvent = async () => {
319
+ if (contract) {
320
+ var _contract;
321
+
322
+ (_contract = contract) === null || _contract === void 0 ? void 0 : _contract.off(eventName, callback);
323
+ }
324
+
325
+ contract = getContract({
326
+ signerOrProvider: getWebSocketProvider({
327
+ chainId
328
+ }) || getProvider({
329
+ chainId
330
+ }),
331
+ ...contractArgs
332
+ });
333
+ if (once) contract.once(eventName, callback);else contract.on(eventName, callback);
334
+ };
335
+
336
+ watchEvent();
337
+ const client = getClient();
338
+ const unsubscribe = client.subscribe(_ref => {
339
+ let {
340
+ provider,
341
+ webSocketProvider
342
+ } = _ref;
343
+ return {
344
+ provider,
345
+ webSocketProvider
346
+ };
347
+ }, watchEvent, {
348
+ equalityFn: (selected, previous) => selected.provider === previous.provider && selected.webSocketProvider === previous.webSocketProvider
349
+ });
350
+ return () => {
351
+ var _contract2;
352
+
353
+ (_contract2 = contract) === null || _contract2 === void 0 ? void 0 : _contract2.off(eventName, callback);
354
+ unsubscribe();
355
+ };
356
+ }
357
+
358
+ async function fetchBlockNumber() {
359
+ let {
360
+ chainId
361
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
362
+ const provider = getProvider({
363
+ chainId
364
+ });
365
+ const blockNumber = await provider.getBlockNumber();
366
+ return blockNumber;
367
+ }
368
+
369
+ function watchBlockNumber(args, callback) {
370
+ var _client$webSocketProv;
371
+
372
+ let prevProvider;
373
+
374
+ const createListener = provider => {
375
+ if (prevProvider) {
376
+ var _prevProvider;
377
+
378
+ (_prevProvider = prevProvider) === null || _prevProvider === void 0 ? void 0 : _prevProvider.off('block', callback);
379
+ }
380
+
381
+ provider.on('block', callback);
382
+ prevProvider = provider;
383
+ };
384
+
385
+ const client = getClient();
386
+ const provider_ = (_client$webSocketProv = client.webSocketProvider) !== null && _client$webSocketProv !== void 0 ? _client$webSocketProv : client.provider;
387
+ if (args.listen) createListener(provider_);
388
+ const unsubscribe = client.subscribe(_ref => {
389
+ let {
390
+ provider,
391
+ webSocketProvider
392
+ } = _ref;
393
+ return {
394
+ provider,
395
+ webSocketProvider
396
+ };
397
+ }, async _ref2 => {
398
+ let {
399
+ provider,
400
+ webSocketProvider
401
+ } = _ref2;
402
+ const provider_ = webSocketProvider !== null && webSocketProvider !== void 0 ? webSocketProvider : provider;
403
+
404
+ if (args.listen && provider_) {
405
+ createListener(provider_);
406
+ }
407
+
408
+ callback(await fetchBlockNumber());
409
+ }, {
410
+ equalityFn: (selected, previous) => selected.provider === previous.provider && selected.webSocketProvider === previous.webSocketProvider
411
+ });
412
+ return () => {
413
+ unsubscribe();
414
+ provider_ === null || provider_ === void 0 ? void 0 : provider_.off('block', callback);
415
+ };
416
+ }
417
+
418
+ function watchReadContract(contractConfig, functionName) {
419
+ let config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
420
+ let callback = arguments.length > 3 ? arguments[3] : undefined;
421
+ const client = getClient();
422
+
423
+ const handleChange = async () => callback(await readContract(contractConfig, functionName, config));
424
+
425
+ const unwatch = config.listenToBlock ? watchBlockNumber({
426
+ listen: true
427
+ }, handleChange) : undefined;
428
+ const unsubscribe = client.subscribe(_ref => {
429
+ let {
430
+ provider
431
+ } = _ref;
432
+ return provider;
433
+ }, handleChange);
434
+ return () => {
435
+ unsubscribe();
436
+ unwatch === null || unwatch === void 0 ? void 0 : unwatch();
437
+ };
438
+ }
439
+
440
+ async function writeContract(contractConfig, functionName) {
441
+ let {
442
+ args,
443
+ overrides
444
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
445
+ const client = getClient();
446
+ if (!client.connector) throw new ConnectorNotFoundError();
447
+ const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
448
+
449
+ try {
450
+ const signer = await client.connector.getSigner();
451
+ const contract = getContract(contractConfig);
452
+ const contractWithSigner = contract.connect(signer);
453
+ const contractFunction = contractWithSigner[functionName];
454
+ if (!contractFunction) console.warn("\"".concat(functionName, "\" does not in interface for contract \"").concat(contractConfig.addressOrName, "\""));
455
+ const response = await contractFunction(...params);
456
+ return response;
457
+ } catch (error_) {
458
+ let error = error_;
459
+ if (error_.code === 4001) error = new UserRejectedRequestError();
460
+ throw error;
461
+ }
462
+ }
463
+
464
+ async function fetchEnsAddress(_ref) {
465
+ let {
466
+ chainId,
467
+ name
468
+ } = _ref;
469
+ const provider = getProvider({
470
+ chainId
471
+ });
472
+ const address = await provider.resolveName(name);
473
+
474
+ try {
475
+ return address ? getAddress(address) : null;
476
+ } catch (_error) {
477
+ return null;
478
+ }
479
+ }
480
+
481
+ async function fetchEnsAvatar(_ref) {
482
+ let {
483
+ addressOrName,
484
+ chainId
485
+ } = _ref;
486
+ const provider = getProvider({
487
+ chainId
488
+ }); // TODO: Update with more advanced logic
489
+ // https://github.com/ensdomains/ens-avatar
490
+
491
+ const avatar = await provider.getAvatar(addressOrName);
492
+ return avatar;
493
+ }
494
+
495
+ async function fetchEnsName(_ref) {
496
+ let {
497
+ address,
498
+ chainId
499
+ } = _ref;
500
+ const provider = getProvider({
501
+ chainId
502
+ });
503
+ return await provider.lookupAddress(address);
504
+ }
505
+
506
+ async function fetchEnsResolver(_ref) {
507
+ let {
508
+ chainId,
509
+ name
510
+ } = _ref;
511
+ const provider = getProvider({
512
+ chainId
513
+ });
514
+ const resolver = await provider.getResolver(name);
515
+ return resolver;
516
+ }
517
+
518
+ async function fetchFeeData() {
519
+ let {
520
+ chainId,
521
+ formatUnits: units = 'wei'
522
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
523
+ const provider = getProvider({
524
+ chainId
525
+ });
526
+ const feeData = await provider.getFeeData();
527
+ const formatted = {
528
+ gasPrice: formatUnits(feeData.gasPrice, units),
529
+ maxFeePerGas: formatUnits(feeData.maxFeePerGas, units),
530
+ maxPriorityFeePerGas: formatUnits(feeData.maxPriorityFeePerGas, units)
531
+ };
532
+ return { ...feeData,
533
+ formatted
534
+ };
535
+ }
536
+
537
+ async function fetchToken(_ref) {
538
+ let {
539
+ address,
540
+ chainId,
541
+ formatUnits: units = 'ether'
542
+ } = _ref;
543
+ const provider = getProvider({
544
+ chainId
545
+ });
546
+ const contract = new Contract(address, erc20ABI, provider);
547
+ const [symbol, decimals, totalSupply] = await Promise.all([contract.symbol(), contract.decimals(), contract.totalSupply()]);
548
+ const token = {
549
+ address,
550
+ decimals,
551
+ symbol,
552
+ totalSupply: {
553
+ formatted: formatUnits(totalSupply, units),
554
+ value: totalSupply
555
+ }
556
+ };
557
+ return token;
558
+ }
559
+
560
+ async function sendTransaction(args) {
561
+ try {
562
+ const signer = await fetchSigner();
563
+ if (!signer) throw new ConnectorNotFoundError();
564
+ const transaction = await signer.sendTransaction(args.request);
565
+ return transaction;
566
+ } catch (error_) {
567
+ let error = error_;
568
+ if (error_.code === 4001) error = new UserRejectedRequestError();
569
+ throw error;
570
+ }
571
+ }
572
+
573
+ async function waitForTransaction(_ref) {
574
+ let {
575
+ chainId,
576
+ confirmations,
577
+ hash,
578
+ timeout,
579
+ wait: wait_
580
+ } = _ref;
581
+ let promise;
582
+
583
+ if (hash) {
584
+ const provider = getProvider({
585
+ chainId
586
+ });
587
+ promise = provider.waitForTransaction(hash, confirmations, timeout);
588
+ } else if (wait_) promise = wait_(confirmations);else throw new Error('hash or wait is required');
589
+
590
+ return await promise;
591
+ }
592
+
593
+ export { connect, disconnect, erc20ABI, erc721ABI, fetchBalance, fetchBlockNumber, fetchEnsAddress, fetchEnsAvatar, fetchEnsName, fetchEnsResolver, fetchFeeData, fetchSigner, fetchToken, getAccount, getContract, getNetwork, getProvider, getWebSocketProvider, readContract, sendTransaction, signMessage, signTypedData, switchNetwork, units, waitForTransaction, watchAccount, watchBlockNumber, watchContractEvent, watchNetwork, watchProvider, watchReadContract, watchSigner, watchWebSocketProvider, writeContract };
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@wagmi/core",
3
- "description": "Vanilla JS Client for Ethereum",
4
- "license": "MIT",
5
- "version": "0.2.0-next.9",
3
+ "description": "Vanilla JS library for Ethereum",
4
+ "license": "WAGMIT",
5
+ "version": "0.2.2",
6
+ "author": "awkweb.eth",
6
7
  "ethereum": "awkweb.eth",
7
8
  "repository": "tmm/wagmi",
8
9
  "sideEffects": false,
@@ -18,6 +19,10 @@
18
19
  "module": "./connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js",
19
20
  "default": "./connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.js"
20
21
  },
22
+ "./connectors/metaMask": {
23
+ "module": "./connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js",
24
+ "default": "./connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.js"
25
+ },
21
26
  "./connectors/mock": {
22
27
  "module": "./connectors/mock/dist/wagmi-core-connectors-mock.esm.js",
23
28
  "default": "./connectors/mock/dist/wagmi-core-connectors-mock.cjs.js"
@@ -29,20 +34,19 @@
29
34
  },
30
35
  "files": [
31
36
  "/dist",
32
- "/connectors/mock/",
33
- "/connectors/walletConnect/",
34
- "/connectors/coinbaseWallet/"
37
+ "/connectors"
35
38
  ],
36
39
  "preconstruct": {
37
40
  "entrypoints": [
38
41
  "index.ts",
39
42
  "connectors/coinbaseWallet.ts",
43
+ "connectors/metaMask.ts",
40
44
  "connectors/walletConnect.ts",
41
45
  "connectors/mock/index.ts"
42
46
  ]
43
47
  },
44
48
  "peerDependencies": {
45
- "@coinbase/wallet-sdk": ">=3.0.1",
49
+ "@coinbase/wallet-sdk": ">=3.0.6",
46
50
  "@walletconnect/ethereum-provider": ">=1.7.5",
47
51
  "ethers": ">=5.5.1"
48
52
  },
@@ -56,11 +60,19 @@
56
60
  },
57
61
  "dependencies": {
58
62
  "eventemitter3": "^4.0.7",
59
- "zustand": "^3.7.0"
63
+ "zustand": "^4.0.0-rc.1"
60
64
  },
61
65
  "devDependencies": {
62
- "@coinbase/wallet-sdk": "^3.0.1",
63
- "@walletconnect/ethereum-provider": "1.7.5",
64
- "ethers": "^5.5.1"
65
- }
66
+ "@coinbase/wallet-sdk": "^3.0.11",
67
+ "@walletconnect/ethereum-provider": "^1.7.5",
68
+ "ethers": "^5.6.4"
69
+ },
70
+ "keywords": [
71
+ "eth",
72
+ "ethereum",
73
+ "dapps",
74
+ "wallet",
75
+ "web3"
76
+ ],
77
+ "readme": "# @wagmi/core\n\n## Documentation\n\nFor full documentation and examples, visit [wagmi.sh](https://wagmi.sh).\n\n## Installation\n\nInstall wagmi and its ethers peer dependency.\n\n```bash\nnpm install @wagmi/core ethers\n```\n\n## Community\n\nCheck out the following places for more wagmi-related content:\n\n- Join the [discussions on GitHub](https://github.com/tmm/wagmi/discussions)\n- Follow [@awkweb](https://twitter.com/awkweb) on Twitter for project updates\n- Sign the [guestbook](https://github.com/tmm/wagmi/discussions/2)\n- Share [your project/organization](https://github.com/tmm/wagmi/discussions/201) using wagmi\n\n## Support\n\nIf you find wagmi useful, please consider supporting development. Thank you 🙏\n\n- [awkweb.eth](https://etherscan.io/enslookup-search?search=awkweb.eth)\n- [GitHub Sponsors](https://github.com/sponsors/tmm?metadata_campaign=readme_core)\n- [Gitcoin Grant](https://gitcoin.co/grants/4493/wagmi-react-hooks-library-for-ethereum)\n"
66
78
  }