@wagmi/core 0.5.5 → 0.5.7
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/chains/dist/wagmi-core-chains.cjs.dev.js +2 -2
- package/chains/dist/wagmi-core-chains.cjs.prod.js +2 -2
- package/chains/dist/wagmi-core-chains.esm.js +2 -2
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +10 -6
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +10 -6
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +10 -6
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +3 -3
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +3 -3
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +3 -3
- package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +3 -3
- package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +3 -3
- package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +3 -3
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +3 -3
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +3 -3
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +3 -3
- package/dist/{chains-868f0ac6.cjs.prod.js → chains-789e0c2e.cjs.prod.js} +2 -1
- package/dist/{chains-5ceae8b1.esm.js → chains-8c76af1b.esm.js} +3 -2
- package/dist/{chains-4fdb21bc.cjs.dev.js → chains-ec1de502.cjs.dev.js} +2 -1
- package/dist/debounce-0862bf88.esm.js +18 -0
- package/dist/debounce-2d836dc9.cjs.prod.js +20 -0
- package/dist/debounce-46ac0312.cjs.dev.js +20 -0
- package/dist/declarations/src/client.d.ts +16 -2
- package/dist/declarations/src/constants/rpcs.d.ts +1 -1
- package/dist/declarations/src/errors.d.ts +23 -2
- package/dist/declarations/src/index.d.ts +1 -1
- package/dist/declarations/src/internal.d.ts +1 -0
- package/dist/declarations/src/utils/debounce.d.ts +1 -0
- package/dist/declarations/src/utils/index.d.ts +2 -1
- package/dist/declarations/src/utils/logger.d.ts +1 -0
- package/dist/{getProvider-316a5d3f.cjs.dev.js → getProvider-1b3eeda8.cjs.dev.js} +117 -35
- package/dist/{getProvider-51ad330f.cjs.prod.js → getProvider-ad4ce6a4.cjs.prod.js} +117 -35
- package/dist/{getProvider-a6708613.esm.js → getProvider-f1dfc7e3.esm.js} +116 -36
- package/dist/{rpcs-6e1b1718.esm.js → rpcs-8d636858.esm.js} +1 -0
- package/dist/{rpcs-3326627e.cjs.dev.js → rpcs-d2cd65f1.cjs.dev.js} +1 -0
- package/dist/{rpcs-45537550.cjs.prod.js → rpcs-edec227e.cjs.prod.js} +1 -0
- package/dist/wagmi-core.cjs.dev.js +112 -37
- package/dist/wagmi-core.cjs.prod.js +112 -37
- package/dist/wagmi-core.esm.js +109 -35
- package/internal/dist/wagmi-core-internal.cjs.d.ts +1 -0
- package/internal/dist/wagmi-core-internal.cjs.dev.js +9 -0
- package/internal/dist/wagmi-core-internal.cjs.js +7 -0
- package/internal/dist/wagmi-core-internal.cjs.prod.js +9 -0
- package/internal/dist/wagmi-core-internal.esm.js +1 -0
- package/internal/package.json +4 -0
- package/package.json +7 -1
- package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.dev.js +1 -1
- package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.prod.js +1 -1
- package/providers/alchemy/dist/wagmi-core-providers-alchemy.esm.js +1 -1
- package/providers/coinbaseNode/dist/wagmi-core-providers-coinbaseNode.cjs.d.ts +11 -0
- package/providers/coinbaseNode/dist/wagmi-core-providers-coinbaseNode.cjs.js +16 -0
- package/providers/infura/dist/wagmi-core-providers-infura.cjs.dev.js +1 -1
- package/providers/infura/dist/wagmi-core-providers-infura.cjs.prod.js +1 -1
- package/providers/infura/dist/wagmi-core-providers-infura.esm.js +1 -1
- package/dist/declarations/src/utils/warn.d.ts +0 -1
|
@@ -3,7 +3,7 @@ import create from 'zustand/vanilla';
|
|
|
3
3
|
import { providers } from 'ethers';
|
|
4
4
|
import { getAddress, hexValue } from 'ethers/lib/utils';
|
|
5
5
|
import EventEmitter from 'eventemitter3';
|
|
6
|
-
import { d as defaultChains } from './chains-
|
|
6
|
+
import { d as defaultChains } from './chains-8c76af1b.esm.js';
|
|
7
7
|
|
|
8
8
|
function _checkPrivateRedeclaration(obj, privateCollection) {
|
|
9
9
|
if (privateCollection.has(obj)) {
|
|
@@ -232,29 +232,65 @@ class ContractMethodDoesNotExistError extends Error {
|
|
|
232
232
|
}
|
|
233
233
|
class ContractMethodNoResultError extends Error {
|
|
234
234
|
constructor(_ref5) {
|
|
235
|
-
var _chain$blockExplorers2;
|
|
236
|
-
|
|
237
235
|
let {
|
|
238
236
|
addressOrName,
|
|
237
|
+
args,
|
|
239
238
|
chainId,
|
|
240
239
|
functionName
|
|
241
240
|
} = _ref5;
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
} = _ref6;
|
|
250
|
-
return id === (chainId || network.chainId);
|
|
251
|
-
});
|
|
252
|
-
const blockExplorer = chain === null || chain === void 0 ? void 0 : (_chain$blockExplorers2 = chain.blockExplorers) === null || _chain$blockExplorers2 === void 0 ? void 0 : _chain$blockExplorers2.default;
|
|
253
|
-
super(["Function \"".concat(functionName, "\" on contract \"").concat(addressOrName, "\" returned an empty response."), '', "Are you sure the function \"".concat(functionName, "\" exists on this contract?"), ...(blockExplorer ? ['', "".concat(blockExplorer === null || blockExplorer === void 0 ? void 0 : blockExplorer.name, ": ").concat(blockExplorer === null || blockExplorer === void 0 ? void 0 : blockExplorer.url, "/address/").concat(addressOrName, "#readContract")] : [])].join('\n'));
|
|
241
|
+
super(['Contract read returned an empty response. This could be due to any of the following:', "- The contract does not have the function \"".concat(functionName, "\","), '- The parameters passed to the contract function may be invalid, or', '- The address is not a contract.', '', "Config:", JSON.stringify({
|
|
242
|
+
addressOrName,
|
|
243
|
+
contractInterface: '...',
|
|
244
|
+
functionName,
|
|
245
|
+
chainId,
|
|
246
|
+
args
|
|
247
|
+
}, null, 2)].join('\n'));
|
|
254
248
|
|
|
255
249
|
_defineProperty(this, "name", 'ContractMethodNoResultError');
|
|
256
250
|
}
|
|
257
251
|
|
|
252
|
+
}
|
|
253
|
+
class ContractMethodRevertedError extends Error {
|
|
254
|
+
constructor(_ref6) {
|
|
255
|
+
let {
|
|
256
|
+
addressOrName,
|
|
257
|
+
args,
|
|
258
|
+
chainId,
|
|
259
|
+
functionName,
|
|
260
|
+
errorMessage
|
|
261
|
+
} = _ref6;
|
|
262
|
+
super(['Contract method reverted with an error.', '', "Config:", JSON.stringify({
|
|
263
|
+
addressOrName,
|
|
264
|
+
contractInterface: '...',
|
|
265
|
+
functionName,
|
|
266
|
+
chainId,
|
|
267
|
+
args
|
|
268
|
+
}, null, 2), '', "Details: ".concat(errorMessage)].join('\n'));
|
|
269
|
+
|
|
270
|
+
_defineProperty(this, "name", 'ContractMethodRevertedError');
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
}
|
|
274
|
+
class ContractResultDecodeError extends Error {
|
|
275
|
+
constructor(_ref7) {
|
|
276
|
+
let {
|
|
277
|
+
addressOrName,
|
|
278
|
+
args,
|
|
279
|
+
chainId,
|
|
280
|
+
functionName,
|
|
281
|
+
errorMessage
|
|
282
|
+
} = _ref7;
|
|
283
|
+
super(['Failed to decode contract function result.', '', "Config:", JSON.stringify({
|
|
284
|
+
addressOrName,
|
|
285
|
+
contractInterface: '...',
|
|
286
|
+
functionName,
|
|
287
|
+
chainId,
|
|
288
|
+
args
|
|
289
|
+
}, null, 2), '', "Details: ".concat(errorMessage)].join('\n'));
|
|
290
|
+
|
|
291
|
+
_defineProperty(this, "name", 'ContractResultDecodeError');
|
|
292
|
+
}
|
|
293
|
+
|
|
258
294
|
}
|
|
259
295
|
class ProviderChainsNotFound extends Error {
|
|
260
296
|
constructor() {
|
|
@@ -283,10 +319,10 @@ class SwitchChainError extends ProviderRpcError {
|
|
|
283
319
|
|
|
284
320
|
}
|
|
285
321
|
class SwitchChainNotSupportedError extends Error {
|
|
286
|
-
constructor(
|
|
322
|
+
constructor(_ref8) {
|
|
287
323
|
let {
|
|
288
324
|
connector
|
|
289
|
-
} =
|
|
325
|
+
} = _ref8;
|
|
290
326
|
super("\"".concat(connector.name, "\" does not support programmatic chain switching."));
|
|
291
327
|
|
|
292
328
|
_defineProperty(this, "name", 'SwitchChainNotSupportedError');
|
|
@@ -732,6 +768,9 @@ class Client {
|
|
|
732
768
|
storage = createStorage({
|
|
733
769
|
storage: typeof window !== 'undefined' ? window.localStorage : noopStorage
|
|
734
770
|
}),
|
|
771
|
+
logger = {
|
|
772
|
+
warn: console.warn
|
|
773
|
+
},
|
|
735
774
|
webSocketProvider: _webSocketProvider
|
|
736
775
|
} = _ref;
|
|
737
776
|
|
|
@@ -739,10 +778,14 @@ class Client {
|
|
|
739
778
|
|
|
740
779
|
_defineProperty(this, "config", void 0);
|
|
741
780
|
|
|
781
|
+
_defineProperty(this, "providers", new Map());
|
|
782
|
+
|
|
742
783
|
_defineProperty(this, "storage", void 0);
|
|
743
784
|
|
|
744
785
|
_defineProperty(this, "store", void 0);
|
|
745
786
|
|
|
787
|
+
_defineProperty(this, "webSocketProviders", new Map());
|
|
788
|
+
|
|
746
789
|
_classPrivateFieldInitSpec(this, _isAutoConnecting, {
|
|
747
790
|
writable: true,
|
|
748
791
|
value: void 0
|
|
@@ -753,7 +796,15 @@ class Client {
|
|
|
753
796
|
value: void 0
|
|
754
797
|
});
|
|
755
798
|
|
|
756
|
-
|
|
799
|
+
this.config = {
|
|
800
|
+
autoConnect,
|
|
801
|
+
connectors,
|
|
802
|
+
logger,
|
|
803
|
+
provider: _provider,
|
|
804
|
+
storage,
|
|
805
|
+
webSocketProvider: _webSocketProvider
|
|
806
|
+
}; // Check status for autoConnect flag
|
|
807
|
+
|
|
757
808
|
let status = 'disconnected';
|
|
758
809
|
|
|
759
810
|
let _chainId;
|
|
@@ -773,13 +824,13 @@ class Client {
|
|
|
773
824
|
|
|
774
825
|
this.store = create(subscribeWithSelector(persist(() => ({
|
|
775
826
|
connectors: typeof connectors === 'function' ? connectors() : connectors,
|
|
776
|
-
provider:
|
|
827
|
+
provider: this.getProvider({
|
|
777
828
|
chainId: _chainId
|
|
778
|
-
})
|
|
829
|
+
}),
|
|
779
830
|
status,
|
|
780
|
-
webSocketProvider:
|
|
831
|
+
webSocketProvider: this.getWebSocketProvider({
|
|
781
832
|
chainId: _chainId
|
|
782
|
-
})
|
|
833
|
+
})
|
|
783
834
|
}), {
|
|
784
835
|
name: storeKey,
|
|
785
836
|
getStorage: () => storage,
|
|
@@ -797,13 +848,6 @@ class Client {
|
|
|
797
848
|
},
|
|
798
849
|
version: 1
|
|
799
850
|
})));
|
|
800
|
-
this.config = {
|
|
801
|
-
autoConnect,
|
|
802
|
-
connectors,
|
|
803
|
-
provider: _provider,
|
|
804
|
-
storage,
|
|
805
|
-
webSocketProvider: _webSocketProvider
|
|
806
|
-
};
|
|
807
851
|
this.storage = storage;
|
|
808
852
|
|
|
809
853
|
_classPrivateFieldSet(this, _lastUsedConnector, storage === null || storage === void 0 ? void 0 : storage.getItem('wallet'));
|
|
@@ -922,6 +966,40 @@ class Client {
|
|
|
922
966
|
return this.data;
|
|
923
967
|
}
|
|
924
968
|
|
|
969
|
+
getProvider() {
|
|
970
|
+
let {
|
|
971
|
+
bust,
|
|
972
|
+
chainId
|
|
973
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
974
|
+
let provider_ = this.providers.get(chainId !== null && chainId !== void 0 ? chainId : -1);
|
|
975
|
+
if (provider_ && !bust) return provider_;
|
|
976
|
+
const {
|
|
977
|
+
provider
|
|
978
|
+
} = this.config;
|
|
979
|
+
provider_ = typeof provider === 'function' ? provider({
|
|
980
|
+
chainId
|
|
981
|
+
}) : provider;
|
|
982
|
+
this.providers.set(chainId !== null && chainId !== void 0 ? chainId : -1, provider_);
|
|
983
|
+
return provider_;
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
getWebSocketProvider() {
|
|
987
|
+
let {
|
|
988
|
+
bust,
|
|
989
|
+
chainId
|
|
990
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
991
|
+
let webSocketProvider_ = this.webSocketProviders.get(chainId !== null && chainId !== void 0 ? chainId : -1);
|
|
992
|
+
if (webSocketProvider_ && !bust) return webSocketProvider_;
|
|
993
|
+
const {
|
|
994
|
+
webSocketProvider
|
|
995
|
+
} = this.config;
|
|
996
|
+
webSocketProvider_ = typeof webSocketProvider === 'function' ? webSocketProvider({
|
|
997
|
+
chainId
|
|
998
|
+
}) : webSocketProvider;
|
|
999
|
+
if (webSocketProvider_) this.webSocketProviders.set(chainId !== null && chainId !== void 0 ? chainId : -1, webSocketProvider_);
|
|
1000
|
+
return webSocketProvider_;
|
|
1001
|
+
}
|
|
1002
|
+
|
|
925
1003
|
setLastUsedConnector() {
|
|
926
1004
|
var _this$storage;
|
|
927
1005
|
|
|
@@ -981,12 +1059,14 @@ function _addEffects2() {
|
|
|
981
1059
|
return data === null || data === void 0 ? void 0 : (_data$chain2 = data.chain) === null || _data$chain2 === void 0 ? void 0 : _data$chain2.id;
|
|
982
1060
|
}, chainId => {
|
|
983
1061
|
this.setState(x => ({ ...x,
|
|
984
|
-
provider:
|
|
1062
|
+
provider: this.getProvider({
|
|
1063
|
+
bust: true,
|
|
985
1064
|
chainId
|
|
986
|
-
})
|
|
987
|
-
webSocketProvider:
|
|
1065
|
+
}),
|
|
1066
|
+
webSocketProvider: this.getWebSocketProvider({
|
|
1067
|
+
bust: true,
|
|
988
1068
|
chainId
|
|
989
|
-
})
|
|
1069
|
+
})
|
|
990
1070
|
}));
|
|
991
1071
|
});
|
|
992
1072
|
}
|
|
@@ -1010,10 +1090,10 @@ function getProvider() {
|
|
|
1010
1090
|
chainId
|
|
1011
1091
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1012
1092
|
const client = getClient();
|
|
1013
|
-
if (chainId
|
|
1093
|
+
if (chainId) return client.getProvider({
|
|
1014
1094
|
chainId
|
|
1015
|
-
});
|
|
1095
|
+
}) || client.provider;
|
|
1016
1096
|
return client.provider;
|
|
1017
1097
|
}
|
|
1018
1098
|
|
|
1019
|
-
export { AddChainError as A, ConnectorAlreadyConnectedError as C, InjectedConnector as I, ProviderChainsNotFound as P, ResourceUnavailableError as R, SwitchChainNotSupportedError as S, UserRejectedRequestError as U, _classPrivateMethodInitSpec as _, ConnectorNotFoundError as a, ChainMismatchError as b, ContractMethodDoesNotExistError as c, getProvider as d, ChainDoesNotSupportMulticallError as e,
|
|
1099
|
+
export { AddChainError as A, ConnectorAlreadyConnectedError as C, InjectedConnector as I, ProviderChainsNotFound as P, ResourceUnavailableError as R, SwitchChainNotSupportedError as S, UserRejectedRequestError as U, _classPrivateMethodInitSpec as _, ConnectorNotFoundError as a, ChainMismatchError as b, ContractMethodDoesNotExistError as c, getProvider as d, ChainDoesNotSupportMulticallError as e, ContractMethodRevertedError as f, getClient as g, ContractMethodNoResultError as h, ContractResultDecodeError as i, createClient as j, Client as k, Connector as l, ChainNotConfiguredError as m, normalizeChainId as n, ProviderRpcError as o, RpcError as p, SwitchChainError as q, createStorage as r, noopStorage as s, _defineProperty as t, _classPrivateFieldInitSpec as u, _classPrivateFieldGet as v, _classPrivateFieldSet as w, _classPrivateMethodGet as x };
|
|
@@ -21,6 +21,7 @@ const infuraRpcUrls = {
|
|
|
21
21
|
rinkeby: 'https://rinkeby.infura.io/v3',
|
|
22
22
|
goerli: 'https://goerli.infura.io/v3',
|
|
23
23
|
kovan: 'https://kovan.infura.io/v3',
|
|
24
|
+
sepolia: 'https://sepolia.infura.io/v3',
|
|
24
25
|
optimism: 'https://optimism-mainnet.infura.io/v3',
|
|
25
26
|
optimismKovan: 'https://optimism-kovan.infura.io/v3',
|
|
26
27
|
optimismGoerli: 'https://optimism-goerli.infura.io/v3',
|
|
@@ -23,6 +23,7 @@ const infuraRpcUrls = {
|
|
|
23
23
|
rinkeby: 'https://rinkeby.infura.io/v3',
|
|
24
24
|
goerli: 'https://goerli.infura.io/v3',
|
|
25
25
|
kovan: 'https://kovan.infura.io/v3',
|
|
26
|
+
sepolia: 'https://sepolia.infura.io/v3',
|
|
26
27
|
optimism: 'https://optimism-mainnet.infura.io/v3',
|
|
27
28
|
optimismKovan: 'https://optimism-kovan.infura.io/v3',
|
|
28
29
|
optimismGoerli: 'https://optimism-goerli.infura.io/v3',
|
|
@@ -23,6 +23,7 @@ const infuraRpcUrls = {
|
|
|
23
23
|
rinkeby: 'https://rinkeby.infura.io/v3',
|
|
24
24
|
goerli: 'https://goerli.infura.io/v3',
|
|
25
25
|
kovan: 'https://kovan.infura.io/v3',
|
|
26
|
+
sepolia: 'https://sepolia.infura.io/v3',
|
|
26
27
|
optimism: 'https://optimism-mainnet.infura.io/v3',
|
|
27
28
|
optimismKovan: 'https://optimism-kovan.infura.io/v3',
|
|
28
29
|
optimismGoerli: 'https://optimism-goerli.infura.io/v3',
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var getProvider = require('./getProvider-
|
|
5
|
+
var getProvider = require('./getProvider-1b3eeda8.cjs.dev.js');
|
|
6
6
|
var ethers = require('ethers');
|
|
7
7
|
var ethers$1 = require('ethers/lib/ethers');
|
|
8
8
|
var utils = require('ethers/lib/utils');
|
|
9
|
+
var chains = require('./chains-ec1de502.cjs.dev.js');
|
|
9
10
|
var shallow = require('zustand/shallow');
|
|
10
|
-
var
|
|
11
|
-
var
|
|
11
|
+
var debounce = require('./debounce-46ac0312.cjs.dev.js');
|
|
12
|
+
var rpcs = require('./rpcs-d2cd65f1.cjs.dev.js');
|
|
12
13
|
require('zustand/middleware');
|
|
13
14
|
require('zustand/vanilla');
|
|
14
15
|
require('eventemitter3');
|
|
@@ -176,6 +177,12 @@ function deepEqual(a, b) {
|
|
|
176
177
|
return a !== a && b !== b;
|
|
177
178
|
}
|
|
178
179
|
|
|
180
|
+
function logWarn(message) {
|
|
181
|
+
var _getClient, _getClient$config$log, _getClient$config$log2;
|
|
182
|
+
|
|
183
|
+
(_getClient = getProvider.getClient()) === null || _getClient === void 0 ? void 0 : (_getClient$config$log = _getClient.config.logger) === null || _getClient$config$log === void 0 ? void 0 : (_getClient$config$log2 = _getClient$config$log.warn) === null || _getClient$config$log2 === void 0 ? void 0 : _getClient$config$log2.call(_getClient$config$log, message);
|
|
184
|
+
}
|
|
185
|
+
|
|
179
186
|
function minimizeContractInterface(_ref) {
|
|
180
187
|
let {
|
|
181
188
|
contractInterface,
|
|
@@ -356,7 +363,7 @@ async function deprecatedWriteContract(_ref) {
|
|
|
356
363
|
});
|
|
357
364
|
const contractWithSigner = contract.connect(signer);
|
|
358
365
|
const contractFunction = contractWithSigner[functionName];
|
|
359
|
-
if (!contractFunction)
|
|
366
|
+
if (!contractFunction) logWarn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(addressOrName, "\""));
|
|
360
367
|
return await contractFunction(...params);
|
|
361
368
|
} catch (error) {
|
|
362
369
|
if (error.code === 4001) throw new getProvider.UserRejectedRequestError(error);
|
|
@@ -468,9 +475,9 @@ function getWebSocketProvider() {
|
|
|
468
475
|
chainId
|
|
469
476
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
470
477
|
const client = getProvider.getClient();
|
|
471
|
-
if (chainId
|
|
478
|
+
if (chainId) return client.getWebSocketProvider({
|
|
472
479
|
chainId
|
|
473
|
-
});
|
|
480
|
+
}) || client.webSocketProvider;
|
|
474
481
|
return client.webSocketProvider;
|
|
475
482
|
}
|
|
476
483
|
|
|
@@ -521,7 +528,7 @@ async function readContract(_ref) {
|
|
|
521
528
|
});
|
|
522
529
|
const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
|
|
523
530
|
const contractFunction = contract[functionName];
|
|
524
|
-
if (!contractFunction)
|
|
531
|
+
if (!contractFunction) logWarn("\"".concat(functionName, "\" is not in the interface for contract \"").concat(addressOrName, "\""));
|
|
525
532
|
const response = await (contractFunction === null || contractFunction === void 0 ? void 0 : contractFunction(...params));
|
|
526
533
|
return response;
|
|
527
534
|
}
|
|
@@ -566,13 +573,23 @@ async function multicall(_ref) {
|
|
|
566
573
|
contractInterface
|
|
567
574
|
});
|
|
568
575
|
const params = Array.isArray(args) ? args : args ? [args] : [];
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
+
|
|
577
|
+
try {
|
|
578
|
+
const callData = contract.interface.encodeFunctionData(functionName, params);
|
|
579
|
+
if (!contract[functionName]) logWarn("\"".concat(functionName, "\" is not in the interface for contract \"").concat(addressOrName, "\""));
|
|
580
|
+
return {
|
|
581
|
+
target: addressOrName,
|
|
582
|
+
allowFailure,
|
|
583
|
+
callData
|
|
584
|
+
};
|
|
585
|
+
} catch (err) {
|
|
586
|
+
if (!allowFailure) throw err;
|
|
587
|
+
return {
|
|
588
|
+
target: addressOrName,
|
|
589
|
+
allowFailure,
|
|
590
|
+
callData: '0x'
|
|
591
|
+
};
|
|
592
|
+
}
|
|
576
593
|
});
|
|
577
594
|
const params = [...[calls], ...(overrides ? [overrides] : [])];
|
|
578
595
|
const results = await multicallContract.aggregate3(...params);
|
|
@@ -581,34 +598,62 @@ async function multicall(_ref) {
|
|
|
581
598
|
returnData,
|
|
582
599
|
success
|
|
583
600
|
} = _ref3;
|
|
584
|
-
if (!success) return null;
|
|
585
601
|
const {
|
|
586
602
|
addressOrName,
|
|
587
603
|
contractInterface,
|
|
588
|
-
functionName
|
|
604
|
+
functionName,
|
|
605
|
+
args
|
|
589
606
|
} = contracts[i];
|
|
607
|
+
const contract = getContract({
|
|
608
|
+
addressOrName,
|
|
609
|
+
contractInterface
|
|
610
|
+
});
|
|
611
|
+
|
|
612
|
+
if (!success) {
|
|
613
|
+
let error;
|
|
614
|
+
|
|
615
|
+
try {
|
|
616
|
+
contract.interface.decodeFunctionResult(functionName, returnData);
|
|
617
|
+
} catch (err) {
|
|
618
|
+
error = new getProvider.ContractMethodRevertedError({
|
|
619
|
+
addressOrName,
|
|
620
|
+
args,
|
|
621
|
+
chainId: chain.id,
|
|
622
|
+
functionName,
|
|
623
|
+
errorMessage: err.message
|
|
624
|
+
});
|
|
625
|
+
if (!allowFailure) throw error;
|
|
626
|
+
logWarn(error.message);
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
return null;
|
|
630
|
+
}
|
|
590
631
|
|
|
591
632
|
if (returnData === '0x') {
|
|
592
|
-
const
|
|
633
|
+
const error = new getProvider.ContractMethodNoResultError({
|
|
593
634
|
addressOrName,
|
|
635
|
+
args,
|
|
594
636
|
chainId: chain.id,
|
|
595
637
|
functionName
|
|
596
638
|
});
|
|
597
|
-
if (!allowFailure) throw
|
|
598
|
-
|
|
639
|
+
if (!allowFailure) throw error;
|
|
640
|
+
logWarn(error.message);
|
|
599
641
|
return null;
|
|
600
642
|
}
|
|
601
643
|
|
|
602
|
-
const contract = getContract({
|
|
603
|
-
addressOrName,
|
|
604
|
-
contractInterface
|
|
605
|
-
});
|
|
606
|
-
|
|
607
644
|
try {
|
|
608
645
|
const result = contract.interface.decodeFunctionResult(functionName, returnData);
|
|
609
646
|
return Array.isArray(result) && result.length === 1 ? result[0] : result;
|
|
610
647
|
} catch (err) {
|
|
611
|
-
|
|
648
|
+
const error = new getProvider.ContractResultDecodeError({
|
|
649
|
+
addressOrName,
|
|
650
|
+
args,
|
|
651
|
+
chainId: chain.id,
|
|
652
|
+
functionName,
|
|
653
|
+
errorMessage: err.message
|
|
654
|
+
});
|
|
655
|
+
if (!allowFailure) throw error;
|
|
656
|
+
logWarn(error.message);
|
|
612
657
|
return null;
|
|
613
658
|
}
|
|
614
659
|
});
|
|
@@ -631,7 +676,8 @@ async function readContracts(_ref) {
|
|
|
631
676
|
[chainId]: [...(contracts[chainId] || []), contract]
|
|
632
677
|
};
|
|
633
678
|
}, {});
|
|
634
|
-
|
|
679
|
+
|
|
680
|
+
const promises = () => Object.entries(contractsByChainId).map(_ref2 => {
|
|
635
681
|
let [chainId, contracts] = _ref2;
|
|
636
682
|
return multicall({
|
|
637
683
|
allowFailure,
|
|
@@ -642,11 +688,11 @@ async function readContracts(_ref) {
|
|
|
642
688
|
});
|
|
643
689
|
|
|
644
690
|
if (allowFailure) {
|
|
645
|
-
return (await Promise.allSettled(promises)).map(result => {
|
|
691
|
+
return (await Promise.allSettled(promises())).map(result => {
|
|
646
692
|
if (result.status === 'fulfilled') return result.value;
|
|
647
693
|
|
|
648
694
|
if (result.reason instanceof getProvider.ChainDoesNotSupportMulticallError) {
|
|
649
|
-
|
|
695
|
+
logWarn(result.reason.message);
|
|
650
696
|
throw result.reason;
|
|
651
697
|
}
|
|
652
698
|
|
|
@@ -654,18 +700,38 @@ async function readContracts(_ref) {
|
|
|
654
700
|
}).flat();
|
|
655
701
|
}
|
|
656
702
|
|
|
657
|
-
return (await Promise.all(promises)).flat();
|
|
703
|
+
return (await Promise.all(promises())).flat();
|
|
658
704
|
} catch (err) {
|
|
705
|
+
if (err instanceof getProvider.ContractResultDecodeError) throw err;
|
|
659
706
|
if (err instanceof getProvider.ContractMethodNoResultError) throw err;
|
|
660
|
-
|
|
707
|
+
if (err instanceof getProvider.ContractMethodRevertedError) throw err;
|
|
708
|
+
|
|
709
|
+
const promises = () => contracts.map(contract => readContract({ ...contract,
|
|
661
710
|
overrides
|
|
662
711
|
}));
|
|
663
712
|
|
|
664
713
|
if (allowFailure) {
|
|
665
|
-
return (await Promise.allSettled(promises)).map(result =>
|
|
714
|
+
return (await Promise.allSettled(promises())).map((result, i) => {
|
|
715
|
+
if (result.status === 'fulfilled') return result.value;
|
|
716
|
+
const {
|
|
717
|
+
addressOrName,
|
|
718
|
+
functionName,
|
|
719
|
+
chainId,
|
|
720
|
+
args
|
|
721
|
+
} = contracts[i];
|
|
722
|
+
const error = new getProvider.ContractMethodRevertedError({
|
|
723
|
+
addressOrName,
|
|
724
|
+
functionName,
|
|
725
|
+
chainId: chainId !== null && chainId !== void 0 ? chainId : chains.mainnet.id,
|
|
726
|
+
args,
|
|
727
|
+
errorMessage: result.reason
|
|
728
|
+
});
|
|
729
|
+
logWarn(error.message);
|
|
730
|
+
return null;
|
|
731
|
+
});
|
|
666
732
|
}
|
|
667
733
|
|
|
668
|
-
return await Promise.all(promises);
|
|
734
|
+
return await Promise.all(promises());
|
|
669
735
|
}
|
|
670
736
|
}
|
|
671
737
|
|
|
@@ -737,13 +803,20 @@ function watchBlockNumber(args, callback) {
|
|
|
737
803
|
let previousProvider;
|
|
738
804
|
|
|
739
805
|
const createListener = provider => {
|
|
806
|
+
// We need to debounce the listener as we want to opt-out
|
|
807
|
+
// of the behavior where ethers emits a "block" event for
|
|
808
|
+
// every block that was missed in between the `pollingInterval`.
|
|
809
|
+
// We are setting a wait time of 1 as emitting an event in
|
|
810
|
+
// ethers takes ~0.1ms.
|
|
811
|
+
const debouncedCallback = debounce.debounce(callback, 1);
|
|
812
|
+
|
|
740
813
|
if (previousProvider) {
|
|
741
814
|
var _previousProvider;
|
|
742
815
|
|
|
743
|
-
(_previousProvider = previousProvider) === null || _previousProvider === void 0 ? void 0 : _previousProvider.off('block',
|
|
816
|
+
(_previousProvider = previousProvider) === null || _previousProvider === void 0 ? void 0 : _previousProvider.off('block', debouncedCallback);
|
|
744
817
|
}
|
|
745
818
|
|
|
746
|
-
provider.on('block',
|
|
819
|
+
provider.on('block', debouncedCallback);
|
|
747
820
|
previousProvider = provider;
|
|
748
821
|
};
|
|
749
822
|
|
|
@@ -1469,6 +1542,8 @@ exports.ConnectorAlreadyConnectedError = getProvider.ConnectorAlreadyConnectedEr
|
|
|
1469
1542
|
exports.ConnectorNotFoundError = getProvider.ConnectorNotFoundError;
|
|
1470
1543
|
exports.ContractMethodDoesNotExistError = getProvider.ContractMethodDoesNotExistError;
|
|
1471
1544
|
exports.ContractMethodNoResultError = getProvider.ContractMethodNoResultError;
|
|
1545
|
+
exports.ContractMethodRevertedError = getProvider.ContractMethodRevertedError;
|
|
1546
|
+
exports.ContractResultDecodeError = getProvider.ContractResultDecodeError;
|
|
1472
1547
|
exports.InjectedConnector = getProvider.InjectedConnector;
|
|
1473
1548
|
exports.ProviderChainsNotFound = getProvider.ProviderChainsNotFound;
|
|
1474
1549
|
exports.ProviderRpcError = getProvider.ProviderRpcError;
|
|
@@ -1482,15 +1557,15 @@ exports.createStorage = getProvider.createStorage;
|
|
|
1482
1557
|
exports.getProvider = getProvider.getProvider;
|
|
1483
1558
|
exports.noopStorage = getProvider.noopStorage;
|
|
1484
1559
|
exports.normalizeChainId = getProvider.normalizeChainId;
|
|
1485
|
-
exports.alchemyRpcUrls = rpcs.alchemyRpcUrls;
|
|
1486
|
-
exports.infuraRpcUrls = rpcs.infuraRpcUrls;
|
|
1487
|
-
exports.publicRpcUrls = rpcs.publicRpcUrls;
|
|
1488
1560
|
exports.allChains = chains.allChains;
|
|
1489
1561
|
exports.chain = chains.chain;
|
|
1490
1562
|
exports.chainId = chains.chainId;
|
|
1491
1563
|
exports.defaultChains = chains.defaultChains;
|
|
1492
1564
|
exports.defaultL2Chains = chains.defaultL2Chains;
|
|
1493
1565
|
exports.etherscanBlockExplorers = chains.etherscanBlockExplorers;
|
|
1566
|
+
exports.alchemyRpcUrls = rpcs.alchemyRpcUrls;
|
|
1567
|
+
exports.infuraRpcUrls = rpcs.infuraRpcUrls;
|
|
1568
|
+
exports.publicRpcUrls = rpcs.publicRpcUrls;
|
|
1494
1569
|
exports.configureChains = configureChains;
|
|
1495
1570
|
exports.connect = connect;
|
|
1496
1571
|
exports.deepEqual = deepEqual;
|