Spaces:
Sleeping
Sleeping
| /** | |
| * Minimal `EventEmitter` interface that is molded against the Node.js | |
| * `EventEmitter` interface. | |
| */ | |
| declare class EventEmitter< | |
| EventTypes extends EventEmitter.ValidEventTypes = string | symbol, | |
| Context extends any = any | |
| > { | |
| static prefixed: string | boolean; | |
| /** | |
| * Return an array listing the events for which the emitter has registered | |
| * listeners. | |
| */ | |
| eventNames(): Array<EventEmitter.EventNames<EventTypes>>; | |
| /** | |
| * Return the listeners registered for a given event. | |
| */ | |
| listeners<T extends EventEmitter.EventNames<EventTypes>>( | |
| event: T | |
| ): Array<EventEmitter.EventListener<EventTypes, T>>; | |
| /** | |
| * Return the number of listeners listening to a given event. | |
| */ | |
| listenerCount(event: EventEmitter.EventNames<EventTypes>): number; | |
| /** | |
| * Calls each of the listeners registered for a given event. | |
| */ | |
| emit<T extends EventEmitter.EventNames<EventTypes>>( | |
| event: T, | |
| ...args: EventEmitter.EventArgs<EventTypes, T> | |
| ): boolean; | |
| /** | |
| * Add a listener for a given event. | |
| */ | |
| on<T extends EventEmitter.EventNames<EventTypes>>( | |
| event: T, | |
| fn: EventEmitter.EventListener<EventTypes, T>, | |
| context?: Context | |
| ): this; | |
| addListener<T extends EventEmitter.EventNames<EventTypes>>( | |
| event: T, | |
| fn: EventEmitter.EventListener<EventTypes, T>, | |
| context?: Context | |
| ): this; | |
| /** | |
| * Add a one-time listener for a given event. | |
| */ | |
| once<T extends EventEmitter.EventNames<EventTypes>>( | |
| event: T, | |
| fn: EventEmitter.EventListener<EventTypes, T>, | |
| context?: Context | |
| ): this; | |
| /** | |
| * Remove the listeners of a given event. | |
| */ | |
| removeListener<T extends EventEmitter.EventNames<EventTypes>>( | |
| event: T, | |
| fn?: EventEmitter.EventListener<EventTypes, T>, | |
| context?: Context, | |
| once?: boolean | |
| ): this; | |
| off<T extends EventEmitter.EventNames<EventTypes>>( | |
| event: T, | |
| fn?: EventEmitter.EventListener<EventTypes, T>, | |
| context?: Context, | |
| once?: boolean | |
| ): this; | |
| /** | |
| * Remove all listeners, or those of the specified event. | |
| */ | |
| removeAllListeners(event?: EventEmitter.EventNames<EventTypes>): this; | |
| } | |
| declare namespace EventEmitter { | |
| export interface ListenerFn<Args extends any[] = any[]> { | |
| (...args: Args): void; | |
| } | |
| export interface EventEmitterStatic { | |
| new < | |
| EventTypes extends ValidEventTypes = string | symbol, | |
| Context = any | |
| >(): EventEmitter<EventTypes, Context>; | |
| } | |
| /** | |
| * `object` should be in either of the following forms: | |
| * ``` | |
| * interface EventTypes { | |
| * 'event-with-parameters': any[] | |
| * 'event-with-example-handler': (...args: any[]) => void | |
| * } | |
| * ``` | |
| */ | |
| export type ValidEventTypes = string | symbol | object; | |
| export type EventNames<T extends ValidEventTypes> = T extends string | symbol | |
| ? T | |
| : keyof T; | |
| export type ArgumentMap<T extends object> = { | |
| [K in keyof T]: T[K] extends (...args: any[]) => void | |
| ? Parameters<T[K]> | |
| : T[K] extends any[] | |
| ? T[K] | |
| : any[]; | |
| }; | |
| export type EventListener< | |
| T extends ValidEventTypes, | |
| K extends EventNames<T> | |
| > = T extends string | symbol | |
| ? (...args: any[]) => void | |
| : ( | |
| ...args: ArgumentMap<Exclude<T, string | symbol>>[Extract<K, keyof T>] | |
| ) => void; | |
| export type EventArgs< | |
| T extends ValidEventTypes, | |
| K extends EventNames<T> | |
| > = Parameters<EventListener<T, K>>; | |
| export const EventEmitter: EventEmitterStatic; | |
| } | |
| export { EventEmitter } | |
| export default EventEmitter; | |