Spaces:
Running
Running
declare type EventMap = { | |
[eventName: string]: Array<unknown>; | |
}; | |
declare type InternalEventNames = 'newListener' | 'removeListener'; | |
declare type InternalListener<Events extends EventMap> = Listener<[ | |
eventName: keyof Events, | |
listener: Listener<Array<unknown>> | |
]>; | |
declare type Listener<Data extends Array<unknown>> = (...data: Data) => void; | |
/** | |
* Node.js-compatible implementation of `EventEmitter`. | |
* | |
* @example | |
* const emitter = new Emitter<{ hello: [string] }>() | |
* emitter.on('hello', (name) => console.log(name)) | |
* emitter.emit('hello', 'John') | |
*/ | |
declare class Emitter<Events extends EventMap> { | |
private events; | |
private maxListeners; | |
private hasWarnedAboutPotentialMemoryLeak; | |
static defaultMaxListeners: number; | |
static listenerCount<Events extends EventMap>(emitter: Emitter<EventMap>, eventName: keyof Events): number; | |
constructor(); | |
private _emitInternalEvent; | |
private _getListeners; | |
private _removeListener; | |
private _wrapOnceListener; | |
setMaxListeners(maxListeners: number): this; | |
/** | |
* Returns the current max listener value for the `Emitter` which is | |
* either set by `emitter.setMaxListeners(n)` or defaults to | |
* `Emitter.defaultMaxListeners`. | |
*/ | |
getMaxListeners(): number; | |
/** | |
* Returns an array listing the events for which the emitter has registered listeners. | |
* The values in the array will be strings or Symbols. | |
*/ | |
eventNames(): Array<keyof Events>; | |
/** | |
* Synchronously calls each of the listeners registered for the event named `eventName`, | |
* in the order they were registered, passing the supplied arguments to each. | |
* Returns `true` if the event has listeners, `false` otherwise. | |
* | |
* @example | |
* const emitter = new Emitter<{ hello: [string] }>() | |
* emitter.emit('hello', 'John') | |
*/ | |
emit<EventName extends keyof Events>(eventName: EventName, ...data: Events[EventName]): boolean; | |
addListener(eventName: InternalEventNames, listener: InternalListener<Events>): this; | |
addListener<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this; | |
on(eventName: InternalEventNames, listener: InternalListener<Events>): this; | |
on<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this; | |
once(eventName: InternalEventNames, listener: InternalListener<Events>): this; | |
once<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this; | |
prependListener(eventName: InternalEventNames, listener: InternalListener<Events>): this; | |
prependListener<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this; | |
prependOnceListener(eventName: InternalEventNames, listener: InternalListener<Events>): this; | |
prependOnceListener<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this; | |
removeListener(eventName: InternalEventNames, listener: InternalListener<Events>): this; | |
removeListener<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this; | |
off(eventName: InternalEventNames, listener: InternalListener<Events>): this; | |
off<EventName extends keyof Events>(eventName: EventName, listener: Listener<Events[EventName]>): this; | |
removeAllListeners(eventName?: InternalEventNames): this; | |
removeAllListeners<EventName extends keyof Events>(eventName?: EventName): this; | |
listeners(eventName: InternalEventNames): Array<Listener<any>>; | |
listeners<EventName extends keyof Events>(eventName: EventName): Array<Listener<Events[EventName]>>; | |
listenerCount(eventName: InternalEventNames): number; | |
listenerCount<EventName extends keyof Events>(eventName: EventName): number; | |
rawListeners<EventName extends keyof Events>(eventName: EventName): Array<Listener<Events[EventName]>>; | |
} | |
declare class MemoryLeakError extends Error { | |
readonly emitter: Emitter<any>; | |
readonly type: string | number | symbol; | |
readonly count: number; | |
constructor(emitter: Emitter<any>, type: string | number | symbol, count: number); | |
} | |
export { Emitter, EventMap, InternalEventNames, InternalListener, Listener, MemoryLeakError }; | |