venice-dev-tools
Version:
unOfficial SDK for the Venice AI API
83 lines (74 loc) • 2.1 kB
text/typescript
import { EventEmitter } from 'eventemitter3';
/**
* Manages events for the Venice AI SDK.
* Provides methods for subscribing to and emitting events.
*/
export class EventManager {
/**
* The event emitter instance.
*/
private events: EventEmitter;
/**
* Create a new event manager.
*/
constructor() {
this.events = new EventEmitter();
}
/**
* Subscribe to an event.
* @param event - The event name.
* @param listener - The event listener.
* @returns This event manager instance.
*/
public on(event: string, listener: (...args: any[]) => void): this {
this.events.on(event, listener);
return this;
}
/**
* Subscribe to an event for one-time execution.
* @param event - The event name.
* @param listener - The event listener.
* @returns This event manager instance.
*/
public once(event: string, listener: (...args: any[]) => void): this {
this.events.once(event, listener);
return this;
}
/**
* Unsubscribe from an event.
* @param event - The event name.
* @param listener - The event listener.
* @returns This event manager instance.
*/
public off(event: string, listener: (...args: any[]) => void): this {
this.events.off(event, listener);
return this;
}
/**
* Emit an event.
* @param event - The event name.
* @param args - The event arguments.
* @returns Whether the event had listeners.
*/
public emit(event: string, ...args: any[]): boolean {
return this.events.emit(event, ...args);
}
/**
* Remove all listeners for an event.
* @param event - The event name (optional, if not provided, removes all listeners).
* @returns This event manager instance.
*/
public removeAllListeners(event?: string): this {
this.events.removeAllListeners(event);
return this;
}
/**
* Get the number of listeners for an event.
* @param event - The event name.
* @returns The number of listeners.
*/
public listenerCount(event: string): number {
return this.events.listenerCount(event);
}
}
export default EventManager;