polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
66 lines • 1.98 kB
TypeScript
import { EventEmitter } from 'events';
export interface ApiOptimizerConfig {
enableCaching: boolean;
cacheTtl: number;
maxCacheSize: number;
enableDeduplication: boolean;
deduplicationWindow: number;
enableCoalescing: boolean;
coalescingWindow: number;
enableCompression: boolean;
compressionThreshold: number;
}
export interface OptimizationStats {
totalRequests: number;
cachedRequests: number;
deduplicatedRequests: number;
coalescedRequests: number;
cacheHitRatio: number;
averageResponseTime: number;
bytesSaved: number;
currentCacheSize: number;
}
export declare class ApiOptimizer extends EventEmitter {
private config;
private cache;
private pendingRequests;
private recentRequests;
private stats;
private coalescingTimers;
constructor(config?: Partial<ApiOptimizerConfig>);
optimizeRequest(method: string, url: string, params?: Record<string, any>, body?: any, options?: {
priority?: 'low' | 'medium' | 'high';
bypassCache?: boolean;
ttl?: number;
}): Promise<any>;
invalidateCache(pattern?: string): void;
getStats(): OptimizationStats;
getCacheInfo(): {
size: number;
entries: Array<{
hash: string;
timestamp: number;
ttl: number;
hitCount: number;
size: number;
}>;
};
updateConfig(newConfig: Partial<ApiOptimizerConfig>): void;
reset(): void;
private createRequestSignature;
private hashSignature;
private hashObject;
private getCachedResponse;
private checkForDuplicate;
private coalesceRequest;
private executePendingRequest;
private executeRequest;
private cacheResponse;
private evictOldestEntry;
private estimateSize;
private getPriorityValue;
private updateStats;
private setupCacheCleanup;
private cleanupExpiredEntries;
}
//# sourceMappingURL=api-optimizer.d.ts.map