/** * Image Cache Module * Caches image processing results in memory to prevent recalculation */ import { CacheStorageType, ImageProcessingOptions, ProcessingResult } from "./types.js"; /** * Image Cache Options */ export interface ImageCacheOptions { /** Maximum cache size (number of items) */ maxSize?: number; /** Cache item expiry time (ms) */ expiryTime?: number; /** Auto cleanup interval (ms) */ cleanupInterval?: number; /** Enable debug logging */ debug?: boolean; /** Cache storage type (default: MEMORY) */ storageType?: CacheStorageType; /** IndexedDB database name */ dbName?: string; /** IndexedDB version */ dbVersion?: number; } /** * Image Cache Class * * Caches image processing results in memory to prevent duplicate processing * of the same images with the same options, improving performance. */ export declare class ImageCache { /** Cache storage */ private cache; /** Cache statistics */ private stats; /** Maximum cache size */ private maxSize; /** Cache item expiry time (ms) */ private expiryTime; /** Cleanup timer ID */ private cleanupTimer; /** Debug mode */ private debug; /** Cache storage type */ private storageType; /** IndexedDB database name */ private dbName; /** IndexedDB version */ private dbVersion; /** IndexedDB database instance */ private db; /** IndexedDB initialization status */ private dbInitialized; /** IndexedDB initialization in progress */ private dbInitializing; /** IndexedDB initialization promise */ private dbInitPromise; /** * Image cache constructor * @param options Cache options */ constructor(options?: ImageCacheOptions); /** * Initialize IndexedDB * @returns Initialization completion promise */ private initIndexedDB; /** * IndexedDB cache lookup * @param key Cache key * @returns Cached result or null in a promise */ private getFromIndexedDB; /** * Save image processing result to IndexedDB cache * @param key Cache key * @param item Cache item */ private saveToIndexedDB; /** * Clean up expired cache items in IndexedDB */ private cleanupIndexedDB; /** * Generate cache key * @param imageId Image identifier * @param options Processing options * @returns Cache key */ private generateKey; /** * Cache image processing result * @param imageId Image identifier * @param options Processing options * @param result Processing result */ set(imageId: string, options: ImageProcessingOptions, result: ProcessingResult): Promise; /** * Lookup image processing result from cache * @param imageId Image identifier * @param options Processing options * @returns Cached result or null */ get(imageId: string, options: ImageProcessingOptions): Promise; /** * Clone result data * @param result Original result * @returns Cloned result */ private cloneResult; /** * Evict LRU (Least Recently Used) item */ private evictLRU; /** * Clean up expired cache items */ private cleanup; /** * Return cache statistics * @returns Cache statistics */ getStats(): { size: number; memoryHits: number; memoryMisses: number; dbHits: number; dbMisses: number; evictions: number; totalHits: number; totalMisses: number; }; /** * Output debug log * @param message Log message */ private logDebug; /** * Initialize cache */ clear(): Promise; /** * Change cache storage type * @param storageType New storage type */ setStorageType(storageType: CacheStorageType): Promise; /** * Clean up resources */ dispose(): void; }