Skip to content

Commit b7fc74a

Browse files
committed
Updted dist files.
1 parent b38a36b commit b7fc74a

9 files changed

+311
-23
lines changed

dist/ethers-contracts.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,27 @@ function Contract(addressOrName, contractInterface, signerOrProvider) {
247247
log.removeListener = function() {
248248
provider.removeListener(eventInfo.topics, handleEvent);
249249
}
250+
251+
var poller = function(func, key) {
252+
return new Promise(function(resolve, reject) {
253+
function poll() {
254+
provider[func](log[key]).then(function(value) {
255+
if (value == null) {
256+
setTimeout(poll, 1000);
257+
return;
258+
}
259+
resolve(value);
260+
}, function(error) {
261+
reject(error);
262+
});
263+
}
264+
poll();
265+
});
266+
}
267+
268+
log.getBlock = function() { return poller('getBlock', 'blockHash'); }
269+
log.getTransaction = function() { return poller('getTransaction', 'transactionHash'); }
270+
log.getTransactionReceipt = function() { return poller('getTransactionReceipt', 'transactionHash'); }
250271
log.eventSignature = eventInfo.signature;
251272

252273
eventCallback.apply(log, Array.prototype.slice.call(result));

dist/ethers-contracts.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ethers-providers.js

Lines changed: 124 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5005,13 +5005,53 @@ utils.defineProperty(EtherscanProvider.prototype, 'perform', function(method, pa
50055005
url += apiKey;
50065006
return Provider.fetchJSON(url, null, getResult);
50075007

5008+
case 'getEtherPrice':
5009+
if (this.name !== 'homestead') { return Promise.resolve(0.0); }
5010+
url += '/api?module=stats&action=ethprice';
5011+
url += apiKey;
5012+
return Provider.fetchJSON(url, null, getResult).then(function(result) {
5013+
return parseFloat(result.ethusd);
5014+
});
5015+
50085016
default:
50095017
break;
50105018
}
50115019

50125020
return Promise.reject(new Error('not implemented - ' + method));
50135021
});
50145022

5023+
utils.defineProperty(EtherscanProvider.prototype, 'getHistory', function(addressOrName, startBlock, endBlock) {
5024+
5025+
var url = this.baseUrl;
5026+
5027+
var apiKey = '';
5028+
if (this.apiKey) { apiKey += '&apikey=' + this.apiKey; }
5029+
5030+
if (startBlock == null) { startBlock = 0; }
5031+
if (endBlock == null) { endBlock = 99999999; }
5032+
5033+
return this.resolveName(addressOrName).then(function(address) {
5034+
url += '/api?module=account&action=txlist&address=' + address;
5035+
url += '&fromBlock=' + startBlock;
5036+
url += '&endBlock=' + endBlock;
5037+
url += '&sort=asc';
5038+
5039+
return Provider.fetchJSON(url, null, getResult).then(function(result) {
5040+
var output = [];
5041+
result.forEach(function(tx) {
5042+
['contractAddress', 'to'].forEach(function(key) {
5043+
if (tx[key] == '') { delete tx[key]; }
5044+
});
5045+
if (tx.creates == null && tx.contractAddress != null) {
5046+
tx.creates = tx.contractAddress;
5047+
}
5048+
output.push(Provider._formatters.checkTransactionResponse(tx));
5049+
});
5050+
return output;
5051+
});
5052+
});
5053+
});
5054+
50155055
module.exports = EtherscanProvider;;
50165056

50175057
},{"./provider.js":24,"ethers-utils/convert.js":6,"ethers-utils/properties.js":9}],19:[function(require,module,exports){
@@ -5160,6 +5200,13 @@ function InfuraProvider(network, apiAccessToken) {
51605200
}
51615201
JsonRpcProvider.inherits(InfuraProvider);
51625202

5203+
utils.defineProperty(InfuraProvider.prototype, '_startPending', function() {
5204+
console.log('WARNING: INFURA does not support pending filters');
5205+
});
5206+
5207+
utils.defineProperty(InfuraProvider.prototype, '_stopPending', function() {
5208+
});
5209+
51635210
module.exports = InfuraProvider;
51645211

51655212
},{"./json-rpc-provider":22,"./provider":24,"ethers-utils/properties.js":9}],22:[function(require,module,exports){
@@ -5179,6 +5226,15 @@ var utils = (function() {
51795226
}
51805227
})();
51815228

5229+
// @TODO: Move this to utils
5230+
function timer(timeout) {
5231+
return new Promise(function(resolve) {
5232+
setTimeout(function() {
5233+
resolve();
5234+
}, timeout);
5235+
});
5236+
}
5237+
51825238
function getResult(payload) {
51835239
if (payload.error) {
51845240
var error = new Error(payload.error.message);
@@ -5322,6 +5378,48 @@ utils.defineProperty(JsonRpcProvider.prototype, 'perform', function(method, para
53225378
return Promise.reject(new Error('not implemented - ' + method));
53235379
});
53245380

5381+
utils.defineProperty(JsonRpcProvider.prototype, '_startPending', function() {
5382+
if (this._pendingFilter != null) { return; }
5383+
var self = this;
5384+
5385+
var pendingFilter = this.send('eth_newPendingTransactionFilter', []);
5386+
this._pendingFilter = pendingFilter;
5387+
5388+
pendingFilter.then(function(filterId) {
5389+
function poll() {
5390+
self.send('eth_getFilterChanges', [ filterId ]).then(function(hashes) {
5391+
if (self._pendingFilter != pendingFilter) { return; }
5392+
5393+
var seq = Promise.resolve();
5394+
hashes.forEach(function(hash) {
5395+
seq = seq.then(function() {
5396+
return self.getTransaction(hash).then(function(tx) {
5397+
self.emit('pending', tx);
5398+
});
5399+
});
5400+
});
5401+
5402+
return seq.then(function() {
5403+
return timer(1000);
5404+
});
5405+
}).then(function() {
5406+
if (self._pendingFilter != pendingFilter) {
5407+
self.send('eth_uninstallFilter', [ filterIf ]);
5408+
return;
5409+
}
5410+
setTimeout(function() { poll(); }, 0);
5411+
});
5412+
}
5413+
poll();
5414+
5415+
return filterId;
5416+
});
5417+
});
5418+
5419+
utils.defineProperty(JsonRpcProvider.prototype, '_stopPending', function() {
5420+
this._pendingFilter = null;
5421+
});
5422+
53255423
module.exports = JsonRpcProvider;
53265424

53275425
},{"./provider.js":24,"ethers-utils/convert":6,"ethers-utils/properties":9}],23:[function(require,module,exports){
@@ -5586,7 +5684,6 @@ function checkTransaction(transaction) {
55865684
}
55875685

55885686
if (!transaction.raw) {
5589-
55905687
// Very loose providers (e.g. TestRPC) don't provide a signature or raw
55915688
if (transaction.v && transaction.r && transaction.s) {
55925689
var raw = [
@@ -6089,7 +6186,7 @@ utils.defineProperty(Provider.prototype, 'sendTransaction', function(signedTrans
60896186

60906187
utils.defineProperty(Provider.prototype, 'call', function(transaction) {
60916188
var self = this;
6092-
return this._resolveNames(transaction, ['to', 'from']).then(function(transaction) {
6189+
return this._resolveNames(transaction, [ 'to', 'from' ]).then(function(transaction) {
60936190
var params = { transaction: checkTransactionRequest(transaction) };
60946191
return self.perform('call', params).then(function(result) {
60956192
return utils.hexlify(result);
@@ -6099,7 +6196,7 @@ utils.defineProperty(Provider.prototype, 'call', function(transaction) {
60996196

61006197
utils.defineProperty(Provider.prototype, 'estimateGas', function(transaction) {
61016198
var self = this;
6102-
return this._resolveNames(transaction, ['to', 'from']).then(function(transaction) {
6199+
return this._resolveNames(transaction, [ 'to', 'from' ]).then(function(transaction) {
61036200
var params = {transaction: checkTransactionRequest(transaction)};
61046201
return self.perform('estimateGas', params).then(function(result) {
61056202
return utils.bigNumberify(result);
@@ -6305,6 +6402,9 @@ function getEventString(object) {
63056402
if (object === 'block') {
63066403
return 'block';
63076404

6405+
} else if (object === 'pending') {
6406+
return 'pending';
6407+
63086408
} else if (utils.isHexString(object)) {
63096409
if (object.length === 66) {
63106410
return 'tx:' + object;
@@ -6332,6 +6432,9 @@ function parseEventString(string) {
63326432
} else if (string === 'block') {
63336433
return {type: 'block'};
63346434

6435+
} else if (string === 'pending') {
6436+
return {type: 'pending'};
6437+
63356438
} else if (string.substring(0, 8) === 'address:') {
63366439
return {type: 'address', address: string.substring(8)};
63376440

@@ -6351,17 +6454,26 @@ function parseEventString(string) {
63516454
throw new Error('invalid event string');
63526455
}
63536456

6457+
utils.defineProperty(Provider.prototype, '_startPending', function() {
6458+
console.log('WARNING: this provider does not support pending events');
6459+
});
6460+
6461+
utils.defineProperty(Provider.prototype, '_stopPending', function() {
6462+
});
6463+
63546464
utils.defineProperty(Provider.prototype, 'on', function(eventName, listener) {
63556465
var key = getEventString(eventName);
63566466
if (!this._events[key]) { this._events[key] = []; }
63576467
this._events[key].push({eventName: eventName, listener: listener, type: 'on'});
6468+
if (key === 'pending') { this._startPending(); }
63586469
this.polling = true;
63596470
});
63606471

63616472
utils.defineProperty(Provider.prototype, 'once', function(eventName, listener) {
63626473
var key = getEventString(eventName);
63636474
if (!this._events[key]) { this._events[key] = []; }
63646475
this._events[key].push({eventName: eventName, listener: listener, type: 'once'});
6476+
if (key === 'pending') { this._startPending(); }
63656477
this.polling = true;
63666478
});
63676479

@@ -6386,7 +6498,11 @@ utils.defineProperty(Provider.prototype, 'emit', function(eventName) {
63866498
}
63876499
}
63886500

6389-
if (listeners.length === 0) { delete this._events[key]; }
6501+
if (listeners.length === 0) {
6502+
delete this._events[key];
6503+
if (key === 'pending') { this._stopPending(); }
6504+
}
6505+
63906506
if (this.listenerCount() === 0) { this.polling = false; }
63916507
});
63926508

@@ -6431,6 +6547,10 @@ utils.defineProperty(Provider.prototype, 'removeListener', function(eventName, l
64316547
if (this.listenerCount() === 0) { this.polling = false; }
64326548
});
64336549

6550+
utils.defineProperty(Provider, '_formatters', {
6551+
checkTransactionResponse: checkTransaction
6552+
});
6553+
64346554
module.exports = Provider;
64356555

64366556
},{"./networks.json":23,"ethers-utils/address":3,"ethers-utils/bignumber":4,"ethers-utils/contract-address":5,"ethers-utils/convert":6,"ethers-utils/namehash":8,"ethers-utils/properties":9,"ethers-utils/rlp":10,"ethers-utils/utf8":13,"inherits":14,"xmlhttprequest":17}]},{},[20]);

dist/ethers-providers.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ethers-wallet.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11291,13 +11291,16 @@ utils.defineProperty(Wallet, 'verifyMessage', function(message, signature) {
1129111291
signature = utils.hexlify(signature);
1129211292
if (signature.length != 132) { throw new Error('invalid signature'); }
1129311293
var digest = getHash(message);
11294-
var recoveryParam = parseInt(signature.substring(130), 16) - 27;
11294+
11295+
var recoveryParam = parseInt(signature.substring(130), 16);
11296+
if (recoveryParam >= 27) { recoveryParam -= 27; }
1129511297
if (recoveryParam < 0) { throw new Error('invalid signature'); }
11298+
1129611299
return SigningKey.recover(
1129711300
digest,
1129811301
signature.substring(0, 66),
1129911302
'0x' + signature.substring(66, 130),
11300-
parseInt(signature.substring(130), 16) - 27
11303+
recoveryParam
1130111304
);
1130211305
});
1130311306

dist/ethers-wallet.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)