@just-every/ensemble
Version:
LLM provider abstraction layer with unified streaming interface
40 lines • 1.08 kB
JavaScript
export class EventEmitter {
events = new Map();
on(event, listener) {
if (!this.events.has(event)) {
this.events.set(event, new Set());
}
this.events.get(event).add(listener);
}
off(event, listener) {
const listeners = this.events.get(event);
if (listeners) {
listeners.delete(listener);
if (listeners.size === 0) {
this.events.delete(event);
}
}
}
emit(event, ...args) {
const listeners = this.events.get(event);
if (listeners) {
listeners.forEach(listener => {
try {
listener(...args);
}
catch (error) {
console.error(`Error in event listener for ${event}:`, error);
}
});
}
}
removeAllListeners(event) {
if (event) {
this.events.delete(event);
}
else {
this.events.clear();
}
}
}
//# sourceMappingURL=event_emitter.js.map