UNPKG

@bacnet-js/device

Version:

A TypeScript library for implementing BACnet IP devices in Node.js.

54 lines 2.33 kB
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