UNPKG

cloudflare-image-mcp

Version:
54 lines 1.89 kB
import { S3StorageProvider } from './providers/s3-provider.js'; export class StorageFactory { static instance; providers = new Map(); static getInstance() { if (!StorageFactory.instance) { StorageFactory.instance = new StorageFactory(); } return StorageFactory.instance; } createStorage(config) { const provider = this.createProvider(config.defaultProvider, config.providers[config.defaultProvider]); return { provider, config }; } createProvider(type, config) { const cacheKey = `${type}-${JSON.stringify(config)}`; if (this.providers.has(cacheKey)) { return this.providers.get(cacheKey); } let provider; switch (type) { case 's3': provider = new S3StorageProvider((config || { bucket: process.env.S3_BUCKET || 'cloudflare-image-mcp', region: process.env.S3_REGION || 'auto', accessKey: process.env.S3_ACCESS_KEY, secretKey: process.env.S3_SECRET_KEY, endpoint: process.env.S3_ENDPOINT, cdnUrl: process.env.S3_CDN_URL })); break; default: throw new Error(`Unknown storage provider: ${type}`); } this.providers.set(cacheKey, provider); return provider; } clearCache() { this.providers.clear(); } } export function createStorage(config) { return StorageFactory.getInstance().createStorage(config); } export function createS3Storage(config) { return StorageFactory.getInstance().createProvider('s3', config || { bucket: process.env.S3_BUCKET || 'cloudflare-image-mcp', region: process.env.S3_REGION || 'auto' }); } //# sourceMappingURL=factory.js.map