diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2023-09-02 19:12:47 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2023-09-02 19:12:47 -0400 |
commit | e4450c8417624b71d779cb4f41692538f9165e10 (patch) | |
tree | b70826542223ecdf8a7a259f61b0a1abb8a217d8 /node_modules/@vladfrangu/async_event_emitter/dist | |
download | sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.tar.gz sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.tar.bz2 sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.zip |
first commit
Diffstat (limited to 'node_modules/@vladfrangu/async_event_emitter/dist')
7 files changed, 1746 insertions, 0 deletions
diff --git a/node_modules/@vladfrangu/async_event_emitter/dist/index.d.ts b/node_modules/@vladfrangu/async_event_emitter/dist/index.d.ts new file mode 100644 index 0000000..ef909d8 --- /dev/null +++ b/node_modules/@vladfrangu/async_event_emitter/dist/index.d.ts @@ -0,0 +1,57 @@ +/// <reference types="node" /> +declare class AsyncEventEmitter<Events extends Record<PropertyKey, unknown[]> = Record<PropertyKey, unknown[]> & AsyncEventEmitterPredefinedEvents> { + private _events; + private _eventCount; + private _maxListeners; + private _internalPromiseMap; + private _wrapperId; + addListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void): this; + on<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void): this; + once<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void): this; + removeListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void): this; + off<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void): this; + removeAllListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(event?: K | undefined): this; + setMaxListeners(n: number): this; + getMaxListeners(): number; + listeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): Listener<Events[keyof Events]>['listener'][]; + rawListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): Listener<Events[keyof Events]>[]; + emit<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, ...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]): boolean; + listenerCount<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): number; + prependListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void): this; + prependOnceListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void): this; + eventNames(): (keyof Events | keyof AsyncEventEmitterPredefinedEvents)[]; + waitForAllListenersToComplete(): Promise<boolean>; + private _addListener; + private _wrapListener; + static listenerCount<Emitter extends AsyncEventEmitter<any>, EventNames = Emitter extends AsyncEventEmitter<infer Events> ? Events : never, EventName extends PropertyKey = EventNames extends never ? string | symbol : keyof EventNames>(emitter: Emitter, eventName: EventName | keyof AsyncEventEmitterPredefinedEvents): number; + static once<Emitter extends AsyncEventEmitter<any>, EventNames extends Record<PropertyKey, unknown[]> = Emitter extends AsyncEventEmitter<infer Events> ? Events : Record<PropertyKey, unknown[]>, EventName extends PropertyKey = keyof EventNames | keyof AsyncEventEmitterPredefinedEvents, EventResult extends unknown[] = EventName extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[EventName] : EventNames[EventName]>(emitter: Emitter, eventName: EventName, options?: AbortableMethods): Promise<EventResult>; + static on<Emitter extends AsyncEventEmitter<any>, EventNames extends Record<PropertyKey, unknown[]> = Emitter extends AsyncEventEmitter<infer Events> ? Events : Record<PropertyKey, unknown[]>, EventName extends PropertyKey = keyof EventNames | keyof AsyncEventEmitterPredefinedEvents, EventResult extends unknown[] = EventName extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[EventName] : EventNames[EventName]>(emitter: Emitter, eventName: EventName, options?: AbortableMethods): AsyncGenerator<EventResult, void>; +} +interface AsyncEventEmitterPredefinedEvents { + newListener: [eventName: string | symbol, listener: (...args: any[]) => Awaitable<void>]; + removeListener: [eventName: string | symbol, listener: (...args: any[]) => Awaitable<void>]; +} +interface WrappedOnce<Args extends any[] = any[]> { + (...args: Args): Awaitable<void>; + listener: (...args: Args) => Awaitable<void>; + _hasWarnedAboutMaxListeners?: boolean; +} +interface Listener<Args extends any[] = any[]> { + (...args: Args): Awaitable<void>; + listener: (...args: Args) => Awaitable<void>; + _hasWarnedAboutMaxListeners?: boolean; +} +type Awaitable<T> = T | Promise<T>; +interface AbortableMethods { + signal?: AbortSignal; +} +interface AbortErrorOptions { + cause?: unknown; +} +declare class AbortError extends Error { + readonly code = "ABORT_ERR"; + readonly name = "AbortError"; + constructor(message?: string, options?: AbortErrorOptions | undefined); +} + +export { AbortError, AbortErrorOptions, AbortableMethods, AsyncEventEmitter, AsyncEventEmitterPredefinedEvents, Awaitable, Listener, WrappedOnce }; diff --git a/node_modules/@vladfrangu/async_event_emitter/dist/index.global.js b/node_modules/@vladfrangu/async_event_emitter/dist/index.global.js new file mode 100644 index 0000000..b528f19 --- /dev/null +++ b/node_modules/@vladfrangu/async_event_emitter/dist/index.global.js @@ -0,0 +1,568 @@ +"use strict"; +var AsyncEventEmitter = (() => { + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + + // src/index.ts + var src_exports = {}; + __export(src_exports, { + AbortError: () => AbortError, + AsyncEventEmitter: () => AsyncEventEmitter + }); + function validateListener(input) { + if (typeof input !== "function") { + throw new TypeError(`The listener argument must be a function. Received ${typeof input}`); + } + } + __name(validateListener, "validateListener"); + function validateAbortSignal(input) { + if (input && !(input instanceof AbortSignal)) { + throw new TypeError(`The signal option must be an AbortSignal. Received ${input}`); + } + } + __name(validateAbortSignal, "validateAbortSignal"); + function spliceOne(list, index) { + for (; index + 1 < list.length; index++) { + list[index] = list[index + 1]; + } + list.pop(); + } + __name(spliceOne, "spliceOne"); + function arrayClone(arr) { + switch (arr.length) { + case 2: + return [arr[0], arr[1]]; + case 3: + return [arr[0], arr[1], arr[2]]; + case 4: + return [arr[0], arr[1], arr[2], arr[3]]; + case 5: + return [arr[0], arr[1], arr[2], arr[3], arr[4]]; + case 6: + return [arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]]; + } + return arr.slice(); + } + __name(arrayClone, "arrayClone"); + function identicalSequenceRange(a, b) { + for (let i = 0; i < a.length - 3; i++) { + const pos = b.indexOf(a[i]); + if (pos !== -1) { + const rest = b.length - pos; + if (rest > 3) { + let len = 1; + const maxLen = Math.min(a.length - i, rest); + while (maxLen > len && a[i + len] === b[pos + len]) { + len++; + } + if (len > 3) { + return [len, i]; + } + } + } + } + return [0, 0]; + } + __name(identicalSequenceRange, "identicalSequenceRange"); + function enhanceStackTrace(err, own) { + let ctorInfo = ""; + try { + const { name } = this.constructor; + if (name !== "AsyncEventEmitter") + ctorInfo = ` on ${name} instance`; + } catch { + } + const sep = ` +Emitted 'error' event${ctorInfo} at: +`; + const errStack = err.stack.split("\n").slice(1); + const ownStack = own.stack.split("\n").slice(1); + const { 0: len, 1: off } = identicalSequenceRange(ownStack, errStack); + if (len > 0) { + ownStack.splice(off + 1, len - 2, " [... lines matching original stack trace ...]"); + } + return err.stack + sep + ownStack.join("\n"); + } + __name(enhanceStackTrace, "enhanceStackTrace"); + var AsyncEventEmitter = class { + constructor() { + this._events = { + __proto__: null + }; + this._eventCount = 0; + this._maxListeners = 10; + this._internalPromiseMap = /* @__PURE__ */ new Map(); + this._wrapperId = 0n; + } + addListener(eventName, listener) { + validateListener(listener); + const wrapped = this._wrapListener(eventName, listener, false); + this._addListener(eventName, wrapped, false); + return this; + } + on(eventName, listener) { + return this.addListener(eventName, listener); + } + once(eventName, listener) { + validateListener(listener); + const wrapped = this._wrapListener(eventName, listener, true); + this._addListener(eventName, wrapped, false); + return this; + } + removeListener(eventName, listener) { + validateListener(listener); + const events = this._events; + const eventList = events[eventName]; + if (eventList === void 0) { + return this; + } + if (eventList === listener || eventList.listener === listener) { + if (--this._eventCount === 0) { + this._events = { __proto__: null }; + } else { + delete events[eventName]; + if (events.removeListener) { + this.emit("removeListener", eventName, eventList.listener ?? eventList); + } + } + } else if (typeof eventList !== "function") { + let position = -1; + for (let i = eventList.length - 1; i >= 0; i--) { + if (eventList[i] === listener || eventList[i].listener === listener) { + position = i; + break; + } + } + if (position < 0) { + return this; + } + if (position === 0) { + eventList.shift(); + } else { + spliceOne(eventList, position); + } + if (eventList.length === 0) { + delete events[eventName]; + --this._eventCount; + } + if (events.removeListener !== void 0) { + this.emit("removeListener", eventName, listener); + } + } + return this; + } + off(eventName, listener) { + return this.removeListener(eventName, listener); + } + removeAllListeners(event) { + const events = this._events; + if (events.removeListener === void 0) { + if (!event) { + this._events = { __proto__: null }; + this._eventCount = 0; + } else if (events[event] !== void 0) { + if (--this._eventCount === 0) { + this._events = { __proto__: null }; + } else { + delete events[event]; + } + } + return this; + } + if (!event) { + for (const key of Reflect.ownKeys(events)) { + if (key === "removeListener") { + continue; + } + this.removeAllListeners(key); + } + this.removeAllListeners("removeListener"); + this._events = { __proto__: null }; + this._eventCount = 0; + return this; + } + const listeners = events[event]; + if (typeof listeners === "function") { + this.removeListener(event, listeners); + } else if (listeners !== void 0) { + for (let i = listeners.length - 1; i >= 0; i--) { + this.removeListener(event, listeners[i]); + } + } + return this; + } + setMaxListeners(n) { + if (typeof n !== "number" || n < 0 || Number.isNaN(n)) { + throw new RangeError(`Expected to get a non-negative number for "setMaxListeners", got ${n} instead`); + } + this._maxListeners = n; + return this; + } + getMaxListeners() { + return this._maxListeners; + } + listeners(eventName) { + const eventList = this._events[eventName]; + if (eventList === void 0) { + return []; + } + if (typeof eventList === "function") { + return [eventList.listener ?? eventList]; + } + const ret = arrayClone(eventList); + for (let i = 0; i < ret.length; ++i) { + const orig = ret[i].listener; + if (typeof orig === "function") { + ret[i] = orig; + } + } + return ret; + } + rawListeners(eventName) { + const eventList = this._events[eventName]; + if (eventList === void 0) { + return []; + } + if (typeof eventList === "function") { + return [eventList]; + } + return arrayClone(eventList); + } + emit(eventName, ...args) { + let doError = eventName === "error"; + const events = this._events; + if (events !== void 0) { + doError = doError && events.error === void 0; + } else if (!doError) { + return false; + } + if (doError) { + let er; + if (args.length > 0) { + er = args[0]; + } + if (er instanceof Error) { + try { + const capture = {}; + Error.captureStackTrace(capture, AsyncEventEmitter.prototype.emit); + Object.defineProperty(er, "stack", { + value: enhanceStackTrace.call(this, er, capture), + configurable: true + }); + } catch { + } + throw er; // Unhandled 'error' event + } + const stringifiedError = String(er); + const err = new Error(`Unhandled 'error' event emitted, received ${stringifiedError}`); + err.context = er; + throw err; // Unhandled 'error' event + } + const handlers = events[eventName]; + if (handlers === void 0) { + return false; + } + if (typeof handlers === "function") { + const result = handlers.apply(this, args); + if (result !== void 0 && result !== null) { + handleMaybeAsync(this, result); + } + } else { + const len = handlers.length; + const listeners = arrayClone(handlers); + for (let i = 0; i < len; ++i) { + const result = listeners[i].apply(this, args); + if (result !== void 0 && result !== null) { + handleMaybeAsync(this, result); + } + } + } + return true; + } + listenerCount(eventName) { + const events = this._events; + if (events === void 0) { + return 0; + } + const eventListeners = events[eventName]; + if (typeof eventListeners === "function") { + return 1; + } + return eventListeners?.length ?? 0; + } + prependListener(eventName, listener) { + validateListener(listener); + const wrapped = this._wrapListener(eventName, listener, false); + this._addListener(eventName, wrapped, true); + return this; + } + prependOnceListener(eventName, listener) { + validateListener(listener); + const wrapped = this._wrapListener(eventName, listener, true); + this._addListener(eventName, wrapped, true); + return this; + } + eventNames() { + return this._eventCount > 0 ? Reflect.ownKeys(this._events) : []; + } + async waitForAllListenersToComplete() { + const promises = [...this._internalPromiseMap.values()]; + if (promises.length === 0) { + return false; + } + await Promise.all(promises); + return true; + } + _addListener(eventName, wrappedListener, prepend) { + if (this._events.newListener !== void 0) { + this.emit("newListener", eventName, wrappedListener.listener ?? wrappedListener); + } + let existing = this._events[eventName]; + if (existing === void 0) { + existing = this._events[eventName] = wrappedListener; + ++this._eventCount; + } else if (typeof existing === "function") { + existing = this._events[eventName] = prepend ? [wrappedListener, existing] : [existing, wrappedListener]; + } else if (prepend) { + existing.unshift(wrappedListener); + } else { + existing.push(wrappedListener); + } + if (this._maxListeners > 0 && existing.length > this._maxListeners && !existing._hasWarnedAboutMaxListeners) { + existing._hasWarnedAboutMaxListeners = true; + const warningMessage = [ + `Possible AsyncEventEmitter memory leak detected. ${existing.length} ${String(eventName)} listeners added to ${this.constructor.name}.`, + `Use emitter.setMaxListeners() to increase the limit.` + ].join(" "); + console.warn(warningMessage); + } + } + _wrapListener(eventName, listener, once) { + if (!once) { + return listener; + } + const state = { + fired: false, + wrapFn: void 0, + eventEmitter: this, + eventName, + listener + }; + const aliased = onceWrapper; + const wrapped = aliased.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; + } + static listenerCount(emitter, eventName) { + return emitter.listenerCount(eventName); + } + static async once(emitter, eventName, options = {}) { + const signal = options?.signal; + validateAbortSignal(signal); + if (signal?.aborted) { + throw new AbortError(void 0, { cause: getReason(signal) }); + } + return new Promise((resolve, reject) => { + const errorListener = /* @__PURE__ */ __name((err) => { + emitter.removeListener(eventName, resolver); + if (signal) { + eventTargetAgnosticRemoveListener(emitter, eventName, abortListener); + } + reject(err); + }, "errorListener"); + const resolver = /* @__PURE__ */ __name((...args) => { + emitter.removeListener("error", errorListener); + if (signal) { + eventTargetAgnosticRemoveListener(signal, "abort", abortListener); + } + resolve(args); + }, "resolver"); + emitter.once(eventName, resolver); + if (eventName !== "error") { + emitter.once("error", errorListener); + } + const abortListener = /* @__PURE__ */ __name(() => { + eventTargetAgnosticRemoveListener(emitter, eventName, resolver); + eventTargetAgnosticRemoveListener(emitter, "error", errorListener); + reject(new AbortError(void 0, { cause: getReason(signal) })); + }, "abortListener"); + if (signal) { + eventTargetAgnosticAddListener(signal, "abort", abortListener, { once: true }); + } + }); + } + static on(emitter, eventName, options = {}) { + const signal = options?.signal; + validateAbortSignal(signal); + if (signal?.aborted) { + throw new AbortError(void 0, { cause: getReason(signal) }); + } + const unconsumedEvents = []; + const unconsumedPromises = []; + let error = null; + let finished = false; + const abortListener = /* @__PURE__ */ __name(() => { + errorHandler(new AbortError(void 0, { cause: getReason(signal) })); + }, "abortListener"); + const eventHandler = /* @__PURE__ */ __name((...args) => { + const promise = unconsumedPromises.shift(); + if (promise) { + promise.resolve(createIterResult(args, false)); + } else { + unconsumedEvents.push(args); + } + }, "eventHandler"); + const errorHandler = /* @__PURE__ */ __name((err) => { + finished = true; + const toError = unconsumedPromises.shift(); + if (toError) { + toError.reject(err); + } else { + error = err; + } + void iterator.return(); + }, "errorHandler"); + const iterator = Object.setPrototypeOf( + { + next() { + const value = unconsumedEvents.shift(); + if (value) { + return Promise.resolve(createIterResult(value, false)); + } + if (error) { + const p = Promise.reject(error); + error = null; + return p; + } + if (finished) { + return Promise.resolve(createIterResult(void 0, true)); + } + return new Promise((resolve, reject) => { + unconsumedPromises.push({ resolve, reject }); + }); + }, + return() { + emitter.off(eventName, eventHandler); + emitter.off("error", errorHandler); + if (signal) { + eventTargetAgnosticRemoveListener(signal, "abort", abortListener); + } + finished = true; + const doneResult = createIterResult(void 0, true); + for (const promise of unconsumedPromises) { + promise.resolve(doneResult); + } + return Promise.resolve(doneResult); + }, + throw(err) { + if (!err || !(err instanceof Error)) { + throw new TypeError(`Expected Error instance to be thrown in AsyncEventEmitter.AsyncIterator. Got ${err}`); + } + error = err; + emitter.off(eventName, eventHandler); + emitter.off("error", errorHandler); + }, + [Symbol.asyncIterator]() { + return this; + } + }, + AsyncIteratorPrototype + ); + emitter.on(eventName, eventHandler); + if (eventName !== "error") { + emitter.on("error", errorHandler); + } + if (signal) { + eventTargetAgnosticAddListener(signal, "abort", abortListener); + } + return iterator; + } + }; + __name(AsyncEventEmitter, "AsyncEventEmitter"); + function onceWrapper() { + if (!this.fired) { + this.eventEmitter.removeListener(this.eventName, this.wrapFn); + this.fired = true; + if (arguments.length === 0) { + return this.listener.call(this.eventEmitter); + } + return this.listener.apply(this.eventEmitter, arguments); + } + } + __name(onceWrapper, "onceWrapper"); + function getReason(signal) { + return signal?.reason; + } + __name(getReason, "getReason"); + function eventTargetAgnosticRemoveListener(emitter, name, listener, flags) { + if (typeof emitter.off === "function") { + emitter.off(name, listener); + } else if (typeof emitter.removeEventListener === "function") { + emitter.removeEventListener(name, listener, flags); + } + } + __name(eventTargetAgnosticRemoveListener, "eventTargetAgnosticRemoveListener"); + function eventTargetAgnosticAddListener(emitter, name, listener, flags) { + if (typeof emitter.on === "function") { + if (flags?.once) { + emitter.once(name, listener); + } else { + emitter.on(name, listener); + } + } else if (typeof emitter.addEventListener === "function") { + emitter.addEventListener(name, listener, flags); + } + } + __name(eventTargetAgnosticAddListener, "eventTargetAgnosticAddListener"); + var AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () { + }).prototype); + function createIterResult(value, done) { + return { value, done }; + } + __name(createIterResult, "createIterResult"); + var AbortError = class extends Error { + constructor(message = "The operation was aborted", options = void 0) { + if (options !== void 0 && typeof options !== "object") { + throw new TypeError(`Failed to create AbortError: options is not an object or undefined`); + } + super(message, options); + this.code = "ABORT_ERR"; + this.name = "AbortError"; + } + }; + __name(AbortError, "AbortError"); + function handleMaybeAsync(emitter, result) { + try { + const fin = result.finally; + if (typeof fin === "function") { + const promiseId = String(++emitter["_wrapperId"]); + emitter["_internalPromiseMap"].set(promiseId, result); + fin.call(result, /* @__PURE__ */ __name(function final() { + emitter["_internalPromiseMap"].delete(promiseId); + }, "final")); + } + } catch (err) { + emitter.emit("error", err); + } + } + __name(handleMaybeAsync, "handleMaybeAsync"); + return __toCommonJS(src_exports); +})(); +//# sourceMappingURL=index.global.js.map
\ No newline at end of file diff --git a/node_modules/@vladfrangu/async_event_emitter/dist/index.global.js.map b/node_modules/@vladfrangu/async_event_emitter/dist/index.global.js.map new file mode 100644 index 0000000..25a5ce7 --- /dev/null +++ b/node_modules/@vladfrangu/async_event_emitter/dist/index.global.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/dot-notation */\nfunction validateListener(input: unknown): asserts input is (...args: unknown[]) => Awaitable<void> {\n\tif (typeof input !== 'function') {\n\t\tthrow new TypeError(`The listener argument must be a function. Received ${typeof input}`);\n\t}\n}\n\nfunction validateAbortSignal(input: unknown): asserts input is AbortSignal | undefined {\n\t// Only validate that the signal is a signal if its defined\n\tif (input && !(input instanceof AbortSignal)) {\n\t\tthrow new TypeError(`The signal option must be an AbortSignal. Received ${input}`);\n\t}\n}\n\n// Inspired from https://github.com/nodejs/node/blob/42ad967d68137df1a80a877e7b5ad56403fc157f/lib/internal/util.js#L397\nfunction spliceOne(list: unknown[], index: number) {\n\tfor (; index + 1 < list.length; index++) {\n\t\tlist[index] = list[index + 1];\n\t}\n\n\tlist.pop();\n}\n\n// Inspired from https://github.com/nodejs/node/blob/42ad967d68137df1a80a877e7b5ad56403fc157f/lib/events.js#L889\nfunction arrayClone<T extends unknown[]>(arr: T): T {\n\t// At least since V8 8.3, this implementation is faster than the previous\n\t// which always used a simple for-loop\n\tswitch (arr.length) {\n\t\tcase 2:\n\t\t\treturn [arr[0], arr[1]] as T;\n\t\tcase 3:\n\t\t\treturn [arr[0], arr[1], arr[2]] as T;\n\t\tcase 4:\n\t\t\treturn [arr[0], arr[1], arr[2], arr[3]] as T;\n\t\tcase 5:\n\t\t\treturn [arr[0], arr[1], arr[2], arr[3], arr[4]] as T;\n\t\tcase 6:\n\t\t\treturn [arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]] as T;\n\t}\n\n\treturn arr.slice() as T;\n}\n\n// Inspired from https://github.com/nodejs/node/blob/42ad967d68137df1a80a877e7b5ad56403fc157f/lib/events.js#L427-L475\nfunction identicalSequenceRange(a: unknown[], b: unknown[]): [number, number] {\n\tfor (let i = 0; i < a.length - 3; i++) {\n\t\t// Find the first entry of b that matches the current entry of a.\n\t\tconst pos = b.indexOf(a[i]);\n\t\tif (pos !== -1) {\n\t\t\tconst rest = b.length - pos;\n\t\t\tif (rest > 3) {\n\t\t\t\tlet len = 1;\n\t\t\t\tconst maxLen = Math.min(a.length - i, rest);\n\t\t\t\t// Count the number of consecutive entries.\n\t\t\t\twhile (maxLen > len && a[i + len] === b[pos + len]) {\n\t\t\t\t\tlen++;\n\t\t\t\t}\n\t\t\t\tif (len > 3) {\n\t\t\t\t\treturn [len, i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn [0, 0];\n}\n\nfunction enhanceStackTrace(this: AsyncEventEmitter<any>, err: Error, own: Error) {\n\tlet ctorInfo = '';\n\ttry {\n\t\tconst { name } = this.constructor;\n\t\tif (name !== 'AsyncEventEmitter') ctorInfo = ` on ${name} instance`;\n\t} catch {\n\t\t// Continue regardless of error.\n\t}\n\tconst sep = `\\nEmitted 'error' event${ctorInfo} at:\\n`;\n\n\tconst errStack = err.stack!.split('\\n').slice(1);\n\tconst ownStack = own.stack!.split('\\n').slice(1);\n\n\tconst { 0: len, 1: off } = identicalSequenceRange(ownStack, errStack);\n\tif (len > 0) {\n\t\townStack.splice(off + 1, len - 2, ' [... lines matching original stack trace ...]');\n\t}\n\n\treturn err.stack + sep + ownStack.join('\\n');\n}\n\ninterface InternalEventMap extends Array<Listener | WrappedOnce> {\n\t_hasWarnedAboutMaxListeners?: boolean;\n}\n\nexport class AsyncEventEmitter<Events extends Record<PropertyKey, unknown[]> = Record<PropertyKey, unknown[]> & AsyncEventEmitterPredefinedEvents> {\n\tprivate _events: Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, Listener | WrappedOnce | InternalEventMap> = {\n\t\t__proto__: null\n\t} as Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, Listener | WrappedOnce | InternalEventMap>;\n\n\tprivate _eventCount = 0;\n\tprivate _maxListeners = 10;\n\tprivate _internalPromiseMap: Map<string, Promise<void>> = new Map();\n\tprivate _wrapperId = 0n;\n\n\tpublic addListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst wrapped = this._wrapListener(eventName, listener, false);\n\n\t\tthis._addListener(eventName, wrapped, false);\n\n\t\treturn this;\n\t}\n\n\tpublic on<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\treturn this.addListener(eventName, listener);\n\t}\n\n\tpublic once<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst wrapped = this._wrapListener(eventName, listener, true);\n\n\t\tthis._addListener(eventName, wrapped, false);\n\n\t\treturn this;\n\t}\n\n\tpublic removeListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst events = this._events;\n\t\tconst eventList = events[eventName];\n\n\t\tif (eventList === undefined) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (eventList === listener || (eventList as WrappedOnce).listener === listener) {\n\t\t\tif (--this._eventCount === 0) {\n\t\t\t\tthis._events = { __proto__: null } as Record<\n\t\t\t\t\tkeyof Events | keyof AsyncEventEmitterPredefinedEvents,\n\t\t\t\t\tListener | WrappedOnce | InternalEventMap\n\t\t\t\t>;\n\t\t\t} else {\n\t\t\t\tdelete events[eventName];\n\t\t\t\tif (events.removeListener) {\n\t\t\t\t\tthis.emit('removeListener', eventName as string, (eventList as WrappedOnce).listener ?? eventList);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (typeof eventList !== 'function') {\n\t\t\tlet position = -1;\n\n\t\t\tfor (let i = eventList.length - 1; i >= 0; i--) {\n\t\t\t\tif (eventList[i] === listener || (eventList[i] as WrappedOnce).listener === listener) {\n\t\t\t\t\tposition = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (position < 0) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (position === 0) {\n\t\t\t\teventList.shift();\n\t\t\t} else {\n\t\t\t\tspliceOne(eventList, position);\n\t\t\t}\n\n\t\t\tif (eventList.length === 0) {\n\t\t\t\tdelete events[eventName];\n\t\t\t\t--this._eventCount;\n\t\t\t}\n\n\t\t\tif (events.removeListener !== undefined) {\n\t\t\t\t// Thanks TypeScript for the cast...\n\t\t\t\tthis.emit('removeListener', eventName as string | symbol, listener);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tpublic off<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\treturn this.removeListener(eventName, listener);\n\t}\n\n\tpublic removeAllListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(event?: K | undefined): this {\n\t\tconst events = this._events;\n\n\t\t// Not listening for removeListener, no need to emit\n\t\tif (events.removeListener === undefined) {\n\t\t\tif (!event) {\n\t\t\t\tthis._events = { __proto__: null } as Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, InternalEventMap>;\n\t\t\t\tthis._eventCount = 0;\n\t\t\t} else if (events[event] !== undefined) {\n\t\t\t\tif (--this._eventCount === 0) {\n\t\t\t\t\tthis._events = { __proto__: null } as Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, InternalEventMap>;\n\t\t\t\t} else {\n\t\t\t\t\tdelete events[event];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\t// Emit removeListener for all listeners on all events\n\t\tif (!event) {\n\t\t\tfor (const key of Reflect.ownKeys(events)) {\n\t\t\t\tif (key === 'removeListener') {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthis.removeAllListeners(key);\n\t\t\t}\n\n\t\t\tthis.removeAllListeners('removeListener');\n\t\t\tthis._events = { __proto__: null } as Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, InternalEventMap>;\n\t\t\tthis._eventCount = 0;\n\n\t\t\treturn this;\n\t\t}\n\n\t\tconst listeners = events[event];\n\n\t\tif (typeof listeners === 'function') {\n\t\t\tthis.removeListener(event, listeners);\n\t\t} else if (listeners !== undefined) {\n\t\t\t// LIFO order\n\t\t\tfor (let i = listeners.length - 1; i >= 0; i--) {\n\t\t\t\tthis.removeListener(event, listeners[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tpublic setMaxListeners(n: number): this {\n\t\tif (typeof n !== 'number' || n < 0 || Number.isNaN(n)) {\n\t\t\tthrow new RangeError(`Expected to get a non-negative number for \"setMaxListeners\", got ${n} instead`);\n\t\t}\n\n\t\tthis._maxListeners = n;\n\n\t\treturn this;\n\t}\n\n\tpublic getMaxListeners(): number {\n\t\treturn this._maxListeners;\n\t}\n\n\tpublic listeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): Listener<Events[keyof Events]>['listener'][] {\n\t\tconst eventList = this._events[eventName];\n\n\t\tif (eventList === undefined) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (typeof eventList === 'function') {\n\t\t\treturn [eventList.listener ?? eventList];\n\t\t}\n\n\t\tconst ret = arrayClone(eventList) as Listener<Events[keyof Events]>['listener'][];\n\n\t\tfor (let i = 0; i < ret.length; ++i) {\n\t\t\tconst orig = (ret[i] as WrappedOnce).listener;\n\t\t\tif (typeof orig === 'function') {\n\t\t\t\tret[i] = orig;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\tpublic rawListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): Listener<Events[keyof Events]>[] {\n\t\tconst eventList = this._events[eventName];\n\n\t\tif (eventList === undefined) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (typeof eventList === 'function') {\n\t\t\treturn [eventList];\n\t\t}\n\n\t\treturn arrayClone(eventList) as Listener<Events[keyof Events]>[];\n\t}\n\n\tpublic emit<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\t...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]\n\t): boolean {\n\t\tlet doError = eventName === 'error';\n\n\t\tconst events = this._events;\n\t\tif (events !== undefined) {\n\t\t\tdoError = doError && events.error === undefined;\n\t\t} else if (!doError) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (doError) {\n\t\t\tlet er: unknown;\n\n\t\t\tif (args.length > 0) {\n\t\t\t\t// eslint-disable-next-line prefer-destructuring\n\t\t\t\ter = args[0];\n\t\t\t}\n\n\t\t\tif (er instanceof Error) {\n\t\t\t\ttry {\n\t\t\t\t\tconst capture = {};\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/unbound-method\n\t\t\t\t\tError.captureStackTrace(capture, AsyncEventEmitter.prototype.emit);\n\t\t\t\t\tObject.defineProperty(er, 'stack', {\n\t\t\t\t\t\tvalue: enhanceStackTrace.call(this, er, capture as Error),\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t});\n\t\t\t\t} catch {\n\t\t\t\t\t// Continue regardless of error\n\t\t\t\t}\n\n\t\t\t\tthrow er; // Unhandled 'error' event\n\t\t\t}\n\n\t\t\tconst stringifiedError = String(er);\n\n\t\t\t// Give some error to user\n\t\t\tconst err = new Error(`Unhandled 'error' event emitted, received ${stringifiedError}`);\n\t\t\t// @ts-expect-error Add context to error too\n\t\t\terr.context = er;\n\n\t\t\tthrow err; // Unhandled 'error' event\n\t\t}\n\n\t\tconst handlers = events[eventName];\n\n\t\tif (handlers === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (typeof handlers === 'function') {\n\t\t\tconst result = handlers.apply(this, args);\n\n\t\t\tif (result !== undefined && result !== null) {\n\t\t\t\thandleMaybeAsync(this, result);\n\t\t\t}\n\t\t} else {\n\t\t\tconst len = handlers.length;\n\t\t\tconst listeners = arrayClone(handlers as InternalEventMap);\n\n\t\t\tfor (let i = 0; i < len; ++i) {\n\t\t\t\t// We call all listeners regardless of the result, as we already handle possible error emits in the wrapped func\n\t\t\t\tconst result = listeners[i].apply(this, args);\n\n\t\t\t\tif (result !== undefined && result !== null) {\n\t\t\t\t\thandleMaybeAsync(this, result);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic listenerCount<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): number {\n\t\tconst events = this._events;\n\n\t\tif (events === undefined) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst eventListeners = events[eventName];\n\n\t\tif (typeof eventListeners === 'function') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn eventListeners?.length ?? 0;\n\t}\n\n\tpublic prependListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst wrapped = this._wrapListener(eventName, listener, false);\n\n\t\tthis._addListener(eventName, wrapped, true);\n\n\t\treturn this;\n\t}\n\n\tpublic prependOnceListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst wrapped = this._wrapListener(eventName, listener, true);\n\n\t\tthis._addListener(eventName, wrapped, true);\n\n\t\treturn this;\n\t}\n\n\tpublic eventNames(): (keyof Events | keyof AsyncEventEmitterPredefinedEvents)[] {\n\t\treturn this._eventCount > 0 ? Reflect.ownKeys(this._events) : [];\n\t}\n\n\tpublic async waitForAllListenersToComplete() {\n\t\tconst promises = [...this._internalPromiseMap.values()];\n\n\t\tif (promises.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tawait Promise.all(promises);\n\n\t\treturn true;\n\t}\n\n\tprivate _addListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\twrappedListener: Listener | WrappedOnce,\n\t\tprepend: boolean\n\t) {\n\t\t// Emit newListener first in the event someone is listening for it\n\t\tif (this._events.newListener !== undefined) {\n\t\t\t// Thanks TypeScript for the cast...\n\t\t\tthis.emit('newListener', eventName as string | symbol, (wrappedListener as WrappedOnce).listener ?? wrappedListener);\n\t\t}\n\n\t\tlet existing = this._events[eventName];\n\n\t\tif (existing === undefined) {\n\t\t\t// eslint-disable-next-line no-multi-assign\n\t\t\texisting = this._events[eventName] = wrappedListener;\n\t\t\t++this._eventCount;\n\t\t} else if (typeof existing === 'function') {\n\t\t\t// Adding the second element, need to change to array.\n\t\t\t// eslint-disable-next-line no-multi-assign\n\t\t\texisting = this._events[eventName] = prepend ? [wrappedListener, existing] : [existing, wrappedListener];\n\t\t\t// If we've already got an array, just append.\n\t\t} else if (prepend) {\n\t\t\texisting.unshift(wrappedListener);\n\t\t} else {\n\t\t\texisting.push(wrappedListener);\n\t\t}\n\n\t\tif (this._maxListeners > 0 && existing.length > this._maxListeners && !existing._hasWarnedAboutMaxListeners) {\n\t\t\texisting._hasWarnedAboutMaxListeners = true;\n\t\t\tconst warningMessage = [\n\t\t\t\t`Possible AsyncEventEmitter memory leak detected. ${existing.length} ${String(eventName)} listeners added to ${\n\t\t\t\t\tthis.constructor.name\n\t\t\t\t}.`,\n\t\t\t\t`Use emitter.setMaxListeners() to increase the limit.`\n\t\t\t].join(' ');\n\t\t\tconsole.warn(warningMessage);\n\t\t}\n\t}\n\n\tprivate _wrapListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => Awaitable<void>,\n\t\tonce: boolean\n\t): Listener | WrappedOnce {\n\t\tif (!once) {\n\t\t\treturn listener as Listener;\n\t\t}\n\n\t\tconst state = {\n\t\t\tfired: false,\n\t\t\twrapFn: undefined!,\n\t\t\teventEmitter: this,\n\t\t\teventName,\n\t\t\tlistener\n\t\t} as WrappedOnceState<K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]>;\n\n\t\tconst aliased = onceWrapper<K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]>;\n\n\t\tconst wrapped = aliased.bind(state) as WrappedOnce<\n\t\t\tK extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]\n\t\t>;\n\t\twrapped.listener = listener;\n\t\tstate.wrapFn = wrapped;\n\n\t\treturn wrapped as WrappedOnce;\n\t}\n\n\tpublic static listenerCount<\n\t\tEmitter extends AsyncEventEmitter<any>,\n\t\tEventNames = Emitter extends AsyncEventEmitter<infer Events> ? Events : never,\n\t\tEventName extends PropertyKey = EventNames extends never ? string | symbol : keyof EventNames\n\t>(emitter: Emitter, eventName: EventName | keyof AsyncEventEmitterPredefinedEvents) {\n\t\treturn emitter.listenerCount(eventName);\n\t}\n\n\tpublic static async once<\n\t\tEmitter extends AsyncEventEmitter<any>,\n\t\tEventNames extends Record<PropertyKey, unknown[]> = Emitter extends AsyncEventEmitter<infer Events> ? Events : Record<PropertyKey, unknown[]>,\n\t\tEventName extends PropertyKey = keyof EventNames | keyof AsyncEventEmitterPredefinedEvents,\n\t\tEventResult extends unknown[] = EventName extends keyof AsyncEventEmitterPredefinedEvents\n\t\t\t? AsyncEventEmitterPredefinedEvents[EventName]\n\t\t\t: EventNames[EventName]\n\t>(emitter: Emitter, eventName: EventName, options: AbortableMethods = {}) {\n\t\tconst signal = options?.signal;\n\t\tvalidateAbortSignal(signal);\n\n\t\tif (signal?.aborted) {\n\t\t\tthrow new AbortError(undefined, { cause: getReason(signal) });\n\t\t}\n\n\t\treturn new Promise<EventResult>((resolve, reject) => {\n\t\t\tconst errorListener = (err: unknown) => {\n\t\t\t\temitter.removeListener(eventName, resolver);\n\n\t\t\t\tif (signal) {\n\t\t\t\t\teventTargetAgnosticRemoveListener(emitter, eventName, abortListener);\n\t\t\t\t}\n\n\t\t\t\treject(err);\n\t\t\t};\n\n\t\t\tconst resolver = (...args: unknown[]) => {\n\t\t\t\temitter.removeListener('error', errorListener);\n\n\t\t\t\tif (signal) {\n\t\t\t\t\teventTargetAgnosticRemoveListener(signal, 'abort', abortListener);\n\t\t\t\t}\n\n\t\t\t\tresolve(args as EventResult);\n\t\t\t};\n\n\t\t\temitter.once(eventName, resolver);\n\t\t\tif (eventName !== 'error') {\n\t\t\t\temitter.once('error', errorListener);\n\t\t\t}\n\n\t\t\tconst abortListener = () => {\n\t\t\t\teventTargetAgnosticRemoveListener(emitter, eventName, resolver);\n\t\t\t\teventTargetAgnosticRemoveListener(emitter, 'error', errorListener);\n\t\t\t\treject(new AbortError(undefined, { cause: getReason(signal) }));\n\t\t\t};\n\n\t\t\tif (signal) {\n\t\t\t\teventTargetAgnosticAddListener(signal, 'abort', abortListener, { once: true });\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic static on<\n\t\tEmitter extends AsyncEventEmitter<any>,\n\t\tEventNames extends Record<PropertyKey, unknown[]> = Emitter extends AsyncEventEmitter<infer Events> ? Events : Record<PropertyKey, unknown[]>,\n\t\tEventName extends PropertyKey = keyof EventNames | keyof AsyncEventEmitterPredefinedEvents,\n\t\tEventResult extends unknown[] = EventName extends keyof AsyncEventEmitterPredefinedEvents\n\t\t\t? AsyncEventEmitterPredefinedEvents[EventName]\n\t\t\t: EventNames[EventName]\n\t>(emitter: Emitter, eventName: EventName, options: AbortableMethods = {}): AsyncGenerator<EventResult, void> {\n\t\tconst signal = options?.signal;\n\t\tvalidateAbortSignal(signal);\n\n\t\tif (signal?.aborted) {\n\t\t\tthrow new AbortError(undefined, { cause: getReason(signal) });\n\t\t}\n\n\t\tconst unconsumedEvents: unknown[][] = [];\n\t\tconst unconsumedPromises: { resolve: (value?: unknown) => void; reject: (reason?: unknown) => void }[] = [];\n\t\tlet error: unknown = null;\n\t\tlet finished = false;\n\n\t\tconst abortListener = () => {\n\t\t\terrorHandler(new AbortError(undefined, { cause: getReason(signal) }));\n\t\t};\n\n\t\tconst eventHandler = (...args: unknown[]) => {\n\t\t\tconst promise = unconsumedPromises.shift();\n\t\t\tif (promise) {\n\t\t\t\tpromise.resolve(createIterResult(args, false));\n\t\t\t} else {\n\t\t\t\tunconsumedEvents.push(args);\n\t\t\t}\n\t\t};\n\n\t\tconst errorHandler = (err: unknown) => {\n\t\t\tfinished = true;\n\n\t\t\tconst toError = unconsumedPromises.shift();\n\n\t\t\tif (toError) {\n\t\t\t\ttoError.reject(err);\n\t\t\t} else {\n\t\t\t\terror = err;\n\t\t\t}\n\n\t\t\tvoid iterator.return();\n\t\t};\n\n\t\tconst iterator: AsyncGenerator<EventResult, void> = Object.setPrototypeOf(\n\t\t\t{\n\t\t\t\tnext() {\n\t\t\t\t\t// First, we consume all unread events\n\t\t\t\t\tconst value = unconsumedEvents.shift();\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\treturn Promise.resolve(createIterResult(value, false));\n\t\t\t\t\t}\n\n\t\t\t\t\t// Then we error, if an error happened\n\t\t\t\t\t// This happens one time if at all, because after 'error'\n\t\t\t\t\t// we stop listening\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\tconst p = Promise.reject(error);\n\t\t\t\t\t\t// Only the first element errors\n\t\t\t\t\t\terror = null;\n\t\t\t\t\t\treturn p;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the iterator is finished, resolve to done\n\t\t\t\t\tif (finished) {\n\t\t\t\t\t\treturn Promise.resolve(createIterResult(undefined, true));\n\t\t\t\t\t}\n\n\t\t\t\t\t// Wait until an event happens\n\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t\tunconsumedPromises.push({ resolve, reject });\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\treturn() {\n\t\t\t\t\temitter.off(eventName, eventHandler);\n\t\t\t\t\temitter.off('error', errorHandler);\n\n\t\t\t\t\tif (signal) {\n\t\t\t\t\t\teventTargetAgnosticRemoveListener(signal, 'abort', abortListener);\n\t\t\t\t\t}\n\n\t\t\t\t\tfinished = true;\n\n\t\t\t\t\tconst doneResult = createIterResult(undefined, true);\n\t\t\t\t\tfor (const promise of unconsumedPromises) {\n\t\t\t\t\t\tpromise.resolve(doneResult);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.resolve(doneResult);\n\t\t\t\t},\n\n\t\t\t\tthrow(err: unknown) {\n\t\t\t\t\tif (!err || !(err instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Expected Error instance to be thrown in AsyncEventEmitter.AsyncIterator. Got ${err}`);\n\t\t\t\t\t}\n\n\t\t\t\t\terror = err;\n\t\t\t\t\temitter.off(eventName, eventHandler);\n\t\t\t\t\temitter.off('error', errorHandler);\n\t\t\t\t},\n\n\t\t\t\t[Symbol.asyncIterator]() {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t},\n\t\t\tAsyncIteratorPrototype\n\t\t);\n\n\t\temitter.on(eventName, eventHandler);\n\t\tif (eventName !== 'error') {\n\t\t\temitter.on('error', errorHandler);\n\t\t}\n\n\t\tif (signal) {\n\t\t\teventTargetAgnosticAddListener(signal, 'abort', abortListener);\n\t\t}\n\n\t\treturn iterator;\n\t}\n}\n\nexport interface AsyncEventEmitterPredefinedEvents {\n\tnewListener: [eventName: string | symbol, listener: (...args: any[]) => Awaitable<void>];\n\tremoveListener: [eventName: string | symbol, listener: (...args: any[]) => Awaitable<void>];\n}\n\ninterface WrappedOnceState<Args extends any[] = any[]> {\n\tlistener: (...args: Args) => Awaitable<void>;\n\tfired: boolean;\n\teventName: string | symbol;\n\teventEmitter: AsyncEventEmitter<any>;\n\twrapFn: (...args: Args) => Awaitable<void>;\n}\n\nexport interface WrappedOnce<Args extends any[] = any[]> {\n\t(...args: Args): Awaitable<void>;\n\tlistener: (...args: Args) => Awaitable<void>;\n\t_hasWarnedAboutMaxListeners?: boolean;\n}\n\nexport interface Listener<Args extends any[] = any[]> {\n\t(...args: Args): Awaitable<void>;\n\tlistener: (...args: Args) => Awaitable<void>;\n\t_hasWarnedAboutMaxListeners?: boolean;\n}\n\nexport type Awaitable<T> = T | Promise<T>;\n\nexport interface AbortableMethods {\n\tsignal?: AbortSignal;\n}\n\n// @ts-ignore Not all paths returning is fine just fine:tm:\nfunction onceWrapper<Args extends any[] = any[]>(this: WrappedOnceState<Args>) {\n\tif (!this.fired) {\n\t\tthis.eventEmitter.removeListener(this.eventName, this.wrapFn);\n\t\tthis.fired = true;\n\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\tif (arguments.length === 0) {\n\t\t\t// @ts-expect-error Types can be hell\n\t\t\treturn this.listener.call(this.eventEmitter);\n\t\t}\n\n\t\t// eslint-disable-next-line prefer-rest-params\n\t\treturn this.listener.apply(this.eventEmitter, arguments as unknown as Args);\n\t}\n}\n\n/**\n * A TypeScript not-compliant way of accessing AbortSignal#reason\n * Because DOM types have it, NodeJS types don't. -w-\n */\nfunction getReason(signal: any) {\n\treturn signal?.reason;\n}\n\nfunction eventTargetAgnosticRemoveListener(emitter: any, name: PropertyKey, listener: (...args: unknown[]) => any, flags?: InternalAgnosticFlags) {\n\tif (typeof emitter.off === 'function') {\n\t\temitter.off(name, listener);\n\t} else if (typeof emitter.removeEventListener === 'function') {\n\t\temitter.removeEventListener(name, listener, flags);\n\t}\n}\n\nfunction eventTargetAgnosticAddListener(emitter: any, name: string | symbol, listener: (...args: unknown[]) => any, flags?: InternalAgnosticFlags) {\n\tif (typeof emitter.on === 'function') {\n\t\tif (flags?.once) {\n\t\t\temitter.once!(name, listener);\n\t\t} else {\n\t\t\temitter.on(name, listener);\n\t\t}\n\t} else if (typeof emitter.addEventListener === 'function') {\n\t\temitter.addEventListener(name, listener, flags);\n\t}\n}\n\ninterface InternalAgnosticFlags {\n\tonce?: boolean;\n}\n\n// eslint-disable-next-line func-names, @typescript-eslint/no-empty-function\nconst AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () {}).prototype);\n\nfunction createIterResult(value: unknown, done: boolean) {\n\treturn { value, done };\n}\n\nexport interface AbortErrorOptions {\n\tcause?: unknown;\n}\n\nexport class AbortError extends Error {\n\tpublic readonly code = 'ABORT_ERR';\n\tpublic override readonly name = 'AbortError';\n\n\tpublic constructor(message = 'The operation was aborted', options: AbortErrorOptions | undefined = undefined) {\n\t\tif (options !== undefined && typeof options !== 'object') {\n\t\t\tthrow new TypeError(`Failed to create AbortError: options is not an object or undefined`);\n\t\t}\n\n\t\tsuper(message, options);\n\t}\n}\n\nfunction handleMaybeAsync(emitter: AsyncEventEmitter<any>, result: any) {\n\ttry {\n\t\tconst fin = result.finally;\n\n\t\tif (typeof fin === 'function') {\n\t\t\tconst promiseId = String(++emitter['_wrapperId']);\n\t\t\temitter['_internalPromiseMap'].set(promiseId, result);\n\t\t\tfin.call(result, function final() {\n\t\t\t\temitter['_internalPromiseMap'].delete(promiseId);\n\t\t\t});\n\t\t}\n\t} catch (err) {\n\t\temitter.emit('error', err);\n\t}\n}\n"],"mappings":"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","names":[]}
\ No newline at end of file diff --git a/node_modules/@vladfrangu/async_event_emitter/dist/index.js b/node_modules/@vladfrangu/async_event_emitter/dist/index.js new file mode 100644 index 0000000..c542899 --- /dev/null +++ b/node_modules/@vladfrangu/async_event_emitter/dist/index.js @@ -0,0 +1,571 @@ +"use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + AbortError: () => AbortError, + AsyncEventEmitter: () => AsyncEventEmitter +}); +module.exports = __toCommonJS(src_exports); +function validateListener(input) { + if (typeof input !== "function") { + throw new TypeError(`The listener argument must be a function. Received ${typeof input}`); + } +} +__name(validateListener, "validateListener"); +function validateAbortSignal(input) { + if (input && !(input instanceof AbortSignal)) { + throw new TypeError(`The signal option must be an AbortSignal. Received ${input}`); + } +} +__name(validateAbortSignal, "validateAbortSignal"); +function spliceOne(list, index) { + for (; index + 1 < list.length; index++) { + list[index] = list[index + 1]; + } + list.pop(); +} +__name(spliceOne, "spliceOne"); +function arrayClone(arr) { + switch (arr.length) { + case 2: + return [arr[0], arr[1]]; + case 3: + return [arr[0], arr[1], arr[2]]; + case 4: + return [arr[0], arr[1], arr[2], arr[3]]; + case 5: + return [arr[0], arr[1], arr[2], arr[3], arr[4]]; + case 6: + return [arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]]; + } + return arr.slice(); +} +__name(arrayClone, "arrayClone"); +function identicalSequenceRange(a, b) { + for (let i = 0; i < a.length - 3; i++) { + const pos = b.indexOf(a[i]); + if (pos !== -1) { + const rest = b.length - pos; + if (rest > 3) { + let len = 1; + const maxLen = Math.min(a.length - i, rest); + while (maxLen > len && a[i + len] === b[pos + len]) { + len++; + } + if (len > 3) { + return [len, i]; + } + } + } + } + return [0, 0]; +} +__name(identicalSequenceRange, "identicalSequenceRange"); +function enhanceStackTrace(err, own) { + let ctorInfo = ""; + try { + const { name } = this.constructor; + if (name !== "AsyncEventEmitter") + ctorInfo = ` on ${name} instance`; + } catch { + } + const sep = ` +Emitted 'error' event${ctorInfo} at: +`; + const errStack = err.stack.split("\n").slice(1); + const ownStack = own.stack.split("\n").slice(1); + const { 0: len, 1: off } = identicalSequenceRange(ownStack, errStack); + if (len > 0) { + ownStack.splice(off + 1, len - 2, " [... lines matching original stack trace ...]"); + } + return err.stack + sep + ownStack.join("\n"); +} +__name(enhanceStackTrace, "enhanceStackTrace"); +var AsyncEventEmitter = class { + constructor() { + this._events = { + __proto__: null + }; + this._eventCount = 0; + this._maxListeners = 10; + this._internalPromiseMap = /* @__PURE__ */ new Map(); + this._wrapperId = 0n; + } + addListener(eventName, listener) { + validateListener(listener); + const wrapped = this._wrapListener(eventName, listener, false); + this._addListener(eventName, wrapped, false); + return this; + } + on(eventName, listener) { + return this.addListener(eventName, listener); + } + once(eventName, listener) { + validateListener(listener); + const wrapped = this._wrapListener(eventName, listener, true); + this._addListener(eventName, wrapped, false); + return this; + } + removeListener(eventName, listener) { + validateListener(listener); + const events = this._events; + const eventList = events[eventName]; + if (eventList === void 0) { + return this; + } + if (eventList === listener || eventList.listener === listener) { + if (--this._eventCount === 0) { + this._events = { __proto__: null }; + } else { + delete events[eventName]; + if (events.removeListener) { + this.emit("removeListener", eventName, eventList.listener ?? eventList); + } + } + } else if (typeof eventList !== "function") { + let position = -1; + for (let i = eventList.length - 1; i >= 0; i--) { + if (eventList[i] === listener || eventList[i].listener === listener) { + position = i; + break; + } + } + if (position < 0) { + return this; + } + if (position === 0) { + eventList.shift(); + } else { + spliceOne(eventList, position); + } + if (eventList.length === 0) { + delete events[eventName]; + --this._eventCount; + } + if (events.removeListener !== void 0) { + this.emit("removeListener", eventName, listener); + } + } + return this; + } + off(eventName, listener) { + return this.removeListener(eventName, listener); + } + removeAllListeners(event) { + const events = this._events; + if (events.removeListener === void 0) { + if (!event) { + this._events = { __proto__: null }; + this._eventCount = 0; + } else if (events[event] !== void 0) { + if (--this._eventCount === 0) { + this._events = { __proto__: null }; + } else { + delete events[event]; + } + } + return this; + } + if (!event) { + for (const key of Reflect.ownKeys(events)) { + if (key === "removeListener") { + continue; + } + this.removeAllListeners(key); + } + this.removeAllListeners("removeListener"); + this._events = { __proto__: null }; + this._eventCount = 0; + return this; + } + const listeners = events[event]; + if (typeof listeners === "function") { + this.removeListener(event, listeners); + } else if (listeners !== void 0) { + for (let i = listeners.length - 1; i >= 0; i--) { + this.removeListener(event, listeners[i]); + } + } + return this; + } + setMaxListeners(n) { + if (typeof n !== "number" || n < 0 || Number.isNaN(n)) { + throw new RangeError(`Expected to get a non-negative number for "setMaxListeners", got ${n} instead`); + } + this._maxListeners = n; + return this; + } + getMaxListeners() { + return this._maxListeners; + } + listeners(eventName) { + const eventList = this._events[eventName]; + if (eventList === void 0) { + return []; + } + if (typeof eventList === "function") { + return [eventList.listener ?? eventList]; + } + const ret = arrayClone(eventList); + for (let i = 0; i < ret.length; ++i) { + const orig = ret[i].listener; + if (typeof orig === "function") { + ret[i] = orig; + } + } + return ret; + } + rawListeners(eventName) { + const eventList = this._events[eventName]; + if (eventList === void 0) { + return []; + } + if (typeof eventList === "function") { + return [eventList]; + } + return arrayClone(eventList); + } + emit(eventName, ...args) { + let doError = eventName === "error"; + const events = this._events; + if (events !== void 0) { + doError = doError && events.error === void 0; + } else if (!doError) { + return false; + } + if (doError) { + let er; + if (args.length > 0) { + er = args[0]; + } + if (er instanceof Error) { + try { + const capture = {}; + Error.captureStackTrace(capture, AsyncEventEmitter.prototype.emit); + Object.defineProperty(er, "stack", { + value: enhanceStackTrace.call(this, er, capture), + configurable: true + }); + } catch { + } + throw er; // Unhandled 'error' event + } + const stringifiedError = String(er); + const err = new Error(`Unhandled 'error' event emitted, received ${stringifiedError}`); + err.context = er; + throw err; // Unhandled 'error' event + } + const handlers = events[eventName]; + if (handlers === void 0) { + return false; + } + if (typeof handlers === "function") { + const result = handlers.apply(this, args); + if (result !== void 0 && result !== null) { + handleMaybeAsync(this, result); + } + } else { + const len = handlers.length; + const listeners = arrayClone(handlers); + for (let i = 0; i < len; ++i) { + const result = listeners[i].apply(this, args); + if (result !== void 0 && result !== null) { + handleMaybeAsync(this, result); + } + } + } + return true; + } + listenerCount(eventName) { + const events = this._events; + if (events === void 0) { + return 0; + } + const eventListeners = events[eventName]; + if (typeof eventListeners === "function") { + return 1; + } + return eventListeners?.length ?? 0; + } + prependListener(eventName, listener) { + validateListener(listener); + const wrapped = this._wrapListener(eventName, listener, false); + this._addListener(eventName, wrapped, true); + return this; + } + prependOnceListener(eventName, listener) { + validateListener(listener); + const wrapped = this._wrapListener(eventName, listener, true); + this._addListener(eventName, wrapped, true); + return this; + } + eventNames() { + return this._eventCount > 0 ? Reflect.ownKeys(this._events) : []; + } + async waitForAllListenersToComplete() { + const promises = [...this._internalPromiseMap.values()]; + if (promises.length === 0) { + return false; + } + await Promise.all(promises); + return true; + } + _addListener(eventName, wrappedListener, prepend) { + if (this._events.newListener !== void 0) { + this.emit("newListener", eventName, wrappedListener.listener ?? wrappedListener); + } + let existing = this._events[eventName]; + if (existing === void 0) { + existing = this._events[eventName] = wrappedListener; + ++this._eventCount; + } else if (typeof existing === "function") { + existing = this._events[eventName] = prepend ? [wrappedListener, existing] : [existing, wrappedListener]; + } else if (prepend) { + existing.unshift(wrappedListener); + } else { + existing.push(wrappedListener); + } + if (this._maxListeners > 0 && existing.length > this._maxListeners && !existing._hasWarnedAboutMaxListeners) { + existing._hasWarnedAboutMaxListeners = true; + const warningMessage = [ + `Possible AsyncEventEmitter memory leak detected. ${existing.length} ${String(eventName)} listeners added to ${this.constructor.name}.`, + `Use emitter.setMaxListeners() to increase the limit.` + ].join(" "); + console.warn(warningMessage); + } + } + _wrapListener(eventName, listener, once) { + if (!once) { + return listener; + } + const state = { + fired: false, + wrapFn: void 0, + eventEmitter: this, + eventName, + listener + }; + const aliased = onceWrapper; + const wrapped = aliased.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; + } + static listenerCount(emitter, eventName) { + return emitter.listenerCount(eventName); + } + static async once(emitter, eventName, options = {}) { + const signal = options?.signal; + validateAbortSignal(signal); + if (signal?.aborted) { + throw new AbortError(void 0, { cause: getReason(signal) }); + } + return new Promise((resolve, reject) => { + const errorListener = /* @__PURE__ */ __name((err) => { + emitter.removeListener(eventName, resolver); + if (signal) { + eventTargetAgnosticRemoveListener(emitter, eventName, abortListener); + } + reject(err); + }, "errorListener"); + const resolver = /* @__PURE__ */ __name((...args) => { + emitter.removeListener("error", errorListener); + if (signal) { + eventTargetAgnosticRemoveListener(signal, "abort", abortListener); + } + resolve(args); + }, "resolver"); + emitter.once(eventName, resolver); + if (eventName !== "error") { + emitter.once("error", errorListener); + } + const abortListener = /* @__PURE__ */ __name(() => { + eventTargetAgnosticRemoveListener(emitter, eventName, resolver); + eventTargetAgnosticRemoveListener(emitter, "error", errorListener); + reject(new AbortError(void 0, { cause: getReason(signal) })); + }, "abortListener"); + if (signal) { + eventTargetAgnosticAddListener(signal, "abort", abortListener, { once: true }); + } + }); + } + static on(emitter, eventName, options = {}) { + const signal = options?.signal; + validateAbortSignal(signal); + if (signal?.aborted) { + throw new AbortError(void 0, { cause: getReason(signal) }); + } + const unconsumedEvents = []; + const unconsumedPromises = []; + let error = null; + let finished = false; + const abortListener = /* @__PURE__ */ __name(() => { + errorHandler(new AbortError(void 0, { cause: getReason(signal) })); + }, "abortListener"); + const eventHandler = /* @__PURE__ */ __name((...args) => { + const promise = unconsumedPromises.shift(); + if (promise) { + promise.resolve(createIterResult(args, false)); + } else { + unconsumedEvents.push(args); + } + }, "eventHandler"); + const errorHandler = /* @__PURE__ */ __name((err) => { + finished = true; + const toError = unconsumedPromises.shift(); + if (toError) { + toError.reject(err); + } else { + error = err; + } + void iterator.return(); + }, "errorHandler"); + const iterator = Object.setPrototypeOf( + { + next() { + const value = unconsumedEvents.shift(); + if (value) { + return Promise.resolve(createIterResult(value, false)); + } + if (error) { + const p = Promise.reject(error); + error = null; + return p; + } + if (finished) { + return Promise.resolve(createIterResult(void 0, true)); + } + return new Promise((resolve, reject) => { + unconsumedPromises.push({ resolve, reject }); + }); + }, + return() { + emitter.off(eventName, eventHandler); + emitter.off("error", errorHandler); + if (signal) { + eventTargetAgnosticRemoveListener(signal, "abort", abortListener); + } + finished = true; + const doneResult = createIterResult(void 0, true); + for (const promise of unconsumedPromises) { + promise.resolve(doneResult); + } + return Promise.resolve(doneResult); + }, + throw(err) { + if (!err || !(err instanceof Error)) { + throw new TypeError(`Expected Error instance to be thrown in AsyncEventEmitter.AsyncIterator. Got ${err}`); + } + error = err; + emitter.off(eventName, eventHandler); + emitter.off("error", errorHandler); + }, + [Symbol.asyncIterator]() { + return this; + } + }, + AsyncIteratorPrototype + ); + emitter.on(eventName, eventHandler); + if (eventName !== "error") { + emitter.on("error", errorHandler); + } + if (signal) { + eventTargetAgnosticAddListener(signal, "abort", abortListener); + } + return iterator; + } +}; +__name(AsyncEventEmitter, "AsyncEventEmitter"); +function onceWrapper() { + if (!this.fired) { + this.eventEmitter.removeListener(this.eventName, this.wrapFn); + this.fired = true; + if (arguments.length === 0) { + return this.listener.call(this.eventEmitter); + } + return this.listener.apply(this.eventEmitter, arguments); + } +} +__name(onceWrapper, "onceWrapper"); +function getReason(signal) { + return signal?.reason; +} +__name(getReason, "getReason"); +function eventTargetAgnosticRemoveListener(emitter, name, listener, flags) { + if (typeof emitter.off === "function") { + emitter.off(name, listener); + } else if (typeof emitter.removeEventListener === "function") { + emitter.removeEventListener(name, listener, flags); + } +} +__name(eventTargetAgnosticRemoveListener, "eventTargetAgnosticRemoveListener"); +function eventTargetAgnosticAddListener(emitter, name, listener, flags) { + if (typeof emitter.on === "function") { + if (flags?.once) { + emitter.once(name, listener); + } else { + emitter.on(name, listener); + } + } else if (typeof emitter.addEventListener === "function") { + emitter.addEventListener(name, listener, flags); + } +} +__name(eventTargetAgnosticAddListener, "eventTargetAgnosticAddListener"); +var AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () { +}).prototype); +function createIterResult(value, done) { + return { value, done }; +} +__name(createIterResult, "createIterResult"); +var AbortError = class extends Error { + constructor(message = "The operation was aborted", options = void 0) { + if (options !== void 0 && typeof options !== "object") { + throw new TypeError(`Failed to create AbortError: options is not an object or undefined`); + } + super(message, options); + this.code = "ABORT_ERR"; + this.name = "AbortError"; + } +}; +__name(AbortError, "AbortError"); +function handleMaybeAsync(emitter, result) { + try { + const fin = result.finally; + if (typeof fin === "function") { + const promiseId = String(++emitter["_wrapperId"]); + emitter["_internalPromiseMap"].set(promiseId, result); + fin.call(result, /* @__PURE__ */ __name(function final() { + emitter["_internalPromiseMap"].delete(promiseId); + }, "final")); + } + } catch (err) { + emitter.emit("error", err); + } +} +__name(handleMaybeAsync, "handleMaybeAsync"); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + AbortError, + AsyncEventEmitter +}); +//# sourceMappingURL=index.js.map
\ No newline at end of file diff --git a/node_modules/@vladfrangu/async_event_emitter/dist/index.js.map b/node_modules/@vladfrangu/async_event_emitter/dist/index.js.map new file mode 100644 index 0000000..776cb0c --- /dev/null +++ b/node_modules/@vladfrangu/async_event_emitter/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/dot-notation */\nfunction validateListener(input: unknown): asserts input is (...args: unknown[]) => Awaitable<void> {\n\tif (typeof input !== 'function') {\n\t\tthrow new TypeError(`The listener argument must be a function. Received ${typeof input}`);\n\t}\n}\n\nfunction validateAbortSignal(input: unknown): asserts input is AbortSignal | undefined {\n\t// Only validate that the signal is a signal if its defined\n\tif (input && !(input instanceof AbortSignal)) {\n\t\tthrow new TypeError(`The signal option must be an AbortSignal. Received ${input}`);\n\t}\n}\n\n// Inspired from https://github.com/nodejs/node/blob/42ad967d68137df1a80a877e7b5ad56403fc157f/lib/internal/util.js#L397\nfunction spliceOne(list: unknown[], index: number) {\n\tfor (; index + 1 < list.length; index++) {\n\t\tlist[index] = list[index + 1];\n\t}\n\n\tlist.pop();\n}\n\n// Inspired from https://github.com/nodejs/node/blob/42ad967d68137df1a80a877e7b5ad56403fc157f/lib/events.js#L889\nfunction arrayClone<T extends unknown[]>(arr: T): T {\n\t// At least since V8 8.3, this implementation is faster than the previous\n\t// which always used a simple for-loop\n\tswitch (arr.length) {\n\t\tcase 2:\n\t\t\treturn [arr[0], arr[1]] as T;\n\t\tcase 3:\n\t\t\treturn [arr[0], arr[1], arr[2]] as T;\n\t\tcase 4:\n\t\t\treturn [arr[0], arr[1], arr[2], arr[3]] as T;\n\t\tcase 5:\n\t\t\treturn [arr[0], arr[1], arr[2], arr[3], arr[4]] as T;\n\t\tcase 6:\n\t\t\treturn [arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]] as T;\n\t}\n\n\treturn arr.slice() as T;\n}\n\n// Inspired from https://github.com/nodejs/node/blob/42ad967d68137df1a80a877e7b5ad56403fc157f/lib/events.js#L427-L475\nfunction identicalSequenceRange(a: unknown[], b: unknown[]): [number, number] {\n\tfor (let i = 0; i < a.length - 3; i++) {\n\t\t// Find the first entry of b that matches the current entry of a.\n\t\tconst pos = b.indexOf(a[i]);\n\t\tif (pos !== -1) {\n\t\t\tconst rest = b.length - pos;\n\t\t\tif (rest > 3) {\n\t\t\t\tlet len = 1;\n\t\t\t\tconst maxLen = Math.min(a.length - i, rest);\n\t\t\t\t// Count the number of consecutive entries.\n\t\t\t\twhile (maxLen > len && a[i + len] === b[pos + len]) {\n\t\t\t\t\tlen++;\n\t\t\t\t}\n\t\t\t\tif (len > 3) {\n\t\t\t\t\treturn [len, i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn [0, 0];\n}\n\nfunction enhanceStackTrace(this: AsyncEventEmitter<any>, err: Error, own: Error) {\n\tlet ctorInfo = '';\n\ttry {\n\t\tconst { name } = this.constructor;\n\t\tif (name !== 'AsyncEventEmitter') ctorInfo = ` on ${name} instance`;\n\t} catch {\n\t\t// Continue regardless of error.\n\t}\n\tconst sep = `\\nEmitted 'error' event${ctorInfo} at:\\n`;\n\n\tconst errStack = err.stack!.split('\\n').slice(1);\n\tconst ownStack = own.stack!.split('\\n').slice(1);\n\n\tconst { 0: len, 1: off } = identicalSequenceRange(ownStack, errStack);\n\tif (len > 0) {\n\t\townStack.splice(off + 1, len - 2, ' [... lines matching original stack trace ...]');\n\t}\n\n\treturn err.stack + sep + ownStack.join('\\n');\n}\n\ninterface InternalEventMap extends Array<Listener | WrappedOnce> {\n\t_hasWarnedAboutMaxListeners?: boolean;\n}\n\nexport class AsyncEventEmitter<Events extends Record<PropertyKey, unknown[]> = Record<PropertyKey, unknown[]> & AsyncEventEmitterPredefinedEvents> {\n\tprivate _events: Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, Listener | WrappedOnce | InternalEventMap> = {\n\t\t__proto__: null\n\t} as Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, Listener | WrappedOnce | InternalEventMap>;\n\n\tprivate _eventCount = 0;\n\tprivate _maxListeners = 10;\n\tprivate _internalPromiseMap: Map<string, Promise<void>> = new Map();\n\tprivate _wrapperId = 0n;\n\n\tpublic addListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst wrapped = this._wrapListener(eventName, listener, false);\n\n\t\tthis._addListener(eventName, wrapped, false);\n\n\t\treturn this;\n\t}\n\n\tpublic on<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\treturn this.addListener(eventName, listener);\n\t}\n\n\tpublic once<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst wrapped = this._wrapListener(eventName, listener, true);\n\n\t\tthis._addListener(eventName, wrapped, false);\n\n\t\treturn this;\n\t}\n\n\tpublic removeListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst events = this._events;\n\t\tconst eventList = events[eventName];\n\n\t\tif (eventList === undefined) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (eventList === listener || (eventList as WrappedOnce).listener === listener) {\n\t\t\tif (--this._eventCount === 0) {\n\t\t\t\tthis._events = { __proto__: null } as Record<\n\t\t\t\t\tkeyof Events | keyof AsyncEventEmitterPredefinedEvents,\n\t\t\t\t\tListener | WrappedOnce | InternalEventMap\n\t\t\t\t>;\n\t\t\t} else {\n\t\t\t\tdelete events[eventName];\n\t\t\t\tif (events.removeListener) {\n\t\t\t\t\tthis.emit('removeListener', eventName as string, (eventList as WrappedOnce).listener ?? eventList);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (typeof eventList !== 'function') {\n\t\t\tlet position = -1;\n\n\t\t\tfor (let i = eventList.length - 1; i >= 0; i--) {\n\t\t\t\tif (eventList[i] === listener || (eventList[i] as WrappedOnce).listener === listener) {\n\t\t\t\t\tposition = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (position < 0) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (position === 0) {\n\t\t\t\teventList.shift();\n\t\t\t} else {\n\t\t\t\tspliceOne(eventList, position);\n\t\t\t}\n\n\t\t\tif (eventList.length === 0) {\n\t\t\t\tdelete events[eventName];\n\t\t\t\t--this._eventCount;\n\t\t\t}\n\n\t\t\tif (events.removeListener !== undefined) {\n\t\t\t\t// Thanks TypeScript for the cast...\n\t\t\t\tthis.emit('removeListener', eventName as string | symbol, listener);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tpublic off<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\treturn this.removeListener(eventName, listener);\n\t}\n\n\tpublic removeAllListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(event?: K | undefined): this {\n\t\tconst events = this._events;\n\n\t\t// Not listening for removeListener, no need to emit\n\t\tif (events.removeListener === undefined) {\n\t\t\tif (!event) {\n\t\t\t\tthis._events = { __proto__: null } as Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, InternalEventMap>;\n\t\t\t\tthis._eventCount = 0;\n\t\t\t} else if (events[event] !== undefined) {\n\t\t\t\tif (--this._eventCount === 0) {\n\t\t\t\t\tthis._events = { __proto__: null } as Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, InternalEventMap>;\n\t\t\t\t} else {\n\t\t\t\t\tdelete events[event];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\t// Emit removeListener for all listeners on all events\n\t\tif (!event) {\n\t\t\tfor (const key of Reflect.ownKeys(events)) {\n\t\t\t\tif (key === 'removeListener') {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthis.removeAllListeners(key);\n\t\t\t}\n\n\t\t\tthis.removeAllListeners('removeListener');\n\t\t\tthis._events = { __proto__: null } as Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, InternalEventMap>;\n\t\t\tthis._eventCount = 0;\n\n\t\t\treturn this;\n\t\t}\n\n\t\tconst listeners = events[event];\n\n\t\tif (typeof listeners === 'function') {\n\t\t\tthis.removeListener(event, listeners);\n\t\t} else if (listeners !== undefined) {\n\t\t\t// LIFO order\n\t\t\tfor (let i = listeners.length - 1; i >= 0; i--) {\n\t\t\t\tthis.removeListener(event, listeners[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tpublic setMaxListeners(n: number): this {\n\t\tif (typeof n !== 'number' || n < 0 || Number.isNaN(n)) {\n\t\t\tthrow new RangeError(`Expected to get a non-negative number for \"setMaxListeners\", got ${n} instead`);\n\t\t}\n\n\t\tthis._maxListeners = n;\n\n\t\treturn this;\n\t}\n\n\tpublic getMaxListeners(): number {\n\t\treturn this._maxListeners;\n\t}\n\n\tpublic listeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): Listener<Events[keyof Events]>['listener'][] {\n\t\tconst eventList = this._events[eventName];\n\n\t\tif (eventList === undefined) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (typeof eventList === 'function') {\n\t\t\treturn [eventList.listener ?? eventList];\n\t\t}\n\n\t\tconst ret = arrayClone(eventList) as Listener<Events[keyof Events]>['listener'][];\n\n\t\tfor (let i = 0; i < ret.length; ++i) {\n\t\t\tconst orig = (ret[i] as WrappedOnce).listener;\n\t\t\tif (typeof orig === 'function') {\n\t\t\t\tret[i] = orig;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\tpublic rawListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): Listener<Events[keyof Events]>[] {\n\t\tconst eventList = this._events[eventName];\n\n\t\tif (eventList === undefined) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (typeof eventList === 'function') {\n\t\t\treturn [eventList];\n\t\t}\n\n\t\treturn arrayClone(eventList) as Listener<Events[keyof Events]>[];\n\t}\n\n\tpublic emit<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\t...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]\n\t): boolean {\n\t\tlet doError = eventName === 'error';\n\n\t\tconst events = this._events;\n\t\tif (events !== undefined) {\n\t\t\tdoError = doError && events.error === undefined;\n\t\t} else if (!doError) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (doError) {\n\t\t\tlet er: unknown;\n\n\t\t\tif (args.length > 0) {\n\t\t\t\t// eslint-disable-next-line prefer-destructuring\n\t\t\t\ter = args[0];\n\t\t\t}\n\n\t\t\tif (er instanceof Error) {\n\t\t\t\ttry {\n\t\t\t\t\tconst capture = {};\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/unbound-method\n\t\t\t\t\tError.captureStackTrace(capture, AsyncEventEmitter.prototype.emit);\n\t\t\t\t\tObject.defineProperty(er, 'stack', {\n\t\t\t\t\t\tvalue: enhanceStackTrace.call(this, er, capture as Error),\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t});\n\t\t\t\t} catch {\n\t\t\t\t\t// Continue regardless of error\n\t\t\t\t}\n\n\t\t\t\tthrow er; // Unhandled 'error' event\n\t\t\t}\n\n\t\t\tconst stringifiedError = String(er);\n\n\t\t\t// Give some error to user\n\t\t\tconst err = new Error(`Unhandled 'error' event emitted, received ${stringifiedError}`);\n\t\t\t// @ts-expect-error Add context to error too\n\t\t\terr.context = er;\n\n\t\t\tthrow err; // Unhandled 'error' event\n\t\t}\n\n\t\tconst handlers = events[eventName];\n\n\t\tif (handlers === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (typeof handlers === 'function') {\n\t\t\tconst result = handlers.apply(this, args);\n\n\t\t\tif (result !== undefined && result !== null) {\n\t\t\t\thandleMaybeAsync(this, result);\n\t\t\t}\n\t\t} else {\n\t\t\tconst len = handlers.length;\n\t\t\tconst listeners = arrayClone(handlers as InternalEventMap);\n\n\t\t\tfor (let i = 0; i < len; ++i) {\n\t\t\t\t// We call all listeners regardless of the result, as we already handle possible error emits in the wrapped func\n\t\t\t\tconst result = listeners[i].apply(this, args);\n\n\t\t\t\tif (result !== undefined && result !== null) {\n\t\t\t\t\thandleMaybeAsync(this, result);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic listenerCount<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): number {\n\t\tconst events = this._events;\n\n\t\tif (events === undefined) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst eventListeners = events[eventName];\n\n\t\tif (typeof eventListeners === 'function') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn eventListeners?.length ?? 0;\n\t}\n\n\tpublic prependListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst wrapped = this._wrapListener(eventName, listener, false);\n\n\t\tthis._addListener(eventName, wrapped, true);\n\n\t\treturn this;\n\t}\n\n\tpublic prependOnceListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst wrapped = this._wrapListener(eventName, listener, true);\n\n\t\tthis._addListener(eventName, wrapped, true);\n\n\t\treturn this;\n\t}\n\n\tpublic eventNames(): (keyof Events | keyof AsyncEventEmitterPredefinedEvents)[] {\n\t\treturn this._eventCount > 0 ? Reflect.ownKeys(this._events) : [];\n\t}\n\n\tpublic async waitForAllListenersToComplete() {\n\t\tconst promises = [...this._internalPromiseMap.values()];\n\n\t\tif (promises.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tawait Promise.all(promises);\n\n\t\treturn true;\n\t}\n\n\tprivate _addListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\twrappedListener: Listener | WrappedOnce,\n\t\tprepend: boolean\n\t) {\n\t\t// Emit newListener first in the event someone is listening for it\n\t\tif (this._events.newListener !== undefined) {\n\t\t\t// Thanks TypeScript for the cast...\n\t\t\tthis.emit('newListener', eventName as string | symbol, (wrappedListener as WrappedOnce).listener ?? wrappedListener);\n\t\t}\n\n\t\tlet existing = this._events[eventName];\n\n\t\tif (existing === undefined) {\n\t\t\t// eslint-disable-next-line no-multi-assign\n\t\t\texisting = this._events[eventName] = wrappedListener;\n\t\t\t++this._eventCount;\n\t\t} else if (typeof existing === 'function') {\n\t\t\t// Adding the second element, need to change to array.\n\t\t\t// eslint-disable-next-line no-multi-assign\n\t\t\texisting = this._events[eventName] = prepend ? [wrappedListener, existing] : [existing, wrappedListener];\n\t\t\t// If we've already got an array, just append.\n\t\t} else if (prepend) {\n\t\t\texisting.unshift(wrappedListener);\n\t\t} else {\n\t\t\texisting.push(wrappedListener);\n\t\t}\n\n\t\tif (this._maxListeners > 0 && existing.length > this._maxListeners && !existing._hasWarnedAboutMaxListeners) {\n\t\t\texisting._hasWarnedAboutMaxListeners = true;\n\t\t\tconst warningMessage = [\n\t\t\t\t`Possible AsyncEventEmitter memory leak detected. ${existing.length} ${String(eventName)} listeners added to ${\n\t\t\t\t\tthis.constructor.name\n\t\t\t\t}.`,\n\t\t\t\t`Use emitter.setMaxListeners() to increase the limit.`\n\t\t\t].join(' ');\n\t\t\tconsole.warn(warningMessage);\n\t\t}\n\t}\n\n\tprivate _wrapListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => Awaitable<void>,\n\t\tonce: boolean\n\t): Listener | WrappedOnce {\n\t\tif (!once) {\n\t\t\treturn listener as Listener;\n\t\t}\n\n\t\tconst state = {\n\t\t\tfired: false,\n\t\t\twrapFn: undefined!,\n\t\t\teventEmitter: this,\n\t\t\teventName,\n\t\t\tlistener\n\t\t} as WrappedOnceState<K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]>;\n\n\t\tconst aliased = onceWrapper<K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]>;\n\n\t\tconst wrapped = aliased.bind(state) as WrappedOnce<\n\t\t\tK extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]\n\t\t>;\n\t\twrapped.listener = listener;\n\t\tstate.wrapFn = wrapped;\n\n\t\treturn wrapped as WrappedOnce;\n\t}\n\n\tpublic static listenerCount<\n\t\tEmitter extends AsyncEventEmitter<any>,\n\t\tEventNames = Emitter extends AsyncEventEmitter<infer Events> ? Events : never,\n\t\tEventName extends PropertyKey = EventNames extends never ? string | symbol : keyof EventNames\n\t>(emitter: Emitter, eventName: EventName | keyof AsyncEventEmitterPredefinedEvents) {\n\t\treturn emitter.listenerCount(eventName);\n\t}\n\n\tpublic static async once<\n\t\tEmitter extends AsyncEventEmitter<any>,\n\t\tEventNames extends Record<PropertyKey, unknown[]> = Emitter extends AsyncEventEmitter<infer Events> ? Events : Record<PropertyKey, unknown[]>,\n\t\tEventName extends PropertyKey = keyof EventNames | keyof AsyncEventEmitterPredefinedEvents,\n\t\tEventResult extends unknown[] = EventName extends keyof AsyncEventEmitterPredefinedEvents\n\t\t\t? AsyncEventEmitterPredefinedEvents[EventName]\n\t\t\t: EventNames[EventName]\n\t>(emitter: Emitter, eventName: EventName, options: AbortableMethods = {}) {\n\t\tconst signal = options?.signal;\n\t\tvalidateAbortSignal(signal);\n\n\t\tif (signal?.aborted) {\n\t\t\tthrow new AbortError(undefined, { cause: getReason(signal) });\n\t\t}\n\n\t\treturn new Promise<EventResult>((resolve, reject) => {\n\t\t\tconst errorListener = (err: unknown) => {\n\t\t\t\temitter.removeListener(eventName, resolver);\n\n\t\t\t\tif (signal) {\n\t\t\t\t\teventTargetAgnosticRemoveListener(emitter, eventName, abortListener);\n\t\t\t\t}\n\n\t\t\t\treject(err);\n\t\t\t};\n\n\t\t\tconst resolver = (...args: unknown[]) => {\n\t\t\t\temitter.removeListener('error', errorListener);\n\n\t\t\t\tif (signal) {\n\t\t\t\t\teventTargetAgnosticRemoveListener(signal, 'abort', abortListener);\n\t\t\t\t}\n\n\t\t\t\tresolve(args as EventResult);\n\t\t\t};\n\n\t\t\temitter.once(eventName, resolver);\n\t\t\tif (eventName !== 'error') {\n\t\t\t\temitter.once('error', errorListener);\n\t\t\t}\n\n\t\t\tconst abortListener = () => {\n\t\t\t\teventTargetAgnosticRemoveListener(emitter, eventName, resolver);\n\t\t\t\teventTargetAgnosticRemoveListener(emitter, 'error', errorListener);\n\t\t\t\treject(new AbortError(undefined, { cause: getReason(signal) }));\n\t\t\t};\n\n\t\t\tif (signal) {\n\t\t\t\teventTargetAgnosticAddListener(signal, 'abort', abortListener, { once: true });\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic static on<\n\t\tEmitter extends AsyncEventEmitter<any>,\n\t\tEventNames extends Record<PropertyKey, unknown[]> = Emitter extends AsyncEventEmitter<infer Events> ? Events : Record<PropertyKey, unknown[]>,\n\t\tEventName extends PropertyKey = keyof EventNames | keyof AsyncEventEmitterPredefinedEvents,\n\t\tEventResult extends unknown[] = EventName extends keyof AsyncEventEmitterPredefinedEvents\n\t\t\t? AsyncEventEmitterPredefinedEvents[EventName]\n\t\t\t: EventNames[EventName]\n\t>(emitter: Emitter, eventName: EventName, options: AbortableMethods = {}): AsyncGenerator<EventResult, void> {\n\t\tconst signal = options?.signal;\n\t\tvalidateAbortSignal(signal);\n\n\t\tif (signal?.aborted) {\n\t\t\tthrow new AbortError(undefined, { cause: getReason(signal) });\n\t\t}\n\n\t\tconst unconsumedEvents: unknown[][] = [];\n\t\tconst unconsumedPromises: { resolve: (value?: unknown) => void; reject: (reason?: unknown) => void }[] = [];\n\t\tlet error: unknown = null;\n\t\tlet finished = false;\n\n\t\tconst abortListener = () => {\n\t\t\terrorHandler(new AbortError(undefined, { cause: getReason(signal) }));\n\t\t};\n\n\t\tconst eventHandler = (...args: unknown[]) => {\n\t\t\tconst promise = unconsumedPromises.shift();\n\t\t\tif (promise) {\n\t\t\t\tpromise.resolve(createIterResult(args, false));\n\t\t\t} else {\n\t\t\t\tunconsumedEvents.push(args);\n\t\t\t}\n\t\t};\n\n\t\tconst errorHandler = (err: unknown) => {\n\t\t\tfinished = true;\n\n\t\t\tconst toError = unconsumedPromises.shift();\n\n\t\t\tif (toError) {\n\t\t\t\ttoError.reject(err);\n\t\t\t} else {\n\t\t\t\terror = err;\n\t\t\t}\n\n\t\t\tvoid iterator.return();\n\t\t};\n\n\t\tconst iterator: AsyncGenerator<EventResult, void> = Object.setPrototypeOf(\n\t\t\t{\n\t\t\t\tnext() {\n\t\t\t\t\t// First, we consume all unread events\n\t\t\t\t\tconst value = unconsumedEvents.shift();\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\treturn Promise.resolve(createIterResult(value, false));\n\t\t\t\t\t}\n\n\t\t\t\t\t// Then we error, if an error happened\n\t\t\t\t\t// This happens one time if at all, because after 'error'\n\t\t\t\t\t// we stop listening\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\tconst p = Promise.reject(error);\n\t\t\t\t\t\t// Only the first element errors\n\t\t\t\t\t\terror = null;\n\t\t\t\t\t\treturn p;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the iterator is finished, resolve to done\n\t\t\t\t\tif (finished) {\n\t\t\t\t\t\treturn Promise.resolve(createIterResult(undefined, true));\n\t\t\t\t\t}\n\n\t\t\t\t\t// Wait until an event happens\n\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t\tunconsumedPromises.push({ resolve, reject });\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\treturn() {\n\t\t\t\t\temitter.off(eventName, eventHandler);\n\t\t\t\t\temitter.off('error', errorHandler);\n\n\t\t\t\t\tif (signal) {\n\t\t\t\t\t\teventTargetAgnosticRemoveListener(signal, 'abort', abortListener);\n\t\t\t\t\t}\n\n\t\t\t\t\tfinished = true;\n\n\t\t\t\t\tconst doneResult = createIterResult(undefined, true);\n\t\t\t\t\tfor (const promise of unconsumedPromises) {\n\t\t\t\t\t\tpromise.resolve(doneResult);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.resolve(doneResult);\n\t\t\t\t},\n\n\t\t\t\tthrow(err: unknown) {\n\t\t\t\t\tif (!err || !(err instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Expected Error instance to be thrown in AsyncEventEmitter.AsyncIterator. Got ${err}`);\n\t\t\t\t\t}\n\n\t\t\t\t\terror = err;\n\t\t\t\t\temitter.off(eventName, eventHandler);\n\t\t\t\t\temitter.off('error', errorHandler);\n\t\t\t\t},\n\n\t\t\t\t[Symbol.asyncIterator]() {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t},\n\t\t\tAsyncIteratorPrototype\n\t\t);\n\n\t\temitter.on(eventName, eventHandler);\n\t\tif (eventName !== 'error') {\n\t\t\temitter.on('error', errorHandler);\n\t\t}\n\n\t\tif (signal) {\n\t\t\teventTargetAgnosticAddListener(signal, 'abort', abortListener);\n\t\t}\n\n\t\treturn iterator;\n\t}\n}\n\nexport interface AsyncEventEmitterPredefinedEvents {\n\tnewListener: [eventName: string | symbol, listener: (...args: any[]) => Awaitable<void>];\n\tremoveListener: [eventName: string | symbol, listener: (...args: any[]) => Awaitable<void>];\n}\n\ninterface WrappedOnceState<Args extends any[] = any[]> {\n\tlistener: (...args: Args) => Awaitable<void>;\n\tfired: boolean;\n\teventName: string | symbol;\n\teventEmitter: AsyncEventEmitter<any>;\n\twrapFn: (...args: Args) => Awaitable<void>;\n}\n\nexport interface WrappedOnce<Args extends any[] = any[]> {\n\t(...args: Args): Awaitable<void>;\n\tlistener: (...args: Args) => Awaitable<void>;\n\t_hasWarnedAboutMaxListeners?: boolean;\n}\n\nexport interface Listener<Args extends any[] = any[]> {\n\t(...args: Args): Awaitable<void>;\n\tlistener: (...args: Args) => Awaitable<void>;\n\t_hasWarnedAboutMaxListeners?: boolean;\n}\n\nexport type Awaitable<T> = T | Promise<T>;\n\nexport interface AbortableMethods {\n\tsignal?: AbortSignal;\n}\n\n// @ts-ignore Not all paths returning is fine just fine:tm:\nfunction onceWrapper<Args extends any[] = any[]>(this: WrappedOnceState<Args>) {\n\tif (!this.fired) {\n\t\tthis.eventEmitter.removeListener(this.eventName, this.wrapFn);\n\t\tthis.fired = true;\n\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\tif (arguments.length === 0) {\n\t\t\t// @ts-expect-error Types can be hell\n\t\t\treturn this.listener.call(this.eventEmitter);\n\t\t}\n\n\t\t// eslint-disable-next-line prefer-rest-params\n\t\treturn this.listener.apply(this.eventEmitter, arguments as unknown as Args);\n\t}\n}\n\n/**\n * A TypeScript not-compliant way of accessing AbortSignal#reason\n * Because DOM types have it, NodeJS types don't. -w-\n */\nfunction getReason(signal: any) {\n\treturn signal?.reason;\n}\n\nfunction eventTargetAgnosticRemoveListener(emitter: any, name: PropertyKey, listener: (...args: unknown[]) => any, flags?: InternalAgnosticFlags) {\n\tif (typeof emitter.off === 'function') {\n\t\temitter.off(name, listener);\n\t} else if (typeof emitter.removeEventListener === 'function') {\n\t\temitter.removeEventListener(name, listener, flags);\n\t}\n}\n\nfunction eventTargetAgnosticAddListener(emitter: any, name: string | symbol, listener: (...args: unknown[]) => any, flags?: InternalAgnosticFlags) {\n\tif (typeof emitter.on === 'function') {\n\t\tif (flags?.once) {\n\t\t\temitter.once!(name, listener);\n\t\t} else {\n\t\t\temitter.on(name, listener);\n\t\t}\n\t} else if (typeof emitter.addEventListener === 'function') {\n\t\temitter.addEventListener(name, listener, flags);\n\t}\n}\n\ninterface InternalAgnosticFlags {\n\tonce?: boolean;\n}\n\n// eslint-disable-next-line func-names, @typescript-eslint/no-empty-function\nconst AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () {}).prototype);\n\nfunction createIterResult(value: unknown, done: boolean) {\n\treturn { value, done };\n}\n\nexport interface AbortErrorOptions {\n\tcause?: unknown;\n}\n\nexport class AbortError extends Error {\n\tpublic readonly code = 'ABORT_ERR';\n\tpublic override readonly name = 'AbortError';\n\n\tpublic constructor(message = 'The operation was aborted', options: AbortErrorOptions | undefined = undefined) {\n\t\tif (options !== undefined && typeof options !== 'object') {\n\t\t\tthrow new TypeError(`Failed to create AbortError: options is not an object or undefined`);\n\t\t}\n\n\t\tsuper(message, options);\n\t}\n}\n\nfunction handleMaybeAsync(emitter: AsyncEventEmitter<any>, result: any) {\n\ttry {\n\t\tconst fin = result.finally;\n\n\t\tif (typeof fin === 'function') {\n\t\t\tconst promiseId = String(++emitter['_wrapperId']);\n\t\t\temitter['_internalPromiseMap'].set(promiseId, result);\n\t\t\tfin.call(result, function final() {\n\t\t\t\temitter['_internalPromiseMap'].delete(promiseId);\n\t\t\t});\n\t\t}\n\t} catch (err) {\n\t\temitter.emit('error', err);\n\t}\n}\n"],"mappings":"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","names":[]}
\ No newline at end of file diff --git a/node_modules/@vladfrangu/async_event_emitter/dist/index.mjs b/node_modules/@vladfrangu/async_event_emitter/dist/index.mjs new file mode 100644 index 0000000..9987787 --- /dev/null +++ b/node_modules/@vladfrangu/async_event_emitter/dist/index.mjs @@ -0,0 +1,547 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// src/index.ts +function validateListener(input) { + if (typeof input !== "function") { + throw new TypeError(`The listener argument must be a function. Received ${typeof input}`); + } +} +__name(validateListener, "validateListener"); +function validateAbortSignal(input) { + if (input && !(input instanceof AbortSignal)) { + throw new TypeError(`The signal option must be an AbortSignal. Received ${input}`); + } +} +__name(validateAbortSignal, "validateAbortSignal"); +function spliceOne(list, index) { + for (; index + 1 < list.length; index++) { + list[index] = list[index + 1]; + } + list.pop(); +} +__name(spliceOne, "spliceOne"); +function arrayClone(arr) { + switch (arr.length) { + case 2: + return [arr[0], arr[1]]; + case 3: + return [arr[0], arr[1], arr[2]]; + case 4: + return [arr[0], arr[1], arr[2], arr[3]]; + case 5: + return [arr[0], arr[1], arr[2], arr[3], arr[4]]; + case 6: + return [arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]]; + } + return arr.slice(); +} +__name(arrayClone, "arrayClone"); +function identicalSequenceRange(a, b) { + for (let i = 0; i < a.length - 3; i++) { + const pos = b.indexOf(a[i]); + if (pos !== -1) { + const rest = b.length - pos; + if (rest > 3) { + let len = 1; + const maxLen = Math.min(a.length - i, rest); + while (maxLen > len && a[i + len] === b[pos + len]) { + len++; + } + if (len > 3) { + return [len, i]; + } + } + } + } + return [0, 0]; +} +__name(identicalSequenceRange, "identicalSequenceRange"); +function enhanceStackTrace(err, own) { + let ctorInfo = ""; + try { + const { name } = this.constructor; + if (name !== "AsyncEventEmitter") + ctorInfo = ` on ${name} instance`; + } catch { + } + const sep = ` +Emitted 'error' event${ctorInfo} at: +`; + const errStack = err.stack.split("\n").slice(1); + const ownStack = own.stack.split("\n").slice(1); + const { 0: len, 1: off } = identicalSequenceRange(ownStack, errStack); + if (len > 0) { + ownStack.splice(off + 1, len - 2, " [... lines matching original stack trace ...]"); + } + return err.stack + sep + ownStack.join("\n"); +} +__name(enhanceStackTrace, "enhanceStackTrace"); +var AsyncEventEmitter = class { + constructor() { + this._events = { + __proto__: null + }; + this._eventCount = 0; + this._maxListeners = 10; + this._internalPromiseMap = /* @__PURE__ */ new Map(); + this._wrapperId = 0n; + } + addListener(eventName, listener) { + validateListener(listener); + const wrapped = this._wrapListener(eventName, listener, false); + this._addListener(eventName, wrapped, false); + return this; + } + on(eventName, listener) { + return this.addListener(eventName, listener); + } + once(eventName, listener) { + validateListener(listener); + const wrapped = this._wrapListener(eventName, listener, true); + this._addListener(eventName, wrapped, false); + return this; + } + removeListener(eventName, listener) { + validateListener(listener); + const events = this._events; + const eventList = events[eventName]; + if (eventList === void 0) { + return this; + } + if (eventList === listener || eventList.listener === listener) { + if (--this._eventCount === 0) { + this._events = { __proto__: null }; + } else { + delete events[eventName]; + if (events.removeListener) { + this.emit("removeListener", eventName, eventList.listener ?? eventList); + } + } + } else if (typeof eventList !== "function") { + let position = -1; + for (let i = eventList.length - 1; i >= 0; i--) { + if (eventList[i] === listener || eventList[i].listener === listener) { + position = i; + break; + } + } + if (position < 0) { + return this; + } + if (position === 0) { + eventList.shift(); + } else { + spliceOne(eventList, position); + } + if (eventList.length === 0) { + delete events[eventName]; + --this._eventCount; + } + if (events.removeListener !== void 0) { + this.emit("removeListener", eventName, listener); + } + } + return this; + } + off(eventName, listener) { + return this.removeListener(eventName, listener); + } + removeAllListeners(event) { + const events = this._events; + if (events.removeListener === void 0) { + if (!event) { + this._events = { __proto__: null }; + this._eventCount = 0; + } else if (events[event] !== void 0) { + if (--this._eventCount === 0) { + this._events = { __proto__: null }; + } else { + delete events[event]; + } + } + return this; + } + if (!event) { + for (const key of Reflect.ownKeys(events)) { + if (key === "removeListener") { + continue; + } + this.removeAllListeners(key); + } + this.removeAllListeners("removeListener"); + this._events = { __proto__: null }; + this._eventCount = 0; + return this; + } + const listeners = events[event]; + if (typeof listeners === "function") { + this.removeListener(event, listeners); + } else if (listeners !== void 0) { + for (let i = listeners.length - 1; i >= 0; i--) { + this.removeListener(event, listeners[i]); + } + } + return this; + } + setMaxListeners(n) { + if (typeof n !== "number" || n < 0 || Number.isNaN(n)) { + throw new RangeError(`Expected to get a non-negative number for "setMaxListeners", got ${n} instead`); + } + this._maxListeners = n; + return this; + } + getMaxListeners() { + return this._maxListeners; + } + listeners(eventName) { + const eventList = this._events[eventName]; + if (eventList === void 0) { + return []; + } + if (typeof eventList === "function") { + return [eventList.listener ?? eventList]; + } + const ret = arrayClone(eventList); + for (let i = 0; i < ret.length; ++i) { + const orig = ret[i].listener; + if (typeof orig === "function") { + ret[i] = orig; + } + } + return ret; + } + rawListeners(eventName) { + const eventList = this._events[eventName]; + if (eventList === void 0) { + return []; + } + if (typeof eventList === "function") { + return [eventList]; + } + return arrayClone(eventList); + } + emit(eventName, ...args) { + let doError = eventName === "error"; + const events = this._events; + if (events !== void 0) { + doError = doError && events.error === void 0; + } else if (!doError) { + return false; + } + if (doError) { + let er; + if (args.length > 0) { + er = args[0]; + } + if (er instanceof Error) { + try { + const capture = {}; + Error.captureStackTrace(capture, AsyncEventEmitter.prototype.emit); + Object.defineProperty(er, "stack", { + value: enhanceStackTrace.call(this, er, capture), + configurable: true + }); + } catch { + } + throw er; // Unhandled 'error' event + } + const stringifiedError = String(er); + const err = new Error(`Unhandled 'error' event emitted, received ${stringifiedError}`); + err.context = er; + throw err; // Unhandled 'error' event + } + const handlers = events[eventName]; + if (handlers === void 0) { + return false; + } + if (typeof handlers === "function") { + const result = handlers.apply(this, args); + if (result !== void 0 && result !== null) { + handleMaybeAsync(this, result); + } + } else { + const len = handlers.length; + const listeners = arrayClone(handlers); + for (let i = 0; i < len; ++i) { + const result = listeners[i].apply(this, args); + if (result !== void 0 && result !== null) { + handleMaybeAsync(this, result); + } + } + } + return true; + } + listenerCount(eventName) { + const events = this._events; + if (events === void 0) { + return 0; + } + const eventListeners = events[eventName]; + if (typeof eventListeners === "function") { + return 1; + } + return eventListeners?.length ?? 0; + } + prependListener(eventName, listener) { + validateListener(listener); + const wrapped = this._wrapListener(eventName, listener, false); + this._addListener(eventName, wrapped, true); + return this; + } + prependOnceListener(eventName, listener) { + validateListener(listener); + const wrapped = this._wrapListener(eventName, listener, true); + this._addListener(eventName, wrapped, true); + return this; + } + eventNames() { + return this._eventCount > 0 ? Reflect.ownKeys(this._events) : []; + } + async waitForAllListenersToComplete() { + const promises = [...this._internalPromiseMap.values()]; + if (promises.length === 0) { + return false; + } + await Promise.all(promises); + return true; + } + _addListener(eventName, wrappedListener, prepend) { + if (this._events.newListener !== void 0) { + this.emit("newListener", eventName, wrappedListener.listener ?? wrappedListener); + } + let existing = this._events[eventName]; + if (existing === void 0) { + existing = this._events[eventName] = wrappedListener; + ++this._eventCount; + } else if (typeof existing === "function") { + existing = this._events[eventName] = prepend ? [wrappedListener, existing] : [existing, wrappedListener]; + } else if (prepend) { + existing.unshift(wrappedListener); + } else { + existing.push(wrappedListener); + } + if (this._maxListeners > 0 && existing.length > this._maxListeners && !existing._hasWarnedAboutMaxListeners) { + existing._hasWarnedAboutMaxListeners = true; + const warningMessage = [ + `Possible AsyncEventEmitter memory leak detected. ${existing.length} ${String(eventName)} listeners added to ${this.constructor.name}.`, + `Use emitter.setMaxListeners() to increase the limit.` + ].join(" "); + console.warn(warningMessage); + } + } + _wrapListener(eventName, listener, once) { + if (!once) { + return listener; + } + const state = { + fired: false, + wrapFn: void 0, + eventEmitter: this, + eventName, + listener + }; + const aliased = onceWrapper; + const wrapped = aliased.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; + } + static listenerCount(emitter, eventName) { + return emitter.listenerCount(eventName); + } + static async once(emitter, eventName, options = {}) { + const signal = options?.signal; + validateAbortSignal(signal); + if (signal?.aborted) { + throw new AbortError(void 0, { cause: getReason(signal) }); + } + return new Promise((resolve, reject) => { + const errorListener = /* @__PURE__ */ __name((err) => { + emitter.removeListener(eventName, resolver); + if (signal) { + eventTargetAgnosticRemoveListener(emitter, eventName, abortListener); + } + reject(err); + }, "errorListener"); + const resolver = /* @__PURE__ */ __name((...args) => { + emitter.removeListener("error", errorListener); + if (signal) { + eventTargetAgnosticRemoveListener(signal, "abort", abortListener); + } + resolve(args); + }, "resolver"); + emitter.once(eventName, resolver); + if (eventName !== "error") { + emitter.once("error", errorListener); + } + const abortListener = /* @__PURE__ */ __name(() => { + eventTargetAgnosticRemoveListener(emitter, eventName, resolver); + eventTargetAgnosticRemoveListener(emitter, "error", errorListener); + reject(new AbortError(void 0, { cause: getReason(signal) })); + }, "abortListener"); + if (signal) { + eventTargetAgnosticAddListener(signal, "abort", abortListener, { once: true }); + } + }); + } + static on(emitter, eventName, options = {}) { + const signal = options?.signal; + validateAbortSignal(signal); + if (signal?.aborted) { + throw new AbortError(void 0, { cause: getReason(signal) }); + } + const unconsumedEvents = []; + const unconsumedPromises = []; + let error = null; + let finished = false; + const abortListener = /* @__PURE__ */ __name(() => { + errorHandler(new AbortError(void 0, { cause: getReason(signal) })); + }, "abortListener"); + const eventHandler = /* @__PURE__ */ __name((...args) => { + const promise = unconsumedPromises.shift(); + if (promise) { + promise.resolve(createIterResult(args, false)); + } else { + unconsumedEvents.push(args); + } + }, "eventHandler"); + const errorHandler = /* @__PURE__ */ __name((err) => { + finished = true; + const toError = unconsumedPromises.shift(); + if (toError) { + toError.reject(err); + } else { + error = err; + } + void iterator.return(); + }, "errorHandler"); + const iterator = Object.setPrototypeOf( + { + next() { + const value = unconsumedEvents.shift(); + if (value) { + return Promise.resolve(createIterResult(value, false)); + } + if (error) { + const p = Promise.reject(error); + error = null; + return p; + } + if (finished) { + return Promise.resolve(createIterResult(void 0, true)); + } + return new Promise((resolve, reject) => { + unconsumedPromises.push({ resolve, reject }); + }); + }, + return() { + emitter.off(eventName, eventHandler); + emitter.off("error", errorHandler); + if (signal) { + eventTargetAgnosticRemoveListener(signal, "abort", abortListener); + } + finished = true; + const doneResult = createIterResult(void 0, true); + for (const promise of unconsumedPromises) { + promise.resolve(doneResult); + } + return Promise.resolve(doneResult); + }, + throw(err) { + if (!err || !(err instanceof Error)) { + throw new TypeError(`Expected Error instance to be thrown in AsyncEventEmitter.AsyncIterator. Got ${err}`); + } + error = err; + emitter.off(eventName, eventHandler); + emitter.off("error", errorHandler); + }, + [Symbol.asyncIterator]() { + return this; + } + }, + AsyncIteratorPrototype + ); + emitter.on(eventName, eventHandler); + if (eventName !== "error") { + emitter.on("error", errorHandler); + } + if (signal) { + eventTargetAgnosticAddListener(signal, "abort", abortListener); + } + return iterator; + } +}; +__name(AsyncEventEmitter, "AsyncEventEmitter"); +function onceWrapper() { + if (!this.fired) { + this.eventEmitter.removeListener(this.eventName, this.wrapFn); + this.fired = true; + if (arguments.length === 0) { + return this.listener.call(this.eventEmitter); + } + return this.listener.apply(this.eventEmitter, arguments); + } +} +__name(onceWrapper, "onceWrapper"); +function getReason(signal) { + return signal?.reason; +} +__name(getReason, "getReason"); +function eventTargetAgnosticRemoveListener(emitter, name, listener, flags) { + if (typeof emitter.off === "function") { + emitter.off(name, listener); + } else if (typeof emitter.removeEventListener === "function") { + emitter.removeEventListener(name, listener, flags); + } +} +__name(eventTargetAgnosticRemoveListener, "eventTargetAgnosticRemoveListener"); +function eventTargetAgnosticAddListener(emitter, name, listener, flags) { + if (typeof emitter.on === "function") { + if (flags?.once) { + emitter.once(name, listener); + } else { + emitter.on(name, listener); + } + } else if (typeof emitter.addEventListener === "function") { + emitter.addEventListener(name, listener, flags); + } +} +__name(eventTargetAgnosticAddListener, "eventTargetAgnosticAddListener"); +var AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () { +}).prototype); +function createIterResult(value, done) { + return { value, done }; +} +__name(createIterResult, "createIterResult"); +var AbortError = class extends Error { + constructor(message = "The operation was aborted", options = void 0) { + if (options !== void 0 && typeof options !== "object") { + throw new TypeError(`Failed to create AbortError: options is not an object or undefined`); + } + super(message, options); + this.code = "ABORT_ERR"; + this.name = "AbortError"; + } +}; +__name(AbortError, "AbortError"); +function handleMaybeAsync(emitter, result) { + try { + const fin = result.finally; + if (typeof fin === "function") { + const promiseId = String(++emitter["_wrapperId"]); + emitter["_internalPromiseMap"].set(promiseId, result); + fin.call(result, /* @__PURE__ */ __name(function final() { + emitter["_internalPromiseMap"].delete(promiseId); + }, "final")); + } + } catch (err) { + emitter.emit("error", err); + } +} +__name(handleMaybeAsync, "handleMaybeAsync"); +export { + AbortError, + AsyncEventEmitter +}; +//# sourceMappingURL=index.mjs.map
\ No newline at end of file diff --git a/node_modules/@vladfrangu/async_event_emitter/dist/index.mjs.map b/node_modules/@vladfrangu/async_event_emitter/dist/index.mjs.map new file mode 100644 index 0000000..3c8b39a --- /dev/null +++ b/node_modules/@vladfrangu/async_event_emitter/dist/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/dot-notation */\nfunction validateListener(input: unknown): asserts input is (...args: unknown[]) => Awaitable<void> {\n\tif (typeof input !== 'function') {\n\t\tthrow new TypeError(`The listener argument must be a function. Received ${typeof input}`);\n\t}\n}\n\nfunction validateAbortSignal(input: unknown): asserts input is AbortSignal | undefined {\n\t// Only validate that the signal is a signal if its defined\n\tif (input && !(input instanceof AbortSignal)) {\n\t\tthrow new TypeError(`The signal option must be an AbortSignal. Received ${input}`);\n\t}\n}\n\n// Inspired from https://github.com/nodejs/node/blob/42ad967d68137df1a80a877e7b5ad56403fc157f/lib/internal/util.js#L397\nfunction spliceOne(list: unknown[], index: number) {\n\tfor (; index + 1 < list.length; index++) {\n\t\tlist[index] = list[index + 1];\n\t}\n\n\tlist.pop();\n}\n\n// Inspired from https://github.com/nodejs/node/blob/42ad967d68137df1a80a877e7b5ad56403fc157f/lib/events.js#L889\nfunction arrayClone<T extends unknown[]>(arr: T): T {\n\t// At least since V8 8.3, this implementation is faster than the previous\n\t// which always used a simple for-loop\n\tswitch (arr.length) {\n\t\tcase 2:\n\t\t\treturn [arr[0], arr[1]] as T;\n\t\tcase 3:\n\t\t\treturn [arr[0], arr[1], arr[2]] as T;\n\t\tcase 4:\n\t\t\treturn [arr[0], arr[1], arr[2], arr[3]] as T;\n\t\tcase 5:\n\t\t\treturn [arr[0], arr[1], arr[2], arr[3], arr[4]] as T;\n\t\tcase 6:\n\t\t\treturn [arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]] as T;\n\t}\n\n\treturn arr.slice() as T;\n}\n\n// Inspired from https://github.com/nodejs/node/blob/42ad967d68137df1a80a877e7b5ad56403fc157f/lib/events.js#L427-L475\nfunction identicalSequenceRange(a: unknown[], b: unknown[]): [number, number] {\n\tfor (let i = 0; i < a.length - 3; i++) {\n\t\t// Find the first entry of b that matches the current entry of a.\n\t\tconst pos = b.indexOf(a[i]);\n\t\tif (pos !== -1) {\n\t\t\tconst rest = b.length - pos;\n\t\t\tif (rest > 3) {\n\t\t\t\tlet len = 1;\n\t\t\t\tconst maxLen = Math.min(a.length - i, rest);\n\t\t\t\t// Count the number of consecutive entries.\n\t\t\t\twhile (maxLen > len && a[i + len] === b[pos + len]) {\n\t\t\t\t\tlen++;\n\t\t\t\t}\n\t\t\t\tif (len > 3) {\n\t\t\t\t\treturn [len, i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn [0, 0];\n}\n\nfunction enhanceStackTrace(this: AsyncEventEmitter<any>, err: Error, own: Error) {\n\tlet ctorInfo = '';\n\ttry {\n\t\tconst { name } = this.constructor;\n\t\tif (name !== 'AsyncEventEmitter') ctorInfo = ` on ${name} instance`;\n\t} catch {\n\t\t// Continue regardless of error.\n\t}\n\tconst sep = `\\nEmitted 'error' event${ctorInfo} at:\\n`;\n\n\tconst errStack = err.stack!.split('\\n').slice(1);\n\tconst ownStack = own.stack!.split('\\n').slice(1);\n\n\tconst { 0: len, 1: off } = identicalSequenceRange(ownStack, errStack);\n\tif (len > 0) {\n\t\townStack.splice(off + 1, len - 2, ' [... lines matching original stack trace ...]');\n\t}\n\n\treturn err.stack + sep + ownStack.join('\\n');\n}\n\ninterface InternalEventMap extends Array<Listener | WrappedOnce> {\n\t_hasWarnedAboutMaxListeners?: boolean;\n}\n\nexport class AsyncEventEmitter<Events extends Record<PropertyKey, unknown[]> = Record<PropertyKey, unknown[]> & AsyncEventEmitterPredefinedEvents> {\n\tprivate _events: Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, Listener | WrappedOnce | InternalEventMap> = {\n\t\t__proto__: null\n\t} as Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, Listener | WrappedOnce | InternalEventMap>;\n\n\tprivate _eventCount = 0;\n\tprivate _maxListeners = 10;\n\tprivate _internalPromiseMap: Map<string, Promise<void>> = new Map();\n\tprivate _wrapperId = 0n;\n\n\tpublic addListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst wrapped = this._wrapListener(eventName, listener, false);\n\n\t\tthis._addListener(eventName, wrapped, false);\n\n\t\treturn this;\n\t}\n\n\tpublic on<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\treturn this.addListener(eventName, listener);\n\t}\n\n\tpublic once<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst wrapped = this._wrapListener(eventName, listener, true);\n\n\t\tthis._addListener(eventName, wrapped, false);\n\n\t\treturn this;\n\t}\n\n\tpublic removeListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst events = this._events;\n\t\tconst eventList = events[eventName];\n\n\t\tif (eventList === undefined) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (eventList === listener || (eventList as WrappedOnce).listener === listener) {\n\t\t\tif (--this._eventCount === 0) {\n\t\t\t\tthis._events = { __proto__: null } as Record<\n\t\t\t\t\tkeyof Events | keyof AsyncEventEmitterPredefinedEvents,\n\t\t\t\t\tListener | WrappedOnce | InternalEventMap\n\t\t\t\t>;\n\t\t\t} else {\n\t\t\t\tdelete events[eventName];\n\t\t\t\tif (events.removeListener) {\n\t\t\t\t\tthis.emit('removeListener', eventName as string, (eventList as WrappedOnce).listener ?? eventList);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (typeof eventList !== 'function') {\n\t\t\tlet position = -1;\n\n\t\t\tfor (let i = eventList.length - 1; i >= 0; i--) {\n\t\t\t\tif (eventList[i] === listener || (eventList[i] as WrappedOnce).listener === listener) {\n\t\t\t\t\tposition = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (position < 0) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (position === 0) {\n\t\t\t\teventList.shift();\n\t\t\t} else {\n\t\t\t\tspliceOne(eventList, position);\n\t\t\t}\n\n\t\t\tif (eventList.length === 0) {\n\t\t\t\tdelete events[eventName];\n\t\t\t\t--this._eventCount;\n\t\t\t}\n\n\t\t\tif (events.removeListener !== undefined) {\n\t\t\t\t// Thanks TypeScript for the cast...\n\t\t\t\tthis.emit('removeListener', eventName as string | symbol, listener);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tpublic off<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\treturn this.removeListener(eventName, listener);\n\t}\n\n\tpublic removeAllListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(event?: K | undefined): this {\n\t\tconst events = this._events;\n\n\t\t// Not listening for removeListener, no need to emit\n\t\tif (events.removeListener === undefined) {\n\t\t\tif (!event) {\n\t\t\t\tthis._events = { __proto__: null } as Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, InternalEventMap>;\n\t\t\t\tthis._eventCount = 0;\n\t\t\t} else if (events[event] !== undefined) {\n\t\t\t\tif (--this._eventCount === 0) {\n\t\t\t\t\tthis._events = { __proto__: null } as Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, InternalEventMap>;\n\t\t\t\t} else {\n\t\t\t\t\tdelete events[event];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\t// Emit removeListener for all listeners on all events\n\t\tif (!event) {\n\t\t\tfor (const key of Reflect.ownKeys(events)) {\n\t\t\t\tif (key === 'removeListener') {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthis.removeAllListeners(key);\n\t\t\t}\n\n\t\t\tthis.removeAllListeners('removeListener');\n\t\t\tthis._events = { __proto__: null } as Record<keyof Events | keyof AsyncEventEmitterPredefinedEvents, InternalEventMap>;\n\t\t\tthis._eventCount = 0;\n\n\t\t\treturn this;\n\t\t}\n\n\t\tconst listeners = events[event];\n\n\t\tif (typeof listeners === 'function') {\n\t\t\tthis.removeListener(event, listeners);\n\t\t} else if (listeners !== undefined) {\n\t\t\t// LIFO order\n\t\t\tfor (let i = listeners.length - 1; i >= 0; i--) {\n\t\t\t\tthis.removeListener(event, listeners[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tpublic setMaxListeners(n: number): this {\n\t\tif (typeof n !== 'number' || n < 0 || Number.isNaN(n)) {\n\t\t\tthrow new RangeError(`Expected to get a non-negative number for \"setMaxListeners\", got ${n} instead`);\n\t\t}\n\n\t\tthis._maxListeners = n;\n\n\t\treturn this;\n\t}\n\n\tpublic getMaxListeners(): number {\n\t\treturn this._maxListeners;\n\t}\n\n\tpublic listeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): Listener<Events[keyof Events]>['listener'][] {\n\t\tconst eventList = this._events[eventName];\n\n\t\tif (eventList === undefined) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (typeof eventList === 'function') {\n\t\t\treturn [eventList.listener ?? eventList];\n\t\t}\n\n\t\tconst ret = arrayClone(eventList) as Listener<Events[keyof Events]>['listener'][];\n\n\t\tfor (let i = 0; i < ret.length; ++i) {\n\t\t\tconst orig = (ret[i] as WrappedOnce).listener;\n\t\t\tif (typeof orig === 'function') {\n\t\t\t\tret[i] = orig;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\tpublic rawListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): Listener<Events[keyof Events]>[] {\n\t\tconst eventList = this._events[eventName];\n\n\t\tif (eventList === undefined) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (typeof eventList === 'function') {\n\t\t\treturn [eventList];\n\t\t}\n\n\t\treturn arrayClone(eventList) as Listener<Events[keyof Events]>[];\n\t}\n\n\tpublic emit<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\t...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]\n\t): boolean {\n\t\tlet doError = eventName === 'error';\n\n\t\tconst events = this._events;\n\t\tif (events !== undefined) {\n\t\t\tdoError = doError && events.error === undefined;\n\t\t} else if (!doError) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (doError) {\n\t\t\tlet er: unknown;\n\n\t\t\tif (args.length > 0) {\n\t\t\t\t// eslint-disable-next-line prefer-destructuring\n\t\t\t\ter = args[0];\n\t\t\t}\n\n\t\t\tif (er instanceof Error) {\n\t\t\t\ttry {\n\t\t\t\t\tconst capture = {};\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/unbound-method\n\t\t\t\t\tError.captureStackTrace(capture, AsyncEventEmitter.prototype.emit);\n\t\t\t\t\tObject.defineProperty(er, 'stack', {\n\t\t\t\t\t\tvalue: enhanceStackTrace.call(this, er, capture as Error),\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t});\n\t\t\t\t} catch {\n\t\t\t\t\t// Continue regardless of error\n\t\t\t\t}\n\n\t\t\t\tthrow er; // Unhandled 'error' event\n\t\t\t}\n\n\t\t\tconst stringifiedError = String(er);\n\n\t\t\t// Give some error to user\n\t\t\tconst err = new Error(`Unhandled 'error' event emitted, received ${stringifiedError}`);\n\t\t\t// @ts-expect-error Add context to error too\n\t\t\terr.context = er;\n\n\t\t\tthrow err; // Unhandled 'error' event\n\t\t}\n\n\t\tconst handlers = events[eventName];\n\n\t\tif (handlers === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (typeof handlers === 'function') {\n\t\t\tconst result = handlers.apply(this, args);\n\n\t\t\tif (result !== undefined && result !== null) {\n\t\t\t\thandleMaybeAsync(this, result);\n\t\t\t}\n\t\t} else {\n\t\t\tconst len = handlers.length;\n\t\t\tconst listeners = arrayClone(handlers as InternalEventMap);\n\n\t\t\tfor (let i = 0; i < len; ++i) {\n\t\t\t\t// We call all listeners regardless of the result, as we already handle possible error emits in the wrapped func\n\t\t\t\tconst result = listeners[i].apply(this, args);\n\n\t\t\t\tif (result !== undefined && result !== null) {\n\t\t\t\t\thandleMaybeAsync(this, result);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic listenerCount<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): number {\n\t\tconst events = this._events;\n\n\t\tif (events === undefined) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst eventListeners = events[eventName];\n\n\t\tif (typeof eventListeners === 'function') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn eventListeners?.length ?? 0;\n\t}\n\n\tpublic prependListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst wrapped = this._wrapListener(eventName, listener, false);\n\n\t\tthis._addListener(eventName, wrapped, true);\n\n\t\treturn this;\n\t}\n\n\tpublic prependOnceListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => void\n\t): this {\n\t\tvalidateListener(listener);\n\n\t\tconst wrapped = this._wrapListener(eventName, listener, true);\n\n\t\tthis._addListener(eventName, wrapped, true);\n\n\t\treturn this;\n\t}\n\n\tpublic eventNames(): (keyof Events | keyof AsyncEventEmitterPredefinedEvents)[] {\n\t\treturn this._eventCount > 0 ? Reflect.ownKeys(this._events) : [];\n\t}\n\n\tpublic async waitForAllListenersToComplete() {\n\t\tconst promises = [...this._internalPromiseMap.values()];\n\n\t\tif (promises.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tawait Promise.all(promises);\n\n\t\treturn true;\n\t}\n\n\tprivate _addListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\twrappedListener: Listener | WrappedOnce,\n\t\tprepend: boolean\n\t) {\n\t\t// Emit newListener first in the event someone is listening for it\n\t\tif (this._events.newListener !== undefined) {\n\t\t\t// Thanks TypeScript for the cast...\n\t\t\tthis.emit('newListener', eventName as string | symbol, (wrappedListener as WrappedOnce).listener ?? wrappedListener);\n\t\t}\n\n\t\tlet existing = this._events[eventName];\n\n\t\tif (existing === undefined) {\n\t\t\t// eslint-disable-next-line no-multi-assign\n\t\t\texisting = this._events[eventName] = wrappedListener;\n\t\t\t++this._eventCount;\n\t\t} else if (typeof existing === 'function') {\n\t\t\t// Adding the second element, need to change to array.\n\t\t\t// eslint-disable-next-line no-multi-assign\n\t\t\texisting = this._events[eventName] = prepend ? [wrappedListener, existing] : [existing, wrappedListener];\n\t\t\t// If we've already got an array, just append.\n\t\t} else if (prepend) {\n\t\t\texisting.unshift(wrappedListener);\n\t\t} else {\n\t\t\texisting.push(wrappedListener);\n\t\t}\n\n\t\tif (this._maxListeners > 0 && existing.length > this._maxListeners && !existing._hasWarnedAboutMaxListeners) {\n\t\t\texisting._hasWarnedAboutMaxListeners = true;\n\t\t\tconst warningMessage = [\n\t\t\t\t`Possible AsyncEventEmitter memory leak detected. ${existing.length} ${String(eventName)} listeners added to ${\n\t\t\t\t\tthis.constructor.name\n\t\t\t\t}.`,\n\t\t\t\t`Use emitter.setMaxListeners() to increase the limit.`\n\t\t\t].join(' ');\n\t\t\tconsole.warn(warningMessage);\n\t\t}\n\t}\n\n\tprivate _wrapListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(\n\t\teventName: K,\n\t\tlistener: (...args: K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]) => Awaitable<void>,\n\t\tonce: boolean\n\t): Listener | WrappedOnce {\n\t\tif (!once) {\n\t\t\treturn listener as Listener;\n\t\t}\n\n\t\tconst state = {\n\t\t\tfired: false,\n\t\t\twrapFn: undefined!,\n\t\t\teventEmitter: this,\n\t\t\teventName,\n\t\t\tlistener\n\t\t} as WrappedOnceState<K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]>;\n\n\t\tconst aliased = onceWrapper<K extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]>;\n\n\t\tconst wrapped = aliased.bind(state) as WrappedOnce<\n\t\t\tK extends keyof AsyncEventEmitterPredefinedEvents ? AsyncEventEmitterPredefinedEvents[K] : Events[K]\n\t\t>;\n\t\twrapped.listener = listener;\n\t\tstate.wrapFn = wrapped;\n\n\t\treturn wrapped as WrappedOnce;\n\t}\n\n\tpublic static listenerCount<\n\t\tEmitter extends AsyncEventEmitter<any>,\n\t\tEventNames = Emitter extends AsyncEventEmitter<infer Events> ? Events : never,\n\t\tEventName extends PropertyKey = EventNames extends never ? string | symbol : keyof EventNames\n\t>(emitter: Emitter, eventName: EventName | keyof AsyncEventEmitterPredefinedEvents) {\n\t\treturn emitter.listenerCount(eventName);\n\t}\n\n\tpublic static async once<\n\t\tEmitter extends AsyncEventEmitter<any>,\n\t\tEventNames extends Record<PropertyKey, unknown[]> = Emitter extends AsyncEventEmitter<infer Events> ? Events : Record<PropertyKey, unknown[]>,\n\t\tEventName extends PropertyKey = keyof EventNames | keyof AsyncEventEmitterPredefinedEvents,\n\t\tEventResult extends unknown[] = EventName extends keyof AsyncEventEmitterPredefinedEvents\n\t\t\t? AsyncEventEmitterPredefinedEvents[EventName]\n\t\t\t: EventNames[EventName]\n\t>(emitter: Emitter, eventName: EventName, options: AbortableMethods = {}) {\n\t\tconst signal = options?.signal;\n\t\tvalidateAbortSignal(signal);\n\n\t\tif (signal?.aborted) {\n\t\t\tthrow new AbortError(undefined, { cause: getReason(signal) });\n\t\t}\n\n\t\treturn new Promise<EventResult>((resolve, reject) => {\n\t\t\tconst errorListener = (err: unknown) => {\n\t\t\t\temitter.removeListener(eventName, resolver);\n\n\t\t\t\tif (signal) {\n\t\t\t\t\teventTargetAgnosticRemoveListener(emitter, eventName, abortListener);\n\t\t\t\t}\n\n\t\t\t\treject(err);\n\t\t\t};\n\n\t\t\tconst resolver = (...args: unknown[]) => {\n\t\t\t\temitter.removeListener('error', errorListener);\n\n\t\t\t\tif (signal) {\n\t\t\t\t\teventTargetAgnosticRemoveListener(signal, 'abort', abortListener);\n\t\t\t\t}\n\n\t\t\t\tresolve(args as EventResult);\n\t\t\t};\n\n\t\t\temitter.once(eventName, resolver);\n\t\t\tif (eventName !== 'error') {\n\t\t\t\temitter.once('error', errorListener);\n\t\t\t}\n\n\t\t\tconst abortListener = () => {\n\t\t\t\teventTargetAgnosticRemoveListener(emitter, eventName, resolver);\n\t\t\t\teventTargetAgnosticRemoveListener(emitter, 'error', errorListener);\n\t\t\t\treject(new AbortError(undefined, { cause: getReason(signal) }));\n\t\t\t};\n\n\t\t\tif (signal) {\n\t\t\t\teventTargetAgnosticAddListener(signal, 'abort', abortListener, { once: true });\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic static on<\n\t\tEmitter extends AsyncEventEmitter<any>,\n\t\tEventNames extends Record<PropertyKey, unknown[]> = Emitter extends AsyncEventEmitter<infer Events> ? Events : Record<PropertyKey, unknown[]>,\n\t\tEventName extends PropertyKey = keyof EventNames | keyof AsyncEventEmitterPredefinedEvents,\n\t\tEventResult extends unknown[] = EventName extends keyof AsyncEventEmitterPredefinedEvents\n\t\t\t? AsyncEventEmitterPredefinedEvents[EventName]\n\t\t\t: EventNames[EventName]\n\t>(emitter: Emitter, eventName: EventName, options: AbortableMethods = {}): AsyncGenerator<EventResult, void> {\n\t\tconst signal = options?.signal;\n\t\tvalidateAbortSignal(signal);\n\n\t\tif (signal?.aborted) {\n\t\t\tthrow new AbortError(undefined, { cause: getReason(signal) });\n\t\t}\n\n\t\tconst unconsumedEvents: unknown[][] = [];\n\t\tconst unconsumedPromises: { resolve: (value?: unknown) => void; reject: (reason?: unknown) => void }[] = [];\n\t\tlet error: unknown = null;\n\t\tlet finished = false;\n\n\t\tconst abortListener = () => {\n\t\t\terrorHandler(new AbortError(undefined, { cause: getReason(signal) }));\n\t\t};\n\n\t\tconst eventHandler = (...args: unknown[]) => {\n\t\t\tconst promise = unconsumedPromises.shift();\n\t\t\tif (promise) {\n\t\t\t\tpromise.resolve(createIterResult(args, false));\n\t\t\t} else {\n\t\t\t\tunconsumedEvents.push(args);\n\t\t\t}\n\t\t};\n\n\t\tconst errorHandler = (err: unknown) => {\n\t\t\tfinished = true;\n\n\t\t\tconst toError = unconsumedPromises.shift();\n\n\t\t\tif (toError) {\n\t\t\t\ttoError.reject(err);\n\t\t\t} else {\n\t\t\t\terror = err;\n\t\t\t}\n\n\t\t\tvoid iterator.return();\n\t\t};\n\n\t\tconst iterator: AsyncGenerator<EventResult, void> = Object.setPrototypeOf(\n\t\t\t{\n\t\t\t\tnext() {\n\t\t\t\t\t// First, we consume all unread events\n\t\t\t\t\tconst value = unconsumedEvents.shift();\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\treturn Promise.resolve(createIterResult(value, false));\n\t\t\t\t\t}\n\n\t\t\t\t\t// Then we error, if an error happened\n\t\t\t\t\t// This happens one time if at all, because after 'error'\n\t\t\t\t\t// we stop listening\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\tconst p = Promise.reject(error);\n\t\t\t\t\t\t// Only the first element errors\n\t\t\t\t\t\terror = null;\n\t\t\t\t\t\treturn p;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the iterator is finished, resolve to done\n\t\t\t\t\tif (finished) {\n\t\t\t\t\t\treturn Promise.resolve(createIterResult(undefined, true));\n\t\t\t\t\t}\n\n\t\t\t\t\t// Wait until an event happens\n\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t\tunconsumedPromises.push({ resolve, reject });\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\treturn() {\n\t\t\t\t\temitter.off(eventName, eventHandler);\n\t\t\t\t\temitter.off('error', errorHandler);\n\n\t\t\t\t\tif (signal) {\n\t\t\t\t\t\teventTargetAgnosticRemoveListener(signal, 'abort', abortListener);\n\t\t\t\t\t}\n\n\t\t\t\t\tfinished = true;\n\n\t\t\t\t\tconst doneResult = createIterResult(undefined, true);\n\t\t\t\t\tfor (const promise of unconsumedPromises) {\n\t\t\t\t\t\tpromise.resolve(doneResult);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.resolve(doneResult);\n\t\t\t\t},\n\n\t\t\t\tthrow(err: unknown) {\n\t\t\t\t\tif (!err || !(err instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Expected Error instance to be thrown in AsyncEventEmitter.AsyncIterator. Got ${err}`);\n\t\t\t\t\t}\n\n\t\t\t\t\terror = err;\n\t\t\t\t\temitter.off(eventName, eventHandler);\n\t\t\t\t\temitter.off('error', errorHandler);\n\t\t\t\t},\n\n\t\t\t\t[Symbol.asyncIterator]() {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t},\n\t\t\tAsyncIteratorPrototype\n\t\t);\n\n\t\temitter.on(eventName, eventHandler);\n\t\tif (eventName !== 'error') {\n\t\t\temitter.on('error', errorHandler);\n\t\t}\n\n\t\tif (signal) {\n\t\t\teventTargetAgnosticAddListener(signal, 'abort', abortListener);\n\t\t}\n\n\t\treturn iterator;\n\t}\n}\n\nexport interface AsyncEventEmitterPredefinedEvents {\n\tnewListener: [eventName: string | symbol, listener: (...args: any[]) => Awaitable<void>];\n\tremoveListener: [eventName: string | symbol, listener: (...args: any[]) => Awaitable<void>];\n}\n\ninterface WrappedOnceState<Args extends any[] = any[]> {\n\tlistener: (...args: Args) => Awaitable<void>;\n\tfired: boolean;\n\teventName: string | symbol;\n\teventEmitter: AsyncEventEmitter<any>;\n\twrapFn: (...args: Args) => Awaitable<void>;\n}\n\nexport interface WrappedOnce<Args extends any[] = any[]> {\n\t(...args: Args): Awaitable<void>;\n\tlistener: (...args: Args) => Awaitable<void>;\n\t_hasWarnedAboutMaxListeners?: boolean;\n}\n\nexport interface Listener<Args extends any[] = any[]> {\n\t(...args: Args): Awaitable<void>;\n\tlistener: (...args: Args) => Awaitable<void>;\n\t_hasWarnedAboutMaxListeners?: boolean;\n}\n\nexport type Awaitable<T> = T | Promise<T>;\n\nexport interface AbortableMethods {\n\tsignal?: AbortSignal;\n}\n\n// @ts-ignore Not all paths returning is fine just fine:tm:\nfunction onceWrapper<Args extends any[] = any[]>(this: WrappedOnceState<Args>) {\n\tif (!this.fired) {\n\t\tthis.eventEmitter.removeListener(this.eventName, this.wrapFn);\n\t\tthis.fired = true;\n\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\tif (arguments.length === 0) {\n\t\t\t// @ts-expect-error Types can be hell\n\t\t\treturn this.listener.call(this.eventEmitter);\n\t\t}\n\n\t\t// eslint-disable-next-line prefer-rest-params\n\t\treturn this.listener.apply(this.eventEmitter, arguments as unknown as Args);\n\t}\n}\n\n/**\n * A TypeScript not-compliant way of accessing AbortSignal#reason\n * Because DOM types have it, NodeJS types don't. -w-\n */\nfunction getReason(signal: any) {\n\treturn signal?.reason;\n}\n\nfunction eventTargetAgnosticRemoveListener(emitter: any, name: PropertyKey, listener: (...args: unknown[]) => any, flags?: InternalAgnosticFlags) {\n\tif (typeof emitter.off === 'function') {\n\t\temitter.off(name, listener);\n\t} else if (typeof emitter.removeEventListener === 'function') {\n\t\temitter.removeEventListener(name, listener, flags);\n\t}\n}\n\nfunction eventTargetAgnosticAddListener(emitter: any, name: string | symbol, listener: (...args: unknown[]) => any, flags?: InternalAgnosticFlags) {\n\tif (typeof emitter.on === 'function') {\n\t\tif (flags?.once) {\n\t\t\temitter.once!(name, listener);\n\t\t} else {\n\t\t\temitter.on(name, listener);\n\t\t}\n\t} else if (typeof emitter.addEventListener === 'function') {\n\t\temitter.addEventListener(name, listener, flags);\n\t}\n}\n\ninterface InternalAgnosticFlags {\n\tonce?: boolean;\n}\n\n// eslint-disable-next-line func-names, @typescript-eslint/no-empty-function\nconst AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () {}).prototype);\n\nfunction createIterResult(value: unknown, done: boolean) {\n\treturn { value, done };\n}\n\nexport interface AbortErrorOptions {\n\tcause?: unknown;\n}\n\nexport class AbortError extends Error {\n\tpublic readonly code = 'ABORT_ERR';\n\tpublic override readonly name = 'AbortError';\n\n\tpublic constructor(message = 'The operation was aborted', options: AbortErrorOptions | undefined = undefined) {\n\t\tif (options !== undefined && typeof options !== 'object') {\n\t\t\tthrow new TypeError(`Failed to create AbortError: options is not an object or undefined`);\n\t\t}\n\n\t\tsuper(message, options);\n\t}\n}\n\nfunction handleMaybeAsync(emitter: AsyncEventEmitter<any>, result: any) {\n\ttry {\n\t\tconst fin = result.finally;\n\n\t\tif (typeof fin === 'function') {\n\t\t\tconst promiseId = String(++emitter['_wrapperId']);\n\t\t\temitter['_internalPromiseMap'].set(promiseId, result);\n\t\t\tfin.call(result, function final() {\n\t\t\t\temitter['_internalPromiseMap'].delete(promiseId);\n\t\t\t});\n\t\t}\n\t} catch (err) {\n\t\temitter.emit('error', err);\n\t}\n}\n"],"mappings":";;;;AACA,SAAS,iBAAiB,OAA0E;AACnG,MAAI,OAAO,UAAU,YAAY;AAChC,UAAM,IAAI,UAAU,sDAAsD,OAAO,OAAO;AAAA,EACzF;AACD;AAJS;AAMT,SAAS,oBAAoB,OAA0D;AAEtF,MAAI,SAAS,EAAE,iBAAiB,cAAc;AAC7C,UAAM,IAAI,UAAU,sDAAsD,OAAO;AAAA,EAClF;AACD;AALS;AAQT,SAAS,UAAU,MAAiB,OAAe;AAClD,SAAO,QAAQ,IAAI,KAAK,QAAQ,SAAS;AACxC,SAAK,KAAK,IAAI,KAAK,QAAQ,CAAC;AAAA,EAC7B;AAEA,OAAK,IAAI;AACV;AANS;AAST,SAAS,WAAgC,KAAW;AAGnD,UAAQ,IAAI,QAAQ;AAAA,IACnB,KAAK;AACJ,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,IACvB,KAAK;AACJ,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,IAC/B,KAAK;AACJ,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,IACvC,KAAK;AACJ,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,IAC/C,KAAK;AACJ,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,EACxD;AAEA,SAAO,IAAI,MAAM;AAClB;AAjBS;AAoBT,SAAS,uBAAuB,GAAc,GAAgC;AAC7E,WAAS,IAAI,GAAG,IAAI,EAAE,SAAS,GAAG,KAAK;AAEtC,UAAM,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC1B,QAAI,QAAQ,IAAI;AACf,YAAM,OAAO,EAAE,SAAS;AACxB,UAAI,OAAO,GAAG;AACb,YAAI,MAAM;AACV,cAAM,SAAS,KAAK,IAAI,EAAE,SAAS,GAAG,IAAI;AAE1C,eAAO,SAAS,OAAO,EAAE,IAAI,GAAG,MAAM,EAAE,MAAM,GAAG,GAAG;AACnD;AAAA,QACD;AACA,YAAI,MAAM,GAAG;AACZ,iBAAO,CAAC,KAAK,CAAC;AAAA,QACf;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,SAAO,CAAC,GAAG,CAAC;AACb;AArBS;AAuBT,SAAS,kBAAgD,KAAY,KAAY;AAChF,MAAI,WAAW;AACf,MAAI;AACH,UAAM,EAAE,KAAK,IAAI,KAAK;AACtB,QAAI,SAAS;AAAqB,iBAAW,OAAO;AAAA,EACrD,QAAE;AAAA,EAEF;AACA,QAAM,MAAM;AAAA,uBAA0B;AAAA;AAEtC,QAAM,WAAW,IAAI,MAAO,MAAM,IAAI,EAAE,MAAM,CAAC;AAC/C,QAAM,WAAW,IAAI,MAAO,MAAM,IAAI,EAAE,MAAM,CAAC;AAE/C,QAAM,EAAE,GAAG,KAAK,GAAG,IAAI,IAAI,uBAAuB,UAAU,QAAQ;AACpE,MAAI,MAAM,GAAG;AACZ,aAAS,OAAO,MAAM,GAAG,MAAM,GAAG,mDAAmD;AAAA,EACtF;AAEA,SAAO,IAAI,QAAQ,MAAM,SAAS,KAAK,IAAI;AAC5C;AAnBS;AAyBF,IAAM,oBAAN,MAA4I;AAAA,EAA5I;AACN,SAAQ,UAAqH;AAAA,MAC5H,WAAW;AAAA,IACZ;AAEA,SAAQ,cAAc;AACtB,SAAQ,gBAAgB;AACxB,SAAQ,sBAAkD,oBAAI,IAAI;AAClE,SAAQ,aAAa;AAAA;AAAA,EAEd,YACN,WACA,UACO;AACP,qBAAiB,QAAQ;AAEzB,UAAM,UAAU,KAAK,cAAc,WAAW,UAAU,KAAK;AAE7D,SAAK,aAAa,WAAW,SAAS,KAAK;AAE3C,WAAO;AAAA,EACR;AAAA,EAEO,GACN,WACA,UACO;AACP,WAAO,KAAK,YAAY,WAAW,QAAQ;AAAA,EAC5C;AAAA,EAEO,KACN,WACA,UACO;AACP,qBAAiB,QAAQ;AAEzB,UAAM,UAAU,KAAK,cAAc,WAAW,UAAU,IAAI;AAE5D,SAAK,aAAa,WAAW,SAAS,KAAK;AAE3C,WAAO;AAAA,EACR;AAAA,EAEO,eACN,WACA,UACO;AACP,qBAAiB,QAAQ;AAEzB,UAAM,SAAS,KAAK;AACpB,UAAM,YAAY,OAAO,SAAS;AAElC,QAAI,cAAc,QAAW;AAC5B,aAAO;AAAA,IACR;AAEA,QAAI,cAAc,YAAa,UAA0B,aAAa,UAAU;AAC/E,UAAI,EAAE,KAAK,gBAAgB,GAAG;AAC7B,aAAK,UAAU,EAAE,WAAW,KAAK;AAAA,MAIlC,OAAO;AACN,eAAO,OAAO,SAAS;AACvB,YAAI,OAAO,gBAAgB;AAC1B,eAAK,KAAK,kBAAkB,WAAsB,UAA0B,YAAY,SAAS;AAAA,QAClG;AAAA,MACD;AAAA,IACD,WAAW,OAAO,cAAc,YAAY;AAC3C,UAAI,WAAW;AAEf,eAAS,IAAI,UAAU,SAAS,GAAG,KAAK,GAAG,KAAK;AAC/C,YAAI,UAAU,CAAC,MAAM,YAAa,UAAU,CAAC,EAAkB,aAAa,UAAU;AACrF,qBAAW;AACX;AAAA,QACD;AAAA,MACD;AAEA,UAAI,WAAW,GAAG;AACjB,eAAO;AAAA,MACR;AAEA,UAAI,aAAa,GAAG;AACnB,kBAAU,MAAM;AAAA,MACjB,OAAO;AACN,kBAAU,WAAW,QAAQ;AAAA,MAC9B;AAEA,UAAI,UAAU,WAAW,GAAG;AAC3B,eAAO,OAAO,SAAS;AACvB,UAAE,KAAK;AAAA,MACR;AAEA,UAAI,OAAO,mBAAmB,QAAW;AAExC,aAAK,KAAK,kBAAkB,WAA8B,QAAQ;AAAA,MACnE;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAAA,EAEO,IACN,WACA,UACO;AACP,WAAO,KAAK,eAAe,WAAW,QAAQ;AAAA,EAC/C;AAAA,EAEO,mBAAqF,OAA6B;AACxH,UAAM,SAAS,KAAK;AAGpB,QAAI,OAAO,mBAAmB,QAAW;AACxC,UAAI,CAAC,OAAO;AACX,aAAK,UAAU,EAAE,WAAW,KAAK;AACjC,aAAK,cAAc;AAAA,MACpB,WAAW,OAAO,KAAK,MAAM,QAAW;AACvC,YAAI,EAAE,KAAK,gBAAgB,GAAG;AAC7B,eAAK,UAAU,EAAE,WAAW,KAAK;AAAA,QAClC,OAAO;AACN,iBAAO,OAAO,KAAK;AAAA,QACpB;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAGA,QAAI,CAAC,OAAO;AACX,iBAAW,OAAO,QAAQ,QAAQ,MAAM,GAAG;AAC1C,YAAI,QAAQ,kBAAkB;AAC7B;AAAA,QACD;AACA,aAAK,mBAAmB,GAAG;AAAA,MAC5B;AAEA,WAAK,mBAAmB,gBAAgB;AACxC,WAAK,UAAU,EAAE,WAAW,KAAK;AACjC,WAAK,cAAc;AAEnB,aAAO;AAAA,IACR;AAEA,UAAM,YAAY,OAAO,KAAK;AAE9B,QAAI,OAAO,cAAc,YAAY;AACpC,WAAK,eAAe,OAAO,SAAS;AAAA,IACrC,WAAW,cAAc,QAAW;AAEnC,eAAS,IAAI,UAAU,SAAS,GAAG,KAAK,GAAG,KAAK;AAC/C,aAAK,eAAe,OAAO,UAAU,CAAC,CAAC;AAAA,MACxC;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAAA,EAEO,gBAAgB,GAAiB;AACvC,QAAI,OAAO,MAAM,YAAY,IAAI,KAAK,OAAO,MAAM,CAAC,GAAG;AACtD,YAAM,IAAI,WAAW,oEAAoE,WAAW;AAAA,IACrG;AAEA,SAAK,gBAAgB;AAErB,WAAO;AAAA,EACR;AAAA,EAEO,kBAA0B;AAChC,WAAO,KAAK;AAAA,EACb;AAAA,EAEO,UAA4E,WAA4D;AAC9I,UAAM,YAAY,KAAK,QAAQ,SAAS;AAExC,QAAI,cAAc,QAAW;AAC5B,aAAO,CAAC;AAAA,IACT;AAEA,QAAI,OAAO,cAAc,YAAY;AACpC,aAAO,CAAC,UAAU,YAAY,SAAS;AAAA,IACxC;AAEA,UAAM,MAAM,WAAW,SAAS;AAEhC,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,GAAG;AACpC,YAAM,OAAQ,IAAI,CAAC,EAAkB;AACrC,UAAI,OAAO,SAAS,YAAY;AAC/B,YAAI,CAAC,IAAI;AAAA,MACV;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAAA,EAEO,aAA+E,WAAgD;AACrI,UAAM,YAAY,KAAK,QAAQ,SAAS;AAExC,QAAI,cAAc,QAAW;AAC5B,aAAO,CAAC;AAAA,IACT;AAEA,QAAI,OAAO,cAAc,YAAY;AACpC,aAAO,CAAC,SAAS;AAAA,IAClB;AAEA,WAAO,WAAW,SAAS;AAAA,EAC5B;AAAA,EAEO,KACN,cACG,MACO;AACV,QAAI,UAAU,cAAc;AAE5B,UAAM,SAAS,KAAK;AACpB,QAAI,WAAW,QAAW;AACzB,gBAAU,WAAW,OAAO,UAAU;AAAA,IACvC,WAAW,CAAC,SAAS;AACpB,aAAO;AAAA,IACR;AAEA,QAAI,SAAS;AACZ,UAAI;AAEJ,UAAI,KAAK,SAAS,GAAG;AAEpB,aAAK,KAAK,CAAC;AAAA,MACZ;AAEA,UAAI,cAAc,OAAO;AACxB,YAAI;AACH,gBAAM,UAAU,CAAC;AAEjB,gBAAM,kBAAkB,SAAS,kBAAkB,UAAU,IAAI;AACjE,iBAAO,eAAe,IAAI,SAAS;AAAA,YAClC,OAAO,kBAAkB,KAAK,MAAM,IAAI,OAAgB;AAAA,YACxD,cAAc;AAAA,UACf,CAAC;AAAA,QACF,QAAE;AAAA,QAEF;AAEA,cAAM;AAAA,MACP;AAEA,YAAM,mBAAmB,OAAO,EAAE;AAGlC,YAAM,MAAM,IAAI,MAAM,6CAA6C,kBAAkB;AAErF,UAAI,UAAU;AAEd,YAAM;AAAA,IACP;AAEA,UAAM,WAAW,OAAO,SAAS;AAEjC,QAAI,aAAa,QAAW;AAC3B,aAAO;AAAA,IACR;AAEA,QAAI,OAAO,aAAa,YAAY;AACnC,YAAM,SAAS,SAAS,MAAM,MAAM,IAAI;AAExC,UAAI,WAAW,UAAa,WAAW,MAAM;AAC5C,yBAAiB,MAAM,MAAM;AAAA,MAC9B;AAAA,IACD,OAAO;AACN,YAAM,MAAM,SAAS;AACrB,YAAM,YAAY,WAAW,QAA4B;AAEzD,eAAS,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AAE7B,cAAM,SAAS,UAAU,CAAC,EAAE,MAAM,MAAM,IAAI;AAE5C,YAAI,WAAW,UAAa,WAAW,MAAM;AAC5C,2BAAiB,MAAM,MAAM;AAAA,QAC9B;AAAA,MACD;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAAA,EAEO,cAAgF,WAAsB;AAC5G,UAAM,SAAS,KAAK;AAEpB,QAAI,WAAW,QAAW;AACzB,aAAO;AAAA,IACR;AAEA,UAAM,iBAAiB,OAAO,SAAS;AAEvC,QAAI,OAAO,mBAAmB,YAAY;AACzC,aAAO;AAAA,IACR;AAEA,WAAO,gBAAgB,UAAU;AAAA,EAClC;AAAA,EAEO,gBACN,WACA,UACO;AACP,qBAAiB,QAAQ;AAEzB,UAAM,UAAU,KAAK,cAAc,WAAW,UAAU,KAAK;AAE7D,SAAK,aAAa,WAAW,SAAS,IAAI;AAE1C,WAAO;AAAA,EACR;AAAA,EAEO,oBACN,WACA,UACO;AACP,qBAAiB,QAAQ;AAEzB,UAAM,UAAU,KAAK,cAAc,WAAW,UAAU,IAAI;AAE5D,SAAK,aAAa,WAAW,SAAS,IAAI;AAE1C,WAAO;AAAA,EACR;AAAA,EAEO,aAAyE;AAC/E,WAAO,KAAK,cAAc,IAAI,QAAQ,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,EAChE;AAAA,EAEA,MAAa,gCAAgC;AAC5C,UAAM,WAAW,CAAC,GAAG,KAAK,oBAAoB,OAAO,CAAC;AAEtD,QAAI,SAAS,WAAW,GAAG;AAC1B,aAAO;AAAA,IACR;AAEA,UAAM,QAAQ,IAAI,QAAQ;AAE1B,WAAO;AAAA,EACR;AAAA,EAEQ,aACP,WACA,iBACA,SACC;AAED,QAAI,KAAK,QAAQ,gBAAgB,QAAW;AAE3C,WAAK,KAAK,eAAe,WAA+B,gBAAgC,YAAY,eAAe;AAAA,IACpH;AAEA,QAAI,WAAW,KAAK,QAAQ,SAAS;AAErC,QAAI,aAAa,QAAW;AAE3B,iBAAW,KAAK,QAAQ,SAAS,IAAI;AACrC,QAAE,KAAK;AAAA,IACR,WAAW,OAAO,aAAa,YAAY;AAG1C,iBAAW,KAAK,QAAQ,SAAS,IAAI,UAAU,CAAC,iBAAiB,QAAQ,IAAI,CAAC,UAAU,eAAe;AAAA,IAExG,WAAW,SAAS;AACnB,eAAS,QAAQ,eAAe;AAAA,IACjC,OAAO;AACN,eAAS,KAAK,eAAe;AAAA,IAC9B;AAEA,QAAI,KAAK,gBAAgB,KAAK,SAAS,SAAS,KAAK,iBAAiB,CAAC,SAAS,6BAA6B;AAC5G,eAAS,8BAA8B;AACvC,YAAM,iBAAiB;AAAA,QACtB,oDAAoD,SAAS,UAAU,OAAO,SAAS,wBACtF,KAAK,YAAY;AAAA,QAElB;AAAA,MACD,EAAE,KAAK,GAAG;AACV,cAAQ,KAAK,cAAc;AAAA,IAC5B;AAAA,EACD;AAAA,EAEQ,cACP,WACA,UACA,MACyB;AACzB,QAAI,CAAC,MAAM;AACV,aAAO;AAAA,IACR;AAEA,UAAM,QAAQ;AAAA,MACb,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,cAAc;AAAA,MACd;AAAA,MACA;AAAA,IACD;AAEA,UAAM,UAAU;AAEhB,UAAM,UAAU,QAAQ,KAAK,KAAK;AAGlC,YAAQ,WAAW;AACnB,UAAM,SAAS;AAEf,WAAO;AAAA,EACR;AAAA,EAEA,OAAc,cAIZ,SAAkB,WAAgE;AACnF,WAAO,QAAQ,cAAc,SAAS;AAAA,EACvC;AAAA,EAEA,aAAoB,KAOlB,SAAkB,WAAsB,UAA4B,CAAC,GAAG;AACzE,UAAM,SAAS,SAAS;AACxB,wBAAoB,MAAM;AAE1B,QAAI,QAAQ,SAAS;AACpB,YAAM,IAAI,WAAW,QAAW,EAAE,OAAO,UAAU,MAAM,EAAE,CAAC;AAAA,IAC7D;AAEA,WAAO,IAAI,QAAqB,CAAC,SAAS,WAAW;AACpD,YAAM,gBAAgB,wBAAC,QAAiB;AACvC,gBAAQ,eAAe,WAAW,QAAQ;AAE1C,YAAI,QAAQ;AACX,4CAAkC,SAAS,WAAW,aAAa;AAAA,QACpE;AAEA,eAAO,GAAG;AAAA,MACX,GARsB;AAUtB,YAAM,WAAW,2BAAI,SAAoB;AACxC,gBAAQ,eAAe,SAAS,aAAa;AAE7C,YAAI,QAAQ;AACX,4CAAkC,QAAQ,SAAS,aAAa;AAAA,QACjE;AAEA,gBAAQ,IAAmB;AAAA,MAC5B,GARiB;AAUjB,cAAQ,KAAK,WAAW,QAAQ;AAChC,UAAI,cAAc,SAAS;AAC1B,gBAAQ,KAAK,SAAS,aAAa;AAAA,MACpC;AAEA,YAAM,gBAAgB,6BAAM;AAC3B,0CAAkC,SAAS,WAAW,QAAQ;AAC9D,0CAAkC,SAAS,SAAS,aAAa;AACjE,eAAO,IAAI,WAAW,QAAW,EAAE,OAAO,UAAU,MAAM,EAAE,CAAC,CAAC;AAAA,MAC/D,GAJsB;AAMtB,UAAI,QAAQ;AACX,uCAA+B,QAAQ,SAAS,eAAe,EAAE,MAAM,KAAK,CAAC;AAAA,MAC9E;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,OAAc,GAOZ,SAAkB,WAAsB,UAA4B,CAAC,GAAsC;AAC5G,UAAM,SAAS,SAAS;AACxB,wBAAoB,MAAM;AAE1B,QAAI,QAAQ,SAAS;AACpB,YAAM,IAAI,WAAW,QAAW,EAAE,OAAO,UAAU,MAAM,EAAE,CAAC;AAAA,IAC7D;AAEA,UAAM,mBAAgC,CAAC;AACvC,UAAM,qBAAmG,CAAC;AAC1G,QAAI,QAAiB;AACrB,QAAI,WAAW;AAEf,UAAM,gBAAgB,6BAAM;AAC3B,mBAAa,IAAI,WAAW,QAAW,EAAE,OAAO,UAAU,MAAM,EAAE,CAAC,CAAC;AAAA,IACrE,GAFsB;AAItB,UAAM,eAAe,2BAAI,SAAoB;AAC5C,YAAM,UAAU,mBAAmB,MAAM;AACzC,UAAI,SAAS;AACZ,gBAAQ,QAAQ,iBAAiB,MAAM,KAAK,CAAC;AAAA,MAC9C,OAAO;AACN,yBAAiB,KAAK,IAAI;AAAA,MAC3B;AAAA,IACD,GAPqB;AASrB,UAAM,eAAe,wBAAC,QAAiB;AACtC,iBAAW;AAEX,YAAM,UAAU,mBAAmB,MAAM;AAEzC,UAAI,SAAS;AACZ,gBAAQ,OAAO,GAAG;AAAA,MACnB,OAAO;AACN,gBAAQ;AAAA,MACT;AAEA,WAAK,SAAS,OAAO;AAAA,IACtB,GAZqB;AAcrB,UAAM,WAA8C,OAAO;AAAA,MAC1D;AAAA,QACC,OAAO;AAEN,gBAAM,QAAQ,iBAAiB,MAAM;AACrC,cAAI,OAAO;AACV,mBAAO,QAAQ,QAAQ,iBAAiB,OAAO,KAAK,CAAC;AAAA,UACtD;AAKA,cAAI,OAAO;AACV,kBAAM,IAAI,QAAQ,OAAO,KAAK;AAE9B,oBAAQ;AACR,mBAAO;AAAA,UACR;AAGA,cAAI,UAAU;AACb,mBAAO,QAAQ,QAAQ,iBAAiB,QAAW,IAAI,CAAC;AAAA,UACzD;AAGA,iBAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvC,+BAAmB,KAAK,EAAE,SAAS,OAAO,CAAC;AAAA,UAC5C,CAAC;AAAA,QACF;AAAA,QAEA,SAAS;AACR,kBAAQ,IAAI,WAAW,YAAY;AACnC,kBAAQ,IAAI,SAAS,YAAY;AAEjC,cAAI,QAAQ;AACX,8CAAkC,QAAQ,SAAS,aAAa;AAAA,UACjE;AAEA,qBAAW;AAEX,gBAAM,aAAa,iBAAiB,QAAW,IAAI;AACnD,qBAAW,WAAW,oBAAoB;AACzC,oBAAQ,QAAQ,UAAU;AAAA,UAC3B;AAEA,iBAAO,QAAQ,QAAQ,UAAU;AAAA,QAClC;AAAA,QAEA,MAAM,KAAc;AACnB,cAAI,CAAC,OAAO,EAAE,eAAe,QAAQ;AACpC,kBAAM,IAAI,UAAU,gFAAgF,KAAK;AAAA,UAC1G;AAEA,kBAAQ;AACR,kBAAQ,IAAI,WAAW,YAAY;AACnC,kBAAQ,IAAI,SAAS,YAAY;AAAA,QAClC;AAAA,QAEA,CAAC,OAAO,aAAa,IAAI;AACxB,iBAAO;AAAA,QACR;AAAA,MACD;AAAA,MACA;AAAA,IACD;AAEA,YAAQ,GAAG,WAAW,YAAY;AAClC,QAAI,cAAc,SAAS;AAC1B,cAAQ,GAAG,SAAS,YAAY;AAAA,IACjC;AAEA,QAAI,QAAQ;AACX,qCAA+B,QAAQ,SAAS,aAAa;AAAA,IAC9D;AAEA,WAAO;AAAA,EACR;AACD;AAnlBa;AAqnBb,SAAS,cAAsE;AAC9E,MAAI,CAAC,KAAK,OAAO;AAChB,SAAK,aAAa,eAAe,KAAK,WAAW,KAAK,MAAM;AAC5D,SAAK,QAAQ;AAEb,QAAI,UAAU,WAAW,GAAG;AAE3B,aAAO,KAAK,SAAS,KAAK,KAAK,YAAY;AAAA,IAC5C;AAGA,WAAO,KAAK,SAAS,MAAM,KAAK,cAAc,SAA4B;AAAA,EAC3E;AACD;AAbS;AAmBT,SAAS,UAAU,QAAa;AAC/B,SAAO,QAAQ;AAChB;AAFS;AAIT,SAAS,kCAAkC,SAAc,MAAmB,UAAuC,OAA+B;AACjJ,MAAI,OAAO,QAAQ,QAAQ,YAAY;AACtC,YAAQ,IAAI,MAAM,QAAQ;AAAA,EAC3B,WAAW,OAAO,QAAQ,wBAAwB,YAAY;AAC7D,YAAQ,oBAAoB,MAAM,UAAU,KAAK;AAAA,EAClD;AACD;AANS;AAQT,SAAS,+BAA+B,SAAc,MAAuB,UAAuC,OAA+B;AAClJ,MAAI,OAAO,QAAQ,OAAO,YAAY;AACrC,QAAI,OAAO,MAAM;AAChB,cAAQ,KAAM,MAAM,QAAQ;AAAA,IAC7B,OAAO;AACN,cAAQ,GAAG,MAAM,QAAQ;AAAA,IAC1B;AAAA,EACD,WAAW,OAAO,QAAQ,qBAAqB,YAAY;AAC1D,YAAQ,iBAAiB,MAAM,UAAU,KAAK;AAAA,EAC/C;AACD;AAVS;AAiBT,IAAM,yBAAyB,OAAO,eAAe,OAAO,eAAe,mBAAmB;AAAC,CAAC,EAAE,SAAS;AAE3G,SAAS,iBAAiB,OAAgB,MAAe;AACxD,SAAO,EAAE,OAAO,KAAK;AACtB;AAFS;AAQF,IAAM,aAAN,cAAyB,MAAM;AAAA,EAI9B,YAAY,UAAU,6BAA6B,UAAyC,QAAW;AAC7G,QAAI,YAAY,UAAa,OAAO,YAAY,UAAU;AACzD,YAAM,IAAI,UAAU,oEAAoE;AAAA,IACzF;AAEA,UAAM,SAAS,OAAO;AARvB,SAAgB,OAAO;AACvB,SAAyB,OAAO;AAAA,EAQhC;AACD;AAXa;AAab,SAAS,iBAAiB,SAAiC,QAAa;AACvE,MAAI;AACH,UAAM,MAAM,OAAO;AAEnB,QAAI,OAAO,QAAQ,YAAY;AAC9B,YAAM,YAAY,OAAO,EAAE,QAAQ,YAAY,CAAC;AAChD,cAAQ,qBAAqB,EAAE,IAAI,WAAW,MAAM;AACpD,UAAI,KAAK,QAAQ,gCAAS,QAAQ;AACjC,gBAAQ,qBAAqB,EAAE,OAAO,SAAS;AAAA,MAChD,GAFiB,QAEhB;AAAA,IACF;AAAA,EACD,SAAS,KAAP;AACD,YAAQ,KAAK,SAAS,GAAG;AAAA,EAC1B;AACD;AAdS;","names":[]}
\ No newline at end of file |