ai-ip-plugin
Version:
AI-IP Plugin for MCP Workflow Management with SSE streaming and event handling
73 lines • 1.82 kB
JavaScript
;
/**
* Event Handler - Manages event emission and listening
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventHandler = void 0;
class EventHandler {
constructor() {
this.listeners = new Map();
}
/**
* Add event listener
*/
on(event, listener) {
if (!this.listeners.has(event)) {
this.listeners.set(event, []);
}
this.listeners.get(event).push(listener);
}
/**
* Remove event listener
*/
off(event, listener) {
const eventListeners = this.listeners.get(event);
if (eventListeners) {
const index = eventListeners.indexOf(listener);
if (index > -1) {
eventListeners.splice(index, 1);
}
}
}
/**
* Emit event
*/
emit(event, ...args) {
const eventListeners = this.listeners.get(event);
if (eventListeners) {
eventListeners.forEach(listener => {
try {
listener(...args);
}
catch (error) {
console.error(`Error in event listener for ${event}:`, error);
}
});
}
}
/**
* Remove all listeners for an event
*/
removeAllListeners(event) {
if (event) {
this.listeners.delete(event);
}
else {
this.listeners.clear();
}
}
/**
* Get all event names
*/
getEventNames() {
return Array.from(this.listeners.keys());
}
/**
* Get listener count for an event
*/
getListenerCount(event) {
return this.listeners.get(event)?.length || 0;
}
}
exports.EventHandler = EventHandler;
//# sourceMappingURL=EventHandler.js.map