feat: initial Papo bot scaffold

This commit is contained in:
Pascal.P
2025-11-30 11:04:41 +01:00
commit 000481a3b0
12168 changed files with 1584750 additions and 0 deletions

View File

@@ -0,0 +1,117 @@
# Changelog
All notable changes to this project will be documented in this file.
# [2.4.7](https://github.com/vladfrangu/async_event_emitter/compare/v2.4.7...v2.4.7) - (2025-10-04)
## 🐛 Bug Fixes
- Emit error event if handler is attached, emit logging enhancements (#9) ([3e4448c](https://github.com/vladfrangu/async_event_emitter/commit/3e4448cc9600fb344a3ea0ba13d7326c371f010c))
# [2.4.6](https://github.com/vladfrangu/async_event_emitter/compare/v2.4.6...v2.4.6) - (2024-08-21)
## 🐛 Bug Fixes
- Static `.on` returning wrong iterator types ([77ad774](https://github.com/vladfrangu/async_event_emitter/commit/77ad7741f75eeb499d217d7e93ce3fb5aab483ea))
# [2.4.5](https://github.com/vladfrangu/async_event_emitter/compare/v2.4.5...v2.4.5) - (2024-08-01)
## 🐛 Bug Fixes
- Brand each AEE instance so inference can work with AEE.on ([305b2c9](https://github.com/vladfrangu/async_event_emitter/commit/305b2c9bc7ccbe21355f8bbf4ee8c5a9cf460188))
# [2.4.4](https://github.com/vladfrangu/async_event_emitter/compare/v2.4.4...v2.4.4) - (2024-07-15)
## 🐛 Bug Fixes
- Accidentally inverted emit error event logic ([134ab3c](https://github.com/vladfrangu/async_event_emitter/commit/134ab3cf526137a0f014ed2984554a62a7714df7))
# [2.4.2](https://github.com/vladfrangu/async_event_emitter/compare/v2.4.2...v2.4.2) - (2024-07-09)
## 🐛 Bug Fixes
- Built types were wrong, causing inference issues ([28e9247](https://github.com/vladfrangu/async_event_emitter/commit/28e9247250e5a39f11a31efab88df334f05d6bfd))
# [2.4.1](https://github.com/vladfrangu/async_event_emitter/compare/v2.4.1...v2.4.1) - (2024-07-03)
## 🐛 Bug Fixes
- Correct strictness of types and overloads for certain methods ([75c7e19](https://github.com/vladfrangu/async_event_emitter/commit/75c7e191ffa65d2cfccf2dda4e4395427fb979f6))
# [2.4.0](https://github.com/vladfrangu/async_event_emitter/compare/v2.4.0...v2.4.0) - (2024-06-27)
## 🚀 Features
- Cleaner types, more correct types, the usual ([c1b0f75](https://github.com/vladfrangu/async_event_emitter/commit/c1b0f751f597d9dac5d10870f49f30b8b1dc4908))
# [2.3.0](https://github.com/vladfrangu/async_event_emitter/compare/v2.3.0...v2.3.0) - (2024-06-21)
## 🚀 Features
- Cleanup ignore comments ([0f4029e](https://github.com/vladfrangu/async_event_emitter/commit/0f4029e9935373e15073288da1841ffb39cc22d8))
# [2.2.4](https://github.com/vladfrangu/async_event_emitter/compare/v2.2.4...v2.2.4) - (2023-12-03)
## 🐛 Bug Fixes
- Correct import of CJS version in package.json (#3) ([8dc308c](https://github.com/vladfrangu/async_event_emitter/commit/8dc308c43fdf9a024a7d48e7219d75e4c9f597dd))
# [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.

View File

@@ -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.

51
node_modules/@vladfrangu/async_event_emitter/README.md generated vendored Normal file
View File

@@ -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!

View File

@@ -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.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,78 @@
type InternalGetAsyncEventEmitterEventParameters<EE extends AsyncEventEmitter<any>, EventName extends PropertyKey, Events extends Record<PropertyKey, unknown[]> = EE extends AsyncEventEmitter<infer Events> ? Events : Record<PropertyKey, unknown[]>> = EventName extends keyof AsyncEventEmitterPredefinedEvents ? EventName extends keyof Events ? AsyncEventEmitterPredefinedEvents[EventName] | (Events & Record<PropertyKey, unknown[]>)[EventName] : AsyncEventEmitterPredefinedEvents[EventName] : EventName extends keyof Events ? (Events & Record<PropertyKey, unknown[]>)[EventName] : any[];
type GetAsyncEventEmitterEventParameters<EE extends AsyncEventEmitter<any>, EventName extends PropertyKey | keyof AsyncEventEmitterPredefinedEvents> = InternalGetAsyncEventEmitterEventParameters<EE, EventName>;
type InternalAsyncEventEmitterInternalListenerForEvent<EE extends AsyncEventEmitter<any>, EventName extends PropertyKey, Events extends Record<PropertyKey, unknown[]> = EE extends AsyncEventEmitter<infer Events> ? Events : Record<PropertyKey, unknown[]>> = EventName extends keyof AsyncEventEmitterPredefinedEvents ? EventName extends keyof Events ? Listener<AsyncEventEmitterPredefinedEvents[EventName] | (Events & Record<PropertyKey, unknown[]>)[EventName]> : Listener<AsyncEventEmitterPredefinedEvents[EventName]> : EventName extends keyof Events ? Listener<(Events & Record<PropertyKey, unknown[]>)[EventName]> : Listener<any[]>;
type AsyncEventEmitterInternalListenerForEvent<EE extends AsyncEventEmitter<any>, EventName extends PropertyKey | keyof AsyncEventEmitterPredefinedEvents> = InternalAsyncEventEmitterInternalListenerForEvent<EE, EventName>;
type AsyncEventEmitterListenerForEvent<EE extends AsyncEventEmitter<any>, EventName extends PropertyKey | keyof AsyncEventEmitterPredefinedEvents> = Exclude<AsyncEventEmitterInternalListenerForEvent<EE, EventName>['listener'], undefined>;
declare const brandSymbol: unique symbol;
declare const kCapturePromiseRejections: unique symbol;
declare class AsyncEventEmitter<Events extends {} = {}> {
/**
* This field doesn't actually exist, it's just a way to make TS properly infer the events from classes that extend AsyncEventEmitter
*/
protected readonly [brandSymbol]: Events;
private _events;
private _eventCount;
private _maxListeners;
private _internalPromiseMap;
private _wrapperId;
private [kCapturePromiseRejections];
addListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
addListener<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
on<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
on<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
once<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
once<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
removeListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
removeListener<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
off<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
off<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
removeAllListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(event: K): this;
removeAllListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(event?: K | undefined): this;
removeAllListeners(event: string | symbol): this;
removeAllListeners(event?: string | symbol | undefined): this;
setMaxListeners(n: number): this;
getMaxListeners(): number;
listeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>[];
listeners<K extends string | symbol>(eventName: K): AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>[];
rawListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): AsyncEventEmitterInternalListenerForEvent<AsyncEventEmitter<Events>, K>[];
rawListeners<K extends string | symbol>(eventName: K): AsyncEventEmitterInternalListenerForEvent<AsyncEventEmitter<Events>, K>[];
emit<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, ...args: GetAsyncEventEmitterEventParameters<AsyncEventEmitter<Events>, K>): boolean;
emit<K extends string | symbol>(eventName: K, ...args: GetAsyncEventEmitterEventParameters<AsyncEventEmitter<Events>, K>): boolean;
listenerCount<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): number;
listenerCount(eventName: string | symbol): number;
prependListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
prependListener<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
prependOnceListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
prependOnceListener<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
eventNames(): (string | symbol)[] & (keyof AsyncEventEmitterPredefinedEvents)[] & (keyof Events)[];
waitForAllListenersToComplete(): Promise<boolean>;
private _addListener;
private _wrapListener;
static listenerCount<EventMap extends {}, EventName extends PropertyKey = keyof EventMap | keyof AsyncEventEmitterPredefinedEvents>(emitter: AsyncEventEmitter<EventMap>, eventName: EventName | keyof AsyncEventEmitterPredefinedEvents): number;
static listenerCount(emitter: AsyncEventEmitter<any>, eventName: string | symbol): number;
static once<EventMap extends {}, EventName extends PropertyKey = keyof EventMap | keyof AsyncEventEmitterPredefinedEvents>(emitter: AsyncEventEmitter<EventMap>, eventName: EventName, options?: AbortableMethods): Promise<GetAsyncEventEmitterEventParameters<AsyncEventEmitter<EventMap>, EventName>>;
static once(emitter: AsyncEventEmitter<any>, eventName: string | symbol, options?: AbortableMethods): Promise<any[]>;
static on<EventMap extends {}, EventName extends PropertyKey = keyof EventMap | keyof AsyncEventEmitterPredefinedEvents>(emitter: AsyncEventEmitter<EventMap>, eventName: EventName, options?: AbortableMethods): AsyncGenerator<GetAsyncEventEmitterEventParameters<AsyncEventEmitter<EventMap>, EventName>, void>;
static on(emitter: AsyncEventEmitter<any>, eventName: string | symbol, options?: AbortableMethods): AsyncGenerator<any[], void>;
}
interface AsyncEventEmitterPredefinedEvents {
newListener: [eventName: string | symbol, listener: (...args: any[]) => void];
removeListener: [eventName: string | symbol, listener: (...args: any[]) => void];
}
interface Listener<Args extends any[] = any[]> {
(...args: Args): void;
listener?: (...args: Args) => void;
}
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, type AbortErrorOptions, type AbortableMethods, AsyncEventEmitter, type AsyncEventEmitterInternalListenerForEvent, type AsyncEventEmitterListenerForEvent, type AsyncEventEmitterPredefinedEvents, type GetAsyncEventEmitterEventParameters, type Listener };

View File

@@ -0,0 +1,78 @@
type InternalGetAsyncEventEmitterEventParameters<EE extends AsyncEventEmitter<any>, EventName extends PropertyKey, Events extends Record<PropertyKey, unknown[]> = EE extends AsyncEventEmitter<infer Events> ? Events : Record<PropertyKey, unknown[]>> = EventName extends keyof AsyncEventEmitterPredefinedEvents ? EventName extends keyof Events ? AsyncEventEmitterPredefinedEvents[EventName] | (Events & Record<PropertyKey, unknown[]>)[EventName] : AsyncEventEmitterPredefinedEvents[EventName] : EventName extends keyof Events ? (Events & Record<PropertyKey, unknown[]>)[EventName] : any[];
type GetAsyncEventEmitterEventParameters<EE extends AsyncEventEmitter<any>, EventName extends PropertyKey | keyof AsyncEventEmitterPredefinedEvents> = InternalGetAsyncEventEmitterEventParameters<EE, EventName>;
type InternalAsyncEventEmitterInternalListenerForEvent<EE extends AsyncEventEmitter<any>, EventName extends PropertyKey, Events extends Record<PropertyKey, unknown[]> = EE extends AsyncEventEmitter<infer Events> ? Events : Record<PropertyKey, unknown[]>> = EventName extends keyof AsyncEventEmitterPredefinedEvents ? EventName extends keyof Events ? Listener<AsyncEventEmitterPredefinedEvents[EventName] | (Events & Record<PropertyKey, unknown[]>)[EventName]> : Listener<AsyncEventEmitterPredefinedEvents[EventName]> : EventName extends keyof Events ? Listener<(Events & Record<PropertyKey, unknown[]>)[EventName]> : Listener<any[]>;
type AsyncEventEmitterInternalListenerForEvent<EE extends AsyncEventEmitter<any>, EventName extends PropertyKey | keyof AsyncEventEmitterPredefinedEvents> = InternalAsyncEventEmitterInternalListenerForEvent<EE, EventName>;
type AsyncEventEmitterListenerForEvent<EE extends AsyncEventEmitter<any>, EventName extends PropertyKey | keyof AsyncEventEmitterPredefinedEvents> = Exclude<AsyncEventEmitterInternalListenerForEvent<EE, EventName>['listener'], undefined>;
declare const brandSymbol: unique symbol;
declare const kCapturePromiseRejections: unique symbol;
declare class AsyncEventEmitter<Events extends {} = {}> {
/**
* This field doesn't actually exist, it's just a way to make TS properly infer the events from classes that extend AsyncEventEmitter
*/
protected readonly [brandSymbol]: Events;
private _events;
private _eventCount;
private _maxListeners;
private _internalPromiseMap;
private _wrapperId;
private [kCapturePromiseRejections];
addListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
addListener<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
on<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
on<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
once<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
once<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
removeListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
removeListener<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
off<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
off<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
removeAllListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(event: K): this;
removeAllListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(event?: K | undefined): this;
removeAllListeners(event: string | symbol): this;
removeAllListeners(event?: string | symbol | undefined): this;
setMaxListeners(n: number): this;
getMaxListeners(): number;
listeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>[];
listeners<K extends string | symbol>(eventName: K): AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>[];
rawListeners<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): AsyncEventEmitterInternalListenerForEvent<AsyncEventEmitter<Events>, K>[];
rawListeners<K extends string | symbol>(eventName: K): AsyncEventEmitterInternalListenerForEvent<AsyncEventEmitter<Events>, K>[];
emit<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, ...args: GetAsyncEventEmitterEventParameters<AsyncEventEmitter<Events>, K>): boolean;
emit<K extends string | symbol>(eventName: K, ...args: GetAsyncEventEmitterEventParameters<AsyncEventEmitter<Events>, K>): boolean;
listenerCount<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K): number;
listenerCount(eventName: string | symbol): number;
prependListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
prependListener<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
prependOnceListener<K extends keyof Events | keyof AsyncEventEmitterPredefinedEvents>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
prependOnceListener<K extends string | symbol>(eventName: K, listener: AsyncEventEmitterListenerForEvent<AsyncEventEmitter<Events>, K>): this;
eventNames(): (string | symbol)[] & (keyof AsyncEventEmitterPredefinedEvents)[] & (keyof Events)[];
waitForAllListenersToComplete(): Promise<boolean>;
private _addListener;
private _wrapListener;
static listenerCount<EventMap extends {}, EventName extends PropertyKey = keyof EventMap | keyof AsyncEventEmitterPredefinedEvents>(emitter: AsyncEventEmitter<EventMap>, eventName: EventName | keyof AsyncEventEmitterPredefinedEvents): number;
static listenerCount(emitter: AsyncEventEmitter<any>, eventName: string | symbol): number;
static once<EventMap extends {}, EventName extends PropertyKey = keyof EventMap | keyof AsyncEventEmitterPredefinedEvents>(emitter: AsyncEventEmitter<EventMap>, eventName: EventName, options?: AbortableMethods): Promise<GetAsyncEventEmitterEventParameters<AsyncEventEmitter<EventMap>, EventName>>;
static once(emitter: AsyncEventEmitter<any>, eventName: string | symbol, options?: AbortableMethods): Promise<any[]>;
static on<EventMap extends {}, EventName extends PropertyKey = keyof EventMap | keyof AsyncEventEmitterPredefinedEvents>(emitter: AsyncEventEmitter<EventMap>, eventName: EventName, options?: AbortableMethods): AsyncGenerator<GetAsyncEventEmitterEventParameters<AsyncEventEmitter<EventMap>, EventName>, void>;
static on(emitter: AsyncEventEmitter<any>, eventName: string | symbol, options?: AbortableMethods): AsyncGenerator<any[], void>;
}
interface AsyncEventEmitterPredefinedEvents {
newListener: [eventName: string | symbol, listener: (...args: any[]) => void];
removeListener: [eventName: string | symbol, listener: (...args: any[]) => void];
}
interface Listener<Args extends any[] = any[]> {
(...args: Args): void;
listener?: (...args: Args) => void;
}
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, type AbortErrorOptions, type AbortableMethods, AsyncEventEmitter, type AsyncEventEmitterInternalListenerForEvent, type AsyncEventEmitterListenerForEvent, type AsyncEventEmitterPredefinedEvents, type GetAsyncEventEmitterEventParameters, type Listener };

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,112 @@
{
"name": "@vladfrangu/async_event_emitter",
"version": "2.4.7",
"description": "An event emitter implementation with async support in mind",
"main": "./dist/index.cjs",
"module": "./dist/index.mjs",
"browser": "./dist/index.global.js",
"unpkg": "./dist/index.global.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"import": {
"types": "./dist/index.d.mts",
"default": "./dist/index.mjs"
},
"require": {
"types": "./dist/index.d.ts",
"default": "./dist/index.cjs"
},
"default": {
"types": "./dist/index.d.ts",
"default": "./dist/index.cjs"
}
}
},
"sideEffects": false,
"author": "Vlad Frangu <me@vladfrangu.dev>",
"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",
"prepack": "yarn build",
"build": "tsc -p src --noEmit && yarn clean && tsup",
"clean": "node scripts/clean.mjs",
"typecheck": "tsc -p src --noEmit",
"bump": "cliff-jumper",
"check-update": "cliff-jumper --dry-run"
},
"devDependencies": {
"@commitlint/cli": "^19.3.0",
"@commitlint/config-conventional": "^19.2.2",
"@favware/cliff-jumper": "^2.2.3",
"@favware/npm-deprecate": "^1.0.7",
"@sapphire/eslint-config": "^5.0.5",
"@sapphire/prettier-config": "^2.0.0",
"@sapphire/ts-config": "^5.0.1",
"@typescript-eslint/eslint-plugin": "^7.14.1",
"@typescript-eslint/parser": "^7.14.1",
"@vitest/coverage-c8": "^0.33.0",
"@vitest/coverage-v8": "^1.6.0",
"cz-conventional-changelog": "^3.3.0",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.1.3",
"lint-staged": "^15.2.7",
"node-inspect-extracted": "^3.2.1",
"prettier": "^3.3.2",
"tsup": "^8.1.0",
"typedoc": "^0.26.2",
"typedoc-plugin-mdn-links": "^3.2.1",
"typescript": "^5.5.2",
"vitest": "^1.6.0"
},
"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": {
"*": "prettier --ignore-unknown --write",
"*.{mjs,js,ts}": "eslint --fix --ext mjs,js,ts"
},
"config": {
"commitizen": {
"path": "./node_modules/cz-conventional-changelog"
}
},
"publishConfig": {
"access": "public"
},
"packageManager": "yarn@4.3.1",
"volta": {
"node": "22.20.0",
"yarn": "4.10.3"
}
}