zcatalyst-cli
Version:
Command Line Tool for CATALYST
69 lines (68 loc) • 2.37 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CatalystEventEmitter = void 0;
const events_1 = __importDefault(require("events"));
const error_1 = __importDefault(require("../error"));
const logger_1 = require("./logger");
class CatalystEventEmitter extends events_1.default {
constructor() {
super(...arguments);
this.listenerMap = new WeakMap();
}
on(event, listener) {
const wrappedListener = (...args) => {
try {
listener(...args);
}
catch (er) {
throw error_1.default.getErrorInstance(er, {
message: 'Error when processing the <on> listener of ServerEvent: ' + event,
skipHelp: true
});
}
};
this.listenerMap.set(listener, wrappedListener);
super.on(event, wrappedListener);
return this;
}
once(event, listener) {
const wrappedListener = (...args) => {
try {
listener(...args);
}
catch (er) {
throw error_1.default.getErrorInstance(er, {
message: 'Error when processing the <once> listener of ServerEvent: ' + event,
skipHelp: true
});
}
this.listenerMap.delete(listener);
};
this.listenerMap.set(listener, wrappedListener);
super.once(event, wrappedListener);
return this;
}
removeListener(event, listener) {
const wrappedListener = this.listenerMap.get(listener);
if (wrappedListener) {
super.removeListener(event, wrappedListener);
this.listenerMap.delete(listener);
}
return this;
}
off(event, listener) {
return this.removeListener(event, listener);
}
emit(...args) {
const [event] = args;
if (event === 'error' && this.listenerCount('error') === 0) {
(0, logger_1.debug)('Unable to emit "error" event as no listeners are attached');
return false;
}
return super.emit(...args);
}
}
exports.CatalystEventEmitter = CatalystEventEmitter;