tywrap 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +319 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +263 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/config/index.d.ts +41 -0
  8. package/dist/config/index.d.ts.map +1 -0
  9. package/dist/config/index.js +234 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/core/analyzer.d.ts +63 -0
  12. package/dist/core/analyzer.d.ts.map +1 -0
  13. package/dist/core/analyzer.js +676 -0
  14. package/dist/core/analyzer.js.map +1 -0
  15. package/dist/core/discovery.d.ts +85 -0
  16. package/dist/core/discovery.d.ts.map +1 -0
  17. package/dist/core/discovery.js +344 -0
  18. package/dist/core/discovery.js.map +1 -0
  19. package/dist/core/generator.d.ts +37 -0
  20. package/dist/core/generator.d.ts.map +1 -0
  21. package/dist/core/generator.js +368 -0
  22. package/dist/core/generator.js.map +1 -0
  23. package/dist/core/mapper.d.ts +40 -0
  24. package/dist/core/mapper.d.ts.map +1 -0
  25. package/dist/core/mapper.js +401 -0
  26. package/dist/core/mapper.js.map +1 -0
  27. package/dist/core/validation.d.ts +79 -0
  28. package/dist/core/validation.d.ts.map +1 -0
  29. package/dist/core/validation.js +486 -0
  30. package/dist/core/validation.js.map +1 -0
  31. package/dist/index.d.ts +26 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +29 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/runtime/base.d.ts +12 -0
  36. package/dist/runtime/base.d.ts.map +1 -0
  37. package/dist/runtime/base.js +6 -0
  38. package/dist/runtime/base.js.map +1 -0
  39. package/dist/runtime/errors.d.ts +17 -0
  40. package/dist/runtime/errors.d.ts.map +1 -0
  41. package/dist/runtime/errors.js +21 -0
  42. package/dist/runtime/errors.js.map +1 -0
  43. package/dist/runtime/http.d.ts +22 -0
  44. package/dist/runtime/http.d.ts.map +1 -0
  45. package/dist/runtime/http.js +79 -0
  46. package/dist/runtime/http.js.map +1 -0
  47. package/dist/runtime/index.d.ts +8 -0
  48. package/dist/runtime/index.d.ts.map +1 -0
  49. package/dist/runtime/index.js +17 -0
  50. package/dist/runtime/index.js.map +1 -0
  51. package/dist/runtime/node.d.ts +48 -0
  52. package/dist/runtime/node.d.ts.map +1 -0
  53. package/dist/runtime/node.js +328 -0
  54. package/dist/runtime/node.js.map +1 -0
  55. package/dist/runtime/optimized-node.d.ts +131 -0
  56. package/dist/runtime/optimized-node.d.ts.map +1 -0
  57. package/dist/runtime/optimized-node.js +622 -0
  58. package/dist/runtime/optimized-node.js.map +1 -0
  59. package/dist/runtime/protocol.d.ts +3 -0
  60. package/dist/runtime/protocol.d.ts.map +1 -0
  61. package/dist/runtime/protocol.js +3 -0
  62. package/dist/runtime/protocol.js.map +1 -0
  63. package/dist/runtime/pyodide.d.ts +27 -0
  64. package/dist/runtime/pyodide.d.ts.map +1 -0
  65. package/dist/runtime/pyodide.js +191 -0
  66. package/dist/runtime/pyodide.js.map +1 -0
  67. package/dist/tools/python_suite.js +173 -0
  68. package/dist/tools/python_suite.js.map +1 -0
  69. package/dist/types/index.d.ts +299 -0
  70. package/dist/types/index.d.ts.map +1 -0
  71. package/dist/types/index.js +5 -0
  72. package/dist/types/index.js.map +1 -0
  73. package/dist/tywrap.d.ts +29 -0
  74. package/dist/tywrap.d.ts.map +1 -0
  75. package/dist/tywrap.js +589 -0
  76. package/dist/tywrap.js.map +1 -0
  77. package/dist/utils/bundle-optimizer.d.ts +182 -0
  78. package/dist/utils/bundle-optimizer.d.ts.map +1 -0
  79. package/dist/utils/bundle-optimizer.js +680 -0
  80. package/dist/utils/bundle-optimizer.js.map +1 -0
  81. package/dist/utils/cache.d.ts +149 -0
  82. package/dist/utils/cache.d.ts.map +1 -0
  83. package/dist/utils/cache.js +492 -0
  84. package/dist/utils/cache.js.map +1 -0
  85. package/dist/utils/codec.d.ts +94 -0
  86. package/dist/utils/codec.d.ts.map +1 -0
  87. package/dist/utils/codec.js +150 -0
  88. package/dist/utils/codec.js.map +1 -0
  89. package/dist/utils/logger.d.ts +42 -0
  90. package/dist/utils/logger.d.ts.map +1 -0
  91. package/dist/utils/logger.js +140 -0
  92. package/dist/utils/logger.js.map +1 -0
  93. package/dist/utils/memory-profiler.d.ts +123 -0
  94. package/dist/utils/memory-profiler.d.ts.map +1 -0
  95. package/dist/utils/memory-profiler.js +426 -0
  96. package/dist/utils/memory-profiler.js.map +1 -0
  97. package/dist/utils/parallel-processor.d.ts +146 -0
  98. package/dist/utils/parallel-processor.d.ts.map +1 -0
  99. package/dist/utils/parallel-processor.js +636 -0
  100. package/dist/utils/parallel-processor.js.map +1 -0
  101. package/dist/utils/python.d.ts +8 -0
  102. package/dist/utils/python.d.ts.map +1 -0
  103. package/dist/utils/python.js +56 -0
  104. package/dist/utils/python.js.map +1 -0
  105. package/dist/utils/runtime.d.ts +153 -0
  106. package/dist/utils/runtime.d.ts.map +1 -0
  107. package/dist/utils/runtime.js +519 -0
  108. package/dist/utils/runtime.js.map +1 -0
  109. package/package.json +136 -0
  110. package/runtime/python_bridge.py +476 -0
  111. package/src/cli.ts +331 -0
  112. package/src/config/index.ts +289 -0
  113. package/src/core/analyzer.ts +788 -0
  114. package/src/core/discovery.ts +415 -0
  115. package/src/core/generator.ts +447 -0
  116. package/src/core/mapper.ts +504 -0
  117. package/src/core/validation.ts +693 -0
  118. package/src/index.ts +83 -0
  119. package/src/runtime/base.ts +32 -0
  120. package/src/runtime/errors.ts +19 -0
  121. package/src/runtime/http.ts +132 -0
  122. package/src/runtime/index.ts +24 -0
  123. package/src/runtime/node.ts +431 -0
  124. package/src/runtime/optimized-node.ts +838 -0
  125. package/src/runtime/protocol.ts +2 -0
  126. package/src/runtime/pyodide.ts +228 -0
  127. package/src/types/global.d.ts +60 -0
  128. package/src/types/index.ts +410 -0
  129. package/src/tywrap.ts +669 -0
  130. package/src/utils/bundle-optimizer.ts +876 -0
  131. package/src/utils/cache.ts +634 -0
  132. package/src/utils/codec.ts +275 -0
  133. package/src/utils/logger.ts +201 -0
  134. package/src/utils/memory-profiler.ts +582 -0
  135. package/src/utils/parallel-processor.ts +879 -0
  136. package/src/utils/python.ts +79 -0
  137. package/src/utils/runtime.ts +616 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-optimizer.js","sourceRoot":"","sources":["../../src/utils/bundle-optimizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Intelligent Caching System for tywrap
3
+ * Provides multi-level caching with invalidation strategies and performance monitoring
4
+ */
5
+ import type { AnalysisResult, PythonModule, GeneratedCode } from '../types/index.js';
6
+ export interface CacheEntry<T = unknown> {
7
+ key: string;
8
+ data: T;
9
+ timestamp: number;
10
+ version: string;
11
+ dependencies: string[];
12
+ metadata: {
13
+ size: number;
14
+ hitCount: number;
15
+ lastAccessed: number;
16
+ computeTime: number;
17
+ memoryFootprint: number;
18
+ };
19
+ }
20
+ export interface CacheStats {
21
+ totalEntries: number;
22
+ totalSize: number;
23
+ hitRate: number;
24
+ averageComputeTime: number;
25
+ topKeys: Array<{
26
+ key: string;
27
+ hitCount: number;
28
+ size: number;
29
+ }>;
30
+ memoryUsage: number;
31
+ }
32
+ export interface CacheConfig {
33
+ baseDir: string;
34
+ maxSize: number;
35
+ maxAge: number;
36
+ maxEntries: number;
37
+ compressionEnabled: boolean;
38
+ persistToDisk: boolean;
39
+ cleanupInterval: number;
40
+ debug?: boolean;
41
+ }
42
+ export declare class IntelligentCache {
43
+ private memoryCache;
44
+ private stats;
45
+ private config;
46
+ private cleanupTimer?;
47
+ private compressionAvailable;
48
+ private debug;
49
+ constructor(config?: Partial<CacheConfig>);
50
+ setDebug(debug: boolean): void;
51
+ private debugLog;
52
+ private safeMkdir;
53
+ private safeReaddir;
54
+ private safeReadFile;
55
+ private safeWriteFile;
56
+ private safeUnlink;
57
+ /**
58
+ * Generate cache key from input parameters
59
+ */
60
+ generateKey(prefix: string, ...inputs: unknown[]): string;
61
+ /**
62
+ * Get entry from cache with performance tracking
63
+ */
64
+ get<T>(key: string): Promise<T | null>;
65
+ /**
66
+ * Store entry in cache with metadata
67
+ */
68
+ set<T>(key: string, data: T, options?: {
69
+ dependencies?: string[];
70
+ computeTime?: number;
71
+ version?: string;
72
+ }): Promise<void>;
73
+ /**
74
+ * Cached IR extraction with dependency tracking
75
+ */
76
+ getCachedAnalysis(sourceCode: string, modulePath: string, version?: string): Promise<AnalysisResult | null>;
77
+ /**
78
+ * Store analysis result with dependency tracking
79
+ */
80
+ setCachedAnalysis(sourceCode: string, modulePath: string, result: AnalysisResult, computeTime: number, version?: string): Promise<void>;
81
+ /**
82
+ * Cached code generation
83
+ */
84
+ getCachedGeneration(module: PythonModule, options: {
85
+ moduleName: string;
86
+ exportAll?: boolean;
87
+ }, version?: string): Promise<GeneratedCode | null>;
88
+ /**
89
+ * Store generated code
90
+ */
91
+ setCachedGeneration(module: PythonModule, options: {
92
+ moduleName: string;
93
+ exportAll?: boolean;
94
+ }, result: GeneratedCode, computeTime: number, version?: string): Promise<void>;
95
+ /**
96
+ * Invalidate cache entries based on dependencies
97
+ */
98
+ invalidateByDependency(dependency: string): Promise<number>;
99
+ /**
100
+ * Get cache statistics
101
+ */
102
+ getStats(): CacheStats;
103
+ /**
104
+ * Clear all cache entries
105
+ */
106
+ clear(): Promise<void>;
107
+ /**
108
+ * Cleanup old and large entries
109
+ */
110
+ private cleanup;
111
+ /**
112
+ * Check if cache entry is still valid
113
+ */
114
+ private isEntryValid;
115
+ /**
116
+ * Estimate data size for cache management
117
+ */
118
+ private estimateSize;
119
+ /**
120
+ * Extract dependencies from Python source code
121
+ */
122
+ private extractDependencies;
123
+ /**
124
+ * Load cache entries from disk
125
+ */
126
+ private loadFromDisk;
127
+ /**
128
+ * Load specific key from disk
129
+ */
130
+ private loadFromDiskKey;
131
+ /**
132
+ * Save specific key to disk
133
+ */
134
+ private saveToDiskKey;
135
+ /**
136
+ * Invalidate disk cache by dependency
137
+ */
138
+ private invalidateDiskByDependency;
139
+ /**
140
+ * Start periodic cleanup scheduler
141
+ */
142
+ private startCleanupScheduler;
143
+ /**
144
+ * Dispose cache and cleanup resources
145
+ */
146
+ dispose(): void;
147
+ }
148
+ export declare const globalCache: IntelligentCache;
149
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,492 @@
1
+ /**
2
+ * Intelligent Caching System for tywrap
3
+ * Provides multi-level caching with invalidation strategies and performance monitoring
4
+ */
5
+ import { createHash } from 'crypto';
6
+ import { promises as fs } from 'node:fs';
7
+ import { join, dirname } from 'path';
8
+ import { getComponentLogger } from './logger.js';
9
+ const log = getComponentLogger('Cache');
10
+ export class IntelligentCache {
11
+ memoryCache = new Map();
12
+ stats = {
13
+ hits: 0,
14
+ misses: 0,
15
+ evictions: 0,
16
+ totalComputeTime: 0,
17
+ };
18
+ config;
19
+ cleanupTimer;
20
+ compressionAvailable = false;
21
+ debug = false;
22
+ constructor(config = {}) {
23
+ this.config = {
24
+ baseDir: join(process.cwd(), '.tywrap-cache'),
25
+ maxSize: 100 * 1024 * 1024, // 100MB
26
+ maxAge: 7 * 24 * 60 * 60 * 1000, // 7 days
27
+ maxEntries: 1000,
28
+ compressionEnabled: true,
29
+ persistToDisk: true,
30
+ cleanupInterval: 60 * 60 * 1000, // 1 hour
31
+ debug: false,
32
+ ...config,
33
+ };
34
+ this.debug = this.config.debug ?? false;
35
+ if (this.config.persistToDisk) {
36
+ this.safeMkdir(this.config.baseDir).catch(error => {
37
+ log.warn('Failed to create cache directory', { error: String(error) });
38
+ });
39
+ }
40
+ // Check for compression availability
41
+ try {
42
+ require.resolve('zlib');
43
+ this.compressionAvailable = this.config.compressionEnabled;
44
+ }
45
+ catch {
46
+ this.compressionAvailable = false;
47
+ }
48
+ // Start periodic cleanup
49
+ if (this.config.cleanupInterval > 0) {
50
+ this.startCleanupScheduler();
51
+ }
52
+ if (this.config.persistToDisk) {
53
+ this.safeMkdir(this.config.baseDir)
54
+ .then(() => this.loadFromDisk())
55
+ .catch(error => {
56
+ log.warn('Failed to initialize disk cache', { error: String(error) });
57
+ });
58
+ }
59
+ }
60
+ setDebug(debug) {
61
+ this.debug = debug;
62
+ }
63
+ debugLog(message) {
64
+ if (!this.debug) {
65
+ return;
66
+ }
67
+ process.stdout.write(`${message}\n`);
68
+ }
69
+ async safeMkdir(path) {
70
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- cache path is internal
71
+ await fs.mkdir(path, { recursive: true });
72
+ }
73
+ async safeReaddir(path) {
74
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- cache path is internal
75
+ return fs.readdir(path);
76
+ }
77
+ async safeReadFile(path) {
78
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- cache path is internal
79
+ return fs.readFile(path, 'utf8');
80
+ }
81
+ async safeWriteFile(path, data) {
82
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- cache path is internal
83
+ await fs.writeFile(path, data);
84
+ }
85
+ async safeUnlink(path) {
86
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- cache path is internal
87
+ await fs.unlink(path);
88
+ }
89
+ /**
90
+ * Generate cache key from input parameters
91
+ */
92
+ generateKey(prefix, ...inputs) {
93
+ const hash = createHash('sha256');
94
+ // Add prefix
95
+ hash.update(prefix);
96
+ // Add inputs
97
+ for (const input of inputs) {
98
+ if (typeof input === 'string') {
99
+ hash.update(input);
100
+ }
101
+ else if (Buffer.isBuffer(input)) {
102
+ hash.update(input);
103
+ }
104
+ else if (input !== undefined && input !== null) {
105
+ hash.update(JSON.stringify(input));
106
+ }
107
+ else {
108
+ hash.update('null');
109
+ }
110
+ }
111
+ return hash.digest('hex').substring(0, 16); // Use first 16 chars for readability
112
+ }
113
+ /**
114
+ * Get entry from cache with performance tracking
115
+ */
116
+ async get(key) {
117
+ const startTime = performance.now();
118
+ // Try memory cache first
119
+ const entry = this.memoryCache.get(key);
120
+ if (entry) {
121
+ // Check if entry is still valid
122
+ if (this.isEntryValid(entry)) {
123
+ entry.metadata.hitCount++;
124
+ entry.metadata.lastAccessed = Date.now();
125
+ this.stats.hits++;
126
+ this.debugLog(`Cache HIT [${key}] (memory) - ${(performance.now() - startTime).toFixed(2)}ms`);
127
+ return entry.data;
128
+ }
129
+ else {
130
+ this.memoryCache.delete(key);
131
+ }
132
+ }
133
+ // Try disk cache if enabled
134
+ if (this.config.persistToDisk) {
135
+ const diskEntry = await this.loadFromDiskKey(key);
136
+ if (diskEntry && this.isEntryValid(diskEntry)) {
137
+ // Move to memory cache
138
+ this.memoryCache.set(key, diskEntry);
139
+ diskEntry.metadata.hitCount++;
140
+ diskEntry.metadata.lastAccessed = Date.now();
141
+ this.stats.hits++;
142
+ this.debugLog(`Cache HIT [${key}] (disk) - ${(performance.now() - startTime).toFixed(2)}ms`);
143
+ return diskEntry.data;
144
+ }
145
+ }
146
+ this.stats.misses++;
147
+ this.debugLog(`Cache MISS [${key}] - ${(performance.now() - startTime).toFixed(2)}ms`);
148
+ return null;
149
+ }
150
+ /**
151
+ * Store entry in cache with metadata
152
+ */
153
+ async set(key, data, options = {}) {
154
+ const startTime = performance.now();
155
+ const entry = {
156
+ key,
157
+ data,
158
+ timestamp: Date.now(),
159
+ version: options.version ?? '1.0.0',
160
+ dependencies: options.dependencies ?? [],
161
+ metadata: {
162
+ size: this.estimateSize(data),
163
+ hitCount: 0,
164
+ lastAccessed: Date.now(),
165
+ computeTime: options.computeTime ?? 0,
166
+ memoryFootprint: process.memoryUsage().heapUsed,
167
+ },
168
+ };
169
+ // Update stats
170
+ if (options.computeTime) {
171
+ this.stats.totalComputeTime += options.computeTime;
172
+ }
173
+ // Store in memory cache
174
+ this.memoryCache.set(key, entry);
175
+ // Store to disk if enabled
176
+ if (this.config.persistToDisk) {
177
+ await this.saveToDiskKey(key, entry);
178
+ }
179
+ // Trigger cleanup if needed
180
+ await this.cleanup();
181
+ this.debugLog(`Cache SET [${key}] - ${(performance.now() - startTime).toFixed(2)}ms`);
182
+ }
183
+ /**
184
+ * Cached IR extraction with dependency tracking
185
+ */
186
+ async getCachedAnalysis(sourceCode, modulePath, version = '1.0.0') {
187
+ const dependencies = this.extractDependencies(sourceCode);
188
+ const key = this.generateKey('analysis', sourceCode, modulePath, version, dependencies);
189
+ const cached = await this.get(key);
190
+ if (cached) {
191
+ return cached;
192
+ }
193
+ return null;
194
+ }
195
+ /**
196
+ * Store analysis result with dependency tracking
197
+ */
198
+ async setCachedAnalysis(sourceCode, modulePath, result, computeTime, version = '1.0.0') {
199
+ const dependencies = this.extractDependencies(sourceCode);
200
+ const key = this.generateKey('analysis', sourceCode, modulePath, version, dependencies);
201
+ await this.set(key, result, {
202
+ dependencies: [modulePath, ...dependencies],
203
+ computeTime,
204
+ version,
205
+ });
206
+ }
207
+ /**
208
+ * Cached code generation
209
+ */
210
+ async getCachedGeneration(module, options, version = '1.0.0') {
211
+ const key = this.generateKey('generation', module, options, version);
212
+ return this.get(key);
213
+ }
214
+ /**
215
+ * Store generated code
216
+ */
217
+ async setCachedGeneration(module, options, result, computeTime, version = '1.0.0') {
218
+ const key = this.generateKey('generation', module, options, version);
219
+ await this.set(key, result, {
220
+ dependencies: [options.moduleName],
221
+ computeTime,
222
+ version,
223
+ });
224
+ }
225
+ /**
226
+ * Invalidate cache entries based on dependencies
227
+ */
228
+ async invalidateByDependency(dependency) {
229
+ let invalidatedCount = 0;
230
+ // Invalidate memory cache
231
+ for (const [key, entry] of this.memoryCache) {
232
+ if (entry.dependencies.includes(dependency)) {
233
+ this.memoryCache.delete(key);
234
+ invalidatedCount++;
235
+ }
236
+ }
237
+ // Invalidate disk cache if enabled
238
+ if (this.config.persistToDisk) {
239
+ const diskInvalidated = await this.invalidateDiskByDependency(dependency);
240
+ invalidatedCount += diskInvalidated;
241
+ }
242
+ this.debugLog(`Invalidated ${invalidatedCount} cache entries for dependency: ${dependency}`);
243
+ return invalidatedCount;
244
+ }
245
+ /**
246
+ * Get cache statistics
247
+ */
248
+ getStats() {
249
+ const entries = Array.from(this.memoryCache.values());
250
+ const totalSize = entries.reduce((sum, entry) => sum + entry.metadata.size, 0);
251
+ const hitRate = this.stats.hits / (this.stats.hits + this.stats.misses);
252
+ const averageComputeTime = this.stats.totalComputeTime / Math.max(1, this.stats.hits);
253
+ const topKeys = entries
254
+ .sort((a, b) => b.metadata.hitCount - a.metadata.hitCount)
255
+ .slice(0, 10)
256
+ .map(entry => ({
257
+ key: entry.key,
258
+ hitCount: entry.metadata.hitCount,
259
+ size: entry.metadata.size,
260
+ }));
261
+ return {
262
+ totalEntries: this.memoryCache.size,
263
+ totalSize,
264
+ hitRate: isNaN(hitRate) ? 0 : hitRate,
265
+ averageComputeTime,
266
+ topKeys,
267
+ memoryUsage: process.memoryUsage().heapUsed,
268
+ };
269
+ }
270
+ /**
271
+ * Clear all cache entries
272
+ */
273
+ async clear() {
274
+ this.memoryCache.clear();
275
+ if (this.config.persistToDisk) {
276
+ try {
277
+ const files = await this.safeReaddir(this.config.baseDir);
278
+ await Promise.all(files
279
+ .filter(file => file.endsWith('.cache'))
280
+ .map(file => this.safeUnlink(join(this.config.baseDir, file)).catch(error => log.warn('Failed to remove cache file', { file, error: String(error) }))));
281
+ }
282
+ catch (error) {
283
+ if (error.code !== 'ENOENT') {
284
+ log.warn('Failed to clear disk cache', { error: String(error) });
285
+ }
286
+ }
287
+ }
288
+ this.stats = { hits: 0, misses: 0, evictions: 0, totalComputeTime: 0 };
289
+ }
290
+ /**
291
+ * Cleanup old and large entries
292
+ */
293
+ async cleanup() {
294
+ const entries = Array.from(this.memoryCache.entries());
295
+ let totalSize = entries.reduce((sum, [, entry]) => sum + entry.metadata.size, 0);
296
+ // Remove expired entries
297
+ const now = Date.now();
298
+ for (const [key, entry] of entries) {
299
+ if (now - entry.timestamp > this.config.maxAge) {
300
+ this.memoryCache.delete(key);
301
+ this.stats.evictions++;
302
+ totalSize -= entry.metadata.size;
303
+ }
304
+ }
305
+ // Remove entries if over limit
306
+ if (this.memoryCache.size > this.config.maxEntries || totalSize > this.config.maxSize) {
307
+ // Sort by least recently used
308
+ const sorted = Array.from(this.memoryCache.entries()).sort((a, b) => a[1].metadata.lastAccessed - b[1].metadata.lastAccessed);
309
+ while ((this.memoryCache.size > this.config.maxEntries || totalSize > this.config.maxSize) &&
310
+ sorted.length > 0) {
311
+ const next = sorted.shift();
312
+ if (!next) {
313
+ break;
314
+ }
315
+ const [key, entry] = next;
316
+ this.memoryCache.delete(key);
317
+ this.stats.evictions++;
318
+ totalSize -= entry.metadata.size;
319
+ }
320
+ }
321
+ }
322
+ /**
323
+ * Check if cache entry is still valid
324
+ */
325
+ isEntryValid(entry) {
326
+ const now = Date.now();
327
+ return now - entry.timestamp < this.config.maxAge;
328
+ }
329
+ /**
330
+ * Estimate data size for cache management
331
+ */
332
+ estimateSize(data) {
333
+ try {
334
+ return Buffer.byteLength(JSON.stringify(data), 'utf8');
335
+ }
336
+ catch {
337
+ return 1024; // Default estimate
338
+ }
339
+ }
340
+ /**
341
+ * Extract dependencies from Python source code
342
+ */
343
+ extractDependencies(sourceCode) {
344
+ const dependencies = [];
345
+ const importRegex = /(?:from\s+(\w+)|import\s+(\w+))/g;
346
+ let match;
347
+ while ((match = importRegex.exec(sourceCode)) !== null) {
348
+ const module = match[1] ?? match[2];
349
+ if (module && !dependencies.includes(module)) {
350
+ dependencies.push(module);
351
+ }
352
+ }
353
+ return dependencies;
354
+ }
355
+ /**
356
+ * Load cache entries from disk
357
+ */
358
+ async loadFromDisk() {
359
+ try {
360
+ const files = await this.safeReaddir(this.config.baseDir);
361
+ let loadedCount = 0;
362
+ for (const file of files) {
363
+ if (file.endsWith('.cache')) {
364
+ try {
365
+ const key = file.replace('.cache', '');
366
+ const entry = await this.loadFromDiskKey(key);
367
+ if (entry && this.isEntryValid(entry)) {
368
+ this.memoryCache.set(key, entry);
369
+ loadedCount++;
370
+ }
371
+ }
372
+ catch (error) {
373
+ log.warn('Failed to load cache file', { file, error: String(error) });
374
+ }
375
+ }
376
+ }
377
+ if (loadedCount > 0) {
378
+ this.debugLog(`Loaded ${loadedCount} cache entries from disk`);
379
+ }
380
+ }
381
+ catch (error) {
382
+ if (error.code !== 'ENOENT') {
383
+ log.warn('Failed to load cache from disk', { error: String(error) });
384
+ }
385
+ }
386
+ }
387
+ /**
388
+ * Load specific key from disk
389
+ */
390
+ async loadFromDiskKey(key) {
391
+ const filePath = join(this.config.baseDir, `${key}.cache`);
392
+ try {
393
+ const data = await this.safeReadFile(filePath);
394
+ let parsed;
395
+ if (this.compressionAvailable && data.startsWith('COMPRESSED:')) {
396
+ const zlib = await import('zlib');
397
+ const compressed = Buffer.from(data.substring(11), 'base64');
398
+ const decompressed = zlib.gunzipSync(compressed);
399
+ parsed = JSON.parse(decompressed.toString('utf8'));
400
+ }
401
+ else {
402
+ parsed = JSON.parse(data);
403
+ }
404
+ return parsed;
405
+ }
406
+ catch (error) {
407
+ if (error.code !== 'ENOENT') {
408
+ log.warn('Failed to load cache key', { key, error: String(error) });
409
+ }
410
+ return null;
411
+ }
412
+ }
413
+ /**
414
+ * Save specific key to disk
415
+ */
416
+ async saveToDiskKey(key, entry) {
417
+ const filePath = join(this.config.baseDir, `${key}.cache`);
418
+ try {
419
+ // Ensure directory exists
420
+ await this.safeMkdir(dirname(filePath));
421
+ let data = JSON.stringify(entry);
422
+ // Compress if enabled and beneficial
423
+ if (this.compressionAvailable && data.length > 1024) {
424
+ try {
425
+ const zlib = await import('zlib');
426
+ const compressed = zlib.gzipSync(Buffer.from(data, 'utf8'));
427
+ if (compressed.length < data.length * 0.8) {
428
+ data = `COMPRESSED:${compressed.toString('base64')}`;
429
+ }
430
+ }
431
+ catch (error) {
432
+ log.warn('Compression failed', { key, error: String(error) });
433
+ }
434
+ }
435
+ await this.safeWriteFile(filePath, data);
436
+ }
437
+ catch (error) {
438
+ log.warn('Failed to save cache key', { key, error: String(error) });
439
+ }
440
+ }
441
+ /**
442
+ * Invalidate disk cache by dependency
443
+ */
444
+ async invalidateDiskByDependency(dependency) {
445
+ let invalidatedCount = 0;
446
+ try {
447
+ const files = await this.safeReaddir(this.config.baseDir);
448
+ for (const file of files) {
449
+ if (file.endsWith('.cache')) {
450
+ try {
451
+ const key = file.replace('.cache', '');
452
+ const entry = await this.loadFromDiskKey(key);
453
+ if (entry?.dependencies.includes(dependency)) {
454
+ await this.safeUnlink(join(this.config.baseDir, file));
455
+ invalidatedCount++;
456
+ }
457
+ }
458
+ catch (error) {
459
+ log.warn('Failed to check cache file', { file, error: String(error) });
460
+ }
461
+ }
462
+ }
463
+ }
464
+ catch (error) {
465
+ if (error.code !== 'ENOENT') {
466
+ log.warn('Failed to invalidate disk cache', { error: String(error) });
467
+ }
468
+ }
469
+ return invalidatedCount;
470
+ }
471
+ /**
472
+ * Start periodic cleanup scheduler
473
+ */
474
+ startCleanupScheduler() {
475
+ this.cleanupTimer = setInterval(async () => {
476
+ await this.cleanup();
477
+ }, this.config.cleanupInterval);
478
+ this.cleanupTimer.unref?.();
479
+ }
480
+ /**
481
+ * Dispose cache and cleanup resources
482
+ */
483
+ dispose() {
484
+ if (this.cleanupTimer) {
485
+ clearInterval(this.cleanupTimer);
486
+ this.cleanupTimer = undefined;
487
+ }
488
+ }
489
+ }
490
+ // Export singleton instance
491
+ export const globalCache = new IntelligentCache();
492
+ //# sourceMappingURL=cache.js.map