@danielsimonjr/memory-mcp 0.47.1 → 9.8.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.
- package/LICENSE +22 -0
- package/README.md +2000 -194
- package/dist/__tests__/file-path.test.js +5 -5
- package/dist/__tests__/knowledge-graph.test.js +3 -8
- package/dist/core/EntityManager.d.ts +266 -0
- package/dist/core/EntityManager.d.ts.map +1 -0
- package/dist/core/EntityManager.js +85 -133
- package/dist/core/GraphEventEmitter.d.ts +202 -0
- package/dist/core/GraphEventEmitter.d.ts.map +1 -0
- package/dist/core/GraphEventEmitter.js +346 -0
- package/dist/core/GraphStorage.d.ts +395 -0
- package/dist/core/GraphStorage.d.ts.map +1 -0
- package/dist/core/GraphStorage.js +643 -31
- package/dist/core/GraphTraversal.d.ts +141 -0
- package/dist/core/GraphTraversal.d.ts.map +1 -0
- package/dist/core/GraphTraversal.js +573 -0
- package/dist/core/HierarchyManager.d.ts +111 -0
- package/dist/core/HierarchyManager.d.ts.map +1 -0
- package/dist/{features → core}/HierarchyManager.js +14 -9
- package/dist/core/ManagerContext.d.ts +72 -0
- package/dist/core/ManagerContext.d.ts.map +1 -0
- package/dist/core/ManagerContext.js +118 -0
- package/dist/core/ObservationManager.d.ts +85 -0
- package/dist/core/ObservationManager.d.ts.map +1 -0
- package/dist/core/ObservationManager.js +51 -57
- package/dist/core/RelationManager.d.ts +131 -0
- package/dist/core/RelationManager.d.ts.map +1 -0
- package/dist/core/RelationManager.js +31 -7
- package/dist/core/SQLiteStorage.d.ts +354 -0
- package/dist/core/SQLiteStorage.d.ts.map +1 -0
- package/dist/core/SQLiteStorage.js +917 -0
- package/dist/core/StorageFactory.d.ts +45 -0
- package/dist/core/StorageFactory.d.ts.map +1 -0
- package/dist/core/StorageFactory.js +64 -0
- package/dist/core/TransactionManager.d.ts +464 -0
- package/dist/core/TransactionManager.d.ts.map +1 -0
- package/dist/core/TransactionManager.js +490 -13
- package/dist/core/index.d.ts +17 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -2
- package/dist/features/AnalyticsManager.d.ts +44 -0
- package/dist/features/AnalyticsManager.d.ts.map +1 -0
- package/dist/features/AnalyticsManager.js +14 -13
- package/dist/features/ArchiveManager.d.ts +133 -0
- package/dist/features/ArchiveManager.d.ts.map +1 -0
- package/dist/features/ArchiveManager.js +221 -14
- package/dist/features/CompressionManager.d.ts +117 -0
- package/dist/features/CompressionManager.d.ts.map +1 -0
- package/dist/features/CompressionManager.js +189 -20
- package/dist/features/IOManager.d.ts +225 -0
- package/dist/features/IOManager.d.ts.map +1 -0
- package/dist/features/IOManager.js +1041 -0
- package/dist/features/StreamingExporter.d.ts +123 -0
- package/dist/features/StreamingExporter.d.ts.map +1 -0
- package/dist/features/StreamingExporter.js +203 -0
- package/dist/features/TagManager.d.ts +147 -0
- package/dist/features/TagManager.d.ts.map +1 -0
- package/dist/features/index.d.ts +12 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +5 -6
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -45
- package/dist/memory.jsonl +1 -18
- package/dist/search/BasicSearch.d.ts +51 -0
- package/dist/search/BasicSearch.d.ts.map +1 -0
- package/dist/search/BasicSearch.js +9 -3
- package/dist/search/BooleanSearch.d.ts +98 -0
- package/dist/search/BooleanSearch.d.ts.map +1 -0
- package/dist/search/BooleanSearch.js +156 -9
- package/dist/search/EmbeddingService.d.ts +178 -0
- package/dist/search/EmbeddingService.d.ts.map +1 -0
- package/dist/search/EmbeddingService.js +358 -0
- package/dist/search/FuzzySearch.d.ts +118 -0
- package/dist/search/FuzzySearch.d.ts.map +1 -0
- package/dist/search/FuzzySearch.js +241 -25
- package/dist/search/QueryCostEstimator.d.ts +111 -0
- package/dist/search/QueryCostEstimator.d.ts.map +1 -0
- package/dist/search/QueryCostEstimator.js +355 -0
- package/dist/search/RankedSearch.d.ts +71 -0
- package/dist/search/RankedSearch.d.ts.map +1 -0
- package/dist/search/RankedSearch.js +54 -6
- package/dist/search/SavedSearchManager.d.ts +79 -0
- package/dist/search/SavedSearchManager.d.ts.map +1 -0
- package/dist/search/SearchFilterChain.d.ts +120 -0
- package/dist/search/SearchFilterChain.d.ts.map +1 -0
- package/dist/search/SearchFilterChain.js +2 -4
- package/dist/search/SearchManager.d.ts +326 -0
- package/dist/search/SearchManager.d.ts.map +1 -0
- package/dist/search/SearchManager.js +148 -0
- package/dist/search/SearchSuggestions.d.ts +27 -0
- package/dist/search/SearchSuggestions.d.ts.map +1 -0
- package/dist/search/SearchSuggestions.js +1 -1
- package/dist/search/SemanticSearch.d.ts +149 -0
- package/dist/search/SemanticSearch.d.ts.map +1 -0
- package/dist/search/SemanticSearch.js +323 -0
- package/dist/search/TFIDFEventSync.d.ts +85 -0
- package/dist/search/TFIDFEventSync.d.ts.map +1 -0
- package/dist/search/TFIDFEventSync.js +133 -0
- package/dist/search/TFIDFIndexManager.d.ts +151 -0
- package/dist/search/TFIDFIndexManager.d.ts.map +1 -0
- package/dist/search/TFIDFIndexManager.js +232 -17
- package/dist/search/VectorStore.d.ts +235 -0
- package/dist/search/VectorStore.d.ts.map +1 -0
- package/dist/search/VectorStore.js +311 -0
- package/dist/search/index.d.ts +21 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +12 -0
- package/dist/server/MCPServer.d.ts +21 -0
- package/dist/server/MCPServer.d.ts.map +1 -0
- package/dist/server/MCPServer.js +4 -4
- package/dist/server/responseCompressor.d.ts +94 -0
- package/dist/server/responseCompressor.d.ts.map +1 -0
- package/dist/server/responseCompressor.js +127 -0
- package/dist/server/toolDefinitions.d.ts +27 -0
- package/dist/server/toolDefinitions.d.ts.map +1 -0
- package/dist/server/toolDefinitions.js +189 -18
- package/dist/server/toolHandlers.d.ts +41 -0
- package/dist/server/toolHandlers.d.ts.map +1 -0
- package/dist/server/toolHandlers.js +467 -75
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -1
- package/dist/types/types.d.ts +1654 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +9 -0
- package/dist/utils/compressedCache.d.ts +192 -0
- package/dist/utils/compressedCache.d.ts.map +1 -0
- package/dist/utils/compressedCache.js +309 -0
- package/dist/utils/compressionUtil.d.ts +214 -0
- package/dist/utils/compressionUtil.d.ts.map +1 -0
- package/dist/utils/compressionUtil.js +247 -0
- package/dist/utils/constants.d.ts +245 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +124 -0
- package/dist/utils/entityUtils.d.ts +321 -0
- package/dist/utils/entityUtils.d.ts.map +1 -0
- package/dist/utils/entityUtils.js +434 -4
- package/dist/utils/errors.d.ts +95 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +24 -0
- package/dist/utils/formatters.d.ts +145 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/{paginationUtils.js → formatters.js} +54 -3
- package/dist/utils/index.d.ts +23 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +69 -31
- package/dist/utils/indexes.d.ts +270 -0
- package/dist/utils/indexes.d.ts.map +1 -0
- package/dist/utils/indexes.js +526 -0
- package/dist/utils/logger.d.ts +24 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/operationUtils.d.ts +124 -0
- package/dist/utils/operationUtils.d.ts.map +1 -0
- package/dist/utils/operationUtils.js +175 -0
- package/dist/utils/parallelUtils.d.ts +72 -0
- package/dist/utils/parallelUtils.d.ts.map +1 -0
- package/dist/utils/parallelUtils.js +169 -0
- package/dist/utils/schemas.d.ts +374 -0
- package/dist/utils/schemas.d.ts.map +1 -0
- package/dist/utils/schemas.js +302 -2
- package/dist/utils/searchAlgorithms.d.ts +99 -0
- package/dist/utils/searchAlgorithms.d.ts.map +1 -0
- package/dist/utils/searchAlgorithms.js +167 -0
- package/dist/utils/searchCache.d.ts +108 -0
- package/dist/utils/searchCache.d.ts.map +1 -0
- package/dist/utils/taskScheduler.d.ts +290 -0
- package/dist/utils/taskScheduler.d.ts.map +1 -0
- package/dist/utils/taskScheduler.js +466 -0
- package/dist/workers/index.d.ts +12 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/workers/index.js +9 -0
- package/dist/workers/levenshteinWorker.d.ts +60 -0
- package/dist/workers/levenshteinWorker.d.ts.map +1 -0
- package/dist/workers/levenshteinWorker.js +98 -0
- package/package.json +17 -4
- package/dist/__tests__/edge-cases/edge-cases.test.js +0 -406
- package/dist/__tests__/integration/workflows.test.js +0 -449
- package/dist/__tests__/performance/benchmarks.test.js +0 -413
- package/dist/__tests__/unit/core/EntityManager.test.js +0 -334
- package/dist/__tests__/unit/core/GraphStorage.test.js +0 -205
- package/dist/__tests__/unit/core/RelationManager.test.js +0 -274
- package/dist/__tests__/unit/features/CompressionManager.test.js +0 -350
- package/dist/__tests__/unit/search/BasicSearch.test.js +0 -311
- package/dist/__tests__/unit/search/BooleanSearch.test.js +0 -432
- package/dist/__tests__/unit/search/FuzzySearch.test.js +0 -448
- package/dist/__tests__/unit/search/RankedSearch.test.js +0 -379
- package/dist/__tests__/unit/utils/levenshtein.test.js +0 -77
- package/dist/core/KnowledgeGraphManager.js +0 -423
- package/dist/features/BackupManager.js +0 -311
- package/dist/features/ExportManager.js +0 -305
- package/dist/features/ImportExportManager.js +0 -50
- package/dist/features/ImportManager.js +0 -328
- package/dist/types/analytics.types.js +0 -6
- package/dist/types/entity.types.js +0 -7
- package/dist/types/import-export.types.js +0 -7
- package/dist/types/search.types.js +0 -7
- package/dist/types/tag.types.js +0 -6
- package/dist/utils/dateUtils.js +0 -89
- package/dist/utils/filterUtils.js +0 -155
- package/dist/utils/levenshtein.js +0 -62
- package/dist/utils/pathUtils.js +0 -115
- package/dist/utils/responseFormatter.js +0 -55
- package/dist/utils/tagUtils.js +0 -107
- package/dist/utils/tfidf.js +0 -90
- package/dist/utils/validationHelper.js +0 -99
- package/dist/utils/validationUtils.js +0 -109
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Result Cache
|
|
3
|
+
*
|
|
4
|
+
* Simple LRU-style cache for search results with TTL support.
|
|
5
|
+
* Improves performance for repeated queries without external dependencies.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/searchCache
|
|
8
|
+
*/
|
|
9
|
+
import type { SearchResult, KnowledgeGraph } from '../types/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Cache statistics for monitoring.
|
|
12
|
+
*/
|
|
13
|
+
export interface CacheStats {
|
|
14
|
+
hits: number;
|
|
15
|
+
misses: number;
|
|
16
|
+
size: number;
|
|
17
|
+
hitRate: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Simple LRU cache implementation for search results.
|
|
21
|
+
*
|
|
22
|
+
* Features:
|
|
23
|
+
* - Maximum size limit (LRU eviction when full)
|
|
24
|
+
* - TTL-based expiration
|
|
25
|
+
* - Cache statistics tracking
|
|
26
|
+
* - Hash-based key generation from query parameters
|
|
27
|
+
*/
|
|
28
|
+
export declare class SearchCache<T = SearchResult[] | KnowledgeGraph> {
|
|
29
|
+
private maxSize;
|
|
30
|
+
private ttlMs;
|
|
31
|
+
private cache;
|
|
32
|
+
private accessOrder;
|
|
33
|
+
private hits;
|
|
34
|
+
private misses;
|
|
35
|
+
constructor(maxSize?: number, ttlMs?: number);
|
|
36
|
+
/**
|
|
37
|
+
* Generate cache key from query parameters.
|
|
38
|
+
*/
|
|
39
|
+
private generateKey;
|
|
40
|
+
/**
|
|
41
|
+
* Get value from cache.
|
|
42
|
+
*
|
|
43
|
+
* @param params - Query parameters to generate cache key
|
|
44
|
+
* @returns Cached value or undefined if not found/expired
|
|
45
|
+
*/
|
|
46
|
+
get(params: Record<string, unknown>): T | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Set value in cache.
|
|
49
|
+
*
|
|
50
|
+
* @param params - Query parameters to generate cache key
|
|
51
|
+
* @param value - Value to cache
|
|
52
|
+
*/
|
|
53
|
+
set(params: Record<string, unknown>, value: T): void;
|
|
54
|
+
/**
|
|
55
|
+
* Invalidate all cached entries.
|
|
56
|
+
*/
|
|
57
|
+
clear(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Remove specific entry from access order.
|
|
60
|
+
*/
|
|
61
|
+
private removeFromAccessOrder;
|
|
62
|
+
/**
|
|
63
|
+
* Get cache statistics.
|
|
64
|
+
*/
|
|
65
|
+
getStats(): CacheStats;
|
|
66
|
+
/**
|
|
67
|
+
* Reset cache statistics.
|
|
68
|
+
*/
|
|
69
|
+
resetStats(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Clean up expired entries.
|
|
72
|
+
*
|
|
73
|
+
* Should be called periodically to prevent memory buildup.
|
|
74
|
+
*/
|
|
75
|
+
cleanupExpired(): void;
|
|
76
|
+
/**
|
|
77
|
+
* Get current cache size.
|
|
78
|
+
*/
|
|
79
|
+
get size(): number;
|
|
80
|
+
/**
|
|
81
|
+
* Check if cache has entry for params.
|
|
82
|
+
*/
|
|
83
|
+
has(params: Record<string, unknown>): boolean;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Global search caches for different search types.
|
|
87
|
+
*/
|
|
88
|
+
export declare const searchCaches: {
|
|
89
|
+
basic: SearchCache<KnowledgeGraph>;
|
|
90
|
+
ranked: SearchCache<SearchResult[]>;
|
|
91
|
+
boolean: SearchCache<KnowledgeGraph>;
|
|
92
|
+
fuzzy: SearchCache<KnowledgeGraph>;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Clear all search caches.
|
|
96
|
+
*
|
|
97
|
+
* Should be called when graph is modified to ensure cache consistency.
|
|
98
|
+
*/
|
|
99
|
+
export declare function clearAllSearchCaches(): void;
|
|
100
|
+
/**
|
|
101
|
+
* Get combined statistics for all caches.
|
|
102
|
+
*/
|
|
103
|
+
export declare function getAllCacheStats(): Record<string, CacheStats>;
|
|
104
|
+
/**
|
|
105
|
+
* Clean up expired entries in all caches.
|
|
106
|
+
*/
|
|
107
|
+
export declare function cleanupAllCaches(): void;
|
|
108
|
+
//# sourceMappingURL=searchCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchCache.d.ts","sourceRoot":"","sources":["../../src/utils/searchCache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAWtE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAW,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,cAAc;IAOxD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IAPf,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;gBAGT,OAAO,GAAE,MAAY,EACrB,KAAK,GAAE,MAAsB;IAGvC;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS;IAyBnD;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAyBpD;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACH,QAAQ,IAAI,UAAU;IAUtB;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;;;OAIG;IACH,cAAc,IAAI,IAAI;IAgBtB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;CAe9C;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;CAKxB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAO7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC"}
|
|
@@ -0,0 +1,290 @@
|
|
|
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
|
+
* @module utils/taskScheduler
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Task priority levels.
|
|
11
|
+
* Higher priority tasks are executed first.
|
|
12
|
+
*/
|
|
13
|
+
export declare enum TaskPriority {
|
|
14
|
+
LOW = 0,
|
|
15
|
+
NORMAL = 1,
|
|
16
|
+
HIGH = 2,
|
|
17
|
+
CRITICAL = 3
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Task status in the queue.
|
|
21
|
+
*/
|
|
22
|
+
export declare enum TaskStatus {
|
|
23
|
+
PENDING = "pending",
|
|
24
|
+
RUNNING = "running",
|
|
25
|
+
COMPLETED = "completed",
|
|
26
|
+
FAILED = "failed",
|
|
27
|
+
CANCELLED = "cancelled"
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Task definition for the queue.
|
|
31
|
+
*/
|
|
32
|
+
export interface Task<T = unknown, R = unknown> {
|
|
33
|
+
/** Unique task identifier */
|
|
34
|
+
id: string;
|
|
35
|
+
/** Task priority */
|
|
36
|
+
priority: TaskPriority;
|
|
37
|
+
/** Function to execute (must be serializable) */
|
|
38
|
+
fn: (input: T) => R;
|
|
39
|
+
/** Input data for the function */
|
|
40
|
+
input: T;
|
|
41
|
+
/** Optional timeout in milliseconds */
|
|
42
|
+
timeout?: number;
|
|
43
|
+
/** Optional task metadata */
|
|
44
|
+
metadata?: Record<string, unknown>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Task result after execution.
|
|
48
|
+
*/
|
|
49
|
+
export interface TaskResult<R = unknown> {
|
|
50
|
+
/** Task identifier */
|
|
51
|
+
id: string;
|
|
52
|
+
/** Task status */
|
|
53
|
+
status: TaskStatus;
|
|
54
|
+
/** Result if successful */
|
|
55
|
+
result?: R;
|
|
56
|
+
/** Error if failed */
|
|
57
|
+
error?: Error;
|
|
58
|
+
/** Execution duration in milliseconds */
|
|
59
|
+
duration: number;
|
|
60
|
+
/** Start timestamp */
|
|
61
|
+
startedAt: number;
|
|
62
|
+
/** End timestamp */
|
|
63
|
+
completedAt: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Progress callback for batch operations.
|
|
67
|
+
*/
|
|
68
|
+
export type ProgressCallback = (progress: {
|
|
69
|
+
completed: number;
|
|
70
|
+
total: number;
|
|
71
|
+
percentage: number;
|
|
72
|
+
currentTaskId?: string;
|
|
73
|
+
}) => void;
|
|
74
|
+
/**
|
|
75
|
+
* Batch processing options.
|
|
76
|
+
*/
|
|
77
|
+
export interface BatchOptions {
|
|
78
|
+
/** Maximum concurrent tasks (default: CPU count - 1) */
|
|
79
|
+
concurrency?: number;
|
|
80
|
+
/** Task timeout in milliseconds (default: 30000) */
|
|
81
|
+
timeout?: number;
|
|
82
|
+
/** Progress callback */
|
|
83
|
+
onProgress?: ProgressCallback;
|
|
84
|
+
/** Whether to stop on first error (default: false) */
|
|
85
|
+
stopOnError?: boolean;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Task queue statistics.
|
|
89
|
+
*/
|
|
90
|
+
export interface QueueStats {
|
|
91
|
+
/** Number of pending tasks */
|
|
92
|
+
pending: number;
|
|
93
|
+
/** Number of running tasks */
|
|
94
|
+
running: number;
|
|
95
|
+
/** Number of completed tasks */
|
|
96
|
+
completed: number;
|
|
97
|
+
/** Number of failed tasks */
|
|
98
|
+
failed: number;
|
|
99
|
+
/** Average execution time in milliseconds */
|
|
100
|
+
averageExecutionTime: number;
|
|
101
|
+
/** Total tasks processed */
|
|
102
|
+
totalProcessed: number;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Priority Task Queue with advanced scheduling.
|
|
106
|
+
*
|
|
107
|
+
* Features:
|
|
108
|
+
* - Priority-based execution (CRITICAL > HIGH > NORMAL > LOW)
|
|
109
|
+
* - Configurable concurrency limits
|
|
110
|
+
* - Progress tracking
|
|
111
|
+
* - Graceful error handling
|
|
112
|
+
* - Task cancellation
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* const queue = new TaskQueue({ concurrency: 4 });
|
|
117
|
+
*
|
|
118
|
+
* // Add tasks with different priorities
|
|
119
|
+
* queue.enqueue({
|
|
120
|
+
* id: 'task1',
|
|
121
|
+
* priority: TaskPriority.HIGH,
|
|
122
|
+
* fn: (x: number) => x * 2,
|
|
123
|
+
* input: 5,
|
|
124
|
+
* });
|
|
125
|
+
*
|
|
126
|
+
* // Process all tasks
|
|
127
|
+
* const results = await queue.processAll();
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export declare class TaskQueue {
|
|
131
|
+
private queue;
|
|
132
|
+
private running;
|
|
133
|
+
private completed;
|
|
134
|
+
private pool;
|
|
135
|
+
private concurrency;
|
|
136
|
+
private defaultTimeout;
|
|
137
|
+
private isProcessing;
|
|
138
|
+
private totalExecutionTime;
|
|
139
|
+
private totalProcessed;
|
|
140
|
+
private useWorkerPool;
|
|
141
|
+
constructor(options?: {
|
|
142
|
+
concurrency?: number;
|
|
143
|
+
timeout?: number;
|
|
144
|
+
useWorkerPool?: boolean;
|
|
145
|
+
});
|
|
146
|
+
/**
|
|
147
|
+
* Get or create the worker pool.
|
|
148
|
+
*/
|
|
149
|
+
private getPool;
|
|
150
|
+
/**
|
|
151
|
+
* Add a task to the queue.
|
|
152
|
+
*
|
|
153
|
+
* @param task - Task to add
|
|
154
|
+
* @returns Promise that resolves when the task completes
|
|
155
|
+
*/
|
|
156
|
+
enqueue<T, R>(task: Task<T, R>): Promise<TaskResult<R>>;
|
|
157
|
+
/**
|
|
158
|
+
* Process the next task in the queue.
|
|
159
|
+
*/
|
|
160
|
+
private processNext;
|
|
161
|
+
/**
|
|
162
|
+
* Cancel a pending task.
|
|
163
|
+
*
|
|
164
|
+
* @param taskId - ID of the task to cancel
|
|
165
|
+
* @returns True if task was cancelled, false if not found or already running
|
|
166
|
+
*/
|
|
167
|
+
cancel(taskId: string): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Wait for all tasks to complete.
|
|
170
|
+
*
|
|
171
|
+
* @returns Array of all task results
|
|
172
|
+
*/
|
|
173
|
+
drain(): Promise<TaskResult[]>;
|
|
174
|
+
/**
|
|
175
|
+
* Get queue statistics.
|
|
176
|
+
*/
|
|
177
|
+
getStats(): QueueStats;
|
|
178
|
+
/**
|
|
179
|
+
* Clear all completed results.
|
|
180
|
+
*/
|
|
181
|
+
clearCompleted(): void;
|
|
182
|
+
/**
|
|
183
|
+
* Shutdown the task queue and release resources.
|
|
184
|
+
*/
|
|
185
|
+
shutdown(): Promise<void>;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Process items in parallel batches with progress tracking.
|
|
189
|
+
*
|
|
190
|
+
* Unlike parallelMap, this provides:
|
|
191
|
+
* - Progress callbacks
|
|
192
|
+
* - Configurable concurrency
|
|
193
|
+
* - Error handling options
|
|
194
|
+
* - Task-level timeouts
|
|
195
|
+
*
|
|
196
|
+
* @template T - Input item type
|
|
197
|
+
* @template R - Output item type
|
|
198
|
+
* @param items - Array of items to process
|
|
199
|
+
* @param fn - Processing function (must be serializable)
|
|
200
|
+
* @param options - Batch processing options
|
|
201
|
+
* @returns Array of results (or errors if stopOnError is false)
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```typescript
|
|
205
|
+
* const results = await batchProcess(
|
|
206
|
+
* urls,
|
|
207
|
+
* (url: string) => fetch(url).then(r => r.json()),
|
|
208
|
+
* {
|
|
209
|
+
* concurrency: 5,
|
|
210
|
+
* timeout: 10000,
|
|
211
|
+
* onProgress: ({ completed, total, percentage }) => {
|
|
212
|
+
* console.log(`Progress: ${percentage.toFixed(1)}%`);
|
|
213
|
+
* },
|
|
214
|
+
* }
|
|
215
|
+
* );
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
218
|
+
export declare function batchProcess<T, R>(items: T[], fn: (item: T) => R | Promise<R>, options?: BatchOptions): Promise<Array<{
|
|
219
|
+
success: true;
|
|
220
|
+
result: R;
|
|
221
|
+
} | {
|
|
222
|
+
success: false;
|
|
223
|
+
error: Error;
|
|
224
|
+
}>>;
|
|
225
|
+
/**
|
|
226
|
+
* Execute tasks with rate limiting.
|
|
227
|
+
*
|
|
228
|
+
* Ensures tasks don't exceed a specified rate (tasks per second).
|
|
229
|
+
*
|
|
230
|
+
* @template T - Input item type
|
|
231
|
+
* @template R - Output item type
|
|
232
|
+
* @param items - Items to process
|
|
233
|
+
* @param fn - Processing function
|
|
234
|
+
* @param rateLimit - Maximum tasks per second
|
|
235
|
+
* @returns Array of results
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* ```typescript
|
|
239
|
+
* // Process max 10 items per second
|
|
240
|
+
* const results = await rateLimitedProcess(
|
|
241
|
+
* items,
|
|
242
|
+
* (item) => processItem(item),
|
|
243
|
+
* 10
|
|
244
|
+
* );
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
export declare function rateLimitedProcess<T, R>(items: T[], fn: (item: T) => R | Promise<R>, rateLimit: number): Promise<R[]>;
|
|
248
|
+
/**
|
|
249
|
+
* Retry a function with exponential backoff.
|
|
250
|
+
*
|
|
251
|
+
* @template T - Return type
|
|
252
|
+
* @param fn - Function to retry
|
|
253
|
+
* @param options - Retry options
|
|
254
|
+
* @returns Result of the function
|
|
255
|
+
*
|
|
256
|
+
* @example
|
|
257
|
+
* ```typescript
|
|
258
|
+
* const result = await withRetry(
|
|
259
|
+
* () => fetchData(),
|
|
260
|
+
* { maxRetries: 3, baseDelay: 1000 }
|
|
261
|
+
* );
|
|
262
|
+
* ```
|
|
263
|
+
*/
|
|
264
|
+
export declare function withRetry<T>(fn: () => T | Promise<T>, options?: {
|
|
265
|
+
maxRetries?: number;
|
|
266
|
+
baseDelay?: number;
|
|
267
|
+
maxDelay?: number;
|
|
268
|
+
onRetry?: (error: Error, attempt: number) => void;
|
|
269
|
+
}): Promise<T>;
|
|
270
|
+
/**
|
|
271
|
+
* Create a debounced version of a function.
|
|
272
|
+
*
|
|
273
|
+
* @template T - Function arguments type
|
|
274
|
+
* @template R - Return type
|
|
275
|
+
* @param fn - Function to debounce
|
|
276
|
+
* @param delay - Delay in milliseconds
|
|
277
|
+
* @returns Debounced function
|
|
278
|
+
*/
|
|
279
|
+
export declare function debounce<T extends unknown[], R>(fn: (...args: T) => R, delay: number): (...args: T) => Promise<R>;
|
|
280
|
+
/**
|
|
281
|
+
* Create a throttled version of a function.
|
|
282
|
+
*
|
|
283
|
+
* @template T - Function arguments type
|
|
284
|
+
* @template R - Return type
|
|
285
|
+
* @param fn - Function to throttle
|
|
286
|
+
* @param limit - Minimum time between calls in milliseconds
|
|
287
|
+
* @returns Throttled function
|
|
288
|
+
*/
|
|
289
|
+
export declare function throttle<T extends unknown[], R>(fn: (...args: T) => R, limit: number): (...args: T) => R | undefined;
|
|
290
|
+
//# sourceMappingURL=taskScheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskScheduler.d.ts","sourceRoot":"","sources":["../../src/utils/taskScheduler.ts"],"names":[],"mappings":"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"}
|