/** * Storage Middleware - Cross-cutting concerns for NoSQL storage operations * Handles caching, compression, monitoring, and security */ import { StorageResult, PerformanceMetrics } from '../interfaces/storage-engine'; export interface StorageMiddlewareConfig { enableCaching: boolean; enableCompression: boolean; enableMetrics: boolean; enableSecurity: boolean; enableRateLimiting: boolean; cacheConfig: { ttl: number; maxSize: number; strategy: 'lru' | 'lfu' | 'ttl'; }; compressionConfig: { threshold: number; algorithm: 'gzip' | 'brotli' | 'zstd'; level: number; }; rateLimitConfig: { maxRequests: number; windowMs: number; skipSuccessful: boolean; }; } export interface MiddlewareContext { operation: string; collection?: string; startTime: number; metadata: Record; userId?: string; requestId: string; } export type MiddlewareHandler = (context: MiddlewareContext, next: () => Promise>) => Promise>; /** * Storage Middleware Pipeline */ export declare class StorageMiddleware { private config; private cache; private metrics; private rateLimitCounters; constructor(config: StorageMiddlewareConfig); /** * Execute operation through middleware pipeline */ execute(context: MiddlewareContext, operation: () => Promise>): Promise>; /** * Rate limiting middleware */ private rateLimitMiddleware; /** * Security middleware */ private securityMiddleware; /** * Caching middleware */ private cachingMiddleware; /** * Compression middleware */ private compressionMiddleware; /** * Metrics middleware */ private metricsMiddleware; /** * Get current metrics */ getMetrics(operation?: string): PerformanceMetrics | Map; /** * Clear cache */ clearCache(pattern?: string): void; /** * Get cache statistics */ getCacheStats(): { size: number; hitRate: number; totalHits: number; totalRequests: number; }; private executeHandlers; private validateInput; private sanitizeOutput; private isReadOperation; private generateCacheKey; private getFromCache; private setCache; private evictCache; private invalidateCache; private shouldCompress; private compressData; private recordMetrics; private createDefaultMetrics; private startCleanupTasks; } /** * Default middleware configuration */ export declare function createDefaultMiddlewareConfig(): StorageMiddlewareConfig; /** * Production-optimized middleware configuration */ export declare function createProductionMiddlewareConfig(): StorageMiddlewareConfig; //# sourceMappingURL=storage-middleware.d.ts.map