@glandjs/events
Version:
A fast, zero‑dependency event broker and message bus for building scalable, event‑driven applications.
22 lines (21 loc) • 1.64 kB
TypeScript
import type { EventOptions, EventPayload, EventRecord, EventReturn, Events, EventType, GetListenerMethod, Listener, OnceMethod, OnMethod, ShutdownMethod, WatchMethod } from '../common';
export declare class EventEmitter<TEvents extends EventRecord> implements OnMethod<TEvents>, OnceMethod<TEvents>, GetListenerMethod<TEvents>, ShutdownMethod, WatchMethod<TEvents> {
private emitter;
private watcher;
private defaultOptions;
private maxListeners;
constructor(separator?: string, cacheSize?: number, timeout?: number, maxListeners?: number);
on<K extends Events<TEvents>>(event: K, listener: Listener<EventPayload<TEvents, K>, void>, options?: EventOptions): this;
on<K extends Events<TEvents>>(event: K, listener: null | Listener<EventPayload<TEvents, K>, void>, options: EventOptions & {
watch: true;
}): Promise<EventPayload<TEvents, K>>;
watch<K extends Events<TEvents>>(event: K, timeoutMs?: number): Promise<EventPayload<TEvents, K>>;
off<K extends Events<TEvents>>(event: K, listener?: Listener<EventPayload<TEvents, K>, void>): this;
emit<K extends keyof TEvents & EventType>(event: K, payload: TEvents[K], options?: EventOptions): void;
shutdown(): void;
once<K extends Events<TEvents>>(event: K, listener: Listener<EventPayload<TEvents, K>, void>): this;
once<K extends Events<TEvents>>(event: K, listener: Listener<EventPayload<TEvents, K>, void> | null, options: EventOptions & {
watch: true;
}): Promise<EventPayload<TEvents, K>>;
getListener<K extends Events<TEvents>>(event: K): Listener<EventPayload<TEvents, K>, EventReturn<TEvents, K>>[];
}