UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

92 lines 2.73 kB
/** * Sync Cache Integration * * Integrates the IncrementalSyncManager with the InvalidationEngine * to ensure cache invalidation happens automatically during sync operations. */ import { InvalidationEngine } from './InvalidationEngine.js'; import EventEmitter from 'events'; export interface SyncEvent { type: 'entity_synced' | 'entity_deleted' | 'sync_started' | 'sync_completed'; entity?: string; entityId?: string; entityKey?: string; projectId: string; operation?: 'create' | 'update' | 'delete'; timestamp?: Date; } export interface SyncCacheConfig { enabled: boolean; batchInvalidation: boolean; batchDelay: number; warmupAfterSync: boolean; } export declare class SyncCacheIntegration extends EventEmitter { private readonly logger; private readonly invalidationEngine; private readonly config; private pendingInvalidations; private batchTimer?; private activeSyncs; private syncStats; constructor(invalidationEngine: InvalidationEngine, config?: Partial<SyncCacheConfig>); /** * Handle sync start event */ handleSyncStart(projectId: string): Promise<void>; /** * Handle sync completion event */ handleSyncComplete(projectId: string): Promise<void>; /** * Handle entity sync event */ handleEntitySync(event: SyncEvent): Promise<void>; /** * Handle multiple entity changes at once */ handleBulkEntitySync(entities: Array<{ entity: string; entityId: string; }>, projectId: string): Promise<void>; /** * Add entity to batch invalidation */ private addToBatch; /** * Flush pending batch invalidations */ private flushBatchInvalidations; /** * Get sync statistics */ getStats(): { activeSyncs: number; pendingBatches: number; totalSyncs: number; entitiesSynced: number; cacheInvalidations: number; lastSyncTime: Date | null; }; /** * Force invalidation for specific entities */ invalidateEntities(entities: string[], projectId?: string): Promise<number>; /** * Create a helper method for IncrementalSyncManager to call */ createSyncHandler(): { onSyncStart: (projectId: string) => Promise<void>; onSyncComplete: (projectId: string) => Promise<void>; onEntitySynced: (event: SyncEvent) => Promise<void>; onBulkSync: (entities: Array<{ entity: string; entityId: string; }>, projectId: string) => Promise<void>; }; /** * Shutdown the integration */ shutdown(): Promise<void>; } //# sourceMappingURL=SyncCacheIntegration.d.ts.map