@bacnet-js/device
Version:
A TypeScript library for implementing BACnet IP devices in Node.js.
54 lines • 2.33 kB
TypeScript
export type EventMap = Record<string, any[]>;
export type EventKey<T extends EventMap> = keyof T;
export type EventArgs<T extends EventMap, K extends EventKey<T>> = K extends keyof T ? T[K] : never;
export type EventListener<T extends EventMap, K extends EventKey<T>> = T[K] extends unknown[] ? (...args: T[K]) => any : never;
/**
* Implements an event emitter, conceptually similar to Node.js' native
* EventEmitter, that supports asynchronous event handlers/listeners.
*
* This class provides a foundation for event-based communication between
* BACnet components. It allows objects to register listeners for specific events
* and trigger those events asynchronously.
*
* @typeParam T - An interface mapping event names to their argument arrays
*/
export declare class AsyncEventEmitter<T extends EventMap> {
#private;
/**
* Creates a new Evented instance with no registered listeners
*/
constructor();
/**
* Adds a new listener for the specified event.
*
* @param event - The event name to subscribe to
* @param cb - The callback function to execute when the event is triggered
* @returns The callback function for chaining
*/
on<K extends EventKey<T>>(event: K, cb: EventListener<T, K>): this;
/**
* Alias for `on`
*/
addListener<K extends EventKey<T>>(event: K, cb: EventListener<T, K>): void;
/**
* Fires an event. All subscribed listeners will be called synchronously.
* Promises will be ignored.
*
* @param event - The event name to trigger
* @param args - The arguments to pass to each listener
* @internal
*/
___emit<K extends EventKey<T>>(event: K, ...args: EventArgs<T, K>): void;
/**
* Fires an event. All subscribed listeners will be called in series.
* Promises will be awaited for before continuing to the next listener.
*
* @param rethrow - Whether to rethrow errors thrown by listeners or ignore them
* @param event - The event name to trigger
* @param args - The arguments to pass to each listener
* @returns A promise that resolves when all listeners have completed
* @internal
*/
___asyncEmitSeries<K extends EventKey<T>>(rethrow: boolean, event: K, ...args: EventArgs<T, K>): Promise<void>;
}
//# sourceMappingURL=events.d.ts.map