bunqueue 2.6.13 → 2.6.15
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/cli/commands/core.js +1 -0
- package/dist/cli/commands/core.js.map +1 -1
- package/dist/cli/commands/types.d.ts +1 -1
- package/dist/cli/commands/types.d.ts.map +1 -1
- package/dist/cli/commands/types.js +2 -2
- package/dist/cli/commands/types.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +14 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +81 -60
- package/dist/cli/output.js.map +1 -1
- package/dist/domain/types/command.d.ts +19 -1
- package/dist/domain/types/command.d.ts.map +1 -1
- package/dist/infrastructure/server/handler.d.ts.map +1 -1
- package/dist/infrastructure/server/handler.js +4 -1
- package/dist/infrastructure/server/handler.js.map +1 -1
- package/dist/infrastructure/server/handlerRoutes.d.ts +2 -0
- package/dist/infrastructure/server/handlerRoutes.d.ts.map +1 -1
- package/dist/infrastructure/server/handlerRoutes.js +15 -0
- package/dist/infrastructure/server/handlerRoutes.js.map +1 -1
- package/dist/infrastructure/server/handlers/core.js +2 -2
- package/dist/infrastructure/server/handlers/core.js.map +1 -1
- package/dist/infrastructure/server/handlers/dashboard.d.ts +21 -0
- package/dist/infrastructure/server/handlers/dashboard.d.ts.map +1 -0
- package/dist/infrastructure/server/handlers/dashboard.js +135 -0
- package/dist/infrastructure/server/handlers/dashboard.js.map +1 -0
- package/dist/infrastructure/server/handlers/index.d.ts +1 -0
- package/dist/infrastructure/server/handlers/index.d.ts.map +1 -1
- package/dist/infrastructure/server/handlers/index.js +1 -0
- package/dist/infrastructure/server/handlers/index.js.map +1 -1
- package/dist/infrastructure/server/handlers/query.d.ts +1 -1
- package/dist/infrastructure/server/handlers/query.d.ts.map +1 -1
- package/dist/infrastructure/server/handlers/query.js +15 -5
- package/dist/infrastructure/server/handlers/query.js.map +1 -1
- package/dist/infrastructure/server/http.d.ts.map +1 -1
- package/dist/infrastructure/server/http.js +32 -81
- package/dist/infrastructure/server/http.js.map +1 -1
- package/dist/infrastructure/server/httpEndpoints.d.ts +6 -0
- package/dist/infrastructure/server/httpEndpoints.d.ts.map +1 -1
- package/dist/infrastructure/server/httpEndpoints.js +121 -0
- package/dist/infrastructure/server/httpEndpoints.js.map +1 -1
- package/dist/infrastructure/server/httpRouteJobs.d.ts +10 -0
- package/dist/infrastructure/server/httpRouteJobs.d.ts.map +1 -0
- package/dist/infrastructure/server/httpRouteJobs.js +226 -0
- package/dist/infrastructure/server/httpRouteJobs.js.map +1 -0
- package/dist/infrastructure/server/httpRouteQueueConfig.d.ts +8 -0
- package/dist/infrastructure/server/httpRouteQueueConfig.d.ts.map +1 -0
- package/dist/infrastructure/server/httpRouteQueueConfig.js +107 -0
- package/dist/infrastructure/server/httpRouteQueueConfig.js.map +1 -0
- package/dist/infrastructure/server/httpRouteQueues.d.ts +8 -0
- package/dist/infrastructure/server/httpRouteQueues.d.ts.map +1 -0
- package/dist/infrastructure/server/httpRouteQueues.js +205 -0
- package/dist/infrastructure/server/httpRouteQueues.js.map +1 -0
- package/dist/infrastructure/server/httpRouteResources.d.ts +8 -0
- package/dist/infrastructure/server/httpRouteResources.d.ts.map +1 -0
- package/dist/infrastructure/server/httpRouteResources.js +148 -0
- package/dist/infrastructure/server/httpRouteResources.js.map +1 -0
- package/dist/main.js +6 -3
- package/dist/main.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* HTTP Endpoints - Health, diagnostics, and stats endpoints
|
|
3
3
|
*/
|
|
4
4
|
import { VERSION } from '../../shared/version';
|
|
5
|
+
import { throughputTracker } from '../../application/throughputTracker';
|
|
6
|
+
import { latencyTracker } from '../../application/latencyTracker';
|
|
5
7
|
/** JSON response helper */
|
|
6
8
|
export function jsonResponse(data, status = 200, corsOrigins) {
|
|
7
9
|
const headers = {
|
|
@@ -144,6 +146,125 @@ export function statsEndpoint(queueManager, corsOrigins) {
|
|
|
144
146
|
collections: memStats,
|
|
145
147
|
}, 200, corsOrigins);
|
|
146
148
|
}
|
|
149
|
+
/** Dashboard overview endpoint - aggregates all dashboard data in a single call */
|
|
150
|
+
export function dashboardOverviewEndpoint(queueManager, corsOrigins) {
|
|
151
|
+
const stats = queueManager.getStats();
|
|
152
|
+
const rates = throughputTracker.getRates();
|
|
153
|
+
const latencies = latencyTracker.getPercentiles();
|
|
154
|
+
const avgLatencies = latencyTracker.getAverages();
|
|
155
|
+
const memStats = queueManager.getMemoryStats();
|
|
156
|
+
const workers = queueManager.workerManager.list();
|
|
157
|
+
const workerStats = queueManager.workerManager.getStats();
|
|
158
|
+
const crons = queueManager.listCrons();
|
|
159
|
+
const storage = queueManager.getStorageStatus();
|
|
160
|
+
const mem = process.memoryUsage();
|
|
161
|
+
return jsonResponse({
|
|
162
|
+
ok: true,
|
|
163
|
+
stats: {
|
|
164
|
+
waiting: stats.waiting,
|
|
165
|
+
active: stats.active,
|
|
166
|
+
delayed: stats.delayed,
|
|
167
|
+
completed: stats.completed,
|
|
168
|
+
dlq: stats.dlq,
|
|
169
|
+
totalPushed: Number(stats.totalPushed),
|
|
170
|
+
totalPulled: Number(stats.totalPulled),
|
|
171
|
+
totalCompleted: Number(stats.totalCompleted),
|
|
172
|
+
totalFailed: Number(stats.totalFailed),
|
|
173
|
+
uptime: stats.uptime,
|
|
174
|
+
},
|
|
175
|
+
throughput: rates,
|
|
176
|
+
latency: {
|
|
177
|
+
averages: avgLatencies,
|
|
178
|
+
percentiles: latencies,
|
|
179
|
+
},
|
|
180
|
+
memory: {
|
|
181
|
+
heapUsed: Math.round(mem.heapUsed / 1024 / 1024),
|
|
182
|
+
heapTotal: Math.round(mem.heapTotal / 1024 / 1024),
|
|
183
|
+
rss: Math.round(mem.rss / 1024 / 1024),
|
|
184
|
+
},
|
|
185
|
+
collections: memStats,
|
|
186
|
+
workers: {
|
|
187
|
+
total: workerStats.total,
|
|
188
|
+
active: workerStats.active,
|
|
189
|
+
list: workers.map((w) => ({
|
|
190
|
+
id: w.id,
|
|
191
|
+
name: w.name,
|
|
192
|
+
queues: w.queues,
|
|
193
|
+
lastSeen: w.lastSeen,
|
|
194
|
+
activeJobs: w.activeJobs,
|
|
195
|
+
processedJobs: w.processedJobs,
|
|
196
|
+
failedJobs: w.failedJobs,
|
|
197
|
+
})),
|
|
198
|
+
},
|
|
199
|
+
crons: crons.map((c) => ({
|
|
200
|
+
name: c.name,
|
|
201
|
+
queue: c.queue,
|
|
202
|
+
schedule: c.schedule ?? null,
|
|
203
|
+
repeatEvery: c.repeatEvery ?? null,
|
|
204
|
+
nextRun: c.nextRun,
|
|
205
|
+
executions: c.executions,
|
|
206
|
+
})),
|
|
207
|
+
storage,
|
|
208
|
+
timestamp: Date.now(),
|
|
209
|
+
}, 200, corsOrigins);
|
|
210
|
+
}
|
|
211
|
+
/** Dashboard queues endpoint - all queues with per-queue stats */
|
|
212
|
+
export function dashboardQueuesEndpoint(queueManager, corsOrigins) {
|
|
213
|
+
const queueNames = queueManager.listQueues();
|
|
214
|
+
const perQueueStats = queueManager.getPerQueueStats();
|
|
215
|
+
const queues = queueNames.map((name) => {
|
|
216
|
+
const stats = perQueueStats.get(name);
|
|
217
|
+
return {
|
|
218
|
+
name,
|
|
219
|
+
waiting: stats?.waiting ?? 0,
|
|
220
|
+
delayed: stats?.delayed ?? 0,
|
|
221
|
+
active: stats?.active ?? 0,
|
|
222
|
+
dlq: stats?.dlq ?? 0,
|
|
223
|
+
paused: queueManager.isPaused(name),
|
|
224
|
+
};
|
|
225
|
+
});
|
|
226
|
+
return jsonResponse({ ok: true, queues, timestamp: Date.now() }, 200, corsOrigins);
|
|
227
|
+
}
|
|
228
|
+
/** Dashboard single queue detail endpoint */
|
|
229
|
+
export function dashboardQueueDetailEndpoint(queueManager, queue, includeJobs, corsOrigins) {
|
|
230
|
+
const counts = queueManager.getQueueJobCounts(queue);
|
|
231
|
+
const paused = queueManager.isPaused(queue);
|
|
232
|
+
const dlqJobs = queueManager.getDlq(queue, 10);
|
|
233
|
+
const priorityCounts = queueManager.getCountsPerPriority(queue);
|
|
234
|
+
const result = {
|
|
235
|
+
ok: true,
|
|
236
|
+
name: queue,
|
|
237
|
+
counts,
|
|
238
|
+
paused,
|
|
239
|
+
priorityCounts,
|
|
240
|
+
dlqPreview: dlqJobs.map((j) => ({
|
|
241
|
+
id: j.id,
|
|
242
|
+
data: j.data,
|
|
243
|
+
attempts: j.attempts,
|
|
244
|
+
createdAt: j.createdAt,
|
|
245
|
+
})),
|
|
246
|
+
timestamp: Date.now(),
|
|
247
|
+
};
|
|
248
|
+
if (includeJobs) {
|
|
249
|
+
const waiting = queueManager.getJobs(queue, { state: 'waiting', end: 10 });
|
|
250
|
+
const active = queueManager.getJobs(queue, { state: 'active', end: 10 });
|
|
251
|
+
const delayed = queueManager.getJobs(queue, { state: 'delayed', end: 10 });
|
|
252
|
+
const toSummary = (j) => ({
|
|
253
|
+
id: j.id,
|
|
254
|
+
priority: j.priority,
|
|
255
|
+
createdAt: j.createdAt,
|
|
256
|
+
runAt: j.runAt,
|
|
257
|
+
attempts: j.attempts,
|
|
258
|
+
progress: j.progress,
|
|
259
|
+
});
|
|
260
|
+
result.jobs = {
|
|
261
|
+
waiting: waiting.map(toSummary),
|
|
262
|
+
active: active.map(toSummary),
|
|
263
|
+
delayed: delayed.map(toSummary),
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
return jsonResponse(result, 200, corsOrigins);
|
|
267
|
+
}
|
|
147
268
|
/** Metrics endpoint */
|
|
148
269
|
export function metricsEndpoint(queueManager, corsOrigins) {
|
|
149
270
|
const stats = queueManager.getStats();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpEndpoints.js","sourceRoot":"","sources":["../../../src/infrastructure/server/httpEndpoints.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"httpEndpoints.js","sourceRoot":"","sources":["../../../src/infrastructure/server/httpEndpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Routes - Job operations
|
|
3
|
+
* All /jobs/:id/* endpoints, split into sub-routers for complexity
|
|
4
|
+
*/
|
|
5
|
+
import type { HandlerContext } from './types';
|
|
6
|
+
type Cors = Set<string>;
|
|
7
|
+
/** Route /jobs/* requests. Returns Response or null if no match. */
|
|
8
|
+
export declare function routeJobRoutes(req: Request, path: string, method: string, ctx: HandlerContext, cors: Cors): Promise<Response | null>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=httpRouteJobs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpRouteJobs.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/server/httpRouteJobs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C,KAAK,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAyMxB,oEAAoE;AACpE,wBAAsB,cAAc,CAClC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAsF1B"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Routes - Job operations
|
|
3
|
+
* All /jobs/:id/* endpoints, split into sub-routers for complexity
|
|
4
|
+
*/
|
|
5
|
+
import { handleCommand } from './handler';
|
|
6
|
+
import { jsonResponse } from './httpEndpoints';
|
|
7
|
+
const parseBody = (req) => req.json().catch(() => ({}));
|
|
8
|
+
/** Job management: promote, update, state, result, progress, priority, discard */
|
|
9
|
+
async function routeJobManagement(req, path, method, ctx, cors) {
|
|
10
|
+
const promoteMatch = path.match(/^\/jobs\/([^/]+)\/promote$/);
|
|
11
|
+
if (promoteMatch && method === 'POST') {
|
|
12
|
+
const r = await handleCommand({ cmd: 'Promote', id: promoteMatch[1] }, ctx);
|
|
13
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
14
|
+
}
|
|
15
|
+
const dataMatch = path.match(/^\/jobs\/([^/]+)\/data$/);
|
|
16
|
+
if (dataMatch && method === 'PUT') {
|
|
17
|
+
let body;
|
|
18
|
+
try {
|
|
19
|
+
body = (await req.json());
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return jsonResponse({ ok: false, error: 'Invalid JSON body' }, 400, cors);
|
|
23
|
+
}
|
|
24
|
+
const r = await handleCommand({ cmd: 'Update', id: dataMatch[1], data: body['data'] }, ctx);
|
|
25
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
26
|
+
}
|
|
27
|
+
const stateMatch = path.match(/^\/jobs\/([^/]+)\/state$/);
|
|
28
|
+
if (stateMatch && method === 'GET') {
|
|
29
|
+
const r = await handleCommand({ cmd: 'GetState', id: stateMatch[1] }, ctx);
|
|
30
|
+
return jsonResponse(r, r.ok ? 200 : 404, cors);
|
|
31
|
+
}
|
|
32
|
+
const resultMatch = path.match(/^\/jobs\/([^/]+)\/result$/);
|
|
33
|
+
if (resultMatch && method === 'GET') {
|
|
34
|
+
const r = await handleCommand({ cmd: 'GetResult', id: resultMatch[1] }, ctx);
|
|
35
|
+
return jsonResponse(r, r.ok ? 200 : 404, cors);
|
|
36
|
+
}
|
|
37
|
+
const progressMatch = path.match(/^\/jobs\/([^/]+)\/progress$/);
|
|
38
|
+
if (progressMatch && method === 'GET') {
|
|
39
|
+
const r = await handleCommand({ cmd: 'GetProgress', id: progressMatch[1] }, ctx);
|
|
40
|
+
return jsonResponse(r, r.ok ? 200 : 404, cors);
|
|
41
|
+
}
|
|
42
|
+
if (progressMatch && method === 'POST') {
|
|
43
|
+
const body = await parseBody(req);
|
|
44
|
+
const r = await handleCommand({
|
|
45
|
+
cmd: 'Progress',
|
|
46
|
+
id: progressMatch[1],
|
|
47
|
+
progress: body['progress'],
|
|
48
|
+
message: body['message'],
|
|
49
|
+
}, ctx);
|
|
50
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
51
|
+
}
|
|
52
|
+
const priorityMatch = path.match(/^\/jobs\/([^/]+)\/priority$/);
|
|
53
|
+
if (priorityMatch && method === 'PUT') {
|
|
54
|
+
const body = await parseBody(req);
|
|
55
|
+
const r = await handleCommand({
|
|
56
|
+
cmd: 'ChangePriority',
|
|
57
|
+
id: priorityMatch[1],
|
|
58
|
+
priority: body['priority'],
|
|
59
|
+
}, ctx);
|
|
60
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
61
|
+
}
|
|
62
|
+
const discardMatch = path.match(/^\/jobs\/([^/]+)\/discard$/);
|
|
63
|
+
if (discardMatch && method === 'POST') {
|
|
64
|
+
const r = await handleCommand({ cmd: 'Discard', id: discardMatch[1] }, ctx);
|
|
65
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
/** Job advanced: delay, children, logs, heartbeat, wait, lock, move-to-wait */
|
|
70
|
+
async function routeJobAdvanced(req, path, method, ctx, cors) {
|
|
71
|
+
const moveDelayedMatch = path.match(/^\/jobs\/([^/]+)\/move-to-delayed$/);
|
|
72
|
+
if (moveDelayedMatch && method === 'POST') {
|
|
73
|
+
const body = await parseBody(req);
|
|
74
|
+
const r = await handleCommand({
|
|
75
|
+
cmd: 'MoveToDelayed',
|
|
76
|
+
id: moveDelayedMatch[1],
|
|
77
|
+
delay: body['delay'],
|
|
78
|
+
}, ctx);
|
|
79
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
80
|
+
}
|
|
81
|
+
const changeDelayMatch = path.match(/^\/jobs\/([^/]+)\/delay$/);
|
|
82
|
+
if (changeDelayMatch && method === 'PUT') {
|
|
83
|
+
const body = await parseBody(req);
|
|
84
|
+
const r = await handleCommand({
|
|
85
|
+
cmd: 'ChangeDelay',
|
|
86
|
+
id: changeDelayMatch[1],
|
|
87
|
+
delay: body['delay'],
|
|
88
|
+
}, ctx);
|
|
89
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
90
|
+
}
|
|
91
|
+
const childrenMatch = path.match(/^\/jobs\/([^/]+)\/children$/);
|
|
92
|
+
if (childrenMatch && method === 'GET') {
|
|
93
|
+
const r = await handleCommand({ cmd: 'GetChildrenValues', id: childrenMatch[1] }, ctx);
|
|
94
|
+
return jsonResponse(r, r.ok ? 200 : 404, cors);
|
|
95
|
+
}
|
|
96
|
+
const logsMatch = path.match(/^\/jobs\/([^/]+)\/logs$/);
|
|
97
|
+
if (logsMatch && method === 'GET') {
|
|
98
|
+
const r = await handleCommand({ cmd: 'GetLogs', id: logsMatch[1] }, ctx);
|
|
99
|
+
return jsonResponse(r, 200, cors);
|
|
100
|
+
}
|
|
101
|
+
if (logsMatch && method === 'POST') {
|
|
102
|
+
const body = await parseBody(req);
|
|
103
|
+
const r = await handleCommand({
|
|
104
|
+
cmd: 'AddLog',
|
|
105
|
+
id: logsMatch[1],
|
|
106
|
+
message: body['message'],
|
|
107
|
+
level: body['level'],
|
|
108
|
+
}, ctx);
|
|
109
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
110
|
+
}
|
|
111
|
+
if (logsMatch && method === 'DELETE') {
|
|
112
|
+
const r = await handleCommand({ cmd: 'ClearLogs', id: logsMatch[1] }, ctx);
|
|
113
|
+
return jsonResponse(r, 200, cors);
|
|
114
|
+
}
|
|
115
|
+
const heartbeatMatch = path.match(/^\/jobs\/([^/]+)\/heartbeat$/);
|
|
116
|
+
if (heartbeatMatch && method === 'POST') {
|
|
117
|
+
const body = await parseBody(req);
|
|
118
|
+
const r = await handleCommand({
|
|
119
|
+
cmd: 'JobHeartbeat',
|
|
120
|
+
id: heartbeatMatch[1],
|
|
121
|
+
token: body['token'],
|
|
122
|
+
duration: body['duration'],
|
|
123
|
+
}, ctx);
|
|
124
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
125
|
+
}
|
|
126
|
+
const waitMatch = path.match(/^\/jobs\/([^/]+)\/wait$/);
|
|
127
|
+
if (waitMatch && method === 'POST') {
|
|
128
|
+
const body = await parseBody(req);
|
|
129
|
+
const r = await handleCommand({
|
|
130
|
+
cmd: 'WaitJob',
|
|
131
|
+
id: waitMatch[1],
|
|
132
|
+
timeout: body['timeout'],
|
|
133
|
+
}, ctx);
|
|
134
|
+
return jsonResponse(r, 200, cors);
|
|
135
|
+
}
|
|
136
|
+
const extendLockMatch = path.match(/^\/jobs\/([^/]+)\/extend-lock$/);
|
|
137
|
+
if (extendLockMatch && method === 'POST') {
|
|
138
|
+
const body = await parseBody(req);
|
|
139
|
+
const r = await handleCommand({
|
|
140
|
+
cmd: 'ExtendLock',
|
|
141
|
+
id: extendLockMatch[1],
|
|
142
|
+
duration: body['duration'],
|
|
143
|
+
token: body['token'],
|
|
144
|
+
}, ctx);
|
|
145
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
146
|
+
}
|
|
147
|
+
const moveToWaitMatch = path.match(/^\/jobs\/([^/]+)\/move-to-wait$/);
|
|
148
|
+
if (moveToWaitMatch && method === 'POST') {
|
|
149
|
+
const r = await handleCommand({ cmd: 'MoveToWait', id: moveToWaitMatch[1] }, ctx);
|
|
150
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
/** Route /jobs/* requests. Returns Response or null if no match. */
|
|
155
|
+
export async function routeJobRoutes(req, path, method, ctx, cors) {
|
|
156
|
+
// GET/DELETE /jobs/:id
|
|
157
|
+
const jobMatch = path.match(/^\/jobs\/([^/]+)$/);
|
|
158
|
+
if (jobMatch) {
|
|
159
|
+
const id = jobMatch[1];
|
|
160
|
+
if (method === 'GET') {
|
|
161
|
+
const r = await handleCommand({ cmd: 'GetJob', id }, ctx);
|
|
162
|
+
return jsonResponse(r, r.ok ? 200 : 404, cors);
|
|
163
|
+
}
|
|
164
|
+
if (method === 'DELETE') {
|
|
165
|
+
const r = await handleCommand({ cmd: 'Cancel', id }, ctx);
|
|
166
|
+
return jsonResponse(r, 200, cors);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// GET /jobs/custom/:customId
|
|
170
|
+
const customIdMatch = path.match(/^\/jobs\/custom\/([^/]+)$/);
|
|
171
|
+
if (customIdMatch && method === 'GET') {
|
|
172
|
+
const customId = decodeURIComponent(customIdMatch[1]);
|
|
173
|
+
const r = await handleCommand({ cmd: 'GetJobByCustomId', customId }, ctx);
|
|
174
|
+
return jsonResponse(r, r.ok ? 200 : 404, cors);
|
|
175
|
+
}
|
|
176
|
+
// POST /jobs/:id/ack
|
|
177
|
+
const ackMatch = path.match(/^\/jobs\/([^/]+)\/ack$/);
|
|
178
|
+
if (ackMatch && method === 'POST') {
|
|
179
|
+
const body = await parseBody(req);
|
|
180
|
+
const r = await handleCommand({ cmd: 'ACK', id: ackMatch[1], result: body['result'] }, ctx);
|
|
181
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
182
|
+
}
|
|
183
|
+
// POST /jobs/:id/fail
|
|
184
|
+
const failMatch = path.match(/^\/jobs\/([^/]+)\/fail$/);
|
|
185
|
+
if (failMatch && method === 'POST') {
|
|
186
|
+
const body = await parseBody(req);
|
|
187
|
+
const r = await handleCommand({ cmd: 'FAIL', id: failMatch[1], error: body['error'] }, ctx);
|
|
188
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
189
|
+
}
|
|
190
|
+
// Batch endpoints
|
|
191
|
+
if (path === '/jobs/ack-batch' && method === 'POST') {
|
|
192
|
+
const body = await parseBody(req);
|
|
193
|
+
const r = await handleCommand({
|
|
194
|
+
cmd: 'ACKB',
|
|
195
|
+
ids: body['ids'],
|
|
196
|
+
results: body['results'],
|
|
197
|
+
tokens: body['tokens'],
|
|
198
|
+
}, ctx);
|
|
199
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
200
|
+
}
|
|
201
|
+
if (path === '/jobs/extend-locks' && method === 'POST') {
|
|
202
|
+
const body = await parseBody(req);
|
|
203
|
+
const r = await handleCommand({
|
|
204
|
+
cmd: 'ExtendLocks',
|
|
205
|
+
ids: body['ids'],
|
|
206
|
+
tokens: body['tokens'],
|
|
207
|
+
durations: body['durations'],
|
|
208
|
+
}, ctx);
|
|
209
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
210
|
+
}
|
|
211
|
+
if (path === '/jobs/heartbeat-batch' && method === 'POST') {
|
|
212
|
+
const body = await parseBody(req);
|
|
213
|
+
const r = await handleCommand({
|
|
214
|
+
cmd: 'JobHeartbeatB',
|
|
215
|
+
ids: body['ids'],
|
|
216
|
+
tokens: body['tokens'],
|
|
217
|
+
}, ctx);
|
|
218
|
+
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
219
|
+
}
|
|
220
|
+
// Delegate to sub-routers
|
|
221
|
+
const mgmt = await routeJobManagement(req, path, method, ctx, cors);
|
|
222
|
+
if (mgmt)
|
|
223
|
+
return mgmt;
|
|
224
|
+
return routeJobAdvanced(req, path, method, ctx, cors);
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=httpRouteJobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpRouteJobs.js","sourceRoot":"","sources":["../../../src/infrastructure/server/httpRouteJobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Routes - Queue config, DLQ, rate-limiting, concurrency
|
|
3
|
+
* All /queues/:queue/{dlq,rate-limit,concurrency,stall-config,dlq-config} endpoints
|
|
4
|
+
*/
|
|
5
|
+
import type { HandlerContext } from './types';
|
|
6
|
+
/** Route queue config/admin requests. Returns Response or null if no match. */
|
|
7
|
+
export declare function routeQueueConfigRoutes(req: Request, path: string, method: string, ctx: HandlerContext, cors: Set<string>): Promise<Response | null>;
|
|
8
|
+
//# sourceMappingURL=httpRouteQueueConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpRouteQueueConfig.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/server/httpRouteQueueConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM9C,+EAA+E;AAC/E,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAChB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAuH1B"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Routes - Queue config, DLQ, rate-limiting, concurrency
|
|
3
|
+
* All /queues/:queue/{dlq,rate-limit,concurrency,stall-config,dlq-config} endpoints
|
|
4
|
+
*/
|
|
5
|
+
import { handleCommand } from './handler';
|
|
6
|
+
import { jsonResponse } from './httpEndpoints';
|
|
7
|
+
const parseBody = (req) => req.json().catch(() => ({}));
|
|
8
|
+
/** Route queue config/admin requests. Returns Response or null if no match. */
|
|
9
|
+
export async function routeQueueConfigRoutes(req, path, method, ctx, cors) {
|
|
10
|
+
// DLQ: GET /queues/:queue/dlq
|
|
11
|
+
const dlqMatch = path.match(/^\/queues\/([^/]+)\/dlq$/);
|
|
12
|
+
if (dlqMatch && method === 'GET') {
|
|
13
|
+
const queue = decodeURIComponent(dlqMatch[1]);
|
|
14
|
+
const count = parseInt(new URL(req.url).searchParams.get('count') ?? '100');
|
|
15
|
+
const r = await handleCommand({ cmd: 'Dlq', queue, count }, ctx);
|
|
16
|
+
return jsonResponse(r, 200, cors);
|
|
17
|
+
}
|
|
18
|
+
// POST /queues/:queue/dlq/retry
|
|
19
|
+
const dlqRetryMatch = path.match(/^\/queues\/([^/]+)\/dlq\/retry$/);
|
|
20
|
+
if (dlqRetryMatch && method === 'POST') {
|
|
21
|
+
const queue = decodeURIComponent(dlqRetryMatch[1]);
|
|
22
|
+
const body = await parseBody(req);
|
|
23
|
+
const r = await handleCommand({
|
|
24
|
+
cmd: 'RetryDlq',
|
|
25
|
+
queue,
|
|
26
|
+
jobId: body['jobId'],
|
|
27
|
+
}, ctx);
|
|
28
|
+
return jsonResponse(r, 200, cors);
|
|
29
|
+
}
|
|
30
|
+
// POST /queues/:queue/dlq/purge
|
|
31
|
+
const dlqPurgeMatch = path.match(/^\/queues\/([^/]+)\/dlq\/purge$/);
|
|
32
|
+
if (dlqPurgeMatch && method === 'POST') {
|
|
33
|
+
const queue = decodeURIComponent(dlqPurgeMatch[1]);
|
|
34
|
+
const r = await handleCommand({ cmd: 'PurgeDlq', queue }, ctx);
|
|
35
|
+
return jsonResponse(r, 200, cors);
|
|
36
|
+
}
|
|
37
|
+
// Rate limiting: PUT/DELETE /queues/:queue/rate-limit
|
|
38
|
+
const rateLimitMatch = path.match(/^\/queues\/([^/]+)\/rate-limit$/);
|
|
39
|
+
if (rateLimitMatch && method === 'PUT') {
|
|
40
|
+
const queue = decodeURIComponent(rateLimitMatch[1]);
|
|
41
|
+
const body = await parseBody(req);
|
|
42
|
+
const r = await handleCommand({
|
|
43
|
+
cmd: 'RateLimit',
|
|
44
|
+
queue,
|
|
45
|
+
limit: body['limit'],
|
|
46
|
+
}, ctx);
|
|
47
|
+
return jsonResponse(r, 200, cors);
|
|
48
|
+
}
|
|
49
|
+
if (rateLimitMatch && method === 'DELETE') {
|
|
50
|
+
const queue = decodeURIComponent(rateLimitMatch[1]);
|
|
51
|
+
const r = await handleCommand({ cmd: 'RateLimitClear', queue }, ctx);
|
|
52
|
+
return jsonResponse(r, 200, cors);
|
|
53
|
+
}
|
|
54
|
+
// Concurrency: PUT/DELETE /queues/:queue/concurrency
|
|
55
|
+
const concurrencyMatch = path.match(/^\/queues\/([^/]+)\/concurrency$/);
|
|
56
|
+
if (concurrencyMatch && method === 'PUT') {
|
|
57
|
+
const queue = decodeURIComponent(concurrencyMatch[1]);
|
|
58
|
+
const body = await parseBody(req);
|
|
59
|
+
const r = await handleCommand({
|
|
60
|
+
cmd: 'SetConcurrency',
|
|
61
|
+
queue,
|
|
62
|
+
limit: body['limit'],
|
|
63
|
+
}, ctx);
|
|
64
|
+
return jsonResponse(r, 200, cors);
|
|
65
|
+
}
|
|
66
|
+
if (concurrencyMatch && method === 'DELETE') {
|
|
67
|
+
const queue = decodeURIComponent(concurrencyMatch[1]);
|
|
68
|
+
const r = await handleCommand({ cmd: 'ClearConcurrency', queue }, ctx);
|
|
69
|
+
return jsonResponse(r, 200, cors);
|
|
70
|
+
}
|
|
71
|
+
// Config: GET/PUT /queues/:queue/stall-config
|
|
72
|
+
const stallConfigMatch = path.match(/^\/queues\/([^/]+)\/stall-config$/);
|
|
73
|
+
if (stallConfigMatch && method === 'GET') {
|
|
74
|
+
const queue = decodeURIComponent(stallConfigMatch[1]);
|
|
75
|
+
const r = await handleCommand({ cmd: 'GetStallConfig', queue }, ctx);
|
|
76
|
+
return jsonResponse(r, 200, cors);
|
|
77
|
+
}
|
|
78
|
+
if (stallConfigMatch && method === 'PUT') {
|
|
79
|
+
const queue = decodeURIComponent(stallConfigMatch[1]);
|
|
80
|
+
const body = await parseBody(req);
|
|
81
|
+
const r = await handleCommand({
|
|
82
|
+
cmd: 'SetStallConfig',
|
|
83
|
+
queue,
|
|
84
|
+
config: body['config'] ?? body,
|
|
85
|
+
}, ctx);
|
|
86
|
+
return jsonResponse(r, 200, cors);
|
|
87
|
+
}
|
|
88
|
+
// Config: GET/PUT /queues/:queue/dlq-config
|
|
89
|
+
const dlqConfigMatch = path.match(/^\/queues\/([^/]+)\/dlq-config$/);
|
|
90
|
+
if (dlqConfigMatch && method === 'GET') {
|
|
91
|
+
const queue = decodeURIComponent(dlqConfigMatch[1]);
|
|
92
|
+
const r = await handleCommand({ cmd: 'GetDlqConfig', queue }, ctx);
|
|
93
|
+
return jsonResponse(r, 200, cors);
|
|
94
|
+
}
|
|
95
|
+
if (dlqConfigMatch && method === 'PUT') {
|
|
96
|
+
const queue = decodeURIComponent(dlqConfigMatch[1]);
|
|
97
|
+
const body = await parseBody(req);
|
|
98
|
+
const r = await handleCommand({
|
|
99
|
+
cmd: 'SetDlqConfig',
|
|
100
|
+
queue,
|
|
101
|
+
config: body['config'] ?? body,
|
|
102
|
+
}, ctx);
|
|
103
|
+
return jsonResponse(r, 200, cors);
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=httpRouteQueueConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpRouteQueueConfig.js","sourceRoot":"","sources":["../../../src/infrastructure/server/httpRouteQueueConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Routes - Queue operations
|
|
3
|
+
* All /queues/:queue/* endpoints + /queues list
|
|
4
|
+
*/
|
|
5
|
+
import type { HandlerContext } from './types';
|
|
6
|
+
/** Route /queues/* requests. Returns Response or null if no match. */
|
|
7
|
+
export declare function routeQueueRoutes(req: Request, path: string, method: string, ctx: HandlerContext, cors: Set<string>): Promise<Response | null>;
|
|
8
|
+
//# sourceMappingURL=httpRouteQueues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpRouteQueues.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/server/httpRouteQueues.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM9C,sEAAsE;AACtE,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAChB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAqO1B"}
|