bunqueue 1.9.8 → 2.0.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/dist/application/backgroundTasks.d.ts +10 -0
- package/dist/application/backgroundTasks.d.ts.map +1 -1
- package/dist/application/backgroundTasks.js +64 -13
- package/dist/application/backgroundTasks.js.map +1 -1
- package/dist/application/cleanupTasks.js +5 -1
- package/dist/application/cleanupTasks.js.map +1 -1
- package/dist/application/clientTracking.d.ts.map +1 -1
- package/dist/application/clientTracking.js +25 -16
- package/dist/application/clientTracking.js.map +1 -1
- package/dist/application/contextFactory.d.ts.map +1 -1
- package/dist/application/contextFactory.js +1 -0
- package/dist/application/contextFactory.js.map +1 -1
- package/dist/application/dependencyProcessor.d.ts.map +1 -1
- package/dist/application/dependencyProcessor.js +14 -13
- package/dist/application/dependencyProcessor.js.map +1 -1
- package/dist/application/eventsManager.d.ts.map +1 -1
- package/dist/application/eventsManager.js +16 -4
- package/dist/application/eventsManager.js.map +1 -1
- package/dist/application/jobLogsManager.d.ts +2 -2
- package/dist/application/jobLogsManager.d.ts.map +1 -1
- package/dist/application/jobLogsManager.js +13 -3
- package/dist/application/jobLogsManager.js.map +1 -1
- package/dist/application/lockManager.d.ts +1 -0
- package/dist/application/lockManager.d.ts.map +1 -1
- package/dist/application/lockManager.js +54 -36
- package/dist/application/lockManager.js.map +1 -1
- package/dist/application/operations/ack.d.ts +3 -1
- package/dist/application/operations/ack.d.ts.map +1 -1
- package/dist/application/operations/ack.js +25 -1
- package/dist/application/operations/ack.js.map +1 -1
- package/dist/application/operations/ackHelpers.d.ts +1 -0
- package/dist/application/operations/ackHelpers.d.ts.map +1 -1
- package/dist/application/operations/ackHelpers.js +12 -1
- package/dist/application/operations/ackHelpers.js.map +1 -1
- package/dist/application/operations/jobManagement.d.ts +1 -1
- package/dist/application/operations/jobManagement.d.ts.map +1 -1
- package/dist/application/operations/jobManagement.js +23 -3
- package/dist/application/operations/jobManagement.js.map +1 -1
- package/dist/application/operations/push.d.ts +1 -1
- package/dist/application/operations/push.d.ts.map +1 -1
- package/dist/application/operations/push.js +25 -9
- package/dist/application/operations/push.js.map +1 -1
- package/dist/application/operations/queryOperations.d.ts +3 -0
- package/dist/application/operations/queryOperations.d.ts.map +1 -1
- package/dist/application/operations/queryOperations.js +29 -0
- package/dist/application/operations/queryOperations.js.map +1 -1
- package/dist/application/queueManager.d.ts +15 -1
- package/dist/application/queueManager.d.ts.map +1 -1
- package/dist/application/queueManager.js +77 -3
- package/dist/application/queueManager.js.map +1 -1
- package/dist/application/stallDetection.js +27 -22
- package/dist/application/stallDetection.js.map +1 -1
- package/dist/application/types.js +1 -1
- package/dist/application/types.js.map +1 -1
- package/dist/application/webhookManager.d.ts.map +1 -1
- package/dist/application/webhookManager.js +18 -2
- package/dist/application/webhookManager.js.map +1 -1
- package/dist/application/workerManager.d.ts.map +1 -1
- package/dist/application/workerManager.js +4 -2
- package/dist/application/workerManager.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 +29 -1
- package/dist/client/events.d.ts.map +1 -1
- package/dist/client/events.js +96 -28
- package/dist/client/events.js.map +1 -1
- package/dist/client/flow.d.ts +144 -3
- package/dist/client/flow.d.ts.map +1 -1
- package/dist/client/flow.js +538 -68
- package/dist/client/flow.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/queue/queue.d.ts +260 -1
- package/dist/client/queue/queue.d.ts.map +1 -1
- package/dist/client/queue/queue.js +1346 -17
- 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 +19 -14
- package/dist/client/tcpPool.js.map +1 -1
- package/dist/client/types.d.ts +430 -13
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/types.js +346 -5
- package/dist/client/types.js.map +1 -1
- package/dist/client/worker/ackBatcher.d.ts +2 -1
- package/dist/client/worker/ackBatcher.d.ts.map +1 -1
- package/dist/client/worker/ackBatcher.js +29 -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 +15 -6
- package/dist/client/worker/processor.js.map +1 -1
- package/dist/client/worker/worker.d.ts +117 -0
- package/dist/client/worker/worker.d.ts.map +1 -1
- package/dist/client/worker/worker.js +375 -3
- package/dist/client/worker/worker.js.map +1 -1
- package/dist/domain/queue/dlqShard.d.ts +2 -0
- package/dist/domain/queue/dlqShard.d.ts.map +1 -1
- package/dist/domain/queue/dlqShard.js +12 -2
- package/dist/domain/queue/dlqShard.js.map +1 -1
- package/dist/domain/queue/priorityQueue.d.ts.map +1 -1
- package/dist/domain/queue/priorityQueue.js +24 -18
- package/dist/domain/queue/priorityQueue.js.map +1 -1
- package/dist/domain/queue/shard.d.ts +8 -2
- package/dist/domain/queue/shard.d.ts.map +1 -1
- package/dist/domain/queue/shard.js +27 -9
- package/dist/domain/queue/shard.js.map +1 -1
- package/dist/domain/queue/temporalManager.d.ts +1 -0
- package/dist/domain/queue/temporalManager.d.ts.map +1 -1
- package/dist/domain/queue/temporalManager.js +2 -1
- package/dist/domain/queue/temporalManager.js.map +1 -1
- package/dist/domain/queue/uniqueKeyManager.d.ts +2 -2
- package/dist/domain/queue/uniqueKeyManager.d.ts.map +1 -1
- package/dist/domain/queue/uniqueKeyManager.js +3 -3
- package/dist/domain/queue/uniqueKeyManager.js.map +1 -1
- package/dist/domain/types/command.d.ts +6 -0
- package/dist/domain/types/command.d.ts.map +1 -1
- package/dist/domain/types/job.d.ts +89 -2
- package/dist/domain/types/job.d.ts.map +1 -1
- package/dist/domain/types/job.js +94 -26
- package/dist/domain/types/job.js.map +1 -1
- package/dist/domain/types/queue.d.ts +11 -1
- package/dist/domain/types/queue.d.ts.map +1 -1
- package/dist/infrastructure/persistence/sqlite.d.ts +2 -0
- package/dist/infrastructure/persistence/sqlite.d.ts.map +1 -1
- package/dist/infrastructure/persistence/sqlite.js +5 -1
- package/dist/infrastructure/persistence/sqlite.js.map +1 -1
- package/dist/infrastructure/persistence/sqliteBatch.d.ts +9 -4
- package/dist/infrastructure/persistence/sqliteBatch.d.ts.map +1 -1
- package/dist/infrastructure/persistence/sqliteBatch.js +38 -21
- package/dist/infrastructure/persistence/sqliteBatch.js.map +1 -1
- package/dist/infrastructure/persistence/sqliteSerializer.d.ts.map +1 -1
- package/dist/infrastructure/persistence/sqliteSerializer.js +14 -0
- package/dist/infrastructure/persistence/sqliteSerializer.js.map +1 -1
- 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 +46 -12
- package/dist/infrastructure/scheduler/cronScheduler.js.map +1 -1
- 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/handlers/query.d.ts.map +1 -1
- package/dist/infrastructure/server/handlers/query.js +1 -16
- package/dist/infrastructure/server/handlers/query.js.map +1 -1
- package/dist/infrastructure/server/http.d.ts.map +1 -1
- package/dist/infrastructure/server/http.js +27 -2
- package/dist/infrastructure/server/http.js.map +1 -1
- 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/rateLimiter.d.ts.map +1 -1
- package/dist/infrastructure/server/rateLimiter.js +5 -3
- package/dist/infrastructure/server/rateLimiter.js.map +1 -1
- 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 +87 -46
- package/dist/infrastructure/server/tcp.js.map +1 -1
- package/dist/main.js +7 -6
- package/dist/main.js.map +1 -1
- package/dist/shared/lock.d.ts +1 -1
- package/dist/shared/lock.d.ts.map +1 -1
- package/dist/shared/lock.js +6 -4
- package/dist/shared/lock.js.map +1 -1
- package/dist/shared/lru.d.ts +51 -0
- package/dist/shared/lru.d.ts.map +1 -1
- package/dist/shared/lru.js +89 -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 +1 -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
package/dist/client/events.js
CHANGED
|
@@ -6,61 +6,129 @@ import { getSharedManager } from './manager';
|
|
|
6
6
|
/**
|
|
7
7
|
* QueueEvents class for listening to queue events
|
|
8
8
|
* Provides a way to listen to events without processing jobs
|
|
9
|
+
*
|
|
10
|
+
* BullMQ v5 compatible events:
|
|
11
|
+
* - waiting: job added to queue
|
|
12
|
+
* - active: job started processing
|
|
13
|
+
* - completed: job completed successfully
|
|
14
|
+
* - failed: job failed
|
|
15
|
+
* - progress: job progress updated
|
|
16
|
+
* - stalled: job stalled (no heartbeat)
|
|
17
|
+
* - removed: job removed from queue
|
|
18
|
+
* - delayed: job moved to delayed state
|
|
19
|
+
* - duplicated: duplicate job detected
|
|
20
|
+
* - retried: job retried
|
|
21
|
+
* - waiting-children: job waiting for children to complete
|
|
22
|
+
* - drained: queue has no more waiting jobs
|
|
23
|
+
* - error: error occurred
|
|
9
24
|
*/
|
|
10
25
|
export class QueueEvents extends EventEmitter {
|
|
11
26
|
name;
|
|
12
27
|
running = false;
|
|
13
|
-
pollTimer = null;
|
|
14
28
|
unsubscribe = null;
|
|
29
|
+
ready = false;
|
|
15
30
|
constructor(name) {
|
|
16
31
|
super();
|
|
17
32
|
this.name = name;
|
|
18
33
|
this.start();
|
|
19
34
|
}
|
|
20
35
|
start() {
|
|
21
|
-
|
|
36
|
+
// Guard against double subscription (race condition prevention)
|
|
37
|
+
if (this.running || this.unsubscribe)
|
|
22
38
|
return;
|
|
23
39
|
this.running = true;
|
|
24
40
|
// Subscribe to events from QueueManager
|
|
25
41
|
const manager = getSharedManager();
|
|
26
42
|
const handler = (event) => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
try {
|
|
44
|
+
if (event.queue !== this.name)
|
|
45
|
+
return;
|
|
46
|
+
switch (event.eventType) {
|
|
47
|
+
case "pushed" /* EventType.Pushed */:
|
|
48
|
+
this.emit('waiting', { jobId: event.jobId });
|
|
49
|
+
break;
|
|
50
|
+
case "pulled" /* EventType.Pulled */:
|
|
51
|
+
this.emit('active', { jobId: event.jobId });
|
|
52
|
+
break;
|
|
53
|
+
case "completed" /* EventType.Completed */:
|
|
54
|
+
this.emit('completed', { jobId: event.jobId, returnvalue: event.data });
|
|
55
|
+
break;
|
|
56
|
+
case "failed" /* EventType.Failed */:
|
|
57
|
+
this.emit('failed', { jobId: event.jobId, failedReason: event.data });
|
|
58
|
+
// Also emit error event for failed jobs (BullMQ compatibility)
|
|
59
|
+
if (event.error) {
|
|
60
|
+
this.emit('error', new Error(event.error));
|
|
61
|
+
}
|
|
62
|
+
break;
|
|
63
|
+
case "progress" /* EventType.Progress */:
|
|
64
|
+
this.emit('progress', { jobId: event.jobId, data: event.data });
|
|
65
|
+
break;
|
|
66
|
+
case "stalled" /* EventType.Stalled */:
|
|
67
|
+
this.emit('stalled', { jobId: event.jobId });
|
|
68
|
+
break;
|
|
69
|
+
// BullMQ v5 additional events
|
|
70
|
+
case "removed" /* EventType.Removed */:
|
|
71
|
+
this.emit('removed', { jobId: event.jobId, prev: event.prev ?? 'unknown' });
|
|
72
|
+
break;
|
|
73
|
+
case "delayed" /* EventType.Delayed */:
|
|
74
|
+
this.emit('delayed', { jobId: event.jobId, delay: event.delay ?? 0 });
|
|
75
|
+
break;
|
|
76
|
+
case "duplicated" /* EventType.Duplicated */:
|
|
77
|
+
this.emit('duplicated', { jobId: event.jobId });
|
|
78
|
+
break;
|
|
79
|
+
case "retried" /* EventType.Retried */:
|
|
80
|
+
this.emit('retried', { jobId: event.jobId, prev: event.prev ?? 'failed' });
|
|
81
|
+
break;
|
|
82
|
+
case "waiting-children" /* EventType.WaitingChildren */:
|
|
83
|
+
this.emit('waiting-children', { jobId: event.jobId });
|
|
84
|
+
break;
|
|
85
|
+
case "drained" /* EventType.Drained */:
|
|
86
|
+
this.emit('drained', { id: event.jobId });
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
// Emit error event for any handler errors
|
|
92
|
+
this.emit('error', err instanceof Error ? err : new Error(String(err)));
|
|
48
93
|
}
|
|
49
94
|
};
|
|
50
95
|
this.unsubscribe = manager.subscribe(handler);
|
|
96
|
+
this.ready = true;
|
|
97
|
+
}
|
|
98
|
+
/** Emit an error event (can be called externally) */
|
|
99
|
+
emitError(error) {
|
|
100
|
+
this.emit('error', error);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Wait until the QueueEvents is ready to receive events.
|
|
104
|
+
* In embedded mode, this resolves immediately.
|
|
105
|
+
* BullMQ v5 compatible.
|
|
106
|
+
*/
|
|
107
|
+
async waitUntilReady() {
|
|
108
|
+
// In embedded mode, we're always ready after construction
|
|
109
|
+
if (this.ready)
|
|
110
|
+
return;
|
|
111
|
+
// Wait a tick for the subscription to complete
|
|
112
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Disconnect from the event stream.
|
|
116
|
+
* Alias for close() for BullMQ v5 compatibility.
|
|
117
|
+
*/
|
|
118
|
+
disconnect() {
|
|
119
|
+
this.close();
|
|
120
|
+
return Promise.resolve();
|
|
51
121
|
}
|
|
52
122
|
/** Close the event listener */
|
|
53
123
|
close() {
|
|
54
124
|
this.running = false;
|
|
55
|
-
|
|
56
|
-
clearTimeout(this.pollTimer);
|
|
57
|
-
this.pollTimer = null;
|
|
58
|
-
}
|
|
125
|
+
this.ready = false;
|
|
59
126
|
if (this.unsubscribe) {
|
|
60
127
|
this.unsubscribe();
|
|
61
128
|
this.unsubscribe = null;
|
|
62
129
|
}
|
|
63
|
-
|
|
130
|
+
// Note: User-attached listeners are NOT removed here.
|
|
131
|
+
// Users should manage their own listeners via removeListener() or removeAllListeners().
|
|
64
132
|
}
|
|
65
133
|
}
|
|
66
134
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/client/events.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAG7C
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/client/events.ts"],"names":[],"mappings":"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"}
|
package/dist/client/flow.d.ts
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* FlowProducer - Job chaining and pipelines
|
|
3
|
+
* BullMQ v5 compatible
|
|
3
4
|
*/
|
|
4
|
-
import type { JobOptions } from './types';
|
|
5
|
-
/**
|
|
5
|
+
import type { JobOptions, ConnectionOptions, Job } from './types';
|
|
6
|
+
/** FlowProducer options */
|
|
7
|
+
export interface FlowProducerOptions {
|
|
8
|
+
/** Use embedded mode (no server) */
|
|
9
|
+
embedded?: boolean;
|
|
10
|
+
/** TCP connection options */
|
|
11
|
+
connection?: ConnectionOptions;
|
|
12
|
+
}
|
|
13
|
+
/** Step definition in a flow (legacy bunqueue API) */
|
|
6
14
|
export interface FlowStep<T = unknown> {
|
|
7
15
|
/** Job name */
|
|
8
16
|
name: string;
|
|
@@ -15,11 +23,50 @@ export interface FlowStep<T = unknown> {
|
|
|
15
23
|
/** Child steps (for tree structures) */
|
|
16
24
|
children?: FlowStep[];
|
|
17
25
|
}
|
|
18
|
-
/** Result of adding a flow */
|
|
26
|
+
/** Result of adding a flow (legacy bunqueue API) */
|
|
19
27
|
export interface FlowResult {
|
|
20
28
|
/** Job IDs in order */
|
|
21
29
|
jobIds: string[];
|
|
22
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* FlowJob - BullMQ v5 compatible flow job definition.
|
|
33
|
+
* Children are processed BEFORE the parent.
|
|
34
|
+
*/
|
|
35
|
+
export interface FlowJob<T = unknown> {
|
|
36
|
+
/** Job name */
|
|
37
|
+
name: string;
|
|
38
|
+
/** Queue name */
|
|
39
|
+
queueName: string;
|
|
40
|
+
/** Job data */
|
|
41
|
+
data?: T;
|
|
42
|
+
/** Job options */
|
|
43
|
+
opts?: JobOptions;
|
|
44
|
+
/** Child jobs (processed BEFORE this job) */
|
|
45
|
+
children?: FlowJob[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* JobNode - BullMQ v5 compatible result from adding a flow.
|
|
49
|
+
* Contains the job and its children nodes.
|
|
50
|
+
*/
|
|
51
|
+
export interface JobNode<T = unknown> {
|
|
52
|
+
/** The job instance */
|
|
53
|
+
job: Job<T>;
|
|
54
|
+
/** Child nodes (if any) */
|
|
55
|
+
children?: JobNode[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Options for getFlow method (BullMQ v5 compatible).
|
|
59
|
+
*/
|
|
60
|
+
export interface GetFlowOpts {
|
|
61
|
+
/** Job ID to get the flow for */
|
|
62
|
+
id: string;
|
|
63
|
+
/** Queue name where the job is located */
|
|
64
|
+
queueName: string;
|
|
65
|
+
/** Maximum depth to traverse (default: unlimited) */
|
|
66
|
+
depth?: number;
|
|
67
|
+
/** Maximum number of children to fetch per level (default: unlimited) */
|
|
68
|
+
maxChildren?: number;
|
|
69
|
+
}
|
|
23
70
|
/**
|
|
24
71
|
* FlowProducer creates job flows with automatic dependencies.
|
|
25
72
|
*
|
|
@@ -45,6 +92,93 @@ export interface FlowResult {
|
|
|
45
92
|
* ```
|
|
46
93
|
*/
|
|
47
94
|
export declare class FlowProducer {
|
|
95
|
+
private readonly embedded;
|
|
96
|
+
private readonly tcp;
|
|
97
|
+
private readonly useSharedPool;
|
|
98
|
+
constructor(opts?: FlowProducerOptions);
|
|
99
|
+
/** Close the connection pool (only if using dedicated pool) */
|
|
100
|
+
close(): void;
|
|
101
|
+
/**
|
|
102
|
+
* Disconnect from the server (BullMQ v5 compatible).
|
|
103
|
+
* Alias for close().
|
|
104
|
+
*/
|
|
105
|
+
disconnect(): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Wait until the FlowProducer is ready (BullMQ v5 compatible).
|
|
108
|
+
* In embedded mode, resolves immediately. In TCP mode, ensures connection.
|
|
109
|
+
*/
|
|
110
|
+
waitUntilReady(): Promise<void>;
|
|
111
|
+
/**
|
|
112
|
+
* Add a flow (BullMQ v5 compatible).
|
|
113
|
+
*
|
|
114
|
+
* Children are processed BEFORE their parent. When all children complete,
|
|
115
|
+
* the parent becomes processable and can access children results via
|
|
116
|
+
* `job.getChildrenValues()`.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const flow = new FlowProducer();
|
|
121
|
+
*
|
|
122
|
+
* // Children execute first, then parent
|
|
123
|
+
* const { job, children } = await flow.add({
|
|
124
|
+
* name: 'parent',
|
|
125
|
+
* queueName: 'main',
|
|
126
|
+
* data: { type: 'aggregate' },
|
|
127
|
+
* children: [
|
|
128
|
+
* { name: 'child1', queueName: 'main', data: { id: 1 } },
|
|
129
|
+
* { name: 'child2', queueName: 'main', data: { id: 2 } },
|
|
130
|
+
* ],
|
|
131
|
+
* });
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
add<T = unknown>(flow: FlowJob<T>): Promise<JobNode<T>>;
|
|
135
|
+
/**
|
|
136
|
+
* Add multiple flows (BullMQ v5 compatible).
|
|
137
|
+
*/
|
|
138
|
+
addBulk<T = unknown>(flows: FlowJob<T>[]): Promise<JobNode<T>[]>;
|
|
139
|
+
/**
|
|
140
|
+
* Get a flow tree starting from a job (BullMQ v5 compatible).
|
|
141
|
+
*
|
|
142
|
+
* Retrieves the job and all its children recursively, building a JobNode tree.
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```typescript
|
|
146
|
+
* const flow = new FlowProducer();
|
|
147
|
+
*
|
|
148
|
+
* // Get a previously created flow
|
|
149
|
+
* const node = await flow.getFlow({
|
|
150
|
+
* id: 'job-id',
|
|
151
|
+
* queueName: 'my-queue',
|
|
152
|
+
* });
|
|
153
|
+
*
|
|
154
|
+
* if (node) {
|
|
155
|
+
* console.log('Parent:', node.job.name);
|
|
156
|
+
* console.log('Children:', node.children?.length ?? 0);
|
|
157
|
+
* }
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
getFlow<T = unknown>(opts: GetFlowOpts): Promise<JobNode<T> | null>;
|
|
161
|
+
/** Get flow in embedded mode */
|
|
162
|
+
private getFlowEmbedded;
|
|
163
|
+
/** Get flow in TCP mode */
|
|
164
|
+
private getFlowTcp;
|
|
165
|
+
/** Build JobNode recursively from internal job */
|
|
166
|
+
private buildJobNode;
|
|
167
|
+
/** Build JobNode from TCP response */
|
|
168
|
+
private buildJobNodeFromTcp;
|
|
169
|
+
/** Extract user data (remove internal fields) */
|
|
170
|
+
private extractUserDataFromInternal;
|
|
171
|
+
/**
|
|
172
|
+
* Internal: Recursively add a flow node and its children.
|
|
173
|
+
* Children are created first with parent reference, then parent is created.
|
|
174
|
+
*/
|
|
175
|
+
private addFlowNode;
|
|
176
|
+
/** Push a job with parent/children tracking */
|
|
177
|
+
private pushJobWithParent;
|
|
178
|
+
/** Create a simple Job object */
|
|
179
|
+
private createJobObject;
|
|
180
|
+
/** Push a job via embedded manager or TCP */
|
|
181
|
+
private pushJob;
|
|
48
182
|
/**
|
|
49
183
|
* Add a chain of jobs where each depends on the previous.
|
|
50
184
|
* Jobs execute sequentially: step[0] → step[1] → step[2] → ...
|
|
@@ -71,13 +205,20 @@ export declare class FlowProducer {
|
|
|
71
205
|
*/
|
|
72
206
|
addTree(root: FlowStep): Promise<FlowResult>;
|
|
73
207
|
private addTreeNode;
|
|
208
|
+
/**
|
|
209
|
+
* Cleanup jobs that were created before a failure occurred.
|
|
210
|
+
* Cancels each job to prevent orphaned jobs in the queue.
|
|
211
|
+
*/
|
|
212
|
+
private cleanupJobs;
|
|
74
213
|
/**
|
|
75
214
|
* Get the result of a completed parent job.
|
|
76
215
|
* Call this from within a worker to access the previous step's result.
|
|
216
|
+
* Note: Only works in embedded mode.
|
|
77
217
|
*/
|
|
78
218
|
getParentResult(parentId: string): unknown;
|
|
79
219
|
/**
|
|
80
220
|
* Get results from multiple parent jobs (for merge scenarios).
|
|
221
|
+
* Note: Only works in embedded mode.
|
|
81
222
|
*/
|
|
82
223
|
getParentResults(parentIds: string[]): Map<string, unknown>;
|
|
83
224
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/client/flow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/client/flow.ts"],"names":[],"mappings":"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"}
|