UNPKG

@kajidog/mcp-tts-voicevox

Version:

VOICEVOX integration for MCP - Text-to-Speech server using VOICEVOX engine

60 lines (59 loc) 1.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventManager = void 0; const types_1 = require("./types"); /** * イベント管理クラス * キュー関連イベントの管理と発火を担当 */ class EventManager { constructor() { this.eventListeners = new Map(); // イベントタイプごとのリスナー配列を初期化 Object.values(types_1.QueueEventType).forEach((eventType) => { this.eventListeners.set(eventType, []); }); } /** * イベントリスナーを追加 * @param event イベントタイプ * @param listener リスナー関数 */ addEventListener(event, listener) { const listeners = this.eventListeners.get(event) || []; if (!listeners.includes(listener)) { listeners.push(listener); this.eventListeners.set(event, listeners); } } /** * イベントリスナーを削除 * @param event イベントタイプ * @param listener リスナー関数 */ removeEventListener(event, listener) { const listeners = this.eventListeners.get(event) || []; const index = listeners.indexOf(listener); if (index !== -1) { listeners.splice(index, 1); this.eventListeners.set(event, listeners); } } /** * イベントを発火 * @param event 発火するイベントのタイプ * @param item 関連するキューアイテム(オプション) */ emitEvent(event, item) { const listeners = this.eventListeners.get(event) || []; listeners.forEach((listener) => { try { listener(event, item); } catch (error) { console.error(`イベントリスナーの実行中にエラーが発生しました (${event}):`, error); } }); } } exports.EventManager = EventManager;