bunqueue 1.9.7 → 1.9.9
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/dist/application/backgroundTasks.d.ts +3 -6
- package/dist/application/backgroundTasks.d.ts.map +1 -1
- package/dist/application/backgroundTasks.js +10 -179
- package/dist/application/backgroundTasks.js.map +1 -1
- package/dist/application/cleanupTasks.d.ts +1 -1
- package/dist/application/cleanupTasks.d.ts.map +1 -1
- package/dist/application/cleanupTasks.js +61 -22
- package/dist/application/cleanupTasks.js.map +1 -1
- package/dist/application/clientTracking.d.ts +22 -0
- package/dist/application/clientTracking.d.ts.map +1 -0
- package/dist/application/clientTracking.js +118 -0
- package/dist/application/clientTracking.js.map +1 -0
- package/dist/application/contextFactory.d.ts +97 -0
- package/dist/application/contextFactory.d.ts.map +1 -0
- package/dist/application/contextFactory.js +170 -0
- package/dist/application/contextFactory.js.map +1 -0
- package/dist/application/dependencyProcessor.d.ts +11 -0
- package/dist/application/dependencyProcessor.d.ts.map +1 -0
- package/dist/application/dependencyProcessor.js +69 -0
- package/dist/application/dependencyProcessor.js.map +1 -0
- package/dist/application/dlqManager.d.ts +12 -0
- package/dist/application/dlqManager.d.ts.map +1 -1
- package/dist/application/dlqManager.js +36 -0
- package/dist/application/dlqManager.js.map +1 -1
- package/dist/application/lockManager.d.ts +3 -49
- package/dist/application/lockManager.d.ts.map +1 -1
- package/dist/application/lockManager.js +101 -272
- package/dist/application/lockManager.js.map +1 -1
- package/dist/application/lockOperations.d.ts +39 -0
- package/dist/application/lockOperations.d.ts.map +1 -0
- package/dist/application/lockOperations.js +101 -0
- package/dist/application/lockOperations.js.map +1 -0
- package/dist/application/operations/ack.d.ts +1 -5
- package/dist/application/operations/ack.d.ts.map +1 -1
- package/dist/application/operations/ack.js +43 -259
- package/dist/application/operations/ack.js.map +1 -1
- package/dist/application/operations/ackHelpers.d.ts +79 -0
- package/dist/application/operations/ackHelpers.d.ts.map +1 -0
- package/dist/application/operations/ackHelpers.js +173 -0
- package/dist/application/operations/ackHelpers.js.map +1 -0
- package/dist/application/operations/jobManagement.d.ts +2 -0
- package/dist/application/operations/jobManagement.d.ts.map +1 -1
- package/dist/application/operations/jobManagement.js +8 -0
- package/dist/application/operations/jobManagement.js.map +1 -1
- package/dist/application/operations/push.d.ts.map +1 -1
- package/dist/application/operations/push.js +20 -6
- package/dist/application/operations/push.js.map +1 -1
- package/dist/application/operations/queryOperations.d.ts +11 -0
- package/dist/application/operations/queryOperations.d.ts.map +1 -1
- package/dist/application/operations/queryOperations.js +32 -0
- package/dist/application/operations/queryOperations.js.map +1 -1
- package/dist/application/queueManager.d.ts +3 -11
- package/dist/application/queueManager.d.ts.map +1 -1
- package/dist/application/queueManager.js +98 -244
- package/dist/application/queueManager.js.map +1 -1
- package/dist/application/stallDetection.d.ts +11 -0
- package/dist/application/stallDetection.d.ts.map +1 -0
- package/dist/application/stallDetection.js +128 -0
- package/dist/application/stallDetection.js.map +1 -0
- package/dist/application/types.js +1 -1
- package/dist/application/types.js.map +1 -1
- package/dist/cli/client.d.ts +3 -5
- package/dist/cli/client.d.ts.map +1 -1
- package/dist/cli/client.js +31 -27
- package/dist/cli/client.js.map +1 -1
- package/dist/cli/commands/core.js +3 -3
- package/dist/cli/commands/core.js.map +1 -1
- package/dist/cli/commands/job.js +14 -14
- package/dist/cli/commands/job.js.map +1 -1
- package/dist/cli/commands/server.d.ts.map +1 -1
- package/dist/cli/commands/server.js +5 -29
- package/dist/cli/commands/server.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/client/events.d.ts +0 -1
- package/dist/client/events.d.ts.map +1 -1
- package/dist/client/events.js +4 -7
- package/dist/client/events.js.map +1 -1
- package/dist/client/flow.d.ts +23 -1
- package/dist/client/flow.d.ts.map +1 -1
- package/dist/client/flow.js +166 -68
- package/dist/client/flow.js.map +1 -1
- package/dist/client/queue/queue.d.ts.map +1 -1
- package/dist/client/queue/queue.js +3 -1
- package/dist/client/queue/queue.js.map +1 -1
- package/dist/client/sandboxed/types.d.ts +1 -0
- package/dist/client/sandboxed/types.d.ts.map +1 -1
- package/dist/client/sandboxed/worker.d.ts +1 -0
- package/dist/client/sandboxed/worker.d.ts.map +1 -1
- package/dist/client/sandboxed/worker.js +31 -8
- package/dist/client/sandboxed/worker.js.map +1 -1
- package/dist/client/sandboxed/wrapper.d.ts.map +1 -1
- package/dist/client/sandboxed/wrapper.js +10 -1
- package/dist/client/sandboxed/wrapper.js.map +1 -1
- package/dist/client/tcp/client.d.ts +4 -1
- package/dist/client/tcp/client.d.ts.map +1 -1
- package/dist/client/tcp/client.js +26 -8
- package/dist/client/tcp/client.js.map +1 -1
- package/dist/client/tcp/connection.d.ts +6 -8
- package/dist/client/tcp/connection.d.ts.map +1 -1
- package/dist/client/tcp/connection.js +24 -22
- package/dist/client/tcp/connection.js.map +1 -1
- package/dist/client/tcp/index.d.ts +0 -1
- package/dist/client/tcp/index.d.ts.map +1 -1
- package/dist/client/tcp/index.js +0 -1
- package/dist/client/tcp/index.js.map +1 -1
- package/dist/client/tcp/types.d.ts +8 -13
- package/dist/client/tcp/types.d.ts.map +1 -1
- package/dist/client/tcp/types.js +0 -1
- package/dist/client/tcp/types.js.map +1 -1
- package/dist/client/tcpPool.d.ts.map +1 -1
- package/dist/client/tcpPool.js +0 -6
- package/dist/client/tcpPool.js.map +1 -1
- package/dist/client/worker/ackBatcher.d.ts +1 -1
- package/dist/client/worker/ackBatcher.d.ts.map +1 -1
- package/dist/client/worker/ackBatcher.js +20 -18
- package/dist/client/worker/ackBatcher.js.map +1 -1
- package/dist/client/worker/jobParser.d.ts.map +1 -1
- package/dist/client/worker/jobParser.js +8 -7
- package/dist/client/worker/jobParser.js.map +1 -1
- package/dist/client/worker/processor.d.ts.map +1 -1
- package/dist/client/worker/processor.js +10 -6
- package/dist/client/worker/processor.js.map +1 -1
- package/dist/domain/queue/dependencyTracker.d.ts +74 -0
- package/dist/domain/queue/dependencyTracker.d.ts.map +1 -0
- package/dist/domain/queue/dependencyTracker.js +126 -0
- package/dist/domain/queue/dependencyTracker.js.map +1 -0
- package/dist/domain/queue/dlqShard.d.ts +61 -0
- package/dist/domain/queue/dlqShard.d.ts.map +1 -0
- package/dist/domain/queue/dlqShard.js +175 -0
- package/dist/domain/queue/dlqShard.js.map +1 -0
- package/dist/domain/queue/limiterManager.d.ts +44 -0
- package/dist/domain/queue/limiterManager.d.ts.map +1 -0
- package/dist/domain/queue/limiterManager.js +99 -0
- package/dist/domain/queue/limiterManager.js.map +1 -0
- package/dist/domain/queue/shard.d.ts +33 -124
- package/dist/domain/queue/shard.d.ts.map +1 -1
- package/dist/domain/queue/shard.js +157 -427
- package/dist/domain/queue/shard.js.map +1 -1
- package/dist/domain/queue/temporalManager.d.ts +82 -0
- package/dist/domain/queue/temporalManager.d.ts.map +1 -0
- package/dist/domain/queue/temporalManager.js +150 -0
- package/dist/domain/queue/temporalManager.js.map +1 -0
- package/dist/domain/queue/uniqueKeyManager.d.ts +32 -0
- package/dist/domain/queue/uniqueKeyManager.d.ts.map +1 -0
- package/dist/domain/queue/uniqueKeyManager.js +87 -0
- package/dist/domain/queue/uniqueKeyManager.js.map +1 -0
- package/dist/domain/types/command.d.ts +6 -0
- package/dist/domain/types/command.d.ts.map +1 -1
- package/dist/infrastructure/backup/s3Backup.d.ts +3 -40
- package/dist/infrastructure/backup/s3Backup.d.ts.map +1 -1
- package/dist/infrastructure/backup/s3Backup.js +10 -182
- package/dist/infrastructure/backup/s3Backup.js.map +1 -1
- package/dist/infrastructure/backup/s3BackupConfig.d.ts +67 -0
- package/dist/infrastructure/backup/s3BackupConfig.d.ts.map +1 -0
- package/dist/infrastructure/backup/s3BackupConfig.js +48 -0
- package/dist/infrastructure/backup/s3BackupConfig.js.map +1 -0
- package/dist/infrastructure/backup/s3BackupOperations.d.ts +23 -0
- package/dist/infrastructure/backup/s3BackupOperations.d.ts.map +1 -0
- package/dist/infrastructure/backup/s3BackupOperations.js +170 -0
- package/dist/infrastructure/backup/s3BackupOperations.js.map +1 -0
- package/dist/infrastructure/persistence/sqlite.d.ts +6 -13
- package/dist/infrastructure/persistence/sqlite.d.ts.map +1 -1
- package/dist/infrastructure/persistence/sqlite.js +28 -179
- package/dist/infrastructure/persistence/sqlite.js.map +1 -1
- package/dist/infrastructure/persistence/sqliteBatch.d.ts +38 -0
- package/dist/infrastructure/persistence/sqliteBatch.d.ts.map +1 -0
- package/dist/infrastructure/persistence/sqliteBatch.js +124 -0
- package/dist/infrastructure/persistence/sqliteBatch.js.map +1 -0
- package/dist/infrastructure/persistence/sqliteSerializer.d.ts +17 -0
- package/dist/infrastructure/persistence/sqliteSerializer.d.ts.map +1 -0
- package/dist/infrastructure/persistence/sqliteSerializer.js +81 -0
- package/dist/infrastructure/persistence/sqliteSerializer.js.map +1 -0
- package/dist/infrastructure/persistence/statements.d.ts +1 -1
- package/dist/infrastructure/persistence/statements.d.ts.map +1 -1
- package/dist/infrastructure/persistence/statements.js +3 -2
- package/dist/infrastructure/persistence/statements.js.map +1 -1
- package/dist/infrastructure/scheduler/cronScheduler.d.ts +7 -0
- package/dist/infrastructure/scheduler/cronScheduler.d.ts.map +1 -1
- package/dist/infrastructure/scheduler/cronScheduler.js +23 -3
- package/dist/infrastructure/scheduler/cronScheduler.js.map +1 -1
- package/dist/infrastructure/server/handler.d.ts.map +1 -1
- package/dist/infrastructure/server/handler.js +1 -186
- package/dist/infrastructure/server/handler.js.map +1 -1
- package/dist/infrastructure/server/handlerRoutes.d.ts +23 -0
- package/dist/infrastructure/server/handlerRoutes.d.ts.map +1 -0
- package/dist/infrastructure/server/handlerRoutes.js +190 -0
- package/dist/infrastructure/server/handlerRoutes.js.map +1 -0
- package/dist/infrastructure/server/handlers/core.d.ts.map +1 -1
- package/dist/infrastructure/server/handlers/core.js +26 -19
- package/dist/infrastructure/server/handlers/core.js.map +1 -1
- package/dist/infrastructure/server/http.d.ts +4 -25
- package/dist/infrastructure/server/http.d.ts.map +1 -1
- package/dist/infrastructure/server/http.js +68 -285
- package/dist/infrastructure/server/http.js.map +1 -1
- package/dist/infrastructure/server/httpEndpoints.d.ts +19 -0
- package/dist/infrastructure/server/httpEndpoints.d.ts.map +1 -0
- package/dist/infrastructure/server/httpEndpoints.js +151 -0
- package/dist/infrastructure/server/httpEndpoints.js.map +1 -0
- package/dist/infrastructure/server/protocol.d.ts +15 -1
- package/dist/infrastructure/server/protocol.d.ts.map +1 -1
- package/dist/infrastructure/server/protocol.js +37 -3
- package/dist/infrastructure/server/protocol.js.map +1 -1
- package/dist/infrastructure/server/sseHandler.d.ts +27 -0
- package/dist/infrastructure/server/sseHandler.d.ts.map +1 -0
- package/dist/infrastructure/server/sseHandler.js +77 -0
- package/dist/infrastructure/server/sseHandler.js.map +1 -0
- package/dist/infrastructure/server/tcp.d.ts +8 -10
- package/dist/infrastructure/server/tcp.d.ts.map +1 -1
- package/dist/infrastructure/server/tcp.js +51 -42
- package/dist/infrastructure/server/tcp.js.map +1 -1
- package/dist/infrastructure/server/wsHandler.d.ts +31 -0
- package/dist/infrastructure/server/wsHandler.d.ts.map +1 -0
- package/dist/infrastructure/server/wsHandler.js +63 -0
- package/dist/infrastructure/server/wsHandler.js.map +1 -0
- package/dist/main.js +2 -4
- package/dist/main.js.map +1 -1
- package/dist/mcp/index.js +3 -465
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/mcpHandlers.d.ts +129 -0
- package/dist/mcp/mcpHandlers.d.ts.map +1 -0
- package/dist/mcp/mcpHandlers.js +204 -0
- package/dist/mcp/mcpHandlers.js.map +1 -0
- package/dist/mcp/mcpTools.d.ts +15 -0
- package/dist/mcp/mcpTools.d.ts.map +1 -0
- package/dist/mcp/mcpTools.js +277 -0
- package/dist/mcp/mcpTools.js.map +1 -0
- package/dist/shared/lru.d.ts +23 -0
- package/dist/shared/lru.d.ts.map +1 -1
- package/dist/shared/lru.js +61 -3
- package/dist/shared/lru.js.map +1 -1
- package/dist/shared/skipList.d.ts +10 -2
- package/dist/shared/skipList.d.ts.map +1 -1
- package/dist/shared/skipList.js +22 -1
- package/dist/shared/skipList.js.map +1 -1
- package/package.json +2 -2
- package/dist/cli/dashboard.d.ts +0 -32
- package/dist/cli/dashboard.d.ts.map +0 -1
- package/dist/cli/dashboard.js +0 -183
- package/dist/cli/dashboard.js.map +0 -1
- package/dist/client/tcp/lineBuffer.d.ts +0 -17
- package/dist/client/tcp/lineBuffer.d.ts.map +0 -1
- package/dist/client/tcp/lineBuffer.js +0 -32
- package/dist/client/tcp/lineBuffer.js.map +0 -1
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shard - Container for queues within a shard
|
|
3
3
|
* Each shard manages multiple queues and their state
|
|
4
|
+
*
|
|
5
|
+
* Refactored to compose smaller modules:
|
|
6
|
+
* - UniqueKeyManager: deduplication with TTL
|
|
7
|
+
* - DlqShard: Dead Letter Queue operations
|
|
8
|
+
* - LimiterManager: rate limiting + concurrency
|
|
9
|
+
* - DependencyTracker: job dependency tracking
|
|
10
|
+
* - TemporalManager: temporal index + delayed job tracking
|
|
4
11
|
*/
|
|
5
12
|
import type { Job, JobId } from '../types/job';
|
|
6
|
-
import {
|
|
13
|
+
import type { QueueState } from '../types/queue';
|
|
7
14
|
import type { DlqEntry, DlqConfig, DlqFilter } from '../types/dlq';
|
|
8
15
|
import { FailureReason } from '../types/dlq';
|
|
9
16
|
import type { StallConfig } from '../types/stall';
|
|
@@ -29,150 +36,83 @@ export interface ShardStats {
|
|
|
29
36
|
export declare class Shard {
|
|
30
37
|
/** Priority queues by queue name */
|
|
31
38
|
readonly queues: Map<string, IndexedPriorityQueue>;
|
|
32
|
-
/**
|
|
33
|
-
readonly
|
|
34
|
-
/** DLQ
|
|
35
|
-
readonly
|
|
36
|
-
/**
|
|
37
|
-
readonly
|
|
39
|
+
/** Unique key manager for deduplication */
|
|
40
|
+
private readonly uniqueKeyManager;
|
|
41
|
+
/** DLQ manager */
|
|
42
|
+
private readonly dlqManager;
|
|
43
|
+
/** Limiter manager for rate/concurrency control */
|
|
44
|
+
private readonly limiterManager;
|
|
45
|
+
/** Dependency tracker */
|
|
46
|
+
private readonly dependencyTracker;
|
|
47
|
+
/** Temporal manager for index and delayed jobs */
|
|
48
|
+
private readonly temporalManager;
|
|
38
49
|
/** Running counters for O(1) stats - updated on every operation */
|
|
39
50
|
private readonly stats;
|
|
40
|
-
/** Set of delayed job IDs for tracking when they become ready */
|
|
41
|
-
private readonly delayedJobIds;
|
|
42
|
-
/**
|
|
43
|
-
* Min-heap of delayed jobs ordered by runAt for O(k) refresh
|
|
44
|
-
* Instead of O(n × queues) iteration
|
|
45
|
-
*/
|
|
46
|
-
private readonly delayedHeap;
|
|
47
|
-
/** Map from jobId to current runAt for stale detection in delayedHeap */
|
|
48
|
-
private readonly delayedRunAt;
|
|
49
|
-
/**
|
|
50
|
-
* Temporal index: Skip List for O(log n) insert/delete instead of O(n) splice
|
|
51
|
-
* Ordered by createdAt for efficient cleanQueue range queries
|
|
52
|
-
*/
|
|
53
|
-
private readonly temporalIndex;
|
|
54
|
-
/** Unique keys per queue for deduplication (with TTL support) */
|
|
55
|
-
readonly uniqueKeys: Map<string, Map<string, UniqueKeyEntry>>;
|
|
56
|
-
/** Jobs waiting for dependencies */
|
|
57
|
-
readonly waitingDeps: Map<JobId, Job>;
|
|
58
|
-
/**
|
|
59
|
-
* Reverse index: depId -> Set of jobIds waiting for that dependency
|
|
60
|
-
* Enables O(1) lookup when a dependency completes instead of O(n) scan
|
|
61
|
-
*/
|
|
62
|
-
readonly dependencyIndex: Map<JobId, Set<JobId>>;
|
|
63
|
-
/** Parent jobs waiting for children to complete */
|
|
64
|
-
readonly waitingChildren: Map<JobId, Job>;
|
|
65
|
-
/** Queue state (pause, rate limit, concurrency) */
|
|
66
|
-
readonly queueState: Map<string, QueueState>;
|
|
67
51
|
/** Active FIFO groups per queue */
|
|
68
52
|
readonly activeGroups: Map<string, Set<string>>;
|
|
69
|
-
/** Rate limiters per queue */
|
|
70
|
-
readonly rateLimiters: Map<string, RateLimiter>;
|
|
71
|
-
/** Concurrency limiters per queue */
|
|
72
|
-
readonly concurrencyLimiters: Map<string, ConcurrencyLimiter>;
|
|
73
53
|
/** Waiter entry with cancellation flag for O(1) cleanup */
|
|
74
54
|
private readonly waiters;
|
|
55
|
+
constructor();
|
|
75
56
|
/** Notify that jobs are available - wakes first non-cancelled waiter */
|
|
76
57
|
notify(): void;
|
|
77
58
|
/** Wait for a job to become available (with timeout) */
|
|
78
59
|
waitForJob(timeoutMs: number): Promise<void>;
|
|
79
|
-
/** Get or create queue */
|
|
80
60
|
getQueue(name: string): IndexedPriorityQueue;
|
|
81
|
-
/** Get queue state */
|
|
82
61
|
getState(name: string): QueueState;
|
|
83
|
-
/** Check if queue is paused */
|
|
84
62
|
isPaused(name: string): boolean;
|
|
85
|
-
/** Pause queue */
|
|
86
63
|
pause(name: string): void;
|
|
87
|
-
/** Resume queue */
|
|
88
64
|
resume(name: string): void;
|
|
89
|
-
/** Check if unique key is available (not registered or expired) */
|
|
90
65
|
isUniqueAvailable(queue: string, key: string): boolean;
|
|
91
|
-
/** Get unique key entry (returns null if not found or expired) */
|
|
92
66
|
getUniqueKeyEntry(queue: string, key: string): UniqueKeyEntry | null;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
/** Register unique key with TTL support */
|
|
96
|
-
registerUniqueKeyWithTtl(queue: string, key: string, jobId: JobId | undefined, ttl?: number): void;
|
|
97
|
-
/** Extend TTL for an existing unique key */
|
|
67
|
+
registerUniqueKey(queue: string, key: string, jobId: JobId): void;
|
|
68
|
+
registerUniqueKeyWithTtl(queue: string, key: string, jobId: JobId, ttl?: number): void;
|
|
98
69
|
extendUniqueKeyTtl(queue: string, key: string, ttl: number): boolean;
|
|
99
|
-
/** Release unique key */
|
|
100
70
|
releaseUniqueKey(queue: string, key: string): void;
|
|
101
|
-
/** Clean expired unique keys (call periodically) */
|
|
102
71
|
cleanExpiredUniqueKeys(): number;
|
|
103
|
-
|
|
72
|
+
get uniqueKeys(): Map<string, Map<string, UniqueKeyEntry>>;
|
|
104
73
|
isGroupActive(queue: string, groupId: string): boolean;
|
|
105
|
-
/** Mark FIFO group as active */
|
|
106
74
|
activateGroup(queue: string, groupId: string): void;
|
|
107
|
-
/** Release FIFO group */
|
|
108
75
|
releaseGroup(queue: string, groupId: string): void;
|
|
109
|
-
/** Set rate limit for queue */
|
|
110
76
|
setRateLimit(queue: string, limit: number): void;
|
|
111
|
-
/** Clear rate limit */
|
|
112
77
|
clearRateLimit(queue: string): void;
|
|
113
|
-
/** Try to acquire rate limit token */
|
|
114
78
|
tryAcquireRateLimit(queue: string): boolean;
|
|
115
|
-
/** Set concurrency limit for queue */
|
|
116
79
|
setConcurrency(queue: string, limit: number): void;
|
|
117
|
-
/** Clear concurrency limit */
|
|
118
80
|
clearConcurrency(queue: string): void;
|
|
119
|
-
/** Try to acquire concurrency slot */
|
|
120
81
|
tryAcquireConcurrency(queue: string): boolean;
|
|
121
|
-
/** Release concurrency slot */
|
|
122
82
|
releaseConcurrency(queue: string): void;
|
|
123
|
-
|
|
83
|
+
get queueState(): Map<string, QueueState>;
|
|
84
|
+
/** Clear limiter data for a queue (rate limits, concurrency) */
|
|
85
|
+
clearQueueLimiters(queue: string): void;
|
|
124
86
|
releaseJobResources(queue: string, uniqueKey: string | null, groupId: string | null): void;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
*/
|
|
87
|
+
get waitingDeps(): Map<JobId, Job>;
|
|
88
|
+
get dependencyIndex(): Map<JobId, Set<JobId>>;
|
|
89
|
+
get waitingChildren(): Map<JobId, Job>;
|
|
129
90
|
registerDependencies(jobId: JobId, dependsOn: JobId[]): void;
|
|
130
|
-
/**
|
|
131
|
-
* Unregister a job's dependencies from the reverse index
|
|
132
|
-
* Call when removing a job from waitingDeps
|
|
133
|
-
*/
|
|
134
91
|
unregisterDependencies(jobId: JobId, dependsOn: JobId[]): void;
|
|
135
|
-
/**
|
|
136
|
-
* Get jobs waiting for a specific dependency - O(1)
|
|
137
|
-
*/
|
|
138
92
|
getJobsWaitingFor(depId: JobId): Set<JobId> | undefined;
|
|
139
|
-
|
|
93
|
+
get dlq(): Map<string, DlqEntry[]>;
|
|
94
|
+
get dlqConfig(): Map<string, DlqConfig>;
|
|
95
|
+
get stallConfig(): Map<string, StallConfig>;
|
|
140
96
|
getDlqConfig(queue: string): DlqConfig;
|
|
141
|
-
/** Set DLQ config for queue */
|
|
142
97
|
setDlqConfig(queue: string, config: Partial<DlqConfig>): void;
|
|
143
|
-
/** Get stall config for queue */
|
|
144
98
|
getStallConfig(queue: string): StallConfig;
|
|
145
|
-
/** Set stall config for queue */
|
|
146
99
|
setStallConfig(queue: string, config: Partial<StallConfig>): void;
|
|
147
|
-
/** Add job to DLQ with full metadata */
|
|
148
100
|
addToDlq(job: Job, reason?: FailureReason, error?: string | null): DlqEntry;
|
|
149
|
-
/**
|
|
101
|
+
/** Restore an existing DlqEntry (for recovery from persistence) */
|
|
102
|
+
restoreDlqEntry(queue: string, entry: DlqEntry): void;
|
|
150
103
|
getDlqEntries(queue: string): DlqEntry[];
|
|
151
|
-
/** Get DLQ jobs (for backward compatibility) */
|
|
152
104
|
getDlq(queue: string, count?: number): Job[];
|
|
153
|
-
/** Get DLQ entries with filter */
|
|
154
105
|
getDlqFiltered(queue: string, filter: DlqFilter): DlqEntry[];
|
|
155
|
-
/** Remove entry from DLQ by job ID */
|
|
156
106
|
removeFromDlq(queue: string, jobId: JobId): DlqEntry | null;
|
|
157
|
-
/** Get entries ready for auto-retry */
|
|
158
107
|
getAutoRetryEntries(queue: string, now?: number): DlqEntry[];
|
|
159
|
-
/** Get expired entries for cleanup */
|
|
160
108
|
getExpiredEntries(queue: string, now?: number): DlqEntry[];
|
|
161
|
-
/** Remove expired entries */
|
|
162
109
|
purgeExpired(queue: string, now?: number): number;
|
|
163
|
-
/** Clear DLQ for queue */
|
|
164
110
|
clearDlq(queue: string): number;
|
|
165
|
-
/** Get waiting job count for queue */
|
|
166
111
|
getWaitingCount(queue: string): number;
|
|
167
|
-
/** Get DLQ count for queue */
|
|
168
112
|
getDlqCount(queue: string): number;
|
|
169
|
-
/** Get all queue names in this shard */
|
|
170
113
|
getQueueNames(): string[];
|
|
171
|
-
/** Get job counts grouped by priority for a queue */
|
|
172
114
|
getCountsPerPriority(queue: string): Map<number, number>;
|
|
173
|
-
/** Get shard statistics - O(1) */
|
|
174
115
|
getStats(): ShardStats;
|
|
175
|
-
/** Get internal structure sizes for memory debugging */
|
|
176
116
|
getInternalSizes(): {
|
|
177
117
|
delayedJobIds: number;
|
|
178
118
|
delayedHeap: number;
|
|
@@ -180,55 +120,24 @@ export declare class Shard {
|
|
|
180
120
|
temporalIndex: number;
|
|
181
121
|
waiters: number;
|
|
182
122
|
};
|
|
183
|
-
/** Increment queued jobs counter and add to temporal index */
|
|
184
123
|
incrementQueued(jobId: JobId, isDelayed: boolean, createdAt?: number, queue?: string, runAt?: number): void;
|
|
185
|
-
/** Decrement queued jobs counter and remove from temporal index */
|
|
186
124
|
decrementQueued(jobId: JobId): void;
|
|
187
|
-
/** Increment DLQ counter */
|
|
188
125
|
incrementDlq(): void;
|
|
189
|
-
/** Decrement DLQ counter */
|
|
190
126
|
decrementDlq(count?: number): void;
|
|
191
|
-
/**
|
|
192
|
-
* Update delayed jobs that have become ready (call periodically)
|
|
193
|
-
* O(k) where k = jobs that became ready, instead of O(n × queues)
|
|
194
|
-
*/
|
|
195
127
|
refreshDelayedCount(now: number): void;
|
|
196
|
-
/** Reset all counters (used after drain/obliterate) */
|
|
197
128
|
resetQueuedCounters(): void;
|
|
198
|
-
/** Reset DLQ counter */
|
|
199
129
|
resetDlqCounter(): void;
|
|
200
|
-
/**
|
|
201
|
-
* Add job to temporal index - O(log n) with Skip List
|
|
202
|
-
* Previously O(n) with array splice
|
|
203
|
-
*/
|
|
204
|
-
private addToTemporalIndex;
|
|
205
|
-
/**
|
|
206
|
-
* Get old jobs from temporal index - O(log n + k) where k = returned jobs
|
|
207
|
-
* Returns jobs older than threshold, up to limit
|
|
208
|
-
*/
|
|
209
130
|
getOldJobs(queue: string, thresholdMs: number, limit: number): Array<{
|
|
210
131
|
jobId: JobId;
|
|
211
132
|
createdAt: number;
|
|
212
133
|
}>;
|
|
213
|
-
/**
|
|
214
|
-
* Remove job from temporal index (called after job is cleaned)
|
|
215
|
-
* O(n) in worst case but typically fast with deleteWhere
|
|
216
|
-
*/
|
|
217
134
|
removeFromTemporalIndex(jobId: JobId): void;
|
|
218
|
-
/** Clear temporal index for a queue */
|
|
219
135
|
clearTemporalIndexForQueue(queue: string): void;
|
|
220
|
-
/**
|
|
221
|
-
* Clean orphaned temporal index entries.
|
|
222
|
-
* Removes entries for jobs that no longer exist in the queue.
|
|
223
|
-
* Call periodically to prevent memory leaks.
|
|
224
|
-
*/
|
|
225
136
|
cleanOrphanedTemporalEntries(): number;
|
|
226
|
-
/** Drain all waiting jobs from queue, returns drained job IDs for cleanup */
|
|
227
137
|
drain(queue: string): {
|
|
228
138
|
count: number;
|
|
229
139
|
jobIds: JobId[];
|
|
230
140
|
};
|
|
231
|
-
/** Obliterate queue completely */
|
|
232
141
|
obliterate(queue: string): void;
|
|
233
142
|
}
|
|
234
143
|
//# sourceMappingURL=shard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shard.d.ts","sourceRoot":"","sources":["../../../src/domain/queue/shard.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shard.d.ts","sourceRoot":"","sources":["../../../src/domain/queue/shard.ts"],"names":[],"mappings":"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"}
|