UNPKG

buflux

Version:

A high-performance, event-driven buffer library for Node.js and browsers, with configurable overflow strategies

38 lines (37 loc) 1.11 kB
/** * Event emitter class for handling buffer events * @template T The type of data passed to event handlers */ export class EventEmitter { constructor() { /** Map of event names to sets of handler functions */ this.events = { enqueue: new Set(), dequeue: new Set(), overflow: new Set(), reject: new Set(), }; } /** * Subscribe to a buffer event * @param {BufferEvent} event - The event to subscribe to * @param {EventHandler<T>} handler - Function to handle the event * @returns {Function} Unsubscribe function to remove the handler */ on(event, handler) { this.events?.[event]?.add(handler); return () => { this.events?.[event]?.delete(handler); }; } /** * Emit an event to all subscribed handlers * @param {BufferEvent} event - The event to emit * @param {T} data - Data to pass to handlers */ emit(event, data) { for (const handler of this.events?.[event] || []) { handler(data); } } }