summaryrefslogtreecommitdiff
path: root/node_modules/@vladfrangu/async_event_emitter
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2023-09-02 19:12:47 -0400
committersowgro <tpoke.ferrari@gmail.com>2023-09-02 19:12:47 -0400
commite4450c8417624b71d779cb4f41692538f9165e10 (patch)
treeb70826542223ecdf8a7a259f61b0a1abb8a217d8 /node_modules/@vladfrangu/async_event_emitter
downloadsowbot3-e4450c8417624b71d779cb4f41692538f9165e10.tar.gz
sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.tar.bz2
sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.zip
first commit
Diffstat (limited to 'node_modules/@vladfrangu/async_event_emitter')
-rw-r--r--node_modules/@vladfrangu/async_event_emitter/CHANGELOG.md63
-rw-r--r--node_modules/@vladfrangu/async_event_emitter/LICENSE.md24
-rw-r--r--node_modules/@vladfrangu/async_event_emitter/README.md51
-rw-r--r--node_modules/@vladfrangu/async_event_emitter/THIRD_PARTY_LICENSE.md23
-rw-r--r--node_modules/@vladfrangu/async_event_emitter/dist/index.d.ts57
-rw-r--r--node_modules/@vladfrangu/async_event_emitter/dist/index.global.js568
-rw-r--r--node_modules/@vladfrangu/async_event_emitter/dist/index.global.js.map1
-rw-r--r--node_modules/@vladfrangu/async_event_emitter/dist/index.js571
-rw-r--r--node_modules/@vladfrangu/async_event_emitter/dist/index.js.map1
-rw-r--r--node_modules/@vladfrangu/async_event_emitter/dist/index.mjs547
-rw-r--r--node_modules/@vladfrangu/async_event_emitter/dist/index.mjs.map1
-rw-r--r--node_modules/@vladfrangu/async_event_emitter/package.json107
12 files changed, 2014 insertions, 0 deletions
diff --git a/node_modules/@vladfrangu/async_event_emitter/CHANGELOG.md b/node_modules/@vladfrangu/async_event_emitter/CHANGELOG.md
new file mode 100644
index 0000000..eb7a4bf
--- /dev/null
+++ b/node_modules/@vladfrangu/async_event_emitter/CHANGELOG.md
@@ -0,0 +1,63 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+# [2.2.2](https://github.com/vladfrangu/async_event_emitter/compare/v2.2.1...v2.2.2) - (2023-05-11)
+
+## πŸ› Bug Fixes
+
+- Listener count was always 0 for one listener ([9b78e19](https://github.com/vladfrangu/async_event_emitter/commit/9b78e1992db649004dee852359240b3d0baaac2d))
+
+# [2.2.1](https://github.com/vladfrangu/async_event_emitter/compare/v2.2.0...v2.2.1) - (2023-04-08)
+
+## πŸ› Bug Fixes
+
+- Include comment for throwing error on emit ([19de045](https://github.com/vladfrangu/async_event_emitter/commit/19de0452702a0d9e35e9241259d100ca6d6f5447))
+
+# [2.2.0](https://github.com/vladfrangu/async_event_emitter/compare/v2.1.4...v2.2.0) - (2023-04-07)
+
+## πŸš€ Features
+
+- Speed πŸš€ ([23eb908](https://github.com/vladfrangu/async_event_emitter/commit/23eb90852ff8a6ceb4d6105c6df44c646642efae))
+
+# [2.1.4](https://github.com/vladfrangu/async_event_emitter/compare/v2.1.3...v2.1.4) - (2023-02-18)
+
+## πŸ› Bug Fixes
+
+- Remove predefined error event to allow extensions ([4224bbe](https://github.com/vladfrangu/async_event_emitter/commit/4224bbeae5c25cb94d4073600a9dff7ae3abcceb))
+
+# [2.1.2](https://github.com/vladfrangu/async_event_emitter/compare/v2.1.1...v2.1.2) - (2022-09-19)
+
+## πŸ› Bug Fixes
+
+- Don't use any `@types/node` types ([e4babce](https://github.com/vladfrangu/async_event_emitter/commit/e4babce88c17befdb6f84c73c0de2e0602260681))
+
+# [2.1.1](https://github.com/vladfrangu/async_event_emitter/compare/v2.1.0...v2.1.1) - (2022-09-19)
+
+## πŸ› Bug Fixes
+
+- Correct type errors when building with other types too ([72a03ae](https://github.com/vladfrangu/async_event_emitter/commit/72a03ae1ac30456241b4003a7c2ea93d27e8de5e))
+
+# [2.1.0](https://github.com/vladfrangu/async_event_emitter/compare/v2.0.1...v2.1.0) - (2022-09-18)
+
+## πŸš€ Features
+
+- Bring in line with nodejs EventEmitters ([5a14ed0](https://github.com/vladfrangu/async_event_emitter/commit/5a14ed04bf87ec6a34cd33e26e3f25f101f87bcd))
+
+# [2.0.1](https://github.com/vladfrangu/async_event_emitter/compare/v2.0.0...v2.0.1) - (2022-07-09)
+
+## πŸ› Bug Fixes
+
+- Error event not properly emitting ([b849b38](https://github.com/vladfrangu/async_event_emitter/commit/b849b387c36515c60234c06681bfd4ec32ee5336))
+
+# [2.0.0](https://github.com/vladfrangu/async_event_emitter/compare/v1.0.1...v2.0.0) - (2022-06-29)
+
+## πŸš€ Features
+
+- Use stringified bigints instead of uuids for promise map ([8c69419](https://github.com/vladfrangu/async_event_emitter/commit/8c694199da1a0a231feb1be3b0d7cfdb18cefd0b))
+
+ ### πŸ’₯ Breaking Changes:
+
+
+# Changelog
+
+All notable changes to this project will be documented in this file.
diff --git a/node_modules/@vladfrangu/async_event_emitter/LICENSE.md b/node_modules/@vladfrangu/async_event_emitter/LICENSE.md
new file mode 100644
index 0000000..6bd5831
--- /dev/null
+++ b/node_modules/@vladfrangu/async_event_emitter/LICENSE.md
@@ -0,0 +1,24 @@
+# The MIT License (MIT)
+
+Copyright Β© `2022` `Vlad Frangu`
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the β€œSoftware”), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED β€œAS IS”, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/@vladfrangu/async_event_emitter/README.md b/node_modules/@vladfrangu/async_event_emitter/README.md
new file mode 100644
index 0000000..ceb0d20
--- /dev/null
+++ b/node_modules/@vladfrangu/async_event_emitter/README.md
@@ -0,0 +1,51 @@
+<div align="center">
+
+# @vladfrangu/async_event_emitter
+
+**Simple to use event emitter implementation with async support in mind.**
+
+[![GitHub](https://img.shields.io/github/license/vladfrangu/async_event_emitter)](https://github.com/vladfrangu/async_event_emitter/blob/main/LICENSE.md)
+[![codecov](https://codecov.io/gh/vladfrangu/async_event_emitter/branch/main/graph/badge.svg?token=0MSAyoZNxz)](https://codecov.io/gh/vladfrangu/async_event_emitter)
+[![npm](https://img.shields.io/npm/v/@vladfrangu/async_event_emitter?color=crimson&logo=npm&style=flat-square)](https://www.npmjs.com/package/@vladfrangu/async_event_emitter)
+
+</div>
+
+## Description
+
+A very small, lightweight and simple re-implementation of event emitters, with support for async event handlers in mind.
+
+> **Note**: `@vladfrangu/async_event_emitter` requires Node.js v14 or higher to work, or a browser that has async/await support.
+
+## Features
+
+- TypeScript friendly
+- Offers CJS, ESM and UMD builds
+- Consistent interface with what is expected from an event emitter
+- Simple handling of asynchronous event handlers to allow waiting for their execution to finish if you want to exit the process
+
+## Buy me some doughnuts
+
+Most of my projects are and always will be open source, even if I don't get donations. That being said, I know there are amazing people who may still want to donate just to show their appreciation. Thank you very much in advance!
+
+I accept donations through Ko-fi, PayPal, Patreon and GitHub Sponsorships. You can use the buttons below to donate through your method of choice.
+
+| Donate With | Address |
+| :-------------: | :------------------------------------------------------: |
+| GitHub Sponsors | [Click Here](https://github.com/sponsors/vladfrangu) |
+| Ko-fi | [Click Here](https://ko-fi.com/wolfgalvlad) |
+| Patreon | [Click Here](https://patreon.com/vladfrangu) |
+| PayPal | [Click Here](https://www.paypal.com/paypalme/franguvlad) |
+
+## Contributors ✨
+
+Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
+
+<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
+<!-- prettier-ignore-start -->
+<!-- markdownlint-disable -->
+<!-- markdownlint-enable -->
+<!-- prettier-ignore-end -->
+
+<!-- ALL-CONTRIBUTORS-LIST:END -->
+
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
diff --git a/node_modules/@vladfrangu/async_event_emitter/THIRD_PARTY_LICENSE.md b/node_modules/@vladfrangu/async_event_emitter/THIRD_PARTY_LICENSE.md
new file mode 100644
index 0000000..7e35926
--- /dev/null
+++ b/node_modules/@vladfrangu/async_event_emitter/THIRD_PARTY_LICENSE.md
@@ -0,0 +1,23 @@
+# Most parts of this code are from node.js, specifically from https://github.com/nodejs/node/blob/main/lib/events.js
+
+As such, a lot of the code is licensed under the following license:
+
+Copyright Node.js contributors. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
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":"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","names":[]} \ No newline at end of file
diff --git a/node_modules/@vladfrangu/async_event_emitter/package.json b/node_modules/@vladfrangu/async_event_emitter/package.json
new file mode 100644
index 0000000..bb9534f
--- /dev/null
+++ b/node_modules/@vladfrangu/async_event_emitter/package.json
@@ -0,0 +1,107 @@
+{
+ "name": "@vladfrangu/async_event_emitter",
+ "version": "2.2.2",
+ "description": "An event emitter implementation with async support in mind",
+ "main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "browser": "./dist/index.global.js",
+ "unpkg": "./dist/index.global.js",
+ "types": "./dist/index.d.ts",
+ "exports": {
+ ".": {
+ "import": "./dist/index.mjs",
+ "require": "./dist/index.js",
+ "types": "./dist/index.d.ts"
+ }
+ },
+ "sideEffects": false,
+ "author": "Vlad Frangu <kingdgrizzle@gmail.com>",
+ "license": "MIT",
+ "scripts": {
+ "lint": "eslint src tests --ext ts --fix",
+ "format": "prettier --write \"{src,tests}/**/*.ts\"",
+ "docs": "typedoc",
+ "test": "vitest run",
+ "test:watch": "vitest",
+ "update": "yarn upgrade-interactive",
+ "build": "tsup && tsc -b src",
+ "clean": "node scripts/clean.mjs",
+ "typecheck": "tsc -p tsconfig.typecheck.json",
+ "bump": "cliff-jumper",
+ "check-update": "cliff-jumper --dry-run",
+ "_postinstall": "husky install .github/husky",
+ "prepack": "rollup-type-bundler && pinst --disable",
+ "postpack": "pinst --enable"
+ },
+ "devDependencies": {
+ "@commitlint/cli": "^17.4.4",
+ "@commitlint/config-conventional": "^17.4.4",
+ "@favware/cliff-jumper": "^1.10.0",
+ "@favware/npm-deprecate": "^1.0.7",
+ "@favware/rollup-type-bundler": "^2.0.0",
+ "@sapphire/eslint-config": "^4.3.8",
+ "@sapphire/prettier-config": "^1.4.5",
+ "@sapphire/ts-config": "^3.3.4",
+ "@typescript-eslint/eslint-plugin": "^5.52.0",
+ "@typescript-eslint/parser": "^5.52.0",
+ "@vitest/coverage-c8": "^0.28.5",
+ "cz-conventional-changelog": "^3.3.0",
+ "eslint": "^8.34.0",
+ "eslint-config-prettier": "^8.6.0",
+ "eslint-plugin-prettier": "^4.2.1",
+ "husky": "^8.0.3",
+ "lint-staged": "^13.1.2",
+ "pinst": "^3.0.0",
+ "prettier": "^2.8.4",
+ "pretty-quick": "^3.1.3",
+ "tsup": "^6.6.3",
+ "typedoc": "^0.23.25",
+ "typedoc-plugin-mdn-links": "^2.0.2",
+ "typescript": "^4.9.5",
+ "vitest": "^0.28.5"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/vladfrangu/async_event_emitter.git"
+ },
+ "files": [
+ "dist",
+ "!dist/*.tsbuildinfo",
+ "THIRD_PARTY_LICENSE.md"
+ ],
+ "engines": {
+ "node": ">=v14.0.0",
+ "npm": ">=7.0.0"
+ },
+ "keywords": [
+ "event emitter",
+ "async",
+ "event",
+ "emitter"
+ ],
+ "bugs": {
+ "url": "https://github.com/vladfrangu/async_event_emitter/issues"
+ },
+ "commitlint": {
+ "extends": [
+ "@commitlint/config-conventional"
+ ]
+ },
+ "lint-staged": {
+ "*.{mjs,js,ts}": "eslint --fix --ext mjs,js,ts"
+ },
+ "config": {
+ "commitizen": {
+ "path": "./node_modules/cz-conventional-changelog"
+ }
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "prettier": "@sapphire/prettier-config",
+ "resolutions": {
+ "ansi-regex": "^5.0.1",
+ "minimist": "^1.2.6"
+ },
+ "packageManager": "yarn@3.2.1"
+} \ No newline at end of file