Updated dist files.
This commit is contained in:
parent
cd7a0b36cd
commit
86d50bc9b6
@ -3,6 +3,13 @@ Changelog
|
||||
|
||||
This change log is managed by `scripts/cmds/update-versions` but may be manually updated.
|
||||
|
||||
ethers/v5.0.0-beta.190 (2020-06-01 05:02)
|
||||
-----------------------------------------
|
||||
|
||||
- Re-enable tests removed to fix slow CI. ([cd7a0b3](https://github.com/ethers-io/ethers.js/commit/cd7a0b36cd77df5d5951a97cdb6b6be1c9387f51))
|
||||
- Major Contract refactor for overrides. ([#819](https://github.com/ethers-io/ethers.js/issues/819), [#845](https://github.com/ethers-io/ethers.js/issues/845), [#847](https://github.com/ethers-io/ethers.js/issues/847), [#860](https://github.com/ethers-io/ethers.js/issues/860); [42dee67](https://github.com/ethers-io/ethers.js/commit/42dee67187adb04d0b88f420b24cb3e73301d609))
|
||||
- Remove legacy Circle CI tasks. ([c445232](https://github.com/ethers-io/ethers.js/commit/c445232980007d3474bc036ff59fb37638f93820))
|
||||
- Fixing GitHub actions. ([#853](https://github.com/ethers-io/ethers.js/issues/853); [6b8f0f3](https://github.com/ethers-io/ethers.js/commit/6b8f0f3cb38295cd5d693f9b71f629b591206f1e))
|
||||
|
||||
ethers/v5.0.0-beta.189 (2020-05-29 21:25)
|
||||
-----------------------------------------
|
||||
|
@ -18,11 +18,11 @@ encrypted encrypting entries euro exceeded existing expected
|
||||
expired failed fetches formatted formatting funding generated
|
||||
has ignoring implemented implementer imported including instantiate
|
||||
keyword labelled larger lookup matches mined modified modifies multi
|
||||
named nested neutered numeric offline optimizer owned packed
|
||||
named needed nested neutered numeric offline optimizer overriding owned packed
|
||||
padded parsed parsing passed placeholder processing reached
|
||||
recommended recovered redacted remaining replaced required
|
||||
serializes shared signed signing stored supported tagging targetted
|
||||
transactions uninstall unsubscribe using verifies website
|
||||
serializes shared signed signing skipped stored supported tagging targetted
|
||||
transactions uninstall unstake unsubscribe using verifies website
|
||||
|
||||
// Overly Specific Words
|
||||
BIP BIP39 BIP44 crypto eip hashes hmac icap
|
||||
|
1694
package-lock.json
generated
1694
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1 +1 @@
|
||||
export declare const version = "abstract-provider/5.0.0-beta.141";
|
||||
export declare const version = "abstract-provider/5.0.0-beta.142";
|
||||
|
@ -1 +1 @@
|
||||
export const version = "abstract-provider/5.0.0-beta.141";
|
||||
export const version = "abstract-provider/5.0.0-beta.142";
|
||||
|
22
packages/abstract-provider/lib.esm/index.d.ts
vendored
22
packages/abstract-provider/lib.esm/index.d.ts
vendored
@ -1,18 +1,18 @@
|
||||
import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
|
||||
import { BytesLike } from "@ethersproject/bytes";
|
||||
import { Network } from "@ethersproject/networks";
|
||||
import { Description } from "@ethersproject/properties";
|
||||
import { Deferrable, Description } from "@ethersproject/properties";
|
||||
import { Transaction } from "@ethersproject/transactions";
|
||||
import { OnceBlockable } from "@ethersproject/web";
|
||||
export declare type TransactionRequest = {
|
||||
to?: string | Promise<string>;
|
||||
from?: string | Promise<string>;
|
||||
nonce?: BigNumberish | Promise<BigNumberish>;
|
||||
gasLimit?: BigNumberish | Promise<BigNumberish>;
|
||||
gasPrice?: BigNumberish | Promise<BigNumberish>;
|
||||
data?: BytesLike | Promise<BytesLike>;
|
||||
value?: BigNumberish | Promise<BigNumberish>;
|
||||
chainId?: number | Promise<number>;
|
||||
to?: string;
|
||||
from?: string;
|
||||
nonce?: BigNumberish;
|
||||
gasLimit?: BigNumberish;
|
||||
gasPrice?: BigNumberish;
|
||||
data?: BytesLike;
|
||||
value?: BigNumberish;
|
||||
chainId?: number;
|
||||
};
|
||||
export interface TransactionResponse extends Transaction {
|
||||
hash: string;
|
||||
@ -113,8 +113,8 @@ export declare abstract class Provider implements OnceBlockable {
|
||||
abstract getCode(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
abstract getStorageAt(addressOrName: string | Promise<string>, position: BigNumberish | Promise<BigNumberish>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
abstract sendTransaction(signedTransaction: string | Promise<string>): Promise<TransactionResponse>;
|
||||
abstract call(transaction: TransactionRequest, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
abstract estimateGas(transaction: TransactionRequest): Promise<BigNumber>;
|
||||
abstract call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
abstract estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber>;
|
||||
abstract getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<Block>;
|
||||
abstract getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<BlockWithTransactions>;
|
||||
abstract getTransaction(transactionHash: string): Promise<TransactionResponse>;
|
||||
|
2
packages/abstract-provider/lib/_version.d.ts
vendored
2
packages/abstract-provider/lib/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "abstract-provider/5.0.0-beta.141";
|
||||
export declare const version = "abstract-provider/5.0.0-beta.142";
|
||||
|
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "abstract-provider/5.0.0-beta.141";
|
||||
exports.version = "abstract-provider/5.0.0-beta.142";
|
||||
|
22
packages/abstract-provider/lib/index.d.ts
vendored
22
packages/abstract-provider/lib/index.d.ts
vendored
@ -1,18 +1,18 @@
|
||||
import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
|
||||
import { BytesLike } from "@ethersproject/bytes";
|
||||
import { Network } from "@ethersproject/networks";
|
||||
import { Description } from "@ethersproject/properties";
|
||||
import { Deferrable, Description } from "@ethersproject/properties";
|
||||
import { Transaction } from "@ethersproject/transactions";
|
||||
import { OnceBlockable } from "@ethersproject/web";
|
||||
export declare type TransactionRequest = {
|
||||
to?: string | Promise<string>;
|
||||
from?: string | Promise<string>;
|
||||
nonce?: BigNumberish | Promise<BigNumberish>;
|
||||
gasLimit?: BigNumberish | Promise<BigNumberish>;
|
||||
gasPrice?: BigNumberish | Promise<BigNumberish>;
|
||||
data?: BytesLike | Promise<BytesLike>;
|
||||
value?: BigNumberish | Promise<BigNumberish>;
|
||||
chainId?: number | Promise<number>;
|
||||
to?: string;
|
||||
from?: string;
|
||||
nonce?: BigNumberish;
|
||||
gasLimit?: BigNumberish;
|
||||
gasPrice?: BigNumberish;
|
||||
data?: BytesLike;
|
||||
value?: BigNumberish;
|
||||
chainId?: number;
|
||||
};
|
||||
export interface TransactionResponse extends Transaction {
|
||||
hash: string;
|
||||
@ -113,8 +113,8 @@ export declare abstract class Provider implements OnceBlockable {
|
||||
abstract getCode(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
abstract getStorageAt(addressOrName: string | Promise<string>, position: BigNumberish | Promise<BigNumberish>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
abstract sendTransaction(signedTransaction: string | Promise<string>): Promise<TransactionResponse>;
|
||||
abstract call(transaction: TransactionRequest, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
abstract estimateGas(transaction: TransactionRequest): Promise<BigNumber>;
|
||||
abstract call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
abstract estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber>;
|
||||
abstract getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<Block>;
|
||||
abstract getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<BlockWithTransactions>;
|
||||
abstract getTransaction(transactionHash: string): Promise<TransactionResponse>;
|
||||
|
@ -29,7 +29,7 @@
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"tarballHash": "0x91f928d7dba2271945abf1fb31aa1c715a6046b3a17bdb0ea77a9a7cf5855896",
|
||||
"tarballHash": "0xad8f4ccc09a03c47de713409293aed56225df32705cb364ece02ad8f10429b72",
|
||||
"types": "./lib/index.d.ts",
|
||||
"version": "5.0.0-beta.141"
|
||||
"version": "5.0.0-beta.142"
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = "abstract-provider/5.0.0-beta.141";
|
||||
export const version = "abstract-provider/5.0.0-beta.142";
|
||||
|
@ -1 +1 @@
|
||||
export declare const version = "abstract-signer/5.0.0-beta.144";
|
||||
export declare const version = "abstract-signer/5.0.0-beta.145";
|
||||
|
@ -1 +1 @@
|
||||
export const version = "abstract-signer/5.0.0-beta.144";
|
||||
export const version = "abstract-signer/5.0.0-beta.145";
|
||||
|
15
packages/abstract-signer/lib.esm/index.d.ts
vendored
15
packages/abstract-signer/lib.esm/index.d.ts
vendored
@ -1,6 +1,7 @@
|
||||
import { BlockTag, Provider, TransactionRequest, TransactionResponse } from "@ethersproject/abstract-provider";
|
||||
import { BigNumber } from "@ethersproject/bignumber";
|
||||
import { Bytes } from "@ethersproject/bytes";
|
||||
import { Deferrable } from "@ethersproject/properties";
|
||||
export interface ExternallyOwnedAccount {
|
||||
readonly address: string;
|
||||
readonly privateKey: string;
|
||||
@ -9,20 +10,20 @@ export declare abstract class Signer {
|
||||
readonly provider?: Provider;
|
||||
abstract getAddress(): Promise<string>;
|
||||
abstract signMessage(message: Bytes | string): Promise<string>;
|
||||
abstract signTransaction(transaction: TransactionRequest): Promise<string>;
|
||||
abstract signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;
|
||||
abstract connect(provider: Provider): Signer;
|
||||
readonly _isSigner: boolean;
|
||||
constructor();
|
||||
getBalance(blockTag?: BlockTag): Promise<BigNumber>;
|
||||
getTransactionCount(blockTag?: BlockTag): Promise<number>;
|
||||
estimateGas(transaction: TransactionRequest): Promise<BigNumber>;
|
||||
call(transaction: TransactionRequest, blockTag?: BlockTag): Promise<string>;
|
||||
sendTransaction(transaction: TransactionRequest): Promise<TransactionResponse>;
|
||||
estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber>;
|
||||
call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag): Promise<string>;
|
||||
sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse>;
|
||||
getChainId(): Promise<number>;
|
||||
getGasPrice(): Promise<BigNumber>;
|
||||
resolveName(name: string): Promise<string>;
|
||||
checkTransaction(transaction: TransactionRequest): TransactionRequest;
|
||||
populateTransaction(transaction: TransactionRequest): Promise<TransactionRequest>;
|
||||
checkTransaction(transaction: Deferrable<TransactionRequest>): Deferrable<TransactionRequest>;
|
||||
populateTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionRequest>;
|
||||
_checkProvider(operation?: string): void;
|
||||
static isSigner(value: any): value is Signer;
|
||||
}
|
||||
@ -32,6 +33,6 @@ export declare class VoidSigner extends Signer {
|
||||
getAddress(): Promise<string>;
|
||||
_fail(message: string, operation: string): Promise<any>;
|
||||
signMessage(message: Bytes | string): Promise<string>;
|
||||
signTransaction(transaction: TransactionRequest): Promise<string>;
|
||||
signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;
|
||||
connect(provider: Provider): VoidSigner;
|
||||
}
|
||||
|
2
packages/abstract-signer/lib/_version.d.ts
vendored
2
packages/abstract-signer/lib/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "abstract-signer/5.0.0-beta.144";
|
||||
export declare const version = "abstract-signer/5.0.0-beta.145";
|
||||
|
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "abstract-signer/5.0.0-beta.144";
|
||||
exports.version = "abstract-signer/5.0.0-beta.145";
|
||||
|
15
packages/abstract-signer/lib/index.d.ts
vendored
15
packages/abstract-signer/lib/index.d.ts
vendored
@ -1,6 +1,7 @@
|
||||
import { BlockTag, Provider, TransactionRequest, TransactionResponse } from "@ethersproject/abstract-provider";
|
||||
import { BigNumber } from "@ethersproject/bignumber";
|
||||
import { Bytes } from "@ethersproject/bytes";
|
||||
import { Deferrable } from "@ethersproject/properties";
|
||||
export interface ExternallyOwnedAccount {
|
||||
readonly address: string;
|
||||
readonly privateKey: string;
|
||||
@ -9,20 +10,20 @@ export declare abstract class Signer {
|
||||
readonly provider?: Provider;
|
||||
abstract getAddress(): Promise<string>;
|
||||
abstract signMessage(message: Bytes | string): Promise<string>;
|
||||
abstract signTransaction(transaction: TransactionRequest): Promise<string>;
|
||||
abstract signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;
|
||||
abstract connect(provider: Provider): Signer;
|
||||
readonly _isSigner: boolean;
|
||||
constructor();
|
||||
getBalance(blockTag?: BlockTag): Promise<BigNumber>;
|
||||
getTransactionCount(blockTag?: BlockTag): Promise<number>;
|
||||
estimateGas(transaction: TransactionRequest): Promise<BigNumber>;
|
||||
call(transaction: TransactionRequest, blockTag?: BlockTag): Promise<string>;
|
||||
sendTransaction(transaction: TransactionRequest): Promise<TransactionResponse>;
|
||||
estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber>;
|
||||
call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag): Promise<string>;
|
||||
sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse>;
|
||||
getChainId(): Promise<number>;
|
||||
getGasPrice(): Promise<BigNumber>;
|
||||
resolveName(name: string): Promise<string>;
|
||||
checkTransaction(transaction: TransactionRequest): TransactionRequest;
|
||||
populateTransaction(transaction: TransactionRequest): Promise<TransactionRequest>;
|
||||
checkTransaction(transaction: Deferrable<TransactionRequest>): Deferrable<TransactionRequest>;
|
||||
populateTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionRequest>;
|
||||
_checkProvider(operation?: string): void;
|
||||
static isSigner(value: any): value is Signer;
|
||||
}
|
||||
@ -32,6 +33,6 @@ export declare class VoidSigner extends Signer {
|
||||
getAddress(): Promise<string>;
|
||||
_fail(message: string, operation: string): Promise<any>;
|
||||
signMessage(message: Bytes | string): Promise<string>;
|
||||
signTransaction(transaction: TransactionRequest): Promise<string>;
|
||||
signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;
|
||||
connect(provider: Provider): VoidSigner;
|
||||
}
|
||||
|
@ -27,7 +27,7 @@
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"tarballHash": "0xc2024c958e464989f0f14e2362cb0b7fe915c4b56862f55a398434138f4901aa",
|
||||
"tarballHash": "0x9bcb28b416731620f3e970b8a5fee9f888951781d4c6a1239a1020f55317d811",
|
||||
"types": "./lib/index.d.ts",
|
||||
"version": "5.0.0-beta.144"
|
||||
"version": "5.0.0-beta.145"
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = "abstract-signer/5.0.0-beta.144";
|
||||
export const version = "abstract-signer/5.0.0-beta.145";
|
||||
|
2
packages/contracts/lib.esm/_version.d.ts
vendored
2
packages/contracts/lib.esm/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "contracts/5.0.0-beta.154";
|
||||
export declare const version = "contracts/5.0.0-beta.155";
|
||||
|
@ -1 +1 @@
|
||||
export const version = "contracts/5.0.0-beta.154";
|
||||
export const version = "contracts/5.0.0-beta.155";
|
||||
|
17
packages/contracts/lib.esm/index.d.ts
vendored
17
packages/contracts/lib.esm/index.d.ts
vendored
@ -3,7 +3,6 @@ import { Block, BlockTag, Listener, Log, Provider, TransactionReceipt, Transacti
|
||||
import { Signer } from "@ethersproject/abstract-signer";
|
||||
import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
|
||||
import { BytesLike } from "@ethersproject/bytes";
|
||||
import { UnsignedTransaction } from "@ethersproject/transactions";
|
||||
export interface Overrides {
|
||||
gasLimit?: BigNumberish | Promise<BigNumberish>;
|
||||
gasPrice?: BigNumberish | Promise<BigNumberish>;
|
||||
@ -16,6 +15,16 @@ export interface CallOverrides extends PayableOverrides {
|
||||
blockTag?: BlockTag | Promise<BlockTag>;
|
||||
from?: string | Promise<string>;
|
||||
}
|
||||
export interface PopulatedTransaction {
|
||||
to?: string;
|
||||
from?: string;
|
||||
nonce?: number;
|
||||
gasLimit?: BigNumber;
|
||||
gasPrice?: BigNumber;
|
||||
data?: string;
|
||||
value?: BigNumber;
|
||||
chainId?: number;
|
||||
}
|
||||
export declare type EventFilter = {
|
||||
address?: string;
|
||||
topics?: Array<string | Array<string>>;
|
||||
@ -68,7 +77,7 @@ export declare class Contract {
|
||||
[name: string]: ContractFunction<BigNumber>;
|
||||
};
|
||||
readonly populateTransaction: {
|
||||
[name: string]: ContractFunction<UnsignedTransaction>;
|
||||
[name: string]: ContractFunction<PopulatedTransaction>;
|
||||
};
|
||||
readonly filters: {
|
||||
[name: string]: (...args: Array<any>) => EventFilter;
|
||||
@ -83,7 +92,7 @@ export declare class Contract {
|
||||
_wrappedEmits: {
|
||||
[eventTag: string]: (...args: Array<any>) => void;
|
||||
};
|
||||
constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider: Signer | Provider);
|
||||
constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider?: Signer | Provider);
|
||||
static getContractAddress(transaction: {
|
||||
from: string;
|
||||
nonce: BigNumberish;
|
||||
@ -117,7 +126,7 @@ export declare class ContractFactory {
|
||||
constructor(contractInterface: ContractInterface, bytecode: BytesLike | {
|
||||
object: string;
|
||||
}, signer?: Signer);
|
||||
getDeployTransaction(...args: Array<any>): UnsignedTransaction;
|
||||
getDeployTransaction(...args: Array<any>): TransactionRequest;
|
||||
deploy(...args: Array<any>): Promise<Contract>;
|
||||
attach(address: string): Contract;
|
||||
connect(signer: Signer): ContractFactory;
|
||||
|
@ -11,42 +11,96 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
import { checkResultErrors, Indexed, Interface } from "@ethersproject/abi";
|
||||
import { Provider } from "@ethersproject/abstract-provider";
|
||||
import { Signer, VoidSigner } from "@ethersproject/abstract-signer";
|
||||
import { getContractAddress } from "@ethersproject/address";
|
||||
import { getAddress, getContractAddress } from "@ethersproject/address";
|
||||
import { BigNumber } from "@ethersproject/bignumber";
|
||||
import { concat, hexlify, isBytes, isHexString } from "@ethersproject/bytes";
|
||||
//import { AddressZero } from "@ethersproject/constants";
|
||||
import { defineReadOnly, deepCopy, getStatic, resolveProperties, shallowCopy } from "@ethersproject/properties";
|
||||
// @TOOD remove dependences transactions
|
||||
import { Logger } from "@ethersproject/logger";
|
||||
import { version } from "./_version";
|
||||
const logger = new Logger(version);
|
||||
;
|
||||
;
|
||||
///////////////////////////////
|
||||
const allowedTransactionKeys = {
|
||||
chainId: true, data: true, from: true, gasLimit: true, gasPrice: true, nonce: true, to: true, value: true
|
||||
};
|
||||
function resolveName(resolver, nameOrPromise) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const name = yield nameOrPromise;
|
||||
// If it is already an address, just use it (after adding checksum)
|
||||
try {
|
||||
return getAddress(name);
|
||||
}
|
||||
catch (error) { }
|
||||
if (!resolver) {
|
||||
logger.throwError("a provider or signer is needed to resolve ENS names", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "resolveName"
|
||||
});
|
||||
}
|
||||
return yield resolver.resolveName(name);
|
||||
});
|
||||
}
|
||||
// Recursively replaces ENS names with promises to resolve the name and resolves all properties
|
||||
function resolveAddresses(signerOrProvider, value, paramType) {
|
||||
function resolveAddresses(resolver, value, paramType) {
|
||||
if (Array.isArray(paramType)) {
|
||||
return Promise.all(paramType.map((paramType, index) => {
|
||||
return resolveAddresses(signerOrProvider, ((Array.isArray(value)) ? value[index] : value[paramType.name]), paramType);
|
||||
return resolveAddresses(resolver, ((Array.isArray(value)) ? value[index] : value[paramType.name]), paramType);
|
||||
}));
|
||||
}
|
||||
if (paramType.type === "address") {
|
||||
return signerOrProvider.resolveName(value);
|
||||
return resolveName(resolver, value);
|
||||
}
|
||||
if (paramType.type === "tuple") {
|
||||
return resolveAddresses(signerOrProvider, value, paramType.components);
|
||||
return resolveAddresses(resolver, value, paramType.components);
|
||||
}
|
||||
if (paramType.baseType === "array") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("invalid value for array");
|
||||
}
|
||||
return Promise.all(value.map((v) => resolveAddresses(signerOrProvider, v, paramType.arrayChildren)));
|
||||
return Promise.all(value.map((v) => resolveAddresses(resolver, v, paramType.arrayChildren)));
|
||||
}
|
||||
return Promise.resolve(value);
|
||||
}
|
||||
function _populateTransaction(contract, fragment, args, overrides) {
|
||||
function populateTransaction(contract, fragment, args) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
overrides = shallowCopy(overrides);
|
||||
// Wait for all dependency addresses to be resolved (prefer the signer over the provider)
|
||||
// If an extra argument is given, it is overrides
|
||||
let overrides = {};
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = shallowCopy(args.pop());
|
||||
}
|
||||
// Make sure the parameter count matches
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
// Populate "from" override (allow promises)
|
||||
if (contract.signer) {
|
||||
if (overrides.from) {
|
||||
// Contracts with a Signer are from the Signer's frame-of-reference;
|
||||
// but we allow overriding "from" if it matches the signer
|
||||
overrides.from = resolveProperties({
|
||||
override: resolveName(contract.signer, overrides.from),
|
||||
signer: contract.signer.getAddress()
|
||||
}).then((check) => __awaiter(this, void 0, void 0, function* () {
|
||||
if (getAddress(check.signer) !== check.override) {
|
||||
logger.throwError("Contract with a Signer cannot override from", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides.from"
|
||||
});
|
||||
}
|
||||
return check.override;
|
||||
}));
|
||||
}
|
||||
else {
|
||||
overrides.from = contract.signer.getAddress();
|
||||
}
|
||||
}
|
||||
else if (overrides.from) {
|
||||
overrides.from = resolveName(contract.provider, overrides.from);
|
||||
//} else {
|
||||
// Contracts without a signer can override "from", and if
|
||||
// unspecified the zero address is used
|
||||
//overrides.from = AddressZero;
|
||||
}
|
||||
// Wait for all dependencies to be resolved (prefer the signer over the provider)
|
||||
const resolved = yield resolveProperties({
|
||||
args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),
|
||||
address: contract.resolvedAddress,
|
||||
@ -59,6 +113,7 @@ function _populateTransaction(contract, fragment, args, overrides) {
|
||||
};
|
||||
// Resolved Overrides
|
||||
const ro = resolved.overrides;
|
||||
// Populate simple overrides
|
||||
if (ro.nonce != null) {
|
||||
tx.nonce = BigNumber.from(ro.nonce).toNumber();
|
||||
}
|
||||
@ -68,128 +123,90 @@ function _populateTransaction(contract, fragment, args, overrides) {
|
||||
if (ro.gasPrice != null) {
|
||||
tx.gasPrice = BigNumber.from(ro.gasPrice);
|
||||
}
|
||||
// If there was no gasLimit override, but the ABI specifies one use it
|
||||
if (ro.from != null) {
|
||||
tx.from = ro.from;
|
||||
}
|
||||
// If there was no "gasLimit" override, but the ABI specifies a default, use it
|
||||
if (tx.gasLimit == null && fragment.gas != null) {
|
||||
tx.gasLimit = BigNumber.from(fragment.gas).add(21000);
|
||||
}
|
||||
// Populate "value" override
|
||||
if (ro.value) {
|
||||
const roValue = BigNumber.from(ro.value);
|
||||
if (!roValue.isZero() && !fragment.payable) {
|
||||
logger.throwError("non-payable method cannot override value", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides.value",
|
||||
value: overrides.value
|
||||
});
|
||||
}
|
||||
tx.value = roValue;
|
||||
}
|
||||
// Remvoe the overrides
|
||||
delete overrides.nonce;
|
||||
delete overrides.gasLimit;
|
||||
delete overrides.gasPrice;
|
||||
// @TODO: Maybe move all tx property validation to the Signer and Provider?
|
||||
delete overrides.from;
|
||||
delete overrides.value;
|
||||
// Make sure there are no stray overrides, which may indicate a
|
||||
// typo or using an unsupported key.
|
||||
const leftovers = Object.keys(overrides);
|
||||
if (leftovers.length) {
|
||||
logger.throwError(`cannot override ${leftovers.map((l) => JSON.stringify(l)).join(",")}`, Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides",
|
||||
keys: leftovers
|
||||
overrides: leftovers
|
||||
});
|
||||
}
|
||||
return tx;
|
||||
});
|
||||
}
|
||||
function populateTransaction(contract, fragment, args, overrides) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
overrides = shallowCopy(overrides);
|
||||
// If the contract was just deployed, wait until it is minded
|
||||
if (contract.deployTransaction != null) {
|
||||
yield contract._deployed();
|
||||
}
|
||||
// Resolved Overrides (keep value for errors)
|
||||
const ro = yield resolveProperties(overrides);
|
||||
const value = overrides.value;
|
||||
delete overrides.value;
|
||||
const tx = yield _populateTransaction(contract, fragment, args, overrides);
|
||||
if (ro.value) {
|
||||
const roValue = BigNumber.from(ro.value);
|
||||
if (!roValue.isZero() && !fragment.payable) {
|
||||
logger.throwError("non-payable method cannot override value", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides.value",
|
||||
value: value
|
||||
});
|
||||
}
|
||||
tx.value = roValue;
|
||||
}
|
||||
return tx;
|
||||
});
|
||||
}
|
||||
function populateCallTransaction(contract, fragment, args, overrides) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
overrides = shallowCopy(overrides);
|
||||
// If the contract was just deployed, wait until it is minded
|
||||
if (contract.deployTransaction != null) {
|
||||
let blockTag = undefined;
|
||||
if (overrides.blockTag) {
|
||||
blockTag = yield overrides.blockTag;
|
||||
}
|
||||
yield contract._deployed(blockTag);
|
||||
}
|
||||
// Resolved Overrides
|
||||
delete overrides.blockTag;
|
||||
const ro = yield resolveProperties(overrides);
|
||||
delete overrides.from;
|
||||
const tx = yield populateTransaction(contract, fragment, args, overrides);
|
||||
if (ro.from) {
|
||||
tx.from = this.interface.constructor.getAddress(ro.from);
|
||||
}
|
||||
return tx;
|
||||
});
|
||||
}
|
||||
function buildPopulate(contract, fragment) {
|
||||
const populate = (fragment.constant) ? populateCallTransaction : populateTransaction;
|
||||
return function (...args) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let overrides = null;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = args.pop();
|
||||
}
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
return populate(contract, fragment, args, overrides);
|
||||
return populateTransaction(contract, fragment, args);
|
||||
});
|
||||
};
|
||||
}
|
||||
function buildEstimate(contract, fragment) {
|
||||
const signerOrProvider = (contract.signer || contract.provider);
|
||||
const populate = (fragment.constant) ? populateCallTransaction : populateTransaction;
|
||||
return function (...args) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let overrides = null;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = args.pop();
|
||||
}
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
if (!signerOrProvider) {
|
||||
logger.throwError("estimate require a provider or signer", Logger.errors.UNSUPPORTED_OPERATION, { operation: "estimateGas" });
|
||||
logger.throwError("estimate require a provider or signer", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "estimateGas"
|
||||
});
|
||||
}
|
||||
const tx = yield populate(contract, fragment, args, overrides);
|
||||
const tx = yield populateTransaction(contract, fragment, args);
|
||||
return yield signerOrProvider.estimateGas(tx);
|
||||
});
|
||||
};
|
||||
}
|
||||
function buildCall(contract, fragment, collapseSimple) {
|
||||
const signerOrProvider = (contract.signer || contract.provider);
|
||||
const populate = (fragment.constant) ? populateCallTransaction : populateTransaction;
|
||||
return function (...args) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let overrides = null;
|
||||
// Extract the "blockTag" override if present
|
||||
let blockTag = undefined;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = shallowCopy(args.pop());
|
||||
const overrides = shallowCopy(args.pop());
|
||||
if (overrides.blockTag) {
|
||||
blockTag = yield overrides.blockTag;
|
||||
delete overrides.blockTag;
|
||||
}
|
||||
args.push(overrides);
|
||||
}
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
const tx = yield populate(contract, fragment, args, overrides);
|
||||
const value = yield signerOrProvider.call(tx, blockTag);
|
||||
// If the contract was just deployed, wait until it is mined
|
||||
if (contract.deployTransaction != null) {
|
||||
yield contract._deployed(blockTag);
|
||||
}
|
||||
// Call a node and get the result
|
||||
const tx = yield populateTransaction(contract, fragment, args);
|
||||
const result = yield signerOrProvider.call(tx, blockTag);
|
||||
try {
|
||||
let result = contract.interface.decodeFunctionResult(fragment, value);
|
||||
let value = contract.interface.decodeFunctionResult(fragment, result);
|
||||
if (collapseSimple && fragment.outputs.length === 1) {
|
||||
result = result[0];
|
||||
value = value[0];
|
||||
}
|
||||
return result;
|
||||
return value;
|
||||
}
|
||||
catch (error) {
|
||||
if (error.code === Logger.errors.CALL_EXCEPTION) {
|
||||
@ -206,18 +223,15 @@ function buildSend(contract, fragment) {
|
||||
return function (...args) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
if (!contract.signer) {
|
||||
logger.throwError("sending a transaction requires a signer", Logger.errors.UNSUPPORTED_OPERATION, { operation: "sendTransaction" });
|
||||
logger.throwError("sending a transaction requires a signer", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "sendTransaction"
|
||||
});
|
||||
}
|
||||
// We allow CallOverrides, since the Signer can accept from
|
||||
let overrides = null;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = shallowCopy(args.pop());
|
||||
if (overrides.blockTag != null) {
|
||||
logger.throwArgumentError(`cannot override "blockTag" in transaction`, "overrides", overrides);
|
||||
}
|
||||
// If the contract was just deployed, wait until it is minded
|
||||
if (contract.deployTransaction != null) {
|
||||
yield contract._deployed();
|
||||
}
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
const txRequest = yield populateCallTransaction(contract, fragment, args, overrides);
|
||||
const txRequest = yield populateTransaction(contract, fragment, args);
|
||||
const tx = yield contract.signer.sendTransaction(txRequest);
|
||||
// Tweak the tw.wait so the receipt has extra properties
|
||||
const wait = tx.wait.bind(tx);
|
||||
@ -412,7 +426,11 @@ export class Contract {
|
||||
// @TODO: Maybe still check the addressOrName looks like a valid address or name?
|
||||
//address = getAddress(address);
|
||||
defineReadOnly(this, "interface", getStatic((new.target), "getInterface")(contractInterface));
|
||||
if (Signer.isSigner(signerOrProvider)) {
|
||||
if (signerOrProvider == null) {
|
||||
defineReadOnly(this, "provider", null);
|
||||
defineReadOnly(this, "signer", null);
|
||||
}
|
||||
else if (Signer.isSigner(signerOrProvider)) {
|
||||
defineReadOnly(this, "provider", signerOrProvider.provider || null);
|
||||
defineReadOnly(this, "signer", signerOrProvider);
|
||||
}
|
||||
@ -469,11 +487,13 @@ export class Contract {
|
||||
}
|
||||
else {
|
||||
try {
|
||||
defineReadOnly(this, "resolvedAddress", Promise.resolve((this.interface.constructor).getAddress(addressOrName)));
|
||||
defineReadOnly(this, "resolvedAddress", Promise.resolve(getAddress(addressOrName)));
|
||||
}
|
||||
catch (error) {
|
||||
// Without a provider, we cannot use ENS names
|
||||
logger.throwArgumentError("provider is required to use non-address contract address", "addressOrName", addressOrName);
|
||||
logger.throwError("provider is required to use ENS name as contract address", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "new Contract"
|
||||
});
|
||||
}
|
||||
}
|
||||
const uniqueNames = {};
|
||||
|
2
packages/contracts/lib/_version.d.ts
vendored
2
packages/contracts/lib/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "contracts/5.0.0-beta.154";
|
||||
export declare const version = "contracts/5.0.0-beta.155";
|
||||
|
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "contracts/5.0.0-beta.154";
|
||||
exports.version = "contracts/5.0.0-beta.155";
|
||||
|
17
packages/contracts/lib/index.d.ts
vendored
17
packages/contracts/lib/index.d.ts
vendored
@ -3,7 +3,6 @@ import { Block, BlockTag, Listener, Log, Provider, TransactionReceipt, Transacti
|
||||
import { Signer } from "@ethersproject/abstract-signer";
|
||||
import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
|
||||
import { BytesLike } from "@ethersproject/bytes";
|
||||
import { UnsignedTransaction } from "@ethersproject/transactions";
|
||||
export interface Overrides {
|
||||
gasLimit?: BigNumberish | Promise<BigNumberish>;
|
||||
gasPrice?: BigNumberish | Promise<BigNumberish>;
|
||||
@ -16,6 +15,16 @@ export interface CallOverrides extends PayableOverrides {
|
||||
blockTag?: BlockTag | Promise<BlockTag>;
|
||||
from?: string | Promise<string>;
|
||||
}
|
||||
export interface PopulatedTransaction {
|
||||
to?: string;
|
||||
from?: string;
|
||||
nonce?: number;
|
||||
gasLimit?: BigNumber;
|
||||
gasPrice?: BigNumber;
|
||||
data?: string;
|
||||
value?: BigNumber;
|
||||
chainId?: number;
|
||||
}
|
||||
export declare type EventFilter = {
|
||||
address?: string;
|
||||
topics?: Array<string | Array<string>>;
|
||||
@ -68,7 +77,7 @@ export declare class Contract {
|
||||
[name: string]: ContractFunction<BigNumber>;
|
||||
};
|
||||
readonly populateTransaction: {
|
||||
[name: string]: ContractFunction<UnsignedTransaction>;
|
||||
[name: string]: ContractFunction<PopulatedTransaction>;
|
||||
};
|
||||
readonly filters: {
|
||||
[name: string]: (...args: Array<any>) => EventFilter;
|
||||
@ -83,7 +92,7 @@ export declare class Contract {
|
||||
_wrappedEmits: {
|
||||
[eventTag: string]: (...args: Array<any>) => void;
|
||||
};
|
||||
constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider: Signer | Provider);
|
||||
constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider?: Signer | Provider);
|
||||
static getContractAddress(transaction: {
|
||||
from: string;
|
||||
nonce: BigNumberish;
|
||||
@ -117,7 +126,7 @@ export declare class ContractFactory {
|
||||
constructor(contractInterface: ContractInterface, bytecode: BytesLike | {
|
||||
object: string;
|
||||
}, signer?: Signer);
|
||||
getDeployTransaction(...args: Array<any>): UnsignedTransaction;
|
||||
getDeployTransaction(...args: Array<any>): TransactionRequest;
|
||||
deploy(...args: Array<any>): Promise<Contract>;
|
||||
attach(address: string): Contract;
|
||||
connect(signer: Signer): ContractFactory;
|
||||
|
@ -62,42 +62,106 @@ var abstract_signer_1 = require("@ethersproject/abstract-signer");
|
||||
var address_1 = require("@ethersproject/address");
|
||||
var bignumber_1 = require("@ethersproject/bignumber");
|
||||
var bytes_1 = require("@ethersproject/bytes");
|
||||
//import { AddressZero } from "@ethersproject/constants";
|
||||
var properties_1 = require("@ethersproject/properties");
|
||||
// @TOOD remove dependences transactions
|
||||
var logger_1 = require("@ethersproject/logger");
|
||||
var _version_1 = require("./_version");
|
||||
var logger = new logger_1.Logger(_version_1.version);
|
||||
;
|
||||
;
|
||||
///////////////////////////////
|
||||
var allowedTransactionKeys = {
|
||||
chainId: true, data: true, from: true, gasLimit: true, gasPrice: true, nonce: true, to: true, value: true
|
||||
};
|
||||
function resolveName(resolver, nameOrPromise) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var name;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, nameOrPromise];
|
||||
case 1:
|
||||
name = _a.sent();
|
||||
// If it is already an address, just use it (after adding checksum)
|
||||
try {
|
||||
return [2 /*return*/, address_1.getAddress(name)];
|
||||
}
|
||||
catch (error) { }
|
||||
if (!resolver) {
|
||||
logger.throwError("a provider or signer is needed to resolve ENS names", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "resolveName"
|
||||
});
|
||||
}
|
||||
return [4 /*yield*/, resolver.resolveName(name)];
|
||||
case 2: return [2 /*return*/, _a.sent()];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// Recursively replaces ENS names with promises to resolve the name and resolves all properties
|
||||
function resolveAddresses(signerOrProvider, value, paramType) {
|
||||
function resolveAddresses(resolver, value, paramType) {
|
||||
if (Array.isArray(paramType)) {
|
||||
return Promise.all(paramType.map(function (paramType, index) {
|
||||
return resolveAddresses(signerOrProvider, ((Array.isArray(value)) ? value[index] : value[paramType.name]), paramType);
|
||||
return resolveAddresses(resolver, ((Array.isArray(value)) ? value[index] : value[paramType.name]), paramType);
|
||||
}));
|
||||
}
|
||||
if (paramType.type === "address") {
|
||||
return signerOrProvider.resolveName(value);
|
||||
return resolveName(resolver, value);
|
||||
}
|
||||
if (paramType.type === "tuple") {
|
||||
return resolveAddresses(signerOrProvider, value, paramType.components);
|
||||
return resolveAddresses(resolver, value, paramType.components);
|
||||
}
|
||||
if (paramType.baseType === "array") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("invalid value for array");
|
||||
}
|
||||
return Promise.all(value.map(function (v) { return resolveAddresses(signerOrProvider, v, paramType.arrayChildren); }));
|
||||
return Promise.all(value.map(function (v) { return resolveAddresses(resolver, v, paramType.arrayChildren); }));
|
||||
}
|
||||
return Promise.resolve(value);
|
||||
}
|
||||
function _populateTransaction(contract, fragment, args, overrides) {
|
||||
function populateTransaction(contract, fragment, args) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var resolved, tx, ro, leftovers;
|
||||
var overrides, resolved, tx, ro, roValue, leftovers;
|
||||
var _this = this;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
overrides = properties_1.shallowCopy(overrides);
|
||||
overrides = {};
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = properties_1.shallowCopy(args.pop());
|
||||
}
|
||||
// Make sure the parameter count matches
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
// Populate "from" override (allow promises)
|
||||
if (contract.signer) {
|
||||
if (overrides.from) {
|
||||
// Contracts with a Signer are from the Signer's frame-of-reference;
|
||||
// but we allow overriding "from" if it matches the signer
|
||||
overrides.from = properties_1.resolveProperties({
|
||||
override: resolveName(contract.signer, overrides.from),
|
||||
signer: contract.signer.getAddress()
|
||||
}).then(function (check) { return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
if (address_1.getAddress(check.signer) !== check.override) {
|
||||
logger.throwError("Contract with a Signer cannot override from", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides.from"
|
||||
});
|
||||
}
|
||||
return [2 /*return*/, check.override];
|
||||
});
|
||||
}); });
|
||||
}
|
||||
else {
|
||||
overrides.from = contract.signer.getAddress();
|
||||
}
|
||||
}
|
||||
else if (overrides.from) {
|
||||
overrides.from = resolveName(contract.provider, overrides.from);
|
||||
//} else {
|
||||
// Contracts without a signer can override "from", and if
|
||||
// unspecified the zero address is used
|
||||
//overrides.from = AddressZero;
|
||||
}
|
||||
return [4 /*yield*/, properties_1.resolveProperties({
|
||||
args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),
|
||||
address: contract.resolvedAddress,
|
||||
@ -110,6 +174,7 @@ function _populateTransaction(contract, fragment, args, overrides) {
|
||||
to: resolved.address
|
||||
};
|
||||
ro = resolved.overrides;
|
||||
// Populate simple overrides
|
||||
if (ro.nonce != null) {
|
||||
tx.nonce = bignumber_1.BigNumber.from(ro.nonce).toNumber();
|
||||
}
|
||||
@ -119,19 +184,35 @@ function _populateTransaction(contract, fragment, args, overrides) {
|
||||
if (ro.gasPrice != null) {
|
||||
tx.gasPrice = bignumber_1.BigNumber.from(ro.gasPrice);
|
||||
}
|
||||
// If there was no gasLimit override, but the ABI specifies one use it
|
||||
if (ro.from != null) {
|
||||
tx.from = ro.from;
|
||||
}
|
||||
// If there was no "gasLimit" override, but the ABI specifies a default, use it
|
||||
if (tx.gasLimit == null && fragment.gas != null) {
|
||||
tx.gasLimit = bignumber_1.BigNumber.from(fragment.gas).add(21000);
|
||||
}
|
||||
// Populate "value" override
|
||||
if (ro.value) {
|
||||
roValue = bignumber_1.BigNumber.from(ro.value);
|
||||
if (!roValue.isZero() && !fragment.payable) {
|
||||
logger.throwError("non-payable method cannot override value", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides.value",
|
||||
value: overrides.value
|
||||
});
|
||||
}
|
||||
tx.value = roValue;
|
||||
}
|
||||
// Remvoe the overrides
|
||||
delete overrides.nonce;
|
||||
delete overrides.gasLimit;
|
||||
delete overrides.gasPrice;
|
||||
delete overrides.from;
|
||||
delete overrides.value;
|
||||
leftovers = Object.keys(overrides);
|
||||
if (leftovers.length) {
|
||||
logger.throwError("cannot override " + leftovers.map(function (l) { return JSON.stringify(l); }).join(","), logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides",
|
||||
keys: leftovers
|
||||
overrides: leftovers
|
||||
});
|
||||
}
|
||||
return [2 /*return*/, tx];
|
||||
@ -139,119 +220,37 @@ function _populateTransaction(contract, fragment, args, overrides) {
|
||||
});
|
||||
});
|
||||
}
|
||||
function populateTransaction(contract, fragment, args, overrides) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var ro, value, tx, roValue;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
overrides = properties_1.shallowCopy(overrides);
|
||||
if (!(contract.deployTransaction != null)) return [3 /*break*/, 2];
|
||||
return [4 /*yield*/, contract._deployed()];
|
||||
case 1:
|
||||
_a.sent();
|
||||
_a.label = 2;
|
||||
case 2: return [4 /*yield*/, properties_1.resolveProperties(overrides)];
|
||||
case 3:
|
||||
ro = _a.sent();
|
||||
value = overrides.value;
|
||||
delete overrides.value;
|
||||
return [4 /*yield*/, _populateTransaction(contract, fragment, args, overrides)];
|
||||
case 4:
|
||||
tx = _a.sent();
|
||||
if (ro.value) {
|
||||
roValue = bignumber_1.BigNumber.from(ro.value);
|
||||
if (!roValue.isZero() && !fragment.payable) {
|
||||
logger.throwError("non-payable method cannot override value", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides.value",
|
||||
value: value
|
||||
});
|
||||
}
|
||||
tx.value = roValue;
|
||||
}
|
||||
return [2 /*return*/, tx];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
function populateCallTransaction(contract, fragment, args, overrides) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var blockTag, ro, tx;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
overrides = properties_1.shallowCopy(overrides);
|
||||
if (!(contract.deployTransaction != null)) return [3 /*break*/, 4];
|
||||
blockTag = undefined;
|
||||
if (!overrides.blockTag) return [3 /*break*/, 2];
|
||||
return [4 /*yield*/, overrides.blockTag];
|
||||
case 1:
|
||||
blockTag = _a.sent();
|
||||
_a.label = 2;
|
||||
case 2: return [4 /*yield*/, contract._deployed(blockTag)];
|
||||
case 3:
|
||||
_a.sent();
|
||||
_a.label = 4;
|
||||
case 4:
|
||||
// Resolved Overrides
|
||||
delete overrides.blockTag;
|
||||
return [4 /*yield*/, properties_1.resolveProperties(overrides)];
|
||||
case 5:
|
||||
ro = _a.sent();
|
||||
delete overrides.from;
|
||||
return [4 /*yield*/, populateTransaction(contract, fragment, args, overrides)];
|
||||
case 6:
|
||||
tx = _a.sent();
|
||||
if (ro.from) {
|
||||
tx.from = this.interface.constructor.getAddress(ro.from);
|
||||
}
|
||||
return [2 /*return*/, tx];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
function buildPopulate(contract, fragment) {
|
||||
var populate = (fragment.constant) ? populateCallTransaction : populateTransaction;
|
||||
return function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var overrides;
|
||||
return __generator(this, function (_a) {
|
||||
overrides = null;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = args.pop();
|
||||
}
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
return [2 /*return*/, populate(contract, fragment, args, overrides)];
|
||||
return [2 /*return*/, populateTransaction(contract, fragment, args)];
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
function buildEstimate(contract, fragment) {
|
||||
var signerOrProvider = (contract.signer || contract.provider);
|
||||
var populate = (fragment.constant) ? populateCallTransaction : populateTransaction;
|
||||
return function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var overrides, tx;
|
||||
var tx;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
overrides = null;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = args.pop();
|
||||
}
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
if (!signerOrProvider) {
|
||||
logger.throwError("estimate require a provider or signer", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { operation: "estimateGas" });
|
||||
logger.throwError("estimate require a provider or signer", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "estimateGas"
|
||||
});
|
||||
}
|
||||
return [4 /*yield*/, populate(contract, fragment, args, overrides)];
|
||||
return [4 /*yield*/, populateTransaction(contract, fragment, args)];
|
||||
case 1:
|
||||
tx = _a.sent();
|
||||
return [4 /*yield*/, signerOrProvider.estimateGas(tx)];
|
||||
@ -263,20 +262,18 @@ function buildEstimate(contract, fragment) {
|
||||
}
|
||||
function buildCall(contract, fragment, collapseSimple) {
|
||||
var signerOrProvider = (contract.signer || contract.provider);
|
||||
var populate = (fragment.constant) ? populateCallTransaction : populateTransaction;
|
||||
return function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var overrides, blockTag, tx, value, result;
|
||||
var blockTag, overrides, tx, result, value;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
overrides = null;
|
||||
blockTag = undefined;
|
||||
if (!(args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object")) return [3 /*break*/, 2];
|
||||
if (!(args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object")) return [3 /*break*/, 3];
|
||||
overrides = properties_1.shallowCopy(args.pop());
|
||||
if (!overrides.blockTag) return [3 /*break*/, 2];
|
||||
return [4 /*yield*/, overrides.blockTag];
|
||||
@ -285,19 +282,26 @@ function buildCall(contract, fragment, collapseSimple) {
|
||||
delete overrides.blockTag;
|
||||
_a.label = 2;
|
||||
case 2:
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
return [4 /*yield*/, populate(contract, fragment, args, overrides)];
|
||||
args.push(overrides);
|
||||
_a.label = 3;
|
||||
case 3:
|
||||
if (!(contract.deployTransaction != null)) return [3 /*break*/, 5];
|
||||
return [4 /*yield*/, contract._deployed(blockTag)];
|
||||
case 4:
|
||||
_a.sent();
|
||||
_a.label = 5;
|
||||
case 5: return [4 /*yield*/, populateTransaction(contract, fragment, args)];
|
||||
case 6:
|
||||
tx = _a.sent();
|
||||
return [4 /*yield*/, signerOrProvider.call(tx, blockTag)];
|
||||
case 4:
|
||||
value = _a.sent();
|
||||
case 7:
|
||||
result = _a.sent();
|
||||
try {
|
||||
result = contract.interface.decodeFunctionResult(fragment, value);
|
||||
value = contract.interface.decodeFunctionResult(fragment, result);
|
||||
if (collapseSimple && fragment.outputs.length === 1) {
|
||||
result = result[0];
|
||||
value = value[0];
|
||||
}
|
||||
return [2 /*return*/, result];
|
||||
return [2 /*return*/, value];
|
||||
}
|
||||
catch (error) {
|
||||
if (error.code === logger_1.Logger.errors.CALL_EXCEPTION) {
|
||||
@ -320,27 +324,26 @@ function buildSend(contract, fragment) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var overrides, txRequest, tx, wait;
|
||||
var txRequest, tx, wait;
|
||||
var _this = this;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
if (!contract.signer) {
|
||||
logger.throwError("sending a transaction requires a signer", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { operation: "sendTransaction" });
|
||||
logger.throwError("sending a transaction requires a signer", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "sendTransaction"
|
||||
});
|
||||
}
|
||||
overrides = null;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = properties_1.shallowCopy(args.pop());
|
||||
if (overrides.blockTag != null) {
|
||||
logger.throwArgumentError("cannot override \"blockTag\" in transaction", "overrides", overrides);
|
||||
}
|
||||
}
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
return [4 /*yield*/, populateCallTransaction(contract, fragment, args, overrides)];
|
||||
if (!(contract.deployTransaction != null)) return [3 /*break*/, 2];
|
||||
return [4 /*yield*/, contract._deployed()];
|
||||
case 1:
|
||||
_a.sent();
|
||||
_a.label = 2;
|
||||
case 2: return [4 /*yield*/, populateTransaction(contract, fragment, args)];
|
||||
case 3:
|
||||
txRequest = _a.sent();
|
||||
return [4 /*yield*/, contract.signer.sendTransaction(txRequest)];
|
||||
case 2:
|
||||
case 4:
|
||||
tx = _a.sent();
|
||||
wait = tx.wait.bind(tx);
|
||||
tx.wait = function (confirmations) {
|
||||
@ -551,7 +554,11 @@ var Contract = /** @class */ (function () {
|
||||
// @TODO: Maybe still check the addressOrName looks like a valid address or name?
|
||||
//address = getAddress(address);
|
||||
properties_1.defineReadOnly(this, "interface", properties_1.getStatic((_newTarget), "getInterface")(contractInterface));
|
||||
if (abstract_signer_1.Signer.isSigner(signerOrProvider)) {
|
||||
if (signerOrProvider == null) {
|
||||
properties_1.defineReadOnly(this, "provider", null);
|
||||
properties_1.defineReadOnly(this, "signer", null);
|
||||
}
|
||||
else if (abstract_signer_1.Signer.isSigner(signerOrProvider)) {
|
||||
properties_1.defineReadOnly(this, "provider", signerOrProvider.provider || null);
|
||||
properties_1.defineReadOnly(this, "signer", signerOrProvider);
|
||||
}
|
||||
@ -612,11 +619,13 @@ var Contract = /** @class */ (function () {
|
||||
}
|
||||
else {
|
||||
try {
|
||||
properties_1.defineReadOnly(this, "resolvedAddress", Promise.resolve((this.interface.constructor).getAddress(addressOrName)));
|
||||
properties_1.defineReadOnly(this, "resolvedAddress", Promise.resolve(address_1.getAddress(addressOrName)));
|
||||
}
|
||||
catch (error) {
|
||||
// Without a provider, we cannot use ENS names
|
||||
logger.throwArgumentError("provider is required to use non-address contract address", "addressOrName", addressOrName);
|
||||
logger.throwError("provider is required to use ENS name as contract address", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "new Contract"
|
||||
});
|
||||
}
|
||||
}
|
||||
var uniqueNames = {};
|
||||
|
@ -9,8 +9,7 @@
|
||||
"@ethersproject/bytes": ">=5.0.0-beta.137",
|
||||
"@ethersproject/constants": ">=5.0.0-beta.133",
|
||||
"@ethersproject/logger": ">=5.0.0-beta.137",
|
||||
"@ethersproject/properties": ">=5.0.0-beta.140",
|
||||
"@ethersproject/transactions": ">=5.0.0-beta.135"
|
||||
"@ethersproject/properties": ">=5.0.0-beta.140"
|
||||
},
|
||||
"description": "Contract abstraction meta-class for ethers.",
|
||||
"ethereum": "donations.ethers.eth",
|
||||
@ -32,7 +31,7 @@
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"tarballHash": "0xc7210dbd8a387e8ee1b090ba36f5393ab7167a7a5fbb2dea34fc938b2e5c67e6",
|
||||
"tarballHash": "0xccc2bced42f75b771c52745a7f9736b37b1adbb9d4e67c694c143422fe1e6ad4",
|
||||
"types": "./lib/index.d.ts",
|
||||
"version": "5.0.0-beta.154"
|
||||
"version": "5.0.0-beta.155"
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = "contracts/5.0.0-beta.154";
|
||||
export const version = "contracts/5.0.0-beta.155";
|
||||
|
4
packages/ethers/dist/ethers-all.esm.min.js
vendored
4
packages/ethers/dist/ethers-all.esm.min.js
vendored
File diff suppressed because one or more lines are too long
4
packages/ethers/dist/ethers-all.umd.min.js
vendored
4
packages/ethers/dist/ethers-all.umd.min.js
vendored
File diff suppressed because one or more lines are too long
222
packages/ethers/dist/ethers.esm.js
vendored
222
packages/ethers/dist/ethers.esm.js
vendored
@ -4689,7 +4689,7 @@ class FixedNumber {
|
||||
}
|
||||
}
|
||||
|
||||
const version$3 = "properties/5.0.0-beta.142";
|
||||
const version$3 = "properties/5.0.0-beta.143";
|
||||
|
||||
"use strict";
|
||||
var __awaiter = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
@ -7915,7 +7915,7 @@ class Interface {
|
||||
|
||||
"use strict";
|
||||
|
||||
const version$9 = "abstract-provider/5.0.0-beta.141";
|
||||
const version$9 = "abstract-provider/5.0.0-beta.142";
|
||||
|
||||
"use strict";
|
||||
const logger$d = new Logger(version$9);
|
||||
@ -7992,7 +7992,7 @@ class Provider {
|
||||
}
|
||||
}
|
||||
|
||||
const version$a = "abstract-signer/5.0.0-beta.144";
|
||||
const version$a = "abstract-signer/5.0.0-beta.145";
|
||||
|
||||
"use strict";
|
||||
var __awaiter$1 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
@ -8192,7 +8192,7 @@ class VoidSigner extends Signer {
|
||||
}
|
||||
}
|
||||
|
||||
const version$b = "contracts/5.0.0-beta.154";
|
||||
const version$b = "contracts/5.0.0-beta.155";
|
||||
|
||||
"use strict";
|
||||
var __awaiter$2 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
@ -8205,35 +8205,87 @@ var __awaiter$2 = (window && window.__awaiter) || function (thisArg, _arguments,
|
||||
});
|
||||
};
|
||||
const logger$f = new Logger(version$b);
|
||||
;
|
||||
;
|
||||
///////////////////////////////
|
||||
const allowedTransactionKeys$1 = {
|
||||
chainId: true, data: true, from: true, gasLimit: true, gasPrice: true, nonce: true, to: true, value: true
|
||||
};
|
||||
function resolveName(resolver, nameOrPromise) {
|
||||
return __awaiter$2(this, void 0, void 0, function* () {
|
||||
const name = yield nameOrPromise;
|
||||
// If it is already an address, just use it (after adding checksum)
|
||||
try {
|
||||
return getAddress(name);
|
||||
}
|
||||
catch (error) { }
|
||||
if (!resolver) {
|
||||
logger$f.throwError("a provider or signer is needed to resolve ENS names", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "resolveName"
|
||||
});
|
||||
}
|
||||
return yield resolver.resolveName(name);
|
||||
});
|
||||
}
|
||||
// Recursively replaces ENS names with promises to resolve the name and resolves all properties
|
||||
function resolveAddresses(signerOrProvider, value, paramType) {
|
||||
function resolveAddresses(resolver, value, paramType) {
|
||||
if (Array.isArray(paramType)) {
|
||||
return Promise.all(paramType.map((paramType, index) => {
|
||||
return resolveAddresses(signerOrProvider, ((Array.isArray(value)) ? value[index] : value[paramType.name]), paramType);
|
||||
return resolveAddresses(resolver, ((Array.isArray(value)) ? value[index] : value[paramType.name]), paramType);
|
||||
}));
|
||||
}
|
||||
if (paramType.type === "address") {
|
||||
return signerOrProvider.resolveName(value);
|
||||
return resolveName(resolver, value);
|
||||
}
|
||||
if (paramType.type === "tuple") {
|
||||
return resolveAddresses(signerOrProvider, value, paramType.components);
|
||||
return resolveAddresses(resolver, value, paramType.components);
|
||||
}
|
||||
if (paramType.baseType === "array") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("invalid value for array");
|
||||
}
|
||||
return Promise.all(value.map((v) => resolveAddresses(signerOrProvider, v, paramType.arrayChildren)));
|
||||
return Promise.all(value.map((v) => resolveAddresses(resolver, v, paramType.arrayChildren)));
|
||||
}
|
||||
return Promise.resolve(value);
|
||||
}
|
||||
function _populateTransaction(contract, fragment, args, overrides) {
|
||||
function populateTransaction(contract, fragment, args) {
|
||||
return __awaiter$2(this, void 0, void 0, function* () {
|
||||
overrides = shallowCopy(overrides);
|
||||
// Wait for all dependency addresses to be resolved (prefer the signer over the provider)
|
||||
// If an extra argument is given, it is overrides
|
||||
let overrides = {};
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = shallowCopy(args.pop());
|
||||
}
|
||||
// Make sure the parameter count matches
|
||||
logger$f.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
// Populate "from" override (allow promises)
|
||||
if (contract.signer) {
|
||||
if (overrides.from) {
|
||||
// Contracts with a Signer are from the Signer's frame-of-reference;
|
||||
// but we allow overriding "from" if it matches the signer
|
||||
overrides.from = resolveProperties({
|
||||
override: resolveName(contract.signer, overrides.from),
|
||||
signer: contract.signer.getAddress()
|
||||
}).then((check) => __awaiter$2(this, void 0, void 0, function* () {
|
||||
if (getAddress(check.signer) !== check.override) {
|
||||
logger$f.throwError("Contract with a Signer cannot override from", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides.from"
|
||||
});
|
||||
}
|
||||
return check.override;
|
||||
}));
|
||||
}
|
||||
else {
|
||||
overrides.from = contract.signer.getAddress();
|
||||
}
|
||||
}
|
||||
else if (overrides.from) {
|
||||
overrides.from = resolveName(contract.provider, overrides.from);
|
||||
//} else {
|
||||
// Contracts without a signer can override "from", and if
|
||||
// unspecified the zero address is used
|
||||
//overrides.from = AddressZero;
|
||||
}
|
||||
// Wait for all dependencies to be resolved (prefer the signer over the provider)
|
||||
const resolved = yield resolveProperties({
|
||||
args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),
|
||||
address: contract.resolvedAddress,
|
||||
@ -8246,6 +8298,7 @@ function _populateTransaction(contract, fragment, args, overrides) {
|
||||
};
|
||||
// Resolved Overrides
|
||||
const ro = resolved.overrides;
|
||||
// Populate simple overrides
|
||||
if (ro.nonce != null) {
|
||||
tx.nonce = BigNumber.from(ro.nonce).toNumber();
|
||||
}
|
||||
@ -8255,128 +8308,90 @@ function _populateTransaction(contract, fragment, args, overrides) {
|
||||
if (ro.gasPrice != null) {
|
||||
tx.gasPrice = BigNumber.from(ro.gasPrice);
|
||||
}
|
||||
// If there was no gasLimit override, but the ABI specifies one use it
|
||||
if (ro.from != null) {
|
||||
tx.from = ro.from;
|
||||
}
|
||||
// If there was no "gasLimit" override, but the ABI specifies a default, use it
|
||||
if (tx.gasLimit == null && fragment.gas != null) {
|
||||
tx.gasLimit = BigNumber.from(fragment.gas).add(21000);
|
||||
}
|
||||
// Populate "value" override
|
||||
if (ro.value) {
|
||||
const roValue = BigNumber.from(ro.value);
|
||||
if (!roValue.isZero() && !fragment.payable) {
|
||||
logger$f.throwError("non-payable method cannot override value", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides.value",
|
||||
value: overrides.value
|
||||
});
|
||||
}
|
||||
tx.value = roValue;
|
||||
}
|
||||
// Remvoe the overrides
|
||||
delete overrides.nonce;
|
||||
delete overrides.gasLimit;
|
||||
delete overrides.gasPrice;
|
||||
// @TODO: Maybe move all tx property validation to the Signer and Provider?
|
||||
delete overrides.from;
|
||||
delete overrides.value;
|
||||
// Make sure there are no stray overrides, which may indicate a
|
||||
// typo or using an unsupported key.
|
||||
const leftovers = Object.keys(overrides);
|
||||
if (leftovers.length) {
|
||||
logger$f.throwError(`cannot override ${leftovers.map((l) => JSON.stringify(l)).join(",")}`, Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides",
|
||||
keys: leftovers
|
||||
overrides: leftovers
|
||||
});
|
||||
}
|
||||
return tx;
|
||||
});
|
||||
}
|
||||
function populateTransaction(contract, fragment, args, overrides) {
|
||||
return __awaiter$2(this, void 0, void 0, function* () {
|
||||
overrides = shallowCopy(overrides);
|
||||
// If the contract was just deployed, wait until it is minded
|
||||
if (contract.deployTransaction != null) {
|
||||
yield contract._deployed();
|
||||
}
|
||||
// Resolved Overrides (keep value for errors)
|
||||
const ro = yield resolveProperties(overrides);
|
||||
const value = overrides.value;
|
||||
delete overrides.value;
|
||||
const tx = yield _populateTransaction(contract, fragment, args, overrides);
|
||||
if (ro.value) {
|
||||
const roValue = BigNumber.from(ro.value);
|
||||
if (!roValue.isZero() && !fragment.payable) {
|
||||
logger$f.throwError("non-payable method cannot override value", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides.value",
|
||||
value: value
|
||||
});
|
||||
}
|
||||
tx.value = roValue;
|
||||
}
|
||||
return tx;
|
||||
});
|
||||
}
|
||||
function populateCallTransaction(contract, fragment, args, overrides) {
|
||||
return __awaiter$2(this, void 0, void 0, function* () {
|
||||
overrides = shallowCopy(overrides);
|
||||
// If the contract was just deployed, wait until it is minded
|
||||
if (contract.deployTransaction != null) {
|
||||
let blockTag = undefined;
|
||||
if (overrides.blockTag) {
|
||||
blockTag = yield overrides.blockTag;
|
||||
}
|
||||
yield contract._deployed(blockTag);
|
||||
}
|
||||
// Resolved Overrides
|
||||
delete overrides.blockTag;
|
||||
const ro = yield resolveProperties(overrides);
|
||||
delete overrides.from;
|
||||
const tx = yield populateTransaction(contract, fragment, args, overrides);
|
||||
if (ro.from) {
|
||||
tx.from = this.interface.constructor.getAddress(ro.from);
|
||||
}
|
||||
return tx;
|
||||
});
|
||||
}
|
||||
function buildPopulate(contract, fragment) {
|
||||
const populate = (fragment.constant) ? populateCallTransaction : populateTransaction;
|
||||
return function (...args) {
|
||||
return __awaiter$2(this, void 0, void 0, function* () {
|
||||
let overrides = null;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = args.pop();
|
||||
}
|
||||
logger$f.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
return populate(contract, fragment, args, overrides);
|
||||
return populateTransaction(contract, fragment, args);
|
||||
});
|
||||
};
|
||||
}
|
||||
function buildEstimate(contract, fragment) {
|
||||
const signerOrProvider = (contract.signer || contract.provider);
|
||||
const populate = (fragment.constant) ? populateCallTransaction : populateTransaction;
|
||||
return function (...args) {
|
||||
return __awaiter$2(this, void 0, void 0, function* () {
|
||||
let overrides = null;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = args.pop();
|
||||
}
|
||||
logger$f.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
if (!signerOrProvider) {
|
||||
logger$f.throwError("estimate require a provider or signer", Logger.errors.UNSUPPORTED_OPERATION, { operation: "estimateGas" });
|
||||
logger$f.throwError("estimate require a provider or signer", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "estimateGas"
|
||||
});
|
||||
}
|
||||
const tx = yield populate(contract, fragment, args, overrides);
|
||||
const tx = yield populateTransaction(contract, fragment, args);
|
||||
return yield signerOrProvider.estimateGas(tx);
|
||||
});
|
||||
};
|
||||
}
|
||||
function buildCall(contract, fragment, collapseSimple) {
|
||||
const signerOrProvider = (contract.signer || contract.provider);
|
||||
const populate = (fragment.constant) ? populateCallTransaction : populateTransaction;
|
||||
return function (...args) {
|
||||
return __awaiter$2(this, void 0, void 0, function* () {
|
||||
let overrides = null;
|
||||
// Extract the "blockTag" override if present
|
||||
let blockTag = undefined;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = shallowCopy(args.pop());
|
||||
const overrides = shallowCopy(args.pop());
|
||||
if (overrides.blockTag) {
|
||||
blockTag = yield overrides.blockTag;
|
||||
delete overrides.blockTag;
|
||||
}
|
||||
args.push(overrides);
|
||||
}
|
||||
logger$f.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
const tx = yield populate(contract, fragment, args, overrides);
|
||||
const value = yield signerOrProvider.call(tx, blockTag);
|
||||
// If the contract was just deployed, wait until it is mined
|
||||
if (contract.deployTransaction != null) {
|
||||
yield contract._deployed(blockTag);
|
||||
}
|
||||
// Call a node and get the result
|
||||
const tx = yield populateTransaction(contract, fragment, args);
|
||||
const result = yield signerOrProvider.call(tx, blockTag);
|
||||
try {
|
||||
let result = contract.interface.decodeFunctionResult(fragment, value);
|
||||
let value = contract.interface.decodeFunctionResult(fragment, result);
|
||||
if (collapseSimple && fragment.outputs.length === 1) {
|
||||
result = result[0];
|
||||
value = value[0];
|
||||
}
|
||||
return result;
|
||||
return value;
|
||||
}
|
||||
catch (error) {
|
||||
if (error.code === Logger.errors.CALL_EXCEPTION) {
|
||||
@ -8393,18 +8408,15 @@ function buildSend(contract, fragment) {
|
||||
return function (...args) {
|
||||
return __awaiter$2(this, void 0, void 0, function* () {
|
||||
if (!contract.signer) {
|
||||
logger$f.throwError("sending a transaction requires a signer", Logger.errors.UNSUPPORTED_OPERATION, { operation: "sendTransaction" });
|
||||
logger$f.throwError("sending a transaction requires a signer", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "sendTransaction"
|
||||
});
|
||||
}
|
||||
// We allow CallOverrides, since the Signer can accept from
|
||||
let overrides = null;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = shallowCopy(args.pop());
|
||||
if (overrides.blockTag != null) {
|
||||
logger$f.throwArgumentError(`cannot override "blockTag" in transaction`, "overrides", overrides);
|
||||
}
|
||||
// If the contract was just deployed, wait until it is minded
|
||||
if (contract.deployTransaction != null) {
|
||||
yield contract._deployed();
|
||||
}
|
||||
logger$f.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
const txRequest = yield populateCallTransaction(contract, fragment, args, overrides);
|
||||
const txRequest = yield populateTransaction(contract, fragment, args);
|
||||
const tx = yield contract.signer.sendTransaction(txRequest);
|
||||
// Tweak the tw.wait so the receipt has extra properties
|
||||
const wait = tx.wait.bind(tx);
|
||||
@ -8599,7 +8611,11 @@ class Contract {
|
||||
// @TODO: Maybe still check the addressOrName looks like a valid address or name?
|
||||
//address = getAddress(address);
|
||||
defineReadOnly(this, "interface", getStatic((new.target), "getInterface")(contractInterface));
|
||||
if (Signer.isSigner(signerOrProvider)) {
|
||||
if (signerOrProvider == null) {
|
||||
defineReadOnly(this, "provider", null);
|
||||
defineReadOnly(this, "signer", null);
|
||||
}
|
||||
else if (Signer.isSigner(signerOrProvider)) {
|
||||
defineReadOnly(this, "provider", signerOrProvider.provider || null);
|
||||
defineReadOnly(this, "signer", signerOrProvider);
|
||||
}
|
||||
@ -8656,11 +8672,13 @@ class Contract {
|
||||
}
|
||||
else {
|
||||
try {
|
||||
defineReadOnly(this, "resolvedAddress", Promise.resolve((this.interface.constructor).getAddress(addressOrName)));
|
||||
defineReadOnly(this, "resolvedAddress", Promise.resolve(getAddress(addressOrName)));
|
||||
}
|
||||
catch (error) {
|
||||
// Without a provider, we cannot use ENS names
|
||||
logger$f.throwArgumentError("provider is required to use non-address contract address", "addressOrName", addressOrName);
|
||||
logger$f.throwError("provider is required to use ENS name as contract address", Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "new Contract"
|
||||
});
|
||||
}
|
||||
}
|
||||
const uniqueNames = {};
|
||||
@ -16123,7 +16141,7 @@ function poll(func, options) {
|
||||
});
|
||||
}
|
||||
|
||||
const version$m = "providers/5.0.0-beta.169";
|
||||
const version$m = "providers/5.0.0-beta.170";
|
||||
|
||||
"use strict";
|
||||
const logger$q = new Logger(version$m);
|
||||
@ -18981,7 +18999,7 @@ var browserIpcProvider = {
|
||||
var _version$2 = createCommonjsModule(function (module, exports) {
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "providers/5.0.0-beta.169";
|
||||
exports.version = "providers/5.0.0-beta.170";
|
||||
});
|
||||
|
||||
var _version$3 = unwrapExports(_version$2);
|
||||
@ -19755,7 +19773,7 @@ var utils$1 = /*#__PURE__*/Object.freeze({
|
||||
Indexed: Indexed
|
||||
});
|
||||
|
||||
const version$o = "ethers/5.0.0-beta.189";
|
||||
const version$o = "ethers/5.0.0-beta.190";
|
||||
|
||||
"use strict";
|
||||
const logger$E = new Logger(version$o);
|
||||
|
4
packages/ethers/dist/ethers.esm.min.js
vendored
4
packages/ethers/dist/ethers.esm.min.js
vendored
File diff suppressed because one or more lines are too long
269
packages/ethers/dist/ethers.umd.js
vendored
269
packages/ethers/dist/ethers.umd.js
vendored
@ -4817,7 +4817,7 @@
|
||||
var _version$6 = createCommonjsModule(function (module, exports) {
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "properties/5.0.0-beta.142";
|
||||
exports.version = "properties/5.0.0-beta.143";
|
||||
});
|
||||
|
||||
var _version$7 = unwrapExports(_version$6);
|
||||
@ -8767,7 +8767,7 @@
|
||||
var _version$i = createCommonjsModule(function (module, exports) {
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "abstract-provider/5.0.0-beta.141";
|
||||
exports.version = "abstract-provider/5.0.0-beta.142";
|
||||
});
|
||||
|
||||
var _version$j = unwrapExports(_version$i);
|
||||
@ -8902,7 +8902,7 @@
|
||||
var _version$k = createCommonjsModule(function (module, exports) {
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "abstract-signer/5.0.0-beta.144";
|
||||
exports.version = "abstract-signer/5.0.0-beta.145";
|
||||
});
|
||||
|
||||
var _version$l = unwrapExports(_version$k);
|
||||
@ -9228,7 +9228,7 @@
|
||||
var _version$m = createCommonjsModule(function (module, exports) {
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "contracts/5.0.0-beta.154";
|
||||
exports.version = "contracts/5.0.0-beta.155";
|
||||
});
|
||||
|
||||
var _version$n = unwrapExports(_version$m);
|
||||
@ -9299,42 +9299,106 @@
|
||||
|
||||
|
||||
|
||||
//import { AddressZero } from "@ethersproject/constants";
|
||||
|
||||
// @TOOD remove dependences transactions
|
||||
|
||||
|
||||
var logger = new lib.Logger(_version$m.version);
|
||||
;
|
||||
;
|
||||
///////////////////////////////
|
||||
var allowedTransactionKeys = {
|
||||
chainId: true, data: true, from: true, gasLimit: true, gasPrice: true, nonce: true, to: true, value: true
|
||||
};
|
||||
function resolveName(resolver, nameOrPromise) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var name;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, nameOrPromise];
|
||||
case 1:
|
||||
name = _a.sent();
|
||||
// If it is already an address, just use it (after adding checksum)
|
||||
try {
|
||||
return [2 /*return*/, lib$6.getAddress(name)];
|
||||
}
|
||||
catch (error) { }
|
||||
if (!resolver) {
|
||||
logger.throwError("a provider or signer is needed to resolve ENS names", lib.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "resolveName"
|
||||
});
|
||||
}
|
||||
return [4 /*yield*/, resolver.resolveName(name)];
|
||||
case 2: return [2 /*return*/, _a.sent()];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
// Recursively replaces ENS names with promises to resolve the name and resolves all properties
|
||||
function resolveAddresses(signerOrProvider, value, paramType) {
|
||||
function resolveAddresses(resolver, value, paramType) {
|
||||
if (Array.isArray(paramType)) {
|
||||
return Promise.all(paramType.map(function (paramType, index) {
|
||||
return resolveAddresses(signerOrProvider, ((Array.isArray(value)) ? value[index] : value[paramType.name]), paramType);
|
||||
return resolveAddresses(resolver, ((Array.isArray(value)) ? value[index] : value[paramType.name]), paramType);
|
||||
}));
|
||||
}
|
||||
if (paramType.type === "address") {
|
||||
return signerOrProvider.resolveName(value);
|
||||
return resolveName(resolver, value);
|
||||
}
|
||||
if (paramType.type === "tuple") {
|
||||
return resolveAddresses(signerOrProvider, value, paramType.components);
|
||||
return resolveAddresses(resolver, value, paramType.components);
|
||||
}
|
||||
if (paramType.baseType === "array") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("invalid value for array");
|
||||
}
|
||||
return Promise.all(value.map(function (v) { return resolveAddresses(signerOrProvider, v, paramType.arrayChildren); }));
|
||||
return Promise.all(value.map(function (v) { return resolveAddresses(resolver, v, paramType.arrayChildren); }));
|
||||
}
|
||||
return Promise.resolve(value);
|
||||
}
|
||||
function _populateTransaction(contract, fragment, args, overrides) {
|
||||
function populateTransaction(contract, fragment, args) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var resolved, tx, ro, leftovers;
|
||||
var overrides, resolved, tx, ro, roValue, leftovers;
|
||||
var _this = this;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
overrides = lib$3.shallowCopy(overrides);
|
||||
overrides = {};
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = lib$3.shallowCopy(args.pop());
|
||||
}
|
||||
// Make sure the parameter count matches
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
// Populate "from" override (allow promises)
|
||||
if (contract.signer) {
|
||||
if (overrides.from) {
|
||||
// Contracts with a Signer are from the Signer's frame-of-reference;
|
||||
// but we allow overriding "from" if it matches the signer
|
||||
overrides.from = lib$3.resolveProperties({
|
||||
override: resolveName(contract.signer, overrides.from),
|
||||
signer: contract.signer.getAddress()
|
||||
}).then(function (check) { return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
if (lib$6.getAddress(check.signer) !== check.override) {
|
||||
logger.throwError("Contract with a Signer cannot override from", lib.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides.from"
|
||||
});
|
||||
}
|
||||
return [2 /*return*/, check.override];
|
||||
});
|
||||
}); });
|
||||
}
|
||||
else {
|
||||
overrides.from = contract.signer.getAddress();
|
||||
}
|
||||
}
|
||||
else if (overrides.from) {
|
||||
overrides.from = resolveName(contract.provider, overrides.from);
|
||||
//} else {
|
||||
// Contracts without a signer can override "from", and if
|
||||
// unspecified the zero address is used
|
||||
//overrides.from = AddressZero;
|
||||
}
|
||||
return [4 /*yield*/, lib$3.resolveProperties({
|
||||
args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),
|
||||
address: contract.resolvedAddress,
|
||||
@ -9347,6 +9411,7 @@
|
||||
to: resolved.address
|
||||
};
|
||||
ro = resolved.overrides;
|
||||
// Populate simple overrides
|
||||
if (ro.nonce != null) {
|
||||
tx.nonce = lib$2.BigNumber.from(ro.nonce).toNumber();
|
||||
}
|
||||
@ -9356,19 +9421,35 @@
|
||||
if (ro.gasPrice != null) {
|
||||
tx.gasPrice = lib$2.BigNumber.from(ro.gasPrice);
|
||||
}
|
||||
// If there was no gasLimit override, but the ABI specifies one use it
|
||||
if (ro.from != null) {
|
||||
tx.from = ro.from;
|
||||
}
|
||||
// If there was no "gasLimit" override, but the ABI specifies a default, use it
|
||||
if (tx.gasLimit == null && fragment.gas != null) {
|
||||
tx.gasLimit = lib$2.BigNumber.from(fragment.gas).add(21000);
|
||||
}
|
||||
// Populate "value" override
|
||||
if (ro.value) {
|
||||
roValue = lib$2.BigNumber.from(ro.value);
|
||||
if (!roValue.isZero() && !fragment.payable) {
|
||||
logger.throwError("non-payable method cannot override value", lib.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides.value",
|
||||
value: overrides.value
|
||||
});
|
||||
}
|
||||
tx.value = roValue;
|
||||
}
|
||||
// Remvoe the overrides
|
||||
delete overrides.nonce;
|
||||
delete overrides.gasLimit;
|
||||
delete overrides.gasPrice;
|
||||
delete overrides.from;
|
||||
delete overrides.value;
|
||||
leftovers = Object.keys(overrides);
|
||||
if (leftovers.length) {
|
||||
logger.throwError("cannot override " + leftovers.map(function (l) { return JSON.stringify(l); }).join(","), lib.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides",
|
||||
keys: leftovers
|
||||
overrides: leftovers
|
||||
});
|
||||
}
|
||||
return [2 /*return*/, tx];
|
||||
@ -9376,119 +9457,37 @@
|
||||
});
|
||||
});
|
||||
}
|
||||
function populateTransaction(contract, fragment, args, overrides) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var ro, value, tx, roValue;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
overrides = lib$3.shallowCopy(overrides);
|
||||
if (!(contract.deployTransaction != null)) return [3 /*break*/, 2];
|
||||
return [4 /*yield*/, contract._deployed()];
|
||||
case 1:
|
||||
_a.sent();
|
||||
_a.label = 2;
|
||||
case 2: return [4 /*yield*/, lib$3.resolveProperties(overrides)];
|
||||
case 3:
|
||||
ro = _a.sent();
|
||||
value = overrides.value;
|
||||
delete overrides.value;
|
||||
return [4 /*yield*/, _populateTransaction(contract, fragment, args, overrides)];
|
||||
case 4:
|
||||
tx = _a.sent();
|
||||
if (ro.value) {
|
||||
roValue = lib$2.BigNumber.from(ro.value);
|
||||
if (!roValue.isZero() && !fragment.payable) {
|
||||
logger.throwError("non-payable method cannot override value", lib.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "overrides.value",
|
||||
value: value
|
||||
});
|
||||
}
|
||||
tx.value = roValue;
|
||||
}
|
||||
return [2 /*return*/, tx];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
function populateCallTransaction(contract, fragment, args, overrides) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var blockTag, ro, tx;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
overrides = lib$3.shallowCopy(overrides);
|
||||
if (!(contract.deployTransaction != null)) return [3 /*break*/, 4];
|
||||
blockTag = undefined;
|
||||
if (!overrides.blockTag) return [3 /*break*/, 2];
|
||||
return [4 /*yield*/, overrides.blockTag];
|
||||
case 1:
|
||||
blockTag = _a.sent();
|
||||
_a.label = 2;
|
||||
case 2: return [4 /*yield*/, contract._deployed(blockTag)];
|
||||
case 3:
|
||||
_a.sent();
|
||||
_a.label = 4;
|
||||
case 4:
|
||||
// Resolved Overrides
|
||||
delete overrides.blockTag;
|
||||
return [4 /*yield*/, lib$3.resolveProperties(overrides)];
|
||||
case 5:
|
||||
ro = _a.sent();
|
||||
delete overrides.from;
|
||||
return [4 /*yield*/, populateTransaction(contract, fragment, args, overrides)];
|
||||
case 6:
|
||||
tx = _a.sent();
|
||||
if (ro.from) {
|
||||
tx.from = this.interface.constructor.getAddress(ro.from);
|
||||
}
|
||||
return [2 /*return*/, tx];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
function buildPopulate(contract, fragment) {
|
||||
var populate = (fragment.constant) ? populateCallTransaction : populateTransaction;
|
||||
return function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var overrides;
|
||||
return __generator(this, function (_a) {
|
||||
overrides = null;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = args.pop();
|
||||
}
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
return [2 /*return*/, populate(contract, fragment, args, overrides)];
|
||||
return [2 /*return*/, populateTransaction(contract, fragment, args)];
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
function buildEstimate(contract, fragment) {
|
||||
var signerOrProvider = (contract.signer || contract.provider);
|
||||
var populate = (fragment.constant) ? populateCallTransaction : populateTransaction;
|
||||
return function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var overrides, tx;
|
||||
var tx;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
overrides = null;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = args.pop();
|
||||
}
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
if (!signerOrProvider) {
|
||||
logger.throwError("estimate require a provider or signer", lib.Logger.errors.UNSUPPORTED_OPERATION, { operation: "estimateGas" });
|
||||
logger.throwError("estimate require a provider or signer", lib.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "estimateGas"
|
||||
});
|
||||
}
|
||||
return [4 /*yield*/, populate(contract, fragment, args, overrides)];
|
||||
return [4 /*yield*/, populateTransaction(contract, fragment, args)];
|
||||
case 1:
|
||||
tx = _a.sent();
|
||||
return [4 /*yield*/, signerOrProvider.estimateGas(tx)];
|
||||
@ -9500,20 +9499,18 @@
|
||||
}
|
||||
function buildCall(contract, fragment, collapseSimple) {
|
||||
var signerOrProvider = (contract.signer || contract.provider);
|
||||
var populate = (fragment.constant) ? populateCallTransaction : populateTransaction;
|
||||
return function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var overrides, blockTag, tx, value, result;
|
||||
var blockTag, overrides, tx, result, value;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
overrides = null;
|
||||
blockTag = undefined;
|
||||
if (!(args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object")) return [3 /*break*/, 2];
|
||||
if (!(args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object")) return [3 /*break*/, 3];
|
||||
overrides = lib$3.shallowCopy(args.pop());
|
||||
if (!overrides.blockTag) return [3 /*break*/, 2];
|
||||
return [4 /*yield*/, overrides.blockTag];
|
||||
@ -9522,19 +9519,26 @@
|
||||
delete overrides.blockTag;
|
||||
_a.label = 2;
|
||||
case 2:
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
return [4 /*yield*/, populate(contract, fragment, args, overrides)];
|
||||
args.push(overrides);
|
||||
_a.label = 3;
|
||||
case 3:
|
||||
if (!(contract.deployTransaction != null)) return [3 /*break*/, 5];
|
||||
return [4 /*yield*/, contract._deployed(blockTag)];
|
||||
case 4:
|
||||
_a.sent();
|
||||
_a.label = 5;
|
||||
case 5: return [4 /*yield*/, populateTransaction(contract, fragment, args)];
|
||||
case 6:
|
||||
tx = _a.sent();
|
||||
return [4 /*yield*/, signerOrProvider.call(tx, blockTag)];
|
||||
case 4:
|
||||
value = _a.sent();
|
||||
case 7:
|
||||
result = _a.sent();
|
||||
try {
|
||||
result = contract.interface.decodeFunctionResult(fragment, value);
|
||||
value = contract.interface.decodeFunctionResult(fragment, result);
|
||||
if (collapseSimple && fragment.outputs.length === 1) {
|
||||
result = result[0];
|
||||
value = value[0];
|
||||
}
|
||||
return [2 /*return*/, result];
|
||||
return [2 /*return*/, value];
|
||||
}
|
||||
catch (error) {
|
||||
if (error.code === lib.Logger.errors.CALL_EXCEPTION) {
|
||||
@ -9557,27 +9561,26 @@
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var overrides, txRequest, tx, wait;
|
||||
var txRequest, tx, wait;
|
||||
var _this = this;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
if (!contract.signer) {
|
||||
logger.throwError("sending a transaction requires a signer", lib.Logger.errors.UNSUPPORTED_OPERATION, { operation: "sendTransaction" });
|
||||
logger.throwError("sending a transaction requires a signer", lib.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "sendTransaction"
|
||||
});
|
||||
}
|
||||
overrides = null;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = lib$3.shallowCopy(args.pop());
|
||||
if (overrides.blockTag != null) {
|
||||
logger.throwArgumentError("cannot override \"blockTag\" in transaction", "overrides", overrides);
|
||||
}
|
||||
}
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
return [4 /*yield*/, populateCallTransaction(contract, fragment, args, overrides)];
|
||||
if (!(contract.deployTransaction != null)) return [3 /*break*/, 2];
|
||||
return [4 /*yield*/, contract._deployed()];
|
||||
case 1:
|
||||
_a.sent();
|
||||
_a.label = 2;
|
||||
case 2: return [4 /*yield*/, populateTransaction(contract, fragment, args)];
|
||||
case 3:
|
||||
txRequest = _a.sent();
|
||||
return [4 /*yield*/, contract.signer.sendTransaction(txRequest)];
|
||||
case 2:
|
||||
case 4:
|
||||
tx = _a.sent();
|
||||
wait = tx.wait.bind(tx);
|
||||
tx.wait = function (confirmations) {
|
||||
@ -9788,7 +9791,11 @@
|
||||
// @TODO: Maybe still check the addressOrName looks like a valid address or name?
|
||||
//address = getAddress(address);
|
||||
lib$3.defineReadOnly(this, "interface", lib$3.getStatic((_newTarget), "getInterface")(contractInterface));
|
||||
if (lib$c.Signer.isSigner(signerOrProvider)) {
|
||||
if (signerOrProvider == null) {
|
||||
lib$3.defineReadOnly(this, "provider", null);
|
||||
lib$3.defineReadOnly(this, "signer", null);
|
||||
}
|
||||
else if (lib$c.Signer.isSigner(signerOrProvider)) {
|
||||
lib$3.defineReadOnly(this, "provider", signerOrProvider.provider || null);
|
||||
lib$3.defineReadOnly(this, "signer", signerOrProvider);
|
||||
}
|
||||
@ -9849,11 +9856,13 @@
|
||||
}
|
||||
else {
|
||||
try {
|
||||
lib$3.defineReadOnly(this, "resolvedAddress", Promise.resolve((this.interface.constructor).getAddress(addressOrName)));
|
||||
lib$3.defineReadOnly(this, "resolvedAddress", Promise.resolve(lib$6.getAddress(addressOrName)));
|
||||
}
|
||||
catch (error) {
|
||||
// Without a provider, we cannot use ENS names
|
||||
logger.throwArgumentError("provider is required to use non-address contract address", "addressOrName", addressOrName);
|
||||
logger.throwError("provider is required to use ENS name as contract address", lib.Logger.errors.UNSUPPORTED_OPERATION, {
|
||||
operation: "new Contract"
|
||||
});
|
||||
}
|
||||
}
|
||||
var uniqueNames = {};
|
||||
@ -17944,7 +17953,7 @@
|
||||
var _version$I = createCommonjsModule(function (module, exports) {
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "providers/5.0.0-beta.169";
|
||||
exports.version = "providers/5.0.0-beta.170";
|
||||
});
|
||||
|
||||
var _version$J = unwrapExports(_version$I);
|
||||
@ -22837,7 +22846,7 @@
|
||||
var _version$M = createCommonjsModule(function (module, exports) {
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "ethers/5.0.0-beta.189";
|
||||
exports.version = "ethers/5.0.0-beta.190";
|
||||
});
|
||||
|
||||
var _version$N = unwrapExports(_version$M);
|
||||
|
4
packages/ethers/dist/ethers.umd.min.js
vendored
4
packages/ethers/dist/ethers.umd.min.js
vendored
File diff suppressed because one or more lines are too long
2
packages/ethers/lib.esm/_version.d.ts
vendored
2
packages/ethers/lib.esm/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "ethers/5.0.0-beta.189";
|
||||
export declare const version = "ethers/5.0.0-beta.190";
|
||||
|
@ -1 +1 @@
|
||||
export const version = "ethers/5.0.0-beta.189";
|
||||
export const version = "ethers/5.0.0-beta.190";
|
||||
|
4
packages/ethers/lib.esm/ethers.d.ts
vendored
4
packages/ethers/lib.esm/ethers.d.ts
vendored
@ -13,5 +13,5 @@ import { Bytes, BytesLike, Signature } from "@ethersproject/bytes";
|
||||
import { Transaction, UnsignedTransaction } from "@ethersproject/transactions";
|
||||
import { version } from "./_version";
|
||||
declare const logger: utils.Logger;
|
||||
import { ContractFunction, ContractReceipt, ContractTransaction, Event, EventFilter, Overrides, PayableOverrides, CallOverrides, ContractInterface } from "@ethersproject/contracts";
|
||||
export { Signer, Wallet, VoidSigner, getDefaultProvider, providers, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, version, ContractFunction, ContractReceipt, ContractTransaction, Event, EventFilter, Overrides, PayableOverrides, CallOverrides, ContractInterface, BigNumberish, Bytes, BytesLike, Signature, Transaction, UnsignedTransaction, Wordlist };
|
||||
import { ContractFunction, ContractReceipt, ContractTransaction, Event, EventFilter, Overrides, PayableOverrides, CallOverrides, PopulatedTransaction, ContractInterface } from "@ethersproject/contracts";
|
||||
export { Signer, Wallet, VoidSigner, getDefaultProvider, providers, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, version, ContractFunction, ContractReceipt, ContractTransaction, Event, EventFilter, Overrides, PayableOverrides, CallOverrides, PopulatedTransaction, ContractInterface, BigNumberish, Bytes, BytesLike, Signature, Transaction, UnsignedTransaction, Wordlist };
|
||||
|
2
packages/ethers/lib.esm/index.d.ts
vendored
2
packages/ethers/lib.esm/index.d.ts
vendored
@ -1,3 +1,3 @@
|
||||
import * as ethers from "./ethers";
|
||||
export { ethers };
|
||||
export { Signer, Wallet, VoidSigner, getDefaultProvider, providers, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, version, ContractFunction, ContractReceipt, ContractTransaction, Event, EventFilter, Overrides, PayableOverrides, CallOverrides, ContractInterface, BigNumberish, Bytes, BytesLike, Signature, Transaction, UnsignedTransaction, Wordlist } from "./ethers";
|
||||
export { Signer, Wallet, VoidSigner, getDefaultProvider, providers, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, version, ContractFunction, ContractReceipt, ContractTransaction, Event, EventFilter, Overrides, PayableOverrides, CallOverrides, PopulatedTransaction, ContractInterface, BigNumberish, Bytes, BytesLike, Signature, Transaction, UnsignedTransaction, Wordlist } from "./ethers";
|
||||
|
3
packages/ethers/lib.esm/utils.d.ts
vendored
3
packages/ethers/lib.esm/utils.d.ts
vendored
@ -25,6 +25,7 @@ import { CoerceFunc } from "@ethersproject/abi";
|
||||
import { Bytes, BytesLike, Hexable } from "@ethersproject/bytes";
|
||||
import { Mnemonic } from "@ethersproject/hdnode";
|
||||
import { EncryptOptions, ProgressCallback } from "@ethersproject/json-wallets";
|
||||
import { Deferrable } from "@ethersproject/properties";
|
||||
import { Utf8ErrorFunc } from "@ethersproject/strings";
|
||||
import { ConnectionInfo, FetchJsonResponse, OnceBlockable, OncePollable, PollOptions } from "@ethersproject/web";
|
||||
export { AbiCoder, defaultAbiCoder, Fragment, EventFragment, FunctionFragment, ParamType, FormatTypes, checkResultErrors, Result, Logger, RLP, fetchJson, poll, checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy, arrayify, concat, stripZeros, zeroPad, isBytes, isBytesLike, defaultPath, HDNode, SigningKey, Interface, LogDescription, TransactionDescription, base64, hexlify, isHexString, hexStripZeros, hexValue, hexZeroPad, hexDataLength, hexDataSlice, nameprep, _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, Utf8ErrorFuncs, formatBytes32String, parseBytes32String, hashMessage, namehash, isValidName, id, getAddress, getIcapAddress, getContractAddress, getCreate2Address, isAddress, formatEther, parseEther, formatUnits, parseUnits, commify, computeHmac, keccak256, ripemd160, sha256, sha512, randomBytes, shuffled, solidityPack, solidityKeccak256, soliditySha256, splitSignature, joinSignature, parseTransaction, serializeTransaction, getJsonWalletAddress, computeAddress, recoverAddress, computePublicKey, recoverPublicKey, verifyMessage, mnemonicToEntropy, entropyToMnemonic, isValidMnemonic, mnemonicToSeed, SupportedAlgorithm, UnicodeNormalizationForm, Utf8ErrorReason, Bytes, BytesLike, Hexable, UnsignedTransaction, CoerceFunc, Indexed, Mnemonic, Utf8ErrorFunc, ConnectionInfo, OnceBlockable, OncePollable, PollOptions, FetchJsonResponse, EncryptOptions, ProgressCallback };
|
||||
export { AbiCoder, defaultAbiCoder, Fragment, EventFragment, FunctionFragment, ParamType, FormatTypes, checkResultErrors, Result, Logger, RLP, fetchJson, poll, checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy, arrayify, concat, stripZeros, zeroPad, isBytes, isBytesLike, defaultPath, HDNode, SigningKey, Interface, LogDescription, TransactionDescription, base64, hexlify, isHexString, hexStripZeros, hexValue, hexZeroPad, hexDataLength, hexDataSlice, nameprep, _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, Utf8ErrorFuncs, formatBytes32String, parseBytes32String, hashMessage, namehash, isValidName, id, getAddress, getIcapAddress, getContractAddress, getCreate2Address, isAddress, formatEther, parseEther, formatUnits, parseUnits, commify, computeHmac, keccak256, ripemd160, sha256, sha512, randomBytes, shuffled, solidityPack, solidityKeccak256, soliditySha256, splitSignature, joinSignature, parseTransaction, serializeTransaction, getJsonWalletAddress, computeAddress, recoverAddress, computePublicKey, recoverPublicKey, verifyMessage, mnemonicToEntropy, entropyToMnemonic, isValidMnemonic, mnemonicToSeed, SupportedAlgorithm, UnicodeNormalizationForm, Utf8ErrorReason, Bytes, BytesLike, Hexable, UnsignedTransaction, CoerceFunc, Indexed, Mnemonic, Deferrable, Utf8ErrorFunc, ConnectionInfo, OnceBlockable, OncePollable, PollOptions, FetchJsonResponse, EncryptOptions, ProgressCallback };
|
||||
|
2
packages/ethers/lib/_version.d.ts
vendored
2
packages/ethers/lib/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "ethers/5.0.0-beta.189";
|
||||
export declare const version = "ethers/5.0.0-beta.190";
|
||||
|
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "ethers/5.0.0-beta.189";
|
||||
exports.version = "ethers/5.0.0-beta.190";
|
||||
|
4
packages/ethers/lib/ethers.d.ts
vendored
4
packages/ethers/lib/ethers.d.ts
vendored
@ -13,5 +13,5 @@ import { Bytes, BytesLike, Signature } from "@ethersproject/bytes";
|
||||
import { Transaction, UnsignedTransaction } from "@ethersproject/transactions";
|
||||
import { version } from "./_version";
|
||||
declare const logger: utils.Logger;
|
||||
import { ContractFunction, ContractReceipt, ContractTransaction, Event, EventFilter, Overrides, PayableOverrides, CallOverrides, ContractInterface } from "@ethersproject/contracts";
|
||||
export { Signer, Wallet, VoidSigner, getDefaultProvider, providers, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, version, ContractFunction, ContractReceipt, ContractTransaction, Event, EventFilter, Overrides, PayableOverrides, CallOverrides, ContractInterface, BigNumberish, Bytes, BytesLike, Signature, Transaction, UnsignedTransaction, Wordlist };
|
||||
import { ContractFunction, ContractReceipt, ContractTransaction, Event, EventFilter, Overrides, PayableOverrides, CallOverrides, PopulatedTransaction, ContractInterface } from "@ethersproject/contracts";
|
||||
export { Signer, Wallet, VoidSigner, getDefaultProvider, providers, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, version, ContractFunction, ContractReceipt, ContractTransaction, Event, EventFilter, Overrides, PayableOverrides, CallOverrides, PopulatedTransaction, ContractInterface, BigNumberish, Bytes, BytesLike, Signature, Transaction, UnsignedTransaction, Wordlist };
|
||||
|
2
packages/ethers/lib/index.d.ts
vendored
2
packages/ethers/lib/index.d.ts
vendored
@ -1,3 +1,3 @@
|
||||
import * as ethers from "./ethers";
|
||||
export { ethers };
|
||||
export { Signer, Wallet, VoidSigner, getDefaultProvider, providers, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, version, ContractFunction, ContractReceipt, ContractTransaction, Event, EventFilter, Overrides, PayableOverrides, CallOverrides, ContractInterface, BigNumberish, Bytes, BytesLike, Signature, Transaction, UnsignedTransaction, Wordlist } from "./ethers";
|
||||
export { Signer, Wallet, VoidSigner, getDefaultProvider, providers, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, version, ContractFunction, ContractReceipt, ContractTransaction, Event, EventFilter, Overrides, PayableOverrides, CallOverrides, PopulatedTransaction, ContractInterface, BigNumberish, Bytes, BytesLike, Signature, Transaction, UnsignedTransaction, Wordlist } from "./ethers";
|
||||
|
3
packages/ethers/lib/utils.d.ts
vendored
3
packages/ethers/lib/utils.d.ts
vendored
@ -25,6 +25,7 @@ import { CoerceFunc } from "@ethersproject/abi";
|
||||
import { Bytes, BytesLike, Hexable } from "@ethersproject/bytes";
|
||||
import { Mnemonic } from "@ethersproject/hdnode";
|
||||
import { EncryptOptions, ProgressCallback } from "@ethersproject/json-wallets";
|
||||
import { Deferrable } from "@ethersproject/properties";
|
||||
import { Utf8ErrorFunc } from "@ethersproject/strings";
|
||||
import { ConnectionInfo, FetchJsonResponse, OnceBlockable, OncePollable, PollOptions } from "@ethersproject/web";
|
||||
export { AbiCoder, defaultAbiCoder, Fragment, EventFragment, FunctionFragment, ParamType, FormatTypes, checkResultErrors, Result, Logger, RLP, fetchJson, poll, checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy, arrayify, concat, stripZeros, zeroPad, isBytes, isBytesLike, defaultPath, HDNode, SigningKey, Interface, LogDescription, TransactionDescription, base64, hexlify, isHexString, hexStripZeros, hexValue, hexZeroPad, hexDataLength, hexDataSlice, nameprep, _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, Utf8ErrorFuncs, formatBytes32String, parseBytes32String, hashMessage, namehash, isValidName, id, getAddress, getIcapAddress, getContractAddress, getCreate2Address, isAddress, formatEther, parseEther, formatUnits, parseUnits, commify, computeHmac, keccak256, ripemd160, sha256, sha512, randomBytes, shuffled, solidityPack, solidityKeccak256, soliditySha256, splitSignature, joinSignature, parseTransaction, serializeTransaction, getJsonWalletAddress, computeAddress, recoverAddress, computePublicKey, recoverPublicKey, verifyMessage, mnemonicToEntropy, entropyToMnemonic, isValidMnemonic, mnemonicToSeed, SupportedAlgorithm, UnicodeNormalizationForm, Utf8ErrorReason, Bytes, BytesLike, Hexable, UnsignedTransaction, CoerceFunc, Indexed, Mnemonic, Utf8ErrorFunc, ConnectionInfo, OnceBlockable, OncePollable, PollOptions, FetchJsonResponse, EncryptOptions, ProgressCallback };
|
||||
export { AbiCoder, defaultAbiCoder, Fragment, EventFragment, FunctionFragment, ParamType, FormatTypes, checkResultErrors, Result, Logger, RLP, fetchJson, poll, checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy, arrayify, concat, stripZeros, zeroPad, isBytes, isBytesLike, defaultPath, HDNode, SigningKey, Interface, LogDescription, TransactionDescription, base64, hexlify, isHexString, hexStripZeros, hexValue, hexZeroPad, hexDataLength, hexDataSlice, nameprep, _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, Utf8ErrorFuncs, formatBytes32String, parseBytes32String, hashMessage, namehash, isValidName, id, getAddress, getIcapAddress, getContractAddress, getCreate2Address, isAddress, formatEther, parseEther, formatUnits, parseUnits, commify, computeHmac, keccak256, ripemd160, sha256, sha512, randomBytes, shuffled, solidityPack, solidityKeccak256, soliditySha256, splitSignature, joinSignature, parseTransaction, serializeTransaction, getJsonWalletAddress, computeAddress, recoverAddress, computePublicKey, recoverPublicKey, verifyMessage, mnemonicToEntropy, entropyToMnemonic, isValidMnemonic, mnemonicToSeed, SupportedAlgorithm, UnicodeNormalizationForm, Utf8ErrorReason, Bytes, BytesLike, Hexable, UnsignedTransaction, CoerceFunc, Indexed, Mnemonic, Deferrable, Utf8ErrorFunc, ConnectionInfo, OnceBlockable, OncePollable, PollOptions, FetchJsonResponse, EncryptOptions, ProgressCallback };
|
||||
|
@ -52,7 +52,7 @@
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"tarballHash": "0x8739796ac0fd3677ecf2f330f4526a9ae6c572b12a02f49044b271049efc2cec",
|
||||
"tarballHash": "0x3bc54c9421df3189104c1902b41f6f7966e48e38bc5e5469968758e231393931",
|
||||
"types": "./lib/index.d.ts",
|
||||
"version": "5.0.0-beta.189"
|
||||
"version": "5.0.0-beta.190"
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = "ethers/5.0.0-beta.189";
|
||||
export const version = "ethers/5.0.0-beta.190";
|
||||
|
2
packages/experimental/lib.esm/_version.d.ts
vendored
2
packages/experimental/lib.esm/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "experimental/5.0.0-beta.142";
|
||||
export declare const version = "experimental/5.0.0-beta.143";
|
||||
|
@ -1 +1 @@
|
||||
export const version = "experimental/5.0.0-beta.142";
|
||||
export const version = "experimental/5.0.0-beta.143";
|
||||
|
@ -11,6 +11,6 @@ export declare class NonceManager extends ethers.Signer {
|
||||
setTransactionCount(transactionCount: ethers.BigNumberish | Promise<ethers.BigNumberish>): void;
|
||||
incrementTransactionCount(count?: number): void;
|
||||
signMessage(message: ethers.Bytes | string): Promise<string>;
|
||||
signTransaction(transaction: ethers.providers.TransactionRequest): Promise<string>;
|
||||
sendTransaction(transaction: ethers.providers.TransactionRequest): Promise<ethers.providers.TransactionResponse>;
|
||||
signTransaction(transaction: ethers.utils.Deferrable<ethers.providers.TransactionRequest>): Promise<string>;
|
||||
sendTransaction(transaction: ethers.utils.Deferrable<ethers.providers.TransactionRequest>): Promise<ethers.providers.TransactionResponse>;
|
||||
}
|
||||
|
2
packages/experimental/lib/_version.d.ts
vendored
2
packages/experimental/lib/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "experimental/5.0.0-beta.142";
|
||||
export declare const version = "experimental/5.0.0-beta.143";
|
||||
|
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "experimental/5.0.0-beta.142";
|
||||
exports.version = "experimental/5.0.0-beta.143";
|
||||
|
4
packages/experimental/lib/nonce-manager.d.ts
vendored
4
packages/experimental/lib/nonce-manager.d.ts
vendored
@ -11,6 +11,6 @@ export declare class NonceManager extends ethers.Signer {
|
||||
setTransactionCount(transactionCount: ethers.BigNumberish | Promise<ethers.BigNumberish>): void;
|
||||
incrementTransactionCount(count?: number): void;
|
||||
signMessage(message: ethers.Bytes | string): Promise<string>;
|
||||
signTransaction(transaction: ethers.providers.TransactionRequest): Promise<string>;
|
||||
sendTransaction(transaction: ethers.providers.TransactionRequest): Promise<ethers.providers.TransactionResponse>;
|
||||
signTransaction(transaction: ethers.utils.Deferrable<ethers.providers.TransactionRequest>): Promise<string>;
|
||||
sendTransaction(transaction: ethers.utils.Deferrable<ethers.providers.TransactionRequest>): Promise<ethers.providers.TransactionResponse>;
|
||||
}
|
||||
|
@ -26,7 +26,7 @@
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"tarballHash": "0x6a4021f3ca22ef7efa4e741b28058c4eae8870dabc8ddb74c48ce6303323e354",
|
||||
"tarballHash": "0xd705aef61179553bb3de9144a978c200620a3a9bf8d1f7093d26bb9a541b112c",
|
||||
"types": "./lib/index.d.ts",
|
||||
"version": "5.0.0-beta.142"
|
||||
"version": "5.0.0-beta.143"
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = "experimental/5.0.0-beta.142";
|
||||
export const version = "experimental/5.0.0-beta.143";
|
||||
|
2
packages/properties/lib.esm/_version.d.ts
vendored
2
packages/properties/lib.esm/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "properties/5.0.0-beta.142";
|
||||
export declare const version = "properties/5.0.0-beta.143";
|
||||
|
@ -1 +1 @@
|
||||
export const version = "properties/5.0.0-beta.142";
|
||||
export const version = "properties/5.0.0-beta.143";
|
||||
|
6
packages/properties/lib.esm/index.d.ts
vendored
6
packages/properties/lib.esm/index.d.ts
vendored
@ -1,9 +1,9 @@
|
||||
export declare function defineReadOnly<T, K extends keyof T>(object: T, name: K, value: T[K]): void;
|
||||
export declare function getStatic<T>(ctor: any, key: string): T;
|
||||
export declare type Resolvable<T> = {
|
||||
[P in keyof T]: T[P] | Promise<T[P]>;
|
||||
export declare type Deferrable<T> = {
|
||||
[K in keyof T]: T[K] | Promise<T[K]>;
|
||||
};
|
||||
export declare function resolveProperties<T>(object: Readonly<Resolvable<T>>): Promise<T>;
|
||||
export declare function resolveProperties<T>(object: Readonly<Deferrable<T>>): Promise<T>;
|
||||
export declare function checkProperties(object: any, properties: {
|
||||
[name: string]: boolean;
|
||||
}): void;
|
||||
|
2
packages/properties/lib/_version.d.ts
vendored
2
packages/properties/lib/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "properties/5.0.0-beta.142";
|
||||
export declare const version = "properties/5.0.0-beta.143";
|
||||
|
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "properties/5.0.0-beta.142";
|
||||
exports.version = "properties/5.0.0-beta.143";
|
||||
|
6
packages/properties/lib/index.d.ts
vendored
6
packages/properties/lib/index.d.ts
vendored
@ -1,9 +1,9 @@
|
||||
export declare function defineReadOnly<T, K extends keyof T>(object: T, name: K, value: T[K]): void;
|
||||
export declare function getStatic<T>(ctor: any, key: string): T;
|
||||
export declare type Resolvable<T> = {
|
||||
[P in keyof T]: T[P] | Promise<T[P]>;
|
||||
export declare type Deferrable<T> = {
|
||||
[K in keyof T]: T[K] | Promise<T[K]>;
|
||||
};
|
||||
export declare function resolveProperties<T>(object: Readonly<Resolvable<T>>): Promise<T>;
|
||||
export declare function resolveProperties<T>(object: Readonly<Deferrable<T>>): Promise<T>;
|
||||
export declare function checkProperties(object: any, properties: {
|
||||
[name: string]: boolean;
|
||||
}): void;
|
||||
|
@ -25,7 +25,7 @@
|
||||
"build": "tsc -p ./tsconfig.json",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"tarballHash": "0x19edcc26454f25babba8c45ce913401053a93690beb2dc5a38788bc6b0a0315f",
|
||||
"tarballHash": "0x0ae2b3302a1c31c8a8643c0879bea73aa337ec394f0a10c6ab38037abaeeae6c",
|
||||
"types": "./lib/index.d.ts",
|
||||
"version": "5.0.0-beta.142"
|
||||
"version": "5.0.0-beta.143"
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = "properties/5.0.0-beta.142";
|
||||
export const version = "properties/5.0.0-beta.143";
|
||||
|
2
packages/providers/lib.esm/_version.d.ts
vendored
2
packages/providers/lib.esm/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "providers/5.0.0-beta.169";
|
||||
export declare const version = "providers/5.0.0-beta.170";
|
||||
|
@ -1 +1 @@
|
||||
export const version = "providers/5.0.0-beta.169";
|
||||
export const version = "providers/5.0.0-beta.170";
|
||||
|
@ -2,6 +2,7 @@
|
||||
import { Block, BlockTag, BlockWithTransactions, EventType, Filter, FilterByBlockHash, Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse } from "@ethersproject/abstract-provider";
|
||||
import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
|
||||
import { Network, Networkish } from "@ethersproject/networks";
|
||||
import { Deferrable } from "@ethersproject/properties";
|
||||
import { Transaction } from "@ethersproject/transactions";
|
||||
import { Formatter } from "./formatter";
|
||||
/**
|
||||
@ -82,10 +83,10 @@ export declare class BaseProvider extends Provider {
|
||||
getStorageAt(addressOrName: string | Promise<string>, position: BigNumberish | Promise<BigNumberish>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
_wrapTransaction(tx: Transaction, hash?: string): TransactionResponse;
|
||||
sendTransaction(signedTransaction: string | Promise<string>): Promise<TransactionResponse>;
|
||||
_getTransactionRequest(transaction: TransactionRequest | Promise<TransactionRequest>): Promise<Transaction>;
|
||||
_getTransactionRequest(transaction: Deferrable<TransactionRequest>): Promise<Transaction>;
|
||||
_getFilter(filter: Filter | FilterByBlockHash | Promise<Filter | FilterByBlockHash>): Promise<Filter | FilterByBlockHash>;
|
||||
call(transaction: TransactionRequest | Promise<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
estimateGas(transaction: TransactionRequest | Promise<TransactionRequest>): Promise<BigNumber>;
|
||||
call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber>;
|
||||
_getAddress(addressOrName: string | Promise<string>): Promise<string>;
|
||||
_getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>, includeTransactions?: boolean): Promise<Block | BlockWithTransactions>;
|
||||
getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<Block>;
|
||||
|
@ -2,6 +2,7 @@ import { Provider, TransactionRequest, TransactionResponse } from "@ethersprojec
|
||||
import { Signer } from "@ethersproject/abstract-signer";
|
||||
import { Bytes } from "@ethersproject/bytes";
|
||||
import { Network, Networkish } from "@ethersproject/networks";
|
||||
import { Deferrable } from "@ethersproject/properties";
|
||||
import { ConnectionInfo } from "@ethersproject/web";
|
||||
import { BaseProvider, Event } from "./base-provider";
|
||||
export declare class JsonRpcSigner extends Signer {
|
||||
@ -12,14 +13,14 @@ export declare class JsonRpcSigner extends Signer {
|
||||
connect(provider: Provider): JsonRpcSigner;
|
||||
connectUnchecked(): JsonRpcSigner;
|
||||
getAddress(): Promise<string>;
|
||||
sendUncheckedTransaction(transaction: TransactionRequest): Promise<string>;
|
||||
signTransaction(transaction: TransactionRequest): Promise<string>;
|
||||
sendTransaction(transaction: TransactionRequest): Promise<TransactionResponse>;
|
||||
sendUncheckedTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;
|
||||
signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;
|
||||
sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse>;
|
||||
signMessage(message: Bytes | string): Promise<string>;
|
||||
unlock(password: string): Promise<boolean>;
|
||||
}
|
||||
declare class UncheckedJsonRpcSigner extends JsonRpcSigner {
|
||||
sendTransaction(transaction: TransactionRequest): Promise<TransactionResponse>;
|
||||
sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse>;
|
||||
}
|
||||
export declare class JsonRpcProvider extends BaseProvider {
|
||||
readonly connection: ConnectionInfo;
|
||||
|
2
packages/providers/lib/_version.d.ts
vendored
2
packages/providers/lib/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "providers/5.0.0-beta.169";
|
||||
export declare const version = "providers/5.0.0-beta.170";
|
||||
|
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "providers/5.0.0-beta.169";
|
||||
exports.version = "providers/5.0.0-beta.170";
|
||||
|
7
packages/providers/lib/base-provider.d.ts
vendored
7
packages/providers/lib/base-provider.d.ts
vendored
@ -2,6 +2,7 @@
|
||||
import { Block, BlockTag, BlockWithTransactions, EventType, Filter, FilterByBlockHash, Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse } from "@ethersproject/abstract-provider";
|
||||
import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
|
||||
import { Network, Networkish } from "@ethersproject/networks";
|
||||
import { Deferrable } from "@ethersproject/properties";
|
||||
import { Transaction } from "@ethersproject/transactions";
|
||||
import { Formatter } from "./formatter";
|
||||
/**
|
||||
@ -82,10 +83,10 @@ export declare class BaseProvider extends Provider {
|
||||
getStorageAt(addressOrName: string | Promise<string>, position: BigNumberish | Promise<BigNumberish>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
_wrapTransaction(tx: Transaction, hash?: string): TransactionResponse;
|
||||
sendTransaction(signedTransaction: string | Promise<string>): Promise<TransactionResponse>;
|
||||
_getTransactionRequest(transaction: TransactionRequest | Promise<TransactionRequest>): Promise<Transaction>;
|
||||
_getTransactionRequest(transaction: Deferrable<TransactionRequest>): Promise<Transaction>;
|
||||
_getFilter(filter: Filter | FilterByBlockHash | Promise<Filter | FilterByBlockHash>): Promise<Filter | FilterByBlockHash>;
|
||||
call(transaction: TransactionRequest | Promise<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
estimateGas(transaction: TransactionRequest | Promise<TransactionRequest>): Promise<BigNumber>;
|
||||
call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
|
||||
estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber>;
|
||||
_getAddress(addressOrName: string | Promise<string>): Promise<string>;
|
||||
_getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>, includeTransactions?: boolean): Promise<Block | BlockWithTransactions>;
|
||||
getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<Block>;
|
||||
|
@ -2,6 +2,7 @@ import { Provider, TransactionRequest, TransactionResponse } from "@ethersprojec
|
||||
import { Signer } from "@ethersproject/abstract-signer";
|
||||
import { Bytes } from "@ethersproject/bytes";
|
||||
import { Network, Networkish } from "@ethersproject/networks";
|
||||
import { Deferrable } from "@ethersproject/properties";
|
||||
import { ConnectionInfo } from "@ethersproject/web";
|
||||
import { BaseProvider, Event } from "./base-provider";
|
||||
export declare class JsonRpcSigner extends Signer {
|
||||
@ -12,14 +13,14 @@ export declare class JsonRpcSigner extends Signer {
|
||||
connect(provider: Provider): JsonRpcSigner;
|
||||
connectUnchecked(): JsonRpcSigner;
|
||||
getAddress(): Promise<string>;
|
||||
sendUncheckedTransaction(transaction: TransactionRequest): Promise<string>;
|
||||
signTransaction(transaction: TransactionRequest): Promise<string>;
|
||||
sendTransaction(transaction: TransactionRequest): Promise<TransactionResponse>;
|
||||
sendUncheckedTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;
|
||||
signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;
|
||||
sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse>;
|
||||
signMessage(message: Bytes | string): Promise<string>;
|
||||
unlock(password: string): Promise<boolean>;
|
||||
}
|
||||
declare class UncheckedJsonRpcSigner extends JsonRpcSigner {
|
||||
sendTransaction(transaction: TransactionRequest): Promise<TransactionResponse>;
|
||||
sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse>;
|
||||
}
|
||||
export declare class JsonRpcProvider extends BaseProvider {
|
||||
readonly connection: ConnectionInfo;
|
||||
|
@ -56,7 +56,7 @@
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"tarballHash": "0x2c7517b23e6eb918b668110c930001103934b54b78a357e775e232be9dfc7c25",
|
||||
"tarballHash": "0xb29152a4cc4705e1721fabf15e707a0cec56c3b86feb02756e5cd53a2b9fc230",
|
||||
"types": "./lib/index.d.ts",
|
||||
"version": "5.0.0-beta.169"
|
||||
"version": "5.0.0-beta.170"
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = "providers/5.0.0-beta.169";
|
||||
export const version = "providers/5.0.0-beta.170";
|
||||
|
2
packages/tests/lib.esm/_version.d.ts
vendored
2
packages/tests/lib.esm/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "tests/5.0.0-beta.160";
|
||||
export declare const version = "tests/5.0.0-beta.161";
|
||||
|
@ -1 +1 @@
|
||||
export const version = "tests/5.0.0-beta.160";
|
||||
export const version = "tests/5.0.0-beta.161";
|
||||
|
@ -59,20 +59,29 @@ export function Reporter(runner) {
|
||||
suite._t0 = getTime();
|
||||
suite._countFail = 0;
|
||||
suite._countPass = 0;
|
||||
suite._countSkip = 0;
|
||||
suite._countTotal = 0;
|
||||
});
|
||||
runner.on('suite end', function () {
|
||||
let suite = suites.pop();
|
||||
let failure = '';
|
||||
if (suite._countTotal > suite._countPass) {
|
||||
failure = ' (' + (suite._countTotal - suite._countPass) + ' failed) *****';
|
||||
let extras = [];
|
||||
if (suite._countSkip) {
|
||||
extras.push(suite._countSkip + " skipped");
|
||||
}
|
||||
log(' Total Tests: ' + suite._countPass + '/' + suite._countTotal + ' passed ' + getDelta(suite._t0) + failure);
|
||||
if (suite._countTotal > suite._countPass) {
|
||||
extras.push((suite._countTotal - suite._countPass) + " failed");
|
||||
}
|
||||
let extra = "";
|
||||
if (extras.length) {
|
||||
extra = " (" + extras.join(",") + ") ******** WARNING! ********";
|
||||
}
|
||||
log(` Total Tests: ${suite._countPass}/${suite._countTotal} passed ${getDelta(suite._t0)} ${extra} `);
|
||||
log();
|
||||
if (suites.length > 0) {
|
||||
let currentSuite = suites[suites.length - 1];
|
||||
currentSuite._countFail += suite._countFail;
|
||||
currentSuite._countPass += suite._countPass;
|
||||
currentSuite._countSkip += suite._countSkip;
|
||||
currentSuite._countTotal += suite._countTotal;
|
||||
}
|
||||
else {
|
||||
@ -116,4 +125,8 @@ export function Reporter(runner) {
|
||||
let currentSuite = suites[suites.length - 1];
|
||||
currentSuite._countPass++;
|
||||
});
|
||||
runner.on('pending', function (test) {
|
||||
let currentSuite = suites[suites.length - 1];
|
||||
currentSuite._countSkip++;
|
||||
});
|
||||
}
|
||||
|
@ -142,3 +142,129 @@ describe('Test Contract Objects', function () {
|
||||
});
|
||||
});
|
||||
});
|
||||
// @TODO: Exapnd this
|
||||
describe("Test Contract Transaction Population", function () {
|
||||
const abi = [
|
||||
"function transfer(address to, uint amount)",
|
||||
"function unstake() nonpayable",
|
||||
"function mint() payable",
|
||||
"function balanceOf(address owner) view returns (uint)"
|
||||
];
|
||||
const testAddress = "0xdeadbeef00deadbeef01deadbeef02deadbeef03";
|
||||
const testAddressCheck = "0xDEAdbeeF00deAdbeEF01DeAdBEEF02DeADBEEF03";
|
||||
const fireflyAddress = "0x8ba1f109551bD432803012645Ac136ddd64DBA72";
|
||||
const contract = new ethers.Contract(testAddress, abi);
|
||||
const contractConnected = contract.connect(ethers.getDefaultProvider());
|
||||
it("standard population", function () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const tx = yield contract.populateTransaction.balanceOf(testAddress);
|
||||
//console.log(tx);
|
||||
assert.equal(Object.keys(tx).length, 2, "correct number of keys");
|
||||
assert.equal(tx.data, "0x70a08231000000000000000000000000deadbeef00deadbeef01deadbeef02deadbeef03", "data matches");
|
||||
assert.equal(tx.to, testAddressCheck, "to address matches");
|
||||
});
|
||||
});
|
||||
it("allows 'from' overrides", function () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const tx = yield contract.populateTransaction.balanceOf(testAddress, {
|
||||
from: testAddress
|
||||
});
|
||||
//console.log(tx);
|
||||
assert.equal(Object.keys(tx).length, 3, "correct number of keys");
|
||||
assert.equal(tx.data, "0x70a08231000000000000000000000000deadbeef00deadbeef01deadbeef02deadbeef03", "data matches");
|
||||
assert.equal(tx.to, testAddressCheck, "to address matches");
|
||||
assert.equal(tx.from, testAddressCheck, "from address matches");
|
||||
});
|
||||
});
|
||||
it("allows ENS 'from' overrides", function () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
this.timeout(20000);
|
||||
const tx = yield contractConnected.populateTransaction.balanceOf(testAddress, {
|
||||
from: "ricmoo.firefly.eth"
|
||||
});
|
||||
//console.log(tx);
|
||||
assert.equal(Object.keys(tx).length, 3, "correct number of keys");
|
||||
assert.equal(tx.data, "0x70a08231000000000000000000000000deadbeef00deadbeef01deadbeef02deadbeef03", "data matches");
|
||||
assert.equal(tx.to, testAddressCheck, "to address matches");
|
||||
assert.equal(tx.from, fireflyAddress, "from address matches");
|
||||
});
|
||||
});
|
||||
it("allows send overrides", function () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const tx = yield contract.populateTransaction.mint({
|
||||
gasLimit: 150000,
|
||||
gasPrice: 1900000000,
|
||||
nonce: 5,
|
||||
value: 1234,
|
||||
from: testAddress
|
||||
});
|
||||
//console.log(tx);
|
||||
assert.equal(Object.keys(tx).length, 7, "correct number of keys");
|
||||
assert.equal(tx.data, "0x1249c58b", "data matches");
|
||||
assert.equal(tx.to, testAddressCheck, "to address matches");
|
||||
assert.equal(tx.nonce, 5, "nonce address matches");
|
||||
assert.ok(tx.gasLimit.eq(150000), "gasLimit matches");
|
||||
assert.ok(tx.gasPrice.eq(1900000000), "gasPrice matches");
|
||||
assert.ok(tx.value.eq(1234), "value matches");
|
||||
assert.equal(tx.from, testAddressCheck, "from address matches");
|
||||
});
|
||||
});
|
||||
it("allows zero 'value' to non-payable", function () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const tx = yield contract.populateTransaction.unstake({
|
||||
from: testAddress,
|
||||
value: 0
|
||||
});
|
||||
//console.log(tx);
|
||||
assert.equal(Object.keys(tx).length, 3, "correct number of keys");
|
||||
assert.equal(tx.data, "0x2def6620", "data matches");
|
||||
assert.equal(tx.to, testAddressCheck, "to address matches");
|
||||
assert.equal(tx.from, testAddressCheck, "from address matches");
|
||||
});
|
||||
});
|
||||
// @TODO: Add test cases to check for fault cases
|
||||
// - cannot send non-zero value to non-payable
|
||||
// - using the wrong from for a Signer-connected contract
|
||||
it("forbids non-zero 'value' to non-payable", function () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
try {
|
||||
const tx = yield contract.populateTransaction.unstake({
|
||||
value: 1
|
||||
});
|
||||
console.log("Tx", tx);
|
||||
assert.ok(false, "throws on non-zero value to non-payable");
|
||||
}
|
||||
catch (error) {
|
||||
assert.ok(error.operation === "overrides.value");
|
||||
}
|
||||
});
|
||||
});
|
||||
it("allows overriding same 'from' with a Signer", function () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const contractSigner = contract.connect(testAddress);
|
||||
const tx = yield contractSigner.populateTransaction.unstake({
|
||||
from: testAddress
|
||||
});
|
||||
//console.log(tx);
|
||||
assert.equal(Object.keys(tx).length, 3, "correct number of keys");
|
||||
assert.equal(tx.data, "0x2def6620", "data matches");
|
||||
assert.equal(tx.to, testAddressCheck, "to address matches");
|
||||
assert.equal(tx.from, testAddressCheck, "from address matches");
|
||||
});
|
||||
});
|
||||
it("forbids overriding 'from' with a Signer", function () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const contractSigner = contract.connect(testAddress);
|
||||
try {
|
||||
const tx = yield contractSigner.populateTransaction.unstake({
|
||||
from: fireflyAddress
|
||||
});
|
||||
console.log("Tx", tx);
|
||||
assert.ok(false, "throws on non-zero value to non-payable");
|
||||
}
|
||||
catch (error) {
|
||||
assert.ok(error.operation === "overrides.from");
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -13,9 +13,11 @@ function randomCase(seed, text) {
|
||||
// Too many test cases are caussing issues for the CI
|
||||
// Only run random cases under random-128
|
||||
function checkRandom(name) {
|
||||
/*
|
||||
if (name.substring(0, 7) === "random-") {
|
||||
return (parseInt(name.substring(7)) <= 128);
|
||||
}
|
||||
*/
|
||||
return true;
|
||||
}
|
||||
describe('Test HD Node Derivation is Case Agnostic', function () {
|
||||
|
2
packages/tests/lib/_version.d.ts
vendored
2
packages/tests/lib/_version.d.ts
vendored
@ -1 +1 @@
|
||||
export declare const version = "tests/5.0.0-beta.160";
|
||||
export declare const version = "tests/5.0.0-beta.161";
|
||||
|
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "tests/5.0.0-beta.160";
|
||||
exports.version = "tests/5.0.0-beta.161";
|
||||
|
@ -60,20 +60,29 @@ function Reporter(runner) {
|
||||
suite._t0 = getTime();
|
||||
suite._countFail = 0;
|
||||
suite._countPass = 0;
|
||||
suite._countSkip = 0;
|
||||
suite._countTotal = 0;
|
||||
});
|
||||
runner.on('suite end', function () {
|
||||
var suite = suites.pop();
|
||||
var failure = '';
|
||||
if (suite._countTotal > suite._countPass) {
|
||||
failure = ' (' + (suite._countTotal - suite._countPass) + ' failed) *****';
|
||||
var extras = [];
|
||||
if (suite._countSkip) {
|
||||
extras.push(suite._countSkip + " skipped");
|
||||
}
|
||||
log(' Total Tests: ' + suite._countPass + '/' + suite._countTotal + ' passed ' + getDelta(suite._t0) + failure);
|
||||
if (suite._countTotal > suite._countPass) {
|
||||
extras.push((suite._countTotal - suite._countPass) + " failed");
|
||||
}
|
||||
var extra = "";
|
||||
if (extras.length) {
|
||||
extra = " (" + extras.join(",") + ") ******** WARNING! ********";
|
||||
}
|
||||
log(" Total Tests: " + suite._countPass + "/" + suite._countTotal + " passed " + getDelta(suite._t0) + " " + extra + " ");
|
||||
log();
|
||||
if (suites.length > 0) {
|
||||
var currentSuite = suites[suites.length - 1];
|
||||
currentSuite._countFail += suite._countFail;
|
||||
currentSuite._countPass += suite._countPass;
|
||||
currentSuite._countSkip += suite._countSkip;
|
||||
currentSuite._countTotal += suite._countTotal;
|
||||
}
|
||||
else {
|
||||
@ -117,5 +126,9 @@ function Reporter(runner) {
|
||||
var currentSuite = suites[suites.length - 1];
|
||||
currentSuite._countPass++;
|
||||
});
|
||||
runner.on('pending', function (test) {
|
||||
var currentSuite = suites[suites.length - 1];
|
||||
currentSuite._countSkip++;
|
||||
});
|
||||
}
|
||||
exports.Reporter = Reporter;
|
||||
|
@ -180,3 +180,201 @@ describe('Test Contract Objects', function () {
|
||||
});
|
||||
});
|
||||
});
|
||||
// @TODO: Exapnd this
|
||||
describe("Test Contract Transaction Population", function () {
|
||||
var abi = [
|
||||
"function transfer(address to, uint amount)",
|
||||
"function unstake() nonpayable",
|
||||
"function mint() payable",
|
||||
"function balanceOf(address owner) view returns (uint)"
|
||||
];
|
||||
var testAddress = "0xdeadbeef00deadbeef01deadbeef02deadbeef03";
|
||||
var testAddressCheck = "0xDEAdbeeF00deAdbeEF01DeAdBEEF02DeADBEEF03";
|
||||
var fireflyAddress = "0x8ba1f109551bD432803012645Ac136ddd64DBA72";
|
||||
var contract = new ethers_1.ethers.Contract(testAddress, abi);
|
||||
var contractConnected = contract.connect(ethers_1.ethers.getDefaultProvider());
|
||||
it("standard population", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var tx;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, contract.populateTransaction.balanceOf(testAddress)];
|
||||
case 1:
|
||||
tx = _a.sent();
|
||||
//console.log(tx);
|
||||
assert_1.default.equal(Object.keys(tx).length, 2, "correct number of keys");
|
||||
assert_1.default.equal(tx.data, "0x70a08231000000000000000000000000deadbeef00deadbeef01deadbeef02deadbeef03", "data matches");
|
||||
assert_1.default.equal(tx.to, testAddressCheck, "to address matches");
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
it("allows 'from' overrides", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var tx;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, contract.populateTransaction.balanceOf(testAddress, {
|
||||
from: testAddress
|
||||
})];
|
||||
case 1:
|
||||
tx = _a.sent();
|
||||
//console.log(tx);
|
||||
assert_1.default.equal(Object.keys(tx).length, 3, "correct number of keys");
|
||||
assert_1.default.equal(tx.data, "0x70a08231000000000000000000000000deadbeef00deadbeef01deadbeef02deadbeef03", "data matches");
|
||||
assert_1.default.equal(tx.to, testAddressCheck, "to address matches");
|
||||
assert_1.default.equal(tx.from, testAddressCheck, "from address matches");
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
it("allows ENS 'from' overrides", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var tx;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
this.timeout(20000);
|
||||
return [4 /*yield*/, contractConnected.populateTransaction.balanceOf(testAddress, {
|
||||
from: "ricmoo.firefly.eth"
|
||||
})];
|
||||
case 1:
|
||||
tx = _a.sent();
|
||||
//console.log(tx);
|
||||
assert_1.default.equal(Object.keys(tx).length, 3, "correct number of keys");
|
||||
assert_1.default.equal(tx.data, "0x70a08231000000000000000000000000deadbeef00deadbeef01deadbeef02deadbeef03", "data matches");
|
||||
assert_1.default.equal(tx.to, testAddressCheck, "to address matches");
|
||||
assert_1.default.equal(tx.from, fireflyAddress, "from address matches");
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
it("allows send overrides", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var tx;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, contract.populateTransaction.mint({
|
||||
gasLimit: 150000,
|
||||
gasPrice: 1900000000,
|
||||
nonce: 5,
|
||||
value: 1234,
|
||||
from: testAddress
|
||||
})];
|
||||
case 1:
|
||||
tx = _a.sent();
|
||||
//console.log(tx);
|
||||
assert_1.default.equal(Object.keys(tx).length, 7, "correct number of keys");
|
||||
assert_1.default.equal(tx.data, "0x1249c58b", "data matches");
|
||||
assert_1.default.equal(tx.to, testAddressCheck, "to address matches");
|
||||
assert_1.default.equal(tx.nonce, 5, "nonce address matches");
|
||||
assert_1.default.ok(tx.gasLimit.eq(150000), "gasLimit matches");
|
||||
assert_1.default.ok(tx.gasPrice.eq(1900000000), "gasPrice matches");
|
||||
assert_1.default.ok(tx.value.eq(1234), "value matches");
|
||||
assert_1.default.equal(tx.from, testAddressCheck, "from address matches");
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
it("allows zero 'value' to non-payable", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var tx;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, contract.populateTransaction.unstake({
|
||||
from: testAddress,
|
||||
value: 0
|
||||
})];
|
||||
case 1:
|
||||
tx = _a.sent();
|
||||
//console.log(tx);
|
||||
assert_1.default.equal(Object.keys(tx).length, 3, "correct number of keys");
|
||||
assert_1.default.equal(tx.data, "0x2def6620", "data matches");
|
||||
assert_1.default.equal(tx.to, testAddressCheck, "to address matches");
|
||||
assert_1.default.equal(tx.from, testAddressCheck, "from address matches");
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
// @TODO: Add test cases to check for fault cases
|
||||
// - cannot send non-zero value to non-payable
|
||||
// - using the wrong from for a Signer-connected contract
|
||||
it("forbids non-zero 'value' to non-payable", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var tx, error_1;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
_a.trys.push([0, 2, , 3]);
|
||||
return [4 /*yield*/, contract.populateTransaction.unstake({
|
||||
value: 1
|
||||
})];
|
||||
case 1:
|
||||
tx = _a.sent();
|
||||
console.log("Tx", tx);
|
||||
assert_1.default.ok(false, "throws on non-zero value to non-payable");
|
||||
return [3 /*break*/, 3];
|
||||
case 2:
|
||||
error_1 = _a.sent();
|
||||
assert_1.default.ok(error_1.operation === "overrides.value");
|
||||
return [3 /*break*/, 3];
|
||||
case 3: return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
it("allows overriding same 'from' with a Signer", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var contractSigner, tx;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
contractSigner = contract.connect(testAddress);
|
||||
return [4 /*yield*/, contractSigner.populateTransaction.unstake({
|
||||
from: testAddress
|
||||
})];
|
||||
case 1:
|
||||
tx = _a.sent();
|
||||
//console.log(tx);
|
||||
assert_1.default.equal(Object.keys(tx).length, 3, "correct number of keys");
|
||||
assert_1.default.equal(tx.data, "0x2def6620", "data matches");
|
||||
assert_1.default.equal(tx.to, testAddressCheck, "to address matches");
|
||||
assert_1.default.equal(tx.from, testAddressCheck, "from address matches");
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
it("forbids overriding 'from' with a Signer", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var contractSigner, tx, error_2;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
contractSigner = contract.connect(testAddress);
|
||||
_a.label = 1;
|
||||
case 1:
|
||||
_a.trys.push([1, 3, , 4]);
|
||||
return [4 /*yield*/, contractSigner.populateTransaction.unstake({
|
||||
from: fireflyAddress
|
||||
})];
|
||||
case 2:
|
||||
tx = _a.sent();
|
||||
console.log("Tx", tx);
|
||||
assert_1.default.ok(false, "throws on non-zero value to non-payable");
|
||||
return [3 /*break*/, 4];
|
||||
case 3:
|
||||
error_2 = _a.sent();
|
||||
assert_1.default.ok(error_2.operation === "overrides.from");
|
||||
return [3 /*break*/, 4];
|
||||
case 4: return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -17,9 +17,11 @@ function randomCase(seed, text) {
|
||||
// Too many test cases are caussing issues for the CI
|
||||
// Only run random cases under random-128
|
||||
function checkRandom(name) {
|
||||
/*
|
||||
if (name.substring(0, 7) === "random-") {
|
||||
return (parseInt(name.substring(7)) <= 128);
|
||||
}
|
||||
*/
|
||||
return true;
|
||||
}
|
||||
describe('Test HD Node Derivation is Case Agnostic', function () {
|
||||
|
@ -39,7 +39,7 @@
|
||||
"scripts": {
|
||||
"test": "exit 1"
|
||||
},
|
||||
"tarballHash": "0x96e252ef0592ddafc518f20b7bd084b92a91f83cd4be8bebc1434d8c73700913",
|
||||
"tarballHash": "0xae7bf1faa5e6862fca833a04adb8844c354d3c56964483c684b69bea57dede01",
|
||||
"types": "./lib/index.d.ts",
|
||||
"version": "5.0.0-beta.160"
|
||||
"version": "5.0.0-beta.161"
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = "tests/5.0.0-beta.160";
|
||||
export const version = "tests/5.0.0-beta.161";
|
||||
|
@ -169,7 +169,7 @@ describe("Test Contract Transaction Population", function() {
|
||||
const contract = new ethers.Contract(testAddress, abi);
|
||||
const contractConnected = contract.connect(ethers.getDefaultProvider());
|
||||
|
||||
it("standard populatation", async function() {
|
||||
it("standard population", async function() {
|
||||
const tx = await contract.populateTransaction.balanceOf(testAddress);
|
||||
//console.log(tx);
|
||||
assert.equal(Object.keys(tx).length, 2, "correct number of keys");
|
||||
|
Loading…
Reference in New Issue
Block a user