/** * Cloudflare CDN Plugin * Automatically invalidates Cloudflare CDN cache when files are deleted or updated * * @module @plyaz/storage/plugins/cloudflare-cdn * * @example * ```typescript * import { CloudflareCDNPlugin } from '@plyaz/storage/plugins'; * * const plugin = new CloudflareCDNPlugin({ * zoneId: process.env.CLOUDFLARE_ZONE_ID!, * apiToken: process.env.CLOUDFLARE_API_TOKEN!, * baseUrl: 'https://cdn.example.com', * priority: 20, * }); * ``` */ import { BasePlugin } from '../../../base/BasePlugin'; import type { StoragePluginUploadResult, StoragePluginContext, StoragePluginHealth, StoragePluginDeleteResult, CloudflareCDNPluginConfig, StorageCDNPluginStatistics } from '@plyaz/types/storage'; /** * Cloudflare CDN Plugin * Automatically purges Cloudflare CDN cache when files change * * Features: * - Automatic cache purging on delete/update * - Batch processing (up to 30 URLs per request) * - Retry logic for failed purges * - Health monitoring */ export declare class CloudflareCDNPlugin extends BasePlugin { private readonly zoneId; private readonly apiToken; private readonly baseUrl?; private readonly invalidateOnDelete; private readonly invalidateOnUpdate; private readonly batchSize; private readonly retryAttempts; private readonly retryDelay; private readonly urlGenerator?; private invalidationsPerformed; private invalidationsFailed; private urlsInvalidated; private readonly invalidationQueue; private flushTimer; constructor(config: CloudflareCDNPluginConfig); /** * Invalidate cache after file deletion */ afterDelete(result: StoragePluginDeleteResult, _context: StoragePluginContext): Promise; /** * Invalidate cache after file upload/update */ afterUpload(result: StoragePluginUploadResult, _context: StoragePluginContext): Promise; /** * Generate URLs to invalidate */ private generateUrls; /** * Queue URLs for batch invalidation */ private queueInvalidation; /** * Flush invalidation queue */ private flushQueue; /** * Sleep helper */ private sleep; /** * Cleanup when plugin is destroyed */ destroy(): Promise; /** * Health check */ healthCheck(): Promise; /** * Get statistics */ getStatistics(): StorageCDNPluginStatistics; }