@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,487 +0,0 @@
1
- /**
2
- * Task Scheduler
3
- *
4
- * Advanced task scheduling utilities using workerpool.
5
- * Phase 8 Sprint 4: Priority queues, concurrency control, progress tracking.
6
- *
7
- * **SECURITY WARNING:** TaskQueue uses `new Function()` internally for worker serialization.
8
- * Task functions MUST be real function objects, never user-provided strings.
9
- * Runtime validation ensures only function objects are accepted.
10
- *
11
- * @module utils/taskScheduler
12
- */
13
- import workerpool from '@danielsimonjr/workerpool';
14
- /**
15
- * Validates that the input is a real function object.
16
- * Prevents code injection through string masquerading as functions.
17
- *
18
- * @param fn - Function to validate
19
- * @param paramName - Parameter name for error message
20
- * @throws {TypeError} If fn is not a function
21
- * @internal
22
- */
23
- function validateFunction(fn, paramName) {
24
- if (typeof fn !== 'function') {
25
- throw new TypeError(`${paramName} must be a function, got ${typeof fn}`);
26
- }
27
- }
28
- // ==================== Types ====================
29
- /**
30
- * Task priority levels.
31
- * Higher priority tasks are executed first.
32
- */
33
- export var TaskPriority;
34
- (function (TaskPriority) {
35
- TaskPriority[TaskPriority["LOW"] = 0] = "LOW";
36
- TaskPriority[TaskPriority["NORMAL"] = 1] = "NORMAL";
37
- TaskPriority[TaskPriority["HIGH"] = 2] = "HIGH";
38
- TaskPriority[TaskPriority["CRITICAL"] = 3] = "CRITICAL";
39
- })(TaskPriority || (TaskPriority = {}));
40
- /**
41
- * Task status in the queue.
42
- */
43
- export var TaskStatus;
44
- (function (TaskStatus) {
45
- TaskStatus["PENDING"] = "pending";
46
- TaskStatus["RUNNING"] = "running";
47
- TaskStatus["COMPLETED"] = "completed";
48
- TaskStatus["FAILED"] = "failed";
49
- TaskStatus["CANCELLED"] = "cancelled";
50
- })(TaskStatus || (TaskStatus = {}));
51
- /**
52
- * Priority Task Queue with advanced scheduling.
53
- *
54
- * Features:
55
- * - Priority-based execution (CRITICAL > HIGH > NORMAL > LOW)
56
- * - Configurable concurrency limits
57
- * - Progress tracking
58
- * - Graceful error handling
59
- * - Task cancellation
60
- *
61
- * @example
62
- * ```typescript
63
- * const queue = new TaskQueue({ concurrency: 4 });
64
- *
65
- * // Add tasks with different priorities
66
- * queue.enqueue({
67
- * id: 'task1',
68
- * priority: TaskPriority.HIGH,
69
- * fn: (x: number) => x * 2,
70
- * input: 5,
71
- * });
72
- *
73
- * // Process all tasks
74
- * const results = await queue.processAll();
75
- * ```
76
- */
77
- export class TaskQueue {
78
- queue = [];
79
- running = new Map();
80
- completed = [];
81
- pool = null;
82
- concurrency;
83
- defaultTimeout;
84
- isProcessing = false;
85
- totalExecutionTime = 0;
86
- totalProcessed = 0;
87
- useWorkerPool;
88
- constructor(options = {}) {
89
- this.concurrency = options.concurrency ?? Math.max(1, workerpool.cpus - 1);
90
- this.defaultTimeout = options.timeout ?? 30000;
91
- this.useWorkerPool = options.useWorkerPool ?? true;
92
- }
93
- /**
94
- * Get or create the worker pool.
95
- */
96
- getPool() {
97
- if (!this.pool) {
98
- this.pool = workerpool.pool({
99
- maxWorkers: this.concurrency,
100
- workerType: 'thread',
101
- });
102
- }
103
- return this.pool;
104
- }
105
- /**
106
- * Add a task to the queue.
107
- *
108
- * @param task - Task to add
109
- * @returns Promise that resolves when the task completes
110
- */
111
- enqueue(task) {
112
- // Security: Validate that task.fn is a real function, not a user-provided string
113
- validateFunction(task.fn, 'task.fn');
114
- return new Promise((resolve, reject) => {
115
- const queuedTask = {
116
- ...task,
117
- status: TaskStatus.PENDING,
118
- addedAt: Date.now(),
119
- resolve: resolve,
120
- reject,
121
- };
122
- // Insert based on priority (higher priority first)
123
- const insertIndex = this.queue.findIndex(t => t.priority < task.priority);
124
- if (insertIndex === -1) {
125
- this.queue.push(queuedTask);
126
- }
127
- else {
128
- this.queue.splice(insertIndex, 0, queuedTask);
129
- }
130
- // Start processing if not already running
131
- if (!this.isProcessing) {
132
- this.processNext();
133
- }
134
- });
135
- }
136
- /**
137
- * Process the next task in the queue.
138
- */
139
- async processNext() {
140
- if (this.running.size >= this.concurrency || this.queue.length === 0) {
141
- if (this.running.size === 0 && this.queue.length === 0) {
142
- this.isProcessing = false;
143
- }
144
- return;
145
- }
146
- this.isProcessing = true;
147
- const task = this.queue.shift();
148
- if (!task)
149
- return;
150
- task.status = TaskStatus.RUNNING;
151
- this.running.set(task.id, task);
152
- const startTime = Date.now();
153
- try {
154
- // Execute task - try worker pool first, fall back to direct execution
155
- let result;
156
- if (this.useWorkerPool) {
157
- try {
158
- const pool = this.getPool();
159
- const fnString = task.fn.toString();
160
- const timeout = task.timeout ?? this.defaultTimeout;
161
- result = await pool
162
- .exec((input, fnStr) => {
163
- // eslint-disable-next-line no-new-func
164
- const fn = new Function('return ' + fnStr)();
165
- return fn(input);
166
- }, [task.input, fnString])
167
- .timeout(timeout);
168
- }
169
- catch {
170
- // Fall back to direct execution
171
- result = await Promise.resolve(task.fn(task.input));
172
- }
173
- }
174
- else {
175
- // Direct execution without worker pool
176
- result = await Promise.resolve(task.fn(task.input));
177
- }
178
- const endTime = Date.now();
179
- const duration = endTime - startTime;
180
- const taskResult = {
181
- id: task.id,
182
- status: TaskStatus.COMPLETED,
183
- result,
184
- duration,
185
- startedAt: startTime,
186
- completedAt: endTime,
187
- };
188
- this.totalExecutionTime += duration;
189
- this.totalProcessed++;
190
- this.completed.push(taskResult);
191
- this.running.delete(task.id);
192
- task.resolve(taskResult);
193
- }
194
- catch (error) {
195
- const endTime = Date.now();
196
- const duration = endTime - startTime;
197
- const taskResult = {
198
- id: task.id,
199
- status: TaskStatus.FAILED,
200
- error: error instanceof Error ? error : new Error(String(error)),
201
- duration,
202
- startedAt: startTime,
203
- completedAt: endTime,
204
- };
205
- this.totalProcessed++;
206
- this.completed.push(taskResult);
207
- this.running.delete(task.id);
208
- task.resolve(taskResult);
209
- }
210
- // Process next task
211
- this.processNext();
212
- }
213
- /**
214
- * Cancel a pending task.
215
- *
216
- * @param taskId - ID of the task to cancel
217
- * @returns True if task was cancelled, false if not found or already running
218
- */
219
- cancel(taskId) {
220
- const index = this.queue.findIndex(t => t.id === taskId);
221
- if (index === -1)
222
- return false;
223
- const task = this.queue.splice(index, 1)[0];
224
- task.status = TaskStatus.CANCELLED;
225
- const result = {
226
- id: task.id,
227
- status: TaskStatus.CANCELLED,
228
- duration: 0,
229
- startedAt: Date.now(),
230
- completedAt: Date.now(),
231
- };
232
- task.resolve(result);
233
- return true;
234
- }
235
- /**
236
- * Wait for all tasks to complete.
237
- *
238
- * @returns Array of all task results
239
- */
240
- async drain() {
241
- // Wait for queue to empty and all running tasks to complete
242
- while (this.queue.length > 0 || this.running.size > 0) {
243
- await new Promise(resolve => setTimeout(resolve, 10));
244
- }
245
- return [...this.completed];
246
- }
247
- /**
248
- * Get queue statistics.
249
- */
250
- getStats() {
251
- return {
252
- pending: this.queue.length,
253
- running: this.running.size,
254
- completed: this.completed.filter(r => r.status === TaskStatus.COMPLETED).length,
255
- failed: this.completed.filter(r => r.status === TaskStatus.FAILED).length,
256
- averageExecutionTime: this.totalProcessed > 0 ? this.totalExecutionTime / this.totalProcessed : 0,
257
- totalProcessed: this.totalProcessed,
258
- };
259
- }
260
- /**
261
- * Clear all completed results.
262
- */
263
- clearCompleted() {
264
- this.completed = [];
265
- }
266
- /**
267
- * Shutdown the task queue and release resources.
268
- */
269
- async shutdown() {
270
- // Cancel all pending tasks
271
- for (const task of this.queue) {
272
- task.status = TaskStatus.CANCELLED;
273
- task.resolve({
274
- id: task.id,
275
- status: TaskStatus.CANCELLED,
276
- duration: 0,
277
- startedAt: Date.now(),
278
- completedAt: Date.now(),
279
- });
280
- }
281
- this.queue = [];
282
- // Terminate worker pool
283
- if (this.pool) {
284
- await this.pool.terminate();
285
- this.pool = null;
286
- }
287
- this.isProcessing = false;
288
- }
289
- }
290
- // ==================== Batch Processing Utilities ====================
291
- /**
292
- * Process items in parallel batches with progress tracking.
293
- *
294
- * Unlike parallelMap, this provides:
295
- * - Progress callbacks
296
- * - Configurable concurrency
297
- * - Error handling options
298
- * - Task-level timeouts
299
- *
300
- * @template T - Input item type
301
- * @template R - Output item type
302
- * @param items - Array of items to process
303
- * @param fn - Processing function (must be serializable)
304
- * @param options - Batch processing options
305
- * @returns Array of results (or errors if stopOnError is false)
306
- *
307
- * @example
308
- * ```typescript
309
- * const results = await batchProcess(
310
- * urls,
311
- * (url: string) => fetch(url).then(r => r.json()),
312
- * {
313
- * concurrency: 5,
314
- * timeout: 10000,
315
- * onProgress: ({ completed, total, percentage }) => {
316
- * console.log(`Progress: ${percentage.toFixed(1)}%`);
317
- * },
318
- * }
319
- * );
320
- * ```
321
- */
322
- export async function batchProcess(items, fn, options = {}) {
323
- const { concurrency = Math.max(1, workerpool.cpus - 1), timeout = 30000, onProgress, stopOnError = false, } = options;
324
- const results = [];
325
- let completed = 0;
326
- const total = items.length;
327
- // Process in batches respecting concurrency
328
- for (let i = 0; i < items.length; i += concurrency) {
329
- const batch = items.slice(i, i + concurrency);
330
- const batchPromises = batch.map(async (item, batchIndex) => {
331
- const itemIndex = i + batchIndex;
332
- try {
333
- // Execute with timeout
334
- const result = await Promise.race([
335
- Promise.resolve(fn(item)),
336
- new Promise((_, reject) => setTimeout(() => reject(new Error('Task timeout')), timeout)),
337
- ]);
338
- results[itemIndex] = { success: true, result };
339
- }
340
- catch (error) {
341
- const err = error instanceof Error ? error : new Error(String(error));
342
- results[itemIndex] = { success: false, error: err };
343
- if (stopOnError) {
344
- throw err;
345
- }
346
- }
347
- finally {
348
- completed++;
349
- if (onProgress) {
350
- onProgress({
351
- completed,
352
- total,
353
- percentage: (completed / total) * 100,
354
- currentTaskId: `item-${itemIndex}`,
355
- });
356
- }
357
- }
358
- });
359
- await Promise.all(batchPromises);
360
- }
361
- return results;
362
- }
363
- /**
364
- * Execute tasks with rate limiting.
365
- *
366
- * Ensures tasks don't exceed a specified rate (tasks per second).
367
- *
368
- * @template T - Input item type
369
- * @template R - Output item type
370
- * @param items - Items to process
371
- * @param fn - Processing function
372
- * @param rateLimit - Maximum tasks per second
373
- * @returns Array of results
374
- *
375
- * @example
376
- * ```typescript
377
- * // Process max 10 items per second
378
- * const results = await rateLimitedProcess(
379
- * items,
380
- * (item) => processItem(item),
381
- * 10
382
- * );
383
- * ```
384
- */
385
- export async function rateLimitedProcess(items, fn, rateLimit) {
386
- const results = [];
387
- const minInterval = 1000 / rateLimit;
388
- let lastExecutionTime = 0;
389
- for (const item of items) {
390
- // Calculate wait time
391
- const now = Date.now();
392
- const timeSinceLast = now - lastExecutionTime;
393
- if (timeSinceLast < minInterval) {
394
- await new Promise(resolve => setTimeout(resolve, minInterval - timeSinceLast));
395
- }
396
- lastExecutionTime = Date.now();
397
- const result = await fn(item);
398
- results.push(result);
399
- }
400
- return results;
401
- }
402
- /**
403
- * Retry a function with exponential backoff.
404
- *
405
- * @template T - Return type
406
- * @param fn - Function to retry
407
- * @param options - Retry options
408
- * @returns Result of the function
409
- *
410
- * @example
411
- * ```typescript
412
- * const result = await withRetry(
413
- * () => fetchData(),
414
- * { maxRetries: 3, baseDelay: 1000 }
415
- * );
416
- * ```
417
- */
418
- export async function withRetry(fn, options = {}) {
419
- const { maxRetries = 3, baseDelay = 1000, maxDelay = 30000, onRetry } = options;
420
- let lastError;
421
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
422
- try {
423
- return await fn();
424
- }
425
- catch (error) {
426
- lastError = error instanceof Error ? error : new Error(String(error));
427
- if (attempt < maxRetries) {
428
- const delay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);
429
- if (onRetry) {
430
- onRetry(lastError, attempt + 1);
431
- }
432
- await new Promise(resolve => setTimeout(resolve, delay));
433
- }
434
- }
435
- }
436
- throw lastError;
437
- }
438
- /**
439
- * Create a debounced version of a function.
440
- *
441
- * @template T - Function arguments type
442
- * @template R - Return type
443
- * @param fn - Function to debounce
444
- * @param delay - Delay in milliseconds
445
- * @returns Debounced function
446
- */
447
- export function debounce(fn, delay) {
448
- let timeoutId = null;
449
- let pendingResolve = null;
450
- return (...args) => {
451
- return new Promise(resolve => {
452
- if (timeoutId) {
453
- clearTimeout(timeoutId);
454
- }
455
- pendingResolve = resolve;
456
- timeoutId = setTimeout(() => {
457
- const result = fn(...args);
458
- if (pendingResolve) {
459
- pendingResolve(result);
460
- }
461
- timeoutId = null;
462
- pendingResolve = null;
463
- }, delay);
464
- });
465
- };
466
- }
467
- /**
468
- * Create a throttled version of a function.
469
- *
470
- * @template T - Function arguments type
471
- * @template R - Return type
472
- * @param fn - Function to throttle
473
- * @param limit - Minimum time between calls in milliseconds
474
- * @returns Throttled function
475
- */
476
- export function throttle(fn, limit) {
477
- let lastCall = 0;
478
- return (...args) => {
479
- const now = Date.now();
480
- if (now - lastCall >= limit) {
481
- lastCall = now;
482
- return fn(...args);
483
- }
484
- return undefined;
485
- };
486
- }
487
- //# sourceMappingURL=taskScheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"taskScheduler.js","sourceRoot":"","sources":["../../src/utils/taskScheduler.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Workers Module
3
- *
4
- * Worker thread utilities for parallel processing.
5
- * Phase 8: Uses workerpool library for worker management.
6
- *
7
- * @module workers
8
- */
9
- export type { Pool, PoolStats } from '@danielsimonjr/workerpool';
10
- export type { WorkerInput, MatchResult } from './levenshteinWorker.js';
11
- export { levenshteinDistance, similarity, searchEntities } from './levenshteinWorker.js';
12
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGjE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Workers Module
3
- *
4
- * Worker thread utilities for parallel processing.
5
- * Phase 8: Uses workerpool library for worker management.
6
- *
7
- * @module workers
8
- */
9
- export { levenshteinDistance, similarity, searchEntities } from './levenshteinWorker.js';
10
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,60 +0,0 @@
1
- /**
2
- * Levenshtein Worker
3
- *
4
- * Worker thread for calculating Levenshtein distances in parallel.
5
- * Uses workerpool for worker management.
6
- *
7
- * @module workers/levenshteinWorker
8
- */
9
- /**
10
- * Input data structure for the worker.
11
- */
12
- export interface WorkerInput {
13
- /** Search query string */
14
- query: string;
15
- /** Array of entities to search */
16
- entities: Array<{
17
- name: string;
18
- nameLower: string;
19
- observations: string[];
20
- }>;
21
- /** Similarity threshold (0.0 to 1.0) */
22
- threshold: number;
23
- }
24
- /**
25
- * Match result returned by the worker.
26
- */
27
- export interface MatchResult {
28
- /** Entity name that matched */
29
- name: string;
30
- /** Similarity score (0.0 to 1.0) */
31
- score: number;
32
- /** Where the match occurred */
33
- matchedIn: 'name' | 'observation';
34
- }
35
- /**
36
- * Calculate Levenshtein distance between two strings.
37
- *
38
- * Uses dynamic programming matrix for efficient computation.
39
- *
40
- * @param s1 - First string
41
- * @param s2 - Second string
42
- * @returns Levenshtein distance (number of edits)
43
- */
44
- export declare function levenshteinDistance(s1: string, s2: string): number;
45
- /**
46
- * Calculate similarity score between two strings.
47
- *
48
- * @param s1 - First string
49
- * @param s2 - Second string
50
- * @returns Similarity score (0.0 to 1.0, where 1.0 is identical)
51
- */
52
- export declare function similarity(s1: string, s2: string): number;
53
- /**
54
- * Search entities for fuzzy matches.
55
- *
56
- * @param data - Worker input containing query, entities, and threshold
57
- * @returns Array of match results
58
- */
59
- export declare function searchEntities(data: WorkerInput): MatchResult[];
60
- //# sourceMappingURL=levenshteinWorker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"levenshteinWorker.d.ts","sourceRoot":"","sources":["../../src/workers/levenshteinWorker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC,CAAC;IACH,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAgClE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAWzD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,CAwB/D"}