@kya-os/mcp-i
Version:
The TypeScript MCP framework with identity features built-in
45 lines (44 loc) • 1.32 kB
JavaScript
;
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;