nmtjs 0.15.0-beta.21 → 0.15.0-beta.22
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/index.d.ts +2 -0
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/injectables.d.ts +5 -0
- package/dist/runtime/injectables.js +4 -0
- package/dist/runtime/injectables.js.map +1 -1
- package/dist/runtime/jobs/manager.d.ts +19 -26
- package/dist/runtime/jobs/manager.js +64 -18
- package/dist/runtime/jobs/manager.js.map +1 -1
- package/dist/runtime/jobs/router.d.ts +21 -10
- package/dist/runtime/jobs/router.js +27 -12
- package/dist/runtime/jobs/router.js.map +1 -1
- package/dist/runtime/jobs/runner.d.ts +27 -4
- package/dist/runtime/jobs/runner.js +74 -11
- package/dist/runtime/jobs/runner.js.map +1 -1
- package/dist/runtime/jobs/types.d.ts +80 -0
- package/dist/runtime/jobs/types.js +5 -0
- package/dist/runtime/jobs/types.js.map +1 -0
- package/dist/runtime/server/jobs.js +19 -10
- package/dist/runtime/server/jobs.js.map +1 -1
- package/dist/runtime/workers/job.js.map +1 -1
- package/package.json +12 -12
- package/src/runtime/index.ts +1 -0
- package/src/runtime/injectables.ts +13 -0
- package/src/runtime/jobs/manager.ts +87 -43
- package/src/runtime/jobs/router.ts +55 -22
- package/src/runtime/jobs/runner.ts +120 -15
- package/src/runtime/jobs/types.ts +110 -0
- package/src/runtime/server/jobs.ts +26 -10
- package/src/runtime/workers/job.ts +2 -7
|
@@ -54,7 +54,7 @@ import { anyAbortSignal } from '@nmtjs/common';
|
|
|
54
54
|
import { Scope } from '@nmtjs/core';
|
|
55
55
|
import { UnrecoverableError } from 'bullmq';
|
|
56
56
|
import { LifecycleHook } from "../enums.js";
|
|
57
|
-
import { jobAbortSignal } from "../injectables.js";
|
|
57
|
+
import { currentJobInfo, jobAbortSignal, saveJobProgress, } from "../injectables.js";
|
|
58
58
|
export class JobRunner {
|
|
59
59
|
runtime;
|
|
60
60
|
logger;
|
|
@@ -65,6 +65,21 @@ export class JobRunner {
|
|
|
65
65
|
get container() {
|
|
66
66
|
return this.runtime.container;
|
|
67
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Creates a function that saves the current job progress state.
|
|
70
|
+
* Override in subclasses to implement actual persistence.
|
|
71
|
+
*/
|
|
72
|
+
createSaveProgressFn(_context) {
|
|
73
|
+
// No-op in base runner - subclasses implement actual persistence
|
|
74
|
+
return async () => { };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Creates the current job info object.
|
|
78
|
+
* Override in subclasses to include additional info (e.g., BullMQ job ID).
|
|
79
|
+
*/
|
|
80
|
+
createJobInfo(job, _options) {
|
|
81
|
+
return { name: job.options.name };
|
|
82
|
+
}
|
|
68
83
|
async runJob(job, data, options = {}) {
|
|
69
84
|
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
70
85
|
try {
|
|
@@ -80,6 +95,18 @@ export class JobRunner {
|
|
|
80
95
|
const signal = anyAbortSignal(runSignal, stopListener.signal);
|
|
81
96
|
const container = __addDisposableResource(env_1, this.container.fork(Scope.Global), true);
|
|
82
97
|
await container.provide(jobAbortSignal, signal);
|
|
98
|
+
await container.provide(currentJobInfo, this.createJobInfo(job, options));
|
|
99
|
+
// Create mutable state context for saveProgress
|
|
100
|
+
const progressContext = {
|
|
101
|
+
job,
|
|
102
|
+
progress,
|
|
103
|
+
result,
|
|
104
|
+
stepResults: null, // Will be set below
|
|
105
|
+
currentStepIndex,
|
|
106
|
+
options: null, // Will be set below
|
|
107
|
+
};
|
|
108
|
+
// Provide saveProgress injectable
|
|
109
|
+
await container.provide(saveJobProgress, this.createSaveProgressFn(progressContext));
|
|
83
110
|
const jobDependencyContext = await container.createContext(job.dependencies);
|
|
84
111
|
const jobData = job.options.data
|
|
85
112
|
? await job.options.data(jobDependencyContext, decodedInput, progress)
|
|
@@ -101,6 +128,9 @@ export class JobRunner {
|
|
|
101
128
|
progress,
|
|
102
129
|
...rest,
|
|
103
130
|
};
|
|
131
|
+
// Update mutable context references
|
|
132
|
+
progressContext.stepResults = stepResults;
|
|
133
|
+
progressContext.options = runOptions;
|
|
104
134
|
for (let stepIndex = currentStepIndex; stepIndex < steps.length; stepIndex++) {
|
|
105
135
|
const step = steps[stepIndex];
|
|
106
136
|
const resultSnapshot = Object.freeze(Object.assign({}, decodedInput, result));
|
|
@@ -230,26 +260,59 @@ export class ApplicationWorkerJobRunner extends JobRunner {
|
|
|
230
260
|
super(runtime);
|
|
231
261
|
this.runtime = runtime;
|
|
232
262
|
}
|
|
263
|
+
createJobInfo(job, options) {
|
|
264
|
+
const { queueJob } = options;
|
|
265
|
+
return {
|
|
266
|
+
name: job.options.name,
|
|
267
|
+
id: queueJob?.id,
|
|
268
|
+
queue: queueJob?.queueName,
|
|
269
|
+
attempts: queueJob?.attemptsMade,
|
|
270
|
+
stepIndex: options.currentStepIndex,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
createSaveProgressFn(context) {
|
|
274
|
+
return async () => {
|
|
275
|
+
const { job, progress, result, stepResults, options } = context;
|
|
276
|
+
if (!options || !stepResults)
|
|
277
|
+
return;
|
|
278
|
+
const { queueJob } = options;
|
|
279
|
+
// Find current step index based on completed steps
|
|
280
|
+
let currentStepIndex = 0;
|
|
281
|
+
for (let i = 0; i < stepResults.length; i++) {
|
|
282
|
+
if (stepResults[i])
|
|
283
|
+
currentStepIndex = i + 1;
|
|
284
|
+
}
|
|
285
|
+
// Encode progress before persisting if schema is defined
|
|
286
|
+
const encodedProgress = job.progress
|
|
287
|
+
? job.progress.encode(progress)
|
|
288
|
+
: progress;
|
|
289
|
+
const checkpoint = {
|
|
290
|
+
stepIndex: currentStepIndex,
|
|
291
|
+
result,
|
|
292
|
+
stepResults,
|
|
293
|
+
progress: encodedProgress,
|
|
294
|
+
};
|
|
295
|
+
await queueJob.updateProgress(checkpoint);
|
|
296
|
+
};
|
|
297
|
+
}
|
|
233
298
|
async afterStep(params) {
|
|
234
299
|
await super.afterStep(params);
|
|
235
300
|
const { job, step, result, stepResult, stepResults, stepIndex, options: { queueJob, progress }, } = params;
|
|
236
301
|
const nextStepIndex = stepIndex + 1;
|
|
237
|
-
const totalSteps = job.steps.length;
|
|
238
|
-
const percentage = Math.round((nextStepIndex / totalSteps) * 100);
|
|
239
302
|
// Encode progress before persisting if schema is defined
|
|
240
303
|
const encodedProgress = job.progress
|
|
241
304
|
? job.progress.encode(progress)
|
|
242
305
|
: progress;
|
|
306
|
+
const checkpoint = {
|
|
307
|
+
stepIndex: nextStepIndex,
|
|
308
|
+
stepLabel: step.label,
|
|
309
|
+
result,
|
|
310
|
+
stepResults,
|
|
311
|
+
progress: encodedProgress,
|
|
312
|
+
};
|
|
243
313
|
await Promise.all([
|
|
244
314
|
queueJob.log(`Step ${step.label || nextStepIndex} completed in ${(stepResult.duration / 1000).toFixed(3)}s`),
|
|
245
|
-
queueJob.updateProgress(
|
|
246
|
-
stepIndex: nextStepIndex,
|
|
247
|
-
stepLabel: step.label,
|
|
248
|
-
result,
|
|
249
|
-
stepResults,
|
|
250
|
-
progress: encodedProgress,
|
|
251
|
-
percentage,
|
|
252
|
-
}),
|
|
315
|
+
queueJob.updateProgress(checkpoint),
|
|
253
316
|
]);
|
|
254
317
|
}
|
|
255
318
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/runtime/jobs/runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/runtime/jobs/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/** Metadata about a job step in a job definition */
|
|
2
|
+
export interface JobStepInfo {
|
|
3
|
+
/** Optional human-readable label for the step */
|
|
4
|
+
label?: string;
|
|
5
|
+
/** Whether this step has a condition that may skip it */
|
|
6
|
+
conditional: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** Metadata about a job definition (not a running job instance) */
|
|
9
|
+
export interface JobDefinitionInfo {
|
|
10
|
+
/** Job name from definition */
|
|
11
|
+
name: string;
|
|
12
|
+
/** Information about each step in the job */
|
|
13
|
+
steps: JobStepInfo[];
|
|
14
|
+
}
|
|
15
|
+
/** Result of a single step execution */
|
|
16
|
+
export interface StepResultEntry {
|
|
17
|
+
/** Output data produced by the step, or null if skipped */
|
|
18
|
+
data: Record<string, unknown> | null;
|
|
19
|
+
/** Duration in milliseconds */
|
|
20
|
+
duration: number;
|
|
21
|
+
}
|
|
22
|
+
/** Checkpoint data persisted for job resume support */
|
|
23
|
+
export interface JobProgressCheckpoint {
|
|
24
|
+
/** Index of the next step to execute (0 = not started, length = completed) */
|
|
25
|
+
stepIndex: number;
|
|
26
|
+
/** Label of the last completed step */
|
|
27
|
+
stepLabel?: string;
|
|
28
|
+
/** Accumulated result from all completed steps */
|
|
29
|
+
result: Record<string, unknown>;
|
|
30
|
+
/** Results of each individual step */
|
|
31
|
+
stepResults: StepResultEntry[];
|
|
32
|
+
/** User-defined progress state */
|
|
33
|
+
progress: Record<string, unknown>;
|
|
34
|
+
}
|
|
35
|
+
/** Information about the currently executing job, available via injectable */
|
|
36
|
+
export interface JobExecutionContext {
|
|
37
|
+
/** Job definition name */
|
|
38
|
+
name: string;
|
|
39
|
+
/** Queue job ID */
|
|
40
|
+
id?: string;
|
|
41
|
+
/** Queue name */
|
|
42
|
+
queue?: string;
|
|
43
|
+
/** Number of attempts made so far */
|
|
44
|
+
attempts?: number;
|
|
45
|
+
/** Current step index being executed */
|
|
46
|
+
stepIndex?: number;
|
|
47
|
+
}
|
|
48
|
+
/** Vendor-agnostic job status */
|
|
49
|
+
export type JobStatus = 'pending' | 'active' | 'completed' | 'failed' | 'delayed' | 'cancelled' | 'unknown';
|
|
50
|
+
/** A job instance retrieved from the queue */
|
|
51
|
+
export interface JobItem<TInput = unknown, TOutput = unknown> {
|
|
52
|
+
/** Unique job instance ID */
|
|
53
|
+
id: string;
|
|
54
|
+
/** Job definition name */
|
|
55
|
+
name: string;
|
|
56
|
+
/** Queue name this job belongs to */
|
|
57
|
+
queue: string;
|
|
58
|
+
/** Input data passed to the job */
|
|
59
|
+
data: TInput;
|
|
60
|
+
/** Output produced by the job (if completed) */
|
|
61
|
+
output?: TOutput | null;
|
|
62
|
+
/** Current job status */
|
|
63
|
+
status: JobStatus;
|
|
64
|
+
/** Job priority (lower = higher priority) */
|
|
65
|
+
priority?: number;
|
|
66
|
+
/** Job progress checkpoint (includes step state and user progress) */
|
|
67
|
+
progress?: JobProgressCheckpoint;
|
|
68
|
+
/** Number of execution attempts */
|
|
69
|
+
attempts: number;
|
|
70
|
+
/** Timestamp when job started processing (ms) */
|
|
71
|
+
startedAt?: number;
|
|
72
|
+
/** Timestamp when job completed (ms) */
|
|
73
|
+
completedAt?: number;
|
|
74
|
+
/** Error message if job failed */
|
|
75
|
+
error?: string;
|
|
76
|
+
/** Stack trace if job failed */
|
|
77
|
+
stacktrace?: string[];
|
|
78
|
+
}
|
|
79
|
+
/** Function to manually trigger saving job progress state */
|
|
80
|
+
export type SaveJobProgress = () => Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime/jobs/types.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,sDAAsD;AACtD,+EAA+E"}
|
|
@@ -140,6 +140,8 @@ export class ApplicationServerJobs {
|
|
|
140
140
|
}
|
|
141
141
|
async stop() {
|
|
142
142
|
const { logger } = this.params;
|
|
143
|
+
// TODO: make configurable
|
|
144
|
+
const closeTimeout = 10_000; // 10 seconds timeout for graceful close
|
|
143
145
|
if (this.ui) {
|
|
144
146
|
await new Promise((resolve) => {
|
|
145
147
|
this.ui?.close(() => resolve());
|
|
@@ -147,26 +149,33 @@ export class ApplicationServerJobs {
|
|
|
147
149
|
logger.warn({ error }, 'Failed to stop Jobs UI server');
|
|
148
150
|
});
|
|
149
151
|
}
|
|
150
|
-
|
|
152
|
+
// Stop accepting new jobs first.
|
|
153
|
+
await Promise.all([...this.queueWorkers].map(async (worker) => {
|
|
151
154
|
try {
|
|
152
|
-
|
|
155
|
+
// Try graceful close with timeout
|
|
156
|
+
const closePromise = worker.close();
|
|
157
|
+
const timeoutPromise = new Promise((resolve) => setTimeout(() => resolve('timeout'), closeTimeout));
|
|
158
|
+
const result = await Promise.race([closePromise, timeoutPromise]);
|
|
159
|
+
if (result === 'timeout') {
|
|
160
|
+
logger.warn({ worker: worker.name }, 'Worker close timed out, forcing close');
|
|
161
|
+
await worker.close(true);
|
|
162
|
+
}
|
|
153
163
|
}
|
|
154
164
|
catch (error) {
|
|
155
|
-
logger.warn({ error }, 'Failed to close
|
|
165
|
+
logger.warn({ error }, 'Failed to close BullMQ worker');
|
|
156
166
|
}
|
|
157
167
|
}));
|
|
158
|
-
this.
|
|
159
|
-
this.
|
|
160
|
-
// Stop accepting new jobs first.
|
|
161
|
-
await Promise.all([...this.queueWorkers].map(async (worker) => {
|
|
168
|
+
this.queueWorkers.clear();
|
|
169
|
+
await Promise.all(this.uiQueues.map(async (queue) => {
|
|
162
170
|
try {
|
|
163
|
-
await
|
|
171
|
+
await queue.close();
|
|
164
172
|
}
|
|
165
173
|
catch (error) {
|
|
166
|
-
logger.warn({ error }, 'Failed to close
|
|
174
|
+
logger.warn({ error }, 'Failed to close Jobs UI queue');
|
|
167
175
|
}
|
|
168
176
|
}));
|
|
169
|
-
this.
|
|
177
|
+
this.uiQueues = [];
|
|
178
|
+
this.ui = undefined;
|
|
170
179
|
await Promise.all(Array.from(this.pools.values()).map(async (pool) => {
|
|
171
180
|
try {
|
|
172
181
|
await pool.stop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../../src/runtime/server/jobs.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../../src/runtime/server/jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/runtime/workers/job.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/runtime/workers/job.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -27,23 +27,23 @@
|
|
|
27
27
|
"oxc-resolver": "^11.13.2",
|
|
28
28
|
"vite": "8.0.0-beta.5",
|
|
29
29
|
"vite-plugin-static-copy": "3.1.4",
|
|
30
|
-
"@nmtjs/common": "0.15.0-beta.
|
|
31
|
-
"@nmtjs/
|
|
32
|
-
"@nmtjs/
|
|
33
|
-
"@nmtjs/
|
|
34
|
-
"@nmtjs/protocol": "0.15.0-beta.
|
|
35
|
-
"@nmtjs/
|
|
36
|
-
"@nmtjs/type": "0.15.0-beta.
|
|
37
|
-
"@nmtjs/
|
|
38
|
-
"@nmtjs/
|
|
30
|
+
"@nmtjs/common": "0.15.0-beta.22",
|
|
31
|
+
"@nmtjs/core": "0.15.0-beta.22",
|
|
32
|
+
"@nmtjs/contract": "0.15.0-beta.22",
|
|
33
|
+
"@nmtjs/json-format": "0.15.0-beta.22",
|
|
34
|
+
"@nmtjs/protocol": "0.15.0-beta.22",
|
|
35
|
+
"@nmtjs/gateway": "0.15.0-beta.22",
|
|
36
|
+
"@nmtjs/type": "0.15.0-beta.22",
|
|
37
|
+
"@nmtjs/http-transport": "0.15.0-beta.22",
|
|
38
|
+
"@nmtjs/ws-transport": "0.15.0-beta.22"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"zod": "^4.1.0",
|
|
42
|
-
"@nmtjs/proxy": "0.15.0-beta.
|
|
42
|
+
"@nmtjs/proxy": "0.15.0-beta.22"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"zod": "^4.1.0",
|
|
46
|
-
"@nmtjs/proxy": "0.15.0-beta.
|
|
46
|
+
"@nmtjs/proxy": "0.15.0-beta.22"
|
|
47
47
|
},
|
|
48
48
|
"peerDependenciesMeta": {
|
|
49
49
|
"@nmtjs/proxy": {
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"LICENSE.md",
|
|
57
57
|
"README.md"
|
|
58
58
|
],
|
|
59
|
-
"version": "0.15.0-beta.
|
|
59
|
+
"version": "0.15.0-beta.22",
|
|
60
60
|
"scripts": {
|
|
61
61
|
"clean-build": "rm -rf ./dist",
|
|
62
62
|
"build": "tsc --declaration --sourcemap",
|
package/src/runtime/index.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from './jobs/job.ts'
|
|
|
9
9
|
export * from './jobs/manager.ts'
|
|
10
10
|
export * from './jobs/router.ts'
|
|
11
11
|
export * from './jobs/step.ts'
|
|
12
|
+
export * from './jobs/types.ts'
|
|
12
13
|
export * from './pubsub/manager.ts'
|
|
13
14
|
export * from './pubsub/redis.ts'
|
|
14
15
|
export * from './scheduler/index.ts'
|
|
@@ -2,6 +2,7 @@ import { createLazyInjectable, Scope } from '@nmtjs/core'
|
|
|
2
2
|
|
|
3
3
|
import type { JobWorkerPool, WorkerType } from './enums.ts'
|
|
4
4
|
import type { JobManagerInstance } from './jobs/manager.ts'
|
|
5
|
+
import type { JobExecutionContext, SaveJobProgress } from './jobs/types.ts'
|
|
5
6
|
import type {
|
|
6
7
|
PubSubAdapterType,
|
|
7
8
|
PubSubPublish,
|
|
@@ -49,6 +50,16 @@ export const jobAbortSignal = createLazyInjectable<AbortSignal>(
|
|
|
49
50
|
'JobAbortSignal',
|
|
50
51
|
)
|
|
51
52
|
|
|
53
|
+
export const saveJobProgress = createLazyInjectable<SaveJobProgress>(
|
|
54
|
+
Scope.Global,
|
|
55
|
+
'SaveJobProgress',
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
export const currentJobInfo = createLazyInjectable<JobExecutionContext>(
|
|
59
|
+
Scope.Global,
|
|
60
|
+
'CurrentJobInfo',
|
|
61
|
+
)
|
|
62
|
+
|
|
52
63
|
export const RuntimeInjectables = {
|
|
53
64
|
pubSubAdapter,
|
|
54
65
|
pubSubPublish,
|
|
@@ -58,4 +69,6 @@ export const RuntimeInjectables = {
|
|
|
58
69
|
workerType,
|
|
59
70
|
jobWorkerPool,
|
|
60
71
|
jobAbortSignal,
|
|
72
|
+
saveJobProgress,
|
|
73
|
+
currentJobInfo,
|
|
61
74
|
}
|
|
@@ -8,7 +8,6 @@ import type {
|
|
|
8
8
|
QueueEventsListener,
|
|
9
9
|
RedisClient,
|
|
10
10
|
} from 'bullmq'
|
|
11
|
-
import { pick } from '@nmtjs/core'
|
|
12
11
|
import {
|
|
13
12
|
Queue,
|
|
14
13
|
QueueEvents,
|
|
@@ -19,6 +18,7 @@ import {
|
|
|
19
18
|
import type { ServerStoreConfig } from '../server/config.ts'
|
|
20
19
|
import type { Store } from '../types.ts'
|
|
21
20
|
import type { AnyJob, JobBackoffOptions } from './job.ts'
|
|
21
|
+
import type { JobDefinitionInfo, JobProgressCheckpoint } from './types.ts'
|
|
22
22
|
import { createStoreClient } from '../store/index.ts'
|
|
23
23
|
|
|
24
24
|
/**
|
|
@@ -64,38 +64,29 @@ export class QueueJobResult<T extends AnyJob = AnyJob> {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
export type
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
| 'processedOn'
|
|
77
|
-
| 'finishedOn'
|
|
78
|
-
| 'failedReason'
|
|
79
|
-
| 'stacktrace'
|
|
80
|
-
> & { id: string; status: JobState | 'unknown' }
|
|
81
|
-
|
|
82
|
-
export type JobStepInfo = { label?: string; conditional: boolean }
|
|
83
|
-
|
|
84
|
-
export type JobInfo = { name: string; steps: JobStepInfo[] }
|
|
67
|
+
export type { JobDefinitionInfo, JobItem, JobStepInfo } from './types.ts'
|
|
68
|
+
|
|
69
|
+
import type { JobItem, JobStatus } from './types.ts'
|
|
70
|
+
|
|
71
|
+
/** Job item type with generic job typing for internal use */
|
|
72
|
+
export type JobItemOf<T extends AnyJob = AnyJob> = JobItem<
|
|
73
|
+
T['_']['input'],
|
|
74
|
+
T['_']['output']
|
|
75
|
+
>
|
|
85
76
|
|
|
86
77
|
export interface JobManagerInstance {
|
|
87
78
|
list<T extends AnyJob>(
|
|
88
79
|
job: T,
|
|
89
|
-
options?: { page?: number; limit?: number;
|
|
80
|
+
options?: { page?: number; limit?: number; status?: JobStatus[] },
|
|
90
81
|
): Promise<{
|
|
91
|
-
items:
|
|
82
|
+
items: JobItemOf<T>[]
|
|
92
83
|
page: number
|
|
93
84
|
limit: number
|
|
94
85
|
pages: number
|
|
95
86
|
total: number
|
|
96
87
|
}>
|
|
97
|
-
get<T extends AnyJob>(job: T, id: string): Promise<
|
|
98
|
-
getInfo(job: AnyJob):
|
|
88
|
+
get<T extends AnyJob>(job: T, id: string): Promise<JobItemOf<T> | null>
|
|
89
|
+
getInfo(job: AnyJob): JobDefinitionInfo
|
|
99
90
|
add<T extends AnyJob>(
|
|
100
91
|
job: T,
|
|
101
92
|
data: T['_']['input'],
|
|
@@ -194,7 +185,7 @@ export class JobManager {
|
|
|
194
185
|
return entry
|
|
195
186
|
}
|
|
196
187
|
|
|
197
|
-
getInfo(job: AnyJob):
|
|
188
|
+
getInfo(job: AnyJob): JobDefinitionInfo {
|
|
198
189
|
return {
|
|
199
190
|
name: job.options.name,
|
|
200
191
|
steps: job.steps.map((step, index) => ({
|
|
@@ -209,15 +200,17 @@ export class JobManager {
|
|
|
209
200
|
{
|
|
210
201
|
limit = 20,
|
|
211
202
|
page = 1,
|
|
212
|
-
|
|
213
|
-
}: { page?: number; limit?: number;
|
|
203
|
+
status = [],
|
|
204
|
+
}: { page?: number; limit?: number; status?: JobStatus[] },
|
|
214
205
|
) {
|
|
215
206
|
const { queue } = this.getJobQueue(job)
|
|
216
|
-
|
|
207
|
+
// Convert vendor-agnostic status to BullMQ JobType for querying
|
|
208
|
+
const bullJobTypes = status.flatMap((s) => this._mapStatusToJobType(s))
|
|
209
|
+
const jobsCount = await queue.getJobCountByTypes(...bullJobTypes)
|
|
217
210
|
const totalPages = Math.ceil(jobsCount / limit)
|
|
218
211
|
if (page > totalPages) return []
|
|
219
212
|
const jobs = await queue.getJobs(
|
|
220
|
-
|
|
213
|
+
bullJobTypes,
|
|
221
214
|
(page - 1) * limit,
|
|
222
215
|
page * limit - 1,
|
|
223
216
|
)
|
|
@@ -323,26 +316,77 @@ export class JobManager {
|
|
|
323
316
|
return this.getJobQueue(job)
|
|
324
317
|
}
|
|
325
318
|
|
|
326
|
-
protected async _mapJob(bullJob: Job): Promise<
|
|
327
|
-
const
|
|
319
|
+
protected async _mapJob(bullJob: Job): Promise<JobItemOf> {
|
|
320
|
+
const bullState = await bullJob.getState()
|
|
328
321
|
const id = bullJob.id
|
|
329
322
|
assert(typeof id === 'string', 'Expected job id to be a string')
|
|
323
|
+
|
|
324
|
+
// Map BullMQ state to vendor-agnostic status
|
|
325
|
+
const status = this._mapStatus(bullState)
|
|
326
|
+
|
|
327
|
+
// Extract progress only if it's a valid checkpoint object
|
|
328
|
+
const progress =
|
|
329
|
+
typeof bullJob.progress === 'object' &&
|
|
330
|
+
bullJob.progress !== null &&
|
|
331
|
+
'stepIndex' in bullJob.progress
|
|
332
|
+
? (bullJob.progress as JobProgressCheckpoint)
|
|
333
|
+
: undefined
|
|
334
|
+
|
|
330
335
|
return {
|
|
331
|
-
...pick(bullJob, {
|
|
332
|
-
queueName: true,
|
|
333
|
-
priority: true,
|
|
334
|
-
progress: true,
|
|
335
|
-
name: true,
|
|
336
|
-
data: true,
|
|
337
|
-
returnvalue: true,
|
|
338
|
-
attemptsMade: true,
|
|
339
|
-
processedOn: true,
|
|
340
|
-
finishedOn: true,
|
|
341
|
-
failedReason: true,
|
|
342
|
-
stacktrace: true,
|
|
343
|
-
}),
|
|
344
336
|
id,
|
|
337
|
+
name: bullJob.name,
|
|
338
|
+
queue: bullJob.queueName,
|
|
339
|
+
data: bullJob.data,
|
|
340
|
+
output: bullJob.returnvalue,
|
|
345
341
|
status,
|
|
342
|
+
priority: bullJob.priority,
|
|
343
|
+
progress,
|
|
344
|
+
attempts: bullJob.attemptsMade,
|
|
345
|
+
startedAt: bullJob.processedOn,
|
|
346
|
+
completedAt: bullJob.finishedOn,
|
|
347
|
+
error: bullJob.failedReason,
|
|
348
|
+
stacktrace: bullJob.stacktrace,
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/** Map BullMQ JobState to vendor-agnostic JobStatus */
|
|
353
|
+
protected _mapStatus(state: JobState | 'unknown'): JobStatus {
|
|
354
|
+
switch (state) {
|
|
355
|
+
case 'waiting':
|
|
356
|
+
case 'prioritized':
|
|
357
|
+
case 'waiting-children':
|
|
358
|
+
return 'pending'
|
|
359
|
+
case 'active':
|
|
360
|
+
return 'active'
|
|
361
|
+
case 'completed':
|
|
362
|
+
return 'completed'
|
|
363
|
+
case 'failed':
|
|
364
|
+
return 'failed'
|
|
365
|
+
case 'delayed':
|
|
366
|
+
return 'delayed'
|
|
367
|
+
default:
|
|
368
|
+
return 'unknown'
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/** Map vendor-agnostic JobStatus to BullMQ JobType for queries */
|
|
373
|
+
protected _mapStatusToJobType(status: JobStatus): JobType[] {
|
|
374
|
+
switch (status) {
|
|
375
|
+
case 'pending':
|
|
376
|
+
return ['waiting', 'prioritized', 'waiting-children']
|
|
377
|
+
case 'active':
|
|
378
|
+
return ['active']
|
|
379
|
+
case 'completed':
|
|
380
|
+
return ['completed']
|
|
381
|
+
case 'failed':
|
|
382
|
+
return ['failed']
|
|
383
|
+
case 'delayed':
|
|
384
|
+
return ['delayed']
|
|
385
|
+
case 'cancelled':
|
|
386
|
+
return [] // BullMQ doesn't have a cancelled state
|
|
387
|
+
case 'unknown':
|
|
388
|
+
default:
|
|
389
|
+
return []
|
|
346
390
|
}
|
|
347
391
|
}
|
|
348
392
|
}
|