@allan1361/iota-big3-sdk-middleware
Version:
🏆 A+ Grade Certified Enterprise Middleware Framework - Phase 3 Certified (90/100) with advanced resilience patterns, comprehensive type safety, and production-ready observability
60 lines • 1.99 kB
TypeScript
import type { Request, RequestHandler, Response } from 'express';
export interface CacheConfig {
redis?: {
host?: string;
port?: number;
password?: string;
db?: number;
keyPrefix?: string;
enableOfflineQueue?: boolean;
retryStrategy?: (times: number) => number | null;
};
defaultTTL?: number;
keyGenerator?: (req: Request) => string;
shouldCache?: (req: Request, res: Response) => boolean;
errorHandler?: (error: Error) => void;
compress?: boolean;
namespace?: string;
maxSize?: number;
monitoring?: {
enabled?: boolean;
onHit?: (key: string, latency: number) => void;
onMiss?: (key: string, latency: number) => void;
onSet?: (key: string, size: number, latency: number) => void;
onError?: (error: Error, operation: string) => void;
};
}
export declare class CacheMiddleware {
private redis;
private config;
private stats;
constructor(config?: CacheConfig);
private initializeRedis;
middleware(options?: {
ttl?: number;
key?: string | ((req: Request) => string);
condition?: (req: Request, res: Response) => boolean;
tags?: string[];
vary?: string[];
}): RequestHandler;
invalidateAsync(pattern: string): Promise<number>;
invalidateByTagsAsync(tags: string[]): Promise<number>;
clearAsync(): Promise<void>;
getStats(): typeof this.stats & {
hitRate: number;
};
warmCacheAsync(entries: Array<{
key: string;
generator: () => Promise<any>;
ttl?: number;
}>): Promise<void>;
closeAsync(): Promise<void>;
private defaultKeyGenerator;
private defaultShouldCache;
private generateKey;
private getFromCacheAsync;
private setCacheAsync;
private handleConditionalRequest;
}
export declare function createCacheMiddleware(config?: CacheConfig): CacheMiddleware;
//# sourceMappingURL=cache-middleware.d.ts.map