@@ -3,7 +3,7 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
3
3
/**
4
4
* The current version of Ethers.
5
5
*/
6
- const version = "6.5.1 ";
6
+ const version = "6.6.0 ";
7
7
8
8
/**
9
9
* Property helper functions.
@@ -2263,10 +2263,8 @@ class FixedNumber {
2263
2263
* for %%decimals%%) cannot fit in %%format%%, either due to overflow
2264
2264
* or underflow (precision loss).
2265
2265
*/
2266
- static fromValue(_value, decimals, _format) {
2267
- if (decimals == null) {
2268
- decimals = 0;
2269
- }
2266
+ static fromValue(_value, _decimals, _format) {
2267
+ const decimals = (_decimals == null) ? 0 : getNumber(_decimals);
2270
2268
const format = getFormat(_format);
2271
2269
let value = getBigInt(_value, "value");
2272
2270
const delta = decimals - format.decimals;
@@ -14567,6 +14565,13 @@ class BaseContract {
14567
14565
connect(runner) {
14568
14566
return new BaseContract(this.target, this.interface, runner);
14569
14567
}
14568
+ /**
14569
+ * Return a new Contract instance with the same ABI and runner, but
14570
+ * a different %%target%%.
14571
+ */
14572
+ attach(target) {
14573
+ return new BaseContract(target, this.interface, this.runner);
14574
+ }
14570
14575
/**
14571
14576
* Return the resolved address of this Contract.
14572
14577
*/
@@ -14887,6 +14892,9 @@ class ContractFactory {
14887
14892
bytecode, interface: iface, runner: (runner || null)
14888
14893
});
14889
14894
}
14895
+ attach(target) {
14896
+ return new BaseContract(target, this.interface, this.runner);
14897
+ }
14890
14898
/**
14891
14899
* Resolves to the transaction to deploy the contract, passing %%args%%
14892
14900
* into the constructor.
@@ -15038,7 +15046,7 @@ class EnsResolver {
15038
15046
"function supportsInterface(bytes4) view returns (bool)",
15039
15047
"function resolve(bytes, bytes) view returns (bytes)",
15040
15048
"function addr(bytes32) view returns (address)",
15041
- "function addr(bytes32, uint) view returns (address )",
15049
+ "function addr(bytes32, uint) view returns (bytes )",
15042
15050
"function text(bytes32, string) view returns (string)",
15043
15051
"function contenthash(bytes32) view returns (bytes)",
15044
15052
], provider);
@@ -15124,6 +15132,14 @@ class EnsResolver {
15124
15132
throw error;
15125
15133
}
15126
15134
}
15135
+ // Try decoding its EVM canonical chain as an EVM chain address first
15136
+ if (coinType >= 0 && coinType < 0x80000000) {
15137
+ let ethCoinType = coinType + 0x80000000;
15138
+ const data = await this.#fetch("addr(bytes32,uint)", [ethCoinType]);
15139
+ if (isHexString(data, 20)) {
15140
+ return getAddress(data);
15141
+ }
15142
+ }
15127
15143
let coinPlugin = null;
15128
15144
for (const plugin of this.provider.plugins) {
15129
15145
if (!(plugin instanceof MulticoinProviderPlugin)) {
@@ -15144,7 +15160,7 @@ class EnsResolver {
15144
15160
return null;
15145
15161
}
15146
15162
// Compute the address
15147
- const address = await coinPlugin.encodeAddress (coinType, data);
15163
+ const address = await coinPlugin.decodeAddress (coinType, data);
15148
15164
if (address != null) {
15149
15165
return address;
15150
15166
}
@@ -16586,6 +16602,9 @@ async function getSubscription(_event, provider) {
16586
16602
assertArgument(false, "unknown ProviderEvent", "event", _event);
16587
16603
}
16588
16604
function getTime$1() { return (new Date()).getTime(); }
16605
+ const defaultOptions$1 = {
16606
+ cacheTimeout: 250
16607
+ };
16589
16608
/**
16590
16609
* An **AbstractProvider** provides a base class for other sub-classes to
16591
16610
* implement the [[Provider]] API by normalizing input arguments and
@@ -16606,12 +16625,14 @@ class AbstractProvider {
16606
16625
#nextTimer;
16607
16626
#timers;
16608
16627
#disableCcipRead;
16628
+ #options;
16609
16629
/**
16610
16630
* Create a new **AbstractProvider** connected to %%network%%, or
16611
16631
* use the various network detection capabilities to discover the
16612
16632
* [[Network]] if necessary.
16613
16633
*/
16614
- constructor(_network) {
16634
+ constructor(_network, options) {
16635
+ this.#options = Object.assign({}, defaultOptions$1, options || {});
16615
16636
if (_network === "any") {
16616
16637
this.#anyNetwork = true;
16617
16638
this.#networkPromise = null;
@@ -16671,6 +16692,11 @@ class AbstractProvider {
16671
16692
set disableCcipRead(value) { this.#disableCcipRead = !!value; }
16672
16693
// Shares multiple identical requests made during the same 250ms
16673
16694
async #perform(req) {
16695
+ const timeout = this.#options.cacheTimeout;
16696
+ // Caching disabled
16697
+ if (timeout < 0) {
16698
+ return await this._perform(req);
16699
+ }
16674
16700
// Create a tag
16675
16701
const tag = getTag(req.method, req);
16676
16702
let perform = this.#performCache.get(tag);
@@ -16681,7 +16707,7 @@ class AbstractProvider {
16681
16707
if (this.#performCache.get(tag) === perform) {
16682
16708
this.#performCache.delete(tag);
16683
16709
}
16684
- }, 250 );
16710
+ }, timeout );
16685
16711
}
16686
16712
return await perform;
16687
16713
}
@@ -18266,7 +18292,8 @@ const defaultOptions = {
18266
18292
staticNetwork: null,
18267
18293
batchStallTime: 10,
18268
18294
batchMaxSize: (1 << 20),
18269
- batchMaxCount: 100 // 100 requests
18295
+ batchMaxCount: 100,
18296
+ cacheTimeout: 250
18270
18297
};
18271
18298
// @TODO: Unchecked Signers
18272
18299
class JsonRpcSigner extends AbstractSigner {
@@ -18484,7 +18511,11 @@ class JsonRpcApiProvider extends AbstractProvider {
18484
18511
}, stallTime);
18485
18512
}
18486
18513
constructor(network, options) {
18487
- super(network);
18514
+ const superOptions = {};
18515
+ if (options && options.cacheTimeout != null) {
18516
+ superOptions.cacheTimeout = options.cacheTimeout;
18517
+ }
18518
+ super(network, superOptions);
18488
18519
this.#nextId = 1;
18489
18520
this.#options = Object.assign({}, defaultOptions, options || {});
18490
18521
this.#payloads = [];
@@ -23343,6 +23374,7 @@ var ethers = /*#__PURE__*/Object.freeze({
23343
23374
MessagePrefix: MessagePrefix,
23344
23375
MinInt256: MinInt256,
23345
23376
Mnemonic: Mnemonic,
23377
+ MulticoinProviderPlugin: MulticoinProviderPlugin,
23346
23378
N: N$1,
23347
23379
NamedFragment: NamedFragment,
23348
23380
Network: Network,
@@ -23474,5 +23506,5 @@ var ethers = /*#__PURE__*/Object.freeze({
23474
23506
zeroPadValue: zeroPadValue
23475
23507
});
23476
23508
23477
- export { AbiCoder, AbstractProvider, AbstractSigner, AlchemyProvider, AnkrProvider, BaseContract, BaseWallet, Block, BrowserProvider, CloudflareProvider, ConstructorFragment, Contract, ContractEventPayload, ContractFactory, ContractTransactionReceipt, ContractTransactionResponse, ContractUnknownEventPayload, EnsPlugin, EnsResolver, ErrorDescription, ErrorFragment, EtherSymbol, EtherscanPlugin, EtherscanProvider, EventFragment, EventLog, EventPayload, FallbackFragment, FallbackProvider, FeeData, FeeDataNetworkPlugin, FetchCancelSignal, FetchRequest, FetchResponse, FixedNumber, Fragment, FunctionFragment, GasCostPlugin, HDNodeVoidWallet, HDNodeWallet, Indexed, InfuraProvider, InfuraWebSocketProvider, Interface, IpcSocketProvider, JsonRpcApiProvider, JsonRpcProvider, JsonRpcSigner, LangEn, Log, LogDescription, MaxInt256, MaxUint256, MessagePrefix, MinInt256, Mnemonic, N$1 as N, NamedFragment, Network, NetworkPlugin, NonceManager, ParamType, PocketProvider, QuickNodeProvider, Result, Signature, SigningKey, SocketBlockSubscriber, SocketEventSubscriber, SocketPendingSubscriber, SocketProvider, SocketSubscriber, StructFragment, Transaction, TransactionDescription, TransactionReceipt, TransactionResponse, Typed, TypedDataEncoder, UnmanagedSubscriber, Utf8ErrorFuncs, VoidSigner, Wallet, WebSocketProvider, WeiPerEther, Wordlist, WordlistOwl, WordlistOwlA, ZeroAddress, ZeroHash, accessListify, assert$1 as assert, assertArgument, assertArgumentCount, assertNormalize, assertPrivate, checkResultErrors, computeAddress, computeHmac, concat, copyRequest, dataLength, dataSlice, decodeBase58, decodeBase64, decodeBytes32String, decodeRlp, decryptCrowdsaleJson, decryptKeystoreJson, decryptKeystoreJsonSync, defaultPath, defineProperties, dnsEncode, encodeBase58, encodeBase64, encodeBytes32String, encodeRlp, encryptKeystoreJson, encryptKeystoreJsonSync, ensNormalize, ethers, formatEther, formatUnits, fromTwos, getAccountPath, getAddress, getBigInt, getBytes, getBytesCopy, getCreate2Address, getCreateAddress, getDefaultProvider, getIcapAddress, getIndexedAccountPath, getNumber, getUint, hashMessage, hexlify, id, isAddress, isAddressable, isBytesLike, isCallException, isCrowdsaleJson, isError, isHexString, isKeystoreJson, isValidName, keccak256, lock, makeError, mask, namehash, parseEther, parseUnits, pbkdf2, randomBytes, recoverAddress, resolveAddress, resolveProperties, ripemd160, scrypt, scryptSync, sha256, sha512, showThrottleMessage, solidityPacked, solidityPackedKeccak256, solidityPackedSha256, stripZerosLeft, toBeArray, toBeHex, toBigInt, toNumber, toQuantity, toTwos, toUtf8Bytes, toUtf8CodePoints, toUtf8String, uuidV4, verifyMessage, verifyTypedData, version, wordlists, zeroPadBytes, zeroPadValue };
23509
+ export { AbiCoder, AbstractProvider, AbstractSigner, AlchemyProvider, AnkrProvider, BaseContract, BaseWallet, Block, BrowserProvider, CloudflareProvider, ConstructorFragment, Contract, ContractEventPayload, ContractFactory, ContractTransactionReceipt, ContractTransactionResponse, ContractUnknownEventPayload, EnsPlugin, EnsResolver, ErrorDescription, ErrorFragment, EtherSymbol, EtherscanPlugin, EtherscanProvider, EventFragment, EventLog, EventPayload, FallbackFragment, FallbackProvider, FeeData, FeeDataNetworkPlugin, FetchCancelSignal, FetchRequest, FetchResponse, FixedNumber, Fragment, FunctionFragment, GasCostPlugin, HDNodeVoidWallet, HDNodeWallet, Indexed, InfuraProvider, InfuraWebSocketProvider, Interface, IpcSocketProvider, JsonRpcApiProvider, JsonRpcProvider, JsonRpcSigner, LangEn, Log, LogDescription, MaxInt256, MaxUint256, MessagePrefix, MinInt256, Mnemonic, MulticoinProviderPlugin, N$1 as N, NamedFragment, Network, NetworkPlugin, NonceManager, ParamType, PocketProvider, QuickNodeProvider, Result, Signature, SigningKey, SocketBlockSubscriber, SocketEventSubscriber, SocketPendingSubscriber, SocketProvider, SocketSubscriber, StructFragment, Transaction, TransactionDescription, TransactionReceipt, TransactionResponse, Typed, TypedDataEncoder, UnmanagedSubscriber, Utf8ErrorFuncs, VoidSigner, Wallet, WebSocketProvider, WeiPerEther, Wordlist, WordlistOwl, WordlistOwlA, ZeroAddress, ZeroHash, accessListify, assert$1 as assert, assertArgument, assertArgumentCount, assertNormalize, assertPrivate, checkResultErrors, computeAddress, computeHmac, concat, copyRequest, dataLength, dataSlice, decodeBase58, decodeBase64, decodeBytes32String, decodeRlp, decryptCrowdsaleJson, decryptKeystoreJson, decryptKeystoreJsonSync, defaultPath, defineProperties, dnsEncode, encodeBase58, encodeBase64, encodeBytes32String, encodeRlp, encryptKeystoreJson, encryptKeystoreJsonSync, ensNormalize, ethers, formatEther, formatUnits, fromTwos, getAccountPath, getAddress, getBigInt, getBytes, getBytesCopy, getCreate2Address, getCreateAddress, getDefaultProvider, getIcapAddress, getIndexedAccountPath, getNumber, getUint, hashMessage, hexlify, id, isAddress, isAddressable, isBytesLike, isCallException, isCrowdsaleJson, isError, isHexString, isKeystoreJson, isValidName, keccak256, lock, makeError, mask, namehash, parseEther, parseUnits, pbkdf2, randomBytes, recoverAddress, resolveAddress, resolveProperties, ripemd160, scrypt, scryptSync, sha256, sha512, showThrottleMessage, solidityPacked, solidityPackedKeccak256, solidityPackedSha256, stripZerosLeft, toBeArray, toBeHex, toBigInt, toNumber, toQuantity, toTwos, toUtf8Bytes, toUtf8CodePoints, toUtf8String, uuidV4, verifyMessage, verifyTypedData, version, wordlists, zeroPadBytes, zeroPadValue };
23478
23510
//# sourceMappingURL=ethers.js.map
0 commit comments