Skip to content

Commit

Permalink
rebuild 4.0.3
Browse files Browse the repository at this point in the history
Merge commit '3736a1571480a0f69d632d6fc3bde549cbe46162' into fix/tslib

* commit '3736a1571480a0f69d632d6fc3bde549cbe46162': (41 commits)
  Updated dist files.
  Added automatic event parsing for contract transaction receipts from tx.wait.
  Added ability to wait for a specific number of confirmations (ethers-io#229).
  Fix for geth-etc (official geth is fine), which returns Receipts before the blockHash is synced to the database.
  Fixed confirmations tests and bootstrap fast blockNumber.
  Added confirmations to TransactionResponse (ethers-io#156, ethers-io#238).
  Fixed nested errors for providers that were masking true error (ethers-io#292).
  Updated dist files.
  Added version to errors.
  Fixed French and Spanish for browsers without Uint8Array.forEach.
  Added French and Spanish includes to phantomjs test page.
  Increased timeout for querying npm registry.
  Updated dist files.
  Added French and Spanish wordlist dist files.
  Added French and Spanish BIP-39 wordlists (ethers-io#191).
  Added support for JSON serialized BigNumbers in the constructor (ethers-io#288).
  Fixed scrypt for long passwords (ethers-io#223).
  Updated dist files.
  Added chainId as supported override for contract transactions.
  Fixed wildcard events and made nested events more robust (ethers-io#289).
  ...

Conflicts:
	dist/ethers.min.js
	dist/ethers.min.js.map
	package-lock.json
  • Loading branch information
asnov committed Oct 14, 2018
2 parents a396438 + 3736a15 commit 66f8944
Show file tree
Hide file tree
Showing 52 changed files with 5,319 additions and 279 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Complete Ethereum wallet implementation and utilities in JavaScript (and TypeScr
Keep Updated
------------

For the latest news and advisories, please follow (@ethersproject)[https://twitter.com/ethersproject] on Twitter as well as this GitHub project.
For the latest news and advisories, please follow [@ethersproject](https://twitter.com/ethersproject) on Twitter as well as this GitHub project.


Installing
Expand Down
2 changes: 1 addition & 1 deletion _version.d.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export declare const version = "4.0.0-beta.15";
export declare const version = "4.0.3";
2 changes: 1 addition & 1 deletion _version.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.version = "4.0.0-beta.15";
exports.version = "4.0.3";
14 changes: 10 additions & 4 deletions contract.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,21 @@ export declare type EventFilter = {
topics?: Array<string>;
};
export interface Event extends Log {
args: Array<any>;
decode: (data: string, topics?: Array<string>) => any;
event: string;
eventSignature: string;
args?: Array<any>;
decode?: (data: string, topics?: Array<string>) => any;
event?: string;
eventSignature?: string;
removeListener: () => void;
getBlock: () => Promise<Block>;
getTransaction: () => Promise<TransactionResponse>;
getTransactionReceipt: () => Promise<TransactionReceipt>;
}
export interface ContractReceipt extends TransactionReceipt {
events?: Array<Event>;
}
export interface ContractTransaction extends TransactionResponse {
wait(confirmations?: number): Promise<ContractReceipt>;
}
export declare class VoidSigner extends Signer {
readonly address: string;
constructor(address: string, provider: Provider);
Expand Down
95 changes: 73 additions & 22 deletions contract.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ var VoidSigner = /** @class */ (function (_super) {
}(abstract_signer_1.Signer));
exports.VoidSigner = VoidSigner;
var allowedTransactionKeys = {
data: true, from: true, gasLimit: true, gasPrice: true, nonce: true, to: true, value: true
chainId: true, data: true, from: true, gasLimit: true, gasPrice: true, nonce: true, to: true, value: true
};
// Recursively replaces ENS names with promises to resolve the name and
// stalls until all promises have returned
Expand Down Expand Up @@ -90,6 +90,7 @@ function resolveAddresses(provider, value, paramType) {
function runMethod(contract, functionName, estimateOnly) {
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];
Expand Down Expand Up @@ -190,15 +191,47 @@ function runMethod(contract, functionName, estimateOnly) {
if (tx.from != null) {
errors.throwError('cannot override from in a transaction', errors.UNSUPPORTED_OPERATION, { operation: 'sendTransaction' });
}
return contract.signer.sendTransaction(tx);
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 = _this.interface.parseLog(log);
if (parsed) {
event.args = parsed.values;
event.decode = parsed.decode;
event.event = parsed.name;
event.eventSignature = parsed.signature;
}
event.removeListener = function () { return _this.provider; };
event.getBlock = function () {
return _this.provider.getBlock(receipt.blockHash);
};
event.getTransaction = function () {
return _this.provider.getTransaction(receipt.transactionHash);
};
event.getTransactionReceipt = function () {
return Promise.resolve(receipt);
};
return event;
});
return receipt;
});
};
return tx;
});
}
throw new Error('invalid type - ' + method.type);
return null;
});
};
}
function getEventTag(filter) {
return (filter.address || '') + (filter.topics ? filter.topics.join(':') : '');
if (filter.address && (filter.topics == null || filter.topics.length === 0)) {
return '*';
}
return (filter.address || '*') + '@' + (filter.topics ? filter.topics.join(':') : '');
}
var Contract = /** @class */ (function () {
// https://github.com/Microsoft/TypeScript/issues/5453
Expand Down Expand Up @@ -350,8 +383,15 @@ var Contract = /** @class */ (function () {
// Listen for any event
if (eventName === '*') {
return {
decode: function (log) {
return [_this.interface.parseLog(log)];
prepareEvent: function (e) {
var parsed = _this.interface.parseLog(e);
if (parsed) {
e.args = parsed.values;
e.decode = parsed.decode;
e.event = parsed.name;
e.eventSignature = parsed.signature;
}
return [e];
},
eventTag: '*',
filter: { address: this.address },
Expand All @@ -370,8 +410,12 @@ var Contract = /** @class */ (function () {
topics: [event_1.topic]
};
return {
decode: function (log) {
return event_1.decode(log.data, log.topics);
prepareEvent: function (e) {
var args = event_1.decode(e.data, e.topics);
e.args = args;
var result = Array.prototype.slice.call(args);
result.push(e);
return result;
},
event: event_1,
eventTag: getEventTag(filter_1),
Expand All @@ -386,23 +430,27 @@ var Contract = /** @class */ (function () {
var event = null;
if (eventName.topics && eventName.topics[0]) {
filter.topics = eventName.topics;
for (var name in this.interface.events) {
if (name.indexOf('(') === -1) {
for (var name_1 in this.interface.events) {
if (name_1.indexOf('(') === -1) {
continue;
}
var e = this.interface.events[name];
var e = this.interface.events[name_1];
if (e.topic === eventName.topics[0].toLowerCase()) {
event = e;
break;
}
}
}
return {
decode: function (log) {
if (event) {
return event.decode(log.data, log.topics);
prepareEvent: function (e) {
if (!event) {
return [e];
}
return [log];
var args = event.decode(e.data, e.topics);
e.args = args;
var result = Array.prototype.slice.call(args);
result.push(e);
return result;
},
event: event,
eventTag: getEventTag(filter),
Expand All @@ -415,18 +463,18 @@ var Contract = /** @class */ (function () {
errors.throwError('events require a provider or a signer with a provider', errors.UNSUPPORTED_OPERATION, { operation: 'once' });
}
var wrappedListener = function (log) {
var decoded = Array.prototype.slice.call(eventFilter.decode(log));
var event = properties_1.deepCopy(log);
event.args = decoded;
event.decode = eventFilter.event.decode;
event.event = eventFilter.event.name;
event.eventSignature = eventFilter.event.signature;
var args = eventFilter.prepareEvent(event);
if (eventFilter.event) {
event.decode = eventFilter.event.decode;
event.event = eventFilter.event.name;
event.eventSignature = eventFilter.event.signature;
}
event.removeListener = function () { _this.removeListener(eventFilter.filter, listener); };
event.getBlock = function () { return _this.provider.getBlock(log.blockHash); };
event.getTransaction = function () { return _this.provider.getTransactionReceipt(log.transactionHash); };
event.getTransaction = function () { return _this.provider.getTransaction(log.transactionHash); };
event.getTransactionReceipt = function () { return _this.provider.getTransactionReceipt(log.transactionHash); };
decoded.push(event);
_this.emit.apply(_this, [eventFilter.filter].concat(decoded));
_this.emit.apply(_this, [eventFilter.filter].concat(args));
};
this.provider.on(eventFilter.filter, wrappedListener);
this._events.push({ eventFilter: eventFilter, listener: listener, wrappedListener: wrappedListener, once: once });
Expand Down Expand Up @@ -454,13 +502,16 @@ var Contract = /** @class */ (function () {
var result = false;
var eventFilter = this._getEventFilter(eventName);
this._events = this._events.filter(function (event) {
// Not this event (keep it for later)
if (event.eventFilter.eventTag !== eventFilter.eventTag) {
return true;
}
// Call the callback in the next event loop
setTimeout(function () {
event.listener.apply(_this, args);
}, 0);
result = true;
// Reschedule it if it not "once"
return !(event.once);
});
return result;
Expand Down
Loading

0 comments on commit 66f8944

Please sign in to comment.