UNPKG

bc-symbols-mcp

Version:

MCP server for analyzing Business Central .app files and BC object structures

110 lines 2.76 kB
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