UNPKG

event-emitters

Version:
46 lines 1.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventEmitter = void 0; var EventEmitterAsyncIterator_1 = require("./EventEmitterAsyncIterator"); /** * The same as node's EventEmitter but: * Only emits a single "event". * Throw an exception when a client registers the same listener more than once. * Throw an exception when a client tries to remove a listener that is not listening. */ var EventEmitter = /** @class */ (function () { function EventEmitter() { this.listeners = []; } EventEmitter.prototype.emit = function (newMessage) { this.listeners.forEach(function (listener) { listener(newMessage); }); }; EventEmitter.prototype.subscribe = function (listener) { if (this.listeners.includes(listener)) { throw new Error('You have already subscribed with this listener'); } this.listeners.push(listener); return listener; }; EventEmitter.prototype.unsubscribe = function (listener) { var index = this.listeners.indexOf(listener); if (index === -1) { throw new Error('Tried to remove listener that is not listening'); } this.listeners.splice(index, 1); }; EventEmitter.prototype.hasListeners = function () { return this.listeners.length !== 0; }; EventEmitter.prototype[Symbol.asyncIterator] = function () { return this.asyncIterator(); }; EventEmitter.prototype.asyncIterator = function () { return new EventEmitterAsyncIterator_1.EventEmitterAsyncIterator(this); }; return EventEmitter; }()); exports.EventEmitter = EventEmitter; //# sourceMappingURL=EventEmitter.js.map