@danielsimonjr/memoryjs 1.0.0 → 1.2.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 (300) hide show
  1. package/README.md +385 -113
  2. package/README.md.backup-1768084780988 +266 -0
  3. package/dist/index.cjs +24156 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +16967 -0
  6. package/dist/index.d.ts +16963 -11
  7. package/dist/index.js +23887 -19
  8. package/dist/index.js.map +1 -1
  9. package/dist/workers/levenshteinWorker.cjs +102 -0
  10. package/dist/workers/levenshteinWorker.cjs.map +1 -0
  11. package/dist/workers/levenshteinWorker.js +57 -91
  12. package/dist/workers/levenshteinWorker.js.map +1 -1
  13. package/package.json +75 -69
  14. package/dist/core/EntityManager.d.ts +0 -268
  15. package/dist/core/EntityManager.d.ts.map +0 -1
  16. package/dist/core/EntityManager.js +0 -512
  17. package/dist/core/EntityManager.js.map +0 -1
  18. package/dist/core/GraphEventEmitter.d.ts +0 -202
  19. package/dist/core/GraphEventEmitter.d.ts.map +0 -1
  20. package/dist/core/GraphEventEmitter.js +0 -347
  21. package/dist/core/GraphEventEmitter.js.map +0 -1
  22. package/dist/core/GraphStorage.d.ts +0 -395
  23. package/dist/core/GraphStorage.d.ts.map +0 -1
  24. package/dist/core/GraphStorage.js +0 -786
  25. package/dist/core/GraphStorage.js.map +0 -1
  26. package/dist/core/GraphTraversal.d.ts +0 -141
  27. package/dist/core/GraphTraversal.d.ts.map +0 -1
  28. package/dist/core/GraphTraversal.js +0 -574
  29. package/dist/core/GraphTraversal.js.map +0 -1
  30. package/dist/core/HierarchyManager.d.ts +0 -111
  31. package/dist/core/HierarchyManager.d.ts.map +0 -1
  32. package/dist/core/HierarchyManager.js +0 -225
  33. package/dist/core/HierarchyManager.js.map +0 -1
  34. package/dist/core/ManagerContext.d.ts +0 -76
  35. package/dist/core/ManagerContext.d.ts.map +0 -1
  36. package/dist/core/ManagerContext.js +0 -129
  37. package/dist/core/ManagerContext.js.map +0 -1
  38. package/dist/core/ObservationManager.d.ts +0 -85
  39. package/dist/core/ObservationManager.d.ts.map +0 -1
  40. package/dist/core/ObservationManager.js +0 -124
  41. package/dist/core/ObservationManager.js.map +0 -1
  42. package/dist/core/RelationManager.d.ts +0 -131
  43. package/dist/core/RelationManager.d.ts.map +0 -1
  44. package/dist/core/RelationManager.js +0 -212
  45. package/dist/core/RelationManager.js.map +0 -1
  46. package/dist/core/SQLiteStorage.d.ts +0 -354
  47. package/dist/core/SQLiteStorage.d.ts.map +0 -1
  48. package/dist/core/SQLiteStorage.js +0 -919
  49. package/dist/core/SQLiteStorage.js.map +0 -1
  50. package/dist/core/StorageFactory.d.ts +0 -45
  51. package/dist/core/StorageFactory.d.ts.map +0 -1
  52. package/dist/core/StorageFactory.js +0 -65
  53. package/dist/core/StorageFactory.js.map +0 -1
  54. package/dist/core/TransactionManager.d.ts +0 -464
  55. package/dist/core/TransactionManager.d.ts.map +0 -1
  56. package/dist/core/TransactionManager.js +0 -869
  57. package/dist/core/TransactionManager.js.map +0 -1
  58. package/dist/core/index.d.ts +0 -17
  59. package/dist/core/index.d.ts.map +0 -1
  60. package/dist/core/index.js +0 -20
  61. package/dist/core/index.js.map +0 -1
  62. package/dist/features/AnalyticsManager.d.ts +0 -44
  63. package/dist/features/AnalyticsManager.d.ts.map +0 -1
  64. package/dist/features/AnalyticsManager.js +0 -224
  65. package/dist/features/AnalyticsManager.js.map +0 -1
  66. package/dist/features/ArchiveManager.d.ts +0 -133
  67. package/dist/features/ArchiveManager.d.ts.map +0 -1
  68. package/dist/features/ArchiveManager.js +0 -282
  69. package/dist/features/ArchiveManager.js.map +0 -1
  70. package/dist/features/CompressionManager.d.ts +0 -119
  71. package/dist/features/CompressionManager.d.ts.map +0 -1
  72. package/dist/features/CompressionManager.js +0 -470
  73. package/dist/features/CompressionManager.js.map +0 -1
  74. package/dist/features/IOManager.d.ts +0 -225
  75. package/dist/features/IOManager.d.ts.map +0 -1
  76. package/dist/features/IOManager.js +0 -1093
  77. package/dist/features/IOManager.js.map +0 -1
  78. package/dist/features/KeywordExtractor.d.ts +0 -61
  79. package/dist/features/KeywordExtractor.d.ts.map +0 -1
  80. package/dist/features/KeywordExtractor.js +0 -127
  81. package/dist/features/KeywordExtractor.js.map +0 -1
  82. package/dist/features/ObservationNormalizer.d.ts +0 -90
  83. package/dist/features/ObservationNormalizer.d.ts.map +0 -1
  84. package/dist/features/ObservationNormalizer.js +0 -194
  85. package/dist/features/ObservationNormalizer.js.map +0 -1
  86. package/dist/features/StreamingExporter.d.ts +0 -128
  87. package/dist/features/StreamingExporter.d.ts.map +0 -1
  88. package/dist/features/StreamingExporter.js +0 -212
  89. package/dist/features/StreamingExporter.js.map +0 -1
  90. package/dist/features/TagManager.d.ts +0 -147
  91. package/dist/features/TagManager.d.ts.map +0 -1
  92. package/dist/features/TagManager.js +0 -211
  93. package/dist/features/TagManager.js.map +0 -1
  94. package/dist/features/index.d.ts +0 -14
  95. package/dist/features/index.d.ts.map +0 -1
  96. package/dist/features/index.js +0 -15
  97. package/dist/features/index.js.map +0 -1
  98. package/dist/index.d.ts.map +0 -1
  99. package/dist/search/BM25Search.d.ts +0 -148
  100. package/dist/search/BM25Search.d.ts.map +0 -1
  101. package/dist/search/BM25Search.js +0 -340
  102. package/dist/search/BM25Search.js.map +0 -1
  103. package/dist/search/BasicSearch.d.ts +0 -51
  104. package/dist/search/BasicSearch.d.ts.map +0 -1
  105. package/dist/search/BasicSearch.js +0 -138
  106. package/dist/search/BasicSearch.js.map +0 -1
  107. package/dist/search/BooleanSearch.d.ts +0 -98
  108. package/dist/search/BooleanSearch.d.ts.map +0 -1
  109. package/dist/search/BooleanSearch.js +0 -431
  110. package/dist/search/BooleanSearch.js.map +0 -1
  111. package/dist/search/EarlyTerminationManager.d.ts +0 -140
  112. package/dist/search/EarlyTerminationManager.d.ts.map +0 -1
  113. package/dist/search/EarlyTerminationManager.js +0 -280
  114. package/dist/search/EarlyTerminationManager.js.map +0 -1
  115. package/dist/search/EmbeddingCache.d.ts +0 -175
  116. package/dist/search/EmbeddingCache.d.ts.map +0 -1
  117. package/dist/search/EmbeddingCache.js +0 -247
  118. package/dist/search/EmbeddingCache.js.map +0 -1
  119. package/dist/search/EmbeddingService.d.ts +0 -277
  120. package/dist/search/EmbeddingService.d.ts.map +0 -1
  121. package/dist/search/EmbeddingService.js +0 -531
  122. package/dist/search/EmbeddingService.js.map +0 -1
  123. package/dist/search/FuzzySearch.d.ts +0 -118
  124. package/dist/search/FuzzySearch.d.ts.map +0 -1
  125. package/dist/search/FuzzySearch.js +0 -313
  126. package/dist/search/FuzzySearch.js.map +0 -1
  127. package/dist/search/HybridScorer.d.ts +0 -181
  128. package/dist/search/HybridScorer.d.ts.map +0 -1
  129. package/dist/search/HybridScorer.js +0 -258
  130. package/dist/search/HybridScorer.js.map +0 -1
  131. package/dist/search/HybridSearchManager.d.ts +0 -80
  132. package/dist/search/HybridSearchManager.d.ts.map +0 -1
  133. package/dist/search/HybridSearchManager.js +0 -188
  134. package/dist/search/HybridSearchManager.js.map +0 -1
  135. package/dist/search/IncrementalIndexer.d.ts +0 -201
  136. package/dist/search/IncrementalIndexer.d.ts.map +0 -1
  137. package/dist/search/IncrementalIndexer.js +0 -343
  138. package/dist/search/IncrementalIndexer.js.map +0 -1
  139. package/dist/search/OptimizedInvertedIndex.d.ts +0 -163
  140. package/dist/search/OptimizedInvertedIndex.d.ts.map +0 -1
  141. package/dist/search/OptimizedInvertedIndex.js +0 -359
  142. package/dist/search/OptimizedInvertedIndex.js.map +0 -1
  143. package/dist/search/ParallelSearchExecutor.d.ts +0 -172
  144. package/dist/search/ParallelSearchExecutor.d.ts.map +0 -1
  145. package/dist/search/ParallelSearchExecutor.js +0 -310
  146. package/dist/search/ParallelSearchExecutor.js.map +0 -1
  147. package/dist/search/QuantizedVectorStore.d.ts +0 -171
  148. package/dist/search/QuantizedVectorStore.d.ts.map +0 -1
  149. package/dist/search/QuantizedVectorStore.js +0 -308
  150. package/dist/search/QuantizedVectorStore.js.map +0 -1
  151. package/dist/search/QueryAnalyzer.d.ts +0 -76
  152. package/dist/search/QueryAnalyzer.d.ts.map +0 -1
  153. package/dist/search/QueryAnalyzer.js +0 -228
  154. package/dist/search/QueryAnalyzer.js.map +0 -1
  155. package/dist/search/QueryCostEstimator.d.ts +0 -244
  156. package/dist/search/QueryCostEstimator.d.ts.map +0 -1
  157. package/dist/search/QueryCostEstimator.js +0 -653
  158. package/dist/search/QueryCostEstimator.js.map +0 -1
  159. package/dist/search/QueryPlanCache.d.ts +0 -220
  160. package/dist/search/QueryPlanCache.d.ts.map +0 -1
  161. package/dist/search/QueryPlanCache.js +0 -380
  162. package/dist/search/QueryPlanCache.js.map +0 -1
  163. package/dist/search/QueryPlanner.d.ts +0 -58
  164. package/dist/search/QueryPlanner.d.ts.map +0 -1
  165. package/dist/search/QueryPlanner.js +0 -138
  166. package/dist/search/QueryPlanner.js.map +0 -1
  167. package/dist/search/RankedSearch.d.ts +0 -71
  168. package/dist/search/RankedSearch.d.ts.map +0 -1
  169. package/dist/search/RankedSearch.js +0 -239
  170. package/dist/search/RankedSearch.js.map +0 -1
  171. package/dist/search/ReflectionManager.d.ts +0 -120
  172. package/dist/search/ReflectionManager.d.ts.map +0 -1
  173. package/dist/search/ReflectionManager.js +0 -232
  174. package/dist/search/ReflectionManager.js.map +0 -1
  175. package/dist/search/SavedSearchManager.d.ts +0 -79
  176. package/dist/search/SavedSearchManager.d.ts.map +0 -1
  177. package/dist/search/SavedSearchManager.js +0 -147
  178. package/dist/search/SavedSearchManager.js.map +0 -1
  179. package/dist/search/SearchFilterChain.d.ts +0 -120
  180. package/dist/search/SearchFilterChain.d.ts.map +0 -1
  181. package/dist/search/SearchFilterChain.js +0 -186
  182. package/dist/search/SearchFilterChain.js.map +0 -1
  183. package/dist/search/SearchManager.d.ts +0 -326
  184. package/dist/search/SearchManager.d.ts.map +0 -1
  185. package/dist/search/SearchManager.js +0 -454
  186. package/dist/search/SearchManager.js.map +0 -1
  187. package/dist/search/SearchSuggestions.d.ts +0 -27
  188. package/dist/search/SearchSuggestions.d.ts.map +0 -1
  189. package/dist/search/SearchSuggestions.js +0 -58
  190. package/dist/search/SearchSuggestions.js.map +0 -1
  191. package/dist/search/SemanticSearch.d.ts +0 -149
  192. package/dist/search/SemanticSearch.d.ts.map +0 -1
  193. package/dist/search/SemanticSearch.js +0 -324
  194. package/dist/search/SemanticSearch.js.map +0 -1
  195. package/dist/search/SymbolicSearch.d.ts +0 -61
  196. package/dist/search/SymbolicSearch.d.ts.map +0 -1
  197. package/dist/search/SymbolicSearch.js +0 -164
  198. package/dist/search/SymbolicSearch.js.map +0 -1
  199. package/dist/search/TFIDFEventSync.d.ts +0 -85
  200. package/dist/search/TFIDFEventSync.d.ts.map +0 -1
  201. package/dist/search/TFIDFEventSync.js +0 -134
  202. package/dist/search/TFIDFEventSync.js.map +0 -1
  203. package/dist/search/TFIDFIndexManager.d.ts +0 -151
  204. package/dist/search/TFIDFIndexManager.d.ts.map +0 -1
  205. package/dist/search/TFIDFIndexManager.js +0 -433
  206. package/dist/search/TFIDFIndexManager.js.map +0 -1
  207. package/dist/search/VectorStore.d.ts +0 -235
  208. package/dist/search/VectorStore.d.ts.map +0 -1
  209. package/dist/search/VectorStore.js +0 -312
  210. package/dist/search/VectorStore.js.map +0 -1
  211. package/dist/search/index.d.ts +0 -35
  212. package/dist/search/index.d.ts.map +0 -1
  213. package/dist/search/index.js +0 -53
  214. package/dist/search/index.js.map +0 -1
  215. package/dist/types/index.d.ts +0 -13
  216. package/dist/types/index.d.ts.map +0 -1
  217. package/dist/types/index.js +0 -13
  218. package/dist/types/index.js.map +0 -1
  219. package/dist/types/types.d.ts +0 -1811
  220. package/dist/types/types.d.ts.map +0 -1
  221. package/dist/types/types.js +0 -10
  222. package/dist/types/types.js.map +0 -1
  223. package/dist/utils/BatchProcessor.d.ts +0 -271
  224. package/dist/utils/BatchProcessor.d.ts.map +0 -1
  225. package/dist/utils/BatchProcessor.js +0 -377
  226. package/dist/utils/BatchProcessor.js.map +0 -1
  227. package/dist/utils/MemoryMonitor.d.ts +0 -176
  228. package/dist/utils/MemoryMonitor.d.ts.map +0 -1
  229. package/dist/utils/MemoryMonitor.js +0 -306
  230. package/dist/utils/MemoryMonitor.js.map +0 -1
  231. package/dist/utils/WorkerPoolManager.d.ts +0 -233
  232. package/dist/utils/WorkerPoolManager.d.ts.map +0 -1
  233. package/dist/utils/WorkerPoolManager.js +0 -421
  234. package/dist/utils/WorkerPoolManager.js.map +0 -1
  235. package/dist/utils/compressedCache.d.ts +0 -221
  236. package/dist/utils/compressedCache.d.ts.map +0 -1
  237. package/dist/utils/compressedCache.js +0 -349
  238. package/dist/utils/compressedCache.js.map +0 -1
  239. package/dist/utils/compressionUtil.d.ts +0 -214
  240. package/dist/utils/compressionUtil.d.ts.map +0 -1
  241. package/dist/utils/compressionUtil.js +0 -248
  242. package/dist/utils/compressionUtil.js.map +0 -1
  243. package/dist/utils/constants.d.ts +0 -245
  244. package/dist/utils/constants.d.ts.map +0 -1
  245. package/dist/utils/constants.js +0 -253
  246. package/dist/utils/constants.js.map +0 -1
  247. package/dist/utils/entityUtils.d.ts +0 -379
  248. package/dist/utils/entityUtils.d.ts.map +0 -1
  249. package/dist/utils/entityUtils.js +0 -649
  250. package/dist/utils/entityUtils.js.map +0 -1
  251. package/dist/utils/errors.d.ts +0 -95
  252. package/dist/utils/errors.d.ts.map +0 -1
  253. package/dist/utils/errors.js +0 -146
  254. package/dist/utils/errors.js.map +0 -1
  255. package/dist/utils/formatters.d.ts +0 -145
  256. package/dist/utils/formatters.d.ts.map +0 -1
  257. package/dist/utils/formatters.js +0 -133
  258. package/dist/utils/formatters.js.map +0 -1
  259. package/dist/utils/index.d.ts +0 -26
  260. package/dist/utils/index.d.ts.map +0 -1
  261. package/dist/utils/index.js +0 -88
  262. package/dist/utils/index.js.map +0 -1
  263. package/dist/utils/indexes.d.ts +0 -270
  264. package/dist/utils/indexes.d.ts.map +0 -1
  265. package/dist/utils/indexes.js +0 -527
  266. package/dist/utils/indexes.js.map +0 -1
  267. package/dist/utils/logger.d.ts +0 -31
  268. package/dist/utils/logger.d.ts.map +0 -1
  269. package/dist/utils/logger.js +0 -41
  270. package/dist/utils/logger.js.map +0 -1
  271. package/dist/utils/operationUtils.d.ts +0 -124
  272. package/dist/utils/operationUtils.d.ts.map +0 -1
  273. package/dist/utils/operationUtils.js +0 -176
  274. package/dist/utils/operationUtils.js.map +0 -1
  275. package/dist/utils/parallelUtils.d.ts +0 -76
  276. package/dist/utils/parallelUtils.d.ts.map +0 -1
  277. package/dist/utils/parallelUtils.js +0 -192
  278. package/dist/utils/parallelUtils.js.map +0 -1
  279. package/dist/utils/schemas.d.ts +0 -556
  280. package/dist/utils/schemas.d.ts.map +0 -1
  281. package/dist/utils/schemas.js +0 -485
  282. package/dist/utils/schemas.js.map +0 -1
  283. package/dist/utils/searchAlgorithms.d.ts +0 -99
  284. package/dist/utils/searchAlgorithms.d.ts.map +0 -1
  285. package/dist/utils/searchAlgorithms.js +0 -168
  286. package/dist/utils/searchAlgorithms.js.map +0 -1
  287. package/dist/utils/searchCache.d.ts +0 -108
  288. package/dist/utils/searchCache.d.ts.map +0 -1
  289. package/dist/utils/searchCache.js +0 -210
  290. package/dist/utils/searchCache.js.map +0 -1
  291. package/dist/utils/taskScheduler.d.ts +0 -294
  292. package/dist/utils/taskScheduler.d.ts.map +0 -1
  293. package/dist/utils/taskScheduler.js +0 -487
  294. package/dist/utils/taskScheduler.js.map +0 -1
  295. package/dist/workers/index.d.ts +0 -12
  296. package/dist/workers/index.d.ts.map +0 -1
  297. package/dist/workers/index.js +0 -10
  298. package/dist/workers/index.js.map +0 -1
  299. package/dist/workers/levenshteinWorker.d.ts +0 -60
  300. package/dist/workers/levenshteinWorker.d.ts.map +0 -1
@@ -1,306 +0,0 @@
1
- /**
2
- * Memory Usage Monitor
3
- *
4
- * Phase 12 Sprint 6: Track memory usage across all components
5
- * with human-readable formatting.
6
- *
7
- * @module utils/MemoryMonitor
8
- */
9
- /**
10
- * Default memory thresholds.
11
- */
12
- const DEFAULT_THRESHOLDS = {
13
- warning: 100 * 1024 * 1024, // 100 MB
14
- critical: 500 * 1024 * 1024, // 500 MB
15
- };
16
- /**
17
- * Memory Monitor for tracking usage across components.
18
- *
19
- * @example
20
- * ```typescript
21
- * const monitor = new MemoryMonitor();
22
- *
23
- * // Register components
24
- * monitor.registerComponent('entities', () => entities.length * 500);
25
- * monitor.registerComponent('vectors', () => vectors.size * dimension * 4);
26
- *
27
- * // Get usage stats
28
- * const stats = monitor.getUsage();
29
- * console.log(`Total memory: ${stats.totalFormatted}`);
30
- *
31
- * // Check for alerts
32
- * const alerts = monitor.checkThresholds();
33
- * ```
34
- */
35
- export class MemoryMonitor {
36
- componentEstimators;
37
- itemCounters;
38
- thresholds;
39
- listeners;
40
- lastUsage = null;
41
- constructor(thresholds) {
42
- this.componentEstimators = new Map();
43
- this.itemCounters = new Map();
44
- this.thresholds = { ...DEFAULT_THRESHOLDS, ...thresholds };
45
- this.listeners = [];
46
- }
47
- /**
48
- * Register a component for memory tracking.
49
- *
50
- * @param name - Component name
51
- * @param estimator - Function that returns estimated bytes
52
- * @param itemCounter - Optional function that returns item count
53
- */
54
- registerComponent(name, estimator, itemCounter) {
55
- this.componentEstimators.set(name, estimator);
56
- if (itemCounter) {
57
- this.itemCounters.set(name, itemCounter);
58
- }
59
- }
60
- /**
61
- * Unregister a component.
62
- *
63
- * @param name - Component name
64
- */
65
- unregisterComponent(name) {
66
- this.componentEstimators.delete(name);
67
- this.itemCounters.delete(name);
68
- }
69
- /**
70
- * Get current memory usage statistics.
71
- */
72
- getUsage() {
73
- const components = [];
74
- let totalBytes = 0;
75
- for (const [name, estimator] of this.componentEstimators) {
76
- const bytes = estimator();
77
- totalBytes += bytes;
78
- const itemCounter = this.itemCounters.get(name);
79
- const itemCount = itemCounter ? itemCounter() : undefined;
80
- const bytesPerItem = itemCount && itemCount > 0 ? Math.round(bytes / itemCount) : undefined;
81
- components.push({
82
- name,
83
- bytes,
84
- itemCount,
85
- bytesPerItem,
86
- });
87
- }
88
- // Sort by usage descending
89
- components.sort((a, b) => b.bytes - a.bytes);
90
- // Get Node.js heap stats if available
91
- let heapStats;
92
- if (typeof process !== 'undefined' && process.memoryUsage) {
93
- const mem = process.memoryUsage();
94
- heapStats = {
95
- heapUsed: mem.heapUsed,
96
- heapTotal: mem.heapTotal,
97
- external: mem.external,
98
- rss: mem.rss,
99
- };
100
- }
101
- const stats = {
102
- totalBytes,
103
- totalFormatted: this.formatBytes(totalBytes),
104
- components,
105
- timestamp: new Date(),
106
- heapStats,
107
- };
108
- this.lastUsage = stats;
109
- this.notifyListeners(stats);
110
- return stats;
111
- }
112
- /**
113
- * Get memory usage for a specific component.
114
- *
115
- * @param name - Component name
116
- */
117
- getComponentUsage(name) {
118
- const estimator = this.componentEstimators.get(name);
119
- if (!estimator)
120
- return undefined;
121
- const bytes = estimator();
122
- const itemCounter = this.itemCounters.get(name);
123
- const itemCount = itemCounter ? itemCounter() : undefined;
124
- const bytesPerItem = itemCount && itemCount > 0 ? Math.round(bytes / itemCount) : undefined;
125
- return {
126
- name,
127
- bytes,
128
- itemCount,
129
- bytesPerItem,
130
- };
131
- }
132
- /**
133
- * Check memory thresholds and return alerts.
134
- */
135
- checkThresholds() {
136
- const alerts = [];
137
- const usage = this.getUsage();
138
- // Check total memory
139
- if (usage.totalBytes >= this.thresholds.critical) {
140
- alerts.push({
141
- level: 'critical',
142
- component: 'total',
143
- currentBytes: usage.totalBytes,
144
- threshold: this.thresholds.critical,
145
- message: `Total memory usage (${this.formatBytes(usage.totalBytes)}) exceeds critical threshold (${this.formatBytes(this.thresholds.critical)})`,
146
- });
147
- }
148
- else if (usage.totalBytes >= this.thresholds.warning) {
149
- alerts.push({
150
- level: 'warning',
151
- component: 'total',
152
- currentBytes: usage.totalBytes,
153
- threshold: this.thresholds.warning,
154
- message: `Total memory usage (${this.formatBytes(usage.totalBytes)}) exceeds warning threshold (${this.formatBytes(this.thresholds.warning)})`,
155
- });
156
- }
157
- // Check per-component thresholds (50% of total threshold per component)
158
- const componentWarning = this.thresholds.warning * 0.5;
159
- const componentCritical = this.thresholds.critical * 0.5;
160
- for (const component of usage.components) {
161
- if (component.bytes >= componentCritical) {
162
- alerts.push({
163
- level: 'critical',
164
- component: component.name,
165
- currentBytes: component.bytes,
166
- threshold: componentCritical,
167
- message: `Component '${component.name}' (${this.formatBytes(component.bytes)}) exceeds critical threshold`,
168
- });
169
- }
170
- else if (component.bytes >= componentWarning) {
171
- alerts.push({
172
- level: 'warning',
173
- component: component.name,
174
- currentBytes: component.bytes,
175
- threshold: componentWarning,
176
- message: `Component '${component.name}' (${this.formatBytes(component.bytes)}) exceeds warning threshold`,
177
- });
178
- }
179
- }
180
- return alerts;
181
- }
182
- /**
183
- * Set memory thresholds.
184
- *
185
- * @param thresholds - New threshold values
186
- */
187
- setThresholds(thresholds) {
188
- this.thresholds = { ...this.thresholds, ...thresholds };
189
- }
190
- /**
191
- * Get current thresholds.
192
- */
193
- getThresholds() {
194
- return { ...this.thresholds };
195
- }
196
- /**
197
- * Add a listener for memory changes.
198
- *
199
- * @param callback - Callback to invoke on memory changes
200
- */
201
- addListener(callback) {
202
- this.listeners.push(callback);
203
- }
204
- /**
205
- * Remove a listener.
206
- *
207
- * @param callback - Callback to remove
208
- */
209
- removeListener(callback) {
210
- const index = this.listeners.indexOf(callback);
211
- if (index !== -1) {
212
- this.listeners.splice(index, 1);
213
- }
214
- }
215
- /**
216
- * Get a human-readable summary of memory usage.
217
- */
218
- getSummary() {
219
- const usage = this.getUsage();
220
- const lines = [
221
- '=== Memory Usage Summary ===',
222
- `Total: ${usage.totalFormatted}`,
223
- '',
224
- 'By Component:',
225
- ];
226
- for (const component of usage.components) {
227
- const itemInfo = component.itemCount
228
- ? ` (${component.itemCount.toLocaleString()} items, ~${this.formatBytes(component.bytesPerItem ?? 0)}/item)`
229
- : '';
230
- lines.push(` ${component.name}: ${this.formatBytes(component.bytes)}${itemInfo}`);
231
- }
232
- if (usage.heapStats) {
233
- lines.push('');
234
- lines.push('Node.js Heap:');
235
- lines.push(` Heap Used: ${this.formatBytes(usage.heapStats.heapUsed)}`);
236
- lines.push(` Heap Total: ${this.formatBytes(usage.heapStats.heapTotal)}`);
237
- lines.push(` External: ${this.formatBytes(usage.heapStats.external)}`);
238
- lines.push(` RSS: ${this.formatBytes(usage.heapStats.rss)}`);
239
- }
240
- return lines.join('\n');
241
- }
242
- /**
243
- * Get the last recorded usage without triggering a new measurement.
244
- */
245
- getLastUsage() {
246
- return this.lastUsage;
247
- }
248
- /**
249
- * Format bytes as human-readable string.
250
- *
251
- * @param bytes - Number of bytes
252
- */
253
- formatBytes(bytes) {
254
- if (bytes === 0)
255
- return '0 B';
256
- const units = ['B', 'KB', 'MB', 'GB', 'TB'];
257
- const k = 1024;
258
- const i = Math.floor(Math.log(bytes) / Math.log(k));
259
- const value = bytes / Math.pow(k, i);
260
- return `${value.toFixed(i === 0 ? 0 : 2)} ${units[i]}`;
261
- }
262
- /**
263
- * Parse a formatted byte string back to number.
264
- *
265
- * @param formatted - Formatted string like "10 MB"
266
- */
267
- parseBytes(formatted) {
268
- const match = formatted.match(/^([\d.]+)\s*(B|KB|MB|GB|TB)$/i);
269
- if (!match)
270
- return 0;
271
- const value = parseFloat(match[1]);
272
- const unit = match[2].toUpperCase();
273
- const units = {
274
- 'B': 1,
275
- 'KB': 1024,
276
- 'MB': 1024 * 1024,
277
- 'GB': 1024 * 1024 * 1024,
278
- 'TB': 1024 * 1024 * 1024 * 1024,
279
- };
280
- return value * (units[unit] ?? 1);
281
- }
282
- /**
283
- * Clear all registered components.
284
- */
285
- clear() {
286
- this.componentEstimators.clear();
287
- this.itemCounters.clear();
288
- this.lastUsage = null;
289
- }
290
- // Private methods
291
- notifyListeners(usage) {
292
- for (const listener of this.listeners) {
293
- try {
294
- listener(usage);
295
- }
296
- catch {
297
- // Ignore listener errors
298
- }
299
- }
300
- }
301
- }
302
- /**
303
- * Singleton instance for global memory monitoring.
304
- */
305
- export const globalMemoryMonitor = new MemoryMonitor();
306
- //# sourceMappingURL=MemoryMonitor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MemoryMonitor.js","sourceRoot":"","sources":["../../src/utils/MemoryMonitor.ts"],"names":[],"mappings":"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"}
@@ -1,233 +0,0 @@
1
- /**
2
- * Worker Pool Manager
3
- *
4
- * Phase 12 Sprint 2: Unified worker pool management for all parallelizable operations.
5
- * Provides centralized lifecycle management, configuration, and statistics.
6
- *
7
- * @module utils/WorkerPoolManager
8
- */
9
- import type { Pool, PoolStats } from '@danielsimonjr/workerpool';
10
- /**
11
- * Configuration options for worker pools.
12
- */
13
- export interface WorkerPoolConfig {
14
- /** Maximum number of worker threads (default: CPU count - 1) */
15
- maxWorkers?: number;
16
- /** Worker type: 'thread' or 'process' (default: 'thread') */
17
- workerType?: 'thread' | 'process';
18
- /** Optional path to worker script file */
19
- workerPath?: string;
20
- /** Minimum array size to use parallel processing (default: 200) */
21
- minParallelSize?: number;
22
- /** Default task timeout in milliseconds (default: 30000) */
23
- defaultTimeout?: number;
24
- }
25
- /**
26
- * Extended pool statistics with additional metadata.
27
- */
28
- export interface ExtendedPoolStats extends PoolStats {
29
- /** Pool identifier */
30
- poolId: string;
31
- /** When the pool was created */
32
- createdAt: number;
33
- /** Total tasks executed since creation */
34
- totalTasksExecuted: number;
35
- /** Total execution time in milliseconds */
36
- totalExecutionTime: number;
37
- /** Average task execution time in milliseconds */
38
- averageExecutionTime: number;
39
- }
40
- /**
41
- * Callback for pool events.
42
- */
43
- export type PoolEventCallback = (poolId: string, event: 'created' | 'shutdown' | 'error', data?: unknown) => void;
44
- /**
45
- * WorkerPoolManager - Unified worker pool management
46
- *
47
- * Provides centralized management of worker pools for parallel processing.
48
- * Features:
49
- * - Named pool registration with automatic lifecycle management
50
- * - Pool cleanup on process exit
51
- * - Statistics tracking per pool
52
- * - Event callbacks for monitoring
53
- *
54
- * @example
55
- * ```typescript
56
- * const manager = WorkerPoolManager.getInstance();
57
- *
58
- * // Get or create a pool
59
- * const pool = manager.getPool('fuzzySearch', {
60
- * maxWorkers: 4,
61
- * workerPath: '/path/to/worker.js'
62
- * });
63
- *
64
- * // Execute task
65
- * const result = await pool.exec('searchEntities', [data]);
66
- *
67
- * // Get statistics
68
- * const stats = manager.getPoolStats('fuzzySearch');
69
- *
70
- * // Shutdown all pools on exit
71
- * await manager.shutdownAll();
72
- * ```
73
- */
74
- export declare class WorkerPoolManager {
75
- private static instance;
76
- private pools;
77
- private eventCallbacks;
78
- private isShuttingDown;
79
- private shutdownRegistered;
80
- /**
81
- * Private constructor for singleton pattern.
82
- */
83
- private constructor();
84
- /**
85
- * Get the singleton instance of WorkerPoolManager.
86
- *
87
- * @returns The WorkerPoolManager instance
88
- */
89
- static getInstance(): WorkerPoolManager;
90
- /**
91
- * Reset the singleton instance (primarily for testing).
92
- */
93
- static resetInstance(): void;
94
- /**
95
- * Register process exit handlers for cleanup.
96
- */
97
- private registerShutdownHandlers;
98
- /**
99
- * Get or create a named worker pool.
100
- *
101
- * If a pool with the given ID exists, returns the existing pool.
102
- * Otherwise, creates a new pool with the provided configuration.
103
- *
104
- * @param poolId - Unique identifier for the pool
105
- * @param config - Pool configuration options
106
- * @returns The worker pool instance
107
- */
108
- getPool(poolId: string, config?: WorkerPoolConfig): Pool;
109
- /**
110
- * Create a new worker pool with the given ID.
111
- *
112
- * @param poolId - Unique identifier for the pool
113
- * @param config - Pool configuration options
114
- * @returns The newly created worker pool
115
- * @throws Error if a pool with the same ID already exists
116
- */
117
- createPool(poolId: string, config?: WorkerPoolConfig): Pool;
118
- /**
119
- * Check if a pool with the given ID exists.
120
- *
121
- * @param poolId - Pool identifier to check
122
- * @returns True if pool exists
123
- */
124
- hasPool(poolId: string): boolean;
125
- /**
126
- * Get the configuration for a pool.
127
- *
128
- * @param poolId - Pool identifier
129
- * @returns Pool configuration or undefined if not found
130
- */
131
- getPoolConfig(poolId: string): WorkerPoolConfig | undefined;
132
- /**
133
- * Get extended statistics for a pool.
134
- *
135
- * @param poolId - Pool identifier
136
- * @returns Extended pool statistics or undefined if not found
137
- */
138
- getPoolStats(poolId: string): ExtendedPoolStats | undefined;
139
- /**
140
- * Get statistics for all pools.
141
- *
142
- * @returns Map of pool IDs to their statistics
143
- */
144
- getAllPoolStats(): Map<string, ExtendedPoolStats>;
145
- /**
146
- * Record task execution for statistics tracking.
147
- *
148
- * @param poolId - Pool identifier
149
- * @param executionTimeMs - Task execution time in milliseconds
150
- */
151
- recordTaskExecution(poolId: string, executionTimeMs: number): void;
152
- /**
153
- * Execute a task on a pool with automatic statistics tracking.
154
- *
155
- * @template T - Result type
156
- * @param poolId - Pool identifier
157
- * @param method - Method name to execute (for worker script pools) or inline function
158
- * @param args - Arguments to pass to the method/function
159
- * @param timeout - Optional timeout in milliseconds
160
- * @returns Promise resolving to the task result
161
- */
162
- executeTask<T>(poolId: string, method: string | ((...args: unknown[]) => T), args?: unknown[], timeout?: number): Promise<T>;
163
- /**
164
- * Shutdown a specific pool.
165
- *
166
- * @param poolId - Pool identifier
167
- * @param force - If true, forcefully terminate workers (default: false)
168
- * @returns Promise resolving when shutdown is complete
169
- */
170
- shutdownPool(poolId: string, force?: boolean): Promise<void>;
171
- /**
172
- * Shutdown all pools asynchronously.
173
- *
174
- * @param force - If true, forcefully terminate workers (default: false)
175
- * @returns Promise resolving when all pools are shut down
176
- */
177
- shutdownAll(force?: boolean): Promise<void>;
178
- /**
179
- * Synchronous shutdown for process exit handlers.
180
- * Forces immediate termination of all pools.
181
- */
182
- private shutdownAllSync;
183
- /**
184
- * Register an event callback for pool events.
185
- *
186
- * @param callback - Callback function to invoke on events
187
- * @returns Unsubscribe function
188
- */
189
- onEvent(callback: PoolEventCallback): () => void;
190
- /**
191
- * Emit an event to all registered callbacks.
192
- */
193
- private emitEvent;
194
- /**
195
- * Get the number of active pools.
196
- *
197
- * @returns Number of pools currently managed
198
- */
199
- get poolCount(): number;
200
- /**
201
- * Get all pool IDs.
202
- *
203
- * @returns Array of pool identifiers
204
- */
205
- getPoolIds(): string[];
206
- /**
207
- * Check if the minimum parallel size threshold is met.
208
- *
209
- * @param poolId - Pool identifier
210
- * @param size - Size of the data to process
211
- * @returns True if size meets or exceeds minimum threshold
212
- */
213
- shouldUseParallel(poolId: string, size: number): boolean;
214
- /**
215
- * Get the default configuration values.
216
- *
217
- * @returns Copy of default configuration
218
- */
219
- static getDefaultConfig(): Required<WorkerPoolConfig>;
220
- /**
221
- * Get the CPU count available for workers.
222
- *
223
- * @returns Number of CPUs
224
- */
225
- static getCpuCount(): number;
226
- }
227
- /**
228
- * Convenience function to get the WorkerPoolManager instance.
229
- *
230
- * @returns The WorkerPoolManager singleton
231
- */
232
- export declare function getWorkerPoolManager(): WorkerPoolManager;
233
- //# sourceMappingURL=WorkerPoolManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WorkerPoolManager.d.ts","sourceRoot":"","sources":["../../src/utils/WorkerPoolManager.ts"],"names":[],"mappings":"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"}