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.
Files changed (60) hide show
  1. package/README.md +334 -40
  2. package/dist/src/constants.d.ts +68 -0
  3. package/dist/src/constants.d.ts.map +1 -0
  4. package/dist/src/constants.js +75 -0
  5. package/dist/src/constants.js.map +1 -0
  6. package/dist/src/dashboard/Dashboard.d.ts +70 -0
  7. package/dist/src/dashboard/Dashboard.d.ts.map +1 -0
  8. package/dist/src/dashboard/Dashboard.js +308 -0
  9. package/dist/src/dashboard/Dashboard.js.map +1 -0
  10. package/dist/src/dashboard/index.d.ts +3 -0
  11. package/dist/src/dashboard/index.d.ts.map +1 -0
  12. package/dist/src/dashboard/index.js +2 -0
  13. package/dist/src/dashboard/index.js.map +1 -0
  14. package/dist/src/index.d.ts +13 -1
  15. package/dist/src/index.d.ts.map +1 -1
  16. package/dist/src/index.js +11 -0
  17. package/dist/src/index.js.map +1 -1
  18. package/dist/src/queue/Backoff.d.ts.map +1 -1
  19. package/dist/src/queue/Backoff.js +2 -1
  20. package/dist/src/queue/Backoff.js.map +1 -1
  21. package/dist/src/queue/Job.d.ts +35 -4
  22. package/dist/src/queue/Job.d.ts.map +1 -1
  23. package/dist/src/queue/Job.js +97 -12
  24. package/dist/src/queue/Job.js.map +1 -1
  25. package/dist/src/queue/Queue.d.ts +73 -3
  26. package/dist/src/queue/Queue.d.ts.map +1 -1
  27. package/dist/src/queue/Queue.js +359 -36
  28. package/dist/src/queue/Queue.js.map +1 -1
  29. package/dist/src/queue/Scheduler.d.ts.map +1 -1
  30. package/dist/src/queue/Scheduler.js +8 -1
  31. package/dist/src/queue/Scheduler.js.map +1 -1
  32. package/dist/src/storage/FileStore.d.ts.map +1 -1
  33. package/dist/src/storage/FileStore.js +4 -3
  34. package/dist/src/storage/FileStore.js.map +1 -1
  35. package/dist/src/storage/MemoryStore.d.ts.map +1 -1
  36. package/dist/src/storage/MemoryStore.js +2 -1
  37. package/dist/src/storage/MemoryStore.js.map +1 -1
  38. package/dist/src/types.d.ts +85 -10
  39. package/dist/src/types.d.ts.map +1 -1
  40. package/dist/src/types.js +4 -1
  41. package/dist/src/types.js.map +1 -1
  42. package/dist/src/utils/CronParser.d.ts +12 -0
  43. package/dist/src/utils/CronParser.d.ts.map +1 -0
  44. package/dist/src/utils/CronParser.js +28 -0
  45. package/dist/src/utils/CronParser.js.map +1 -0
  46. package/dist/src/utils/RateLimiter.d.ts +37 -0
  47. package/dist/src/utils/RateLimiter.d.ts.map +1 -0
  48. package/dist/src/utils/RateLimiter.js +68 -0
  49. package/dist/src/utils/RateLimiter.js.map +1 -0
  50. package/dist/src/utils/WebhookManager.d.ts +29 -0
  51. package/dist/src/utils/WebhookManager.d.ts.map +1 -0
  52. package/dist/src/utils/WebhookManager.js +82 -0
  53. package/dist/src/utils/WebhookManager.js.map +1 -0
  54. package/dist/src/worker/Worker.d.ts +2 -2
  55. package/dist/src/worker/Worker.d.ts.map +1 -1
  56. package/dist/src/worker/Worker.js +60 -38
  57. package/dist/src/worker/Worker.js.map +1 -1
  58. package/dist/src/worker/childProcessor.js +23 -7
  59. package/dist/src/worker/childProcessor.js.map +1 -1
  60. package/package.json +27 -5
@@ -0,0 +1,70 @@
1
+ import { Queue } from "../queue/Queue.js";
2
+ export interface DashboardConfig {
3
+ port: number;
4
+ host?: string;
5
+ updateInterval?: number;
6
+ }
7
+ export declare class Dashboard {
8
+ private queue;
9
+ private server;
10
+ private wss;
11
+ private updateInterval;
12
+ private config;
13
+ private clients;
14
+ private htmlTemplate;
15
+ constructor(queue: Queue, config: DashboardConfig);
16
+ /**
17
+ * Start the dashboard server
18
+ */
19
+ start(): Promise<void>;
20
+ /**
21
+ * Stop the dashboard server
22
+ */
23
+ stop(): Promise<void>;
24
+ /**
25
+ * Handle HTTP requests
26
+ */
27
+ private handleRequest;
28
+ /**
29
+ * Serve the HTML dashboard
30
+ */
31
+ private serveHTML;
32
+ /**
33
+ * Generate HTML dashboard
34
+ */
35
+ private generateHTML;
36
+ private loadTemplate;
37
+ /**
38
+ * Setup WebSocket handlers
39
+ */
40
+ private setupWebSocketHandlers;
41
+ /**
42
+ * Serve stats API
43
+ */
44
+ private serveStats;
45
+ /**
46
+ * Serve jobs list
47
+ */
48
+ private serveJobs;
49
+ /**
50
+ * Serve failed jobs
51
+ */
52
+ private serveFailedJobs;
53
+ /**
54
+ * Handle reprocess failed job request
55
+ */
56
+ private handleReprocessFailed;
57
+ /**
58
+ * Send stats to a specific client
59
+ */
60
+ private sendStatsToClient;
61
+ /**
62
+ * Broadcast stats to all clients
63
+ */
64
+ private broadcastStats;
65
+ /**
66
+ * Start periodic update interval
67
+ */
68
+ private startUpdateInterval;
69
+ }
70
+ //# sourceMappingURL=Dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../../src/dashboard/Dashboard.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,YAAY,CAAS;gBAEjB,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe;IAkBjD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,SAAS;IAMjB;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;OAEG;IACH,OAAO,CAAC,UAAU;IAqBlB;;OAEG;IACH,OAAO,CAAC,SAAS;IA0BjB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0C7B;;OAEG;YACW,iBAAiB;IAiC/B;;OAEG;YACW,cAAc;IAyC5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAO5B"}
@@ -0,0 +1,308 @@
1
+ import { createServer } from "http";
2
+ import { readFileSync } from "node:fs";
3
+ import { resolve } from "node:path";
4
+ import { WebSocketServer, WebSocket } from "ws";
5
+ import { JobStatus } from "../constants.js";
6
+ export class Dashboard {
7
+ queue;
8
+ server;
9
+ wss;
10
+ updateInterval = null;
11
+ config;
12
+ clients = new Set();
13
+ htmlTemplate;
14
+ constructor(queue, config) {
15
+ this.queue = queue;
16
+ this.config = {
17
+ ...config,
18
+ updateInterval: config.updateInterval || 1000,
19
+ };
20
+ this.htmlTemplate = this.loadTemplate();
21
+ // Create HTTP server
22
+ this.server = createServer((req, res) => {
23
+ this.handleRequest(req, res);
24
+ });
25
+ // Create WebSocket server
26
+ this.wss = new WebSocketServer({ server: this.server });
27
+ this.setupWebSocketHandlers();
28
+ }
29
+ /**
30
+ * Start the dashboard server
31
+ */
32
+ async start() {
33
+ return new Promise((resolve) => {
34
+ const host = this.config.host || "localhost";
35
+ this.server.listen(this.config.port, host, () => {
36
+ console.log(`[Dashboard] Queue dashboard running at http://${host}:${this.config.port}`);
37
+ this.startUpdateInterval();
38
+ resolve();
39
+ });
40
+ });
41
+ }
42
+ /**
43
+ * Stop the dashboard server
44
+ */
45
+ async stop() {
46
+ if (this.updateInterval) {
47
+ clearInterval(this.updateInterval);
48
+ }
49
+ // Close all WebSocket connections
50
+ for (const client of this.clients) {
51
+ client.close();
52
+ }
53
+ return new Promise((resolve) => {
54
+ this.server.close(() => {
55
+ console.log("[Dashboard] Dashboard server stopped");
56
+ resolve();
57
+ });
58
+ });
59
+ }
60
+ /**
61
+ * Handle HTTP requests
62
+ */
63
+ handleRequest(req, res) {
64
+ if (req.url === "/" || req.url === "/index.html") {
65
+ this.serveHTML(res);
66
+ }
67
+ else if (req.url === "/api/stats") {
68
+ this.serveStats(res);
69
+ }
70
+ else if (req.url === "/api/jobs") {
71
+ this.serveJobs(res);
72
+ }
73
+ else if (req.url === "/api/failed-jobs") {
74
+ this.serveFailedJobs(res);
75
+ }
76
+ else if (req.url === "/api/reprocess-failed" && req.method === "POST") {
77
+ this.handleReprocessFailed(req, res);
78
+ }
79
+ else {
80
+ res.writeHead(404, { "Content-Type": "application/json" });
81
+ res.end(JSON.stringify({ error: "Not found" }));
82
+ }
83
+ }
84
+ /**
85
+ * Serve the HTML dashboard
86
+ */
87
+ serveHTML(res) {
88
+ const html = this.generateHTML();
89
+ res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
90
+ res.end(html);
91
+ }
92
+ /**
93
+ * Generate HTML dashboard
94
+ */
95
+ generateHTML() {
96
+ return this.htmlTemplate;
97
+ }
98
+ loadTemplate() {
99
+ const templatePath = resolve(process.cwd(), "src", "dashboard", "dashboard.html");
100
+ return readFileSync(templatePath, "utf8");
101
+ }
102
+ /**
103
+ * Setup WebSocket handlers
104
+ */
105
+ setupWebSocketHandlers() {
106
+ this.wss.on("connection", (ws) => {
107
+ console.log("[Dashboard] New WebSocket client connected");
108
+ this.clients.add(ws);
109
+ // Send initial data
110
+ this.sendStatsToClient(ws).catch((error) => {
111
+ console.error("[Dashboard] Error sending initial stats:", error);
112
+ });
113
+ ws.on("message", (message) => {
114
+ try {
115
+ const data = JSON.parse(message);
116
+ if (data.action === "getUpdate") {
117
+ this.sendStatsToClient(ws).catch((error) => {
118
+ console.error("[Dashboard] Error sending stats:", error);
119
+ });
120
+ }
121
+ }
122
+ catch (error) {
123
+ console.error("[Dashboard] Error parsing message:", error);
124
+ }
125
+ });
126
+ ws.on("close", () => {
127
+ console.log("[Dashboard] WebSocket client disconnected");
128
+ this.clients.delete(ws);
129
+ });
130
+ ws.on("error", (error) => {
131
+ console.error("[Dashboard] WebSocket error:", error);
132
+ });
133
+ });
134
+ }
135
+ /**
136
+ * Serve stats API
137
+ */
138
+ serveStats(res) {
139
+ this.queue
140
+ .getStats()
141
+ .then((stats) => {
142
+ res.writeHead(200, { "Content-Type": "application/json" });
143
+ res.end(JSON.stringify({
144
+ stats,
145
+ meta: {
146
+ concurrency: this.queue.getConcurrency(),
147
+ },
148
+ }));
149
+ })
150
+ .catch((error) => {
151
+ console.error("[Dashboard] Error getting stats:", error);
152
+ res.writeHead(500, { "Content-Type": "application/json" });
153
+ res.end(JSON.stringify({ error: "Failed to get stats" }));
154
+ });
155
+ }
156
+ /**
157
+ * Serve jobs list
158
+ */
159
+ serveJobs(res) {
160
+ this.queue
161
+ .getAllJobs()
162
+ .then((jobs) => {
163
+ const filtered = jobs
164
+ .filter((j) => j.status === JobStatus.PROCESSING ||
165
+ j.status === JobStatus.WAITING ||
166
+ j.status === JobStatus.DELAYED ||
167
+ j.status === JobStatus.PENDING ||
168
+ j.status === JobStatus.STALLED)
169
+ .sort((a, b) => b.createdAt - a.createdAt)
170
+ .slice(0, 100);
171
+ res.writeHead(200, { "Content-Type": "application/json" });
172
+ res.end(JSON.stringify(filtered));
173
+ })
174
+ .catch((error) => {
175
+ console.error("[Dashboard] Error getting jobs:", error);
176
+ res.writeHead(500, { "Content-Type": "application/json" });
177
+ res.end(JSON.stringify({ error: "Failed to get jobs" }));
178
+ });
179
+ }
180
+ /**
181
+ * Serve failed jobs
182
+ */
183
+ serveFailedJobs(res) {
184
+ this.queue
185
+ .getFailedJobs()
186
+ .then((failedJobs) => {
187
+ res.writeHead(200, { "Content-Type": "application/json" });
188
+ res.end(JSON.stringify(failedJobs.sort((a, b) => b.updatedAt - a.updatedAt).slice(0, 50)));
189
+ })
190
+ .catch((error) => {
191
+ console.error("[Dashboard] Error getting failed jobs:", error);
192
+ res.writeHead(500, { "Content-Type": "application/json" });
193
+ res.end(JSON.stringify({ error: "Failed to get failed jobs" }));
194
+ });
195
+ }
196
+ /**
197
+ * Handle reprocess failed job request
198
+ */
199
+ handleReprocessFailed(req, res) {
200
+ let body = "";
201
+ req.on("data", (chunk) => {
202
+ body += chunk;
203
+ });
204
+ req.on("end", () => {
205
+ try {
206
+ const data = JSON.parse(body);
207
+ const { jobId } = data;
208
+ this.queue
209
+ .reprocessFailed(jobId)
210
+ .then((success) => {
211
+ res.writeHead(200, { "Content-Type": "application/json" });
212
+ res.end(JSON.stringify({ success }));
213
+ // Broadcast update to all clients
214
+ this.broadcastStats().catch((error) => {
215
+ console.error("[Dashboard] Error broadcasting after reprocess:", error);
216
+ });
217
+ })
218
+ .catch((error) => {
219
+ console.error("[Dashboard] Error reprocessing failed job:", error);
220
+ res.writeHead(500, { "Content-Type": "application/json" });
221
+ res.end(JSON.stringify({ error: "Failed to reprocess job" }));
222
+ });
223
+ }
224
+ catch (error) {
225
+ console.error("[Dashboard] Error parsing reprocess request:", error);
226
+ res.writeHead(400, { "Content-Type": "application/json" });
227
+ res.end(JSON.stringify({ error: "Invalid request" }));
228
+ }
229
+ });
230
+ }
231
+ /**
232
+ * Send stats to a specific client
233
+ */
234
+ async sendStatsToClient(ws) {
235
+ try {
236
+ const stats = await this.queue.getStats();
237
+ const allJobs = await this.queue.getAllJobs();
238
+ const failedJobs = await this.queue.getFailedJobs();
239
+ const jobs = allJobs
240
+ .filter((j) => j.status === JobStatus.PROCESSING ||
241
+ j.status === JobStatus.WAITING ||
242
+ j.status === JobStatus.DELAYED ||
243
+ j.status === JobStatus.PENDING ||
244
+ j.status === JobStatus.STALLED)
245
+ .sort((a, b) => b.createdAt - a.createdAt)
246
+ .slice(0, 100);
247
+ ws.send(JSON.stringify({
248
+ stats,
249
+ jobs,
250
+ failedJobs: failedJobs.slice(0, 50),
251
+ meta: {
252
+ concurrency: this.queue.getConcurrency(),
253
+ },
254
+ }));
255
+ }
256
+ catch (error) {
257
+ console.error("[Dashboard] Error getting data for client:", error);
258
+ }
259
+ }
260
+ /**
261
+ * Broadcast stats to all clients
262
+ */
263
+ async broadcastStats() {
264
+ if (this.clients.size === 0) {
265
+ return;
266
+ }
267
+ try {
268
+ const stats = await this.queue.getStats();
269
+ const allJobs = await this.queue.getAllJobs();
270
+ const failedJobs = await this.queue.getFailedJobs();
271
+ const jobs = allJobs
272
+ .filter((j) => j.status === JobStatus.PROCESSING ||
273
+ j.status === JobStatus.WAITING ||
274
+ j.status === JobStatus.DELAYED ||
275
+ j.status === JobStatus.PENDING ||
276
+ j.status === JobStatus.STALLED)
277
+ .sort((a, b) => b.createdAt - a.createdAt)
278
+ .slice(0, 100);
279
+ const data = JSON.stringify({
280
+ stats,
281
+ jobs,
282
+ failedJobs: failedJobs.slice(0, 50),
283
+ meta: {
284
+ concurrency: this.queue.getConcurrency(),
285
+ },
286
+ });
287
+ for (const client of this.clients) {
288
+ if (client.readyState === WebSocket.OPEN) {
289
+ client.send(data);
290
+ }
291
+ }
292
+ }
293
+ catch (error) {
294
+ console.error("[Dashboard] Error broadcasting stats:", error);
295
+ }
296
+ }
297
+ /**
298
+ * Start periodic update interval
299
+ */
300
+ startUpdateInterval() {
301
+ this.updateInterval = setInterval(() => {
302
+ this.broadcastStats().catch((error) => {
303
+ console.error("[Dashboard] Error in update interval:", error);
304
+ });
305
+ }, this.config.updateInterval || 1000);
306
+ }
307
+ }
308
+ //# sourceMappingURL=Dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard.js","sourceRoot":"","sources":["../../../src/dashboard/Dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { Dashboard } from './Dashboard.js';
2
+ export type { DashboardConfig } from './Dashboard.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Dashboard } from './Dashboard.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -7,8 +7,20 @@
7
7
  * - Retry with exponential backoff
8
8
  * - Dead letter queue for failed jobs
9
9
  * - Graceful shutdown handling
10
+ * - Job events and progress tracking
11
+ * - Job priorities and dependencies
12
+ * - Repeating jobs with cron support
13
+ * - Rate limiting
14
+ * - Webhooks
15
+ * - HTML Dashboard for monitoring
10
16
  */
11
17
  export { Queue } from './queue/Queue.js';
12
18
  export { Job } from './queue/Job.js';
13
- export type { QueueConfig, JobData, JobStatus, JobProcessor, RetryConfig, BackoffConfig, } from './types.js';
19
+ export type { QueueConfig, JobData, JobProcessor, JobOptions, RetryConfig, BackoffConfig, RepeatConfig, RateLimiterConfig, WebhookConfig, QueueEvents, JobWithMethods, } from './types.js';
20
+ export { JobStatus, BackoffStrategyType, StorageType, WorkerMessageType, WorkerResponseType, WorkerSignalType, QueueEventType, } from './types.js';
21
+ export { CronParser } from './utils/CronParser.js';
22
+ export { RateLimiter } from './utils/RateLimiter.js';
23
+ export { WebhookManager } from './utils/WebhookManager.js';
24
+ export { Dashboard } from './dashboard/Dashboard.js';
25
+ export type { DashboardConfig } from './dashboard/Dashboard.js';
14
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,YAAY,EACV,WAAW,EACX,OAAO,EACP,SAAS,EACT,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,YAAY,EACV,WAAW,EACX,OAAO,EACP,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/src/index.js CHANGED
@@ -7,7 +7,18 @@
7
7
  * - Retry with exponential backoff
8
8
  * - Dead letter queue for failed jobs
9
9
  * - Graceful shutdown handling
10
+ * - Job events and progress tracking
11
+ * - Job priorities and dependencies
12
+ * - Repeating jobs with cron support
13
+ * - Rate limiting
14
+ * - Webhooks
15
+ * - HTML Dashboard for monitoring
10
16
  */
11
17
  export { Queue } from './queue/Queue.js';
12
18
  export { Job } from './queue/Job.js';
19
+ export { JobStatus, BackoffStrategyType, StorageType, WorkerMessageType, WorkerResponseType, WorkerSignalType, QueueEventType, } from './types.js';
20
+ export { CronParser } from './utils/CronParser.js';
21
+ export { RateLimiter } from './utils/RateLimiter.js';
22
+ export { WebhookManager } from './utils/WebhookManager.js';
23
+ export { Dashboard } from './dashboard/Dashboard.js';
13
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAcrC,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Backoff.d.ts","sourceRoot":"","sources":["../../../src/queue/Backoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAIjC;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAavC;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAItC"}
1
+ {"version":3,"file":"Backoff.d.ts","sourceRoot":"","sources":["../../../src/queue/Backoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AAEjE;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAIjC;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAavC;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAItC"}
@@ -1,3 +1,4 @@
1
+ import { BackoffStrategyType } from '../types.js';
1
2
  /**
2
3
  * Backoff calculator for retry delays
3
4
  */
@@ -14,7 +15,7 @@ export class Backoff {
14
15
  * @returns Delay in milliseconds
15
16
  */
16
17
  calculateDelay(attempt) {
17
- if (this.config.type === 'exponential') {
18
+ if (this.config.type === BackoffStrategyType.EXPONENTIAL) {
18
19
  // Exponential backoff: delay * 2^(attempt-1)
19
20
  const exponentialDelay = this.config.delay * Math.pow(2, attempt - 1);
20
21
  // Cap at 1 hour to prevent extremely long delays
@@ -1 +1 @@
1
- {"version":3,"file":"Backoff.js","sourceRoot":"","sources":["../../../src/queue/Backoff.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,OAAO;IACV,MAAM,CAAgB;IAE9B,YAAY,MAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,OAAe;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACvC,6CAA6C;YAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;YAEtE,iDAAiD;YACjD,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;YAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,OAAe;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC5B,CAAC;CACF"}
1
+ {"version":3,"file":"Backoff.js","sourceRoot":"","sources":["../../../src/queue/Backoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjE;;GAEG;AACH,MAAM,OAAO,OAAO;IACV,MAAM,CAAgB;IAE9B,YAAY,MAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,OAAe;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,mBAAmB,CAAC,WAAW,EAAE,CAAC;YACzD,6CAA6C;YAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;YAEtE,iDAAiD;YACjD,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;YAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,OAAe;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC5B,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { JobData, JobStatus } from '../types.js';
1
+ import { JobData, JobStatus, JobOptions, RepeatConfig } from '../types.js';
2
2
  /**
3
3
  * Job class representing a single unit of work in the queue
4
4
  */
@@ -8,10 +8,21 @@ export declare class Job {
8
8
  attempts: number;
9
9
  maxAttempts: number;
10
10
  status: JobStatus;
11
+ priority: number;
12
+ progress: number;
11
13
  nextRunAt: number;
14
+ delay: number;
15
+ repeatConfig?: RepeatConfig;
16
+ repeatCount: number;
17
+ dependsOn?: string[];
18
+ parentJobId?: string;
19
+ result?: unknown;
20
+ error?: string;
12
21
  readonly createdAt: number;
13
22
  updatedAt: number;
14
- constructor(payload: unknown, maxAttempts: number, nextRunAt?: number);
23
+ startedAt?: number;
24
+ completedAt?: number;
25
+ constructor(payload: unknown, maxAttempts: number, options?: JobOptions);
15
26
  /**
16
27
  * Create a Job instance from stored data
17
28
  */
@@ -27,11 +38,11 @@ export declare class Job {
27
38
  /**
28
39
  * Mark job as completed
29
40
  */
30
- markCompleted(): void;
41
+ markCompleted(result?: unknown): void;
31
42
  /**
32
43
  * Mark job as failed and increment attempts
33
44
  */
34
- markFailed(nextRunAt?: number): void;
45
+ markFailed(error: string, nextRunAt?: number): void;
35
46
  /**
36
47
  * Check if job has exceeded max attempts
37
48
  */
@@ -40,5 +51,25 @@ export declare class Job {
40
51
  * Reset job for reprocessing (used when recovering from DLQ)
41
52
  */
42
53
  reset(): void;
54
+ /**
55
+ * Update job progress
56
+ */
57
+ updateProgress(progress: number): void;
58
+ /**
59
+ * Mark job as stalled
60
+ */
61
+ markStalled(): void;
62
+ /**
63
+ * Check if job is stalled (processing for too long)
64
+ */
65
+ isStalled(stalledThreshold?: number): boolean;
66
+ /**
67
+ * Check if dependencies are satisfied
68
+ */
69
+ areDependenciesSatisfied(completedJobIds: Set<string>): boolean;
70
+ /**
71
+ * Create a repeated instance of this job
72
+ */
73
+ createRepeatInstance(): Job;
43
74
  }
44
75
  //# sourceMappingURL=Job.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Job.d.ts","sourceRoot":"","sources":["../../../src/queue/Job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGjD;;GAEG;AACH,qBAAa,GAAG;IACd,SAAgB,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IACzB,SAAgB,SAAS,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAYrE;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG;IAMnC;;OAEG;IACH,MAAM,IAAI,OAAO;IAajB;;OAEG;IACH,cAAc,IAAI,IAAI;IAKtB;;OAEG;IACH,aAAa,IAAI,IAAI;IAKrB;;OAEG;IACH,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IASpC;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd"}
1
+ {"version":3,"file":"Job.d.ts","sourceRoot":"","sources":["../../../src/queue/Job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3E;;GAEG;AACH,qBAAa,GAAG;IACd,SAAgB,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACtB,SAAgB,SAAS,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe;IAkB3E;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG;IAMnC;;OAEG;IACH,MAAM,IAAI,OAAO;IAwBjB;;OAEG;IACH,cAAc,IAAI,IAAI;IAMtB;;OAEG;IACH,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAQrC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAUnD;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKtC;;OAEG;IACH,WAAW,IAAI,IAAI;IAKnB;;OAEG;IACH,SAAS,CAAC,gBAAgB,GAAE,MAAc,GAAG,OAAO;IAOpD;;OAEG;IACH,wBAAwB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO;IAO/D;;OAEG;IACH,oBAAoB,IAAI,GAAG;CAY5B"}