@textlint/kernel
Version:
textlint kernel is core logic by pure JavaScript.
72 lines • 2.88 kB
JavaScript
// MIT © 2017 azu
// MIT © 2017 59naga
// https://github.com/59naga/carrack
;
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