auto-account-machine/src/shared/libs/base/lib-registry.js
2025-11-18 23:02:49 +08:00

80 lines
1.3 KiB
JavaScript

/**
* LibRegistry - 全局库注册表
* 管理所有共享库的实例
*/
class LibRegistry {
constructor() {
this.libs = new Map();
}
/**
* 注册库
*/
register(lib) {
if (this.libs.has(lib.name)) {
console.warn(`[LibRegistry] Library ${lib.name} already registered, replacing...`);
}
this.libs.set(lib.name, lib);
}
/**
* 获取库实例
*/
get(name) {
return this.libs.get(name);
}
/**
* 检查库是否已注册
*/
has(name) {
return this.libs.has(name);
}
/**
* 获取所有库
*/
getAll() {
return Array.from(this.libs.values());
}
/**
* 获取所有库的信息
*/
getAllInfo() {
return this.getAll().map(lib => lib.getInfo());
}
/**
* 初始化所有库
*/
async initializeAll() {
const libs = this.getAll();
for (const lib of libs) {
if (!lib.initialized) {
await lib.initialize();
}
}
}
/**
* 清理所有库
*/
async cleanupAll() {
const libs = this.getAll();
for (const lib of libs) {
if (lib.initialized) {
await lib.cleanup();
}
}
}
}
// 创建全局单例
if (!global.__libRegistry) {
global.__libRegistry = new LibRegistry();
}
module.exports = global.__libRegistry;