UNPKG

@kya-os/mcp-i

Version:

The TypeScript MCP framework with identity features built-in

45 lines (44 loc) 1.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.subscribable = void 0; const subscribable = () => { const callbacks = {}; const addCallback = (callback, id) => { const _id = id || crypto.randomUUID(); callbacks[_id] = callback; return _id; }; const removeCallback = (id) => { if (typeof id === "function") { const key = Object.keys(callbacks).find((k) => callbacks[k] === id); if (key) delete callbacks[key]; return; } delete callbacks[id]; }; const getCallbacks = () => Object.values(callbacks); const getCallback = (id) => callbacks[id]; const clearCallbacks = () => { Object.keys(callbacks).forEach((id) => { removeCallback(id); }); }; const runCallbacks = (...params) => { let response = undefined; Object.values(callbacks).forEach((callback) => { response = callback(...params); }); return response; }; return { addCallback, removeCallback, getCallback, getCallbacks, getCallbackIds: () => Object.keys(callbacks), clearCallbacks, runCallbacks: runCallbacks, }; }; exports.subscribable = subscribable;