mirror of
https://gitee.com/myxzgzs/boyue_jnpf.git
synced 2025-08-10 08:12:42 +08:00
34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
import { Nullish } from "builder-util-runtime";
|
|
type Handler = (...args: any[]) => Promise<void> | void;
|
|
export type HandlerType = "system" | "user";
|
|
type Handle = {
|
|
handler: Handler;
|
|
type: HandlerType;
|
|
};
|
|
export type EventMap = {
|
|
[key: string]: Handler;
|
|
};
|
|
interface TypedEventEmitter<Events extends EventMap> {
|
|
on<E extends keyof Events>(event: E, listener: Events[E] | Nullish, type: HandlerType): this;
|
|
off<E extends keyof Events>(event: E, listener: Events[E] | Nullish): this;
|
|
emit<E extends keyof Events>(event: E, ...args: Parameters<Events[E]>): Promise<{
|
|
emittedSystem: boolean;
|
|
emittedUser: boolean;
|
|
}>;
|
|
filterListeners<E extends keyof Events>(event: E, type: HandlerType): Handle[];
|
|
clear(): void;
|
|
}
|
|
export declare class AsyncEventEmitter<T extends EventMap> implements TypedEventEmitter<T> {
|
|
private readonly listeners;
|
|
private readonly cancellationToken;
|
|
on<E extends keyof T>(event: E, listener: T[E] | Nullish, type?: HandlerType): this;
|
|
off<E extends keyof T>(event: E, listener: T[E] | Nullish): this;
|
|
emit<E extends keyof T>(event: E, ...args: Parameters<T[E]>): Promise<{
|
|
emittedSystem: boolean;
|
|
emittedUser: boolean;
|
|
}>;
|
|
filterListeners<E extends keyof T>(event: E, type: HandlerType | undefined): Handle[];
|
|
clear(): void;
|
|
}
|
|
export {};
|