import { loadConfig, type Config } from "../config.js"; import { createStorageProviderFromConfig } from "./provider-registry.js"; import { createStorageService } from "./service.js"; import type { StorageService } from "./types.js"; let cachedStorageService: StorageService | null = null; let cachedSignature: string | null = null; function signatureForConfig(config: Config): string { return JSON.stringify({ provider: config.storageProvider, localDisk: config.storageLocalDiskBaseDir, s3Bucket: config.storageS3Bucket, s3Region: config.storageS3Region, s3Endpoint: config.storageS3Endpoint, s3Prefix: config.storageS3Prefix, s3ForcePathStyle: config.storageS3ForcePathStyle, }); } export function createStorageServiceFromConfig(config: Config): StorageService { return createStorageService(createStorageProviderFromConfig(config)); } export function getStorageService(): StorageService { const config = loadConfig(); const signature = signatureForConfig(config); if (!cachedStorageService || cachedSignature !== signature) { cachedStorageService = createStorageServiceFromConfig(config); cachedSignature = signature; } return cachedStorageService; } export type { StorageService, PutFileResult } from "./types.js";