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
|
@@ -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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -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,
|
|
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
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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,
|
|
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 ===
|
|
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":"
|
|
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"}
|
package/dist/src/queue/Job.d.ts
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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"}
|