Updated dist files.
This commit is contained in:
parent
41e66ab834
commit
c29d20c602
14
CHANGELOG.md
14
CHANGELOG.md
@ -2,10 +2,16 @@ Changelog
|
||||
=========
|
||||
|
||||
This change log is managed by `scripts/cmds/update-versions` but may be manually updated.
|
||||
During the v5-BETA, although attempts are made to minimize it, some of the APIs
|
||||
may change. It is generally recommended that you remove your `node_modules/`,
|
||||
`package-lock.json` (and similar files for yarn, etc.) and doing an `npm install`
|
||||
after upgrading to a newer version of the v5-BETA.
|
||||
|
||||
|
||||
ethers/v5.0.0-beta.189 (2020-05-29 21:25)
|
||||
-----------------------------------------
|
||||
|
||||
- Simplify typing for properties module. ([41e66ab](https://github.com/ethers-io/ethers.js/commit/41e66ab834e9835807481658a7956207edfef3d7))
|
||||
- Refactor Contract away from monolithic runMethod. ([e5a1b4d](https://github.com/ethers-io/ethers.js/commit/e5a1b4d5cbbaa0a8ce64c72e13d0d12fa2b856e3))
|
||||
- Correctly set last emitted block for WebSocketProvider. ([#856](https://github.com/ethers-io/ethers.js/issues/856); [1b0ad5a](https://github.com/ethers-io/ethers.js/commit/1b0ad5aa69327f80c7814069142965914673dc06))
|
||||
- Fixed delayed network detection attempting to overwrite read-only value. ([#854](https://github.com/ethers-io/ethers.js/issues/854); [8efd8d2](https://github.com/ethers-io/ethers.js/commit/8efd8d203158ebdef040ec759c3b423312a86e7c))
|
||||
- Better WebSocket compatibilities with Parity. ([#849](https://github.com/ethers-io/ethers.js/issues/849); [180a1af](https://github.com/ethers-io/ethers.js/commit/180a1aff3adc5b4af3a1349b52666ca5942c92a2))
|
||||
|
||||
ethers/v5.0.0-beta.188 (2020-05-21 00:02)
|
||||
-----------------------------------------
|
||||
|
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.153";
|
||||
export declare const version = "contracts/5.0.0-beta.154";
|
||||
|
@ -1 +1 @@
|
||||
export const version = "contracts/5.0.0-beta.153";
|
||||
export const version = "contracts/5.0.0-beta.154";
|
||||
|
39
packages/contracts/lib.esm/index.d.ts
vendored
39
packages/contracts/lib.esm/index.d.ts
vendored
@ -16,11 +16,11 @@ export interface CallOverrides extends PayableOverrides {
|
||||
blockTag?: BlockTag | Promise<BlockTag>;
|
||||
from?: string | Promise<string>;
|
||||
}
|
||||
export declare type ContractFunction = (...params: Array<any>) => Promise<any>;
|
||||
export declare type EventFilter = {
|
||||
address?: string;
|
||||
topics?: Array<string>;
|
||||
topics?: Array<string | Array<string>>;
|
||||
};
|
||||
export declare type ContractFunction<T = any> = (...args: Array<any>) => Promise<T>;
|
||||
export interface Event extends Log {
|
||||
event?: string;
|
||||
eventSignature?: string;
|
||||
@ -38,9 +38,6 @@ export interface ContractReceipt extends TransactionReceipt {
|
||||
export interface ContractTransaction extends TransactionResponse {
|
||||
wait(confirmations?: number): Promise<ContractReceipt>;
|
||||
}
|
||||
interface Bucket<T> {
|
||||
[name: string]: T;
|
||||
}
|
||||
declare class RunningEvent {
|
||||
readonly tag: string;
|
||||
readonly filter: EventFilter;
|
||||
@ -61,17 +58,31 @@ export declare class Contract {
|
||||
readonly interface: Interface;
|
||||
readonly signer: Signer;
|
||||
readonly provider: Provider;
|
||||
readonly functions: Bucket<ContractFunction>;
|
||||
readonly callStatic: Bucket<ContractFunction>;
|
||||
readonly estimateGas: Bucket<(...params: Array<any>) => Promise<BigNumber>>;
|
||||
readonly populateTransaction: Bucket<(...params: Array<any>) => Promise<UnsignedTransaction>>;
|
||||
readonly filters: Bucket<(...params: Array<any>) => EventFilter>;
|
||||
readonly [name: string]: ContractFunction | any;
|
||||
readonly functions: {
|
||||
[name: string]: ContractFunction;
|
||||
};
|
||||
readonly callStatic: {
|
||||
[name: string]: ContractFunction;
|
||||
};
|
||||
readonly estimateGas: {
|
||||
[name: string]: ContractFunction<BigNumber>;
|
||||
};
|
||||
readonly populateTransaction: {
|
||||
[name: string]: ContractFunction<UnsignedTransaction>;
|
||||
};
|
||||
readonly filters: {
|
||||
[name: string]: (...args: Array<any>) => EventFilter;
|
||||
};
|
||||
readonly [key: string]: ContractFunction | any;
|
||||
readonly resolvedAddress: Promise<string>;
|
||||
readonly deployTransaction: TransactionResponse;
|
||||
private _deployedPromise;
|
||||
private _runningEvents;
|
||||
private _wrappedEmits;
|
||||
_deployedPromise: Promise<Contract>;
|
||||
_runningEvents: {
|
||||
[eventTag: string]: RunningEvent;
|
||||
};
|
||||
_wrappedEmits: {
|
||||
[eventTag: string]: (...args: Array<any>) => void;
|
||||
};
|
||||
constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider: Signer | Provider);
|
||||
static getContractAddress(transaction: {
|
||||
from: string;
|
||||
|
@ -14,7 +14,6 @@ import { Signer, VoidSigner } from "@ethersproject/abstract-signer";
|
||||
import { getContractAddress } from "@ethersproject/address";
|
||||
import { BigNumber } from "@ethersproject/bignumber";
|
||||
import { concat, hexlify, isBytes, isHexString } from "@ethersproject/bytes";
|
||||
import { Zero } from "@ethersproject/constants";
|
||||
import { defineReadOnly, deepCopy, getStatic, resolveProperties, shallowCopy } from "@ethersproject/properties";
|
||||
import { Logger } from "@ethersproject/logger";
|
||||
import { version } from "./_version";
|
||||
@ -44,150 +43,238 @@ function resolveAddresses(signerOrProvider, value, paramType) {
|
||||
}
|
||||
return Promise.resolve(value);
|
||||
}
|
||||
/*
|
||||
export function _populateTransaction(func: FunctionFragment, args: Array<any>, overrides?: any): Promise<Transaction> {
|
||||
return null;
|
||||
}
|
||||
|
||||
export function _sendTransaction(func: FunctionFragment, args: Array<any>, overrides?: any): Promise<Transaction> {
|
||||
return null;
|
||||
}
|
||||
*/
|
||||
function runMethod(contract, functionName, options) {
|
||||
const method = contract.interface.functions[functionName];
|
||||
return function (...params) {
|
||||
let tx = {};
|
||||
let blockTag = null;
|
||||
// If 1 extra parameter was passed in, it contains overrides
|
||||
if (params.length === method.inputs.length + 1 && typeof (params[params.length - 1]) === "object") {
|
||||
tx = shallowCopy(params.pop());
|
||||
if (tx.blockTag != null) {
|
||||
blockTag = tx.blockTag;
|
||||
}
|
||||
delete tx.blockTag;
|
||||
// Check for unexpected keys (e.g. using "gas" instead of "gasLimit")
|
||||
for (let key in tx) {
|
||||
if (!allowedTransactionKeys[key]) {
|
||||
logger.throwArgumentError(("unknown transaction override - " + key), "overrides", tx);
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.checkArgumentCount(params.length, method.inputs.length, "passed to contract");
|
||||
// Check overrides make sense
|
||||
["data", "to"].forEach(function (key) {
|
||||
if (tx[key] != null) {
|
||||
logger.throwError("cannot override " + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key });
|
||||
}
|
||||
function _populateTransaction(contract, fragment, args, overrides) {
|
||||
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)
|
||||
const resolved = yield resolveProperties({
|
||||
args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),
|
||||
address: contract.resolvedAddress,
|
||||
overrides: (resolveProperties(overrides) || {})
|
||||
});
|
||||
// If the contract was just deployed, wait until it is minded
|
||||
if (contract.deployTransaction != null) {
|
||||
tx.to = contract._deployed(blockTag).then(() => {
|
||||
return contract.resolvedAddress;
|
||||
// The ABI coded transaction
|
||||
const tx = {
|
||||
data: contract.interface.encodeFunctionData(fragment, resolved.args),
|
||||
to: resolved.address
|
||||
};
|
||||
// Resolved Overrides
|
||||
const ro = resolved.overrides;
|
||||
if (ro.nonce != null) {
|
||||
tx.nonce = BigNumber.from(ro.nonce).toNumber();
|
||||
}
|
||||
if (ro.gasLimit != null) {
|
||||
tx.gasLimit = BigNumber.from(ro.gasLimit);
|
||||
}
|
||||
if (ro.gasPrice != null) {
|
||||
tx.gasPrice = BigNumber.from(ro.gasPrice);
|
||||
}
|
||||
// If there was no gasLimit override, but the ABI specifies one use it
|
||||
if (tx.gasLimit == null && fragment.gas != null) {
|
||||
tx.gasLimit = BigNumber.from(fragment.gas).add(21000);
|
||||
}
|
||||
// Remvoe the overrides
|
||||
delete overrides.nonce;
|
||||
delete overrides.gasLimit;
|
||||
delete overrides.gasPrice;
|
||||
// @TODO: Maybe move all tx property validation to the Signer and Provider?
|
||||
// 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
|
||||
});
|
||||
}
|
||||
else {
|
||||
tx.to = contract.resolvedAddress;
|
||||
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();
|
||||
}
|
||||
return resolveAddresses(contract.signer || contract.provider, params, method.inputs).then((params) => {
|
||||
tx.data = contract.interface.encodeFunctionData(method, params);
|
||||
if (method.constant || options.callStatic) {
|
||||
// Call (constant functions) always cost 0 ether
|
||||
if (options.estimate) {
|
||||
return Promise.resolve(Zero);
|
||||
}
|
||||
if (!contract.provider && !contract.signer) {
|
||||
logger.throwError("call (constant functions) require a provider or signer", Logger.errors.UNSUPPORTED_OPERATION, { operation: "call" });
|
||||
}
|
||||
// Check overrides make sense
|
||||
["gasLimit", "gasPrice", "value"].forEach(function (key) {
|
||||
if (tx[key] != null) {
|
||||
throw new Error("call cannot override " + key);
|
||||
}
|
||||
});
|
||||
if (options.transaction) {
|
||||
return resolveProperties(tx);
|
||||
}
|
||||
return (contract.signer || contract.provider).call(tx, blockTag).then((value) => {
|
||||
try {
|
||||
let result = contract.interface.decodeFunctionResult(method, value);
|
||||
if (method.outputs.length === 1) {
|
||||
result = result[0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
catch (error) {
|
||||
if (error.code === Logger.errors.CALL_EXCEPTION) {
|
||||
error.address = contract.address;
|
||||
error.args = params;
|
||||
error.transaction = tx;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
// 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
|
||||
});
|
||||
}
|
||||
// Only computing the transaction estimate
|
||||
if (options.estimate) {
|
||||
if (!contract.provider && !contract.signer) {
|
||||
logger.throwError("estimate require a provider or signer", Logger.errors.UNSUPPORTED_OPERATION, { operation: "estimateGas" });
|
||||
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);
|
||||
});
|
||||
};
|
||||
}
|
||||
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" });
|
||||
}
|
||||
const tx = yield populate(contract, fragment, args, overrides);
|
||||
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;
|
||||
let blockTag = undefined;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = shallowCopy(args.pop());
|
||||
if (overrides.blockTag) {
|
||||
blockTag = yield overrides.blockTag;
|
||||
delete overrides.blockTag;
|
||||
}
|
||||
return (contract.signer || contract.provider).estimateGas(tx);
|
||||
}
|
||||
if (tx.gasLimit == null && method.gas != null) {
|
||||
tx.gasLimit = BigNumber.from(method.gas).add(21000);
|
||||
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);
|
||||
try {
|
||||
let result = contract.interface.decodeFunctionResult(fragment, value);
|
||||
if (collapseSimple && fragment.outputs.length === 1) {
|
||||
result = result[0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
if (tx.value != null && !method.payable) {
|
||||
logger.throwArgumentError("contract method is not payable", "sendTransaction:" + method.format(), tx);
|
||||
}
|
||||
if (options.transaction) {
|
||||
return resolveProperties(tx);
|
||||
catch (error) {
|
||||
if (error.code === Logger.errors.CALL_EXCEPTION) {
|
||||
error.address = contract.address;
|
||||
error.args = args;
|
||||
error.transaction = tx;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
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" });
|
||||
}
|
||||
return contract.signer.sendTransaction(tx).then((tx) => {
|
||||
const wait = tx.wait.bind(tx);
|
||||
tx.wait = (confirmations) => {
|
||||
return wait(confirmations).then((receipt) => {
|
||||
receipt.events = receipt.logs.map((log) => {
|
||||
let event = deepCopy(log);
|
||||
let parsed = null;
|
||||
try {
|
||||
parsed = contract.interface.parseLog(log);
|
||||
}
|
||||
catch (e) { }
|
||||
if (parsed) {
|
||||
event.args = parsed.args;
|
||||
event.decode = (data, topics) => {
|
||||
return this.interface.decodeEventLog(parsed.eventFragment, data, topics);
|
||||
};
|
||||
event.event = parsed.name;
|
||||
event.eventSignature = parsed.signature;
|
||||
}
|
||||
event.removeListener = () => { return contract.provider; };
|
||||
event.getBlock = () => {
|
||||
return contract.provider.getBlock(receipt.blockHash);
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
const txRequest = yield populateCallTransaction(contract, fragment, args, overrides);
|
||||
const tx = yield contract.signer.sendTransaction(txRequest);
|
||||
// Tweak the tw.wait so the receipt has extra properties
|
||||
const wait = tx.wait.bind(tx);
|
||||
tx.wait = (confirmations) => {
|
||||
return wait(confirmations).then((receipt) => {
|
||||
receipt.events = receipt.logs.map((log) => {
|
||||
let event = deepCopy(log);
|
||||
let parsed = null;
|
||||
try {
|
||||
parsed = contract.interface.parseLog(log);
|
||||
}
|
||||
catch (e) { }
|
||||
// Successfully parsed the event log; include it
|
||||
if (parsed) {
|
||||
event.args = parsed.args;
|
||||
event.decode = (data, topics) => {
|
||||
return this.interface.decodeEventLog(parsed.eventFragment, data, topics);
|
||||
};
|
||||
event.getTransaction = () => {
|
||||
return contract.provider.getTransaction(receipt.transactionHash);
|
||||
};
|
||||
event.getTransactionReceipt = () => {
|
||||
return Promise.resolve(receipt);
|
||||
};
|
||||
return event;
|
||||
});
|
||||
return receipt;
|
||||
event.event = parsed.name;
|
||||
event.eventSignature = parsed.signature;
|
||||
}
|
||||
// Useful operations
|
||||
event.removeListener = () => { return contract.provider; };
|
||||
event.getBlock = () => {
|
||||
return contract.provider.getBlock(receipt.blockHash);
|
||||
};
|
||||
event.getTransaction = () => {
|
||||
return contract.provider.getTransaction(receipt.transactionHash);
|
||||
};
|
||||
event.getTransactionReceipt = () => {
|
||||
return Promise.resolve(receipt);
|
||||
};
|
||||
return event;
|
||||
});
|
||||
};
|
||||
return tx;
|
||||
});
|
||||
return receipt;
|
||||
});
|
||||
};
|
||||
return tx;
|
||||
});
|
||||
};
|
||||
}
|
||||
function buildDefault(contract, fragment, collapseSimple) {
|
||||
if (fragment.constant) {
|
||||
return buildCall(contract, fragment, collapseSimple);
|
||||
}
|
||||
return buildSend(contract, fragment);
|
||||
}
|
||||
function getEventTag(filter) {
|
||||
if (filter.address && (filter.topics == null || filter.topics.length === 0)) {
|
||||
return "*";
|
||||
}
|
||||
return (filter.address || "*") + "@" + (filter.topics ? filter.topics.join(":") : "");
|
||||
return (filter.address || "*") + "@" + (filter.topics ? filter.topics.map((topic) => {
|
||||
if (Array.isArray(topic)) {
|
||||
return topic.join("|");
|
||||
}
|
||||
return topic;
|
||||
}).join(":") : "");
|
||||
}
|
||||
class RunningEvent {
|
||||
constructor(tag, filter) {
|
||||
@ -409,22 +496,23 @@ export class Contract {
|
||||
}
|
||||
uniqueNames[name].push(signature);
|
||||
}
|
||||
// @TODO: This should take in fragment
|
||||
const run = runMethod(this, signature, {});
|
||||
if (this[signature] == null) {
|
||||
defineReadOnly(this, signature, run);
|
||||
defineReadOnly(this, signature, buildDefault(this, fragment, true));
|
||||
}
|
||||
// We do not collapse simple calls on this bucket, which allows
|
||||
// frameworks to safely use this without introspection as well as
|
||||
// allows decoding error recovery.
|
||||
if (this.functions[signature] == null) {
|
||||
defineReadOnly(this.functions, signature, run);
|
||||
defineReadOnly(this.functions, signature, buildDefault(this, fragment, false));
|
||||
}
|
||||
if (this.callStatic[signature] == null) {
|
||||
defineReadOnly(this.callStatic, signature, runMethod(this, signature, { callStatic: true }));
|
||||
defineReadOnly(this.callStatic, signature, buildCall(this, fragment, true));
|
||||
}
|
||||
if (this.populateTransaction[signature] == null) {
|
||||
defineReadOnly(this.populateTransaction, signature, runMethod(this, signature, { transaction: true }));
|
||||
defineReadOnly(this.populateTransaction, signature, buildPopulate(this, fragment));
|
||||
}
|
||||
if (this.estimateGas[signature] == null) {
|
||||
defineReadOnly(this.estimateGas, signature, runMethod(this, signature, { estimate: true }));
|
||||
defineReadOnly(this.estimateGas, signature, buildEstimate(this, fragment));
|
||||
}
|
||||
});
|
||||
Object.keys(uniqueNames).forEach((name) => {
|
||||
@ -557,7 +645,11 @@ export class Contract {
|
||||
if (eventName.topics && eventName.topics.length > 0) {
|
||||
// Is it a known topichash? (throws if no matching topichash)
|
||||
try {
|
||||
const fragment = this.interface.getEvent(eventName.topics[0]);
|
||||
const topic = eventName.topics[0];
|
||||
if (typeof (topic) !== "string") {
|
||||
throw new Error("invalid topic"); // @TODO: May happen for anonymous events
|
||||
}
|
||||
const fragment = this.interface.getEvent(topic);
|
||||
return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));
|
||||
}
|
||||
catch (error) { }
|
||||
@ -756,6 +848,7 @@ export class ContractFactory {
|
||||
defineReadOnly(this, "interface", getStatic((new.target), "getInterface")(contractInterface));
|
||||
defineReadOnly(this, "signer", signer || null);
|
||||
}
|
||||
// @TODO: Future; rename to populteTransaction?
|
||||
getDeployTransaction(...args) {
|
||||
let tx = {};
|
||||
// If we have 1 additional argument, we allow transaction overrides
|
||||
|
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.153";
|
||||
export declare const version = "contracts/5.0.0-beta.154";
|
||||
|
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "contracts/5.0.0-beta.153";
|
||||
exports.version = "contracts/5.0.0-beta.154";
|
||||
|
39
packages/contracts/lib/index.d.ts
vendored
39
packages/contracts/lib/index.d.ts
vendored
@ -16,11 +16,11 @@ export interface CallOverrides extends PayableOverrides {
|
||||
blockTag?: BlockTag | Promise<BlockTag>;
|
||||
from?: string | Promise<string>;
|
||||
}
|
||||
export declare type ContractFunction = (...params: Array<any>) => Promise<any>;
|
||||
export declare type EventFilter = {
|
||||
address?: string;
|
||||
topics?: Array<string>;
|
||||
topics?: Array<string | Array<string>>;
|
||||
};
|
||||
export declare type ContractFunction<T = any> = (...args: Array<any>) => Promise<T>;
|
||||
export interface Event extends Log {
|
||||
event?: string;
|
||||
eventSignature?: string;
|
||||
@ -38,9 +38,6 @@ export interface ContractReceipt extends TransactionReceipt {
|
||||
export interface ContractTransaction extends TransactionResponse {
|
||||
wait(confirmations?: number): Promise<ContractReceipt>;
|
||||
}
|
||||
interface Bucket<T> {
|
||||
[name: string]: T;
|
||||
}
|
||||
declare class RunningEvent {
|
||||
readonly tag: string;
|
||||
readonly filter: EventFilter;
|
||||
@ -61,17 +58,31 @@ export declare class Contract {
|
||||
readonly interface: Interface;
|
||||
readonly signer: Signer;
|
||||
readonly provider: Provider;
|
||||
readonly functions: Bucket<ContractFunction>;
|
||||
readonly callStatic: Bucket<ContractFunction>;
|
||||
readonly estimateGas: Bucket<(...params: Array<any>) => Promise<BigNumber>>;
|
||||
readonly populateTransaction: Bucket<(...params: Array<any>) => Promise<UnsignedTransaction>>;
|
||||
readonly filters: Bucket<(...params: Array<any>) => EventFilter>;
|
||||
readonly [name: string]: ContractFunction | any;
|
||||
readonly functions: {
|
||||
[name: string]: ContractFunction;
|
||||
};
|
||||
readonly callStatic: {
|
||||
[name: string]: ContractFunction;
|
||||
};
|
||||
readonly estimateGas: {
|
||||
[name: string]: ContractFunction<BigNumber>;
|
||||
};
|
||||
readonly populateTransaction: {
|
||||
[name: string]: ContractFunction<UnsignedTransaction>;
|
||||
};
|
||||
readonly filters: {
|
||||
[name: string]: (...args: Array<any>) => EventFilter;
|
||||
};
|
||||
readonly [key: string]: ContractFunction | any;
|
||||
readonly resolvedAddress: Promise<string>;
|
||||
readonly deployTransaction: TransactionResponse;
|
||||
private _deployedPromise;
|
||||
private _runningEvents;
|
||||
private _wrappedEmits;
|
||||
_deployedPromise: Promise<Contract>;
|
||||
_runningEvents: {
|
||||
[eventTag: string]: RunningEvent;
|
||||
};
|
||||
_wrappedEmits: {
|
||||
[eventTag: string]: (...args: Array<any>) => void;
|
||||
};
|
||||
constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider: Signer | Provider);
|
||||
static getContractAddress(transaction: {
|
||||
from: string;
|
||||
|
@ -62,7 +62,6 @@ 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");
|
||||
var constants_1 = require("@ethersproject/constants");
|
||||
var properties_1 = require("@ethersproject/properties");
|
||||
var logger_1 = require("@ethersproject/logger");
|
||||
var _version_1 = require("./_version");
|
||||
@ -92,155 +91,314 @@ function resolveAddresses(signerOrProvider, value, paramType) {
|
||||
}
|
||||
return Promise.resolve(value);
|
||||
}
|
||||
/*
|
||||
export function _populateTransaction(func: FunctionFragment, args: Array<any>, overrides?: any): Promise<Transaction> {
|
||||
return null;
|
||||
}
|
||||
|
||||
export function _sendTransaction(func: FunctionFragment, args: Array<any>, overrides?: any): Promise<Transaction> {
|
||||
return null;
|
||||
}
|
||||
*/
|
||||
function runMethod(contract, functionName, options) {
|
||||
var method = contract.interface.functions[functionName];
|
||||
return function () {
|
||||
var _this = this;
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
var tx = {};
|
||||
var blockTag = null;
|
||||
// If 1 extra parameter was passed in, it contains overrides
|
||||
if (params.length === method.inputs.length + 1 && typeof (params[params.length - 1]) === "object") {
|
||||
tx = properties_1.shallowCopy(params.pop());
|
||||
if (tx.blockTag != null) {
|
||||
blockTag = tx.blockTag;
|
||||
}
|
||||
delete tx.blockTag;
|
||||
// Check for unexpected keys (e.g. using "gas" instead of "gasLimit")
|
||||
for (var key in tx) {
|
||||
if (!allowedTransactionKeys[key]) {
|
||||
logger.throwArgumentError(("unknown transaction override - " + key), "overrides", tx);
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.checkArgumentCount(params.length, method.inputs.length, "passed to contract");
|
||||
// Check overrides make sense
|
||||
["data", "to"].forEach(function (key) {
|
||||
if (tx[key] != null) {
|
||||
logger.throwError("cannot override " + key, logger_1.Logger.errors.UNSUPPORTED_OPERATION, { operation: key });
|
||||
function _populateTransaction(contract, fragment, args, overrides) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var resolved, tx, ro, leftovers;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
overrides = properties_1.shallowCopy(overrides);
|
||||
return [4 /*yield*/, properties_1.resolveProperties({
|
||||
args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),
|
||||
address: contract.resolvedAddress,
|
||||
overrides: (properties_1.resolveProperties(overrides) || {})
|
||||
})];
|
||||
case 1:
|
||||
resolved = _a.sent();
|
||||
tx = {
|
||||
data: contract.interface.encodeFunctionData(fragment, resolved.args),
|
||||
to: resolved.address
|
||||
};
|
||||
ro = resolved.overrides;
|
||||
if (ro.nonce != null) {
|
||||
tx.nonce = bignumber_1.BigNumber.from(ro.nonce).toNumber();
|
||||
}
|
||||
if (ro.gasLimit != null) {
|
||||
tx.gasLimit = bignumber_1.BigNumber.from(ro.gasLimit);
|
||||
}
|
||||
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 (tx.gasLimit == null && fragment.gas != null) {
|
||||
tx.gasLimit = bignumber_1.BigNumber.from(fragment.gas).add(21000);
|
||||
}
|
||||
// Remvoe the overrides
|
||||
delete overrides.nonce;
|
||||
delete overrides.gasLimit;
|
||||
delete overrides.gasPrice;
|
||||
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
|
||||
});
|
||||
}
|
||||
return [2 /*return*/, tx];
|
||||
}
|
||||
});
|
||||
// If the contract was just deployed, wait until it is minded
|
||||
if (contract.deployTransaction != null) {
|
||||
tx.to = contract._deployed(blockTag).then(function () {
|
||||
return contract.resolvedAddress;
|
||||
});
|
||||
}
|
||||
else {
|
||||
tx.to = contract.resolvedAddress;
|
||||
}
|
||||
return resolveAddresses(contract.signer || contract.provider, params, method.inputs).then(function (params) {
|
||||
tx.data = contract.interface.encodeFunctionData(method, params);
|
||||
if (method.constant || options.callStatic) {
|
||||
// Call (constant functions) always cost 0 ether
|
||||
if (options.estimate) {
|
||||
return Promise.resolve(constants_1.Zero);
|
||||
}
|
||||
if (!contract.provider && !contract.signer) {
|
||||
logger.throwError("call (constant functions) require a provider or signer", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { operation: "call" });
|
||||
}
|
||||
// Check overrides make sense
|
||||
["gasLimit", "gasPrice", "value"].forEach(function (key) {
|
||||
if (tx[key] != null) {
|
||||
throw new Error("call cannot override " + key);
|
||||
}
|
||||
});
|
||||
if (options.transaction) {
|
||||
return properties_1.resolveProperties(tx);
|
||||
}
|
||||
return (contract.signer || contract.provider).call(tx, blockTag).then(function (value) {
|
||||
try {
|
||||
var result = contract.interface.decodeFunctionResult(method, value);
|
||||
if (method.outputs.length === 1) {
|
||||
result = result[0];
|
||||
});
|
||||
}
|
||||
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
|
||||
});
|
||||
}
|
||||
return result;
|
||||
tx.value = roValue;
|
||||
}
|
||||
catch (error) {
|
||||
if (error.code === logger_1.Logger.errors.CALL_EXCEPTION) {
|
||||
error.address = contract.address;
|
||||
error.args = params;
|
||||
error.transaction = tx;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
return [2 /*return*/, tx];
|
||||
}
|
||||
// Only computing the transaction estimate
|
||||
if (options.estimate) {
|
||||
if (!contract.provider && !contract.signer) {
|
||||
logger.throwError("estimate require a provider or signer", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { operation: "estimateGas" });
|
||||
});
|
||||
});
|
||||
}
|
||||
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();
|
||||
}
|
||||
return (contract.signer || contract.provider).estimateGas(tx);
|
||||
}
|
||||
if (tx.gasLimit == null && method.gas != null) {
|
||||
tx.gasLimit = bignumber_1.BigNumber.from(method.gas).add(21000);
|
||||
}
|
||||
if (tx.value != null && !method.payable) {
|
||||
logger.throwArgumentError("contract method is not payable", "sendTransaction:" + method.format(), tx);
|
||||
}
|
||||
if (options.transaction) {
|
||||
return properties_1.resolveProperties(tx);
|
||||
}
|
||||
if (!contract.signer) {
|
||||
logger.throwError("sending a transaction requires a signer", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { operation: "sendTransaction" });
|
||||
}
|
||||
return contract.signer.sendTransaction(tx).then(function (tx) {
|
||||
var wait = tx.wait.bind(tx);
|
||||
tx.wait = function (confirmations) {
|
||||
return wait(confirmations).then(function (receipt) {
|
||||
receipt.events = receipt.logs.map(function (log) {
|
||||
var event = properties_1.deepCopy(log);
|
||||
var parsed = null;
|
||||
try {
|
||||
parsed = contract.interface.parseLog(log);
|
||||
}
|
||||
catch (e) { }
|
||||
if (parsed) {
|
||||
event.args = parsed.args;
|
||||
event.decode = function (data, topics) {
|
||||
return _this.interface.decodeEventLog(parsed.eventFragment, data, topics);
|
||||
};
|
||||
event.event = parsed.name;
|
||||
event.eventSignature = parsed.signature;
|
||||
}
|
||||
event.removeListener = function () { return contract.provider; };
|
||||
event.getBlock = function () {
|
||||
return contract.provider.getBlock(receipt.blockHash);
|
||||
};
|
||||
event.getTransaction = function () {
|
||||
return contract.provider.getTransaction(receipt.transactionHash);
|
||||
};
|
||||
event.getTransactionReceipt = function () {
|
||||
return Promise.resolve(receipt);
|
||||
};
|
||||
return event;
|
||||
});
|
||||
return receipt;
|
||||
});
|
||||
};
|
||||
return tx;
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
return [2 /*return*/, populate(contract, fragment, args, overrides)];
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
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;
|
||||
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" });
|
||||
}
|
||||
return [4 /*yield*/, populate(contract, fragment, args, overrides)];
|
||||
case 1:
|
||||
tx = _a.sent();
|
||||
return [4 /*yield*/, signerOrProvider.estimateGas(tx)];
|
||||
case 2: return [2 /*return*/, _a.sent()];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
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;
|
||||
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];
|
||||
overrides = properties_1.shallowCopy(args.pop());
|
||||
if (!overrides.blockTag) return [3 /*break*/, 2];
|
||||
return [4 /*yield*/, overrides.blockTag];
|
||||
case 1:
|
||||
blockTag = _a.sent();
|
||||
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)];
|
||||
case 3:
|
||||
tx = _a.sent();
|
||||
return [4 /*yield*/, signerOrProvider.call(tx, blockTag)];
|
||||
case 4:
|
||||
value = _a.sent();
|
||||
try {
|
||||
result = contract.interface.decodeFunctionResult(fragment, value);
|
||||
if (collapseSimple && fragment.outputs.length === 1) {
|
||||
result = result[0];
|
||||
}
|
||||
return [2 /*return*/, result];
|
||||
}
|
||||
catch (error) {
|
||||
if (error.code === logger_1.Logger.errors.CALL_EXCEPTION) {
|
||||
error.address = contract.address;
|
||||
error.args = args;
|
||||
error.transaction = tx;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
function buildSend(contract, fragment) {
|
||||
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, 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" });
|
||||
}
|
||||
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)];
|
||||
case 1:
|
||||
txRequest = _a.sent();
|
||||
return [4 /*yield*/, contract.signer.sendTransaction(txRequest)];
|
||||
case 2:
|
||||
tx = _a.sent();
|
||||
wait = tx.wait.bind(tx);
|
||||
tx.wait = function (confirmations) {
|
||||
return wait(confirmations).then(function (receipt) {
|
||||
receipt.events = receipt.logs.map(function (log) {
|
||||
var event = properties_1.deepCopy(log);
|
||||
var parsed = null;
|
||||
try {
|
||||
parsed = contract.interface.parseLog(log);
|
||||
}
|
||||
catch (e) { }
|
||||
// Successfully parsed the event log; include it
|
||||
if (parsed) {
|
||||
event.args = parsed.args;
|
||||
event.decode = function (data, topics) {
|
||||
return _this.interface.decodeEventLog(parsed.eventFragment, data, topics);
|
||||
};
|
||||
event.event = parsed.name;
|
||||
event.eventSignature = parsed.signature;
|
||||
}
|
||||
// Useful operations
|
||||
event.removeListener = function () { return contract.provider; };
|
||||
event.getBlock = function () {
|
||||
return contract.provider.getBlock(receipt.blockHash);
|
||||
};
|
||||
event.getTransaction = function () {
|
||||
return contract.provider.getTransaction(receipt.transactionHash);
|
||||
};
|
||||
event.getTransactionReceipt = function () {
|
||||
return Promise.resolve(receipt);
|
||||
};
|
||||
return event;
|
||||
});
|
||||
return receipt;
|
||||
});
|
||||
};
|
||||
return [2 /*return*/, tx];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
function buildDefault(contract, fragment, collapseSimple) {
|
||||
if (fragment.constant) {
|
||||
return buildCall(contract, fragment, collapseSimple);
|
||||
}
|
||||
return buildSend(contract, fragment);
|
||||
}
|
||||
function getEventTag(filter) {
|
||||
if (filter.address && (filter.topics == null || filter.topics.length === 0)) {
|
||||
return "*";
|
||||
}
|
||||
return (filter.address || "*") + "@" + (filter.topics ? filter.topics.join(":") : "");
|
||||
return (filter.address || "*") + "@" + (filter.topics ? filter.topics.map(function (topic) {
|
||||
if (Array.isArray(topic)) {
|
||||
return topic.join("|");
|
||||
}
|
||||
return topic;
|
||||
}).join(":") : "");
|
||||
}
|
||||
var RunningEvent = /** @class */ (function () {
|
||||
function RunningEvent(tag, filter) {
|
||||
@ -481,22 +639,23 @@ var Contract = /** @class */ (function () {
|
||||
}
|
||||
uniqueNames[name_1].push(signature);
|
||||
}
|
||||
// @TODO: This should take in fragment
|
||||
var run = runMethod(_this, signature, {});
|
||||
if (_this[signature] == null) {
|
||||
properties_1.defineReadOnly(_this, signature, run);
|
||||
properties_1.defineReadOnly(_this, signature, buildDefault(_this, fragment, true));
|
||||
}
|
||||
// We do not collapse simple calls on this bucket, which allows
|
||||
// frameworks to safely use this without introspection as well as
|
||||
// allows decoding error recovery.
|
||||
if (_this.functions[signature] == null) {
|
||||
properties_1.defineReadOnly(_this.functions, signature, run);
|
||||
properties_1.defineReadOnly(_this.functions, signature, buildDefault(_this, fragment, false));
|
||||
}
|
||||
if (_this.callStatic[signature] == null) {
|
||||
properties_1.defineReadOnly(_this.callStatic, signature, runMethod(_this, signature, { callStatic: true }));
|
||||
properties_1.defineReadOnly(_this.callStatic, signature, buildCall(_this, fragment, true));
|
||||
}
|
||||
if (_this.populateTransaction[signature] == null) {
|
||||
properties_1.defineReadOnly(_this.populateTransaction, signature, runMethod(_this, signature, { transaction: true }));
|
||||
properties_1.defineReadOnly(_this.populateTransaction, signature, buildPopulate(_this, fragment));
|
||||
}
|
||||
if (_this.estimateGas[signature] == null) {
|
||||
properties_1.defineReadOnly(_this.estimateGas, signature, runMethod(_this, signature, { estimate: true }));
|
||||
properties_1.defineReadOnly(_this.estimateGas, signature, buildEstimate(_this, fragment));
|
||||
}
|
||||
});
|
||||
Object.keys(uniqueNames).forEach(function (name) {
|
||||
@ -631,7 +790,11 @@ var Contract = /** @class */ (function () {
|
||||
if (eventName.topics && eventName.topics.length > 0) {
|
||||
// Is it a known topichash? (throws if no matching topichash)
|
||||
try {
|
||||
var fragment = this.interface.getEvent(eventName.topics[0]);
|
||||
var topic = eventName.topics[0];
|
||||
if (typeof (topic) !== "string") {
|
||||
throw new Error("invalid topic"); // @TODO: May happen for anonymous events
|
||||
}
|
||||
var fragment = this.interface.getEvent(topic);
|
||||
return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));
|
||||
}
|
||||
catch (error) { }
|
||||
@ -840,6 +1003,7 @@ var ContractFactory = /** @class */ (function () {
|
||||
properties_1.defineReadOnly(this, "interface", properties_1.getStatic((_newTarget), "getInterface")(contractInterface));
|
||||
properties_1.defineReadOnly(this, "signer", signer || null);
|
||||
}
|
||||
// @TODO: Future; rename to populteTransaction?
|
||||
ContractFactory.prototype.getDeployTransaction = function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
|
@ -32,7 +32,7 @@
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"tarballHash": "0xcfc82f0eb8ef40414848c63115b2f09acfa075423f101b56237b9f0f7b277bbe",
|
||||
"tarballHash": "0xc7210dbd8a387e8ee1b090ba36f5393ab7167a7a5fbb2dea34fc938b2e5c67e6",
|
||||
"types": "./lib/index.d.ts",
|
||||
"version": "5.0.0-beta.153"
|
||||
"version": "5.0.0-beta.154"
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = "contracts/5.0.0-beta.153";
|
||||
export const version = "contracts/5.0.0-beta.154";
|
||||
|
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
397
packages/ethers/dist/ethers.esm.js
vendored
397
packages/ethers/dist/ethers.esm.js
vendored
@ -4689,7 +4689,7 @@ class FixedNumber {
|
||||
}
|
||||
}
|
||||
|
||||
const version$3 = "properties/5.0.0-beta.141";
|
||||
const version$3 = "properties/5.0.0-beta.142";
|
||||
|
||||
"use strict";
|
||||
var __awaiter = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
@ -8192,7 +8192,7 @@ class VoidSigner extends Signer {
|
||||
}
|
||||
}
|
||||
|
||||
const version$b = "contracts/5.0.0-beta.153";
|
||||
const version$b = "contracts/5.0.0-beta.154";
|
||||
|
||||
"use strict";
|
||||
var __awaiter$2 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
@ -8230,150 +8230,238 @@ function resolveAddresses(signerOrProvider, value, paramType) {
|
||||
}
|
||||
return Promise.resolve(value);
|
||||
}
|
||||
/*
|
||||
export function _populateTransaction(func: FunctionFragment, args: Array<any>, overrides?: any): Promise<Transaction> {
|
||||
return null;
|
||||
}
|
||||
|
||||
export function _sendTransaction(func: FunctionFragment, args: Array<any>, overrides?: any): Promise<Transaction> {
|
||||
return null;
|
||||
}
|
||||
*/
|
||||
function runMethod(contract, functionName, options) {
|
||||
const method = contract.interface.functions[functionName];
|
||||
return function (...params) {
|
||||
let tx = {};
|
||||
let blockTag = null;
|
||||
// If 1 extra parameter was passed in, it contains overrides
|
||||
if (params.length === method.inputs.length + 1 && typeof (params[params.length - 1]) === "object") {
|
||||
tx = shallowCopy(params.pop());
|
||||
if (tx.blockTag != null) {
|
||||
blockTag = tx.blockTag;
|
||||
}
|
||||
delete tx.blockTag;
|
||||
// Check for unexpected keys (e.g. using "gas" instead of "gasLimit")
|
||||
for (let key in tx) {
|
||||
if (!allowedTransactionKeys$1[key]) {
|
||||
logger$f.throwArgumentError(("unknown transaction override - " + key), "overrides", tx);
|
||||
}
|
||||
}
|
||||
}
|
||||
logger$f.checkArgumentCount(params.length, method.inputs.length, "passed to contract");
|
||||
// Check overrides make sense
|
||||
["data", "to"].forEach(function (key) {
|
||||
if (tx[key] != null) {
|
||||
logger$f.throwError("cannot override " + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key });
|
||||
}
|
||||
function _populateTransaction(contract, fragment, args, overrides) {
|
||||
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)
|
||||
const resolved = yield resolveProperties({
|
||||
args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),
|
||||
address: contract.resolvedAddress,
|
||||
overrides: (resolveProperties(overrides) || {})
|
||||
});
|
||||
// If the contract was just deployed, wait until it is minded
|
||||
if (contract.deployTransaction != null) {
|
||||
tx.to = contract._deployed(blockTag).then(() => {
|
||||
return contract.resolvedAddress;
|
||||
// The ABI coded transaction
|
||||
const tx = {
|
||||
data: contract.interface.encodeFunctionData(fragment, resolved.args),
|
||||
to: resolved.address
|
||||
};
|
||||
// Resolved Overrides
|
||||
const ro = resolved.overrides;
|
||||
if (ro.nonce != null) {
|
||||
tx.nonce = BigNumber.from(ro.nonce).toNumber();
|
||||
}
|
||||
if (ro.gasLimit != null) {
|
||||
tx.gasLimit = BigNumber.from(ro.gasLimit);
|
||||
}
|
||||
if (ro.gasPrice != null) {
|
||||
tx.gasPrice = BigNumber.from(ro.gasPrice);
|
||||
}
|
||||
// If there was no gasLimit override, but the ABI specifies one use it
|
||||
if (tx.gasLimit == null && fragment.gas != null) {
|
||||
tx.gasLimit = BigNumber.from(fragment.gas).add(21000);
|
||||
}
|
||||
// Remvoe the overrides
|
||||
delete overrides.nonce;
|
||||
delete overrides.gasLimit;
|
||||
delete overrides.gasPrice;
|
||||
// @TODO: Maybe move all tx property validation to the Signer and Provider?
|
||||
// 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
|
||||
});
|
||||
}
|
||||
else {
|
||||
tx.to = contract.resolvedAddress;
|
||||
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();
|
||||
}
|
||||
return resolveAddresses(contract.signer || contract.provider, params, method.inputs).then((params) => {
|
||||
tx.data = contract.interface.encodeFunctionData(method, params);
|
||||
if (method.constant || options.callStatic) {
|
||||
// Call (constant functions) always cost 0 ether
|
||||
if (options.estimate) {
|
||||
return Promise.resolve(Zero$1);
|
||||
}
|
||||
if (!contract.provider && !contract.signer) {
|
||||
logger$f.throwError("call (constant functions) require a provider or signer", Logger.errors.UNSUPPORTED_OPERATION, { operation: "call" });
|
||||
}
|
||||
// Check overrides make sense
|
||||
["gasLimit", "gasPrice", "value"].forEach(function (key) {
|
||||
if (tx[key] != null) {
|
||||
throw new Error("call cannot override " + key);
|
||||
}
|
||||
});
|
||||
if (options.transaction) {
|
||||
return resolveProperties(tx);
|
||||
}
|
||||
return (contract.signer || contract.provider).call(tx, blockTag).then((value) => {
|
||||
try {
|
||||
let result = contract.interface.decodeFunctionResult(method, value);
|
||||
if (method.outputs.length === 1) {
|
||||
result = result[0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
catch (error) {
|
||||
if (error.code === Logger.errors.CALL_EXCEPTION) {
|
||||
error.address = contract.address;
|
||||
error.args = params;
|
||||
error.transaction = tx;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
// 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
|
||||
});
|
||||
}
|
||||
// Only computing the transaction estimate
|
||||
if (options.estimate) {
|
||||
if (!contract.provider && !contract.signer) {
|
||||
logger$f.throwError("estimate require a provider or signer", Logger.errors.UNSUPPORTED_OPERATION, { operation: "estimateGas" });
|
||||
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);
|
||||
});
|
||||
};
|
||||
}
|
||||
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" });
|
||||
}
|
||||
const tx = yield populate(contract, fragment, args, overrides);
|
||||
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;
|
||||
let blockTag = undefined;
|
||||
if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === "object") {
|
||||
overrides = shallowCopy(args.pop());
|
||||
if (overrides.blockTag) {
|
||||
blockTag = yield overrides.blockTag;
|
||||
delete overrides.blockTag;
|
||||
}
|
||||
return (contract.signer || contract.provider).estimateGas(tx);
|
||||
}
|
||||
if (tx.gasLimit == null && method.gas != null) {
|
||||
tx.gasLimit = BigNumber.from(method.gas).add(21000);
|
||||
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);
|
||||
try {
|
||||
let result = contract.interface.decodeFunctionResult(fragment, value);
|
||||
if (collapseSimple && fragment.outputs.length === 1) {
|
||||
result = result[0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
if (tx.value != null && !method.payable) {
|
||||
logger$f.throwArgumentError("contract method is not payable", "sendTransaction:" + method.format(), tx);
|
||||
}
|
||||
if (options.transaction) {
|
||||
return resolveProperties(tx);
|
||||
catch (error) {
|
||||
if (error.code === Logger.errors.CALL_EXCEPTION) {
|
||||
error.address = contract.address;
|
||||
error.args = args;
|
||||
error.transaction = tx;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
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" });
|
||||
}
|
||||
return contract.signer.sendTransaction(tx).then((tx) => {
|
||||
const wait = tx.wait.bind(tx);
|
||||
tx.wait = (confirmations) => {
|
||||
return wait(confirmations).then((receipt) => {
|
||||
receipt.events = receipt.logs.map((log) => {
|
||||
let event = deepCopy(log);
|
||||
let parsed = null;
|
||||
try {
|
||||
parsed = contract.interface.parseLog(log);
|
||||
}
|
||||
catch (e) { }
|
||||
if (parsed) {
|
||||
event.args = parsed.args;
|
||||
event.decode = (data, topics) => {
|
||||
return this.interface.decodeEventLog(parsed.eventFragment, data, topics);
|
||||
};
|
||||
event.event = parsed.name;
|
||||
event.eventSignature = parsed.signature;
|
||||
}
|
||||
event.removeListener = () => { return contract.provider; };
|
||||
event.getBlock = () => {
|
||||
return contract.provider.getBlock(receipt.blockHash);
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
logger$f.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
const txRequest = yield populateCallTransaction(contract, fragment, args, overrides);
|
||||
const tx = yield contract.signer.sendTransaction(txRequest);
|
||||
// Tweak the tw.wait so the receipt has extra properties
|
||||
const wait = tx.wait.bind(tx);
|
||||
tx.wait = (confirmations) => {
|
||||
return wait(confirmations).then((receipt) => {
|
||||
receipt.events = receipt.logs.map((log) => {
|
||||
let event = deepCopy(log);
|
||||
let parsed = null;
|
||||
try {
|
||||
parsed = contract.interface.parseLog(log);
|
||||
}
|
||||
catch (e) { }
|
||||
// Successfully parsed the event log; include it
|
||||
if (parsed) {
|
||||
event.args = parsed.args;
|
||||
event.decode = (data, topics) => {
|
||||
return this.interface.decodeEventLog(parsed.eventFragment, data, topics);
|
||||
};
|
||||
event.getTransaction = () => {
|
||||
return contract.provider.getTransaction(receipt.transactionHash);
|
||||
};
|
||||
event.getTransactionReceipt = () => {
|
||||
return Promise.resolve(receipt);
|
||||
};
|
||||
return event;
|
||||
});
|
||||
return receipt;
|
||||
event.event = parsed.name;
|
||||
event.eventSignature = parsed.signature;
|
||||
}
|
||||
// Useful operations
|
||||
event.removeListener = () => { return contract.provider; };
|
||||
event.getBlock = () => {
|
||||
return contract.provider.getBlock(receipt.blockHash);
|
||||
};
|
||||
event.getTransaction = () => {
|
||||
return contract.provider.getTransaction(receipt.transactionHash);
|
||||
};
|
||||
event.getTransactionReceipt = () => {
|
||||
return Promise.resolve(receipt);
|
||||
};
|
||||
return event;
|
||||
});
|
||||
};
|
||||
return tx;
|
||||
});
|
||||
return receipt;
|
||||
});
|
||||
};
|
||||
return tx;
|
||||
});
|
||||
};
|
||||
}
|
||||
function buildDefault(contract, fragment, collapseSimple) {
|
||||
if (fragment.constant) {
|
||||
return buildCall(contract, fragment, collapseSimple);
|
||||
}
|
||||
return buildSend(contract, fragment);
|
||||
}
|
||||
function getEventTag(filter) {
|
||||
if (filter.address && (filter.topics == null || filter.topics.length === 0)) {
|
||||
return "*";
|
||||
}
|
||||
return (filter.address || "*") + "@" + (filter.topics ? filter.topics.join(":") : "");
|
||||
return (filter.address || "*") + "@" + (filter.topics ? filter.topics.map((topic) => {
|
||||
if (Array.isArray(topic)) {
|
||||
return topic.join("|");
|
||||
}
|
||||
return topic;
|
||||
}).join(":") : "");
|
||||
}
|
||||
class RunningEvent {
|
||||
constructor(tag, filter) {
|
||||
@ -8595,22 +8683,23 @@ class Contract {
|
||||
}
|
||||
uniqueNames[name].push(signature);
|
||||
}
|
||||
// @TODO: This should take in fragment
|
||||
const run = runMethod(this, signature, {});
|
||||
if (this[signature] == null) {
|
||||
defineReadOnly(this, signature, run);
|
||||
defineReadOnly(this, signature, buildDefault(this, fragment, true));
|
||||
}
|
||||
// We do not collapse simple calls on this bucket, which allows
|
||||
// frameworks to safely use this without introspection as well as
|
||||
// allows decoding error recovery.
|
||||
if (this.functions[signature] == null) {
|
||||
defineReadOnly(this.functions, signature, run);
|
||||
defineReadOnly(this.functions, signature, buildDefault(this, fragment, false));
|
||||
}
|
||||
if (this.callStatic[signature] == null) {
|
||||
defineReadOnly(this.callStatic, signature, runMethod(this, signature, { callStatic: true }));
|
||||
defineReadOnly(this.callStatic, signature, buildCall(this, fragment, true));
|
||||
}
|
||||
if (this.populateTransaction[signature] == null) {
|
||||
defineReadOnly(this.populateTransaction, signature, runMethod(this, signature, { transaction: true }));
|
||||
defineReadOnly(this.populateTransaction, signature, buildPopulate(this, fragment));
|
||||
}
|
||||
if (this.estimateGas[signature] == null) {
|
||||
defineReadOnly(this.estimateGas, signature, runMethod(this, signature, { estimate: true }));
|
||||
defineReadOnly(this.estimateGas, signature, buildEstimate(this, fragment));
|
||||
}
|
||||
});
|
||||
Object.keys(uniqueNames).forEach((name) => {
|
||||
@ -8743,7 +8832,11 @@ class Contract {
|
||||
if (eventName.topics && eventName.topics.length > 0) {
|
||||
// Is it a known topichash? (throws if no matching topichash)
|
||||
try {
|
||||
const fragment = this.interface.getEvent(eventName.topics[0]);
|
||||
const topic = eventName.topics[0];
|
||||
if (typeof (topic) !== "string") {
|
||||
throw new Error("invalid topic"); // @TODO: May happen for anonymous events
|
||||
}
|
||||
const fragment = this.interface.getEvent(topic);
|
||||
return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));
|
||||
}
|
||||
catch (error) { }
|
||||
@ -8942,6 +9035,7 @@ class ContractFactory {
|
||||
defineReadOnly(this, "interface", getStatic((new.target), "getInterface")(contractInterface));
|
||||
defineReadOnly(this, "signer", signer || null);
|
||||
}
|
||||
// @TODO: Future; rename to populteTransaction?
|
||||
getDeployTransaction(...args) {
|
||||
let tx = {};
|
||||
// If we have 1 additional argument, we allow transaction overrides
|
||||
@ -16029,7 +16123,7 @@ function poll(func, options) {
|
||||
});
|
||||
}
|
||||
|
||||
const version$m = "providers/5.0.0-beta.168";
|
||||
const version$m = "providers/5.0.0-beta.169";
|
||||
|
||||
"use strict";
|
||||
const logger$q = new Logger(version$m);
|
||||
@ -16602,11 +16696,14 @@ class BaseProvider extends Provider {
|
||||
network = yield this.detectNetwork();
|
||||
}
|
||||
// This should never happen; every Provider sub-class should have
|
||||
// suggested a network by here (or thrown).
|
||||
// suggested a network by here (or have thrown).
|
||||
if (!network) {
|
||||
logger$r.throwError("no network detected", Logger.errors.UNKNOWN_ERROR, {});
|
||||
}
|
||||
defineReadOnly(this, "_network", network);
|
||||
// Possible this call stacked so do not call defineReadOnly again
|
||||
if (this._network == null) {
|
||||
defineReadOnly(this, "_network", network);
|
||||
}
|
||||
}
|
||||
return this._network;
|
||||
});
|
||||
@ -17129,7 +17226,7 @@ class BaseProvider extends Provider {
|
||||
return this.formatter.blockWithTransactions(block);
|
||||
}
|
||||
return this.formatter.block(block);
|
||||
}), { onceBlock: this });
|
||||
}), { oncePoll: this });
|
||||
});
|
||||
}
|
||||
getBlock(blockHashOrBlockTag) {
|
||||
@ -17167,7 +17264,7 @@ class BaseProvider extends Provider {
|
||||
tx.confirmations = confirmations;
|
||||
}
|
||||
return this._wrapTransaction(tx);
|
||||
}), { onceBlock: this });
|
||||
}), { oncePoll: this });
|
||||
});
|
||||
}
|
||||
getTransactionReceipt(transactionHash) {
|
||||
@ -17203,7 +17300,7 @@ class BaseProvider extends Provider {
|
||||
receipt.confirmations = confirmations;
|
||||
}
|
||||
return receipt;
|
||||
}), { onceBlock: this });
|
||||
}), { oncePoll: this });
|
||||
});
|
||||
}
|
||||
getLogs(filter) {
|
||||
@ -18884,7 +18981,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.168";
|
||||
exports.version = "providers/5.0.0-beta.169";
|
||||
});
|
||||
|
||||
var _version$3 = unwrapExports(_version$2);
|
||||
@ -18993,6 +19090,15 @@ class WebSocketProvider extends JsonRpcProvider {
|
||||
console.warn("this should not happen");
|
||||
}
|
||||
};
|
||||
// This Provider does not actually poll, but we want to trigger
|
||||
// poll events for things that depend on them (like stalling for
|
||||
// block and transaction lookups)
|
||||
const fauxPoll = setInterval(() => {
|
||||
this.emit("poll");
|
||||
}, 1000);
|
||||
if (fauxPoll.unref) {
|
||||
fauxPoll.unref();
|
||||
}
|
||||
}
|
||||
get pollingInterval() {
|
||||
return 0;
|
||||
@ -19060,8 +19166,10 @@ class WebSocketProvider extends JsonRpcProvider {
|
||||
_startEvent(event) {
|
||||
switch (event.type) {
|
||||
case "block":
|
||||
this._subscribe("block", ["newHeads", {}], (result) => {
|
||||
this.emit("block", BigNumber.from(result.number).toNumber());
|
||||
this._subscribe("block", ["newHeads"], (result) => {
|
||||
const blockNumber = BigNumber.from(result.number).toNumber();
|
||||
this._emitted.block = blockNumber;
|
||||
this.emit("block", blockNumber);
|
||||
});
|
||||
break;
|
||||
case "pending":
|
||||
@ -19093,13 +19201,16 @@ class WebSocketProvider extends JsonRpcProvider {
|
||||
// to keep an eye out for transactions we are watching for.
|
||||
// Starting a subscription for an event (i.e. "tx") that is already
|
||||
// running is (basically) a nop.
|
||||
this._subscribe("tx", ["newHeads", {}], (result) => {
|
||||
this._subscribe("tx", ["newHeads"], (result) => {
|
||||
this._events.filter((e) => (e.type === "tx")).forEach(emitReceipt);
|
||||
});
|
||||
break;
|
||||
}
|
||||
// Nothing is needed
|
||||
case "debug":
|
||||
case "poll":
|
||||
case "willPoll":
|
||||
case "didPoll":
|
||||
case "error":
|
||||
break;
|
||||
default:
|
||||
@ -19644,7 +19755,7 @@ var utils$1 = /*#__PURE__*/Object.freeze({
|
||||
Indexed: Indexed
|
||||
});
|
||||
|
||||
const version$o = "ethers/5.0.0-beta.188";
|
||||
const version$o = "ethers/5.0.0-beta.189";
|
||||
|
||||
"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
493
packages/ethers/dist/ethers.umd.js
vendored
493
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.141";
|
||||
exports.version = "properties/5.0.0-beta.142";
|
||||
});
|
||||
|
||||
var _version$7 = unwrapExports(_version$6);
|
||||
@ -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.153";
|
||||
exports.version = "contracts/5.0.0-beta.154";
|
||||
});
|
||||
|
||||
var _version$n = unwrapExports(_version$m);
|
||||
@ -9302,7 +9302,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
var logger = new lib.Logger(_version$m.version);
|
||||
///////////////////////////////
|
||||
var allowedTransactionKeys = {
|
||||
@ -9329,155 +9328,314 @@
|
||||
}
|
||||
return Promise.resolve(value);
|
||||
}
|
||||
/*
|
||||
export function _populateTransaction(func: FunctionFragment, args: Array<any>, overrides?: any): Promise<Transaction> {
|
||||
return null;
|
||||
}
|
||||
|
||||
export function _sendTransaction(func: FunctionFragment, args: Array<any>, overrides?: any): Promise<Transaction> {
|
||||
return null;
|
||||
}
|
||||
*/
|
||||
function runMethod(contract, functionName, options) {
|
||||
var method = contract.interface.functions[functionName];
|
||||
return function () {
|
||||
var _this = this;
|
||||
var params = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
params[_i] = arguments[_i];
|
||||
}
|
||||
var tx = {};
|
||||
var blockTag = null;
|
||||
// If 1 extra parameter was passed in, it contains overrides
|
||||
if (params.length === method.inputs.length + 1 && typeof (params[params.length - 1]) === "object") {
|
||||
tx = lib$3.shallowCopy(params.pop());
|
||||
if (tx.blockTag != null) {
|
||||
blockTag = tx.blockTag;
|
||||
}
|
||||
delete tx.blockTag;
|
||||
// Check for unexpected keys (e.g. using "gas" instead of "gasLimit")
|
||||
for (var key in tx) {
|
||||
if (!allowedTransactionKeys[key]) {
|
||||
logger.throwArgumentError(("unknown transaction override - " + key), "overrides", tx);
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.checkArgumentCount(params.length, method.inputs.length, "passed to contract");
|
||||
// Check overrides make sense
|
||||
["data", "to"].forEach(function (key) {
|
||||
if (tx[key] != null) {
|
||||
logger.throwError("cannot override " + key, lib.Logger.errors.UNSUPPORTED_OPERATION, { operation: key });
|
||||
function _populateTransaction(contract, fragment, args, overrides) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var resolved, tx, ro, leftovers;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
overrides = lib$3.shallowCopy(overrides);
|
||||
return [4 /*yield*/, lib$3.resolveProperties({
|
||||
args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),
|
||||
address: contract.resolvedAddress,
|
||||
overrides: (lib$3.resolveProperties(overrides) || {})
|
||||
})];
|
||||
case 1:
|
||||
resolved = _a.sent();
|
||||
tx = {
|
||||
data: contract.interface.encodeFunctionData(fragment, resolved.args),
|
||||
to: resolved.address
|
||||
};
|
||||
ro = resolved.overrides;
|
||||
if (ro.nonce != null) {
|
||||
tx.nonce = lib$2.BigNumber.from(ro.nonce).toNumber();
|
||||
}
|
||||
if (ro.gasLimit != null) {
|
||||
tx.gasLimit = lib$2.BigNumber.from(ro.gasLimit);
|
||||
}
|
||||
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 (tx.gasLimit == null && fragment.gas != null) {
|
||||
tx.gasLimit = lib$2.BigNumber.from(fragment.gas).add(21000);
|
||||
}
|
||||
// Remvoe the overrides
|
||||
delete overrides.nonce;
|
||||
delete overrides.gasLimit;
|
||||
delete overrides.gasPrice;
|
||||
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
|
||||
});
|
||||
}
|
||||
return [2 /*return*/, tx];
|
||||
}
|
||||
});
|
||||
// If the contract was just deployed, wait until it is minded
|
||||
if (contract.deployTransaction != null) {
|
||||
tx.to = contract._deployed(blockTag).then(function () {
|
||||
return contract.resolvedAddress;
|
||||
});
|
||||
}
|
||||
else {
|
||||
tx.to = contract.resolvedAddress;
|
||||
}
|
||||
return resolveAddresses(contract.signer || contract.provider, params, method.inputs).then(function (params) {
|
||||
tx.data = contract.interface.encodeFunctionData(method, params);
|
||||
if (method.constant || options.callStatic) {
|
||||
// Call (constant functions) always cost 0 ether
|
||||
if (options.estimate) {
|
||||
return Promise.resolve(lib$7.Zero);
|
||||
}
|
||||
if (!contract.provider && !contract.signer) {
|
||||
logger.throwError("call (constant functions) require a provider or signer", lib.Logger.errors.UNSUPPORTED_OPERATION, { operation: "call" });
|
||||
}
|
||||
// Check overrides make sense
|
||||
["gasLimit", "gasPrice", "value"].forEach(function (key) {
|
||||
if (tx[key] != null) {
|
||||
throw new Error("call cannot override " + key);
|
||||
}
|
||||
});
|
||||
if (options.transaction) {
|
||||
return lib$3.resolveProperties(tx);
|
||||
}
|
||||
return (contract.signer || contract.provider).call(tx, blockTag).then(function (value) {
|
||||
try {
|
||||
var result = contract.interface.decodeFunctionResult(method, value);
|
||||
if (method.outputs.length === 1) {
|
||||
result = result[0];
|
||||
});
|
||||
}
|
||||
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
|
||||
});
|
||||
}
|
||||
return result;
|
||||
tx.value = roValue;
|
||||
}
|
||||
catch (error) {
|
||||
if (error.code === lib.Logger.errors.CALL_EXCEPTION) {
|
||||
error.address = contract.address;
|
||||
error.args = params;
|
||||
error.transaction = tx;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
return [2 /*return*/, tx];
|
||||
}
|
||||
// Only computing the transaction estimate
|
||||
if (options.estimate) {
|
||||
if (!contract.provider && !contract.signer) {
|
||||
logger.throwError("estimate require a provider or signer", lib.Logger.errors.UNSUPPORTED_OPERATION, { operation: "estimateGas" });
|
||||
});
|
||||
});
|
||||
}
|
||||
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();
|
||||
}
|
||||
return (contract.signer || contract.provider).estimateGas(tx);
|
||||
}
|
||||
if (tx.gasLimit == null && method.gas != null) {
|
||||
tx.gasLimit = lib$2.BigNumber.from(method.gas).add(21000);
|
||||
}
|
||||
if (tx.value != null && !method.payable) {
|
||||
logger.throwArgumentError("contract method is not payable", "sendTransaction:" + method.format(), tx);
|
||||
}
|
||||
if (options.transaction) {
|
||||
return lib$3.resolveProperties(tx);
|
||||
}
|
||||
if (!contract.signer) {
|
||||
logger.throwError("sending a transaction requires a signer", lib.Logger.errors.UNSUPPORTED_OPERATION, { operation: "sendTransaction" });
|
||||
}
|
||||
return contract.signer.sendTransaction(tx).then(function (tx) {
|
||||
var wait = tx.wait.bind(tx);
|
||||
tx.wait = function (confirmations) {
|
||||
return wait(confirmations).then(function (receipt) {
|
||||
receipt.events = receipt.logs.map(function (log) {
|
||||
var event = lib$3.deepCopy(log);
|
||||
var parsed = null;
|
||||
try {
|
||||
parsed = contract.interface.parseLog(log);
|
||||
}
|
||||
catch (e) { }
|
||||
if (parsed) {
|
||||
event.args = parsed.args;
|
||||
event.decode = function (data, topics) {
|
||||
return _this.interface.decodeEventLog(parsed.eventFragment, data, topics);
|
||||
};
|
||||
event.event = parsed.name;
|
||||
event.eventSignature = parsed.signature;
|
||||
}
|
||||
event.removeListener = function () { return contract.provider; };
|
||||
event.getBlock = function () {
|
||||
return contract.provider.getBlock(receipt.blockHash);
|
||||
};
|
||||
event.getTransaction = function () {
|
||||
return contract.provider.getTransaction(receipt.transactionHash);
|
||||
};
|
||||
event.getTransactionReceipt = function () {
|
||||
return Promise.resolve(receipt);
|
||||
};
|
||||
return event;
|
||||
});
|
||||
return receipt;
|
||||
});
|
||||
};
|
||||
return tx;
|
||||
logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
|
||||
return [2 /*return*/, populate(contract, fragment, args, overrides)];
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
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;
|
||||
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" });
|
||||
}
|
||||
return [4 /*yield*/, populate(contract, fragment, args, overrides)];
|
||||
case 1:
|
||||
tx = _a.sent();
|
||||
return [4 /*yield*/, signerOrProvider.estimateGas(tx)];
|
||||
case 2: return [2 /*return*/, _a.sent()];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
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;
|
||||
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];
|
||||
overrides = lib$3.shallowCopy(args.pop());
|
||||
if (!overrides.blockTag) return [3 /*break*/, 2];
|
||||
return [4 /*yield*/, overrides.blockTag];
|
||||
case 1:
|
||||
blockTag = _a.sent();
|
||||
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)];
|
||||
case 3:
|
||||
tx = _a.sent();
|
||||
return [4 /*yield*/, signerOrProvider.call(tx, blockTag)];
|
||||
case 4:
|
||||
value = _a.sent();
|
||||
try {
|
||||
result = contract.interface.decodeFunctionResult(fragment, value);
|
||||
if (collapseSimple && fragment.outputs.length === 1) {
|
||||
result = result[0];
|
||||
}
|
||||
return [2 /*return*/, result];
|
||||
}
|
||||
catch (error) {
|
||||
if (error.code === lib.Logger.errors.CALL_EXCEPTION) {
|
||||
error.address = contract.address;
|
||||
error.args = args;
|
||||
error.transaction = tx;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
function buildSend(contract, fragment) {
|
||||
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, 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" });
|
||||
}
|
||||
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)];
|
||||
case 1:
|
||||
txRequest = _a.sent();
|
||||
return [4 /*yield*/, contract.signer.sendTransaction(txRequest)];
|
||||
case 2:
|
||||
tx = _a.sent();
|
||||
wait = tx.wait.bind(tx);
|
||||
tx.wait = function (confirmations) {
|
||||
return wait(confirmations).then(function (receipt) {
|
||||
receipt.events = receipt.logs.map(function (log) {
|
||||
var event = lib$3.deepCopy(log);
|
||||
var parsed = null;
|
||||
try {
|
||||
parsed = contract.interface.parseLog(log);
|
||||
}
|
||||
catch (e) { }
|
||||
// Successfully parsed the event log; include it
|
||||
if (parsed) {
|
||||
event.args = parsed.args;
|
||||
event.decode = function (data, topics) {
|
||||
return _this.interface.decodeEventLog(parsed.eventFragment, data, topics);
|
||||
};
|
||||
event.event = parsed.name;
|
||||
event.eventSignature = parsed.signature;
|
||||
}
|
||||
// Useful operations
|
||||
event.removeListener = function () { return contract.provider; };
|
||||
event.getBlock = function () {
|
||||
return contract.provider.getBlock(receipt.blockHash);
|
||||
};
|
||||
event.getTransaction = function () {
|
||||
return contract.provider.getTransaction(receipt.transactionHash);
|
||||
};
|
||||
event.getTransactionReceipt = function () {
|
||||
return Promise.resolve(receipt);
|
||||
};
|
||||
return event;
|
||||
});
|
||||
return receipt;
|
||||
});
|
||||
};
|
||||
return [2 /*return*/, tx];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
function buildDefault(contract, fragment, collapseSimple) {
|
||||
if (fragment.constant) {
|
||||
return buildCall(contract, fragment, collapseSimple);
|
||||
}
|
||||
return buildSend(contract, fragment);
|
||||
}
|
||||
function getEventTag(filter) {
|
||||
if (filter.address && (filter.topics == null || filter.topics.length === 0)) {
|
||||
return "*";
|
||||
}
|
||||
return (filter.address || "*") + "@" + (filter.topics ? filter.topics.join(":") : "");
|
||||
return (filter.address || "*") + "@" + (filter.topics ? filter.topics.map(function (topic) {
|
||||
if (Array.isArray(topic)) {
|
||||
return topic.join("|");
|
||||
}
|
||||
return topic;
|
||||
}).join(":") : "");
|
||||
}
|
||||
var RunningEvent = /** @class */ (function () {
|
||||
function RunningEvent(tag, filter) {
|
||||
@ -9718,22 +9876,23 @@
|
||||
}
|
||||
uniqueNames[name_1].push(signature);
|
||||
}
|
||||
// @TODO: This should take in fragment
|
||||
var run = runMethod(_this, signature, {});
|
||||
if (_this[signature] == null) {
|
||||
lib$3.defineReadOnly(_this, signature, run);
|
||||
lib$3.defineReadOnly(_this, signature, buildDefault(_this, fragment, true));
|
||||
}
|
||||
// We do not collapse simple calls on this bucket, which allows
|
||||
// frameworks to safely use this without introspection as well as
|
||||
// allows decoding error recovery.
|
||||
if (_this.functions[signature] == null) {
|
||||
lib$3.defineReadOnly(_this.functions, signature, run);
|
||||
lib$3.defineReadOnly(_this.functions, signature, buildDefault(_this, fragment, false));
|
||||
}
|
||||
if (_this.callStatic[signature] == null) {
|
||||
lib$3.defineReadOnly(_this.callStatic, signature, runMethod(_this, signature, { callStatic: true }));
|
||||
lib$3.defineReadOnly(_this.callStatic, signature, buildCall(_this, fragment, true));
|
||||
}
|
||||
if (_this.populateTransaction[signature] == null) {
|
||||
lib$3.defineReadOnly(_this.populateTransaction, signature, runMethod(_this, signature, { transaction: true }));
|
||||
lib$3.defineReadOnly(_this.populateTransaction, signature, buildPopulate(_this, fragment));
|
||||
}
|
||||
if (_this.estimateGas[signature] == null) {
|
||||
lib$3.defineReadOnly(_this.estimateGas, signature, runMethod(_this, signature, { estimate: true }));
|
||||
lib$3.defineReadOnly(_this.estimateGas, signature, buildEstimate(_this, fragment));
|
||||
}
|
||||
});
|
||||
Object.keys(uniqueNames).forEach(function (name) {
|
||||
@ -9868,7 +10027,11 @@
|
||||
if (eventName.topics && eventName.topics.length > 0) {
|
||||
// Is it a known topichash? (throws if no matching topichash)
|
||||
try {
|
||||
var fragment = this.interface.getEvent(eventName.topics[0]);
|
||||
var topic = eventName.topics[0];
|
||||
if (typeof (topic) !== "string") {
|
||||
throw new Error("invalid topic"); // @TODO: May happen for anonymous events
|
||||
}
|
||||
var fragment = this.interface.getEvent(topic);
|
||||
return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));
|
||||
}
|
||||
catch (error) { }
|
||||
@ -10077,6 +10240,7 @@
|
||||
lib$3.defineReadOnly(this, "interface", lib$3.getStatic((_newTarget), "getInterface")(contractInterface));
|
||||
lib$3.defineReadOnly(this, "signer", signer || null);
|
||||
}
|
||||
// @TODO: Future; rename to populteTransaction?
|
||||
ContractFactory.prototype.getDeployTransaction = function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
@ -17780,7 +17944,7 @@
|
||||
var _version$I = createCommonjsModule(function (module, exports) {
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "providers/5.0.0-beta.168";
|
||||
exports.version = "providers/5.0.0-beta.169";
|
||||
});
|
||||
|
||||
var _version$J = unwrapExports(_version$I);
|
||||
@ -18463,11 +18627,14 @@
|
||||
_a.label = 6;
|
||||
case 6:
|
||||
// This should never happen; every Provider sub-class should have
|
||||
// suggested a network by here (or thrown).
|
||||
// suggested a network by here (or have thrown).
|
||||
if (!network) {
|
||||
logger.throwError("no network detected", lib.Logger.errors.UNKNOWN_ERROR, {});
|
||||
}
|
||||
lib$3.defineReadOnly(this, "_network", network);
|
||||
// Possible this call stacked so do not call defineReadOnly again
|
||||
if (this._network == null) {
|
||||
lib$3.defineReadOnly(this, "_network", network);
|
||||
}
|
||||
_a.label = 7;
|
||||
case 7: return [2 /*return*/, this._network];
|
||||
}
|
||||
@ -19198,7 +19365,7 @@
|
||||
case 8: return [2 /*return*/, this.formatter.block(block)];
|
||||
}
|
||||
});
|
||||
}); }, { onceBlock: this })];
|
||||
}); }, { oncePoll: this })];
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -19256,7 +19423,7 @@
|
||||
case 4: return [2 /*return*/, this._wrapTransaction(tx)];
|
||||
}
|
||||
});
|
||||
}); }, { onceBlock: this })];
|
||||
}); }, { oncePoll: this })];
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -19312,7 +19479,7 @@
|
||||
case 4: return [2 /*return*/, receipt];
|
||||
}
|
||||
});
|
||||
}); }, { onceBlock: this })];
|
||||
}); }, { oncePoll: this })];
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -21690,6 +21857,15 @@
|
||||
console.warn("this should not happen");
|
||||
}
|
||||
};
|
||||
// This Provider does not actually poll, but we want to trigger
|
||||
// poll events for things that depend on them (like stalling for
|
||||
// block and transaction lookups)
|
||||
var fauxPoll = setInterval(function () {
|
||||
_this.emit("poll");
|
||||
}, 1000);
|
||||
if (fauxPoll.unref) {
|
||||
fauxPoll.unref();
|
||||
}
|
||||
return _this;
|
||||
}
|
||||
Object.defineProperty(WebSocketProvider.prototype, "pollingInterval", {
|
||||
@ -21780,8 +21956,10 @@
|
||||
var _this = this;
|
||||
switch (event.type) {
|
||||
case "block":
|
||||
this._subscribe("block", ["newHeads", {}], function (result) {
|
||||
_this.emit("block", lib$2.BigNumber.from(result.number).toNumber());
|
||||
this._subscribe("block", ["newHeads"], function (result) {
|
||||
var blockNumber = lib$2.BigNumber.from(result.number).toNumber();
|
||||
_this._emitted.block = blockNumber;
|
||||
_this.emit("block", blockNumber);
|
||||
});
|
||||
break;
|
||||
case "pending":
|
||||
@ -21813,13 +21991,16 @@
|
||||
// to keep an eye out for transactions we are watching for.
|
||||
// Starting a subscription for an event (i.e. "tx") that is already
|
||||
// running is (basically) a nop.
|
||||
this._subscribe("tx", ["newHeads", {}], function (result) {
|
||||
this._subscribe("tx", ["newHeads"], function (result) {
|
||||
_this._events.filter(function (e) { return (e.type === "tx"); }).forEach(emitReceipt_1);
|
||||
});
|
||||
break;
|
||||
}
|
||||
// Nothing is needed
|
||||
case "debug":
|
||||
case "poll":
|
||||
case "willPoll":
|
||||
case "didPoll":
|
||||
case "error":
|
||||
break;
|
||||
default:
|
||||
@ -22656,7 +22837,7 @@
|
||||
var _version$M = createCommonjsModule(function (module, exports) {
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "ethers/5.0.0-beta.188";
|
||||
exports.version = "ethers/5.0.0-beta.189";
|
||||
});
|
||||
|
||||
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.188";
|
||||
export declare const version = "ethers/5.0.0-beta.189";
|
||||
|
@ -1 +1 @@
|
||||
export const version = "ethers/5.0.0-beta.188";
|
||||
export const version = "ethers/5.0.0-beta.189";
|
||||
|
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.188";
|
||||
export declare const version = "ethers/5.0.0-beta.189";
|
||||
|
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "ethers/5.0.0-beta.188";
|
||||
exports.version = "ethers/5.0.0-beta.189";
|
||||
|
@ -52,7 +52,7 @@
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"tarballHash": "0x9033fa624792cf4313dbd794bf7376c35308de0296bfc3a410675a68a42a4ba8",
|
||||
"tarballHash": "0x8739796ac0fd3677ecf2f330f4526a9ae6c572b12a02f49044b271049efc2cec",
|
||||
"types": "./lib/index.d.ts",
|
||||
"version": "5.0.0-beta.188"
|
||||
"version": "5.0.0-beta.189"
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = "ethers/5.0.0-beta.188";
|
||||
export const version = "ethers/5.0.0-beta.189";
|
||||
|
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.141";
|
||||
export declare const version = "properties/5.0.0-beta.142";
|
||||
|
@ -1 +1 @@
|
||||
export const version = "properties/5.0.0-beta.141";
|
||||
export const version = "properties/5.0.0-beta.142";
|
||||
|
9
packages/properties/lib.esm/index.d.ts
vendored
9
packages/properties/lib.esm/index.d.ts
vendored
@ -1,17 +1,14 @@
|
||||
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 Similar<T> = {
|
||||
[P in keyof T]: T[P];
|
||||
};
|
||||
export declare type Resolvable<T> = {
|
||||
[P in keyof T]: T[P] | Promise<T[P]>;
|
||||
};
|
||||
export declare function resolveProperties<T>(object: Readonly<Resolvable<T>>): Promise<Similar<T>>;
|
||||
export declare function resolveProperties<T>(object: Readonly<Resolvable<T>>): Promise<T>;
|
||||
export declare function checkProperties(object: any, properties: {
|
||||
[name: string]: boolean;
|
||||
}): void;
|
||||
export declare function shallowCopy<T>(object: T): Similar<T>;
|
||||
export declare function deepCopy<T>(object: T): Similar<T>;
|
||||
export declare function shallowCopy<T>(object: T): T;
|
||||
export declare function deepCopy<T>(object: T): T;
|
||||
export declare class Description<T = any> {
|
||||
constructor(info: {
|
||||
[K in keyof T]: T[K];
|
||||
|
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.141";
|
||||
export declare const version = "properties/5.0.0-beta.142";
|
||||
|
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "properties/5.0.0-beta.141";
|
||||
exports.version = "properties/5.0.0-beta.142";
|
||||
|
9
packages/properties/lib/index.d.ts
vendored
9
packages/properties/lib/index.d.ts
vendored
@ -1,17 +1,14 @@
|
||||
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 Similar<T> = {
|
||||
[P in keyof T]: T[P];
|
||||
};
|
||||
export declare type Resolvable<T> = {
|
||||
[P in keyof T]: T[P] | Promise<T[P]>;
|
||||
};
|
||||
export declare function resolveProperties<T>(object: Readonly<Resolvable<T>>): Promise<Similar<T>>;
|
||||
export declare function resolveProperties<T>(object: Readonly<Resolvable<T>>): Promise<T>;
|
||||
export declare function checkProperties(object: any, properties: {
|
||||
[name: string]: boolean;
|
||||
}): void;
|
||||
export declare function shallowCopy<T>(object: T): Similar<T>;
|
||||
export declare function deepCopy<T>(object: T): Similar<T>;
|
||||
export declare function shallowCopy<T>(object: T): T;
|
||||
export declare function deepCopy<T>(object: T): T;
|
||||
export declare class Description<T = any> {
|
||||
constructor(info: {
|
||||
[K in keyof T]: T[K];
|
||||
|
@ -25,7 +25,7 @@
|
||||
"build": "tsc -p ./tsconfig.json",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"tarballHash": "0x9c1f11ef6475ade36f8c939bd988e3300141e3ff0aac1137a36edc268dffb902",
|
||||
"tarballHash": "0x19edcc26454f25babba8c45ce913401053a93690beb2dc5a38788bc6b0a0315f",
|
||||
"types": "./lib/index.d.ts",
|
||||
"version": "5.0.0-beta.141"
|
||||
"version": "5.0.0-beta.142"
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = "properties/5.0.0-beta.141";
|
||||
export const version = "properties/5.0.0-beta.142";
|
||||
|
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.168";
|
||||
export declare const version = "providers/5.0.0-beta.169";
|
||||
|
@ -1 +1 @@
|
||||
export const version = "providers/5.0.0-beta.168";
|
||||
export const version = "providers/5.0.0-beta.169";
|
||||
|
@ -205,11 +205,14 @@ export class BaseProvider extends Provider {
|
||||
network = yield this.detectNetwork();
|
||||
}
|
||||
// This should never happen; every Provider sub-class should have
|
||||
// suggested a network by here (or thrown).
|
||||
// suggested a network by here (or have thrown).
|
||||
if (!network) {
|
||||
logger.throwError("no network detected", Logger.errors.UNKNOWN_ERROR, {});
|
||||
}
|
||||
defineReadOnly(this, "_network", network);
|
||||
// Possible this call stacked so do not call defineReadOnly again
|
||||
if (this._network == null) {
|
||||
defineReadOnly(this, "_network", network);
|
||||
}
|
||||
}
|
||||
return this._network;
|
||||
});
|
||||
@ -732,7 +735,7 @@ export class BaseProvider extends Provider {
|
||||
return this.formatter.blockWithTransactions(block);
|
||||
}
|
||||
return this.formatter.block(block);
|
||||
}), { onceBlock: this });
|
||||
}), { oncePoll: this });
|
||||
});
|
||||
}
|
||||
getBlock(blockHashOrBlockTag) {
|
||||
@ -770,7 +773,7 @@ export class BaseProvider extends Provider {
|
||||
tx.confirmations = confirmations;
|
||||
}
|
||||
return this._wrapTransaction(tx);
|
||||
}), { onceBlock: this });
|
||||
}), { oncePoll: this });
|
||||
});
|
||||
}
|
||||
getTransactionReceipt(transactionHash) {
|
||||
@ -806,7 +809,7 @@ export class BaseProvider extends Provider {
|
||||
receipt.confirmations = confirmations;
|
||||
}
|
||||
return receipt;
|
||||
}), { onceBlock: this });
|
||||
}), { oncePoll: this });
|
||||
});
|
||||
}
|
||||
getLogs(filter) {
|
||||
|
@ -82,6 +82,15 @@ export class WebSocketProvider extends JsonRpcProvider {
|
||||
console.warn("this should not happen");
|
||||
}
|
||||
};
|
||||
// This Provider does not actually poll, but we want to trigger
|
||||
// poll events for things that depend on them (like stalling for
|
||||
// block and transaction lookups)
|
||||
const fauxPoll = setInterval(() => {
|
||||
this.emit("poll");
|
||||
}, 1000);
|
||||
if (fauxPoll.unref) {
|
||||
fauxPoll.unref();
|
||||
}
|
||||
}
|
||||
get pollingInterval() {
|
||||
return 0;
|
||||
@ -149,8 +158,10 @@ export class WebSocketProvider extends JsonRpcProvider {
|
||||
_startEvent(event) {
|
||||
switch (event.type) {
|
||||
case "block":
|
||||
this._subscribe("block", ["newHeads", {}], (result) => {
|
||||
this.emit("block", BigNumber.from(result.number).toNumber());
|
||||
this._subscribe("block", ["newHeads"], (result) => {
|
||||
const blockNumber = BigNumber.from(result.number).toNumber();
|
||||
this._emitted.block = blockNumber;
|
||||
this.emit("block", blockNumber);
|
||||
});
|
||||
break;
|
||||
case "pending":
|
||||
@ -182,13 +193,16 @@ export class WebSocketProvider extends JsonRpcProvider {
|
||||
// to keep an eye out for transactions we are watching for.
|
||||
// Starting a subscription for an event (i.e. "tx") that is already
|
||||
// running is (basically) a nop.
|
||||
this._subscribe("tx", ["newHeads", {}], (result) => {
|
||||
this._subscribe("tx", ["newHeads"], (result) => {
|
||||
this._events.filter((e) => (e.type === "tx")).forEach(emitReceipt);
|
||||
});
|
||||
break;
|
||||
}
|
||||
// Nothing is needed
|
||||
case "debug":
|
||||
case "poll":
|
||||
case "willPoll":
|
||||
case "didPoll":
|
||||
case "error":
|
||||
break;
|
||||
default:
|
||||
|
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.168";
|
||||
export declare const version = "providers/5.0.0-beta.169";
|
||||
|
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = "providers/5.0.0-beta.168";
|
||||
exports.version = "providers/5.0.0-beta.169";
|
||||
|
@ -280,11 +280,14 @@ var BaseProvider = /** @class */ (function (_super) {
|
||||
_a.label = 6;
|
||||
case 6:
|
||||
// This should never happen; every Provider sub-class should have
|
||||
// suggested a network by here (or thrown).
|
||||
// suggested a network by here (or have thrown).
|
||||
if (!network) {
|
||||
logger.throwError("no network detected", logger_1.Logger.errors.UNKNOWN_ERROR, {});
|
||||
}
|
||||
properties_1.defineReadOnly(this, "_network", network);
|
||||
// Possible this call stacked so do not call defineReadOnly again
|
||||
if (this._network == null) {
|
||||
properties_1.defineReadOnly(this, "_network", network);
|
||||
}
|
||||
_a.label = 7;
|
||||
case 7: return [2 /*return*/, this._network];
|
||||
}
|
||||
@ -1015,7 +1018,7 @@ var BaseProvider = /** @class */ (function (_super) {
|
||||
case 8: return [2 /*return*/, this.formatter.block(block)];
|
||||
}
|
||||
});
|
||||
}); }, { onceBlock: this })];
|
||||
}); }, { oncePoll: this })];
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -1073,7 +1076,7 @@ var BaseProvider = /** @class */ (function (_super) {
|
||||
case 4: return [2 /*return*/, this._wrapTransaction(tx)];
|
||||
}
|
||||
});
|
||||
}); }, { onceBlock: this })];
|
||||
}); }, { oncePoll: this })];
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -1129,7 +1132,7 @@ var BaseProvider = /** @class */ (function (_super) {
|
||||
case 4: return [2 /*return*/, receipt];
|
||||
}
|
||||
});
|
||||
}); }, { onceBlock: this })];
|
||||
}); }, { oncePoll: this })];
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -127,6 +127,15 @@ var WebSocketProvider = /** @class */ (function (_super) {
|
||||
console.warn("this should not happen");
|
||||
}
|
||||
};
|
||||
// This Provider does not actually poll, but we want to trigger
|
||||
// poll events for things that depend on them (like stalling for
|
||||
// block and transaction lookups)
|
||||
var fauxPoll = setInterval(function () {
|
||||
_this.emit("poll");
|
||||
}, 1000);
|
||||
if (fauxPoll.unref) {
|
||||
fauxPoll.unref();
|
||||
}
|
||||
return _this;
|
||||
}
|
||||
Object.defineProperty(WebSocketProvider.prototype, "pollingInterval", {
|
||||
@ -217,8 +226,10 @@ var WebSocketProvider = /** @class */ (function (_super) {
|
||||
var _this = this;
|
||||
switch (event.type) {
|
||||
case "block":
|
||||
this._subscribe("block", ["newHeads", {}], function (result) {
|
||||
_this.emit("block", bignumber_1.BigNumber.from(result.number).toNumber());
|
||||
this._subscribe("block", ["newHeads"], function (result) {
|
||||
var blockNumber = bignumber_1.BigNumber.from(result.number).toNumber();
|
||||
_this._emitted.block = blockNumber;
|
||||
_this.emit("block", blockNumber);
|
||||
});
|
||||
break;
|
||||
case "pending":
|
||||
@ -250,13 +261,16 @@ var WebSocketProvider = /** @class */ (function (_super) {
|
||||
// to keep an eye out for transactions we are watching for.
|
||||
// Starting a subscription for an event (i.e. "tx") that is already
|
||||
// running is (basically) a nop.
|
||||
this._subscribe("tx", ["newHeads", {}], function (result) {
|
||||
this._subscribe("tx", ["newHeads"], function (result) {
|
||||
_this._events.filter(function (e) { return (e.type === "tx"); }).forEach(emitReceipt_1);
|
||||
});
|
||||
break;
|
||||
}
|
||||
// Nothing is needed
|
||||
case "debug":
|
||||
case "poll":
|
||||
case "willPoll":
|
||||
case "didPoll":
|
||||
case "error":
|
||||
break;
|
||||
default:
|
||||
|
@ -56,7 +56,7 @@
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"tarballHash": "0x04e34eb73e41646f6dd85015b26d8aa77676d53896f60341d34809deb87f701a",
|
||||
"tarballHash": "0x2c7517b23e6eb918b668110c930001103934b54b78a357e775e232be9dfc7c25",
|
||||
"types": "./lib/index.d.ts",
|
||||
"version": "5.0.0-beta.168"
|
||||
"version": "5.0.0-beta.169"
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = "providers/5.0.0-beta.168";
|
||||
export const version = "providers/5.0.0-beta.169";
|
||||
|
Loading…
x
Reference in New Issue
Block a user