@memory-bank/mcp
Version:
Memory-enabled Co-Pilot (MCP) server for managing project documentation and context
70 lines • 1.92 kB
JavaScript
/**
* Simple dependency injection container
*/
export class DIContainer {
services = new Map();
factories = new Map();
asyncFactories = new Set();
/**
* Register a service instance
* @param name Service name
* @param instance Service instance
*/
register(name, instance) {
this.services.set(name, instance);
}
registerFactory(name, factory) {
this.factories.set(name, factory);
if (factory.constructor.name === 'AsyncFunction') {
this.asyncFactories.add(name);
}
}
/**
* Get a service by name
* @param name Service name
* @returns Service instance or Promise of service instance
*/
get(name) {
if (this.services.has(name)) {
return this.services.get(name);
}
if (this.factories.has(name)) {
const factory = this.factories.get(name);
if (this.asyncFactories.has(name)) {
return (async () => {
const instance = await factory();
this.services.set(name, instance);
return instance;
})();
}
const instance = factory();
this.services.set(name, instance);
return instance;
}
throw new Error(`Service not found: ${name}`);
}
/**
* Check if a service is registered
* @param name Service name
* @returns True if service is registered
*/
has(name) {
return this.services.has(name) || this.factories.has(name);
}
/**
* Remove a service
* @param name Service name
*/
remove(name) {
this.services.delete(name);
this.factories.delete(name);
}
/**
* Clear all services
*/
clear() {
this.services.clear();
this.factories.clear();
}
}
//# sourceMappingURL=DIContainer.js.map