UNPKG

@arifwidianto/rpc-agent

Version:

RPC Agent for both client and server, extends more methods easily

61 lines 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class ExtensionsManager { name = "extensions"; status = "active"; config = { enabled: true }; metadata = { name: this.name, version: "1.0.0", description: "Manages RPC extensions and their lifecycle", }; startTime; extensions = new Map(); constructor() { this.startTime = Date.now(); } setExtensions(extensions) { this.extensions = extensions; } methods = { list: async () => { const extensions = Array.from(this.extensions.values()).map((extension) => ({ name: extension.name, status: extension.status, metadata: extension.metadata, })); return { extensions: extensions, total: extensions.length, }; }, status: async (params) => { const extension = this.extensions.get(params.name); if (!extension) { throw new Error(`Extension '${params.name}' not found`); } return { name: extension.name, status: extension.status, metadata: extension.metadata, methods: Object.keys(extension.methods), uptime: Date.now() - this.startTime, }; }, register: async (params) => { const { extension } = params; if (this.extensions.has(extension.name)) { throw new Error(`Extension '${extension.name}' already registered`); } this.extensions.set(extension.name, extension); }, }; registerExtension(extension) { if (this.extensions.has(extension.name)) { throw new Error(`Extension '${extension.name}' already registered`); } this.extensions.set(extension.name, extension); } } exports.default = ExtensionsManager; //# sourceMappingURL=index.js.map