bunqueue-dashboard 1.0.4 → 1.0.5
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 +162 -356
- package/dist/.vite/manifest.json +72 -72
- package/dist/assets/{AddJob-Dgjlhzn2.js → AddJob-g7DKWNZ0.js} +1 -1
- package/dist/assets/{Alerts-Lyzbq0qw.js → Alerts-WcpDWdDf.js} +1 -1
- package/dist/assets/{Benchmark-B4NfYkAi.js → Benchmark-i6UOuIR-.js} +1 -1
- package/dist/assets/{BulkAddJobs-BAN5wT8A.js → BulkAddJobs-56_SkYFd.js} +1 -1
- package/dist/assets/{Cron-Bz46oVXB.js → Cron-BnqxADsg.js} +1 -1
- package/dist/assets/{CronManager-Cl5RW2cB.js → CronManager-4pAw6m87.js} +1 -1
- package/dist/assets/{Database-CeUKS6Nf.js → Database-BDyQ8N-r.js} +1 -1
- package/dist/assets/{Diagnostics-DuzTPfyb.js → Diagnostics-DJNus54z.js} +1 -1
- package/dist/assets/{Dlq-D8s-NhV2.js → Dlq-BaHXmn0r.js} +1 -1
- package/dist/assets/{DlqControl-DDxRMM8i.js → DlqControl-Bc48Yxxi.js} +1 -1
- package/dist/assets/{DlqPro-xj-MM6u8.js → DlqPro-BaL9PRlj.js} +1 -1
- package/dist/assets/{Fleet-BAziMWfo.js → Fleet-NYO3foQN.js} +1 -1
- package/dist/assets/{Flows-BFUMTSWv.js → Flows-RPGep40V.js} +1 -1
- package/dist/assets/{JobInspector-BXuXxDwR.js → JobInspector-DEboXZKA.js} +1 -1
- package/dist/assets/{Jobs-pQBmffni.js → Jobs-DRJLVzTB.js} +1 -1
- package/dist/assets/{JobsPro-k20Pas24.js → JobsPro-BtoJgs_P.js} +1 -1
- package/dist/assets/{Logs-DA4JFvpM.js → Logs-wZd30gMQ.js} +1 -1
- package/dist/assets/{LogsPro-hna5L6sP.js → LogsPro-Bed1atn5.js} +1 -1
- package/dist/assets/{McpServer-Cqem-L3z.js → McpServer-CGe9T6dL.js} +1 -1
- package/dist/assets/{Metrics-CJ9dW0me.js → Metrics-vii1CWGY.js} +1 -1
- package/dist/assets/{MetricsPro-BslYrx1A.js → MetricsPro-Cbx-5-HO.js} +1 -1
- package/dist/assets/{Overview-Cmg_2NAt.js → Overview-2qju4F93.js} +1 -1
- package/dist/assets/{Pagination-WVfHLHDS.js → Pagination-ByDp7kNr.js} +1 -1
- package/dist/assets/{QueueActions-BQf1-g5m.js → QueueActions-BhjKtapT.js} +1 -1
- package/dist/assets/{QueueControl-BiMM0jLp.js → QueueControl-QMlFMQA6.js} +1 -1
- package/dist/assets/{QueueDetail-DfRY4jS4.js → QueueDetail-B-mcgloD.js} +1 -1
- package/dist/assets/{QueueDetailPro-CpSMSo8A.js → QueueDetailPro-BKFwiQUg.js} +1 -1
- package/dist/assets/{Queues-C5lElTjp.js → Queues-DCCwG__I.js} +1 -1
- package/dist/assets/{QueuesOverview-DRohFtuC.js → QueuesOverview-BMIfVWtk.js} +1 -1
- package/dist/assets/{S3Backup-DUHmp2Xw.js → S3Backup-DpLn5T8m.js} +1 -1
- package/dist/assets/{S3BackupPro-Cr2ZJZkw.js → S3BackupPro-BUHJBozP.js} +1 -1
- package/dist/assets/{ServerControl-m58ooJT2.js → ServerControl-F5hvQwk3.js} +1 -1
- package/dist/assets/{Settings-DXsjoOqD.js → Settings-UBD8Zrj0.js} +1 -1
- package/dist/assets/{Usage-CY2uEJEu.js → Usage-D2D1i5nA.js} +1 -1
- package/dist/assets/{UsagePro-DtlB1dJc.js → UsagePro-B8UDx-CC.js} +1 -1
- package/dist/assets/{Webhooks-B_GwTCBW.js → Webhooks-TnNw3Mml.js} +1 -1
- package/dist/assets/{Workers-Bu8aJlZf.js → Workers-BAz4V_bk.js} +1 -1
- package/dist/assets/{WorkersPro-C6gNYGfo.js → WorkersPro-Cbh-P8vR.js} +1 -1
- package/dist/assets/{Workflows-ClF4YzhW.js → Workflows-CBMzJbn0.js} +1 -1
- package/dist/assets/{index-X_fHGbXZ.js → index-DcVSLtH4.js} +2 -2
- package/dist/assets/{install-hFu5e6YM.js → install-Ch82YzWH.js} +1 -1
- package/dist/assets/{package-Bb3FkjoS.js → package-V6gqAKfV.js} +1 -1
- package/dist/assets/{useThroughputSeries-BN5QmKPt.js → useThroughputSeries-BZ9Bb2PU.js} +1 -1
- package/dist/favicon.svg +11 -22
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/scripts/embedded.gen.ts +128 -128
package/dist/.vite/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_AddJob-
|
|
3
|
-
"file": "assets/AddJob-
|
|
2
|
+
"_AddJob-g7DKWNZ0.js": {
|
|
3
|
+
"file": "assets/AddJob-g7DKWNZ0.js",
|
|
4
4
|
"name": "AddJob",
|
|
5
5
|
"imports": [
|
|
6
6
|
"_rolldown-runtime-XKyaHtl9.js",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"_react-vendor-08inPAVO.js"
|
|
21
21
|
]
|
|
22
22
|
},
|
|
23
|
-
"_Pagination-
|
|
24
|
-
"file": "assets/Pagination-
|
|
23
|
+
"_Pagination-ByDp7kNr.js": {
|
|
24
|
+
"file": "assets/Pagination-ByDp7kNr.js",
|
|
25
25
|
"name": "Pagination",
|
|
26
26
|
"imports": [
|
|
27
27
|
"_rolldown-runtime-XKyaHtl9.js",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"index.html"
|
|
30
30
|
]
|
|
31
31
|
},
|
|
32
|
-
"_QueueActions-
|
|
33
|
-
"file": "assets/QueueActions-
|
|
32
|
+
"_QueueActions-BhjKtapT.js": {
|
|
33
|
+
"file": "assets/QueueActions-BhjKtapT.js",
|
|
34
34
|
"name": "QueueActions",
|
|
35
35
|
"imports": [
|
|
36
36
|
"_rolldown-runtime-XKyaHtl9.js",
|
|
@@ -109,8 +109,8 @@
|
|
|
109
109
|
"_react-vendor-08inPAVO.js"
|
|
110
110
|
]
|
|
111
111
|
},
|
|
112
|
-
"_package-
|
|
113
|
-
"file": "assets/package-
|
|
112
|
+
"_package-V6gqAKfV.js": {
|
|
113
|
+
"file": "assets/package-V6gqAKfV.js",
|
|
114
114
|
"name": "package"
|
|
115
115
|
},
|
|
116
116
|
"_promisePool-BVfQ9n9Q.js": {
|
|
@@ -157,8 +157,8 @@
|
|
|
157
157
|
"_connectionStore-B946Fhuv.js"
|
|
158
158
|
]
|
|
159
159
|
},
|
|
160
|
-
"_useThroughputSeries-
|
|
161
|
-
"file": "assets/useThroughputSeries-
|
|
160
|
+
"_useThroughputSeries-BZ9Bb2PU.js": {
|
|
161
|
+
"file": "assets/useThroughputSeries-BZ9Bb2PU.js",
|
|
162
162
|
"name": "useThroughputSeries",
|
|
163
163
|
"imports": [
|
|
164
164
|
"_rolldown-runtime-XKyaHtl9.js",
|
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
]
|
|
169
169
|
},
|
|
170
170
|
"index.html": {
|
|
171
|
-
"file": "assets/index-
|
|
171
|
+
"file": "assets/index-DcVSLtH4.js",
|
|
172
172
|
"name": "index",
|
|
173
173
|
"src": "index.html",
|
|
174
174
|
"isEntry": true,
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
"_api-CCgfskjt.js"
|
|
183
183
|
],
|
|
184
184
|
"dynamicImports": [
|
|
185
|
-
"_AddJob-
|
|
185
|
+
"_AddJob-g7DKWNZ0.js",
|
|
186
186
|
"src/pages/control/Benchmark.tsx",
|
|
187
187
|
"src/pages/control/BulkAddJobs.tsx",
|
|
188
188
|
"src/pages/control/CronManager.tsx",
|
|
@@ -248,16 +248,16 @@
|
|
|
248
248
|
"src": "node_modules/@fontsource-variable/jetbrains-mono/files/jetbrains-mono-latin-wght-normal.woff2"
|
|
249
249
|
},
|
|
250
250
|
"src/lib/demo/install.ts": {
|
|
251
|
-
"file": "assets/install-
|
|
251
|
+
"file": "assets/install-Ch82YzWH.js",
|
|
252
252
|
"name": "install",
|
|
253
253
|
"src": "src/lib/demo/install.ts",
|
|
254
254
|
"isDynamicEntry": true,
|
|
255
255
|
"imports": [
|
|
256
|
-
"_package-
|
|
256
|
+
"_package-V6gqAKfV.js"
|
|
257
257
|
]
|
|
258
258
|
},
|
|
259
259
|
"src/pages/Alerts.tsx": {
|
|
260
|
-
"file": "assets/Alerts-
|
|
260
|
+
"file": "assets/Alerts-WcpDWdDf.js",
|
|
261
261
|
"name": "Alerts",
|
|
262
262
|
"src": "src/pages/Alerts.tsx",
|
|
263
263
|
"isDynamicEntry": true,
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
]
|
|
272
272
|
},
|
|
273
273
|
"src/pages/Cron.tsx": {
|
|
274
|
-
"file": "assets/Cron-
|
|
274
|
+
"file": "assets/Cron-BnqxADsg.js",
|
|
275
275
|
"name": "Cron",
|
|
276
276
|
"src": "src/pages/Cron.tsx",
|
|
277
277
|
"isDynamicEntry": true,
|
|
@@ -281,12 +281,12 @@
|
|
|
281
281
|
"_icons-BIT5aq1c.js",
|
|
282
282
|
"_api-CCgfskjt.js",
|
|
283
283
|
"index.html",
|
|
284
|
-
"_Pagination-
|
|
284
|
+
"_Pagination-ByDp7kNr.js",
|
|
285
285
|
"_useServerActionGuard-uiZWD3dS.js"
|
|
286
286
|
]
|
|
287
287
|
},
|
|
288
288
|
"src/pages/Dlq.tsx": {
|
|
289
|
-
"file": "assets/Dlq-
|
|
289
|
+
"file": "assets/Dlq-BaHXmn0r.js",
|
|
290
290
|
"name": "Dlq",
|
|
291
291
|
"src": "src/pages/Dlq.tsx",
|
|
292
292
|
"isDynamicEntry": true,
|
|
@@ -297,14 +297,14 @@
|
|
|
297
297
|
"_api-CCgfskjt.js",
|
|
298
298
|
"index.html",
|
|
299
299
|
"_form-DBkslwzu.js",
|
|
300
|
-
"_Pagination-
|
|
300
|
+
"_Pagination-ByDp7kNr.js",
|
|
301
301
|
"_flowMutationSafety-YKTHxqKv.js",
|
|
302
302
|
"_classicJobsData-wdIr-E4y.js",
|
|
303
303
|
"src/pages/Jobs.tsx"
|
|
304
304
|
]
|
|
305
305
|
},
|
|
306
306
|
"src/pages/Fleet.tsx": {
|
|
307
|
-
"file": "assets/Fleet-
|
|
307
|
+
"file": "assets/Fleet-NYO3foQN.js",
|
|
308
308
|
"name": "Fleet",
|
|
309
309
|
"src": "src/pages/Fleet.tsx",
|
|
310
310
|
"isDynamicEntry": true,
|
|
@@ -317,7 +317,7 @@
|
|
|
317
317
|
]
|
|
318
318
|
},
|
|
319
319
|
"src/pages/Jobs.tsx": {
|
|
320
|
-
"file": "assets/Jobs-
|
|
320
|
+
"file": "assets/Jobs-DRJLVzTB.js",
|
|
321
321
|
"name": "Jobs",
|
|
322
322
|
"src": "src/pages/Jobs.tsx",
|
|
323
323
|
"isDynamicEntry": true,
|
|
@@ -335,7 +335,7 @@
|
|
|
335
335
|
]
|
|
336
336
|
},
|
|
337
337
|
"src/pages/Logs.tsx": {
|
|
338
|
-
"file": "assets/Logs-
|
|
338
|
+
"file": "assets/Logs-wZd30gMQ.js",
|
|
339
339
|
"name": "Logs",
|
|
340
340
|
"src": "src/pages/Logs.tsx",
|
|
341
341
|
"isDynamicEntry": true,
|
|
@@ -346,13 +346,13 @@
|
|
|
346
346
|
"_StatusBadge-D-mexaga.js",
|
|
347
347
|
"index.html",
|
|
348
348
|
"_form-DBkslwzu.js",
|
|
349
|
-
"_Pagination-
|
|
349
|
+
"_Pagination-ByDp7kNr.js",
|
|
350
350
|
"_classicJobsData-wdIr-E4y.js",
|
|
351
351
|
"src/pages/Jobs.tsx"
|
|
352
352
|
]
|
|
353
353
|
},
|
|
354
354
|
"src/pages/Metrics.tsx": {
|
|
355
|
-
"file": "assets/Metrics-
|
|
355
|
+
"file": "assets/Metrics-vii1CWGY.js",
|
|
356
356
|
"name": "Metrics",
|
|
357
357
|
"src": "src/pages/Metrics.tsx",
|
|
358
358
|
"isDynamicEntry": true,
|
|
@@ -363,7 +363,7 @@
|
|
|
363
363
|
]
|
|
364
364
|
},
|
|
365
365
|
"src/pages/Overview.tsx": {
|
|
366
|
-
"file": "assets/Overview-
|
|
366
|
+
"file": "assets/Overview-2qju4F93.js",
|
|
367
367
|
"name": "Overview",
|
|
368
368
|
"src": "src/pages/Overview.tsx",
|
|
369
369
|
"isDynamicEntry": true,
|
|
@@ -375,7 +375,7 @@
|
|
|
375
375
|
]
|
|
376
376
|
},
|
|
377
377
|
"src/pages/QueueDetail.tsx": {
|
|
378
|
-
"file": "assets/QueueDetail-
|
|
378
|
+
"file": "assets/QueueDetail-B-mcgloD.js",
|
|
379
379
|
"name": "QueueDetail",
|
|
380
380
|
"src": "src/pages/QueueDetail.tsx",
|
|
381
381
|
"isDynamicEntry": true,
|
|
@@ -393,7 +393,7 @@
|
|
|
393
393
|
]
|
|
394
394
|
},
|
|
395
395
|
"src/pages/Queues.tsx": {
|
|
396
|
-
"file": "assets/Queues-
|
|
396
|
+
"file": "assets/Queues-DCCwG__I.js",
|
|
397
397
|
"name": "Queues",
|
|
398
398
|
"src": "src/pages/Queues.tsx",
|
|
399
399
|
"isDynamicEntry": true,
|
|
@@ -404,11 +404,11 @@
|
|
|
404
404
|
"_StatusBadge-D-mexaga.js",
|
|
405
405
|
"_api-CCgfskjt.js",
|
|
406
406
|
"index.html",
|
|
407
|
-
"_Pagination-
|
|
407
|
+
"_Pagination-ByDp7kNr.js"
|
|
408
408
|
]
|
|
409
409
|
},
|
|
410
410
|
"src/pages/S3Backup.tsx": {
|
|
411
|
-
"file": "assets/S3Backup-
|
|
411
|
+
"file": "assets/S3Backup-DpLn5T8m.js",
|
|
412
412
|
"name": "S3Backup",
|
|
413
413
|
"src": "src/pages/S3Backup.tsx",
|
|
414
414
|
"isDynamicEntry": true,
|
|
@@ -419,7 +419,7 @@
|
|
|
419
419
|
]
|
|
420
420
|
},
|
|
421
421
|
"src/pages/Settings.tsx": {
|
|
422
|
-
"file": "assets/Settings-
|
|
422
|
+
"file": "assets/Settings-UBD8Zrj0.js",
|
|
423
423
|
"name": "Settings",
|
|
424
424
|
"src": "src/pages/Settings.tsx",
|
|
425
425
|
"isDynamicEntry": true,
|
|
@@ -433,7 +433,7 @@
|
|
|
433
433
|
]
|
|
434
434
|
},
|
|
435
435
|
"src/pages/Usage.tsx": {
|
|
436
|
-
"file": "assets/Usage-
|
|
436
|
+
"file": "assets/Usage-D2D1i5nA.js",
|
|
437
437
|
"name": "Usage",
|
|
438
438
|
"src": "src/pages/Usage.tsx",
|
|
439
439
|
"isDynamicEntry": true,
|
|
@@ -444,7 +444,7 @@
|
|
|
444
444
|
]
|
|
445
445
|
},
|
|
446
446
|
"src/pages/Workers.tsx": {
|
|
447
|
-
"file": "assets/Workers-
|
|
447
|
+
"file": "assets/Workers-BAz4V_bk.js",
|
|
448
448
|
"name": "Workers",
|
|
449
449
|
"src": "src/pages/Workers.tsx",
|
|
450
450
|
"isDynamicEntry": true,
|
|
@@ -454,11 +454,11 @@
|
|
|
454
454
|
"_icons-BIT5aq1c.js",
|
|
455
455
|
"_api-CCgfskjt.js",
|
|
456
456
|
"index.html",
|
|
457
|
-
"_Pagination-
|
|
457
|
+
"_Pagination-ByDp7kNr.js"
|
|
458
458
|
]
|
|
459
459
|
},
|
|
460
460
|
"src/pages/control/Benchmark.tsx": {
|
|
461
|
-
"file": "assets/Benchmark-
|
|
461
|
+
"file": "assets/Benchmark-i6UOuIR-.js",
|
|
462
462
|
"name": "Benchmark",
|
|
463
463
|
"src": "src/pages/control/Benchmark.tsx",
|
|
464
464
|
"isDynamicEntry": true,
|
|
@@ -474,7 +474,7 @@
|
|
|
474
474
|
]
|
|
475
475
|
},
|
|
476
476
|
"src/pages/control/BulkAddJobs.tsx": {
|
|
477
|
-
"file": "assets/BulkAddJobs-
|
|
477
|
+
"file": "assets/BulkAddJobs-56_SkYFd.js",
|
|
478
478
|
"name": "BulkAddJobs",
|
|
479
479
|
"src": "src/pages/control/BulkAddJobs.tsx",
|
|
480
480
|
"isDynamicEntry": true,
|
|
@@ -489,7 +489,7 @@
|
|
|
489
489
|
]
|
|
490
490
|
},
|
|
491
491
|
"src/pages/control/CronManager.tsx": {
|
|
492
|
-
"file": "assets/CronManager-
|
|
492
|
+
"file": "assets/CronManager-4pAw6m87.js",
|
|
493
493
|
"name": "CronManager",
|
|
494
494
|
"src": "src/pages/control/CronManager.tsx",
|
|
495
495
|
"isDynamicEntry": true,
|
|
@@ -501,14 +501,14 @@
|
|
|
501
501
|
"_StatusBadge-D-mexaga.js",
|
|
502
502
|
"index.html",
|
|
503
503
|
"_form-DBkslwzu.js",
|
|
504
|
-
"_Pagination-
|
|
504
|
+
"_Pagination-ByDp7kNr.js",
|
|
505
505
|
"_useServerActionGuard-uiZWD3dS.js",
|
|
506
506
|
"_responses-YgpvqWEr.js",
|
|
507
|
-
"_AddJob-
|
|
507
|
+
"_AddJob-g7DKWNZ0.js"
|
|
508
508
|
]
|
|
509
509
|
},
|
|
510
510
|
"src/pages/control/Database.tsx": {
|
|
511
|
-
"file": "assets/Database-
|
|
511
|
+
"file": "assets/Database-BDyQ8N-r.js",
|
|
512
512
|
"name": "Database",
|
|
513
513
|
"src": "src/pages/control/Database.tsx",
|
|
514
514
|
"isDynamicEntry": true,
|
|
@@ -520,11 +520,11 @@
|
|
|
520
520
|
"_StatusBadge-D-mexaga.js",
|
|
521
521
|
"index.html",
|
|
522
522
|
"_form-DBkslwzu.js",
|
|
523
|
-
"_Pagination-
|
|
523
|
+
"_Pagination-ByDp7kNr.js"
|
|
524
524
|
]
|
|
525
525
|
},
|
|
526
526
|
"src/pages/control/Diagnostics.tsx": {
|
|
527
|
-
"file": "assets/Diagnostics-
|
|
527
|
+
"file": "assets/Diagnostics-DJNus54z.js",
|
|
528
528
|
"name": "Diagnostics",
|
|
529
529
|
"src": "src/pages/control/Diagnostics.tsx",
|
|
530
530
|
"isDynamicEntry": true,
|
|
@@ -538,7 +538,7 @@
|
|
|
538
538
|
]
|
|
539
539
|
},
|
|
540
540
|
"src/pages/control/DlqControl.tsx": {
|
|
541
|
-
"file": "assets/DlqControl-
|
|
541
|
+
"file": "assets/DlqControl-Bc48Yxxi.js",
|
|
542
542
|
"name": "DlqControl",
|
|
543
543
|
"src": "src/pages/control/DlqControl.tsx",
|
|
544
544
|
"isDynamicEntry": true,
|
|
@@ -549,14 +549,14 @@
|
|
|
549
549
|
"_StatusBadge-D-mexaga.js",
|
|
550
550
|
"index.html",
|
|
551
551
|
"_form-DBkslwzu.js",
|
|
552
|
-
"_Pagination-
|
|
552
|
+
"_Pagination-ByDp7kNr.js",
|
|
553
553
|
"_flowMutationSafety-YKTHxqKv.js",
|
|
554
554
|
"_exportFile-C7xhE8Yh.js",
|
|
555
555
|
"src/pages/control/QueueControl.tsx"
|
|
556
556
|
]
|
|
557
557
|
},
|
|
558
558
|
"src/pages/control/DlqPro.tsx": {
|
|
559
|
-
"file": "assets/DlqPro-
|
|
559
|
+
"file": "assets/DlqPro-BaL9PRlj.js",
|
|
560
560
|
"name": "DlqPro",
|
|
561
561
|
"src": "src/pages/control/DlqPro.tsx",
|
|
562
562
|
"isDynamicEntry": true,
|
|
@@ -567,14 +567,14 @@
|
|
|
567
567
|
"_StatusBadge-D-mexaga.js",
|
|
568
568
|
"index.html",
|
|
569
569
|
"_form-DBkslwzu.js",
|
|
570
|
-
"_Pagination-
|
|
570
|
+
"_Pagination-ByDp7kNr.js",
|
|
571
571
|
"_flowMutationSafety-YKTHxqKv.js",
|
|
572
572
|
"_exportFile-C7xhE8Yh.js",
|
|
573
573
|
"src/pages/control/QueueControl.tsx"
|
|
574
574
|
]
|
|
575
575
|
},
|
|
576
576
|
"src/pages/control/Flows.tsx": {
|
|
577
|
-
"file": "assets/Flows-
|
|
577
|
+
"file": "assets/Flows-RPGep40V.js",
|
|
578
578
|
"name": "Flows",
|
|
579
579
|
"src": "src/pages/control/Flows.tsx",
|
|
580
580
|
"isDynamicEntry": true,
|
|
@@ -591,7 +591,7 @@
|
|
|
591
591
|
]
|
|
592
592
|
},
|
|
593
593
|
"src/pages/control/JobInspector.tsx": {
|
|
594
|
-
"file": "assets/JobInspector-
|
|
594
|
+
"file": "assets/JobInspector-DEboXZKA.js",
|
|
595
595
|
"name": "JobInspector",
|
|
596
596
|
"src": "src/pages/control/JobInspector.tsx",
|
|
597
597
|
"isDynamicEntry": true,
|
|
@@ -610,7 +610,7 @@
|
|
|
610
610
|
]
|
|
611
611
|
},
|
|
612
612
|
"src/pages/control/JobsPro.tsx": {
|
|
613
|
-
"file": "assets/JobsPro-
|
|
613
|
+
"file": "assets/JobsPro-BtoJgs_P.js",
|
|
614
614
|
"name": "JobsPro",
|
|
615
615
|
"src": "src/pages/control/JobsPro.tsx",
|
|
616
616
|
"isDynamicEntry": true,
|
|
@@ -621,7 +621,7 @@
|
|
|
621
621
|
"_StatusBadge-D-mexaga.js",
|
|
622
622
|
"index.html",
|
|
623
623
|
"_form-DBkslwzu.js",
|
|
624
|
-
"_Pagination-
|
|
624
|
+
"_Pagination-ByDp7kNr.js",
|
|
625
625
|
"_useServerActionGuard-uiZWD3dS.js",
|
|
626
626
|
"_controlConnectionEpoch-x9VjrWgN.js",
|
|
627
627
|
"_exportFile-C7xhE8Yh.js",
|
|
@@ -629,7 +629,7 @@
|
|
|
629
629
|
]
|
|
630
630
|
},
|
|
631
631
|
"src/pages/control/LogsPro.tsx": {
|
|
632
|
-
"file": "assets/LogsPro-
|
|
632
|
+
"file": "assets/LogsPro-Bed1atn5.js",
|
|
633
633
|
"name": "LogsPro",
|
|
634
634
|
"src": "src/pages/control/LogsPro.tsx",
|
|
635
635
|
"isDynamicEntry": true,
|
|
@@ -641,23 +641,23 @@
|
|
|
641
641
|
"_StatusBadge-D-mexaga.js",
|
|
642
642
|
"index.html",
|
|
643
643
|
"_form-DBkslwzu.js",
|
|
644
|
-
"_Pagination-
|
|
644
|
+
"_Pagination-ByDp7kNr.js",
|
|
645
645
|
"src/pages/control/QueueControl.tsx"
|
|
646
646
|
]
|
|
647
647
|
},
|
|
648
648
|
"src/pages/control/McpServer.tsx": {
|
|
649
|
-
"file": "assets/McpServer-
|
|
649
|
+
"file": "assets/McpServer-CGe9T6dL.js",
|
|
650
650
|
"name": "McpServer",
|
|
651
651
|
"src": "src/pages/control/McpServer.tsx",
|
|
652
652
|
"isDynamicEntry": true,
|
|
653
653
|
"imports": [
|
|
654
654
|
"_react-vendor-08inPAVO.js",
|
|
655
655
|
"index.html",
|
|
656
|
-
"_package-
|
|
656
|
+
"_package-V6gqAKfV.js"
|
|
657
657
|
]
|
|
658
658
|
},
|
|
659
659
|
"src/pages/control/MetricsPro.tsx": {
|
|
660
|
-
"file": "assets/MetricsPro-
|
|
660
|
+
"file": "assets/MetricsPro-Cbx-5-HO.js",
|
|
661
661
|
"name": "MetricsPro",
|
|
662
662
|
"src": "src/pages/control/MetricsPro.tsx",
|
|
663
663
|
"isDynamicEntry": true,
|
|
@@ -666,13 +666,13 @@
|
|
|
666
666
|
"_react-vendor-08inPAVO.js",
|
|
667
667
|
"_StatusBadge-D-mexaga.js",
|
|
668
668
|
"index.html",
|
|
669
|
-
"_Pagination-
|
|
669
|
+
"_Pagination-ByDp7kNr.js",
|
|
670
670
|
"_AreaChart-CSP0-00u.js",
|
|
671
|
-
"_useThroughputSeries-
|
|
671
|
+
"_useThroughputSeries-BZ9Bb2PU.js"
|
|
672
672
|
]
|
|
673
673
|
},
|
|
674
674
|
"src/pages/control/QueueControl.tsx": {
|
|
675
|
-
"file": "assets/QueueControl-
|
|
675
|
+
"file": "assets/QueueControl-QMlFMQA6.js",
|
|
676
676
|
"name": "QueueControl",
|
|
677
677
|
"src": "src/pages/control/QueueControl.tsx",
|
|
678
678
|
"isDynamicEntry": true,
|
|
@@ -685,11 +685,11 @@
|
|
|
685
685
|
"_useServerActionGuard-uiZWD3dS.js",
|
|
686
686
|
"_controlConnectionEpoch-x9VjrWgN.js",
|
|
687
687
|
"_useControlActionGuard-Bx5MkufG.js",
|
|
688
|
-
"_QueueActions-
|
|
688
|
+
"_QueueActions-BhjKtapT.js"
|
|
689
689
|
]
|
|
690
690
|
},
|
|
691
691
|
"src/pages/control/QueueDetailPro.tsx": {
|
|
692
|
-
"file": "assets/QueueDetailPro-
|
|
692
|
+
"file": "assets/QueueDetailPro-BKFwiQUg.js",
|
|
693
693
|
"name": "QueueDetailPro",
|
|
694
694
|
"src": "src/pages/control/QueueDetailPro.tsx",
|
|
695
695
|
"isDynamicEntry": true,
|
|
@@ -703,12 +703,12 @@
|
|
|
703
703
|
"_flowMutationSafety-YKTHxqKv.js",
|
|
704
704
|
"_controlConnectionEpoch-x9VjrWgN.js",
|
|
705
705
|
"_AreaChart-CSP0-00u.js",
|
|
706
|
-
"_QueueActions-
|
|
707
|
-
"_useThroughputSeries-
|
|
706
|
+
"_QueueActions-BhjKtapT.js",
|
|
707
|
+
"_useThroughputSeries-BZ9Bb2PU.js"
|
|
708
708
|
]
|
|
709
709
|
},
|
|
710
710
|
"src/pages/control/QueuesOverview.tsx": {
|
|
711
|
-
"file": "assets/QueuesOverview-
|
|
711
|
+
"file": "assets/QueuesOverview-BMIfVWtk.js",
|
|
712
712
|
"name": "QueuesOverview",
|
|
713
713
|
"src": "src/pages/control/QueuesOverview.tsx",
|
|
714
714
|
"isDynamicEntry": true,
|
|
@@ -718,13 +718,13 @@
|
|
|
718
718
|
"_icons-BIT5aq1c.js",
|
|
719
719
|
"_StatusBadge-D-mexaga.js",
|
|
720
720
|
"index.html",
|
|
721
|
-
"_Pagination-
|
|
721
|
+
"_Pagination-ByDp7kNr.js",
|
|
722
722
|
"_useServerActionGuard-uiZWD3dS.js",
|
|
723
723
|
"_promisePool-BVfQ9n9Q.js"
|
|
724
724
|
]
|
|
725
725
|
},
|
|
726
726
|
"src/pages/control/S3BackupPro.tsx": {
|
|
727
|
-
"file": "assets/S3BackupPro-
|
|
727
|
+
"file": "assets/S3BackupPro-BUHJBozP.js",
|
|
728
728
|
"name": "S3BackupPro",
|
|
729
729
|
"src": "src/pages/control/S3BackupPro.tsx",
|
|
730
730
|
"isDynamicEntry": true,
|
|
@@ -738,7 +738,7 @@
|
|
|
738
738
|
]
|
|
739
739
|
},
|
|
740
740
|
"src/pages/control/ServerControl.tsx": {
|
|
741
|
-
"file": "assets/ServerControl-
|
|
741
|
+
"file": "assets/ServerControl-F5hvQwk3.js",
|
|
742
742
|
"name": "ServerControl",
|
|
743
743
|
"src": "src/pages/control/ServerControl.tsx",
|
|
744
744
|
"isDynamicEntry": true,
|
|
@@ -749,12 +749,12 @@
|
|
|
749
749
|
"_StatusBadge-D-mexaga.js",
|
|
750
750
|
"index.html",
|
|
751
751
|
"_form-DBkslwzu.js",
|
|
752
|
-
"_package-
|
|
752
|
+
"_package-V6gqAKfV.js",
|
|
753
753
|
"_useControlActionGuard-Bx5MkufG.js"
|
|
754
754
|
]
|
|
755
755
|
},
|
|
756
756
|
"src/pages/control/UsagePro.tsx": {
|
|
757
|
-
"file": "assets/UsagePro-
|
|
757
|
+
"file": "assets/UsagePro-B8UDx-CC.js",
|
|
758
758
|
"name": "UsagePro",
|
|
759
759
|
"src": "src/pages/control/UsagePro.tsx",
|
|
760
760
|
"isDynamicEntry": true,
|
|
@@ -764,7 +764,7 @@
|
|
|
764
764
|
]
|
|
765
765
|
},
|
|
766
766
|
"src/pages/control/Webhooks.tsx": {
|
|
767
|
-
"file": "assets/Webhooks-
|
|
767
|
+
"file": "assets/Webhooks-TnNw3Mml.js",
|
|
768
768
|
"name": "Webhooks",
|
|
769
769
|
"src": "src/pages/control/Webhooks.tsx",
|
|
770
770
|
"isDynamicEntry": true,
|
|
@@ -774,12 +774,12 @@
|
|
|
774
774
|
"_icons-BIT5aq1c.js",
|
|
775
775
|
"index.html",
|
|
776
776
|
"_form-DBkslwzu.js",
|
|
777
|
-
"_Pagination-
|
|
777
|
+
"_Pagination-ByDp7kNr.js",
|
|
778
778
|
"_useServerActionGuard-uiZWD3dS.js"
|
|
779
779
|
]
|
|
780
780
|
},
|
|
781
781
|
"src/pages/control/WorkersPro.tsx": {
|
|
782
|
-
"file": "assets/WorkersPro-
|
|
782
|
+
"file": "assets/WorkersPro-Cbh-P8vR.js",
|
|
783
783
|
"name": "WorkersPro",
|
|
784
784
|
"src": "src/pages/control/WorkersPro.tsx",
|
|
785
785
|
"isDynamicEntry": true,
|
|
@@ -789,12 +789,12 @@
|
|
|
789
789
|
"_icons-BIT5aq1c.js",
|
|
790
790
|
"_StatusBadge-D-mexaga.js",
|
|
791
791
|
"index.html",
|
|
792
|
-
"_Pagination-
|
|
792
|
+
"_Pagination-ByDp7kNr.js",
|
|
793
793
|
"_useServerActionGuard-uiZWD3dS.js"
|
|
794
794
|
]
|
|
795
795
|
},
|
|
796
796
|
"src/pages/control/Workflows.tsx": {
|
|
797
|
-
"file": "assets/Workflows-
|
|
797
|
+
"file": "assets/Workflows-CBMzJbn0.js",
|
|
798
798
|
"name": "Workflows",
|
|
799
799
|
"src": "src/pages/control/Workflows.tsx",
|
|
800
800
|
"isDynamicEntry": true,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-XKyaHtl9.js";import{h as n,l as r,r as i,t as a}from"./react-vendor-08inPAVO.js";import{i as o}from"./upstreamPaths-DQeKSxGc.js";import{C as s,F as c,I as l,O as u,R as d,S as f,g as p,x as m}from"./index-
|
|
1
|
+
import{n as e,r as t}from"./rolldown-runtime-XKyaHtl9.js";import{h as n,l as r,r as i,t as a}from"./react-vendor-08inPAVO.js";import{i as o}from"./upstreamPaths-DQeKSxGc.js";import{C as s,F as c,I as l,O as u,R as d,S as f,g as p,x as m}from"./index-DcVSLtH4.js";import{a as h,n as g,o as _,t as v}from"./form-DBkslwzu.js";import{r as y}from"./useServerActionGuard-uiZWD3dS.js";import{a as b,c as x,d as S,f as C,h as w,i as T,l as E,m as D,n as O,o as k,r as A,s as j,t as M,u as N}from"./responses-YgpvqWEr.js";var P=t(n(),1),F=a();function I({values:e,setValue:t,queueNames:n,queueDiscoveryError:r,onRetryQueues:i,jsonError:a,setJsonError:o}){return(0,F.jsxs)(m,{children:[(0,F.jsx)(f,{title:`Job`}),(0,F.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,F.jsxs)(v,{label:`Queue`,children:[(0,F.jsx)(g,{list:`queue-options`,"aria-label":`Queue`,name:`target-queue`,autoComplete:`off`,value:e.queue,onChange:e=>t(`queue`,e.target.value),placeholder:`queue name (existing or new)`}),(0,F.jsx)(`datalist`,{id:`queue-options`,children:n.map(e=>(0,F.jsx)(`option`,{value:e},e))})]}),(0,F.jsx)(v,{label:`Job name`,hint:`Worker routing name in Bunqueue 2.9.3; separate from the JSON payload.`,children:(0,F.jsx)(g,{name:`job-name`,autoComplete:`off`,maxLength:256,value:e.name,onChange:e=>t(`name`,e.target.value),placeholder:`default`})}),r&&(0,F.jsxs)(`p`,{role:`status`,className:`-mt-2 text-xs text-warning`,children:[`Existing queue suggestions unavailable — `,r.message,`. You can still enter a queue name manually.`,` `,(0,F.jsx)(`button`,{type:`button`,onClick:i,className:`font-medium underline underline-offset-2 hover:text-fg`,children:`Retry`})]}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(v,{label:`Data (JSON)`,children:(0,F.jsx)(`textarea`,{name:`job-data`,value:e.dataText,onChange:e=>t(`dataText`,e.target.value),onBlur:()=>{let t=w(e.dataText);o(t.ok?null:t.msg)},maxLength:D,spellCheck:!1,rows:7,className:`w-full rounded-lg border border-line bg-surface-2 p-3 font-mono text-sm text-fg focus:border-accent/60 focus:outline-none focus:ring-2 focus:ring-accent/30`})}),a&&(0,F.jsx)(`p`,{role:`alert`,className:`mt-2 text-xs text-danger`,children:a})]})]})]})}function L({values:e,setValue:t}){return(0,F.jsxs)(m,{children:[(0,F.jsx)(f,{title:`Options`}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 md:grid-cols-3`,children:[(0,F.jsx)(B,{label:e.groupId.trim()?`Group priority`:`Priority`,hint:e.groupId.trim()?`0 is highest within this group`:void 0,name:`priority`,value:e.priority,min:e.groupId.trim()?0:-1e6,max:e.groupId.trim()?k:1e6,placeholder:`0`,onChange:e=>t(`priority`,e)}),(0,F.jsx)(B,{label:`Delay (ms)`,name:`delay`,value:e.delay,min:0,max:T,placeholder:`0`,disabled:e.runAt.trim()!==``,onChange:e=>t(`delay`,e)}),(0,F.jsx)(v,{label:`Run at`,hint:e.runAt.trim()?`Overrides Delay — derived from this time (local time).`:`(local time)`,children:(0,F.jsx)(g,{type:`datetime-local`,name:`run-at`,value:e.runAt,onChange:e=>t(`runAt`,e.target.value)})}),(0,F.jsx)(B,{label:`Max attempts`,hint:`blank = server default`,name:`max-attempts`,value:e.maxAttempts,min:1,max:1e3,placeholder:`3`,onChange:e=>t(`maxAttempts`,e)}),(0,F.jsx)(B,{label:`Backoff (ms)`,hint:`blank = server default`,name:`backoff`,value:e.backoff,min:0,max:b,placeholder:`1000`,onChange:e=>t(`backoff`,e)}),(0,F.jsx)(v,{label:`Backoff strategy`,hint:`flat delay unless set`,children:(0,F.jsxs)(h,{name:`backoff-strategy`,value:e.backoffType,onChange:e=>t(`backoffType`,e.target.value),children:[(0,F.jsx)(`option`,{value:``,children:`flat`}),(0,F.jsx)(`option`,{value:`fixed`,children:`fixed`}),(0,F.jsx)(`option`,{value:`exponential`,children:`exponential`})]})}),(0,F.jsx)(B,{label:`Timeout (ms)`,name:`timeout`,value:e.timeout,min:0,max:b,placeholder:`—`,onChange:e=>t(`timeout`,e)}),(0,F.jsx)(B,{label:`TTL (ms)`,hint:`blank = no expiry`,name:`ttl`,value:e.ttl,min:0,max:T,placeholder:`—`,onChange:e=>t(`ttl`,e)}),(0,F.jsx)(v,{label:`Custom job ID`,children:(0,F.jsx)(g,{name:`custom-job-id`,value:e.jobId,onChange:e=>t(`jobId`,e.target.value),placeholder:`idempotency key`})})]}),(0,F.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-6`,children:[(0,F.jsx)(V,{label:`removeOnComplete`,checked:e.removeOnComplete,onChange:e=>t(`removeOnComplete`,e)}),(0,F.jsx)(V,{label:`removeOnFail`,checked:e.removeOnFail,onChange:e=>t(`removeOnFail`,e)}),(0,F.jsx)(V,{label:`durable`,checked:e.durable,onChange:e=>t(`durable`,e)}),(0,F.jsx)(V,{label:`lifo`,checked:e.lifo,onChange:e=>t(`lifo`,e)})]}),(0,F.jsx)(R,{values:e,setValue:t})]})}function R({values:e,setValue:t}){return(0,F.jsxs)(`div`,{className:`mt-4 border-t border-line pt-4`,children:[(0,F.jsx)(`div`,{className:`mb-3 text-[11px] uppercase tracking-wider text-faint`,children:`Advanced`}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 md:grid-cols-3`,children:[(0,F.jsx)(z,{label:`Tags`,hint:`comma-separated`,name:`tags`,value:e.tags,placeholder:`email, urgent`,onChange:e=>t(`tags`,e)}),(0,F.jsx)(z,{label:`Group ID`,name:`group-id`,value:e.groupId,placeholder:`—`,onChange:e=>t(`groupId`,e)}),(0,F.jsx)(B,{label:`Group max size`,hint:`Atomic pending-job cap (2.9.3)`,name:`group-max-size`,value:e.groupMaxSize,min:1,max:2**53-1,placeholder:`—`,onChange:e=>t(`groupMaxSize`,e)}),(0,F.jsx)(z,{label:`Unique key`,hint:`dedup key`,name:`unique-key`,value:e.uniqueKey,placeholder:`—`,onChange:e=>t(`uniqueKey`,e)}),(0,F.jsx)(z,{label:`Depends on`,hint:`parent job ids, comma-separated`,name:`depends-on`,value:e.dependsOn,placeholder:`job-id-1, job-id-2`,onChange:e=>t(`dependsOn`,e)}),(0,F.jsx)(`div`,{className:`col-span-2 md:col-span-3`,children:(0,F.jsx)(v,{label:`Repeat policy (JSON)`,hint:`v2.9.3-safe form: e.g. {"every":60000,"limit":10}. Use Cron Manager for cron patterns.`,children:(0,F.jsx)(`textarea`,{name:`repeat-policy`,value:e.repeatText,onChange:e=>t(`repeatText`,e.target.value),rows:2,spellCheck:!1,placeholder:`{"every": 60000}`,className:`w-full rounded-lg border border-line bg-surface-2 px-3 py-2 font-mono text-xs text-fg placeholder:text-faint focus:border-accent/60 focus:outline-none focus:ring-2 focus:ring-accent/30`})})})]})]})}function z({label:e,hint:t,name:n,value:r,placeholder:i,onChange:a}){return(0,F.jsx)(v,{label:e,hint:t,children:(0,F.jsx)(g,{name:n,value:r,onChange:e=>a(e.target.value),placeholder:i})})}function B({label:e,hint:t,name:n,value:r,min:i,max:a,placeholder:o,disabled:s,onChange:c}){return(0,F.jsx)(v,{label:e,hint:t,children:(0,F.jsx)(g,{type:`number`,min:i,max:a,step:1,name:n,value:r,onChange:e=>c(e.target.value),placeholder:o,disabled:s})})}function V({label:e,checked:t,onChange:n}){return(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(_,{checked:t,onChange:n,label:e}),(0,F.jsx)(`span`,{className:`font-mono text-xs text-muted`,children:e})]})}function H(e){let t=e?.options??{},n=j(t);return{queue:e?.queue??``,name:e?.name??`default`,dataText:e?.dataText??`{
|
|
2
2
|
"hello": "world"
|
|
3
3
|
}`,count:`1`,priority:x(t.priority),delay:``,runAt:``,maxAttempts:x(t.maxAttempts),backoff:n.backoff,timeout:x(t.timeout),ttl:n.ttl,jobId:``,removeOnComplete:t.removeOnComplete??!1,removeOnFail:t.removeOnFail??!1,durable:!1,lifo:!1,backoffType:n.backoffType,tags:n.tags,groupId:n.groupId,groupMaxSize:``,dependsOn:``,uniqueKey:``,repeatText:``}}function U(e,t=Date.now()){let n=e.queue.trim(),r=S(n);if(r)return W(r);let i=e.name.trim();if(!i||i.length>256)return W(`Job name must be a non-empty string of at most 256 characters`);let a=w(e.dataText);if(!a.ok)return{ok:!1,msg:a.msg,field:a.kind===`json`?`data`:`result`};let s=e.groupId.trim();if(s.length>256||s.includes(`\0`))return W(`Group ID must contain 1–256 characters and no NUL`);let c=E({priority:e.priority,delay:e.runAt.trim()?``:e.delay,maxAttempts:e.maxAttempts,backoff:e.backoff,timeout:e.timeout,ttl:e.ttl,groupMaxSize:e.groupMaxSize},!!s);if(!c.ok)return W(c.msg);if(c.options.groupMaxSize!==void 0&&!s)return W(`Group max size requires a Group ID`);let l=c.options.delay;if(e.runAt.trim()){let n=new Date(e.runAt).getTime();if(!Number.isFinite(n))return W(`Run at is not a valid date/time`);if(l=Math.max(0,n-t),l>31536e6)return W(`Run at must be within the next 365 days`)}let u=C(c.options.backoff,e.backoffType);if(!u.ok)return W(u.msg);let d=G(e.tags),f=G(e.dependsOn),p=e.jobId.trim();if(p){let e=o(p);if(e)return W(`Job ID: ${e}`)}for(let e of f){let t=o(e);if(t)return W(`Dependency ID "${e}": ${t}`)}let m=N(e.repeatText);if(!m.ok)return W(m.msg);let h=Number(e.count);return!Number.isSafeInteger(h)||h<1||h>1e4?W(`Count must be a whole number from 1 to 10000`):{ok:!0,target:n,count:h,body:{name:i,data:a.data,priority:c.options.priority,delay:l,maxAttempts:c.options.maxAttempts,backoff:u.backoff,timeout:c.options.timeout,ttl:c.options.ttl,jobId:p||void 0,removeOnComplete:e.removeOnComplete||void 0,removeOnFail:e.removeOnFail||void 0,durable:e.durable||void 0,lifo:e.lifo||void 0,tags:d.length?d:void 0,groupId:s||void 0,groupMaxSize:c.options.groupMaxSize,dependsOn:f.length?f:void 0,uniqueKey:e.uniqueKey.trim()||void 0,repeat:m.repeat}}}var W=e=>({ok:!1,msg:e,field:`result`}),G=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean),K=e({AddJob:()=>q,MAX_JOB_DATA_BYTES:()=>MAX_JOB_DATA_BYTES,MAX_JOB_DATA_CHARS:()=>D});function q(){let{data:e,error:t,refetch:n}=u(()=>l.queues(),[],{intervalMs:3e4}),a=r().state?.clone,[o,f]=(0,P.useState)(()=>H(a)),[m,h]=(0,P.useState)(!1),[_,b]=(0,P.useState)(null),[x,S]=(0,P.useState)(null),C=y(`add-job`),w=(e,t)=>f(n=>({...n,[e]:t}));(0,P.useEffect)(()=>{h(!1),b(null),S(null)},[C.scopeKey]);let T=async()=>{b(null),S(null);let e=U(o);if(!e.ok){e.field===`data`?S(e.msg):b({ok:!1,msg:e.msg});return}let t=C.begin();if(!t)return;h(!0);let{target:n,body:r,count:i}=e;try{if(i===1&&r.groupMaxSize===void 0){let e=await l.addJob(n,r),i=O(e);if(!t.isCurrent())return;b({ok:!0,msg:`Accepted job ID ${i} (it may be an existing deduplicated job)`}),c.success(`Job submission accepted`,`${n} · ${i}`)}else{let e=Array.from({length:i},()=>r),a=d(e);if(a){t.isCurrent()&&b({ok:!1,msg:a});return}let o=await l.addJobsBulk(n,e),s=M(o,i);if(!t.isCurrent())return;let u=A(new Set(s).size,i);b(u),c.success(u.msg,`in ${n}`)}}catch(e){if(!t.isCurrent())return;b({ok:!1,msg:e.message}),c.error(`Add job failed`,e.message)}finally{t.finish()&&h(!1)}};return(0,F.jsxs)(`div`,{children:[(0,F.jsx)(p,{title:`Add Job`,description:`Enqueue a job with full options.`,actions:(0,F.jsx)(i,{to:`/jobs/bulk-add`,className:`rounded-lg border border-line px-3 py-1.5 text-sm text-muted hover:bg-surface-2 hover:text-fg`,children:`Bulk import`})}),a&&(0,F.jsx)(`div`,{className:`mb-4 flex items-center gap-2 rounded-lg border border-accent/30 bg-accent/[0.06] px-4 py-2 text-sm text-accent`,children:`Pre-filled from an existing job. Review the data and options, then enqueue a fresh job.`}),(0,F.jsxs)(`form`,{className:`grid grid-cols-1 gap-6 lg:grid-cols-2`,onSubmit:e=>{e.preventDefault(),T()},children:[(0,F.jsx)(I,{values:o,setValue:w,queueNames:(e?.queues??[]).map(e=>e.name),queueDiscoveryError:t,onRetryQueues:()=>void n(),jsonError:x,setJsonError:S}),(0,F.jsx)(L,{values:o,setValue:w}),(0,F.jsxs)(`div`,{className:`flex flex-wrap items-end gap-3 lg:col-span-2`,children:[(0,F.jsx)(`div`,{className:`w-28`,children:(0,F.jsx)(v,{label:`Count`,hint:`1–10000`,children:(0,F.jsx)(g,{type:`number`,min:1,max:1e4,step:1,name:`count`,value:o.count,onChange:e=>w(`count`,e.target.value)})})}),(0,F.jsx)(s,{type:`submit`,variant:`accent`,disabled:m,children:m?`Adding…`:`Add job`}),_&&(0,F.jsx)(`span`,{role:_.ok?`status`:`alert`,className:_.ok?`text-sm text-success`:`text-sm text-danger`,children:_.msg})]})]})]})}export{K as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{h as t,t as n}from"./react-vendor-08inPAVO.js";import{o as r}from"./connectionStore-B946Fhuv.js";import{O as i,r as a}from"./icons-BIT5aq1c.js";import{C as o,J as s,M as c,N as l,P as u,_ as d,b as f,d as p,g as m,q as h,w as g,x as _}from"./index-X_fHGbXZ.js";import{a as v,n as y,o as b,t as x}from"./form-DBkslwzu.js";var S=e(t(),1),C=[`error_rate`,`p99_latency`,`waiting`,`failed`,`dlq`],w=[`>=`,`>`,`<=`,`<`],T=[`email`,`webhook`,`slack`],E=/^[a-zA-Z0-9_\-.:]+$/,D={error_rate:{unit:`% (0–100)`,placeholder:`e.g. 5`},p99_latency:{unit:`ms`,placeholder:`e.g. 250`},waiting:{unit:`jobs`,placeholder:`e.g. 100`},failed:{unit:`jobs`,placeholder:`e.g. 10`},dlq:{unit:`jobs`,placeholder:`e.g. 1`}};function O(e){let t=e.name.trim();if(!C.includes(e.metric))return{ok:!1,error:`Invalid metric`,field:`metric`};if(!w.includes(e.operator))return{ok:!1,error:`Invalid operator`,field:`operator`};let n=e.metric===`p99_latency`?``:e.queue.trim();if(!t)return{ok:!1,error:`Rule name is required`,field:`name`};if(t.length>200)return{ok:!1,error:`Rule name must be 200 characters or fewer`,field:`name`};if(!e.threshold.trim())return{ok:!1,error:`Threshold is required`,field:`threshold`};let r=Number(e.threshold);return!Number.isFinite(r)||r<0?{ok:!1,error:`Threshold must be a non-negative number`,field:`threshold`}:e.metric===`error_rate`&&r>100?{ok:!1,error:`Error-rate threshold must be between 0 and 100%`,field:`threshold`}:[`waiting`,`failed`,`dlq`].includes(e.metric)&&!Number.isSafeInteger(r)?{ok:!1,error:`Job-count thresholds must be whole numbers`,field:`threshold`}:n&&(n.length>256||!E.test(n))?{ok:!1,error:`Queue contains unsupported characters or is too long`,field:`queue`}:T.includes(e.channel)?{ok:!0,rule:{name:t,metric:e.metric,operator:e.operator,threshold:r,queue:n,channel:e.channel,enabled:!0}}:{ok:!1,error:`Invalid channel type`,field:`channel`}}var k=n();function A({onAdd:e}){let[t,n]=(0,S.useState)(``),[r,i]=(0,S.useState)(`error_rate`),[a,s]=(0,S.useState)(`>=`),[c,l]=(0,S.useState)(``),[u,d]=(0,S.useState)(``),[f,p]=(0,S.useState)(null),m=(0,S.useRef)(!1),g=(0,S.useId)(),_=e=>f?.field===e;return(0,k.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 md:grid-cols-3 lg:grid-cols-5`,children:[(0,k.jsx)(x,{label:`Name`,children:(0,k.jsx)(y,{name:`alert-rule-name`,autoComplete:`off`,maxLength:200,value:t,"aria-invalid":_(`name`),"aria-describedby":_(`name`)?g:void 0,onChange:e=>{n(e.target.value),p(null)},placeholder:`High error rate`})}),(0,k.jsx)(x,{label:`Metric`,children:(0,k.jsx)(v,{name:`alert-rule-metric`,value:r,"aria-invalid":_(`metric`),"aria-describedby":_(`metric`)?g:void 0,onChange:e=>{i(e.target.value),p(null)},children:C.map(e=>(0,k.jsx)(`option`,{value:e,children:h[e]},e))})}),(0,k.jsx)(x,{label:`Operator`,children:(0,k.jsx)(v,{name:`alert-rule-operator`,value:a,"aria-invalid":_(`operator`),"aria-describedby":_(`operator`)?g:void 0,onChange:e=>{s(e.target.value),p(null)},children:w.map(e=>(0,k.jsx)(`option`,{value:e,children:e},e))})}),(0,k.jsx)(x,{label:`Threshold`,hint:D[r].unit,children:(0,k.jsx)(y,{name:`alert-rule-threshold`,autoComplete:`off`,type:`number`,min:0,max:r===`error_rate`?100:void 0,step:[`waiting`,`failed`,`dlq`].includes(r)?1:`any`,value:c,"aria-invalid":_(`threshold`),"aria-describedby":_(`threshold`)?g:void 0,onChange:e=>{l(e.target.value),p(null)},placeholder:D[r].placeholder})}),(0,k.jsx)(x,{label:`Queue (optional)`,hint:r===`p99_latency`?`global only — latency is not per queue`:void 0,children:(0,k.jsx)(y,{name:`alert-rule-queue`,autoComplete:`off`,spellCheck:!1,maxLength:256,value:u,"aria-invalid":_(`queue`),"aria-describedby":_(`queue`)?g:void 0,onChange:e=>{d(e.target.value),p(null)},disabled:r===`p99_latency`,placeholder:r===`p99_latency`?`Global`:`All queues`,className:`disabled:cursor-not-allowed disabled:opacity-40`})}),(0,k.jsxs)(`div`,{className:`col-span-full`,children:[(0,k.jsx)(o,{variant:`accent`,disabled:!t.trim()||!c.trim(),onClick:()=>{if(m.current)return;let n=O({name:t,metric:r,operator:a,threshold:c,queue:u,channel:`email`});if(!n.ok)return p({field:n.field,message:n.error});m.current=!0;try{let t=e(n.rule);t.ok||(m.current=!1,p({field:`name`,message:t.error}))}catch(e){m.current=!1,p({field:`name`,message:e.message})}},children:`Save rule`}),f&&(0,k.jsx)(`span`,{id:g,role:`alert`,className:`ml-3 text-xs text-danger`,children:f.message})]})]})}function j(){return typeof Notification>`u`?`unsupported`:Notification.permission}function M(){let{rules:e,addRule:t,removeRule:n,toggleRule:v}=s(),y=l(e=>e.breaching),x=l(e=>e.status),C=l(e=>e.error),w=l(e=>e.connectionIdentity),T=r(e=>u(e.baseUrl,e.token)),E=e.some(e=>e.enabled),D=w===T,O=D?y:[],M=D?x:E?`checking`:`idle`,N=D?C:null,[P,F]=(0,S.useState)(!1),[I,L]=(0,S.useState)(j);return(0,k.jsxs)(`div`,{children:[(0,k.jsx)(m,{title:`Alerts`,description:`Threshold rules evaluated live in your browser.`,live:E&&M===`live`,actions:(0,k.jsxs)(k.Fragment,{children:[I===`granted`?(0,k.jsxs)(`span`,{className:`flex items-center gap-1.5 text-sm text-success`,children:[(0,k.jsx)(a,{className:`size-4`}),` Desktop alerts on`]}):I===`unsupported`?(0,k.jsx)(`span`,{className:`text-sm text-faint`,children:`Notifications unsupported`}):I===`denied`?(0,k.jsx)(`span`,{className:`text-sm text-faint`,children:`Desktop alerts blocked — allow notifications in browser settings`}):(0,k.jsx)(o,{size:`sm`,onClick:async()=>{L(await c())},children:`Enable desktop notifications`}),(0,k.jsx)(o,{variant:`accent`,size:`sm`,"aria-expanded":P,"aria-controls":`alert-rule-form`,onClick:()=>F(e=>!e),children:`+ Create Alert Rule`})]})}),E&&M===`checking`&&(0,k.jsx)(`p`,{role:`status`,className:`mb-4 text-sm text-muted`,children:`Checking alert metrics for the connected server…`}),E&&M===`degraded`&&(0,k.jsx)(f,{message:N??`Alert metrics are unavailable; current rule results may be stale.`}),(0,k.jsx)(`div`,{className:`mb-6 rounded-lg border border-amber-500/20 bg-amber-500/5 px-4 py-3 text-sm text-amber-400/90`,children:`Rules are evaluated in this browser while a tab is open (even backgrounded), raising an in-app toast and — if enabled — a desktop notification. bunqueue OSS has no alerting backend, so email/webhook/slack delivery still needs your own monitoring or hosted bunqueue Cloud.`}),(0,k.jsxs)(`section`,{className:`mb-8`,children:[(0,k.jsx)(`h2`,{className:`mb-3 text-lg font-semibold text-fg`,children:`Triggered Alerts`}),O.length===0?(0,k.jsx)(d,{icon:(0,k.jsx)(a,{}),title:`No triggered alerts`,hint:E?M===`live`?`All enabled rules are within their thresholds.`:M===`checking`?`Alert metrics are still being checked.`:`Alert metrics are unavailable; no all-clear result is available.`:`No enabled rules yet. Create one below.`}):(0,k.jsx)(`div`,{className:`overflow-x-auto rounded-xl border border-danger/30 bg-red-500/5`,children:(0,k.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,k.jsx)(`thead`,{children:(0,k.jsxs)(`tr`,{className:`border-b border-line text-left text-[11px] uppercase tracking-wider text-faint`,children:[(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Rule`}),(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Condition`}),(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Queue`}),(0,k.jsx)(`th`,{className:`px-5 py-3 text-right font-medium`,children:`Current`}),(0,k.jsx)(`th`,{className:`px-5 py-3 text-right font-medium`,children:`Since`})]})}),(0,k.jsx)(`tbody`,{children:O.map(e=>(0,k.jsxs)(`tr`,{className:`border-b border-line last:border-0`,children:[(0,k.jsx)(`td`,{className:`px-5 py-3 font-medium text-danger`,children:e.ruleName}),(0,k.jsxs)(`td`,{className:`px-5 py-3 text-muted`,children:[e.metricLabel,` `,e.operator,` `,(0,k.jsx)(`span`,{className:`font-semibold text-fg`,children:e.threshold})]}),(0,k.jsx)(`td`,{className:`px-5 py-3 text-muted`,children:e.queue||`All queues`}),(0,k.jsx)(`td`,{className:`px-5 py-3 text-right tnum font-semibold text-danger`,children:Math.round(e.value*100)/100}),(0,k.jsx)(`td`,{className:`px-5 py-3 text-right text-faint`,children:p(e.at)})]},e.ruleId))})]})})]}),(0,k.jsxs)(`section`,{children:[(0,k.jsx)(`h2`,{className:`mb-3 text-lg font-semibold text-fg`,children:`Alert Rules`}),P&&(0,k.jsx)(`div`,{id:`alert-rule-form`,children:(0,k.jsx)(_,{className:`mb-4`,children:(0,k.jsx)(A,{onAdd:e=>{let n=t(e);return n.ok&&F(!1),n}})})}),e.length===0?(0,k.jsx)(d,{title:`No alert rules`,hint:`Create a rule to be notified when a threshold is crossed.`}):(0,k.jsx)(`div`,{className:`overflow-x-auto rounded-xl border border-line bg-surface`,children:(0,k.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,k.jsx)(`thead`,{children:(0,k.jsxs)(`tr`,{className:`border-b border-line text-left text-[11px] uppercase tracking-wider text-faint`,children:[(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Rule`}),(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Condition`}),(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Queue`}),(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Delivery`}),(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Status`}),(0,k.jsx)(`th`,{className:`w-12 px-5 py-3`})]})}),(0,k.jsx)(`tbody`,{children:e.map(e=>(0,k.jsxs)(`tr`,{className:`border-b border-line last:border-0`,children:[(0,k.jsx)(`td`,{className:`px-5 py-3 font-medium text-fg`,children:e.name}),(0,k.jsxs)(`td`,{className:`px-5 py-3 text-muted`,children:[h[e.metric],` `,e.operator,` `,(0,k.jsx)(`span`,{className:`font-semibold text-accent`,children:e.threshold})]}),(0,k.jsx)(`td`,{className:`px-5 py-3 text-muted`,children:e.queue||`All queues`}),(0,k.jsx)(`td`,{className:`px-5 py-3`,children:(0,k.jsx)(`span`,{className:`rounded-md bg-surface-2 px-2 py-0.5 text-xs text-muted`,children:`Browser`})}),(0,k.jsx)(`td`,{className:`px-5 py-3`,children:(0,k.jsx)(b,{checked:e.enabled,onChange:()=>v(e.id),label:`Enabled`})}),(0,k.jsx)(`td`,{className:`px-5 py-3 text-right`,children:(0,k.jsx)(g,{"aria-label":`Delete rule ${e.name}`,onClick:()=>window.confirm(`Delete alert rule "${e.name}"?`)&&n(e.id),children:(0,k.jsx)(i,{className:`size-3.5`})})})]},e.id))})]})})]})]})}export{M as Alerts};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{h as t,t as n}from"./react-vendor-08inPAVO.js";import{o as r}from"./connectionStore-B946Fhuv.js";import{O as i,r as a}from"./icons-BIT5aq1c.js";import{C as o,J as s,M as c,N as l,P as u,_ as d,b as f,d as p,g as m,q as h,w as g,x as _}from"./index-DcVSLtH4.js";import{a as v,n as y,o as b,t as x}from"./form-DBkslwzu.js";var S=e(t(),1),C=[`error_rate`,`p99_latency`,`waiting`,`failed`,`dlq`],w=[`>=`,`>`,`<=`,`<`],T=[`email`,`webhook`,`slack`],E=/^[a-zA-Z0-9_\-.:]+$/,D={error_rate:{unit:`% (0–100)`,placeholder:`e.g. 5`},p99_latency:{unit:`ms`,placeholder:`e.g. 250`},waiting:{unit:`jobs`,placeholder:`e.g. 100`},failed:{unit:`jobs`,placeholder:`e.g. 10`},dlq:{unit:`jobs`,placeholder:`e.g. 1`}};function O(e){let t=e.name.trim();if(!C.includes(e.metric))return{ok:!1,error:`Invalid metric`,field:`metric`};if(!w.includes(e.operator))return{ok:!1,error:`Invalid operator`,field:`operator`};let n=e.metric===`p99_latency`?``:e.queue.trim();if(!t)return{ok:!1,error:`Rule name is required`,field:`name`};if(t.length>200)return{ok:!1,error:`Rule name must be 200 characters or fewer`,field:`name`};if(!e.threshold.trim())return{ok:!1,error:`Threshold is required`,field:`threshold`};let r=Number(e.threshold);return!Number.isFinite(r)||r<0?{ok:!1,error:`Threshold must be a non-negative number`,field:`threshold`}:e.metric===`error_rate`&&r>100?{ok:!1,error:`Error-rate threshold must be between 0 and 100%`,field:`threshold`}:[`waiting`,`failed`,`dlq`].includes(e.metric)&&!Number.isSafeInteger(r)?{ok:!1,error:`Job-count thresholds must be whole numbers`,field:`threshold`}:n&&(n.length>256||!E.test(n))?{ok:!1,error:`Queue contains unsupported characters or is too long`,field:`queue`}:T.includes(e.channel)?{ok:!0,rule:{name:t,metric:e.metric,operator:e.operator,threshold:r,queue:n,channel:e.channel,enabled:!0}}:{ok:!1,error:`Invalid channel type`,field:`channel`}}var k=n();function A({onAdd:e}){let[t,n]=(0,S.useState)(``),[r,i]=(0,S.useState)(`error_rate`),[a,s]=(0,S.useState)(`>=`),[c,l]=(0,S.useState)(``),[u,d]=(0,S.useState)(``),[f,p]=(0,S.useState)(null),m=(0,S.useRef)(!1),g=(0,S.useId)(),_=e=>f?.field===e;return(0,k.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 md:grid-cols-3 lg:grid-cols-5`,children:[(0,k.jsx)(x,{label:`Name`,children:(0,k.jsx)(y,{name:`alert-rule-name`,autoComplete:`off`,maxLength:200,value:t,"aria-invalid":_(`name`),"aria-describedby":_(`name`)?g:void 0,onChange:e=>{n(e.target.value),p(null)},placeholder:`High error rate`})}),(0,k.jsx)(x,{label:`Metric`,children:(0,k.jsx)(v,{name:`alert-rule-metric`,value:r,"aria-invalid":_(`metric`),"aria-describedby":_(`metric`)?g:void 0,onChange:e=>{i(e.target.value),p(null)},children:C.map(e=>(0,k.jsx)(`option`,{value:e,children:h[e]},e))})}),(0,k.jsx)(x,{label:`Operator`,children:(0,k.jsx)(v,{name:`alert-rule-operator`,value:a,"aria-invalid":_(`operator`),"aria-describedby":_(`operator`)?g:void 0,onChange:e=>{s(e.target.value),p(null)},children:w.map(e=>(0,k.jsx)(`option`,{value:e,children:e},e))})}),(0,k.jsx)(x,{label:`Threshold`,hint:D[r].unit,children:(0,k.jsx)(y,{name:`alert-rule-threshold`,autoComplete:`off`,type:`number`,min:0,max:r===`error_rate`?100:void 0,step:[`waiting`,`failed`,`dlq`].includes(r)?1:`any`,value:c,"aria-invalid":_(`threshold`),"aria-describedby":_(`threshold`)?g:void 0,onChange:e=>{l(e.target.value),p(null)},placeholder:D[r].placeholder})}),(0,k.jsx)(x,{label:`Queue (optional)`,hint:r===`p99_latency`?`global only — latency is not per queue`:void 0,children:(0,k.jsx)(y,{name:`alert-rule-queue`,autoComplete:`off`,spellCheck:!1,maxLength:256,value:u,"aria-invalid":_(`queue`),"aria-describedby":_(`queue`)?g:void 0,onChange:e=>{d(e.target.value),p(null)},disabled:r===`p99_latency`,placeholder:r===`p99_latency`?`Global`:`All queues`,className:`disabled:cursor-not-allowed disabled:opacity-40`})}),(0,k.jsxs)(`div`,{className:`col-span-full`,children:[(0,k.jsx)(o,{variant:`accent`,disabled:!t.trim()||!c.trim(),onClick:()=>{if(m.current)return;let n=O({name:t,metric:r,operator:a,threshold:c,queue:u,channel:`email`});if(!n.ok)return p({field:n.field,message:n.error});m.current=!0;try{let t=e(n.rule);t.ok||(m.current=!1,p({field:`name`,message:t.error}))}catch(e){m.current=!1,p({field:`name`,message:e.message})}},children:`Save rule`}),f&&(0,k.jsx)(`span`,{id:g,role:`alert`,className:`ml-3 text-xs text-danger`,children:f.message})]})]})}function j(){return typeof Notification>`u`?`unsupported`:Notification.permission}function M(){let{rules:e,addRule:t,removeRule:n,toggleRule:v}=s(),y=l(e=>e.breaching),x=l(e=>e.status),C=l(e=>e.error),w=l(e=>e.connectionIdentity),T=r(e=>u(e.baseUrl,e.token)),E=e.some(e=>e.enabled),D=w===T,O=D?y:[],M=D?x:E?`checking`:`idle`,N=D?C:null,[P,F]=(0,S.useState)(!1),[I,L]=(0,S.useState)(j);return(0,k.jsxs)(`div`,{children:[(0,k.jsx)(m,{title:`Alerts`,description:`Threshold rules evaluated live in your browser.`,live:E&&M===`live`,actions:(0,k.jsxs)(k.Fragment,{children:[I===`granted`?(0,k.jsxs)(`span`,{className:`flex items-center gap-1.5 text-sm text-success`,children:[(0,k.jsx)(a,{className:`size-4`}),` Desktop alerts on`]}):I===`unsupported`?(0,k.jsx)(`span`,{className:`text-sm text-faint`,children:`Notifications unsupported`}):I===`denied`?(0,k.jsx)(`span`,{className:`text-sm text-faint`,children:`Desktop alerts blocked — allow notifications in browser settings`}):(0,k.jsx)(o,{size:`sm`,onClick:async()=>{L(await c())},children:`Enable desktop notifications`}),(0,k.jsx)(o,{variant:`accent`,size:`sm`,"aria-expanded":P,"aria-controls":`alert-rule-form`,onClick:()=>F(e=>!e),children:`+ Create Alert Rule`})]})}),E&&M===`checking`&&(0,k.jsx)(`p`,{role:`status`,className:`mb-4 text-sm text-muted`,children:`Checking alert metrics for the connected server…`}),E&&M===`degraded`&&(0,k.jsx)(f,{message:N??`Alert metrics are unavailable; current rule results may be stale.`}),(0,k.jsx)(`div`,{className:`mb-6 rounded-lg border border-amber-500/20 bg-amber-500/5 px-4 py-3 text-sm text-amber-400/90`,children:`Rules are evaluated in this browser while a tab is open (even backgrounded), raising an in-app toast and — if enabled — a desktop notification. bunqueue OSS has no alerting backend, so email/webhook/slack delivery still needs your own monitoring or hosted bunqueue Cloud.`}),(0,k.jsxs)(`section`,{className:`mb-8`,children:[(0,k.jsx)(`h2`,{className:`mb-3 text-lg font-semibold text-fg`,children:`Triggered Alerts`}),O.length===0?(0,k.jsx)(d,{icon:(0,k.jsx)(a,{}),title:`No triggered alerts`,hint:E?M===`live`?`All enabled rules are within their thresholds.`:M===`checking`?`Alert metrics are still being checked.`:`Alert metrics are unavailable; no all-clear result is available.`:`No enabled rules yet. Create one below.`}):(0,k.jsx)(`div`,{className:`overflow-x-auto rounded-xl border border-danger/30 bg-red-500/5`,children:(0,k.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,k.jsx)(`thead`,{children:(0,k.jsxs)(`tr`,{className:`border-b border-line text-left text-[11px] uppercase tracking-wider text-faint`,children:[(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Rule`}),(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Condition`}),(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Queue`}),(0,k.jsx)(`th`,{className:`px-5 py-3 text-right font-medium`,children:`Current`}),(0,k.jsx)(`th`,{className:`px-5 py-3 text-right font-medium`,children:`Since`})]})}),(0,k.jsx)(`tbody`,{children:O.map(e=>(0,k.jsxs)(`tr`,{className:`border-b border-line last:border-0`,children:[(0,k.jsx)(`td`,{className:`px-5 py-3 font-medium text-danger`,children:e.ruleName}),(0,k.jsxs)(`td`,{className:`px-5 py-3 text-muted`,children:[e.metricLabel,` `,e.operator,` `,(0,k.jsx)(`span`,{className:`font-semibold text-fg`,children:e.threshold})]}),(0,k.jsx)(`td`,{className:`px-5 py-3 text-muted`,children:e.queue||`All queues`}),(0,k.jsx)(`td`,{className:`px-5 py-3 text-right tnum font-semibold text-danger`,children:Math.round(e.value*100)/100}),(0,k.jsx)(`td`,{className:`px-5 py-3 text-right text-faint`,children:p(e.at)})]},e.ruleId))})]})})]}),(0,k.jsxs)(`section`,{children:[(0,k.jsx)(`h2`,{className:`mb-3 text-lg font-semibold text-fg`,children:`Alert Rules`}),P&&(0,k.jsx)(`div`,{id:`alert-rule-form`,children:(0,k.jsx)(_,{className:`mb-4`,children:(0,k.jsx)(A,{onAdd:e=>{let n=t(e);return n.ok&&F(!1),n}})})}),e.length===0?(0,k.jsx)(d,{title:`No alert rules`,hint:`Create a rule to be notified when a threshold is crossed.`}):(0,k.jsx)(`div`,{className:`overflow-x-auto rounded-xl border border-line bg-surface`,children:(0,k.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,k.jsx)(`thead`,{children:(0,k.jsxs)(`tr`,{className:`border-b border-line text-left text-[11px] uppercase tracking-wider text-faint`,children:[(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Rule`}),(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Condition`}),(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Queue`}),(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Delivery`}),(0,k.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Status`}),(0,k.jsx)(`th`,{className:`w-12 px-5 py-3`})]})}),(0,k.jsx)(`tbody`,{children:e.map(e=>(0,k.jsxs)(`tr`,{className:`border-b border-line last:border-0`,children:[(0,k.jsx)(`td`,{className:`px-5 py-3 font-medium text-fg`,children:e.name}),(0,k.jsxs)(`td`,{className:`px-5 py-3 text-muted`,children:[h[e.metric],` `,e.operator,` `,(0,k.jsx)(`span`,{className:`font-semibold text-accent`,children:e.threshold})]}),(0,k.jsx)(`td`,{className:`px-5 py-3 text-muted`,children:e.queue||`All queues`}),(0,k.jsx)(`td`,{className:`px-5 py-3`,children:(0,k.jsx)(`span`,{className:`rounded-md bg-surface-2 px-2 py-0.5 text-xs text-muted`,children:`Browser`})}),(0,k.jsx)(`td`,{className:`px-5 py-3`,children:(0,k.jsx)(b,{checked:e.enabled,onChange:()=>v(e.id),label:`Enabled`})}),(0,k.jsx)(`td`,{className:`px-5 py-3 text-right`,children:(0,k.jsx)(g,{"aria-label":`Delete rule ${e.name}`,onClick:()=>window.confirm(`Delete alert rule "${e.name}"?`)&&n(e.id),children:(0,k.jsx)(i,{className:`size-3.5`})})})]},e.id))})]})})]})]})}export{M as Alerts};
|