UNPKG

@kya-os/mcp-i

Version:

The TypeScript MCP framework with identity features built-in

50 lines (49 loc) 1.71 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Watcher = void 0; const chokidar_1 = __importDefault(require("chokidar")); const subscribable_1 = require("./subscribable"); class Watcher { watchers = []; isReady = false; globalOptions = {}; onReadySubscribable = (0, subscribable_1.subscribable)(); constructor(options = {}) { this.globalOptions = options; } watch(path, options, chokidarOptions = {}) { const instance = chokidar_1.default.watch(path, { ...this.globalOptions, ...chokidarOptions, }); options.onAdd && instance.on("add", options.onAdd); options.onUnlink && instance.on("unlink", options.onUnlink); options.onChange && instance.on("change", options.onChange); const watcherInstance = { isReady: false, watcher: instance, }; this.watchers.push(watcherInstance); instance.on("ready", () => { watcherInstance.isReady = true; this.checkReady(); }); } onReady(callback) { this.onReadySubscribable.addCallback(callback); } checkReady() { if (this.watchers.every((watcher) => watcher.isReady)) { this.onReadySubscribable.runCallbacks(); this.onReadySubscribable.clearCallbacks(); } } async close() { await Promise.all(this.watchers.map((watcherInstance) => watcherInstance.watcher.close())); this.watchers = []; } } exports.Watcher = Watcher;