@simonecoelhosfo/optimizely-mcp-server
Version:
Optimizely MCP Server for AI assistants with integrated CLI tools
92 lines • 2.73 kB
TypeScript
/**
* 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