UNPKG

zcatalyst-cli

Version:

Command Line Tool for CATALYST

69 lines (68 loc) 2.37 kB
"use strict"; 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;