xtutils
Version:
Thuku's assorted general purpose typescript/javascript library.
133 lines (132 loc) • 4.17 kB
TypeScript
/**
* Emitted event interface
*/
export interface IEvent<T = any> {
type: string;
time: number;
data: T;
}
/**
* Private props `Symbol` key name
*/
declare const PROPS: unique symbol;
/**
* @class EventEmitter
*/
export declare class EventEmitter {
/**
* EventEmitter global max listeners
* - warns if exceeded (helps find memory leaks)
*/
static get max_listeners(): number;
static set max_listeners(value: any);
/**
* Instance "private" props
*/
[PROPS]: {
_events: {
[type: string]: any;
};
_max_listeners: number | undefined;
};
/**
* Max listeners count (default: `undefiend` ~ `EventEmitter.max_listeners`)
* - Accepts positive integer `number`
* - Set to zero for unlimited
*/
get max_listeners(): number | undefined;
set max_listeners(value: any);
/**
* Create new instance
*/
constructor();
/**
* Get valid event type
*
* @param type - event type/name
* @param throwable - enable throwing error when type is invalid
* @returns `string` lowercase event name ~ `''` on error
*/
static type(type: any, throwable?: boolean): string;
/**
* Get valid event listener callback function.
*
* @param listener - event listener
* @param throwable - enable throwing error when listener is invalid
* @returns `(event:IEvent)=>void` event handler | `undefined` on error
*/
static listener(listener: (event: IEvent) => void, throwable?: boolean): ((event: IEvent) => void) | undefined;
/**
* Get event listeners
*
* @param type - event type/name
* @returns `((event:IEvent)=>void)[]` event handlers
*/
listeners(type: string): ((event: IEvent) => void)[];
/**
* Check if event listener exists
*
* @param type - event type/name
* @param listener - event listener
* @returns `((event:IEvent)=>void)[]` event handlers
*/
hasListener(type: string, listener: (event: IEvent) => void): boolean;
/**
* Emit event
*
* @param type - event type/name
* @param data - event data
* @returns `boolean` caught
*/
emit(type: string, data?: any): boolean;
/**
* Add event listener ~ emits 'newListener' event if added (alias `emitter.addListener`)
*
* @param type - event type/name
* @param listener - event listener callback function
* @param once - one time callback
* @returns `EventEmitter` - `this` instance
*/
on(type: string, listener: (event: IEvent) => void, once?: boolean): EventEmitter;
/**
* Add one time event listener ~ emits 'newListener' event if added
*
* @param type - event type/name
* @param listener - event listener callback function
* @returns `EventEmitter` - `this` instance
*/
once(type: string, listener: (event: IEvent) => void): EventEmitter;
/**
* Add event subscriber
*
* @param type - event type/name
* @param listener - event callback handler
* @returns `(()=>void)` unsubscribe callback
*/
subscribe(type: string, listener: (event: IEvent) => void): () => void;
/**
* Add event listener ~ emits 'newListener' event if added
*
* @param type - event type/name
* @param listener - event listener callback function
* @param once - one time callback
* @returns `EventEmitter` - `this` instance
*/
addListener(type: string, listener: (event: IEvent) => void, once?: boolean): EventEmitter;
/**
* Remove event listener ~ emits 'removeListener' event if removed
*
* @param type - event type/name
* @param listener - event listener callback function
* @returns `EventEmitter` - `this` instance
*/
removeListener(type: string, listener: (event: IEvent) => void): EventEmitter;
/**
* Remove all listeners ~ emits 'removeListener' event for each removed listener
*
* @param type - event type/name
* @returns `EventEmitter` - `this` instance
*/
removeAllListeners(type: string): EventEmitter;
}
export {};