bc-symbols-mcp
Version:
MCP server for analyzing Business Central .app files and BC object structures
110 lines • 2.76 kB
TypeScript
import { BCApp } from '../types/bc-types.js';
interface MemoryStats {
totalMemoryMB: number;
partitionSizes: {
[partition: string]: number;
};
largestObjects: Array<{
key: string;
sizeMB: number;
}>;
compressionRatio: number;
}
export declare class MemoryOptimizedCache {
private cache;
private maxAge;
private maxMemoryMB;
private compressionEnabled;
private evictionStrategy;
constructor(maxAgeMinutes?: number, maxMemoryMB?: number, compressionEnabled?: boolean, evictionStrategy?: 'lru' | 'lfu' | 'size-based');
/**
* Store app with memory optimization
*/
setApp(filePath: string, app: BCApp): void;
/**
* Store objects in type-specific partitions
*/
setObjects(appId: string, objectType: string, objects: any[]): void;
/**
* Get app with memory tracking
*/
getApp(filePath: string, currentFileHash: string): BCApp | null;
/**
* Get objects from type-specific partition
*/
getObjects(appId: string, objectType: string): any[] | null;
/**
* Get memory statistics with detailed breakdown
*/
getMemoryStats(): MemoryStats;
/**
* Optimize memory usage by removing redundant data
*/
private optimizeAppData;
/**
* Optimize objects data by removing unnecessary properties
*/
private optimizeObjectsData;
/**
* Get appropriate partition for object type
*/
private getPartitionForType;
/**
* Calculate memory usage of an object in MB
*/
private calculateObjectMemoryUsage;
/**
* Calculate memory usage of a partition
*/
private calculatePartitionMemoryUsage;
/**
* Find largest objects across all partitions
*/
private findLargestObjects;
/**
* Enforce memory limits using configured eviction strategy
*/
private enforceMemoryLimits;
/**
* Evict least recently used entries
*/
private evictLRU;
/**
* Evict least frequently used entries
*/
private evictLFU;
/**
* Evict largest entries first
*/
private evictLargest;
/**
* Check if entry is valid
*/
private isEntryValid;
/**
* Simple compression placeholder
*/
private compressData;
/**
* Simple decompression placeholder
*/
private decompressData;
/**
* Check if data is compressed
*/
private isCompressed;
/**
* Calculate compression ratio
*/
private calculateCompressionRatio;
/**
* Clear all cache data
*/
clear(): void;
/**
* Cleanup expired entries
*/
cleanup(): number;
}
export {};
//# sourceMappingURL=memory-optimized-cache.d.ts.map