/** * Fastly CDN Plugin * Automatically invalidates Fastly CDN cache when files are deleted or updated * * @module @plyaz/storage/plugins/fastly-cdn * * @example * ```typescript * import { FastlyCDNPlugin } from '@plyaz/storage/plugins'; * * const plugin = new FastlyCDNPlugin({ * serviceId: process.env.FASTLY_SERVICE_ID!, * apiToken: process.env.FASTLY_API_TOKEN!, * baseUrl: 'https://cdn.example.com', * priority: 20, * }); * ``` */ import { BasePlugin } from '../../../base/BasePlugin'; import type { StoragePluginUploadResult, StoragePluginContext, StoragePluginHealth, StoragePluginDeleteResult, FastlyCDNPluginConfig, StorageCDNPluginStatistics } from '@plyaz/types/storage'; /** * Fastly CDN Plugin * Automatically purges Fastly CDN cache when files change * * Features: * - Automatic cache purging on delete/update * - Individual URL purging (Fastly purges one URL at a time) * - Retry logic * - Health monitoring * * Note: Fastly purges URLs individually, not in batches */ export declare class FastlyCDNPlugin extends BasePlugin { private readonly serviceId; private readonly apiToken; private readonly baseUrl?; private readonly invalidateOnDelete; private readonly invalidateOnUpdate; private readonly retryAttempts; private readonly retryDelay; private readonly urlGenerator?; private invalidationsPerformed; private invalidationsFailed; private urlsInvalidated; constructor(config: FastlyCDNPluginConfig); afterDelete(result: StoragePluginDeleteResult, _context: StoragePluginContext): Promise; afterUpload(result: StoragePluginUploadResult, _context: StoragePluginContext): Promise; private generateUrls; /** * Purge URLs individually (Fastly purges one at a time) */ private purgeUrls; /** * Purge single URL with retry logic */ private purgeUrlWithRetry; private sleep; healthCheck(): Promise; getStatistics(): StorageCDNPluginStatistics; }