30 lines
3.5 KiB
JavaScript
30 lines
3.5 KiB
JavaScript
|
"use strict";
|
||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const emittery_1 = __importDefault(require("emittery"));
|
||
|
class AsyncEventEmitter extends emittery_1.default {
|
||
|
constructor({ captureRejections = false } = {}) {
|
||
|
super();
|
||
|
this.captureRejections = captureRejections;
|
||
|
}
|
||
|
once(event, listener) {
|
||
|
if (!listener)
|
||
|
return super.once(event);
|
||
|
const unsubscribe = this.on(event, async (data) => {
|
||
|
unsubscribe();
|
||
|
return listener(data);
|
||
|
});
|
||
|
return Promise.resolve();
|
||
|
}
|
||
|
emit(eventName, ...args) {
|
||
|
const emitPromise = super.emit(eventName, ...args);
|
||
|
if (this.captureRejections && eventName !== 'error')
|
||
|
emitPromise.catch(reason => this.emit('error', reason));
|
||
|
return emitPromise;
|
||
|
}
|
||
|
}
|
||
|
exports.default = AsyncEventEmitter;
|
||
|
module.exports = exports.default;
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtZXZlbnQtZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hc3luYy1ldmVudC1lbWl0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsd0RBQWdDO0FBRWhDLE1BQXFCLGlCQUFrQixTQUFRLGtCQUFRO0lBR25ELFlBQW9CLEVBQUUsaUJBQWlCLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRTtRQUNsRCxLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztJQUMvQyxDQUFDO0lBRU0sSUFBSSxDQUFFLEtBQWEsRUFBRSxRQUFtQjtRQUMzQyxJQUFJLENBQUMsUUFBUTtZQUNULE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7WUFDNUMsV0FBVyxFQUFFLENBQUM7WUFFZCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTSxJQUFJLENBQUUsU0FBaUIsRUFBRSxHQUFHLElBQWU7UUFDOUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUVuRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxTQUFTLEtBQUssT0FBTztZQUMvQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUU1RCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0NBQ0o7QUE5QkQsb0NBOEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVtaXR0ZXJ5IGZyb20gJ2VtaXR0ZXJ5JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXN5bmNFdmVudEVtaXR0ZXIgZXh0ZW5kcyBFbWl0dGVyeSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXB0dXJlUmVqZWN0aW9uczogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoeyBjYXB0dXJlUmVqZWN0aW9ucyA9IGZhbHNlIH0gPSB7fSkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuY2FwdHVyZVJlamVjdGlvbnMgPSBjYXB0dXJlUmVqZWN0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgb25jZSAoZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI/OiBGdW5jdGlvbik6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGlmICghbGlzdGVuZXIpXG4gICAgICAgICAgICByZXR1cm4gc3VwZXIub25jZShldmVudCk7XG5cbiAgICAgICAgY29uc3QgdW5zdWJzY3JpYmUgPSB0aGlzLm9uKGV2ZW50LCBhc3luYyBkYXRhID0+IHtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lcihkYXRhKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbWl0IChldmVudE5hbWU6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGVtaXRQcm9taXNlID0gc3VwZXIuZW1pdChldmVudE5hbWUsIC4uLmFyZ3MpO1xuXG4gICAgICAgIGlmICh0aGlzLmNhcHR1cmVSZWplY3Rpb25zICYmIGV2ZW50TmFtZSAhPT0gJ2Vycm9yJylcbiAgICAgICAgICAgIGVtaXRQcm9taXNlLmNhdGNoKHJlYXNvbiA9PiB0aGlzLmVtaXQoJ2Vycm9yJywgcmVhc29uKSk7XG5cbiAgICAgICAgcmV0dXJuIGVtaXRQcm9taXNlO1xuICAgIH1cbn1cbiJdfQ==
|