UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

101 lines 2.87 kB
/** * Invalidation Engine for Intelligent Query Cache * * Manages cache invalidation strategies, dependency tracking, and * integration with the sync process to ensure data consistency. */ import { CacheOrchestrator } from './CacheOrchestrator.js'; import EventEmitter from 'events'; export interface InvalidationRule { entity: string; dependsOn?: string[]; invalidationPattern: string; cascadeInvalidation?: boolean; } export interface InvalidationEvent { type: 'entity_changed' | 'entity_deleted' | 'bulk_change' | 'manual'; entity: string; entityId?: string; projectId?: string; timestamp: number; changeType?: 'create' | 'update' | 'delete'; metadata?: any; } export interface InvalidationStats { totalInvalidations: number; invalidationsByEntity: Record<string, number>; cascadeInvalidations: number; lastInvalidation?: Date; averageInvalidationsPerMinute: number; } export declare class InvalidationEngine extends EventEmitter { private readonly logger; private readonly cacheOrchestrator; private readonly dependencies; private readonly rules; private stats; private invalidationHistory; private readonly historyWindowMs; constructor(cacheOrchestrator: CacheOrchestrator); /** * Setup default invalidation rules and dependencies */ private setupDefaultRules; /** * Add an invalidation rule */ addRule(rule: InvalidationRule): void; /** * Build dependency graph from rules */ private buildDependencyGraph; /** * Handle entity change event from sync process */ handleEntityChange(event: InvalidationEvent): Promise<number>; /** * Handle bulk changes (e.g., full sync) */ handleBulkChange(entities: string[], projectId?: string): Promise<number>; /** * Invalidate specific entity by ID */ invalidateEntity(entity: string, entityId: string, projectId?: string): Promise<number>; /** * Invalidate all caches for a project */ invalidateProject(projectId: string): Promise<number>; /** * Get entities that should be invalidated when a given entity changes */ private getEntitiesToInvalidate; /** * Get invalidation pattern for an entity */ private getInvalidationPattern; /** * Check if cascade invalidation is enabled for entity */ private shouldCascade; /** * Update statistics */ private updateStats; /** * Get invalidation statistics */ getStats(): InvalidationStats; /** * Reset statistics */ resetStats(): void; /** * Get dependency information */ getDependencies(): Map<string, Set<string>>; /** * Shutdown the engine */ shutdown(): void; } //# sourceMappingURL=InvalidationEngine.d.ts.map