/** * AWS CloudFront CDN Plugin * Automatically invalidates CloudFront CDN cache when files are deleted or updated * * @module @plyaz/storage/plugins/cloudfront-cdn * * @example * ```typescript * import { CloudFrontCDNPlugin } from '@plyaz/storage/plugins'; * * const plugin = new CloudFrontCDNPlugin({ * distributionId: process.env.CLOUDFRONT_DISTRIBUTION_ID!, * accessKeyId: process.env.AWS_ACCESS_KEY_ID!, * secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!, * region: 'us-east-1', * baseUrl: 'https://cdn.example.com', * priority: 20, * }); * ``` */ import { BasePlugin } from '../../../base/BasePlugin'; import type { StoragePluginUploadResult, StoragePluginContext, StoragePluginHealth, StoragePluginDeleteResult, CloudFrontCDNPluginConfig, StorageCDNPluginStatistics } from '@plyaz/types/storage'; /** * CloudFront CDN Plugin * Automatically creates CloudFront invalidations when files change * * Features: * - Automatic invalidation on delete/update * - Batch processing (up to 1000 paths per invalidation) * - Retry logic * - Health monitoring */ export declare class CloudFrontCDNPlugin extends BasePlugin { private readonly distributionId; private readonly accessKeyId; private readonly secretAccessKey; private readonly region?; private readonly baseUrl?; private readonly invalidateOnDelete; private readonly invalidateOnUpdate; private readonly batchSize; private readonly retryAttempts; private readonly retryDelay; private readonly pathGenerator?; private invalidationsPerformed; private invalidationsFailed; private pathsInvalidated; private readonly invalidationQueue; private flushTimer; constructor(config: CloudFrontCDNPluginConfig); afterDelete(result: StoragePluginDeleteResult, _context: StoragePluginContext): Promise; afterUpload(result: StoragePluginUploadResult, _context: StoragePluginContext): Promise; private generatePaths; private queueInvalidation; private flushQueue; private sleep; destroy(): Promise; healthCheck(): Promise; getStatistics(): StorageCDNPluginStatistics; }