UNPKG

@textlint/kernel

Version:
72 lines 2.88 kB
// MIT © 2017 azu // MIT © 2017 59naga // https://github.com/59naga/carrack "use strict"; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _EventEmitter_listeners; export class EventEmitter { constructor() { _EventEmitter_listeners.set(this, new Map()); } on(type, listener) { const prevSet = __classPrivateFieldGet(this, _EventEmitter_listeners, "f").get(type); const listenerSet = prevSet !== null && prevSet !== void 0 ? prevSet : new Set(); listenerSet === null || listenerSet === void 0 ? void 0 : listenerSet.add(listener); __classPrivateFieldGet(this, _EventEmitter_listeners, "f").set(type, listenerSet); } emit(type, ...args) { const listenerSet = __classPrivateFieldGet(this, _EventEmitter_listeners, "f").get(type); if (!listenerSet) { return; } for (const listenerSetElement of listenerSet) { listenerSetElement(...args); } } off(type, listener) { const listenerSet = __classPrivateFieldGet(this, _EventEmitter_listeners, "f").get(type); if (!listenerSet) { return; } for (const listenerSetElement of listenerSet) { if (listenerSetElement === listener) { listenerSet.delete(listener); } } } removeAllListeners() { __classPrivateFieldGet(this, _EventEmitter_listeners, "f").clear(); } listenerCount(type) { var _a, _b; return (_b = (_a = __classPrivateFieldGet(this, _EventEmitter_listeners, "f").get(type)) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0; } listeners(type) { var _a; return Array.from((_a = __classPrivateFieldGet(this, _EventEmitter_listeners, "f").get(type)) !== null && _a !== void 0 ? _a : []); } } _EventEmitter_listeners = new WeakMap(); export class PromiseEventEmitter { constructor() { this.events = new EventEmitter(); } listenerCount(type) { return this.events.listenerCount(type); } on(event, listener) { return this.events.on(event, listener); } emit(event, ...args) { const promises = []; this.events.listeners(event).forEach((listener) => { promises.push(listener(...args)); }); return Promise.all(promises); } } //# sourceMappingURL=promise-event-emitter.js.map