32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
|
|
/**
|
||
|
|
* Universal Events implementation
|
||
|
|
* Browser: Uses EventTarget API
|
||
|
|
* Node.js: Uses built-in events module
|
||
|
|
*/
|
||
|
|
/**
|
||
|
|
* Universal EventEmitter interface
|
||
|
|
*/
|
||
|
|
export interface UniversalEventEmitter {
|
||
|
|
on(event: string, listener: (...args: any[]) => void): this;
|
||
|
|
off(event: string, listener: (...args: any[]) => void): this;
|
||
|
|
emit(event: string, ...args: any[]): boolean;
|
||
|
|
once(event: string, listener: (...args: any[]) => void): this;
|
||
|
|
removeAllListeners(event?: string): this;
|
||
|
|
listenerCount(event: string): number;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Universal EventEmitter class
|
||
|
|
*/
|
||
|
|
export declare class EventEmitter implements UniversalEventEmitter {
|
||
|
|
private emitter;
|
||
|
|
constructor();
|
||
|
|
on(event: string, listener: (...args: any[]) => void): this;
|
||
|
|
off(event: string, listener: (...args: any[]) => void): this;
|
||
|
|
emit(event: string, ...args: any[]): boolean;
|
||
|
|
once(event: string, listener: (...args: any[]) => void): this;
|
||
|
|
removeAllListeners(event?: string): this;
|
||
|
|
listenerCount(event: string): number;
|
||
|
|
}
|
||
|
|
export { EventEmitter as default };
|
||
|
|
export declare const NodeEventEmitterClass: any;
|