synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
30 lines (25 loc) • 1.18 kB
JavaScript
import { SingletonKeyGenerator, SingletonManager } from "./singleton.util.js";
class SingletonMixin {
static handleSingletonCreation(config, storageType, factory, logger) {
// Если singleton не включен, создаем обычный экземпляр
if (!config.singleton?.enabled) return factory(config);
// Настраиваем логгер в SingletonManager
if (logger) {
SingletonManager.setLogger(logger);
}
const key = SingletonKeyGenerator.generate(config, storageType);
const result = SingletonManager.getOrCreate(key, config, factory);
// Логируем результат
if (result.isNewInstance) {
logger?.debug(`Created new singleton storage: ${key}`);
} else {
logger?.debug(`Reusing existing singleton storage: ${key}`);
if (result.conflicts && result.conflicts.length > 0) {
logger?.debug(`Configuration conflicts detected: ${result.conflicts.join(', ')}`);
}
}
return result.instance;
}
}
export { SingletonMixin };
//# sourceMappingURL=mixin.util.js.map