@arifwidianto/rpc-agent
Version:
RPC Agent for both client and server, extends more methods easily
61 lines • 2.04 kB
JavaScript
;
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