@wagmi/core 0.4.7 → 0.5.0-prepare-hooks.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.
- package/README.md +4 -4
- package/chains/dist/wagmi-core-chains.cjs.dev.js +1 -1
- package/chains/dist/wagmi-core-chains.cjs.prod.js +1 -1
- package/chains/dist/wagmi-core-chains.esm.js +1 -1
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +29 -26
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +29 -26
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +6 -3
- package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.d.ts +1 -0
- package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.dev.js +200 -0
- package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.js +7 -0
- package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.prod.js +200 -0
- package/connectors/injected/dist/wagmi-core-connectors-injected.esm.js +196 -0
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +21 -22
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +21 -22
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +6 -7
- package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +31 -29
- package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +31 -29
- package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +4 -2
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +23 -24
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +23 -24
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +4 -5
- package/connectors/walletLink/dist/wagmi-core-connectors-walletLink.cjs.d.ts +11 -0
- package/connectors/walletLink/dist/wagmi-core-connectors-walletLink.cjs.js +16 -0
- package/dist/{chains-fd2c546c.esm.js → chains-174cf4b4.esm.js} +3 -3
- package/dist/{chains-f7bb3211.cjs.prod.js → chains-b8e32454.cjs.prod.js} +3 -3
- package/dist/{chains-7e6dc59c.cjs.dev.js → chains-ba6218fb.cjs.dev.js} +3 -3
- package/dist/declarations/src/actions/accounts/fetchSigner.d.ts +3 -3
- package/dist/declarations/src/actions/contracts/index.d.ts +2 -1
- package/dist/declarations/src/actions/contracts/prepareWriteContract.d.ts +37 -0
- package/dist/declarations/src/actions/contracts/writeContract.d.ts +44 -8
- package/dist/declarations/src/actions/ens/fetchEnsAddress.d.ts +2 -1
- package/dist/declarations/src/actions/index.d.ts +2 -2
- package/dist/declarations/src/actions/tokens/fetchToken.d.ts +1 -0
- package/dist/declarations/src/actions/transactions/index.d.ts +2 -1
- package/dist/declarations/src/actions/transactions/prepareSendTransaction.d.ts +36 -0
- package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +43 -8
- package/dist/declarations/src/client.d.ts +3 -3
- package/dist/declarations/src/connectors/base.d.ts +1 -2
- package/dist/declarations/src/connectors/coinbaseWallet.d.ts +1 -1
- package/dist/declarations/src/connectors/index.d.ts +1 -1
- package/dist/declarations/src/connectors/injected.d.ts +4 -4
- package/dist/declarations/src/connectors/metaMask.d.ts +1 -1
- package/dist/declarations/src/connectors/mock/connector.d.ts +1 -1
- package/dist/declarations/src/connectors/mock/provider.d.ts +3 -3
- package/dist/declarations/src/connectors/walletConnect.d.ts +2 -1
- package/dist/declarations/src/errors.d.ts +10 -3
- package/dist/declarations/src/index.d.ts +5 -5
- package/dist/declarations/src/providers/alchemy.d.ts +1 -2
- package/dist/declarations/src/providers/infura.d.ts +1 -2
- package/dist/declarations/src/providers/jsonRpc.d.ts +1 -2
- package/dist/declarations/src/providers/public.d.ts +2 -4
- package/dist/declarations/src/types/index.d.ts +132 -129
- package/dist/declarations/src/utils/configureChains.d.ts +3 -1
- package/dist/declarations/src/utils/getInjectedName.d.ts +2 -1
- package/dist/{client-a05fd511.esm.js → getProvider-048a69c4.esm.js} +380 -13
- package/dist/{client-a6e61429.cjs.prod.js → getProvider-27edfd38.cjs.prod.js} +446 -55
- package/dist/{client-71ece661.cjs.dev.js → getProvider-ec251513.cjs.dev.js} +446 -55
- package/dist/wagmi-core.cjs.dev.js +462 -286
- package/dist/wagmi-core.cjs.prod.js +462 -286
- package/dist/wagmi-core.esm.js +377 -205
- package/package.json +2 -2
- package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.dev.js +0 -2
- package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.prod.js +0 -2
- package/providers/alchemy/dist/wagmi-core-providers-alchemy.esm.js +0 -2
- package/providers/infura/dist/wagmi-core-providers-infura.cjs.dev.js +0 -2
- package/providers/infura/dist/wagmi-core-providers-infura.cjs.prod.js +0 -2
- package/providers/infura/dist/wagmi-core-providers-infura.esm.js +0 -2
- package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.dev.js +0 -2
- package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.prod.js +0 -2
- package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.esm.js +0 -2
- package/providers/public/dist/wagmi-core-providers-public.cjs.dev.js +0 -2
- package/providers/public/dist/wagmi-core-providers-public.cjs.prod.js +0 -2
- package/providers/public/dist/wagmi-core-providers-public.esm.js +0 -2
- package/dist/base-797ad073.cjs.prod.js +0 -343
- package/dist/base-90b7f3e4.cjs.dev.js +0 -343
- package/dist/base-b565d5d4.esm.js +0 -316
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
var base = require('./base-90b7f3e4.cjs.dev.js');
|
|
5
|
+
var getProvider = require('./getProvider-ec251513.cjs.dev.js');
|
|
7
6
|
var ethers$1 = require('ethers/lib/ethers');
|
|
8
7
|
var utils = require('ethers/lib/utils');
|
|
9
8
|
var ethers = require('ethers');
|
|
10
9
|
var shallow = require('zustand/shallow');
|
|
11
10
|
var rpcs = require('./rpcs-f1d24f0e.cjs.dev.js');
|
|
12
|
-
var chains = require('./chains-
|
|
11
|
+
var chains = require('./chains-ba6218fb.cjs.dev.js');
|
|
13
12
|
require('zustand/vanilla');
|
|
14
13
|
require('zustand/middleware');
|
|
15
14
|
require('eventemitter3');
|
|
@@ -21,6 +20,7 @@ var shallow__default = /*#__PURE__*/_interopDefault(shallow);
|
|
|
21
20
|
function configureChains(defaultChains, providers) {
|
|
22
21
|
let {
|
|
23
22
|
minQuorum = 1,
|
|
23
|
+
pollingInterval = 4000,
|
|
24
24
|
targetQuorum = 1,
|
|
25
25
|
stallTimeout
|
|
26
26
|
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
@@ -66,21 +66,27 @@ function configureChains(defaultChains, providers) {
|
|
|
66
66
|
return {
|
|
67
67
|
chains,
|
|
68
68
|
provider: _ref2 => {
|
|
69
|
-
var _defaultChains
|
|
69
|
+
var _defaultChains$;
|
|
70
70
|
|
|
71
71
|
let {
|
|
72
72
|
chainId
|
|
73
73
|
} = _ref2;
|
|
74
74
|
const activeChainId = chainId && chains.some(x => x.id === chainId) ? chainId : (_defaultChains$ = defaultChains[0]) === null || _defaultChains$ === void 0 ? void 0 : _defaultChains$.id;
|
|
75
75
|
const chainProviders = providers_[activeChainId];
|
|
76
|
-
if (!chainProviders) throw new Error("No providers configured for chain \"".concat(activeChainId, "\""));
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
if (!chainProviders || !chainProviders[0]) throw new Error("No providers configured for chain \"".concat(activeChainId, "\""));
|
|
77
|
+
|
|
78
|
+
if (chainProviders.length === 1) {
|
|
79
|
+
return Object.assign(chainProviders[0](), {
|
|
80
|
+
chains,
|
|
81
|
+
pollingInterval
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
80
85
|
return Object.assign(fallbackProvider(targetQuorum, minQuorum, chainProviders, {
|
|
81
86
|
stallTimeout
|
|
82
87
|
}), {
|
|
83
|
-
chains
|
|
88
|
+
chains,
|
|
89
|
+
pollingInterval
|
|
84
90
|
});
|
|
85
91
|
},
|
|
86
92
|
webSocketProvider: _ref3 => {
|
|
@@ -247,41 +253,44 @@ async function connect(_ref) {
|
|
|
247
253
|
chainId,
|
|
248
254
|
connector
|
|
249
255
|
} = _ref;
|
|
250
|
-
const client
|
|
251
|
-
const activeConnector = client
|
|
252
|
-
if (connector.id === (activeConnector === null || activeConnector === void 0 ? void 0 : activeConnector.id)) throw new
|
|
256
|
+
const client = getProvider.getClient();
|
|
257
|
+
const activeConnector = client.connector;
|
|
258
|
+
if (connector.id === (activeConnector === null || activeConnector === void 0 ? void 0 : activeConnector.id)) throw new getProvider.ConnectorAlreadyConnectedError();
|
|
253
259
|
|
|
254
260
|
try {
|
|
255
|
-
client
|
|
261
|
+
client.setState(x => ({ ...x,
|
|
256
262
|
status: 'connecting'
|
|
257
263
|
}));
|
|
258
264
|
const data = await connector.connect({
|
|
259
265
|
chainId
|
|
260
266
|
});
|
|
261
|
-
client
|
|
262
|
-
client
|
|
267
|
+
client.setLastUsedConnector(connector.id);
|
|
268
|
+
client.setState(x => ({ ...x,
|
|
263
269
|
connector,
|
|
264
270
|
chains: connector === null || connector === void 0 ? void 0 : connector.chains,
|
|
265
271
|
data,
|
|
266
272
|
status: 'connected'
|
|
267
273
|
}));
|
|
268
|
-
client
|
|
274
|
+
client.storage.setItem('connected', true);
|
|
269
275
|
return { ...data,
|
|
270
276
|
connector
|
|
271
277
|
};
|
|
272
278
|
} catch (err) {
|
|
273
|
-
client
|
|
274
|
-
|
|
275
|
-
|
|
279
|
+
client.setState(x => {
|
|
280
|
+
return { ...x,
|
|
281
|
+
// Keep existing connector connected in case of error
|
|
282
|
+
status: x.connector ? 'connected' : 'disconnected'
|
|
283
|
+
};
|
|
284
|
+
});
|
|
276
285
|
throw err;
|
|
277
286
|
}
|
|
278
287
|
}
|
|
279
288
|
|
|
280
289
|
async function disconnect() {
|
|
281
|
-
const client
|
|
282
|
-
if (client
|
|
283
|
-
client
|
|
284
|
-
client
|
|
290
|
+
const client = getProvider.getClient();
|
|
291
|
+
if (client.connector) await client.connector.disconnect();
|
|
292
|
+
client.clearState();
|
|
293
|
+
client.storage.removeItem('connected');
|
|
285
294
|
}
|
|
286
295
|
|
|
287
296
|
function getContract(_ref) {
|
|
@@ -293,34 +302,83 @@ function getContract(_ref) {
|
|
|
293
302
|
return new ethers.Contract(addressOrName, contractInterface, signerOrProvider);
|
|
294
303
|
}
|
|
295
304
|
|
|
296
|
-
|
|
305
|
+
/**
|
|
306
|
+
* @description Prepares the parameters required for a contract write transaction.
|
|
307
|
+
*
|
|
308
|
+
* Returns config to be passed through to `writeContract`.
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* import { prepareWriteContract, writeContract } from '@wagmi/core'
|
|
312
|
+
*
|
|
313
|
+
* const config = await prepareWriteContract({
|
|
314
|
+
* addressOrName: '0x...',
|
|
315
|
+
* contractInterface: wagmiAbi,
|
|
316
|
+
* functionName: 'mint',
|
|
317
|
+
* })
|
|
318
|
+
* const result = await writeContract(config)
|
|
319
|
+
*/
|
|
320
|
+
async function prepareWriteContract(_ref) {
|
|
297
321
|
let {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
322
|
+
addressOrName,
|
|
323
|
+
args,
|
|
324
|
+
chainId,
|
|
325
|
+
contractInterface,
|
|
326
|
+
functionName,
|
|
327
|
+
overrides,
|
|
328
|
+
signer: signer_
|
|
329
|
+
} = _ref;
|
|
330
|
+
const signer = signer_ !== null && signer_ !== void 0 ? signer_ : await fetchSigner();
|
|
331
|
+
if (!signer) throw new getProvider.ConnectorNotFoundError();
|
|
332
|
+
const contract = getContract({
|
|
333
|
+
addressOrName,
|
|
334
|
+
contractInterface,
|
|
335
|
+
signerOrProvider: signer
|
|
303
336
|
});
|
|
304
|
-
|
|
337
|
+
const populateTransactionFn = contract.populateTransaction[functionName];
|
|
338
|
+
|
|
339
|
+
if (!populateTransactionFn) {
|
|
340
|
+
throw new getProvider.ContractMethodDoesNotExistError({
|
|
341
|
+
addressOrName,
|
|
342
|
+
functionName
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
|
|
347
|
+
const unsignedTransaction = await populateTransactionFn(...params);
|
|
348
|
+
const gasLimit = unsignedTransaction.gasLimit || (await signer.estimateGas(unsignedTransaction));
|
|
349
|
+
return {
|
|
350
|
+
addressOrName,
|
|
351
|
+
args,
|
|
352
|
+
...(chainId ? {
|
|
353
|
+
chainId
|
|
354
|
+
} : {}),
|
|
355
|
+
contractInterface,
|
|
356
|
+
functionName,
|
|
357
|
+
overrides,
|
|
358
|
+
request: { ...unsignedTransaction,
|
|
359
|
+
gasLimit
|
|
360
|
+
},
|
|
361
|
+
mode: 'prepared'
|
|
362
|
+
};
|
|
305
363
|
}
|
|
306
364
|
|
|
307
365
|
function getWebSocketProvider() {
|
|
308
366
|
let {
|
|
309
367
|
chainId
|
|
310
368
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
311
|
-
const client
|
|
312
|
-
if (chainId && typeof client
|
|
369
|
+
const client = getProvider.getClient();
|
|
370
|
+
if (chainId && typeof client.config.webSocketProvider === 'function') return client.config.webSocketProvider({
|
|
313
371
|
chainId
|
|
314
372
|
});
|
|
315
|
-
return client
|
|
373
|
+
return client.webSocketProvider;
|
|
316
374
|
}
|
|
317
375
|
|
|
318
376
|
function watchProvider(args, callback) {
|
|
319
|
-
const client
|
|
377
|
+
const client = getProvider.getClient();
|
|
320
378
|
|
|
321
|
-
const handleChange = async () => callback(getProvider(args));
|
|
379
|
+
const handleChange = async () => callback(getProvider.getProvider(args));
|
|
322
380
|
|
|
323
|
-
const unsubscribe = client
|
|
381
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
324
382
|
let {
|
|
325
383
|
provider
|
|
326
384
|
} = _ref;
|
|
@@ -330,11 +388,11 @@ function watchProvider(args, callback) {
|
|
|
330
388
|
}
|
|
331
389
|
|
|
332
390
|
function watchWebSocketProvider(args, callback) {
|
|
333
|
-
const client
|
|
391
|
+
const client = getProvider.getClient();
|
|
334
392
|
|
|
335
393
|
const handleChange = async () => callback(getWebSocketProvider(args));
|
|
336
394
|
|
|
337
|
-
const unsubscribe = client
|
|
395
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
338
396
|
let {
|
|
339
397
|
webSocketProvider
|
|
340
398
|
} = _ref;
|
|
@@ -352,7 +410,7 @@ async function readContract(_ref) {
|
|
|
352
410
|
functionName,
|
|
353
411
|
overrides
|
|
354
412
|
} = _ref;
|
|
355
|
-
const provider = getProvider({
|
|
413
|
+
const provider = getProvider.getProvider({
|
|
356
414
|
chainId
|
|
357
415
|
});
|
|
358
416
|
const contract = getContract({
|
|
@@ -374,16 +432,16 @@ async function multicall(_ref) {
|
|
|
374
432
|
contracts,
|
|
375
433
|
overrides
|
|
376
434
|
} = _ref;
|
|
377
|
-
const provider = getProvider({
|
|
435
|
+
const provider = getProvider.getProvider({
|
|
378
436
|
chainId
|
|
379
437
|
});
|
|
380
|
-
if (!provider.chains) throw new
|
|
438
|
+
if (!provider.chains) throw new getProvider.ProviderChainsNotFound();
|
|
381
439
|
const chain = provider.chains.find(chain => chain.id === chainId) || provider.chains[0];
|
|
382
|
-
if (!chain) throw new
|
|
383
|
-
if (!(chain !== null && chain !== void 0 && chain.multicall)) throw new
|
|
440
|
+
if (!chain) throw new getProvider.ProviderChainsNotFound();
|
|
441
|
+
if (!(chain !== null && chain !== void 0 && chain.multicall)) throw new getProvider.ChainDoesNotSupportMulticallError({
|
|
384
442
|
chain
|
|
385
443
|
});
|
|
386
|
-
if (typeof (overrides === null || overrides === void 0 ? void 0 : overrides.blockTag) === 'number' && (overrides === null || overrides === void 0 ? void 0 : overrides.blockTag) < chain.multicall.blockCreated) throw new
|
|
444
|
+
if (typeof (overrides === null || overrides === void 0 ? void 0 : overrides.blockTag) === 'number' && (overrides === null || overrides === void 0 ? void 0 : overrides.blockTag) < chain.multicall.blockCreated) throw new getProvider.ChainDoesNotSupportMulticallError({
|
|
387
445
|
blockNumber: overrides === null || overrides === void 0 ? void 0 : overrides.blockTag,
|
|
388
446
|
chain
|
|
389
447
|
});
|
|
@@ -430,11 +488,9 @@ async function multicall(_ref) {
|
|
|
430
488
|
} = contracts[i];
|
|
431
489
|
|
|
432
490
|
if (returnData === '0x') {
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
const err = new base.ContractMethodNoResultError({
|
|
491
|
+
const err = new getProvider.ContractMethodNoResultError({
|
|
436
492
|
addressOrName,
|
|
437
|
-
|
|
493
|
+
chainId: chain.id,
|
|
438
494
|
functionName
|
|
439
495
|
});
|
|
440
496
|
if (!allowFailure) throw err;
|
|
@@ -465,7 +521,7 @@ async function readContracts(_ref) {
|
|
|
465
521
|
} = _ref;
|
|
466
522
|
|
|
467
523
|
try {
|
|
468
|
-
const provider = getProvider();
|
|
524
|
+
const provider = getProvider.getProvider();
|
|
469
525
|
const contractsByChainId = contracts.reduce((contracts, contract) => {
|
|
470
526
|
var _contract$chainId;
|
|
471
527
|
|
|
@@ -488,7 +544,7 @@ async function readContracts(_ref) {
|
|
|
488
544
|
return (await Promise.allSettled(promises)).map(result => {
|
|
489
545
|
if (result.status === 'fulfilled') return result.value;
|
|
490
546
|
|
|
491
|
-
if (result.reason instanceof
|
|
547
|
+
if (result.reason instanceof getProvider.ChainDoesNotSupportMulticallError) {
|
|
492
548
|
console.warn(result.reason.message);
|
|
493
549
|
throw result.reason;
|
|
494
550
|
}
|
|
@@ -499,7 +555,7 @@ async function readContracts(_ref) {
|
|
|
499
555
|
|
|
500
556
|
return (await Promise.all(promises)).flat();
|
|
501
557
|
} catch (err) {
|
|
502
|
-
if (err instanceof
|
|
558
|
+
if (err instanceof getProvider.ContractMethodNoResultError) throw err;
|
|
503
559
|
const promises = contracts.map(contract => readContract({ ...contract,
|
|
504
560
|
overrides
|
|
505
561
|
}));
|
|
@@ -533,7 +589,7 @@ eventName, callback) {
|
|
|
533
589
|
contract = getContract({
|
|
534
590
|
signerOrProvider: getWebSocketProvider({
|
|
535
591
|
chainId
|
|
536
|
-
}) || getProvider({
|
|
592
|
+
}) || getProvider.getProvider({
|
|
537
593
|
chainId
|
|
538
594
|
}),
|
|
539
595
|
...contractArgs
|
|
@@ -542,8 +598,8 @@ eventName, callback) {
|
|
|
542
598
|
};
|
|
543
599
|
|
|
544
600
|
watchEvent();
|
|
545
|
-
const client
|
|
546
|
-
const unsubscribe = client
|
|
601
|
+
const client = getProvider.getClient();
|
|
602
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
547
603
|
let {
|
|
548
604
|
provider,
|
|
549
605
|
webSocketProvider
|
|
@@ -567,7 +623,7 @@ async function fetchBlockNumber() {
|
|
|
567
623
|
let {
|
|
568
624
|
chainId
|
|
569
625
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
570
|
-
const provider = getProvider({
|
|
626
|
+
const provider = getProvider.getProvider({
|
|
571
627
|
chainId
|
|
572
628
|
});
|
|
573
629
|
const blockNumber = await provider.getBlockNumber();
|
|
@@ -590,10 +646,10 @@ function watchBlockNumber(args, callback) {
|
|
|
590
646
|
previousProvider = provider;
|
|
591
647
|
};
|
|
592
648
|
|
|
593
|
-
const client
|
|
594
|
-
const provider_ = (_client$webSocketProv = client
|
|
649
|
+
const client = getProvider.getClient();
|
|
650
|
+
const provider_ = (_client$webSocketProv = client.webSocketProvider) !== null && _client$webSocketProv !== void 0 ? _client$webSocketProv : client.provider;
|
|
595
651
|
if (args.listen) createListener(provider_);
|
|
596
|
-
const unsubscribe = client
|
|
652
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
597
653
|
let {
|
|
598
654
|
provider,
|
|
599
655
|
webSocketProvider
|
|
@@ -624,14 +680,14 @@ function watchBlockNumber(args, callback) {
|
|
|
624
680
|
}
|
|
625
681
|
|
|
626
682
|
function watchReadContract(config, callback) {
|
|
627
|
-
const client
|
|
683
|
+
const client = getProvider.getClient();
|
|
628
684
|
|
|
629
685
|
const handleChange = async () => callback(await readContract(config));
|
|
630
686
|
|
|
631
687
|
const unwatch = config.listenToBlock ? watchBlockNumber({
|
|
632
688
|
listen: true
|
|
633
689
|
}, handleChange) : undefined;
|
|
634
|
-
const unsubscribe = client
|
|
690
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
635
691
|
let {
|
|
636
692
|
provider
|
|
637
693
|
} = _ref;
|
|
@@ -644,14 +700,14 @@ function watchReadContract(config, callback) {
|
|
|
644
700
|
}
|
|
645
701
|
|
|
646
702
|
function watchReadContracts(config, callback) {
|
|
647
|
-
const client
|
|
703
|
+
const client = getProvider.getClient();
|
|
648
704
|
|
|
649
705
|
const handleChange = async () => callback(await readContracts(config));
|
|
650
706
|
|
|
651
707
|
const unwatch = config.listenToBlock ? watchBlockNumber({
|
|
652
708
|
listen: true
|
|
653
709
|
}, handleChange) : undefined;
|
|
654
|
-
const unsubscribe = client
|
|
710
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
655
711
|
let {
|
|
656
712
|
provider
|
|
657
713
|
} = _ref;
|
|
@@ -663,6 +719,221 @@ function watchReadContracts(config, callback) {
|
|
|
663
719
|
};
|
|
664
720
|
}
|
|
665
721
|
|
|
722
|
+
async function fetchEnsAddress(_ref) {
|
|
723
|
+
let {
|
|
724
|
+
chainId,
|
|
725
|
+
name
|
|
726
|
+
} = _ref;
|
|
727
|
+
const provider = getProvider.getProvider({
|
|
728
|
+
chainId
|
|
729
|
+
});
|
|
730
|
+
const address = await provider.resolveName(name);
|
|
731
|
+
|
|
732
|
+
try {
|
|
733
|
+
return address ? utils.getAddress(address) : null;
|
|
734
|
+
} catch (_error) {
|
|
735
|
+
return null;
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
async function fetchEnsAvatar(_ref) {
|
|
740
|
+
let {
|
|
741
|
+
addressOrName,
|
|
742
|
+
chainId
|
|
743
|
+
} = _ref;
|
|
744
|
+
const provider = getProvider.getProvider({
|
|
745
|
+
chainId
|
|
746
|
+
}); // TODO: Update with more advanced logic
|
|
747
|
+
// https://github.com/ensdomains/ens-avatar
|
|
748
|
+
|
|
749
|
+
const avatar = await provider.getAvatar(addressOrName);
|
|
750
|
+
return avatar;
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
async function fetchEnsName(_ref) {
|
|
754
|
+
let {
|
|
755
|
+
address,
|
|
756
|
+
chainId
|
|
757
|
+
} = _ref;
|
|
758
|
+
const provider = getProvider.getProvider({
|
|
759
|
+
chainId
|
|
760
|
+
});
|
|
761
|
+
return await provider.lookupAddress(address);
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
async function fetchEnsResolver(_ref) {
|
|
765
|
+
let {
|
|
766
|
+
chainId,
|
|
767
|
+
name
|
|
768
|
+
} = _ref;
|
|
769
|
+
const provider = getProvider.getProvider({
|
|
770
|
+
chainId
|
|
771
|
+
});
|
|
772
|
+
const resolver = await provider.getResolver(name);
|
|
773
|
+
return resolver;
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
/**
|
|
777
|
+
* @description Prepares the parameters required for sending a transaction.
|
|
778
|
+
*
|
|
779
|
+
* Returns config to be passed through to `sendTransaction`.
|
|
780
|
+
*
|
|
781
|
+
* @example
|
|
782
|
+
* import { prepareSendTransaction, sendTransaction } from '@wagmi/core'
|
|
783
|
+
*
|
|
784
|
+
* const config = await prepareSendTransaction({
|
|
785
|
+
* request: {
|
|
786
|
+
* to: 'moxey.eth',
|
|
787
|
+
* value: parseEther('1'),
|
|
788
|
+
* }
|
|
789
|
+
* })
|
|
790
|
+
* const result = await sendTransaction(config)
|
|
791
|
+
*/
|
|
792
|
+
async function prepareSendTransaction(_ref) {
|
|
793
|
+
let {
|
|
794
|
+
chainId,
|
|
795
|
+
request,
|
|
796
|
+
signerOrProvider = getProvider.getProvider()
|
|
797
|
+
} = _ref;
|
|
798
|
+
const [to, gasLimit] = await Promise.all([utils.isAddress(request.to) ? Promise.resolve(request.to) : fetchEnsAddress({
|
|
799
|
+
name: request.to
|
|
800
|
+
}), request.gasLimit ? Promise.resolve(request.gasLimit) : signerOrProvider.estimateGas(request)]);
|
|
801
|
+
if (!to) throw new Error('Could not resolve ENS name');
|
|
802
|
+
return { ...(chainId ? {
|
|
803
|
+
chainId
|
|
804
|
+
} : {}),
|
|
805
|
+
request: { ...request,
|
|
806
|
+
gasLimit,
|
|
807
|
+
to
|
|
808
|
+
},
|
|
809
|
+
mode: 'prepared'
|
|
810
|
+
};
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
/**
|
|
814
|
+
* @description Function to send a transaction.
|
|
815
|
+
*
|
|
816
|
+
* It is recommended to pair this with the `prepareSendTransaction` function to avoid
|
|
817
|
+
* [UX pitfalls](https://wagmi.sh/docs/prepare-hooks/intro#ux-pitfalls-without-prepare-hooks).
|
|
818
|
+
*
|
|
819
|
+
* @example
|
|
820
|
+
* import { prepareSendTransaction, sendTransaction } from '@wagmi/core'
|
|
821
|
+
*
|
|
822
|
+
* const config = await prepareSendTransaction({
|
|
823
|
+
* to: 'moxey.eth',
|
|
824
|
+
* value: parseEther('1'),
|
|
825
|
+
* })
|
|
826
|
+
* const result = await sendTransaction(config)
|
|
827
|
+
*/
|
|
828
|
+
async function sendTransaction(_ref) {
|
|
829
|
+
let {
|
|
830
|
+
chainId,
|
|
831
|
+
mode,
|
|
832
|
+
request
|
|
833
|
+
} = _ref;
|
|
834
|
+
|
|
835
|
+
/********************************************************************/
|
|
836
|
+
|
|
837
|
+
/** START: iOS App Link cautious code. */
|
|
838
|
+
|
|
839
|
+
/** Do not perform any async operations in this block. */
|
|
840
|
+
|
|
841
|
+
/** Ref: wagmi.sh/docs/prepare-hooks/intro#ios-app-link-constraints */
|
|
842
|
+
|
|
843
|
+
/********************************************************************/
|
|
844
|
+
// `fetchSigner` isn't really "asynchronous" as we have already
|
|
845
|
+
// initialized the provider upon user connection, so it will return
|
|
846
|
+
// immediately.
|
|
847
|
+
const signer = await fetchSigner();
|
|
848
|
+
if (!signer) throw new getProvider.ConnectorNotFoundError();
|
|
849
|
+
|
|
850
|
+
if (mode === 'prepared') {
|
|
851
|
+
if (!request.gasLimit) throw new Error('`gasLimit` is required');
|
|
852
|
+
if (!request.to) throw new Error('`to` is required');
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
const {
|
|
856
|
+
chain: activeChain,
|
|
857
|
+
chains
|
|
858
|
+
} = getNetwork();
|
|
859
|
+
const activeChainId = activeChain === null || activeChain === void 0 ? void 0 : activeChain.id;
|
|
860
|
+
|
|
861
|
+
if (chainId && chainId !== (activeChain === null || activeChain === void 0 ? void 0 : activeChain.id)) {
|
|
862
|
+
var _chains$find$name, _chains$find, _chains$find$name2, _chains$find2;
|
|
863
|
+
|
|
864
|
+
throw new getProvider.ChainMismatchError({
|
|
865
|
+
activeChain: (_chains$find$name = (_chains$find = chains.find(x => x.id === activeChainId)) === null || _chains$find === void 0 ? void 0 : _chains$find.name) !== null && _chains$find$name !== void 0 ? _chains$find$name : "Chain ".concat(activeChainId),
|
|
866
|
+
targetChain: (_chains$find$name2 = (_chains$find2 = chains.find(x => x.id === chainId)) === null || _chains$find2 === void 0 ? void 0 : _chains$find2.name) !== null && _chains$find$name2 !== void 0 ? _chains$find$name2 : "Chain ".concat(chainId)
|
|
867
|
+
});
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
try {
|
|
871
|
+
// Why don't we just use `signer.sendTransaction`?
|
|
872
|
+
// The `signer.sendTransaction` method performs async
|
|
873
|
+
// heavy operations (such as fetching block number)
|
|
874
|
+
// which is not really needed for our case.
|
|
875
|
+
// Having async heavy operations has side effects
|
|
876
|
+
// when using it in a click handler (iOS deep linking issues,
|
|
877
|
+
// delay to open wallet, etc).
|
|
878
|
+
const uncheckedSigner = signer.connectUnchecked();
|
|
879
|
+
const {
|
|
880
|
+
hash,
|
|
881
|
+
wait
|
|
882
|
+
} = await uncheckedSigner.sendTransaction(request);
|
|
883
|
+
/********************************************************************/
|
|
884
|
+
|
|
885
|
+
/** END: iOS App Link cautious code. */
|
|
886
|
+
|
|
887
|
+
/** Go nuts! */
|
|
888
|
+
|
|
889
|
+
/********************************************************************/
|
|
890
|
+
|
|
891
|
+
return {
|
|
892
|
+
hash,
|
|
893
|
+
wait
|
|
894
|
+
};
|
|
895
|
+
} catch (error) {
|
|
896
|
+
if (error.code === 4001) throw new getProvider.UserRejectedRequestError(error);
|
|
897
|
+
throw error;
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
|
|
901
|
+
async function waitForTransaction(_ref) {
|
|
902
|
+
let {
|
|
903
|
+
chainId,
|
|
904
|
+
confirmations,
|
|
905
|
+
hash,
|
|
906
|
+
timeout,
|
|
907
|
+
wait: wait_
|
|
908
|
+
} = _ref;
|
|
909
|
+
let promise;
|
|
910
|
+
|
|
911
|
+
if (hash) {
|
|
912
|
+
const provider = getProvider.getProvider({
|
|
913
|
+
chainId
|
|
914
|
+
});
|
|
915
|
+
promise = provider.waitForTransaction(hash, confirmations, timeout);
|
|
916
|
+
} else if (wait_) promise = wait_(confirmations);else throw new Error('hash or wait is required');
|
|
917
|
+
|
|
918
|
+
return await promise;
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
/**
|
|
922
|
+
* @description Function to call a contract write method.
|
|
923
|
+
*
|
|
924
|
+
* It is recommended to pair this with the {@link prepareWriteContract} function
|
|
925
|
+
* to avoid [UX pitfalls](https://wagmi.sh/docs/prepare-hooks/intro#ux-pitfalls-without-prepare-hooks).
|
|
926
|
+
*
|
|
927
|
+
* @example
|
|
928
|
+
* import { prepareWriteContract, writeContract } from '@wagmi/core'
|
|
929
|
+
*
|
|
930
|
+
* const config = await prepareWriteContract({
|
|
931
|
+
* addressOrName: '0x...',
|
|
932
|
+
* contractInterface: wagmiAbi,
|
|
933
|
+
* functionName: 'mint',
|
|
934
|
+
* })
|
|
935
|
+
* const result = await writeContract(config)
|
|
936
|
+
*/
|
|
666
937
|
async function writeContract(_ref) {
|
|
667
938
|
let {
|
|
668
939
|
addressOrName,
|
|
@@ -670,49 +941,61 @@ async function writeContract(_ref) {
|
|
|
670
941
|
chainId,
|
|
671
942
|
contractInterface,
|
|
672
943
|
functionName,
|
|
944
|
+
mode,
|
|
673
945
|
overrides,
|
|
674
|
-
|
|
946
|
+
request: request_
|
|
675
947
|
} = _ref;
|
|
676
|
-
const {
|
|
677
|
-
connector
|
|
678
|
-
} = client.getClient();
|
|
679
|
-
if (!connector) throw new base.ConnectorNotFoundError();
|
|
680
|
-
const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
|
|
681
948
|
|
|
682
|
-
|
|
683
|
-
var _chain;
|
|
949
|
+
/********************************************************************/
|
|
684
950
|
|
|
685
|
-
|
|
951
|
+
/** START: iOS App Link cautious code. */
|
|
686
952
|
|
|
687
|
-
|
|
688
|
-
const activeChainId = await connector.getChainId(); // Try to switch chain to provided `chainId`
|
|
953
|
+
/** Do not perform any async operations in this block. */
|
|
689
954
|
|
|
690
|
-
|
|
691
|
-
var _connector$chains$fin, _connector$chains$fin2, _connector$chains$fin3, _connector$chains$fin4;
|
|
955
|
+
/** Ref: wagmi.sh/docs/prepare-hooks/intro#ios-app-link-constraints */
|
|
692
956
|
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
957
|
+
/********************************************************************/
|
|
958
|
+
const signer = await fetchSigner();
|
|
959
|
+
if (!signer) throw new getProvider.ConnectorNotFoundError();
|
|
960
|
+
const {
|
|
961
|
+
chain: activeChain,
|
|
962
|
+
chains
|
|
963
|
+
} = getNetwork();
|
|
964
|
+
const activeChainId = activeChain === null || activeChain === void 0 ? void 0 : activeChain.id;
|
|
699
965
|
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
signerOrProvider
|
|
966
|
+
if (chainId && chainId !== activeChainId) {
|
|
967
|
+
var _chains$find$name, _chains$find, _chains$find$name2, _chains$find2;
|
|
968
|
+
|
|
969
|
+
throw new getProvider.ChainMismatchError({
|
|
970
|
+
activeChain: (_chains$find$name = (_chains$find = chains.find(x => x.id === activeChainId)) === null || _chains$find === void 0 ? void 0 : _chains$find.name) !== null && _chains$find$name !== void 0 ? _chains$find$name : "Chain ".concat(activeChainId),
|
|
971
|
+
targetChain: (_chains$find$name2 = (_chains$find2 = chains.find(x => x.id === chainId)) === null || _chains$find2 === void 0 ? void 0 : _chains$find2.name) !== null && _chains$find$name2 !== void 0 ? _chains$find$name2 : "Chain ".concat(chainId)
|
|
707
972
|
});
|
|
708
|
-
const contractWithSigner = contract.connect(signer);
|
|
709
|
-
const contractFunction = contractWithSigner[functionName];
|
|
710
|
-
if (!contractFunction) console.warn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(addressOrName, "\""));
|
|
711
|
-
return await contractFunction(...params);
|
|
712
|
-
} catch (error) {
|
|
713
|
-
if (error.code === 4001) throw new base.UserRejectedRequestError(error);
|
|
714
|
-
throw error;
|
|
715
973
|
}
|
|
974
|
+
|
|
975
|
+
if (mode === 'prepared') {
|
|
976
|
+
if (!request_) throw new Error('`request` is required');
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
const request = mode === 'dangerouslyUnprepared' ? (await prepareWriteContract({
|
|
980
|
+
addressOrName,
|
|
981
|
+
args,
|
|
982
|
+
contractInterface,
|
|
983
|
+
functionName,
|
|
984
|
+
overrides
|
|
985
|
+
})).request : request_;
|
|
986
|
+
const transaction = await sendTransaction({
|
|
987
|
+
request,
|
|
988
|
+
mode: 'prepared'
|
|
989
|
+
});
|
|
990
|
+
/********************************************************************/
|
|
991
|
+
|
|
992
|
+
/** END: iOS App Link cautious code. */
|
|
993
|
+
|
|
994
|
+
/** Go nuts! */
|
|
995
|
+
|
|
996
|
+
/********************************************************************/
|
|
997
|
+
|
|
998
|
+
return transaction;
|
|
716
999
|
}
|
|
717
1000
|
|
|
718
1001
|
async function fetchBalance(_ref) {
|
|
@@ -724,8 +1007,8 @@ async function fetchBalance(_ref) {
|
|
|
724
1007
|
formatUnits: unit = 'ether',
|
|
725
1008
|
token
|
|
726
1009
|
} = _ref;
|
|
727
|
-
const client
|
|
728
|
-
const provider = getProvider({
|
|
1010
|
+
const client = getProvider.getClient();
|
|
1011
|
+
const provider = getProvider.getProvider({
|
|
729
1012
|
chainId
|
|
730
1013
|
});
|
|
731
1014
|
|
|
@@ -765,7 +1048,7 @@ async function fetchBalance(_ref) {
|
|
|
765
1048
|
};
|
|
766
1049
|
}
|
|
767
1050
|
|
|
768
|
-
const chains = [...(client
|
|
1051
|
+
const chains = [...(client.provider.chains || []), ...((_client$chains = client.chains) !== null && _client$chains !== void 0 ? _client$chains : [])];
|
|
769
1052
|
const value = await provider.getBalance(addressOrName);
|
|
770
1053
|
const chain = chains.find(x => x.id === provider.network.chainId);
|
|
771
1054
|
return {
|
|
@@ -780,8 +1063,8 @@ async function fetchBalance(_ref) {
|
|
|
780
1063
|
async function fetchSigner() {
|
|
781
1064
|
var _client$connector, _client$connector$get;
|
|
782
1065
|
|
|
783
|
-
const client
|
|
784
|
-
const signer = (await ((_client$connector = client
|
|
1066
|
+
const client = getProvider.getClient();
|
|
1067
|
+
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;
|
|
785
1068
|
return signer;
|
|
786
1069
|
}
|
|
787
1070
|
|
|
@@ -790,7 +1073,7 @@ function getAccount() {
|
|
|
790
1073
|
data,
|
|
791
1074
|
connector,
|
|
792
1075
|
status
|
|
793
|
-
} =
|
|
1076
|
+
} = getProvider.getClient();
|
|
794
1077
|
|
|
795
1078
|
switch (status) {
|
|
796
1079
|
case 'connected':
|
|
@@ -842,10 +1125,10 @@ function getAccount() {
|
|
|
842
1125
|
function getNetwork() {
|
|
843
1126
|
var _client$data, _client$data$chain, _client$chains, _find, _client$data2;
|
|
844
1127
|
|
|
845
|
-
const client
|
|
846
|
-
const chainId = (_client$data = client
|
|
847
|
-
const activeChains = (_client$chains = client
|
|
848
|
-
const activeChain = (_find = [...(client
|
|
1128
|
+
const client = getProvider.getClient();
|
|
1129
|
+
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;
|
|
1130
|
+
const activeChains = (_client$chains = client.chains) !== null && _client$chains !== void 0 ? _client$chains : [];
|
|
1131
|
+
const activeChain = (_find = [...(client.provider.chains || []), ...activeChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
|
|
849
1132
|
id: chainId,
|
|
850
1133
|
name: "Chain ".concat(chainId),
|
|
851
1134
|
network: "".concat(chainId),
|
|
@@ -855,7 +1138,7 @@ function getNetwork() {
|
|
|
855
1138
|
};
|
|
856
1139
|
return {
|
|
857
1140
|
chain: chainId ? { ...activeChain,
|
|
858
|
-
...((_client$data2 = client
|
|
1141
|
+
...((_client$data2 = client.data) === null || _client$data2 === void 0 ? void 0 : _client$data2.chain),
|
|
859
1142
|
id: chainId
|
|
860
1143
|
} : undefined,
|
|
861
1144
|
chains: activeChains
|
|
@@ -865,10 +1148,10 @@ function getNetwork() {
|
|
|
865
1148
|
async function signMessage(args) {
|
|
866
1149
|
try {
|
|
867
1150
|
const signer = await fetchSigner();
|
|
868
|
-
if (!signer) throw new
|
|
1151
|
+
if (!signer) throw new getProvider.ConnectorNotFoundError();
|
|
869
1152
|
return await signer.signMessage(args.message);
|
|
870
1153
|
} catch (error) {
|
|
871
|
-
if (error.code === 4001) throw new
|
|
1154
|
+
if (error.code === 4001) throw new getProvider.UserRejectedRequestError(error);
|
|
872
1155
|
throw error;
|
|
873
1156
|
}
|
|
874
1157
|
}
|
|
@@ -879,42 +1162,32 @@ async function signTypedData(_ref) {
|
|
|
879
1162
|
types,
|
|
880
1163
|
value
|
|
881
1164
|
} = _ref;
|
|
1165
|
+
const signer = await fetchSigner();
|
|
1166
|
+
if (!signer) throw new getProvider.ConnectorNotFoundError();
|
|
882
1167
|
const {
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
const {
|
|
891
|
-
chainId
|
|
892
|
-
} = domain;
|
|
893
|
-
let chain;
|
|
1168
|
+
chain: activeChain,
|
|
1169
|
+
chains
|
|
1170
|
+
} = getNetwork();
|
|
1171
|
+
const {
|
|
1172
|
+
chainId: chainId_
|
|
1173
|
+
} = domain;
|
|
894
1174
|
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
1175
|
+
if (chainId_) {
|
|
1176
|
+
const chainId = getProvider.normalizeChainId(chainId_);
|
|
1177
|
+
const activeChainId = activeChain === null || activeChain === void 0 ? void 0 : activeChain.id;
|
|
898
1178
|
|
|
899
|
-
|
|
900
|
-
|
|
1179
|
+
if (chainId !== (activeChain === null || activeChain === void 0 ? void 0 : activeChain.id)) {
|
|
1180
|
+
var _chains$find$name, _chains$find, _chains$find$name2, _chains$find2;
|
|
901
1181
|
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
}
|
|
1182
|
+
throw new getProvider.ChainMismatchError({
|
|
1183
|
+
activeChain: (_chains$find$name = (_chains$find = chains.find(x => x.id === activeChainId)) === null || _chains$find === void 0 ? void 0 : _chains$find.name) !== null && _chains$find$name !== void 0 ? _chains$find$name : "Chain ".concat(activeChainId),
|
|
1184
|
+
targetChain: (_chains$find$name2 = (_chains$find2 = chains.find(x => x.id === chainId)) === null || _chains$find2 === void 0 ? void 0 : _chains$find2.name) !== null && _chains$find$name2 !== void 0 ? _chains$find$name2 : "Chain ".concat(chainId)
|
|
1185
|
+
});
|
|
907
1186
|
}
|
|
1187
|
+
} // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
|
|
908
1188
|
|
|
909
|
-
const signer = await connector.getSigner({
|
|
910
|
-
chainId: (_chain = chain) === null || _chain === void 0 ? void 0 : _chain.id
|
|
911
|
-
}); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
|
|
912
1189
|
|
|
913
|
-
|
|
914
|
-
} catch (error) {
|
|
915
|
-
if (error.code === 4001) throw new base.UserRejectedRequestError(error);
|
|
916
|
-
throw error;
|
|
917
|
-
}
|
|
1190
|
+
return await signer._signTypedData(domain, types, value);
|
|
918
1191
|
}
|
|
919
1192
|
|
|
920
1193
|
async function switchNetwork(_ref) {
|
|
@@ -923,9 +1196,9 @@ async function switchNetwork(_ref) {
|
|
|
923
1196
|
} = _ref;
|
|
924
1197
|
const {
|
|
925
1198
|
connector
|
|
926
|
-
} =
|
|
927
|
-
if (!connector) throw new
|
|
928
|
-
if (!connector.switchChain) throw new
|
|
1199
|
+
} = getProvider.getClient();
|
|
1200
|
+
if (!connector) throw new getProvider.ConnectorNotFoundError();
|
|
1201
|
+
if (!connector.switchChain) throw new getProvider.SwitchChainNotSupportedError({
|
|
929
1202
|
connector
|
|
930
1203
|
});
|
|
931
1204
|
return await connector.switchChain(chainId);
|
|
@@ -935,11 +1208,11 @@ function watchAccount(callback) {
|
|
|
935
1208
|
let {
|
|
936
1209
|
selector = x => x
|
|
937
1210
|
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
938
|
-
const client
|
|
1211
|
+
const client = getProvider.getClient();
|
|
939
1212
|
|
|
940
1213
|
const handleChange = () => callback(getAccount());
|
|
941
1214
|
|
|
942
|
-
const unsubscribe = client
|
|
1215
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
943
1216
|
let {
|
|
944
1217
|
data,
|
|
945
1218
|
connector,
|
|
@@ -960,11 +1233,11 @@ function watchNetwork(callback) {
|
|
|
960
1233
|
let {
|
|
961
1234
|
selector = x => x
|
|
962
1235
|
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
963
|
-
const client
|
|
1236
|
+
const client = getProvider.getClient();
|
|
964
1237
|
|
|
965
1238
|
const handleChange = () => callback(getNetwork());
|
|
966
1239
|
|
|
967
|
-
const unsubscribe = client
|
|
1240
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
968
1241
|
var _data$chain;
|
|
969
1242
|
|
|
970
1243
|
let {
|
|
@@ -982,11 +1255,11 @@ function watchNetwork(callback) {
|
|
|
982
1255
|
}
|
|
983
1256
|
|
|
984
1257
|
function watchSigner(callback) {
|
|
985
|
-
const client
|
|
1258
|
+
const client = getProvider.getClient();
|
|
986
1259
|
|
|
987
1260
|
const handleChange = async () => callback(await fetchSigner());
|
|
988
1261
|
|
|
989
|
-
const unsubscribe = client
|
|
1262
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
990
1263
|
var _data$chain;
|
|
991
1264
|
|
|
992
1265
|
let {
|
|
@@ -1004,66 +1277,12 @@ function watchSigner(callback) {
|
|
|
1004
1277
|
return unsubscribe;
|
|
1005
1278
|
}
|
|
1006
1279
|
|
|
1007
|
-
async function fetchEnsAddress(_ref) {
|
|
1008
|
-
let {
|
|
1009
|
-
chainId,
|
|
1010
|
-
name
|
|
1011
|
-
} = _ref;
|
|
1012
|
-
const provider = getProvider({
|
|
1013
|
-
chainId
|
|
1014
|
-
});
|
|
1015
|
-
const address = await provider.resolveName(name);
|
|
1016
|
-
|
|
1017
|
-
try {
|
|
1018
|
-
return address ? utils.getAddress(address) : null;
|
|
1019
|
-
} catch (_error) {
|
|
1020
|
-
return null;
|
|
1021
|
-
}
|
|
1022
|
-
}
|
|
1023
|
-
|
|
1024
|
-
async function fetchEnsAvatar(_ref) {
|
|
1025
|
-
let {
|
|
1026
|
-
addressOrName,
|
|
1027
|
-
chainId
|
|
1028
|
-
} = _ref;
|
|
1029
|
-
const provider = getProvider({
|
|
1030
|
-
chainId
|
|
1031
|
-
}); // TODO: Update with more advanced logic
|
|
1032
|
-
// https://github.com/ensdomains/ens-avatar
|
|
1033
|
-
|
|
1034
|
-
const avatar = await provider.getAvatar(addressOrName);
|
|
1035
|
-
return avatar;
|
|
1036
|
-
}
|
|
1037
|
-
|
|
1038
|
-
async function fetchEnsName(_ref) {
|
|
1039
|
-
let {
|
|
1040
|
-
address,
|
|
1041
|
-
chainId
|
|
1042
|
-
} = _ref;
|
|
1043
|
-
const provider = getProvider({
|
|
1044
|
-
chainId
|
|
1045
|
-
});
|
|
1046
|
-
return await provider.lookupAddress(address);
|
|
1047
|
-
}
|
|
1048
|
-
|
|
1049
|
-
async function fetchEnsResolver(_ref) {
|
|
1050
|
-
let {
|
|
1051
|
-
chainId,
|
|
1052
|
-
name
|
|
1053
|
-
} = _ref;
|
|
1054
|
-
const provider = getProvider({
|
|
1055
|
-
chainId
|
|
1056
|
-
});
|
|
1057
|
-
const resolver = await provider.getResolver(name);
|
|
1058
|
-
return resolver;
|
|
1059
|
-
}
|
|
1060
|
-
|
|
1061
1280
|
async function fetchFeeData() {
|
|
1062
1281
|
let {
|
|
1063
1282
|
chainId,
|
|
1064
1283
|
formatUnits: units = 'wei'
|
|
1065
1284
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1066
|
-
const provider = getProvider({
|
|
1285
|
+
const provider = getProvider.getProvider({
|
|
1067
1286
|
chainId
|
|
1068
1287
|
});
|
|
1069
1288
|
const feeData = await provider.getFeeData();
|
|
@@ -1083,102 +1302,58 @@ async function fetchToken(_ref) {
|
|
|
1083
1302
|
chainId,
|
|
1084
1303
|
formatUnits: units = 'ether'
|
|
1085
1304
|
} = _ref;
|
|
1086
|
-
const
|
|
1305
|
+
const erc20Config = {
|
|
1306
|
+
addressOrName: address,
|
|
1307
|
+
contractInterface: erc20ABI,
|
|
1087
1308
|
chainId
|
|
1309
|
+
};
|
|
1310
|
+
const [decimals, name, symbol, totalSupply] = await readContracts({
|
|
1311
|
+
allowFailure: false,
|
|
1312
|
+
contracts: [{ ...erc20Config,
|
|
1313
|
+
functionName: 'decimals'
|
|
1314
|
+
}, { ...erc20Config,
|
|
1315
|
+
functionName: 'name'
|
|
1316
|
+
}, { ...erc20Config,
|
|
1317
|
+
functionName: 'symbol'
|
|
1318
|
+
}, { ...erc20Config,
|
|
1319
|
+
functionName: 'totalSupply'
|
|
1320
|
+
}]
|
|
1088
1321
|
});
|
|
1089
|
-
|
|
1090
|
-
const [symbol, decimals, totalSupply] = await Promise.all([contract.symbol(), contract.decimals(), contract.totalSupply()]);
|
|
1091
|
-
const token = {
|
|
1322
|
+
return {
|
|
1092
1323
|
address,
|
|
1093
1324
|
decimals,
|
|
1325
|
+
name,
|
|
1094
1326
|
symbol,
|
|
1095
1327
|
totalSupply: {
|
|
1096
1328
|
formatted: utils.formatUnits(totalSupply, units),
|
|
1097
1329
|
value: totalSupply
|
|
1098
1330
|
}
|
|
1099
1331
|
};
|
|
1100
|
-
return token;
|
|
1101
|
-
}
|
|
1102
|
-
|
|
1103
|
-
async function sendTransaction(_ref) {
|
|
1104
|
-
let {
|
|
1105
|
-
chainId,
|
|
1106
|
-
request
|
|
1107
|
-
} = _ref;
|
|
1108
|
-
const {
|
|
1109
|
-
connector
|
|
1110
|
-
} = client.getClient();
|
|
1111
|
-
if (!connector) throw new base.ConnectorNotFoundError();
|
|
1112
|
-
|
|
1113
|
-
try {
|
|
1114
|
-
var _chain;
|
|
1115
|
-
|
|
1116
|
-
let chain;
|
|
1117
|
-
|
|
1118
|
-
if (chainId) {
|
|
1119
|
-
const activeChainId = await connector.getChainId(); // Try to switch chain to provided `chainId`
|
|
1120
|
-
|
|
1121
|
-
if (chainId !== activeChainId) {
|
|
1122
|
-
var _connector$chains$fin, _connector$chains$fin2, _connector$chains$fin3, _connector$chains$fin4;
|
|
1123
|
-
|
|
1124
|
-
if (connector.switchChain) chain = await connector.switchChain(chainId);else throw new base.ChainMismatchError({
|
|
1125
|
-
activeChain: (_connector$chains$fin = (_connector$chains$fin2 = connector.chains.find(x => x.id === activeChainId)) === null || _connector$chains$fin2 === void 0 ? void 0 : _connector$chains$fin2.name) !== null && _connector$chains$fin !== void 0 ? _connector$chains$fin : "Chain ".concat(activeChainId),
|
|
1126
|
-
targetChain: (_connector$chains$fin3 = (_connector$chains$fin4 = connector.chains.find(x => x.id === chainId)) === null || _connector$chains$fin4 === void 0 ? void 0 : _connector$chains$fin4.name) !== null && _connector$chains$fin3 !== void 0 ? _connector$chains$fin3 : "Chain ".concat(chainId)
|
|
1127
|
-
});
|
|
1128
|
-
}
|
|
1129
|
-
}
|
|
1130
|
-
|
|
1131
|
-
const signer = await connector.getSigner({
|
|
1132
|
-
chainId: (_chain = chain) === null || _chain === void 0 ? void 0 : _chain.id
|
|
1133
|
-
});
|
|
1134
|
-
return await signer.sendTransaction(request);
|
|
1135
|
-
} catch (error) {
|
|
1136
|
-
if (error.code === 4001) throw new base.UserRejectedRequestError(error);
|
|
1137
|
-
throw error;
|
|
1138
|
-
}
|
|
1139
|
-
}
|
|
1140
|
-
|
|
1141
|
-
async function waitForTransaction(_ref) {
|
|
1142
|
-
let {
|
|
1143
|
-
chainId,
|
|
1144
|
-
confirmations,
|
|
1145
|
-
hash,
|
|
1146
|
-
timeout,
|
|
1147
|
-
wait: wait_
|
|
1148
|
-
} = _ref;
|
|
1149
|
-
let promise;
|
|
1150
|
-
|
|
1151
|
-
if (hash) {
|
|
1152
|
-
const provider = getProvider({
|
|
1153
|
-
chainId
|
|
1154
|
-
});
|
|
1155
|
-
promise = provider.waitForTransaction(hash, confirmations, timeout);
|
|
1156
|
-
} else if (wait_) promise = wait_(confirmations);else throw new Error('hash or wait is required');
|
|
1157
|
-
|
|
1158
|
-
return await promise;
|
|
1159
1332
|
}
|
|
1160
1333
|
|
|
1161
|
-
exports.
|
|
1162
|
-
exports.
|
|
1163
|
-
exports.
|
|
1164
|
-
exports.
|
|
1165
|
-
exports.
|
|
1166
|
-
exports.
|
|
1167
|
-
exports.
|
|
1168
|
-
exports.
|
|
1169
|
-
exports.
|
|
1170
|
-
exports.
|
|
1171
|
-
exports.
|
|
1172
|
-
exports.
|
|
1173
|
-
exports.
|
|
1174
|
-
exports.
|
|
1175
|
-
exports.
|
|
1176
|
-
exports.
|
|
1177
|
-
exports.
|
|
1178
|
-
exports.
|
|
1179
|
-
exports.
|
|
1180
|
-
exports.
|
|
1181
|
-
exports.
|
|
1334
|
+
exports.AddChainError = getProvider.AddChainError;
|
|
1335
|
+
exports.ChainDoesNotSupportMulticallError = getProvider.ChainDoesNotSupportMulticallError;
|
|
1336
|
+
exports.ChainMismatchError = getProvider.ChainMismatchError;
|
|
1337
|
+
exports.ChainNotConfiguredError = getProvider.ChainNotConfiguredError;
|
|
1338
|
+
exports.Client = getProvider.Client;
|
|
1339
|
+
exports.Connector = getProvider.Connector;
|
|
1340
|
+
exports.ConnectorAlreadyConnectedError = getProvider.ConnectorAlreadyConnectedError;
|
|
1341
|
+
exports.ConnectorNotFoundError = getProvider.ConnectorNotFoundError;
|
|
1342
|
+
exports.ContractMethodDoesNotExistError = getProvider.ContractMethodDoesNotExistError;
|
|
1343
|
+
exports.ContractMethodNoResultError = getProvider.ContractMethodNoResultError;
|
|
1344
|
+
exports.InjectedConnector = getProvider.InjectedConnector;
|
|
1345
|
+
exports.ProviderChainsNotFound = getProvider.ProviderChainsNotFound;
|
|
1346
|
+
exports.ProviderRpcError = getProvider.ProviderRpcError;
|
|
1347
|
+
exports.ResourceUnavailableError = getProvider.ResourceUnavailableError;
|
|
1348
|
+
exports.RpcError = getProvider.RpcError;
|
|
1349
|
+
exports.SwitchChainError = getProvider.SwitchChainError;
|
|
1350
|
+
exports.SwitchChainNotSupportedError = getProvider.SwitchChainNotSupportedError;
|
|
1351
|
+
exports.UserRejectedRequestError = getProvider.UserRejectedRequestError;
|
|
1352
|
+
exports.createClient = getProvider.createClient;
|
|
1353
|
+
exports.createStorage = getProvider.createStorage;
|
|
1354
|
+
exports.getProvider = getProvider.getProvider;
|
|
1355
|
+
exports.noopStorage = getProvider.noopStorage;
|
|
1356
|
+
exports.normalizeChainId = getProvider.normalizeChainId;
|
|
1182
1357
|
exports.alchemyRpcUrls = rpcs.alchemyRpcUrls;
|
|
1183
1358
|
exports.infuraRpcUrls = rpcs.infuraRpcUrls;
|
|
1184
1359
|
exports.publicRpcUrls = rpcs.publicRpcUrls;
|
|
@@ -1206,9 +1381,10 @@ exports.fetchToken = fetchToken;
|
|
|
1206
1381
|
exports.getAccount = getAccount;
|
|
1207
1382
|
exports.getContract = getContract;
|
|
1208
1383
|
exports.getNetwork = getNetwork;
|
|
1209
|
-
exports.getProvider = getProvider;
|
|
1210
1384
|
exports.getWebSocketProvider = getWebSocketProvider;
|
|
1211
1385
|
exports.parseContractResult = parseContractResult;
|
|
1386
|
+
exports.prepareSendTransaction = prepareSendTransaction;
|
|
1387
|
+
exports.prepareWriteContract = prepareWriteContract;
|
|
1212
1388
|
exports.readContract = readContract;
|
|
1213
1389
|
exports.readContracts = readContracts;
|
|
1214
1390
|
exports.sendTransaction = sendTransaction;
|