UNPKG

iagate-querykit

Version:

QueryKit: lightweight TypeScript query toolkit with models, views, triggers, events, scheduler and adapters (better-sqlite3).

36 lines (35 loc) 1.11 kB
import { QueryKitConfig } from './config'; export class EventManager { listeners = {}; on(eventName, listener) { if (!this.listeners[eventName]) { this.listeners[eventName] = []; } this.listeners[eventName].push(listener); return () => this.off(eventName, listener); } off(eventName, listener) { if (!this.listeners[eventName]) return; this.listeners[eventName] = this.listeners[eventName].filter(l => l !== listener); } emit(eventName, ...args) { if (this.listeners[eventName]) { this.listeners[eventName].forEach(listener => { try { listener(...args); } catch (error) { console.error(`Error in event listener for '${eventName}':`, error); } }); } if (QueryKitConfig.eventBus) { try { QueryKitConfig.eventBus.emit(eventName, ...args); } catch { } } } } export const eventManager = new EventManager();