@danielsimonjr/memoryjs 1.0.0 → 1.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 (300) hide show
  1. package/README.md +385 -113
  2. package/README.md.backup-1768084780988 +266 -0
  3. package/dist/index.cjs +17364 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +12371 -0
  6. package/dist/index.d.ts +12367 -11
  7. package/dist/index.js +17102 -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 +12 -6
  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,377 +0,0 @@
1
- /**
2
- * Batch Processor
3
- *
4
- * Phase 12 Sprint 2: Generic batch processing utility with parallel execution,
5
- * retry logic, progress callbacks, and error collection.
6
- *
7
- * @module utils/BatchProcessor
8
- */
9
- /**
10
- * Default options for batch processing.
11
- */
12
- const DEFAULT_OPTIONS = {
13
- concurrency: 4,
14
- batchSize: 4,
15
- maxRetries: 0,
16
- retryDelayMs: 1000,
17
- retryBackoffMultiplier: 2,
18
- maxRetryDelayMs: 30000,
19
- continueOnError: true,
20
- itemTimeoutMs: 0,
21
- };
22
- /**
23
- * BatchProcessor - Generic batch processing with parallel execution
24
- *
25
- * Provides a flexible utility for processing arrays of items with:
26
- * - Configurable concurrency
27
- * - Automatic retry with exponential backoff
28
- * - Progress callbacks for monitoring
29
- * - Error collection without failing the entire batch
30
- * - Cancellation support via AbortSignal
31
- *
32
- * @example
33
- * ```typescript
34
- * const processor = new BatchProcessor<string, number>({
35
- * concurrency: 4,
36
- * maxRetries: 3,
37
- * onProgress: (p) => console.log(`${p.percentage.toFixed(1)}% complete`),
38
- * });
39
- *
40
- * const result = await processor.process(
41
- * ['item1', 'item2', 'item3'],
42
- * async (item) => {
43
- * const response = await fetchData(item);
44
- * return response.value;
45
- * }
46
- * );
47
- *
48
- * console.log(`Succeeded: ${result.succeeded}, Failed: ${result.failed}`);
49
- * ```
50
- */
51
- export class BatchProcessor {
52
- options;
53
- constructor(options = {}) {
54
- this.options = {
55
- ...DEFAULT_OPTIONS,
56
- ...options,
57
- batchSize: options.batchSize ?? options.concurrency ?? DEFAULT_OPTIONS.concurrency,
58
- };
59
- }
60
- /**
61
- * Process all items in batches with the specified processor function.
62
- *
63
- * @param items - Array of items to process
64
- * @param processor - Async function to process each item
65
- * @returns Batch processing result with all item results and statistics
66
- */
67
- async process(items, processor) {
68
- const startTime = Date.now();
69
- const results = new Array(items.length);
70
- const errors = new Map();
71
- let succeeded = 0;
72
- let failed = 0;
73
- const totalBatches = Math.ceil(items.length / this.options.batchSize);
74
- // Process items in batches
75
- for (let batchIndex = 0; batchIndex < items.length; batchIndex += this.options.batchSize) {
76
- // Check for cancellation
77
- if (this.options.signal?.aborted) {
78
- throw new Error('Batch processing cancelled');
79
- }
80
- const batchItems = items.slice(batchIndex, batchIndex + this.options.batchSize);
81
- const batchStartIndex = batchIndex;
82
- const currentBatchIndex = Math.floor(batchIndex / this.options.batchSize);
83
- // Process batch concurrently
84
- const batchPromises = batchItems.map((item, localIndex) => this.processItem(item, batchStartIndex + localIndex, processor));
85
- const batchResults = await Promise.all(batchPromises);
86
- // Collect results
87
- for (let i = 0; i < batchResults.length; i++) {
88
- const itemResult = batchResults[i];
89
- const globalIndex = batchStartIndex + i;
90
- results[globalIndex] = itemResult;
91
- if (itemResult.success) {
92
- succeeded++;
93
- }
94
- else {
95
- failed++;
96
- if (itemResult.error) {
97
- errors.set(globalIndex, itemResult.error);
98
- }
99
- // Stop if continueOnError is false
100
- if (!this.options.continueOnError) {
101
- return {
102
- results,
103
- succeeded,
104
- failed,
105
- totalTimeMs: Date.now() - startTime,
106
- allSucceeded: false,
107
- errors,
108
- };
109
- }
110
- }
111
- }
112
- // Report progress
113
- if (this.options.onProgress) {
114
- const completed = Math.min(batchIndex + batchItems.length, items.length);
115
- this.options.onProgress({
116
- completed,
117
- total: items.length,
118
- percentage: (completed / items.length) * 100,
119
- succeeded,
120
- failed,
121
- batchIndex: currentBatchIndex,
122
- totalBatches,
123
- });
124
- }
125
- }
126
- return {
127
- results,
128
- succeeded,
129
- failed,
130
- totalTimeMs: Date.now() - startTime,
131
- allSucceeded: failed === 0,
132
- errors,
133
- };
134
- }
135
- /**
136
- * Process a single item with retry logic.
137
- */
138
- async processItem(item, index, processor) {
139
- const startTime = Date.now();
140
- let lastError;
141
- let attempts = 0;
142
- for (let attempt = 0; attempt <= this.options.maxRetries; attempt++) {
143
- attempts = attempt + 1;
144
- // Check for cancellation before each attempt
145
- if (this.options.signal?.aborted) {
146
- return {
147
- index,
148
- success: false,
149
- error: new Error('Processing cancelled'),
150
- attempts,
151
- durationMs: Date.now() - startTime,
152
- };
153
- }
154
- try {
155
- let result;
156
- if (this.options.itemTimeoutMs > 0) {
157
- // Process with timeout
158
- result = await Promise.race([
159
- processor(item, index),
160
- this.createTimeout(this.options.itemTimeoutMs),
161
- ]);
162
- }
163
- else {
164
- result = await processor(item, index);
165
- }
166
- return {
167
- index,
168
- success: true,
169
- result,
170
- attempts,
171
- durationMs: Date.now() - startTime,
172
- };
173
- }
174
- catch (error) {
175
- lastError = error instanceof Error ? error : new Error(String(error));
176
- // Don't retry on last attempt
177
- if (attempt < this.options.maxRetries) {
178
- const delay = this.calculateRetryDelay(attempt);
179
- await this.sleep(delay);
180
- }
181
- }
182
- }
183
- return {
184
- index,
185
- success: false,
186
- error: lastError,
187
- attempts,
188
- durationMs: Date.now() - startTime,
189
- };
190
- }
191
- /**
192
- * Calculate delay for retry with exponential backoff.
193
- */
194
- calculateRetryDelay(attempt) {
195
- const delay = this.options.retryDelayMs * Math.pow(this.options.retryBackoffMultiplier, attempt);
196
- return Math.min(delay, this.options.maxRetryDelayMs);
197
- }
198
- /**
199
- * Create a timeout promise.
200
- */
201
- createTimeout(ms) {
202
- return new Promise((_, reject) => {
203
- setTimeout(() => reject(new Error('Item processing timeout')), ms);
204
- });
205
- }
206
- /**
207
- * Sleep for the specified duration.
208
- */
209
- sleep(ms) {
210
- return new Promise(resolve => setTimeout(resolve, ms));
211
- }
212
- /**
213
- * Get the configured options.
214
- */
215
- getOptions() {
216
- return { ...this.options };
217
- }
218
- }
219
- /**
220
- * Process items in parallel batches (convenience function).
221
- *
222
- * @template TInput - Input item type
223
- * @template TOutput - Output result type
224
- * @param items - Array of items to process
225
- * @param processor - Async function to process each item
226
- * @param options - Batch processing options
227
- * @returns Batch processing result
228
- *
229
- * @example
230
- * ```typescript
231
- * const result = await processBatch(
232
- * urls,
233
- * async (url) => fetch(url).then(r => r.json()),
234
- * { concurrency: 5, maxRetries: 2 }
235
- * );
236
- * ```
237
- */
238
- export async function processBatch(items, processor, options = {}) {
239
- const batchProcessor = new BatchProcessor(options);
240
- return batchProcessor.process(items, processor);
241
- }
242
- /**
243
- * Process items with automatic retry on failure (convenience function).
244
- *
245
- * @template TInput - Input item type
246
- * @template TOutput - Output result type
247
- * @param items - Array of items to process
248
- * @param processor - Async function to process each item
249
- * @param maxRetries - Maximum retry attempts (default: 3)
250
- * @param onProgress - Optional progress callback
251
- * @returns Batch processing result
252
- *
253
- * @example
254
- * ```typescript
255
- * const result = await processWithRetry(
256
- * items,
257
- * async (item) => unreliableOperation(item),
258
- * 3,
259
- * (p) => console.log(`${p.percentage}%`)
260
- * );
261
- * ```
262
- */
263
- export async function processWithRetry(items, processor, maxRetries = 3, onProgress) {
264
- return processBatch(items, processor, { maxRetries, onProgress });
265
- }
266
- /**
267
- * Chunk an array into smaller arrays of specified size.
268
- *
269
- * @template T - Item type
270
- * @param array - Array to chunk
271
- * @param size - Size of each chunk
272
- * @returns Array of chunks
273
- *
274
- * @example
275
- * ```typescript
276
- * const chunks = chunkArray([1, 2, 3, 4, 5], 2);
277
- * // [[1, 2], [3, 4], [5]]
278
- * ```
279
- */
280
- export function chunkArray(array, size) {
281
- if (size <= 0) {
282
- throw new Error('Chunk size must be greater than 0');
283
- }
284
- const chunks = [];
285
- for (let i = 0; i < array.length; i += size) {
286
- chunks.push(array.slice(i, i + size));
287
- }
288
- return chunks;
289
- }
290
- /**
291
- * Execute async functions in parallel with a concurrency limit.
292
- *
293
- * @template T - Result type
294
- * @param tasks - Array of async functions to execute
295
- * @param concurrency - Maximum concurrent executions
296
- * @returns Array of results (successful results or errors)
297
- *
298
- * @example
299
- * ```typescript
300
- * const tasks = urls.map(url => () => fetch(url));
301
- * const results = await parallelLimit(tasks, 5);
302
- * ```
303
- */
304
- export async function parallelLimit(tasks, concurrency) {
305
- const results = [];
306
- for (let i = 0; i < tasks.length; i += concurrency) {
307
- const batch = tasks.slice(i, i + concurrency);
308
- const batchResults = await Promise.all(batch.map(async (task) => {
309
- try {
310
- const value = await task();
311
- return { success: true, value };
312
- }
313
- catch (error) {
314
- return {
315
- success: false,
316
- error: error instanceof Error ? error : new Error(String(error)),
317
- };
318
- }
319
- }));
320
- results.push(...batchResults);
321
- }
322
- return results;
323
- }
324
- /**
325
- * Map over items in parallel with a concurrency limit.
326
- *
327
- * @template TInput - Input item type
328
- * @template TOutput - Output result type
329
- * @param items - Array of items to map
330
- * @param mapper - Async mapping function
331
- * @param concurrency - Maximum concurrent operations (default: 4)
332
- * @returns Array of results (in order)
333
- *
334
- * @example
335
- * ```typescript
336
- * const results = await mapParallel(
337
- * ids,
338
- * async (id) => fetchUser(id),
339
- * 10
340
- * );
341
- * ```
342
- */
343
- export async function mapParallel(items, mapper, concurrency = 4) {
344
- const results = new Array(items.length);
345
- for (let i = 0; i < items.length; i += concurrency) {
346
- const batch = items.slice(i, i + concurrency);
347
- const startIndex = i;
348
- const batchResults = await Promise.all(batch.map((item, localIndex) => mapper(item, startIndex + localIndex)));
349
- for (let j = 0; j < batchResults.length; j++) {
350
- results[startIndex + j] = batchResults[j];
351
- }
352
- }
353
- return results;
354
- }
355
- /**
356
- * Filter items in parallel with a concurrency limit.
357
- *
358
- * @template T - Item type
359
- * @param items - Array of items to filter
360
- * @param predicate - Async predicate function
361
- * @param concurrency - Maximum concurrent operations (default: 4)
362
- * @returns Filtered array (in order)
363
- *
364
- * @example
365
- * ```typescript
366
- * const validItems = await filterParallel(
367
- * items,
368
- * async (item) => validateItem(item),
369
- * 10
370
- * );
371
- * ```
372
- */
373
- export async function filterParallel(items, predicate, concurrency = 4) {
374
- const includeFlags = await mapParallel(items, predicate, concurrency);
375
- return items.filter((_, index) => includeFlags[index]);
376
- }
377
- //# sourceMappingURL=BatchProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BatchProcessor.js","sourceRoot":"","sources":["../../src/utils/BatchProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,176 +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
- * Memory usage for a single component.
11
- */
12
- export interface ComponentMemoryUsage {
13
- /** Component name */
14
- name: string;
15
- /** Estimated memory usage in bytes */
16
- bytes: number;
17
- /** Item count (if applicable) */
18
- itemCount?: number;
19
- /** Average bytes per item */
20
- bytesPerItem?: number;
21
- }
22
- /**
23
- * Aggregate memory usage statistics.
24
- */
25
- export interface MemoryUsageStats {
26
- /** Total memory usage in bytes */
27
- totalBytes: number;
28
- /** Formatted total memory */
29
- totalFormatted: string;
30
- /** Per-component breakdown */
31
- components: ComponentMemoryUsage[];
32
- /** Timestamp of measurement */
33
- timestamp: Date;
34
- /** Node.js heap stats (if available) */
35
- heapStats?: {
36
- heapUsed: number;
37
- heapTotal: number;
38
- external: number;
39
- rss: number;
40
- };
41
- }
42
- /**
43
- * Memory threshold configuration.
44
- */
45
- export interface MemoryThresholds {
46
- /** Warning threshold in bytes */
47
- warning: number;
48
- /** Critical threshold in bytes */
49
- critical: number;
50
- }
51
- /**
52
- * Memory alert.
53
- */
54
- export interface MemoryAlert {
55
- /** Alert level */
56
- level: 'warning' | 'critical';
57
- /** Component that triggered the alert */
58
- component: string;
59
- /** Current usage */
60
- currentBytes: number;
61
- /** Threshold exceeded */
62
- threshold: number;
63
- /** Message */
64
- message: string;
65
- }
66
- /**
67
- * Callback for memory change events.
68
- */
69
- export type MemoryChangeCallback = (usage: MemoryUsageStats) => void;
70
- /**
71
- * Memory Monitor for tracking usage across components.
72
- *
73
- * @example
74
- * ```typescript
75
- * const monitor = new MemoryMonitor();
76
- *
77
- * // Register components
78
- * monitor.registerComponent('entities', () => entities.length * 500);
79
- * monitor.registerComponent('vectors', () => vectors.size * dimension * 4);
80
- *
81
- * // Get usage stats
82
- * const stats = monitor.getUsage();
83
- * console.log(`Total memory: ${stats.totalFormatted}`);
84
- *
85
- * // Check for alerts
86
- * const alerts = monitor.checkThresholds();
87
- * ```
88
- */
89
- export declare class MemoryMonitor {
90
- private componentEstimators;
91
- private itemCounters;
92
- private thresholds;
93
- private listeners;
94
- private lastUsage;
95
- constructor(thresholds?: Partial<MemoryThresholds>);
96
- /**
97
- * Register a component for memory tracking.
98
- *
99
- * @param name - Component name
100
- * @param estimator - Function that returns estimated bytes
101
- * @param itemCounter - Optional function that returns item count
102
- */
103
- registerComponent(name: string, estimator: () => number, itemCounter?: () => number): void;
104
- /**
105
- * Unregister a component.
106
- *
107
- * @param name - Component name
108
- */
109
- unregisterComponent(name: string): void;
110
- /**
111
- * Get current memory usage statistics.
112
- */
113
- getUsage(): MemoryUsageStats;
114
- /**
115
- * Get memory usage for a specific component.
116
- *
117
- * @param name - Component name
118
- */
119
- getComponentUsage(name: string): ComponentMemoryUsage | undefined;
120
- /**
121
- * Check memory thresholds and return alerts.
122
- */
123
- checkThresholds(): MemoryAlert[];
124
- /**
125
- * Set memory thresholds.
126
- *
127
- * @param thresholds - New threshold values
128
- */
129
- setThresholds(thresholds: Partial<MemoryThresholds>): void;
130
- /**
131
- * Get current thresholds.
132
- */
133
- getThresholds(): MemoryThresholds;
134
- /**
135
- * Add a listener for memory changes.
136
- *
137
- * @param callback - Callback to invoke on memory changes
138
- */
139
- addListener(callback: MemoryChangeCallback): void;
140
- /**
141
- * Remove a listener.
142
- *
143
- * @param callback - Callback to remove
144
- */
145
- removeListener(callback: MemoryChangeCallback): void;
146
- /**
147
- * Get a human-readable summary of memory usage.
148
- */
149
- getSummary(): string;
150
- /**
151
- * Get the last recorded usage without triggering a new measurement.
152
- */
153
- getLastUsage(): MemoryUsageStats | null;
154
- /**
155
- * Format bytes as human-readable string.
156
- *
157
- * @param bytes - Number of bytes
158
- */
159
- formatBytes(bytes: number): string;
160
- /**
161
- * Parse a formatted byte string back to number.
162
- *
163
- * @param formatted - Formatted string like "10 MB"
164
- */
165
- parseBytes(formatted: string): number;
166
- /**
167
- * Clear all registered components.
168
- */
169
- clear(): void;
170
- private notifyListeners;
171
- }
172
- /**
173
- * Singleton instance for global memory monitoring.
174
- */
175
- export declare const globalMemoryMonitor: MemoryMonitor;
176
- //# sourceMappingURL=MemoryMonitor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MemoryMonitor.d.ts","sourceRoot":"","sources":["../../src/utils/MemoryMonitor.ts"],"names":[],"mappings":"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"}