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,426 @@
1
+ /**
2
+ * Memory Profiler and Leak Detection for tywrap
3
+ * Comprehensive memory monitoring and analysis tools
4
+ */
5
+ import { EventEmitter } from 'events';
6
+ import { writeFileSync } from 'fs';
7
+ import { getComponentLogger } from './logger.js';
8
+ const log = getComponentLogger('MemoryProfiler');
9
+ export class MemoryProfiler extends EventEmitter {
10
+ snapshots = [];
11
+ operationMetrics = new Map();
12
+ monitoring = false;
13
+ monitoringInterval;
14
+ baselineSnapshot;
15
+ gcCount = 0;
16
+ options;
17
+ constructor(options = {}) {
18
+ super();
19
+ this.options = {
20
+ snapshotInterval: 5000, // 5 seconds
21
+ maxSnapshots: 100,
22
+ leakThreshold: 1024 * 1024, // 1MB per second
23
+ enableGCTracking: true,
24
+ ...options,
25
+ };
26
+ if (this.options.enableGCTracking) {
27
+ this.setupGCTracking();
28
+ }
29
+ }
30
+ logInfo(message) {
31
+ process.stdout.write(`${message}\n`);
32
+ }
33
+ /**
34
+ * Start memory monitoring
35
+ */
36
+ startMonitoring() {
37
+ if (this.monitoring) {
38
+ return;
39
+ }
40
+ this.monitoring = true;
41
+ this.baselineSnapshot = this.takeSnapshot('monitoring_start');
42
+ this.monitoringInterval = setInterval(() => {
43
+ const snapshot = this.takeSnapshot('periodic');
44
+ this.emit('snapshot', snapshot);
45
+ // Check for immediate leak concerns
46
+ const analysis = this.analyzeLeaks();
47
+ if (analysis.detected && analysis.severity === 'critical') {
48
+ this.emit('critical_leak', analysis);
49
+ }
50
+ }, this.options.snapshotInterval);
51
+ this.logInfo('Memory monitoring started');
52
+ }
53
+ /**
54
+ * Stop memory monitoring
55
+ */
56
+ stopMonitoring() {
57
+ if (!this.monitoring) {
58
+ return;
59
+ }
60
+ this.monitoring = false;
61
+ if (this.monitoringInterval) {
62
+ clearInterval(this.monitoringInterval);
63
+ this.monitoringInterval = undefined;
64
+ }
65
+ this.takeSnapshot('monitoring_stop');
66
+ this.emit('monitoring_stopped', this.generateReport());
67
+ this.logInfo('Memory monitoring stopped');
68
+ }
69
+ /**
70
+ * Take a memory snapshot
71
+ */
72
+ takeSnapshot(operation, metadata) {
73
+ const memUsage = process.memoryUsage();
74
+ const snapshot = {
75
+ timestamp: Date.now(),
76
+ heapUsed: memUsage.heapUsed,
77
+ heapTotal: memUsage.heapTotal,
78
+ external: memUsage.external,
79
+ rss: memUsage.rss,
80
+ arrayBuffers: memUsage.arrayBuffers,
81
+ gcCount: this.gcCount,
82
+ operation,
83
+ metadata,
84
+ };
85
+ this.snapshots.push(snapshot);
86
+ // Keep only recent snapshots
87
+ if (this.snapshots.length > this.options.maxSnapshots) {
88
+ this.snapshots.shift();
89
+ }
90
+ return snapshot;
91
+ }
92
+ /**
93
+ * Profile a specific operation
94
+ */
95
+ async profileOperation(operationName, operation, metadata) {
96
+ // Force garbage collection if available
97
+ if (global.gc) {
98
+ global.gc();
99
+ await this.sleep(100); // Let GC settle
100
+ }
101
+ const beforeSnapshot = this.takeSnapshot(`${operationName}_start`, metadata);
102
+ const startTime = performance.now();
103
+ try {
104
+ const result = await operation();
105
+ const endTime = performance.now();
106
+ // Force GC again to get accurate measurement
107
+ if (global.gc) {
108
+ global.gc();
109
+ await this.sleep(100);
110
+ }
111
+ const afterSnapshot = this.takeSnapshot(`${operationName}_end`, metadata);
112
+ const memoryDelta = afterSnapshot.heapUsed - beforeSnapshot.heapUsed;
113
+ const duration = endTime - startTime;
114
+ // Update operation metrics
115
+ const existing = this.operationMetrics.get(operationName) ?? {
116
+ count: 0,
117
+ averageMemoryDelta: 0,
118
+ maxMemoryDelta: 0,
119
+ totalMemoryAllocated: 0,
120
+ };
121
+ existing.count++;
122
+ existing.totalMemoryAllocated += Math.max(0, memoryDelta);
123
+ existing.maxMemoryDelta = Math.max(existing.maxMemoryDelta, memoryDelta);
124
+ existing.averageMemoryDelta = existing.totalMemoryAllocated / existing.count;
125
+ this.operationMetrics.set(operationName, existing);
126
+ this.logInfo(`${operationName}: ${duration.toFixed(2)}ms, ${this.formatBytes(memoryDelta)} memory delta`);
127
+ return { result, memoryDelta, duration };
128
+ }
129
+ catch (error) {
130
+ this.takeSnapshot(`${operationName}_error`, { ...metadata, error: String(error) });
131
+ throw error;
132
+ }
133
+ }
134
+ /**
135
+ * Analyze potential memory leaks
136
+ */
137
+ analyzeLeaks() {
138
+ if (this.snapshots.length < 3) {
139
+ return {
140
+ detected: false,
141
+ severity: 'low',
142
+ growthRate: 0,
143
+ suspiciousOperations: [],
144
+ recommendations: [],
145
+ snapshots: this.snapshots,
146
+ };
147
+ }
148
+ const recentSnapshots = this.snapshots.slice(-10); // Last 10 snapshots
149
+ const lastSnapshot = recentSnapshots[recentSnapshots.length - 1];
150
+ const firstSnapshot = recentSnapshots[0];
151
+ if (!lastSnapshot || !firstSnapshot) {
152
+ return {
153
+ detected: false,
154
+ severity: 'low',
155
+ growthRate: 0,
156
+ suspiciousOperations: [],
157
+ recommendations: [],
158
+ snapshots: this.snapshots,
159
+ };
160
+ }
161
+ const timeSpan = lastSnapshot.timestamp - firstSnapshot.timestamp;
162
+ if (timeSpan === 0) {
163
+ return {
164
+ detected: false,
165
+ severity: 'low',
166
+ growthRate: 0,
167
+ suspiciousOperations: [],
168
+ recommendations: [],
169
+ snapshots: this.snapshots,
170
+ };
171
+ }
172
+ const memoryGrowth = lastSnapshot.heapUsed - firstSnapshot.heapUsed;
173
+ const growthRate = (memoryGrowth / timeSpan) * 1000; // bytes per second
174
+ // Detect leak severity
175
+ let detected = false;
176
+ let severity = 'low';
177
+ if (growthRate > this.options.leakThreshold) {
178
+ detected = true;
179
+ if (growthRate > this.options.leakThreshold * 5) {
180
+ severity = 'critical';
181
+ }
182
+ else if (growthRate > this.options.leakThreshold * 3) {
183
+ severity = 'high';
184
+ }
185
+ else if (growthRate > this.options.leakThreshold * 1.5) {
186
+ severity = 'medium';
187
+ }
188
+ }
189
+ // Find suspicious operations
190
+ const suspiciousOperations = this.identifySuspiciousOperations();
191
+ // Generate recommendations
192
+ const recommendations = this.generateRecommendations(growthRate, suspiciousOperations);
193
+ return {
194
+ detected,
195
+ severity,
196
+ growthRate,
197
+ suspiciousOperations,
198
+ recommendations,
199
+ snapshots: recentSnapshots,
200
+ };
201
+ }
202
+ /**
203
+ * Identify operations that may be causing memory leaks
204
+ */
205
+ identifySuspiciousOperations() {
206
+ const suspicious = [];
207
+ for (const [operation, metrics] of this.operationMetrics) {
208
+ // High average memory usage
209
+ if (metrics.averageMemoryDelta > 10 * 1024 * 1024) {
210
+ // 10MB average
211
+ suspicious.push(`${operation}: High average memory usage (${this.formatBytes(metrics.averageMemoryDelta)})`);
212
+ }
213
+ // Memory growth without proper cleanup
214
+ if (metrics.count > 5 && metrics.averageMemoryDelta > 1024 * 1024) {
215
+ // 1MB average over 5 calls
216
+ suspicious.push(`${operation}: Potential memory accumulation`);
217
+ }
218
+ // Very large single allocation
219
+ if (metrics.maxMemoryDelta > 50 * 1024 * 1024) {
220
+ // 50MB single allocation
221
+ suspicious.push(`${operation}: Very large memory allocation (${this.formatBytes(metrics.maxMemoryDelta)})`);
222
+ }
223
+ }
224
+ return suspicious;
225
+ }
226
+ /**
227
+ * Generate recommendations based on analysis
228
+ */
229
+ generateRecommendations(growthRate, suspiciousOperations) {
230
+ const recommendations = [];
231
+ if (growthRate > this.options.leakThreshold) {
232
+ recommendations.push('Memory leak detected - investigate resource cleanup in your code');
233
+ if (suspiciousOperations.length > 0) {
234
+ recommendations.push(`Focus on these operations: ${suspiciousOperations.slice(0, 3).join(', ')}`);
235
+ }
236
+ if (growthRate > this.options.leakThreshold * 5) {
237
+ recommendations.push('CRITICAL: Memory growing very rapidly - immediate action required');
238
+ recommendations.push('Consider restarting the process if growth continues');
239
+ }
240
+ recommendations.push('Enable garbage collection with --expose-gc for better measurements');
241
+ recommendations.push('Review cache expiration policies');
242
+ recommendations.push('Check for retained references to large objects');
243
+ recommendations.push('Monitor subprocess memory usage in Python bridge');
244
+ }
245
+ // General performance recommendations
246
+ if (this.operationMetrics.size > 0) {
247
+ const avgMemoryPerOp = Array.from(this.operationMetrics.values()).reduce((sum, m) => sum + m.averageMemoryDelta, 0) / this.operationMetrics.size;
248
+ if (avgMemoryPerOp > 5 * 1024 * 1024) {
249
+ // 5MB average
250
+ recommendations.push('Consider optimizing data structures for lower memory usage');
251
+ recommendations.push('Implement streaming for large data processing');
252
+ }
253
+ }
254
+ return recommendations;
255
+ }
256
+ /**
257
+ * Generate comprehensive memory report
258
+ */
259
+ generateReport() {
260
+ if (this.snapshots.length === 0) {
261
+ throw new Error('No memory snapshots available for report');
262
+ }
263
+ const firstSnapshot = this.snapshots[0];
264
+ const lastSnapshot = this.snapshots[this.snapshots.length - 1];
265
+ if (!firstSnapshot || !lastSnapshot) {
266
+ throw new Error('Invalid snapshot data for report generation');
267
+ }
268
+ const duration = lastSnapshot.timestamp - firstSnapshot.timestamp;
269
+ const heapValues = this.snapshots.map(s => s.heapUsed);
270
+ const peakMemory = Math.max(...heapValues);
271
+ const averageMemory = heapValues.reduce((sum, val) => sum + val, 0) / heapValues.length;
272
+ const memoryGrowth = lastSnapshot.heapUsed - firstSnapshot.heapUsed;
273
+ // Calculate GC efficiency
274
+ const gcEvents = this.snapshots.filter((s, i) => {
275
+ const prevSnapshot = this.snapshots[i - 1];
276
+ return i > 0 && prevSnapshot && s.gcCount > prevSnapshot.gcCount;
277
+ });
278
+ const gcEfficiency = gcEvents.length > 0
279
+ ? gcEvents.reduce((sum, s) => {
280
+ const prev = this.snapshots[this.snapshots.indexOf(s) - 1];
281
+ const memoryReclaimed = prev ? prev.heapUsed - s.heapUsed : 0;
282
+ return sum + Math.max(0, memoryReclaimed);
283
+ }, 0) / gcEvents.length
284
+ : 0;
285
+ const summary = {
286
+ duration,
287
+ totalOperations: Array.from(this.operationMetrics.values()).reduce((sum, m) => sum + m.count, 0),
288
+ peakMemory,
289
+ averageMemory,
290
+ memoryGrowth,
291
+ gcEfficiency,
292
+ };
293
+ const leakAnalysis = this.analyzeLeaks();
294
+ // Generate overall recommendations
295
+ const recommendations = [];
296
+ if (summary.peakMemory > 500 * 1024 * 1024) {
297
+ // 500MB peak
298
+ recommendations.push('High peak memory usage detected - consider memory optimization strategies');
299
+ }
300
+ if (summary.memoryGrowth > 100 * 1024 * 1024) {
301
+ // 100MB growth
302
+ recommendations.push('Significant memory growth over session - review for potential leaks');
303
+ }
304
+ if (summary.gcEfficiency < 1024 * 1024) {
305
+ // Less than 1MB reclaimed per GC
306
+ recommendations.push('Low GC efficiency - may indicate memory fragmentation or retained references');
307
+ }
308
+ return {
309
+ summary,
310
+ leakAnalysis,
311
+ operationMetrics: this.operationMetrics,
312
+ recommendations: [...recommendations, ...leakAnalysis.recommendations],
313
+ };
314
+ }
315
+ /**
316
+ * Save memory report to file
317
+ */
318
+ saveReport(filePath) {
319
+ const report = this.generateReport();
320
+ const reportData = {
321
+ timestamp: new Date().toISOString(),
322
+ report,
323
+ snapshots: this.snapshots,
324
+ };
325
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- caller controls report path
326
+ writeFileSync(filePath, JSON.stringify(reportData, null, 2));
327
+ this.logInfo(`Memory report saved to ${filePath}`);
328
+ return report;
329
+ }
330
+ /**
331
+ * Setup garbage collection tracking
332
+ */
333
+ setupGCTracking() {
334
+ if (typeof global.gc !== 'function') {
335
+ log.warn('GC tracking unavailable - run with --expose-gc for better memory analysis');
336
+ return;
337
+ }
338
+ // Hook into GC events if available
339
+ try {
340
+ if (process.versions.node >= '14.0.0') {
341
+ const perfHooks = require('perf_hooks');
342
+ const obs = new perfHooks.PerformanceObserver((list) => {
343
+ const entries = list.getEntries();
344
+ entries.forEach(entry => {
345
+ if (entry.entryType === 'gc') {
346
+ this.gcCount++;
347
+ this.emit('gc', {
348
+ type: entry.kind,
349
+ duration: entry.duration,
350
+ timestamp: Date.now(),
351
+ });
352
+ }
353
+ });
354
+ });
355
+ obs.observe({ entryTypes: ['gc'] });
356
+ }
357
+ }
358
+ catch (error) {
359
+ log.warn('Advanced GC tracking unavailable', { error: String(error) });
360
+ }
361
+ }
362
+ /**
363
+ * Format bytes for human readable output
364
+ */
365
+ formatBytes(bytes) {
366
+ if (bytes === 0) {
367
+ return '0 B';
368
+ }
369
+ const k = 1024;
370
+ const sizes = ['B', 'KB', 'MB', 'GB'];
371
+ const i = Math.floor(Math.log(Math.abs(bytes)) / Math.log(k));
372
+ const size = bytes / Math.pow(k, i);
373
+ const sign = bytes < 0 ? '-' : '+';
374
+ const sizeLabel = i === 0 ? sizes[0] : i === 1 ? sizes[1] : i === 2 ? sizes[2] : sizes[3];
375
+ return `${sign}${size.toFixed(1)} ${sizeLabel}`;
376
+ }
377
+ /**
378
+ * Utility sleep function
379
+ */
380
+ sleep(ms) {
381
+ return new Promise(resolve => setTimeout(resolve, ms));
382
+ }
383
+ /**
384
+ * Clear all collected data
385
+ */
386
+ clear() {
387
+ this.snapshots.length = 0;
388
+ this.operationMetrics.clear();
389
+ this.gcCount = 0;
390
+ this.baselineSnapshot = undefined;
391
+ }
392
+ /**
393
+ * Get current memory usage
394
+ */
395
+ getCurrentMemoryUsage() {
396
+ return this.takeSnapshot('current');
397
+ }
398
+ /**
399
+ * Check if profiler has snapshots
400
+ */
401
+ hasSnapshots() {
402
+ return this.snapshots.length > 0;
403
+ }
404
+ /**
405
+ * Dispose profiler
406
+ */
407
+ dispose() {
408
+ this.stopMonitoring();
409
+ this.clear();
410
+ this.removeAllListeners();
411
+ }
412
+ }
413
+ // Export singleton instance for global use
414
+ export const globalMemoryProfiler = new MemoryProfiler();
415
+ // Automatic profiling for process exit
416
+ process.on('exit', () => {
417
+ if (globalMemoryProfiler.hasSnapshots()) {
418
+ try {
419
+ globalMemoryProfiler.saveReport('memory-profile-exit.json');
420
+ }
421
+ catch (error) {
422
+ log.error('Failed to save exit memory report', { error: String(error) });
423
+ }
424
+ }
425
+ });
426
+ //# sourceMappingURL=memory-profiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-profiler.js","sourceRoot":"","sources":["../../src/utils/memory-profiler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,GAAG,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AA6CjD,MAAM,OAAO,cAAe,SAAQ,YAAY;IACtC,SAAS,GAAqB,EAAE,CAAC;IACjC,gBAAgB,GAAG,IAAI,GAAG,EAQ/B,CAAC;IACI,UAAU,GAAG,KAAK,CAAC;IACnB,kBAAkB,CAAkB;IACpC,gBAAgB,CAAkB;IAClC,OAAO,GAAG,CAAC,CAAC;IACZ,OAAO,CAKb;IAEF,YAAY,UAA4D,EAAE;QACxE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG;YACb,gBAAgB,EAAE,IAAI,EAAE,YAAY;YACpC,YAAY,EAAE,GAAG;YACjB,aAAa,EAAE,IAAI,GAAG,IAAI,EAAE,iBAAiB;YAC7C,gBAAgB,EAAE,IAAI;YACtB,GAAG,OAAO;SACX,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAClC,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,OAAe;QAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAE9D,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEhC,oCAAoC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC1D,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAElC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAExB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAEvD,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAAkB,EAAE,QAAkC;QACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAEvC,MAAM,QAAQ,GAAmB;YAC/B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS;YACT,QAAQ;SACT,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9B,6BAA6B;QAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACtD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,aAAqB,EACrB,SAA+B,EAC/B,QAAkC;QAElC,wCAAwC;QACxC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,MAAM,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB;QACzC,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,aAAa,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAElC,6CAA6C;YAC7C,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,MAAM,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,aAAa,MAAM,EAAE,QAAQ,CAAC,CAAC;YAE1E,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;YACrE,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;YAErC,2BAA2B;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI;gBAC3D,KAAK,EAAE,CAAC;gBACR,kBAAkB,EAAE,CAAC;gBACrB,cAAc,EAAE,CAAC;gBACjB,oBAAoB,EAAE,CAAC;aACxB,CAAC;YAEF,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,QAAQ,CAAC,oBAAoB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAC1D,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACzE,QAAQ,CAAC,kBAAkB,GAAG,QAAQ,CAAC,oBAAoB,GAAG,QAAQ,CAAC,KAAK,CAAC;YAE7E,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAEnD,IAAI,CAAC,OAAO,CACV,GAAG,aAAa,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,CAC5F,CAAC;YAEF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,GAAG,aAAa,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,CAAC;gBACb,oBAAoB,EAAE,EAAE;gBACxB,eAAe,EAAE,EAAE;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB;QACvE,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;YACpC,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,CAAC;gBACb,oBAAoB,EAAE,EAAE;gBACxB,eAAe,EAAE,EAAE;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;QAElE,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,CAAC;gBACb,oBAAoB,EAAE,EAAE;gBACxB,eAAe,EAAE,EAAE;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;QACpE,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,mBAAmB;QAExE,uBAAuB;QACvB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,QAAQ,GAA6B,KAAK,CAAC;QAE/C,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC5C,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;gBAChD,QAAQ,GAAG,UAAU,CAAC;YACxB,CAAC;iBAAM,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;gBACvD,QAAQ,GAAG,MAAM,CAAC;YACpB,CAAC;iBAAM,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG,EAAE,CAAC;gBACzD,QAAQ,GAAG,QAAQ,CAAC;YACtB,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,MAAM,oBAAoB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEjE,2BAA2B;QAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAEvF,OAAO;YACL,QAAQ;YACR,QAAQ;YACR,UAAU;YACV,oBAAoB;YACpB,eAAe;YACf,SAAS,EAAE,eAAe;SAC3B,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,4BAA4B;QAClC,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzD,4BAA4B;YAC5B,IAAI,OAAO,CAAC,kBAAkB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;gBAClD,eAAe;gBACf,UAAU,CAAC,IAAI,CACb,GAAG,SAAS,gCAAgC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAC5F,CAAC;YACJ,CAAC;YAED,uCAAuC;YACvC,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;gBAClE,2BAA2B;gBAC3B,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,iCAAiC,CAAC,CAAC;YACjE,CAAC;YAED,+BAA+B;YAC/B,IAAI,OAAO,CAAC,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;gBAC9C,yBAAyB;gBACzB,UAAU,CAAC,IAAI,CACb,GAAG,SAAS,mCAAmC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAC3F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,UAAkB,EAAE,oBAA8B;QAChF,MAAM,eAAe,GAAa,EAAE,CAAC;QAErC,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC5C,eAAe,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YAEzF,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,eAAe,CAAC,IAAI,CAClB,8BAA8B,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAC;YACJ,CAAC;YAED,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;gBAChD,eAAe,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;gBAC1F,eAAe,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YAC9E,CAAC;YAED,eAAe,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YAC3F,eAAe,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACzD,eAAe,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YACvE,eAAe,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAC3E,CAAC;QAED,sCAAsC;QACtC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,cAAc,GAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC/C,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,kBAAkB,EACtC,CAAC,CACF,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAEjC,IAAI,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;gBACrC,cAAc;gBACd,eAAe,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;gBACnF,eAAe,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE/D,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;QAElE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;QACxF,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;QAEpE,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAChB,QAAQ,CAAC,MAAM,GAAG,CAAC;YACjB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3D,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9D,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;YAC5C,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM;YACzB,CAAC,CAAC,CAAC,CAAC;QAER,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAChE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EACzB,CAAC,CACF;YACD,UAAU;YACV,aAAa;YACb,YAAY;YACZ,YAAY;SACb,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEzC,mCAAmC;QACnC,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YAC3C,aAAa;YACb,eAAe,CAAC,IAAI,CAClB,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YAC7C,eAAe;YACf,eAAe,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YACvC,iCAAiC;YACjC,eAAe,CAAC,IAAI,CAClB,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO;YACP,YAAY;YACZ,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,eAAe,EAAE,CAAC,GAAG,eAAe,EAAE,GAAG,YAAY,CAAC,eAAe,CAAC;SACvE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,QAAgB;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAErC,MAAM,UAAU,GAAG;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;QAEF,kGAAkG;QAClG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QAEnD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;gBACtC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAqC,CAAC;gBAE5E,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC,IAAkC,EAAE,EAAE;oBACnF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAA0B,CAAC;oBAC1D,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACtB,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;4BAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;4BACf,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gCACd,IAAI,EAAE,KAAK,CAAC,IAAI;gCAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gCACxB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;6BACtB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAa;QAC/B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC;QACf,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACnC,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1F,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;IAClD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;CACF;AAED,2CAA2C;AAC3C,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,cAAc,EAAE,CAAC;AAEzD,uCAAuC;AACvC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;IACtB,IAAI,oBAAoB,CAAC,YAAY,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,oBAAoB,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Parallel Processing System for tywrap
3
+ * High-performance parallel processing for large Python codebases
4
+ */
5
+ import { EventEmitter } from 'events';
6
+ import type { AnalysisResult, PythonModule, GeneratedCode } from '../types/index.js';
7
+ export interface ParallelTask<Data = unknown> {
8
+ id: string;
9
+ type: 'analyze' | 'generate' | 'validate' | 'custom';
10
+ data: Data;
11
+ options?: Record<string, unknown>;
12
+ priority?: number;
13
+ timeout?: number;
14
+ }
15
+ export interface ParallelResult<T = unknown> {
16
+ taskId: string;
17
+ success: boolean;
18
+ result?: T;
19
+ error?: string;
20
+ duration: number;
21
+ memoryUsage?: number;
22
+ }
23
+ export interface WorkerStats {
24
+ workerId: string;
25
+ tasksCompleted: number;
26
+ totalTime: number;
27
+ averageTime: number;
28
+ errorCount: number;
29
+ memoryPeak: number;
30
+ isActive: boolean;
31
+ }
32
+ export interface ParallelProcessorOptions {
33
+ maxWorkers?: number;
34
+ taskTimeout?: number;
35
+ retryAttempts?: number;
36
+ enableMemoryMonitoring?: boolean;
37
+ enableCaching?: boolean;
38
+ workerScript?: string;
39
+ batchSize?: number;
40
+ loadBalancing?: 'round-robin' | 'least-loaded' | 'weighted';
41
+ debug?: boolean;
42
+ }
43
+ export interface ParallelProcessorStats {
44
+ activeWorkers: number;
45
+ totalWorkers: number;
46
+ tasksCompleted: number;
47
+ totalErrors: number;
48
+ averageTaskTime: number;
49
+ queueLength: number;
50
+ activeTasks: number;
51
+ workerStats: WorkerStats[];
52
+ }
53
+ export declare class ParallelProcessor extends EventEmitter {
54
+ private workers;
55
+ private workerStats;
56
+ private taskQueue;
57
+ private activeTasks;
58
+ private pendingResults;
59
+ private roundRobinIndex;
60
+ private options;
61
+ private disposed;
62
+ private debug;
63
+ constructor(options?: ParallelProcessorOptions);
64
+ private debugLog;
65
+ /**
66
+ * Initialize worker pool
67
+ */
68
+ init(): Promise<void>;
69
+ /**
70
+ * Process Python module analysis in parallel
71
+ */
72
+ analyzeModulesParallel(sources: Array<{
73
+ name: string;
74
+ content: string;
75
+ path?: string;
76
+ }>, options?: {
77
+ chunkSize?: number;
78
+ }): Promise<Array<ParallelResult<AnalysisResult>>>;
79
+ /**
80
+ * Generate TypeScript wrappers in parallel
81
+ */
82
+ generateWrappersParallel(modules: Array<{
83
+ name: string;
84
+ module: PythonModule;
85
+ options?: Record<string, unknown>;
86
+ }>, options?: {
87
+ chunkSize?: number;
88
+ }): Promise<Array<ParallelResult<GeneratedCode>>>;
89
+ /**
90
+ * Execute tasks in parallel with load balancing
91
+ */
92
+ executeTasks<Data, Result>(tasks: ParallelTask<Data>[]): Promise<Array<ParallelResult<Result>>>;
93
+ /**
94
+ * Execute single task
95
+ */
96
+ private executeTask;
97
+ /**
98
+ * Select optimal worker using load balancing strategy
99
+ */
100
+ private selectOptimalWorker;
101
+ /**
102
+ * Send task to specific worker
103
+ */
104
+ private sendTaskToWorker;
105
+ /**
106
+ * Spawn new worker
107
+ */
108
+ private spawnWorker;
109
+ /**
110
+ * Handle message from worker
111
+ */
112
+ private handleWorkerMessage;
113
+ /**
114
+ * Handle worker error
115
+ */
116
+ private handleWorkerError;
117
+ /**
118
+ * Handle worker exit
119
+ */
120
+ private handleWorkerExit;
121
+ /**
122
+ * Process task queue
123
+ */
124
+ private processQueue;
125
+ /**
126
+ * Get worker statistics
127
+ */
128
+ getWorkerStats(): WorkerStats[];
129
+ /**
130
+ * Get overall processing statistics
131
+ */
132
+ getStats(): ParallelProcessorStats;
133
+ /**
134
+ * Utility methods
135
+ */
136
+ private chunkArray;
137
+ private getWorkerId;
138
+ private sleep;
139
+ /**
140
+ * Gracefully dispose all workers
141
+ */
142
+ dispose(): Promise<void>;
143
+ setDebug(debug: boolean): void;
144
+ }
145
+ export declare const globalParallelProcessor: ParallelProcessor;
146
+ //# sourceMappingURL=parallel-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-processor.d.ts","sourceRoot":"","sources":["../../src/utils/parallel-processor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AASrF,MAAM,WAAW,YAAY,CAAC,IAAI,GAAG,OAAO;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrD,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,GAAG,cAAc,GAAG,UAAU,CAAC;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,EAAE,CAAC;CAC5B;AAwDD,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,cAAc,CAOlB;IACJ,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;gBAEV,OAAO,GAAE,wBAA6B;IAuBlD,OAAO,CAAC,QAAQ;IAOhB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B;;OAEG;IACG,sBAAsB,CAC1B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAChE,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACnC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;IAgCjD;;OAEG;IACG,wBAAwB,CAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,EACzF,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACnC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IA6BhD;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAC7B,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,GAC1B,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAsCzC;;OAEG;YACW,WAAW;IAsDzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwD3B;;OAEG;YACW,gBAAgB;IA0B9B;;OAEG;YACW,WAAW;IA2CzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4C3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,cAAc,IAAI,WAAW,EAAE;IAI/B;;OAEG;IACH,QAAQ,IAAI,sBAAsB;IAmBlC;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,KAAK;IAIb;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC9B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;CAG/B;AA4KD,eAAO,MAAM,uBAAuB,mBAA0B,CAAC"}