send-crypto
Version:
A minimal JavaScript library / wallet for sending crypto assets
84 lines (81 loc) • 4.82 kB
JavaScript
// Modified from web3-core-method
/*
This file is part of web3.js.
web3.js is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
web3.js is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @file PromiEvent.js
* @author Fabian Vogelsteller <fabian@ethereum.org>, Samuel Furter <samuel@ethereum.org>
* @date 2018
*/
// tslint:disable: no-any
import { EventEmitter } from "events";
class InternalPromiEvent {
[Symbol.toStringTag];
promise;
// @ts-ignore no initializer because of proxyHandler
resolve;
// @ts-ignore no initializer because of proxyHandler
reject;
eventEmitter;
// @ts-ignore no initializer because of proxyHandler
emit;
// @ts-ignore no initializer because of proxyHandler
removeListener;
// @ts-ignore no initializer because of proxyHandler
on;
// @ts-ignore no initializer because of proxyHandler
once;
// @ts-ignore no initializer because of proxyHandler
then;
// @ts-ignore no initializer because of proxyHandler
catch;
// @ts-ignore no initializer because of proxyHandler
finally;
// @ts-ignore no initializer because of proxyHandler
listeners;
// @ts-ignore no initializer because of proxyHandler
eventNames;
/**
* @constructor
*/
constructor() {
// tslint:disable-next-line: promise-must-complete
this.promise = new Promise((resolve, reject) => {
this.resolve = resolve;
this.reject = reject;
});
this.eventEmitter = new EventEmitter();
return new Proxy(this, {
get: this.proxyHandler,
});
}
/**
* Proxy handler to call the promise or eventEmitter methods
*/
proxyHandler(target, name) {
if (name === "resolve" || name === "reject") {
return target[name];
}
if (name === "then") {
return target.promise.then.bind(target.promise);
}
if (name === "catch") {
return target.promise.catch.bind(target.promise);
}
if (target.eventEmitter[name]) {
return target.eventEmitter[name];
}
}
}
export const newPromiEvent = () => new InternalPromiEvent();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcHJvbWlFdmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFFakM7Ozs7Ozs7Ozs7Ozs7OztFQWVFO0FBQ0Y7Ozs7R0FJRztBQUVILHlCQUF5QjtBQUV6QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXRDLE1BQU0sa0JBQWtCO0lBQ0osQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQVk7SUFDaEMsT0FBTyxDQUFhO0lBQ3BDLG9EQUFvRDtJQUM3QyxPQUFPLENBQXNCO0lBQ3BDLG9EQUFvRDtJQUM3QyxNQUFNLENBQXlCO0lBQ3RCLFlBQVksQ0FBZTtJQUUzQyxvREFBb0Q7SUFDcEMsSUFBSSxDQUF1QjtJQUMzQyxvREFBb0Q7SUFDcEMsY0FBYyxDQUFpQztJQUMvRCxvREFBb0Q7SUFDcEMsRUFBRSxDQUdSO0lBQ1Ysb0RBQW9EO0lBQ3BDLElBQUksQ0FHVjtJQUNWLG9EQUFvRDtJQUNwQyxJQUFJLENBQXFCO0lBQ3pDLG9EQUFvRDtJQUNwQyxLQUFLLENBQXNCO0lBQzNDLG9EQUFvRDtJQUNwQyxPQUFPLENBQXdCO0lBQy9DLG9EQUFvRDtJQUNwQyxTQUFTLENBQTRCO0lBQ3JELG9EQUFvRDtJQUNwQyxVQUFVLENBQTZCO0lBRXZEOztPQUVHO0lBQ0g7UUFDSSxrREFBa0Q7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQXlDLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdkMsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbkIsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ3pCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVksQ0FBQyxNQUFxQixFQUFFLElBQVk7UUFDbkQsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDekMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkI7UUFFRCxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDakIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25EO1FBRUQsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQ2xCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwRDtRQUVELElBQUssTUFBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwQyxPQUFRLE1BQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0M7SUFDTCxDQUFDO0NBQ0o7QUFJRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsR0FBTSxFQUFFLENBQ2pDLElBQUksa0JBQWtCLEVBQXNCLENBQUMifQ==