UNPKG

@re-shell/cli

Version:

Full-stack development platform uniting microservices and microfrontends. Build complete applications with .NET (ASP.NET Core Web API, Minimal API), Java (Spring Boot, Quarkus, Micronaut, Vert.x), Rust (Actix-Web, Warp, Rocket, Axum), Python (FastAPI, Dja

150 lines (149 loc) 4.54 kB
import { EventEmitter } from 'events'; import { PluginCommandContext } from './plugin-command-registry'; export declare enum CacheStorageStrategy { MEMORY = "memory", FILE_SYSTEM = "file-system", HYBRID = "hybrid", DATABASE = "database" } export declare enum CacheInvalidationStrategy { TTL = "ttl", LRU = "lru", LFU = "lfu", FIFO = "fifo", MANUAL = "manual", EVENT_BASED = "event-based" } export declare enum PerformanceMonitoringLevel { NONE = "none", BASIC = "basic", DETAILED = "detailed", VERBOSE = "verbose" } export interface CacheEntry<T = any> { key: string; value: T; metadata: CacheEntryMetadata; createdAt: number; lastAccessedAt: number; accessCount: number; expiresAt?: number; size: number; tags: string[]; } export interface CacheEntryMetadata { commandId: string; argumentsHash: string; optionsHash: string; contextHash: string; executionTime: number; success: boolean; errorInfo?: { type: string; message: string; stack?: string; }; dependencies: string[]; invalidators: string[]; } export interface CacheConfiguration { enabled: boolean; strategy: CacheStorageStrategy; invalidationStrategy: CacheInvalidationStrategy; maxSize: number; maxMemoryUsage: number; defaultTTL: number; cleanupInterval: number; compressionEnabled: boolean; encryptionEnabled: boolean; persistToDisk: boolean; diskCachePath?: string; performanceMonitoring: PerformanceMonitoringLevel; } export interface PerformanceMetrics { totalExecutions: number; cacheHits: number; cacheMisses: number; hitRate: number; averageExecutionTime: number; averageCachedExecutionTime: number; totalMemoryUsage: number; totalDiskUsage: number; slowestCommands: Array<{ commandId: string; averageTime: number; executionCount: number; }>; mostCachedCommands: Array<{ commandId: string; cacheHits: number; hitRate: number; }>; errorRate: number; lastCleanupAt: number; } export interface CacheOperationResult<T = any> { hit: boolean; value?: T; metadata?: CacheEntryMetadata; executionTime: number; source: 'cache' | 'execution'; error?: Error; } export declare class PluginCommandCacheManager extends EventEmitter { private memoryCache; private accessOrder; private accessFrequency; private config; private metrics; private cleanupTimer?; private encryptionKey?; constructor(config?: Partial<CacheConfiguration>); private initialize; executeWithCache<T = any>(commandId: string, args: Record<string, any>, options: Record<string, any>, context: PluginCommandContext, executor: () => Promise<T>): Promise<CacheOperationResult<T>>; private generateCacheKey; private getCacheEntry; private setCacheEntry; private isExpired; private updateAccessTracking; private updateAccessOrder; private ensureCapacity; private evictEntries; private evictEntriesBySize; invalidateEntry(key: string): Promise<boolean>; invalidateByTags(tags: string[]): Promise<number>; invalidateByCommand(commandId: string): Promise<number>; clearAll(): Promise<void>; private performCleanup; private loadCacheFromDisk; private loadCacheEntryFromDisk; private saveCacheEntryToDisk; private deleteCacheEntryFromDisk; private updateDiskCacheIndex; private clearDiskCache; private encrypt; private decrypt; private calculateSize; private calculateTotalMemoryUsage; private generateTags; private extractDependencies; private extractInvalidators; private hashObject; private hashContext; private normalizeForHashing; private updateMetrics; private resetMetrics; getMetrics(): PerformanceMetrics; getConfiguration(): CacheConfiguration; updateConfiguration(updates: Partial<CacheConfiguration>): void; getCacheStats(): any; private findOldestEntry; private findNewestEntry; private findMostAccessedEntry; private findLargestEntry; destroy(): Promise<void>; } export declare function createCommandCacheManager(config?: Partial<CacheConfiguration>): PluginCommandCacheManager; export declare function formatCacheSize(bytes: number): string; export declare function formatCacheHitRate(hitRate: number): string; export declare function formatExecutionTime(time: number): string;