UNPKG

@aituber-onair/core

Version:

Core library for AITuber OnAir providing voice synthesis and chat processing

72 lines 1.83 kB
/** * Event Manager * For state notification of asynchronous processing */ export class EventEmitter { constructor() { this.events = {}; } /** * Register event listener * @param event Event name * @param listener Callback function */ on(event, listener) { if (!this.events[event]) { this.events[event] = []; } this.events[event].push(listener); } /** * Register event listener that will only be executed once * @param event Event name * @param listener Callback function */ once(event, listener) { const onceWrapper = (...args) => { listener(...args); this.off(event, onceWrapper); }; this.on(event, onceWrapper); } /** * Remove event listener * @param event Event name * @param listener Listener to remove (if omitted, all listeners will be removed) */ off(event, listener) { if (!this.events[event]) { return; } if (!listener) { delete this.events[event]; return; } this.events[event] = this.events[event].filter((l) => l !== listener); } /** * Emit event * @param event Event name * @param args Arguments to pass to the event */ emit(event, ...args) { if (!this.events[event]) { return; } this.events[event].forEach((listener) => { try { listener(...args); } catch (error) { console.error(`Error in event listener for "${event}":`, error); } }); } /** * Clear all event listeners */ removeAllListeners() { this.events = {}; } } //# sourceMappingURL=EventEmitter.js.map