cc-zos
Version:
Command-line interface for the ZeppelinOS smart contract platform
43 lines (36 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _ccZosLib = require('cc-zos-lib');
const log = new _ccZosLib.Logger('EventsFilter');
const TIMEOUT_ERROR = 'Event filter promise timed out';
class EventsFilter {
constructor(timeout) {
this.timeout = timeout || (process.env.NODE_ENV === 'test' ? 2000 : 60000);
}
async call(contract, eventName = 'allEvents') {
log.info(`Looking for all the '${eventName}' events for contract ${contract.address}`);
const promise = new Promise((resolve, reject) => {
const event = contract[eventName]({}, { fromBlock: 0, toBlock: 'latest' });
event.get((error, result) => error ? reject(error) : resolve(result));
});
return this._promiseTimeout(promise);
}
async _promiseTimeout(promise) {
return new Promise((resolve, reject) => {
const timer = setTimeout(() => {
clearTimeout(timer);
reject(TIMEOUT_ERROR);
}, this.timeout);
promise.then(res => {
clearTimeout(timer);
resolve(res);
}).catch(err => {
clearTimeout(timer);
reject(err);
});
});
}
}
exports.default = EventsFilter;