light-async-queue 1.0.1 → 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/README.md +334 -40
- package/dist/src/constants.d.ts +68 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +75 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/dashboard/Dashboard.d.ts +70 -0
- package/dist/src/dashboard/Dashboard.d.ts.map +1 -0
- package/dist/src/dashboard/Dashboard.js +308 -0
- package/dist/src/dashboard/Dashboard.js.map +1 -0
- package/dist/src/dashboard/index.d.ts +3 -0
- package/dist/src/dashboard/index.d.ts.map +1 -0
- package/dist/src/dashboard/index.js +2 -0
- package/dist/src/dashboard/index.js.map +1 -0
- package/dist/src/index.d.ts +13 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/queue/Backoff.d.ts.map +1 -1
- package/dist/src/queue/Backoff.js +2 -1
- package/dist/src/queue/Backoff.js.map +1 -1
- package/dist/src/queue/Job.d.ts +35 -4
- package/dist/src/queue/Job.d.ts.map +1 -1
- package/dist/src/queue/Job.js +97 -12
- package/dist/src/queue/Job.js.map +1 -1
- package/dist/src/queue/Queue.d.ts +73 -3
- package/dist/src/queue/Queue.d.ts.map +1 -1
- package/dist/src/queue/Queue.js +359 -36
- package/dist/src/queue/Queue.js.map +1 -1
- package/dist/src/queue/Scheduler.d.ts.map +1 -1
- package/dist/src/queue/Scheduler.js +8 -1
- package/dist/src/queue/Scheduler.js.map +1 -1
- package/dist/src/storage/FileStore.d.ts.map +1 -1
- package/dist/src/storage/FileStore.js +4 -3
- package/dist/src/storage/FileStore.js.map +1 -1
- package/dist/src/storage/MemoryStore.d.ts.map +1 -1
- package/dist/src/storage/MemoryStore.js +2 -1
- package/dist/src/storage/MemoryStore.js.map +1 -1
- package/dist/src/types.d.ts +85 -10
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +4 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/CronParser.d.ts +12 -0
- package/dist/src/utils/CronParser.d.ts.map +1 -0
- package/dist/src/utils/CronParser.js +28 -0
- package/dist/src/utils/CronParser.js.map +1 -0
- package/dist/src/utils/RateLimiter.d.ts +37 -0
- package/dist/src/utils/RateLimiter.d.ts.map +1 -0
- package/dist/src/utils/RateLimiter.js +68 -0
- package/dist/src/utils/RateLimiter.js.map +1 -0
- package/dist/src/utils/WebhookManager.d.ts +29 -0
- package/dist/src/utils/WebhookManager.d.ts.map +1 -0
- package/dist/src/utils/WebhookManager.js +82 -0
- package/dist/src/utils/WebhookManager.js.map +1 -0
- package/dist/src/worker/Worker.d.ts +2 -2
- package/dist/src/worker/Worker.d.ts.map +1 -1
- package/dist/src/worker/Worker.js +60 -38
- package/dist/src/worker/Worker.js.map +1 -1
- package/dist/src/worker/childProcessor.js +23 -7
- package/dist/src/worker/childProcessor.js.map +1 -1
- package/package.json +27 -5
package/dist/src/queue/Job.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { JobStatus } from '../types.js';
|
|
1
2
|
import { randomUUID } from 'node:crypto';
|
|
2
3
|
/**
|
|
3
4
|
* Job class representing a single unit of work in the queue
|
|
@@ -8,17 +9,34 @@ export class Job {
|
|
|
8
9
|
attempts;
|
|
9
10
|
maxAttempts;
|
|
10
11
|
status;
|
|
12
|
+
priority;
|
|
13
|
+
progress;
|
|
11
14
|
nextRunAt;
|
|
15
|
+
delay;
|
|
16
|
+
repeatConfig;
|
|
17
|
+
repeatCount;
|
|
18
|
+
dependsOn;
|
|
19
|
+
parentJobId;
|
|
20
|
+
result;
|
|
21
|
+
error;
|
|
12
22
|
createdAt;
|
|
13
23
|
updatedAt;
|
|
14
|
-
|
|
24
|
+
startedAt;
|
|
25
|
+
completedAt;
|
|
26
|
+
constructor(payload, maxAttempts, options = {}) {
|
|
15
27
|
const now = Date.now();
|
|
16
|
-
this.id = randomUUID();
|
|
28
|
+
this.id = options.jobId || randomUUID();
|
|
17
29
|
this.payload = payload;
|
|
18
30
|
this.attempts = 0;
|
|
19
31
|
this.maxAttempts = maxAttempts;
|
|
20
|
-
this.status =
|
|
21
|
-
this.
|
|
32
|
+
this.status = options.delay ? JobStatus.DELAYED : options.dependsOn?.length ? JobStatus.WAITING : JobStatus.PENDING;
|
|
33
|
+
this.priority = options.priority ?? 0;
|
|
34
|
+
this.progress = 0;
|
|
35
|
+
this.delay = options.delay ?? 0;
|
|
36
|
+
this.nextRunAt = now + (options.delay ?? 0);
|
|
37
|
+
this.repeatConfig = options.repeat;
|
|
38
|
+
this.repeatCount = 0;
|
|
39
|
+
this.dependsOn = options.dependsOn;
|
|
22
40
|
this.createdAt = now;
|
|
23
41
|
this.updatedAt = now;
|
|
24
42
|
}
|
|
@@ -40,31 +58,47 @@ export class Job {
|
|
|
40
58
|
attempts: this.attempts,
|
|
41
59
|
maxAttempts: this.maxAttempts,
|
|
42
60
|
status: this.status,
|
|
61
|
+
priority: this.priority,
|
|
62
|
+
progress: this.progress,
|
|
43
63
|
nextRunAt: this.nextRunAt,
|
|
64
|
+
delay: this.delay,
|
|
65
|
+
repeatConfig: this.repeatConfig,
|
|
66
|
+
repeatCount: this.repeatCount,
|
|
67
|
+
dependsOn: this.dependsOn,
|
|
68
|
+
parentJobId: this.parentJobId,
|
|
69
|
+
result: this.result,
|
|
70
|
+
error: this.error,
|
|
44
71
|
createdAt: this.createdAt,
|
|
45
72
|
updatedAt: this.updatedAt,
|
|
73
|
+
startedAt: this.startedAt,
|
|
74
|
+
completedAt: this.completedAt,
|
|
46
75
|
};
|
|
47
76
|
}
|
|
48
77
|
/**
|
|
49
78
|
* Mark job as processing
|
|
50
79
|
*/
|
|
51
80
|
markProcessing() {
|
|
52
|
-
this.status =
|
|
53
|
-
this.
|
|
81
|
+
this.status = JobStatus.PROCESSING;
|
|
82
|
+
this.startedAt = Date.now();
|
|
83
|
+
this.updatedAt = this.startedAt;
|
|
54
84
|
}
|
|
55
85
|
/**
|
|
56
86
|
* Mark job as completed
|
|
57
87
|
*/
|
|
58
|
-
markCompleted() {
|
|
59
|
-
this.status =
|
|
60
|
-
this.
|
|
88
|
+
markCompleted(result) {
|
|
89
|
+
this.status = JobStatus.COMPLETED;
|
|
90
|
+
this.result = result;
|
|
91
|
+
this.completedAt = Date.now();
|
|
92
|
+
this.updatedAt = this.completedAt;
|
|
93
|
+
this.progress = 100;
|
|
61
94
|
}
|
|
62
95
|
/**
|
|
63
96
|
* Mark job as failed and increment attempts
|
|
64
97
|
*/
|
|
65
|
-
markFailed(nextRunAt) {
|
|
98
|
+
markFailed(error, nextRunAt) {
|
|
66
99
|
this.attempts += 1;
|
|
67
|
-
this.
|
|
100
|
+
this.error = error;
|
|
101
|
+
this.status = this.attempts >= this.maxAttempts ? JobStatus.FAILED : JobStatus.PENDING;
|
|
68
102
|
if (nextRunAt !== undefined) {
|
|
69
103
|
this.nextRunAt = nextRunAt;
|
|
70
104
|
}
|
|
@@ -81,9 +115,60 @@ export class Job {
|
|
|
81
115
|
*/
|
|
82
116
|
reset() {
|
|
83
117
|
this.attempts = 0;
|
|
84
|
-
this.status =
|
|
118
|
+
this.status = JobStatus.PENDING;
|
|
85
119
|
this.nextRunAt = Date.now();
|
|
86
120
|
this.updatedAt = Date.now();
|
|
121
|
+
this.error = undefined;
|
|
122
|
+
this.progress = 0;
|
|
123
|
+
this.startedAt = undefined;
|
|
124
|
+
this.completedAt = undefined;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Update job progress
|
|
128
|
+
*/
|
|
129
|
+
updateProgress(progress) {
|
|
130
|
+
this.progress = Math.min(100, Math.max(0, progress));
|
|
131
|
+
this.updatedAt = Date.now();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Mark job as stalled
|
|
135
|
+
*/
|
|
136
|
+
markStalled() {
|
|
137
|
+
this.status = JobStatus.STALLED;
|
|
138
|
+
this.updatedAt = Date.now();
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Check if job is stalled (processing for too long)
|
|
142
|
+
*/
|
|
143
|
+
isStalled(stalledThreshold = 30000) {
|
|
144
|
+
if (this.status !== JobStatus.PROCESSING || !this.startedAt) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
return Date.now() - this.startedAt > stalledThreshold;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check if dependencies are satisfied
|
|
151
|
+
*/
|
|
152
|
+
areDependenciesSatisfied(completedJobIds) {
|
|
153
|
+
if (!this.dependsOn || this.dependsOn.length === 0) {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
return this.dependsOn.every(id => completedJobIds.has(id));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Create a repeated instance of this job
|
|
160
|
+
*/
|
|
161
|
+
createRepeatInstance() {
|
|
162
|
+
const job = Job.fromData(this.toData());
|
|
163
|
+
job.attempts = 0;
|
|
164
|
+
job.status = JobStatus.PENDING;
|
|
165
|
+
job.repeatCount += 1;
|
|
166
|
+
job.progress = 0;
|
|
167
|
+
job.error = undefined;
|
|
168
|
+
job.result = undefined;
|
|
169
|
+
job.startedAt = undefined;
|
|
170
|
+
job.completedAt = undefined;
|
|
171
|
+
return job;
|
|
87
172
|
}
|
|
88
173
|
}
|
|
89
174
|
//# sourceMappingURL=Job.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../../../src/queue/Job.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../../../src/queue/Job.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { QueueConfig, JobProcessor, JobData } from
|
|
1
|
+
import { QueueConfig, JobProcessor, JobData, JobOptions } from "../types.js";
|
|
2
|
+
import { EventEmitter } from "node:events";
|
|
2
3
|
/**
|
|
3
4
|
* Main Queue class - orchestrates job processing
|
|
4
5
|
*/
|
|
5
|
-
export declare class Queue {
|
|
6
|
+
export declare class Queue extends EventEmitter {
|
|
6
7
|
private config;
|
|
7
8
|
private storage;
|
|
8
9
|
private scheduler;
|
|
@@ -10,9 +11,15 @@ export declare class Queue {
|
|
|
10
11
|
private backoff;
|
|
11
12
|
private processor;
|
|
12
13
|
private workers;
|
|
14
|
+
private reservedWorkers;
|
|
13
15
|
private activeJobs;
|
|
16
|
+
private completedJobIds;
|
|
17
|
+
private repeatingJobs;
|
|
14
18
|
private isShuttingDown;
|
|
15
19
|
private isInitialized;
|
|
20
|
+
private rateLimiter?;
|
|
21
|
+
private webhookManager?;
|
|
22
|
+
private stalledCheckInterval?;
|
|
16
23
|
constructor(config: QueueConfig);
|
|
17
24
|
/**
|
|
18
25
|
* Initialize the queue
|
|
@@ -25,7 +32,7 @@ export declare class Queue {
|
|
|
25
32
|
/**
|
|
26
33
|
* Add a job to the queue
|
|
27
34
|
*/
|
|
28
|
-
add(payload: unknown): Promise<string>;
|
|
35
|
+
add(payload: unknown, options?: JobOptions): Promise<string>;
|
|
29
36
|
/**
|
|
30
37
|
* Handle a job that's ready to process
|
|
31
38
|
*/
|
|
@@ -38,6 +45,62 @@ export declare class Queue {
|
|
|
38
45
|
* Get an available worker or create a new one
|
|
39
46
|
*/
|
|
40
47
|
private getAvailableWorker;
|
|
48
|
+
/**
|
|
49
|
+
* Create a job with methods for use in processor
|
|
50
|
+
*/
|
|
51
|
+
private createJobWithMethods;
|
|
52
|
+
/**
|
|
53
|
+
* Load completed job IDs for dependency tracking
|
|
54
|
+
*/
|
|
55
|
+
private loadCompletedJobIds;
|
|
56
|
+
/**
|
|
57
|
+
* Check and update waiting jobs whose dependencies are now satisfied
|
|
58
|
+
*/
|
|
59
|
+
private checkDependentJobs;
|
|
60
|
+
/**
|
|
61
|
+
* Schedule a repeating job
|
|
62
|
+
*/
|
|
63
|
+
private scheduleRepeat;
|
|
64
|
+
/**
|
|
65
|
+
* Start stalled job checker
|
|
66
|
+
*/
|
|
67
|
+
private startStalledChecker;
|
|
68
|
+
/**
|
|
69
|
+
* Check for stalled jobs and mark them
|
|
70
|
+
*/
|
|
71
|
+
private checkStalledJobs;
|
|
72
|
+
/**
|
|
73
|
+
* Send webhook notification
|
|
74
|
+
*/
|
|
75
|
+
private sendWebhook;
|
|
76
|
+
/**
|
|
77
|
+
* Get a specific job by ID
|
|
78
|
+
*/
|
|
79
|
+
getJob(jobId: string): Promise<JobData | null>;
|
|
80
|
+
/**
|
|
81
|
+
* Get all jobs from the queue
|
|
82
|
+
*/
|
|
83
|
+
getAllJobs(): Promise<JobData[]>;
|
|
84
|
+
/**
|
|
85
|
+
* Remove a specific job
|
|
86
|
+
*/
|
|
87
|
+
removeJob(jobId: string): Promise<boolean>;
|
|
88
|
+
/**
|
|
89
|
+
* Pause the queue (stop processing new jobs)
|
|
90
|
+
*/
|
|
91
|
+
pause(): void;
|
|
92
|
+
/**
|
|
93
|
+
* Resume the queue
|
|
94
|
+
*/
|
|
95
|
+
resume(): void;
|
|
96
|
+
/**
|
|
97
|
+
* Drain the queue - process all pending jobs
|
|
98
|
+
*/
|
|
99
|
+
drain(): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Clean completed jobs older than a certain age
|
|
102
|
+
*/
|
|
103
|
+
clean(maxAge?: number): Promise<number>;
|
|
41
104
|
/**
|
|
42
105
|
* Get all failed jobs from DLQ
|
|
43
106
|
*/
|
|
@@ -46,14 +109,21 @@ export declare class Queue {
|
|
|
46
109
|
* Reprocess a failed job from DLQ
|
|
47
110
|
*/
|
|
48
111
|
reprocessFailed(jobId: string): Promise<boolean>;
|
|
112
|
+
/**
|
|
113
|
+
* Get queue statistics
|
|
114
|
+
*/
|
|
115
|
+
getConcurrency(): number;
|
|
49
116
|
/**
|
|
50
117
|
* Get queue statistics
|
|
51
118
|
*/
|
|
52
119
|
getStats(): Promise<{
|
|
53
120
|
active: number;
|
|
121
|
+
waiting: number;
|
|
122
|
+
delayed: number;
|
|
54
123
|
pending: number;
|
|
55
124
|
failed: number;
|
|
56
125
|
completed: number;
|
|
126
|
+
stalled: number;
|
|
57
127
|
}>;
|
|
58
128
|
/**
|
|
59
129
|
* Set up graceful shutdown handlers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../../src/queue/Queue.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../../src/queue/Queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,YAAY,EAEZ,OAAO,EAGP,UAAU,EAGX,MAAM,aAAa,CAAC;AAWrB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;GAEG;AACH,qBAAa,KAAM,SAAQ,YAAY;IACrC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,oBAAoB,CAAC,CAAiB;gBAElC,MAAM,EAAE,WAAW;IAmD/B;;OAEG;YACW,UAAU;IAexB;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAItC;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAkCtE;;OAEG;YACW,cAAc;IAuF5B;;OAEG;YACW,gBAAgB;IAwB9B;;OAEG;YACW,kBAAkB;IAqChC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;YACW,mBAAmB;IAUjC;;OAEG;YACW,kBAAkB;IAkBhC;;OAEG;YACW,cAAc;IAmD5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;YACW,gBAAgB;IAoB9B;;OAEG;YACW,WAAW;IAazB;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAOpD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOtC;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBhD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,MAAM,IAAI,IAAI;IAMd;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5B;;OAEG;IACG,KAAK,CAAC,MAAM,GAAE,MAA4B,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBlE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOzC;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBtD;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAmBF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAwChC"}
|