wurk 1.3.1 → 1.5.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.
- checksums.yaml +4 -4
- data/README.md +4 -1
- data/app/controllers/concerns/wurk/stream_concurrency_guard.rb +22 -5
- data/lib/wurk/batch/callbacks.rb +82 -12
- data/lib/wurk/batch/death_handler.rb +7 -4
- data/lib/wurk/batch/server_middleware.rb +1 -1
- data/lib/wurk/batch.rb +121 -15
- data/lib/wurk/capsule.rb +45 -16
- data/lib/wurk/cli.rb +48 -14
- data/lib/wurk/client/buffered.rb +200 -43
- data/lib/wurk/client.rb +181 -38
- data/lib/wurk/compat.rb +1 -1
- data/lib/wurk/component.rb +36 -4
- data/lib/wurk/configuration.rb +47 -7
- data/lib/wurk/context.rb +1 -1
- data/lib/wurk/cron.rb +94 -37
- data/lib/wurk/deploy.rb +5 -3
- data/lib/wurk/embedded.rb +13 -0
- data/lib/wurk/engine.rb +41 -1
- data/lib/wurk/errors.rb +15 -0
- data/lib/wurk/fetcher/reaper.rb +125 -58
- data/lib/wurk/fetcher/reliable.rb +366 -51
- data/lib/wurk/fetcher.rb +6 -0
- data/lib/wurk/heartbeat.rb +24 -12
- data/lib/wurk/history.rb +13 -1
- data/lib/wurk/job_logger.rb +16 -7
- data/lib/wurk/job_set.rb +3 -2
- data/lib/wurk/job_util.rb +44 -24
- data/lib/wurk/launcher.rb +230 -119
- data/lib/wurk/leader.rb +63 -14
- data/lib/wurk/limiter/base.rb +8 -10
- data/lib/wurk/limiter/bucket.rb +1 -1
- data/lib/wurk/limiter/concurrent.rb +27 -22
- data/lib/wurk/limiter/window.rb +13 -11
- data/lib/wurk/limiter.rb +7 -4
- data/lib/wurk/logger.rb +1 -1
- data/lib/wurk/lua/loader.rb +9 -3
- data/lib/wurk/lua.rb +97 -14
- data/lib/wurk/manager.rb +29 -13
- data/lib/wurk/metrics/accumulator.rb +95 -0
- data/lib/wurk/metrics/flusher.rb +70 -0
- data/lib/wurk/metrics/history.rb +102 -32
- data/lib/wurk/metrics/queue_rollup.rb +13 -1
- data/lib/wurk/metrics/rollup.rb +13 -1
- data/lib/wurk/metrics/statsd.rb +32 -18
- data/lib/wurk/middleware/chain.rb +31 -14
- data/lib/wurk/middleware/interrupt_handler.rb +7 -6
- data/lib/wurk/middleware/poison_pill.rb +93 -31
- data/lib/wurk/middleware.rb +2 -2
- data/lib/wurk/pool_checkout.rb +39 -0
- data/lib/wurk/process_set.rb +10 -5
- data/lib/wurk/processor.rb +83 -9
- data/lib/wurk/profiler.rb +9 -4
- data/lib/wurk/queue.rb +18 -7
- data/lib/wurk/rails_boot.rb +38 -7
- data/lib/wurk/redis_client_adapter.rb +49 -5
- data/lib/wurk/redis_pool.rb +71 -25
- data/lib/wurk/scheduled.rb +30 -2
- data/lib/wurk/shutdown_gate.rb +79 -0
- data/lib/wurk/stats.rb +19 -10
- data/lib/wurk/swarm/child_boot.rb +36 -4
- data/lib/wurk/swarm.rb +258 -43
- data/lib/wurk/timer_loop.rb +14 -0
- data/lib/wurk/version.rb +1 -1
- data/lib/wurk/web/config.rb +11 -7
- data/lib/wurk/web/enterprise.rb +58 -6
- data/lib/wurk/web/extension.rb +1 -1
- data/lib/wurk/web/search.rb +5 -3
- data/lib/wurk.rb +12 -10
- data/vendor/assets/dashboard/assets/{ArgsValue-D74zX0MI.js → ArgsValue-CcR2ya6e.js} +1 -1
- data/vendor/assets/dashboard/assets/{BatchDetail-YRymNsrB.js → BatchDetail-CUXJUQ3Q.js} +1 -1
- data/vendor/assets/dashboard/assets/{Batches-HY4hHdQU.js → Batches-Cxan6Ngw.js} +1 -1
- data/vendor/assets/dashboard/assets/{Busy-FCEN1Bpx.js → Busy-DC5EGM0g.js} +1 -1
- data/vendor/assets/dashboard/assets/{Cron-DO3J2zcp.js → Cron-Dlt8tXJA.js} +1 -1
- data/vendor/assets/dashboard/assets/Dashboard-DNLu_WCg.js +1 -0
- data/vendor/assets/dashboard/assets/{Dead-Bi4GGk9a.js → Dead-dZ7VGlKS.js} +1 -1
- data/vendor/assets/dashboard/assets/Extension-DaFpEIJf.js +1 -0
- data/vendor/assets/dashboard/assets/{FilterBox-IJkHYpdm.js → FilterBox-CO3aYWIq.js} +1 -1
- data/vendor/assets/dashboard/assets/{JobDetailModal-DS1ypyoc.js → JobDetailModal-DSWbT6G0.js} +1 -1
- data/vendor/assets/dashboard/assets/{Limiters-Nz7UbNeJ.js → Limiters-Cb4PKXNR.js} +1 -1
- data/vendor/assets/dashboard/assets/Metrics-CCGzgCsT.js +1 -0
- data/vendor/assets/dashboard/assets/Modal-B86q6ruL.js +1 -0
- data/vendor/assets/dashboard/assets/{PageHeader-C44KNMGm.js → PageHeader-fPrCcp_-.js} +1 -1
- data/vendor/assets/dashboard/assets/{Profiles-xEVTyS2N.js → Profiles-BnS82nR_.js} +1 -1
- data/vendor/assets/dashboard/assets/{Queues-D9PH_THs.js → Queues-CIyPevOy.js} +1 -1
- data/vendor/assets/dashboard/assets/{Retries-CAKzDgYG.js → Retries-DopwXkXl.js} +1 -1
- data/vendor/assets/dashboard/assets/{Scheduled-DTYw1X8S.js → Scheduled-1-Z7i1zE.js} +1 -1
- data/vendor/assets/dashboard/assets/{Search-c4vFxDG_.js → Search-ByA6eTma.js} +1 -1
- data/vendor/assets/dashboard/assets/{Skeleton-DzR7XNxz.js → Skeleton-bC7HfQ9r.js} +1 -1
- data/vendor/assets/dashboard/assets/{charts-BVHHGof7.js → charts-CLLzJ7vK.js} +1 -1
- data/vendor/assets/dashboard/assets/index-B1N8hQUh.js +141 -0
- data/vendor/assets/dashboard/assets/index-BdiUEDXX.css +1 -0
- data/vendor/assets/dashboard/assets/{useResetPageOnEmpty-B_FsMah6.js → useResetPageOnEmpty-DpBjkf6_.js} +1 -1
- data/vendor/assets/dashboard/assets/{useSort-BeYbztkN.js → useSort-DvpwuNQE.js} +1 -1
- data/vendor/assets/dashboard/index.html +3 -3
- data/vendor/assets/dashboard/wurk-manifest.json +2 -2
- metadata +32 -27
- data/vendor/assets/dashboard/assets/Dashboard-B9rOrkzk.js +0 -1
- data/vendor/assets/dashboard/assets/Extension-BSv8ddW_.js +0 -1
- data/vendor/assets/dashboard/assets/Metrics-BBTDxcaE.js +0 -1
- data/vendor/assets/dashboard/assets/Modal-Crrsu64-.js +0 -1
- data/vendor/assets/dashboard/assets/index-BxjdeuOa.css +0 -1
- data/vendor/assets/dashboard/assets/index-DQu7WY9y.js +0 -141
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: wurk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- developerz.ai
|
|
@@ -213,6 +213,7 @@ files:
|
|
|
213
213
|
- lib/wurk/embedded.rb
|
|
214
214
|
- lib/wurk/encryption.rb
|
|
215
215
|
- lib/wurk/engine.rb
|
|
216
|
+
- lib/wurk/errors.rb
|
|
216
217
|
- lib/wurk/fetcher.rb
|
|
217
218
|
- lib/wurk/fetcher/reaper.rb
|
|
218
219
|
- lib/wurk/fetcher/reliable.rb
|
|
@@ -247,6 +248,8 @@ files:
|
|
|
247
248
|
- lib/wurk/lua/loader.rb
|
|
248
249
|
- lib/wurk/manager.rb
|
|
249
250
|
- lib/wurk/metrics.rb
|
|
251
|
+
- lib/wurk/metrics/accumulator.rb
|
|
252
|
+
- lib/wurk/metrics/flusher.rb
|
|
250
253
|
- lib/wurk/metrics/history.rb
|
|
251
254
|
- lib/wurk/metrics/query.rb
|
|
252
255
|
- lib/wurk/metrics/queue_rollup.rb
|
|
@@ -259,6 +262,7 @@ files:
|
|
|
259
262
|
- lib/wurk/middleware/i18n.rb
|
|
260
263
|
- lib/wurk/middleware/interrupt_handler.rb
|
|
261
264
|
- lib/wurk/middleware/poison_pill.rb
|
|
265
|
+
- lib/wurk/pool_checkout.rb
|
|
262
266
|
- lib/wurk/process_set.rb
|
|
263
267
|
- lib/wurk/processor.rb
|
|
264
268
|
- lib/wurk/profile_set.rb
|
|
@@ -280,6 +284,7 @@ files:
|
|
|
280
284
|
- lib/wurk/sentry/job_context.rb
|
|
281
285
|
- lib/wurk/sentry/middleware.rb
|
|
282
286
|
- lib/wurk/sentry/retry_policy.rb
|
|
287
|
+
- lib/wurk/shutdown_gate.rb
|
|
283
288
|
- lib/wurk/sorted_entry.rb
|
|
284
289
|
- lib/wurk/stats.rb
|
|
285
290
|
- lib/wurk/swarm.rb
|
|
@@ -305,27 +310,27 @@ files:
|
|
|
305
310
|
- lib/wurk/worker.rb
|
|
306
311
|
- lib/wurk/worker/setter.rb
|
|
307
312
|
- vendor/assets/dashboard/apple-touch-icon.png
|
|
308
|
-
- vendor/assets/dashboard/assets/ArgsValue-
|
|
309
|
-
- vendor/assets/dashboard/assets/BatchDetail-
|
|
310
|
-
- vendor/assets/dashboard/assets/Batches-
|
|
311
|
-
- vendor/assets/dashboard/assets/Busy-
|
|
312
|
-
- vendor/assets/dashboard/assets/Cron-
|
|
313
|
-
- vendor/assets/dashboard/assets/Dashboard-
|
|
314
|
-
- vendor/assets/dashboard/assets/Dead-
|
|
315
|
-
- vendor/assets/dashboard/assets/Extension-
|
|
316
|
-
- vendor/assets/dashboard/assets/FilterBox-
|
|
317
|
-
- vendor/assets/dashboard/assets/JobDetailModal-
|
|
318
|
-
- vendor/assets/dashboard/assets/Limiters-
|
|
319
|
-
- vendor/assets/dashboard/assets/Metrics-
|
|
320
|
-
- vendor/assets/dashboard/assets/Modal-
|
|
321
|
-
- vendor/assets/dashboard/assets/PageHeader-
|
|
322
|
-
- vendor/assets/dashboard/assets/Profiles-
|
|
323
|
-
- vendor/assets/dashboard/assets/Queues-
|
|
324
|
-
- vendor/assets/dashboard/assets/Retries-
|
|
325
|
-
- vendor/assets/dashboard/assets/Scheduled-
|
|
326
|
-
- vendor/assets/dashboard/assets/Search-
|
|
327
|
-
- vendor/assets/dashboard/assets/Skeleton-
|
|
328
|
-
- vendor/assets/dashboard/assets/charts-
|
|
313
|
+
- vendor/assets/dashboard/assets/ArgsValue-CcR2ya6e.js
|
|
314
|
+
- vendor/assets/dashboard/assets/BatchDetail-CUXJUQ3Q.js
|
|
315
|
+
- vendor/assets/dashboard/assets/Batches-Cxan6Ngw.js
|
|
316
|
+
- vendor/assets/dashboard/assets/Busy-DC5EGM0g.js
|
|
317
|
+
- vendor/assets/dashboard/assets/Cron-Dlt8tXJA.js
|
|
318
|
+
- vendor/assets/dashboard/assets/Dashboard-DNLu_WCg.js
|
|
319
|
+
- vendor/assets/dashboard/assets/Dead-dZ7VGlKS.js
|
|
320
|
+
- vendor/assets/dashboard/assets/Extension-DaFpEIJf.js
|
|
321
|
+
- vendor/assets/dashboard/assets/FilterBox-CO3aYWIq.js
|
|
322
|
+
- vendor/assets/dashboard/assets/JobDetailModal-DSWbT6G0.js
|
|
323
|
+
- vendor/assets/dashboard/assets/Limiters-Cb4PKXNR.js
|
|
324
|
+
- vendor/assets/dashboard/assets/Metrics-CCGzgCsT.js
|
|
325
|
+
- vendor/assets/dashboard/assets/Modal-B86q6ruL.js
|
|
326
|
+
- vendor/assets/dashboard/assets/PageHeader-fPrCcp_-.js
|
|
327
|
+
- vendor/assets/dashboard/assets/Profiles-BnS82nR_.js
|
|
328
|
+
- vendor/assets/dashboard/assets/Queues-CIyPevOy.js
|
|
329
|
+
- vendor/assets/dashboard/assets/Retries-DopwXkXl.js
|
|
330
|
+
- vendor/assets/dashboard/assets/Scheduled-1-Z7i1zE.js
|
|
331
|
+
- vendor/assets/dashboard/assets/Search-ByA6eTma.js
|
|
332
|
+
- vendor/assets/dashboard/assets/Skeleton-bC7HfQ9r.js
|
|
333
|
+
- vendor/assets/dashboard/assets/charts-CLLzJ7vK.js
|
|
329
334
|
- vendor/assets/dashboard/assets/fa-brands-400-Bs6tcqqs.woff2
|
|
330
335
|
- vendor/assets/dashboard/assets/fa-regular-400-DRN8N0d1.woff2
|
|
331
336
|
- vendor/assets/dashboard/assets/fa-solid-900-IAB4Droh.woff2
|
|
@@ -338,8 +343,8 @@ files:
|
|
|
338
343
|
- vendor/assets/dashboard/assets/geist-sans-latin-600-normal-DFOURf8L.woff2
|
|
339
344
|
- vendor/assets/dashboard/assets/geist-sans-latin-700-normal-BmN9tIp5.woff2
|
|
340
345
|
- vendor/assets/dashboard/assets/geist-sans-latin-700-normal-CjScfYeH.woff
|
|
341
|
-
- vendor/assets/dashboard/assets/index-
|
|
342
|
-
- vendor/assets/dashboard/assets/index-
|
|
346
|
+
- vendor/assets/dashboard/assets/index-B1N8hQUh.js
|
|
347
|
+
- vendor/assets/dashboard/assets/index-BdiUEDXX.css
|
|
343
348
|
- vendor/assets/dashboard/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff
|
|
344
349
|
- vendor/assets/dashboard/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2
|
|
345
350
|
- vendor/assets/dashboard/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff
|
|
@@ -349,8 +354,8 @@ files:
|
|
|
349
354
|
- vendor/assets/dashboard/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2
|
|
350
355
|
- vendor/assets/dashboard/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff
|
|
351
356
|
- vendor/assets/dashboard/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff
|
|
352
|
-
- vendor/assets/dashboard/assets/useResetPageOnEmpty-
|
|
353
|
-
- vendor/assets/dashboard/assets/useSort-
|
|
357
|
+
- vendor/assets/dashboard/assets/useResetPageOnEmpty-DpBjkf6_.js
|
|
358
|
+
- vendor/assets/dashboard/assets/useSort-DvpwuNQE.js
|
|
354
359
|
- vendor/assets/dashboard/assets/utils-DDJC7tJV.js
|
|
355
360
|
- vendor/assets/dashboard/assets/wurk-logo-Vy3xW4K0.png
|
|
356
361
|
- vendor/assets/dashboard/favicon-16.png
|
|
@@ -386,5 +391,5 @@ requirements: []
|
|
|
386
391
|
rubygems_version: 3.6.9
|
|
387
392
|
specification_version: 4
|
|
388
393
|
summary: 100% drop-in replacement for Sidekiq + Sidekiq Pro + Sidekiq Enterprise.
|
|
389
|
-
Free.
|
|
394
|
+
Free.
|
|
390
395
|
test_files: []
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as e,F as t,J as n,L as r,M as i,O as a,R as o,V as s,_ as c,b as l,c as u,f as d,g as f,h as p,i as m,k as h,n as ee,q as g,r as _,s as v,v as y,w as b,z as x}from"./Skeleton-DzR7XNxz.js";import{i as S,o as C}from"./index-DQu7WY9y.js";import{n as w}from"./utils-DDJC7tJV.js";import{r as T}from"./charts-BVHHGof7.js";var E=e=>1-(1-e)**3,D=()=>typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches;function O(e,t=700){let[n,i]=s(0),a=0,o=null;return r(()=>{let n=e();if(D()||!Number.isFinite(n)){a=n,i(n);return}let r=a;if(r===n)return;let s=performance.now(),c=e=>{let l=Math.min((e-s)/t,1),u=r+(n-r)*E(l);a=u,i(u),l<1&&(o=requestAnimationFrame(c))};o=requestAnimationFrame(c),g(()=>{o!==null&&cancelAnimationFrame(o)})}),n}function k(e){let t=O(()=>e.value);return y(()=>Math.round(t()).toLocaleString())}var A=b(`<span class=obs-metric__sub>`),j=b(`<span class=obs-metric__sub><span> <!>%</span> `),M=b(`<div class=obs>`),N=b(`<div class=empty-state style=color:var(--danger)>`),P=b(`<div class=empty-state>`),te=b(`<div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-circle-check obs-metric__icon"aria-hidden=true>`),F=b(`<span class=obs-metric__value>`),I=b(`<i class="fa-solid fa-arrow-right obs-card__go"aria-hidden=true>`),ne=b(`<div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-triangle-exclamation obs-metric__icon"aria-hidden=true>`),re=b(`<div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-ban obs-metric__icon"aria-hidden=true>`),ie=b(`<div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-spinner obs-metric__icon"aria-hidden=true>`),L=b(`<span class=obs-mono>`),R=b(`<span class=obs-stat__value>`),ae=b(`<i class="fa-solid fa-arrow-right"aria-hidden=true>`),oe=b(`<div class=obs-tablescroll><table><thead><tr><th>Name</th><th></th><th></th><th></th></tr></thead><tbody>`),se=b(`<div class=obs><div class=obs-metrics></div><div class="obs-card obs-panel"><div class=obs-panel__head><div><h2 class=obs-panel__title></h2><p class=obs-panel__sub></p></div><div class=obs-panel__controls><div class=obs-seg role=tablist aria-label="Time range"></div><div class=obs-legend><span><i class="dot dot--processed"></i> </span><span><i class="dot dot--failed"></i> </span></div></div></div><div class=obs-chartbox></div></div><div class=obs-stats></div><div class="obs-card obs-table"><div class=obs-table__head><h2 class=obs-table__title></h2></div></div><div class="obs-card obs-cta"><span class=obs-cta__icon><i class="fa-solid fa-bolt"aria-hidden=true></i></span><h2 class=obs-cta__title></h2><p class=obs-cta__text></p><div class=obs-cta__actions><a class="obs-btn obs-btn--primary"href=https://developerz-ai.github.io/wurk/ target=_blank rel=noreferrer><i class="fa-solid fa-download"aria-hidden=true></i> </a><a class="obs-btn obs-btn--ghost"href=https://github.com/developerz-ai/wurk/wiki target=_blank rel=noreferrer><i class="fa-solid fa-book"aria-hidden=true></i> `),z=b(`<button role=tab>`),B=b(`<div class=empty-state style=height:320px;display:grid;place-items:center>`),V=b(`<span class="obs-chip obs-chip--paused">`),H=b(`<tr><td style=font-weight:500;color:var(--obs-text)></td><td></td><td></td><td>`),U=b(`<span class="obs-chip obs-chip--active">`);function W(e,t){if(e.length<2)return null;let n=e[e.length-1].at,r=0,i=0;for(let a of e)a.at>n-3600?r+=a[t]:a.at>n-7200&&(i+=a[t]);return i===0?r===0?null:100:Math.round((r-i)/i*100)}var G=[{key:`1h`,bucket:`1m`,window:`24h`,slice:60,desc_key:`dashboard.range_1h_desc`},{key:`24h`,bucket:`1m`,window:`24h`,desc_key:`dashboard.range_24h_desc`},{key:`7d`,bucket:`5m`,window:`7d`,desc_key:`dashboard.range_7d_desc`},{key:`30d`,bucket:`1h`,window:`30d`,desc_key:`dashboard.range_30d_desc`}],K=(e,t)=>{let n=new Date(e*1e3),r=String(n.getHours()).padStart(2,`0`);return t===`1h`?`${n.getMonth()+1}/${n.getDate()} ${r}:00`:`${r}:${String(n.getMinutes()).padStart(2,`0`)}`};function q(n){return t(e,{get when(){return n.pct!==null},get fallback(){return(()=>{var e=A();return c(e,()=>v(`dashboard.vs_last_hour`)),e})()},get children(){return(()=>{let e=()=>n.pct>=0,t=()=>e()===n.goodWhenUp;return(()=>{var r=j(),i=r.firstChild,a=i.firstChild,o=a.nextSibling;return o.nextSibling,i.nextSibling,c(i,()=>e()?`▲`:`▼`,a),c(i,()=>e()?`+`:``,o),c(i,()=>n.pct,o),c(r,()=>v(`dashboard.vs_last_hour`),null),x(()=>p(i,t()?`up`:`down`)),r})()})()}})}function J(){let r=S(),[f,g]=s(0),b=()=>G[f()];n(()=>{document.title=`${v(`nav.dashboard`)} — Wurk`});let E=d(()=>({queryKey:[`stats`],queryFn:()=>fetch(`${u()}/api/stats`).then(e=>e.json()),enabled:!r.connected(),refetchInterval:!r.connected()&&5e3})),D=d(()=>({queryKey:[`history`,b().bucket,b().window],queryFn:()=>fetch(`${u()}/api/history/${b().bucket}?window=${b().window}`).then(e=>e.json()),refetchInterval:3e4})),O=()=>r.stats()??E.data??null,j=o(()=>(D.data?.series??[]).map(e=>({...e,label:K(e.at,b().bucket)}))),J=o(()=>{let e=b(),t=`slice`in e?e.slice:void 0;return t?j().slice(-t):j()}),Y=o(()=>J().some(e=>e.processed>0||e.failed>0));return t(i,{get children(){return[t(h,{get when(){return y(()=>!!E.isLoading)()&&!O()},get children(){var e=M();return c(e,t(_,{count:4}),null),c(e,t(m,{rows:6,cols:4}),null),e}}),t(h,{get when(){return y(()=>!!E.isError)()&&!O()},get children(){var e=N();return c(e,()=>v(`common.error`)),e}}),t(h,{get when(){return!O()},get children(){var e=P();return c(e,()=>v(`common.empty`)),e}}),t(h,{get when(){return O()},children:n=>(()=>{var r=se(),i=r.firstChild,o=i.nextSibling,s=o.firstChild,u=s.firstChild,d=u.firstChild,m=d.nextSibling,h=u.nextSibling.firstChild,_=h.nextSibling.firstChild;_.firstChild.nextSibling;var S=_.nextSibling;S.firstChild.nextSibling;var E=s.nextSibling,O=o.nextSibling,M=O.nextSibling,N=M.firstChild,K=N.firstChild,X=M.nextSibling.firstChild.nextSibling,Z=X.nextSibling,Q=Z.nextSibling.firstChild;Q.firstChild.nextSibling;var $=Q.nextSibling;return $.firstChild.nextSibling,c(i,t(C,{class:`obs-card obs-metric obs-card--link`,href:`/metrics`,get children(){return[(()=>{var e=te(),t=e.firstChild;return c(t,()=>v(`dashboard.processed`)),e})(),(()=>{var e=F();return c(e,t(k,{get value(){return n().processed}})),e})(),t(q,{get pct(){return W(j(),`processed`)},goodWhenUp:!0}),I()]}}),null),c(i,t(C,{class:`obs-card obs-metric obs-card--link`,href:`/retries`,get children(){return[(()=>{var e=ne(),t=e.firstChild;return c(t,()=>v(`dashboard.failed`)),e})(),(()=>{var e=F();return c(e,t(k,{get value(){return n().failed}})),e})(),t(q,{get pct(){return W(j(),`failed`)},goodWhenUp:!1}),I()]}}),null),c(i,t(C,{class:`obs-card obs-metric obs-card--link`,href:`/dead`,get children(){return[(()=>{var e=re(),t=e.firstChild;return c(t,()=>v(`dashboard.expired`)),e})(),(()=>{var e=F();return c(e,t(k,{get value(){return n().expired}})),e})(),(()=>{var e=A();return c(e,(()=>{var e=y(()=>n().expired===0);return()=>e()?v(`dashboard.stable_threshold`):v(`dashboard.above_threshold`)})()),e})(),I()]}}),null),c(i,t(C,{class:`obs-card obs-metric obs-card--link`,href:`/busy`,get children(){return[(()=>{var e=ie(),t=e.firstChild;return c(t,()=>v(`dashboard.busy`)),e})(),(()=>{var e=F();return c(e,t(k,{get value(){return n().busy}})),e})(),(()=>{var e=A();return c(e,(()=>{var e=y(()=>n().busy===0);return()=>e()?v(`dashboard.system_idle`):v(`dashboard.processing`)})()),e})(),I()]}}),null),c(d,()=>v(`dashboard.performance_insight`)),c(m,()=>v(`dashboard.perf_subtitle`,{range:v(b().desc_key)})),c(h,t(a,{each:G,children:(e,t)=>(()=>{var n=z();return n.$$click=()=>g(t()),c(n,()=>e.key),x(e=>{var r=t()===f(),i=t()===f()?`is-active`:``;return r!==e.e&&l(n,`aria-selected`,e.e=r),i!==e.t&&p(n,e.t=i),e},{e:void 0,t:void 0}),n})()})),c(_,()=>v(`dashboard.processed`),null),c(S,()=>v(`dashboard.failed`),null),c(E,t(e,{get when(){return!D.isPending},get fallback(){return t(ee,{height:320})},get children(){return t(e,{get when(){return Y()},get fallback(){return(()=>{var e=B();return c(e,()=>v(`dashboard.no_history`)),e})()},get children(){return t(T,{get data(){return J()},height:320,xMinTickGap:64,get series(){return[{key:`processed`,name:v(`dashboard.processed`),stroke:`#fafafa`,strokeWidth:2,fill:`gradient`},{key:`failed`,name:v(`dashboard.failed`),stroke:`#a1a1aa`,strokeWidth:1.5,strokeDasharray:`5 4`,fill:`none`}]}})}})}})),c(O,t(C,{class:`obs-card obs-stat obs-card--link`,href:`/queues`,get children(){return[(()=>{var e=L();return c(e,()=>v(`dashboard.enqueued`)),e})(),(()=>{var e=R();return c(e,t(k,{get value(){return n().enqueued}})),e})(),I()]}}),null),c(O,t(C,{class:`obs-card obs-stat obs-card--link`,href:`/retries`,get children(){return[(()=>{var e=L();return c(e,()=>v(`dashboard.retries`)),e})(),(()=>{var e=R();return c(e,t(k,{get value(){return n().retries}})),e})(),I()]}}),null),c(O,t(C,{class:`obs-card obs-stat obs-card--link`,href:`/scheduled`,get children(){return[(()=>{var e=L();return c(e,()=>v(`dashboard.scheduled`)),e})(),(()=>{var e=R();return c(e,t(k,{get value(){return n().scheduled}})),e})(),I()]}}),null),c(O,t(C,{class:`obs-card obs-stat obs-card--link`,href:`/dead`,get children(){return[(()=>{var e=L();return c(e,()=>v(`dashboard.dead`)),e})(),(()=>{var e=R();return c(e,t(k,{get value(){return n().dead}})),e})(),I()]}}),null),c(K,()=>v(`table.queues`)),c(N,t(C,{class:`obs-table__link`,href:`/queues`,get children(){return[`View All `,ae()]}}),null),c(M,t(e,{get when(){return n().queues.length>0},get fallback(){return(()=>{var e=P();return c(e,()=>v(`common.empty`)),e})()},get children(){var r=oe(),i=r.firstChild.firstChild,o=i.firstChild.firstChild.nextSibling,s=o.nextSibling,u=s.nextSibling,d=i.nextSibling;return c(o,()=>v(`table.size`)),c(s,()=>v(`table.latency`)),c(u,()=>v(`table.status`)),c(d,t(a,{get each(){return n().queues},children:n=>(()=>{var r=H(),i=r.firstChild,a=i.nextSibling,o=a.nextSibling,s=o.nextSibling;return c(i,()=>n.name),c(a,t(k,{get value(){return n.size}})),c(o,()=>w(n.latency)),c(s,t(e,{get when(){return n.paused},get fallback(){return(()=>{var e=U();return c(e,()=>v(`dashboard.active`)),e})()},get children(){var e=V();return c(e,()=>v(`dashboard.paused`)),e}})),x(()=>l(o,`title`,`${n.latency.toFixed(3)}s`)),r})()})),r}}),null),c(X,()=>v(`dashboard.strapline`)),c(Z,()=>v(`dashboard.tagline`)),c(Q,()=>v(`dashboard.install`),null),c($,()=>v(`dashboard.docs`),null),r})()})]}})}f([`click`]);export{J as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as e,F as t,L as n,V as r,_ as i,b as a,c as o,g as s,i as c,n as l,s as u,v as d,w as f,z as p}from"./Skeleton-DzR7XNxz.js";import{a as m,s as h}from"./index-DQu7WY9y.js";import{t as g}from"./PageHeader-C44KNMGm.js";var _=f(`<div class=empty-state style=color:var(--danger)>`),v=f(`<div class=skeleton-stack>`),y=f(`<div class="card ext-view">`),b=f(`<a class="btn btn-sm"target=_blank rel="noopener noreferrer"><i class="fa-solid fa-arrow-up-right-from-square"style=margin-inline-end:0.4rem>`),x=f(`<iframe style="width:100%;height:calc(100vh - 11rem);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)">`);function S(){let n=h(),r=()=>n.tab??``,i=m(),a=e=>e.replace(/\/+$/,``),o=()=>i.data?.custom_tabs?.find(e=>a(e.path)===a(r())),s=()=>o()?.name??r();return t(e,{get when(){return o()?.ext_name},keyed:!0,get fallback(){return t(w,{get tab(){return r()},get title(){return s()}})},children:e=>t(C,{extName:e,get indexPath(){return r()},get title(){return s()}})})}function C(a){let s=`${o()}/ext/${a.extName}/`,[f,m]=r(null),[h,b]=r(!1),x=0,S=async(e,t)=>{let n=++x;try{let r=await fetch(s+e,t),i=await r.text();if(n!==x)return;b(!r.ok&&r.status!==404),m(i)}catch{n===x&&b(!0)}};n(()=>{S(a.indexPath.replace(/\/+$/,``))});let C=e=>{let t=e.target.closest(`a`);if(!t?.getAttribute(`href`))return;let n=new URL(t.href,window.location.origin);n.origin!==window.location.origin||!n.pathname.startsWith(s)||(e.preventDefault(),S(n.pathname.slice(s.length)+n.search))},w=e=>{let t=e.target,n=new URL(t.getAttribute(`action`)||window.location.href,window.location.origin);if(n.origin!==window.location.origin||!n.pathname.startsWith(s))return;e.preventDefault();let r=new FormData(t);if((t.method||`get`).toUpperCase()===`GET`){let e=new URLSearchParams(Array.from(r.entries())).toString();S(`${n.pathname.slice(s.length)}${e?`?${e}`:``}`)}else S(n.pathname.slice(s.length)+n.search,{method:`POST`,body:r})};return[t(g,{icon:`fa-puzzle-piece`,get title(){return a.title},get summary(){return u(`extension.summary`)}}),t(e,{get when(){return h()},get children(){var e=_();return i(e,()=>u(`common.error`)),e}}),t(e,{get when(){return d(()=>f()===null)()&&!h()},get children(){var e=v();return i(e,t(l,{height:`1.5rem`,width:`40%`}),null),i(e,t(c,{rows:6,cols:4}),null),e}}),t(e,{get when(){return d(()=>f()!==null)()&&!h()},get children(){var e=y();return e.addEventListener(`submit`,w),e.$$click=C,p(()=>e.innerHTML=f()),e}})]}function w(e){let n=()=>`${o()}/${e.tab}?wurk_ext_embed=1`;return[t(g,{icon:`fa-puzzle-piece`,get title(){return e.title},get summary(){return u(`extension.summary`)},get children(){var t=b();return t.firstChild,i(t,()=>u(`extension.open`),null),p(()=>a(t,`href`,`${o()}/${e.tab}`)),t}}),(()=>{var t=x();return p(r=>{var i=e.title,o=n();return i!==r.e&&a(t,`title`,r.e=i),o!==r.t&&a(t,`src`,r.t=o),r},{e:void 0,t:void 0}),t})()]}s([`click`]);export{S as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as e,F as t,J as n,O as r,R as i,V as a,_ as o,b as s,c,f as l,g as u,h as ee,n as d,s as f,v as p,w as m,x as h,z as g}from"./Skeleton-DzR7XNxz.js";import{n as te,o as ne}from"./utils-DDJC7tJV.js";import{t as _}from"./Modal-Crrsu64-.js";import{n as v,r as re,t as ie}from"./charts-BVHHGof7.js";var y=m(`<span style=font-size:12px;margin-inline-start:8px>%`),b=m(`<div role=status>`),ae=m(`<div class=obs-tablescroll><table><thead><tr><th></th><th style=text-align:end></th><th style=text-align:end></th></tr></thead><tbody>`),oe=m(`<div class=obs><div class=obs-toolbar><span class=obs-toolbar__label><i class="fa-regular fa-calendar"aria-hidden=true></i> </span><div class=obs-seg role=tablist></div></div><div class=obs-metrics><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-circle-check obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-triangle-exclamation obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-stopwatch obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-gears obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div></div><div class="obs-card obs-panel"><div class=obs-panel__head><div><h2 class=obs-panel__title></h2><p class=obs-panel__sub></p></div><div class=obs-legend><span><i class="dot dot--processed"></i> </span><span><i class="dot dot--failed"></i> </span></div></div><div class=obs-chartbox></div></div><div class=obs-grid2><div class="obs-card obs-panel"><div class=obs-panel__head><h2 class=obs-panel__title style=font-size:18px></h2><span class=obs-mono></span></div><div class=obs-chartbox></div></div><div class="obs-card obs-table"><div class=obs-table__head><h2 class=obs-table__title style=font-size:18px>`),se=m(`<button role=tab>`),ce=m(`<div class=empty-state style=height:300px;display:grid;place-items:center>`),x=m(`<div class=empty-state style=height:240px;display:grid;place-items:center>`),le=m(`<div class=obs-empty>`),ue=m(`<tr><td style=color:var(--obs-text)><button type=button class=obs-jobbtn><span class=obs-jobdot></span></button></td><td style=text-align:end;font-variant-numeric:tabular-nums></td><td class=obs-pct style=text-align:end>%`),S=m(`<div style=display:flex;gap:1.5rem;margin-bottom:1rem><div><div class=obs-mono></div><div style=font-size:18px;font-weight:600></div></div><div><div class=obs-mono></div><div style=font-size:18px;font-weight:600;color:var(--danger)>`),C=m(`<div class="obs-card obs-panel"><div class=obs-panel__head><h2 class=obs-panel__title style=font-size:18px></h2></div><div class=obs-chartbox>`),w=[`var(--accent)`,`#e0b341`,`#46b3a8`,`#d4737e`,`#8a7fd1`,`#5fa8d3`,`#c08457`,`#7bb274`],T=e=>w[e%w.length],de=[`#fafafa`,`#d4d4d8`,`#a1a1aa`,`#71717a`,`#52525b`,`#3f3f46`],E=[{key:`1h`,bucket:`1m`,window:`24h`,slice:60,minutes:60},{key:`24h`,bucket:`1m`,window:`24h`,minutes:1440},{key:`7d`,bucket:`5m`,window:`7d`,minutes:10080},{key:`30d`,bucket:`1h`,window:`30d`,minutes:720*60}],D=(e,t)=>{let n=new Date(e*1e3),r=String(n.getHours()).padStart(2,`0`);return t===`1h`?`${n.getMonth()+1}/${n.getDate()} ${r}:00`:`${r}:${String(n.getMinutes()).padStart(2,`0`)}`};function O(e,t){if(e.length<2)return null;let n=e[e.length-1].at,r=0,i=0;for(let a of e)a.at>n-3600?r+=a[t]:a.at>n-7200&&(i+=a[t]);return i===0?r===0?null:100:Math.round((r-i)/i*100)}function k(n){return t(e,{get when(){return n.pct!==null},get children(){return(()=>{let e=()=>n.pct>=0,t=()=>e()===n.goodWhenUp;return(()=>{var r=y(),i=r.firstChild;return o(r,()=>e()?`↑`:`↓`,i),o(r,()=>Math.abs(n.pct),i),g(e=>h(r,`color`,t()?`var(--success)`:`var(--danger)`)),r})()})()}})}var A=(e,t)=>{if(t<=0)return[];if(e.length<=t)return e;if(t===1)return[e[e.length-1]];let n=(e.length-1)/(t-1);return Array.from({length:t},(t,r)=>e[Math.round(r*n)])};function j(e){return(()=>{var n=b();return o(n,t(d,{height:`100%`})),g(t=>{var r=`${e.height}px`,i=f(`common.loading`);return r!==t.e&&h(n,`height`,t.e=r),i!==t.t&&s(n,`aria-label`,t.t=i),t},{e:void 0,t:void 0}),n})()}function M(){let[u,d]=a(2),[m,_]=a(null),v=()=>E[u()];n(()=>{document.title=`${f(`nav.metrics`)} — Wurk`});let y=l(()=>({queryKey:[`stats`],queryFn:()=>fetch(`${c()}/api/stats`).then(e=>e.json()),refetchInterval:5e3})),b=l(()=>({queryKey:[`history`,v().bucket,v().window],queryFn:()=>fetch(`${c()}/api/history/${v().bucket}?window=${v().window}`).then(e=>e.json()),refetchInterval:3e4})),S=l(()=>({queryKey:[`metrics`,v().minutes],queryFn:()=>fetch(`${c()}/api/metrics?minutes=${v().minutes}`).then(e=>e.json()),refetchInterval:3e4})),C=l(()=>({queryKey:[`queue-history`,v().bucket,v().window],queryFn:async()=>{let e=await fetch(`${c()}/api/queue-history/${v().bucket}?window=${v().window}`);if(!e.ok)throw Error(`queue-history failed (${e.status})`);return e.json()},refetchInterval:3e4})),w=i(()=>(b.data?.series??[]).map(e=>({...e,label:D(e.at,v().bucket)}))),T=i(()=>{let e=v(),t=`slice`in e?e.slice:void 0;return t?w().slice(-t):w()}),M=i(()=>T().some(e=>e.processed>0||e.failed>0)),N=i(()=>C.data?.queues??[]),P=i(()=>N()[0]?.points.map(e=>e.at)??[]),F=i(()=>A(P().map((e,t)=>({label:D(e,v().bucket),depth:N().reduce((e,n)=>e+(n.points[t]?.size??0),0)})),16)),I=i(()=>Math.max(0,...F().map(e=>e.depth))),L=i(()=>(S.data?.top_jobs??[]).map(e=>({klass:e.klass,count:e.processed+e.failed})).sort((e,t)=>t.count-e.count)),R=i(()=>L().reduce((e,t)=>e+t.count,0)),z=i(()=>L().slice(0,6));return(()=>{var n=oe(),i=n.firstChild,a=i.firstChild;a.firstChild.nextSibling;var c=a.nextSibling,l=i.nextSibling,D=l.firstChild,A=D.firstChild,N=A.firstChild,P=A.nextSibling,L=P.nextSibling,B=D.nextSibling,V=B.firstChild,he=V.firstChild,H=V.nextSibling,ge=H.nextSibling,U=B.nextSibling,W=U.firstChild,_e=W.firstChild,G=W.nextSibling,ve=G.nextSibling,K=U.nextSibling.firstChild,ye=K.firstChild,q=K.nextSibling,be=q.nextSibling,J=l.nextSibling,Y=J.firstChild,X=Y.firstChild,Z=X.firstChild,xe=Z.nextSibling,Q=X.nextSibling.firstChild;Q.firstChild.nextSibling;var Se=Q.nextSibling;Se.firstChild.nextSibling;var Ce=Y.nextSibling,$=J.nextSibling.firstChild,we=$.firstChild,Te=we.firstChild,Ee=Te.nextSibling,De=we.nextSibling,Oe=$.nextSibling,ke=Oe.firstChild.firstChild;return o(a,()=>f(`metrics.time_range`),null),o(c,t(r,{each:E,children:(e,t)=>(()=>{var n=se();return n.$$click=()=>d(t()),o(n,()=>e.key),g(e=>{var r=t()===u(),i=t()===u()?`is-active`:``;return r!==e.e&&s(n,`aria-selected`,e.e=r),i!==e.t&&ee(n,e.t=i),e},{e:void 0,t:void 0}),n})()})),o(N,()=>f(`metrics.total_processed`)),o(P,()=>(y.data?.processed??0).toLocaleString(),null),o(P,t(k,{get pct(){return O(w(),`processed`)},goodWhenUp:!0}),null),o(L,()=>f(`metrics.across_all_queues`)),o(he,()=>f(`metrics.failed_jobs`)),o(H,()=>(y.data?.failed??0).toLocaleString(),null),o(H,t(k,{get pct(){return O(w(),`failed`)},goodWhenUp:!1}),null),o(ge,()=>f(`metrics.total_failures`)),o(_e,()=>f(`metrics.avg_latency`)),o(G,(()=>{var e=p(()=>!!y.data);return()=>e()?te(y.data.latency):`—`})()),o(ve,()=>f(`metrics.head_of_line`)),o(ye,()=>f(`metrics.active_workers`)),o(q,()=>(y.data?.processes??0).toLocaleString()),o(be,(()=>{var e=p(()=>(y.data?.processes??0)>0);return()=>e()?f(`metrics.stable`):f(`metrics.no_workers`)})()),o(Z,()=>f(`metrics.throughput_failures`)),o(xe,()=>f(`metrics.throughput_sub`,{range:v().key})),o(Q,()=>f(`dashboard.processed`),null),o(Se,()=>f(`dashboard.failed`),null),o(Ce,t(e,{get when(){return!b.isPending},get fallback(){return t(j,{height:300})},get children(){return t(e,{get when(){return M()},get fallback(){return(()=>{var e=ce();return o(e,()=>f(`dashboard.no_history`)),e})()},get children(){return t(re,{get data(){return T()},height:300,yAxisWidth:36,yDecimals:!1,xMinTickGap:56,get series(){return[{key:`processed`,name:f(`dashboard.processed`),stroke:`#fafafa`,strokeWidth:2,fill:`gradient`},{key:`failed`,name:f(`dashboard.failed`),stroke:`#a1a1aa`,strokeWidth:1.5,strokeDasharray:`5 4`,fill:`none`}]}})}})}})),o(Te,()=>f(`metrics.queue_depth`)),o(Ee,(()=>{var e=p(()=>I()>0);return()=>e()?f(`metrics.peak`,{n:I().toLocaleString()}):``})()),o(De,t(e,{get when(){return!C.isPending},get fallback(){return t(j,{height:240})},get children(){return t(e,{get when(){return F().length>0},get fallback(){return(()=>{var e=x();return o(e,()=>f(`metrics.no_queue_history`)),e})()},get children(){return t(ie,{get data(){return F().map(e=>({label:e.label,value:e.depth,color:e.depth===I()&&I()>0?`#fafafa`:`#3f3f46`}))},height:240,get name(){return f(`metrics.queue_depth`)},yAxisWidth:36,yDecimals:!1,xMinTickGap:40})}})}})),o(ke,()=>f(`metrics.top_job_types`)),o(Oe,t(e,{get when(){return!S.isPending},get fallback(){return t(j,{height:240})},get children(){return t(e,{get when(){return z().length>0},get fallback(){return(()=>{var e=le();return o(e,()=>f(`common.empty`)),e})()},get children(){var e=ae(),n=e.firstChild.firstChild,i=n.firstChild.firstChild,a=i.nextSibling,c=a.nextSibling,l=n.nextSibling;return o(i,()=>f(`metrics.job_class`)),o(a,()=>f(`table.count`)),o(c,()=>f(`metrics.pct_total`)),o(l,t(r,{get each(){return z()},children:(e,t)=>(()=>{var n=ue(),r=n.firstChild,i=r.firstChild,a=i.firstChild,c=r.nextSibling,l=c.nextSibling,u=l.firstChild;return i.$$click=()=>_(e.klass),o(i,()=>ne(e.klass.split(`::`).pop()??e.klass,36),null),o(c,()=>e.count.toLocaleString()),o(l,(()=>{var t=p(()=>R()>0);return()=>t()?Math.round(e.count/R()*100):0})(),u),g(n=>{var o=e.klass,c=f(`metrics.view_job_detail`),l=de[t()%de.length];return o!==n.e&&s(r,`title`,n.e=o),c!==n.t&&s(i,`title`,n.t=c),l!==n.a&&h(a,`background`,n.a=l),n},{e:void 0,t:void 0,a:void 0}),n})()})),e}})}}),null),o(n,t(pe,{get range(){return v()}}),null),o(n,t(me,{}),null),o(n,t(fe,{get klass(){return m()},get minutes(){return v().minutes},onClose:()=>_(null)}),null),g(()=>s(c,`aria-label`,f(`metrics.time_range`))),n})()}function fe(n){let r=l(()=>({queryKey:[`metrics-job`,n.klass,n.minutes],queryFn:async()=>{let e=await fetch(`${c()}/api/metrics/${encodeURIComponent(n.klass)}?minutes=${n.minutes}`);if(!e.ok)throw Error(`metrics-job failed (${e.status})`);return e.json()},enabled:n.klass!==null})),a=i(()=>(r.data?.series??[]).map(e=>({label:D(e.at,`1m`),processed:e.p,failed:e.f,runtime_ms:e.ms}))),s=i(()=>a().some(e=>e.processed>0||e.failed>0)),u=i(()=>a().reduce((e,t)=>({processed:e.processed+t.processed,failed:e.failed+t.failed}),{processed:0,failed:0}));return t(_,{get open(){return n.klass!==null},get onClose(){return n.onClose},get title(){return n.klass??``},width:720,get children(){return t(e,{get when(){return n.klass},get children(){return[(()=>{var e=S(),t=e.firstChild,n=t.firstChild,r=n.nextSibling,i=t.nextSibling.firstChild,a=i.nextSibling;return o(n,()=>f(`dashboard.processed`)),o(r,()=>u().processed.toLocaleString()),o(i,()=>f(`dashboard.failed`)),o(a,()=>u().failed.toLocaleString()),e})(),t(e,{get when(){return!r.isPending},get fallback(){return t(j,{height:240})},get children(){return t(e,{get when(){return!r.isError},get fallback(){return(()=>{var e=x();return o(e,()=>f(`common.error`)),e})()},get children(){return t(e,{get when(){return s()},get fallback(){return(()=>{var e=x();return o(e,()=>f(`dashboard.no_history`)),e})()},get children(){return t(v,{get data(){return a()},height:240,yAxisWidth:36,yDecimals:!1,xMinTickGap:48,legend:!0,get series(){return[{key:`processed`,name:f(`dashboard.processed`),stroke:`#fafafa`,strokeWidth:2},{key:`failed`,name:f(`dashboard.failed`),stroke:`#a1a1aa`,strokeWidth:1.5}]}})}})}})}})]}})}})}function pe(n){let r=l(()=>({queryKey:[`queue-history-lat`,n.range.bucket,n.range.window],queryFn:async()=>{let e=await fetch(`${c()}/api/queue-history/${n.range.bucket}?window=${n.range.window}`);if(!e.ok)throw Error(`queue-history failed (${e.status})`);return e.json()},refetchInterval:3e4})),a=i(()=>r.data?.queues??[]),s=i(()=>a().map((e,t)=>({key:`queue_${t}`,name:e.name}))),u=i(()=>a()[0]?.points.map(e=>e.at)??[]),ee=i(()=>u().map((e,t)=>{let r={label:D(e,n.range.bucket)};return a().forEach((e,n)=>{r[s()[n].key]=e.points[t]?.latency??0}),r})),d=i(()=>s().map((e,t)=>({key:e.key,name:e.name,stroke:T(t),strokeWidth:2}))),p=i(()=>a().some(e=>e.points.some(e=>e.latency>0)));return t(e,{get when(){return p()},get children(){var e=C(),n=e.firstChild,r=n.firstChild,i=n.nextSibling;return o(r,()=>f(`metrics.queue_latency_seconds`)),o(i,t(v,{get data(){return ee()},get series(){return d()},height:240,legend:!0,yAxisWidth:40,xMinTickGap:48})),e}})}var N=new Set([`processed`,`failures`]);function me(){let n=l(()=>({queryKey:[`history-snapshots`],queryFn:async()=>{let e=await fetch(`${c()}/api/history/snapshots?limit=1000`);if(!e.ok)throw Error(`history snapshots request failed (${e.status})`);return e.json()},refetchInterval:3e4})),r=i(()=>n.data?.snapshots??[]),a=i(()=>Array.from(new Set(r().flatMap(e=>Object.keys(e).filter(t=>t!==`at`&&!N.has(t)&&typeof e[t]==`number`))))),s=i(()=>r().map(e=>{let t=new Date(e.at*1e3),n={label:`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`};for(let t of Object.keys(e))n[t]=e[t];return n})),u=i(()=>a().map((e,t)=>({key:e,name:e,stroke:T(t),strokeWidth:2})));return t(e,{get when(){return p(()=>r().length>0)()&&a().length>0},get children(){var e=C(),n=e.firstChild,r=n.firstChild,i=n.nextSibling;return o(r,()=>f(`metrics.historical_snapshots`)),o(i,t(v,{get data(){return s()},get series(){return u()},height:240,legend:!0,yAxisWidth:40,yDecimals:!1,xMinTickGap:48})),e}})}u([`click`]);export{M as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as e,F as t,J as n,L as r,T as i,V as a,_ as o,b as s,g as c,q as l,w as u,x as d,z as f}from"./Skeleton-DzR7XNxz.js";var p=u(`<div class=modal-footer>`),m=u(`<dialog class=modal><div class=modal-panel><div class=modal-header><h2 class=modal-title></h2><button class=modal-close aria-label=Close><i class="fa-solid fa-xmark"></i></button></div><div class=modal-body>`);function h(c){let u,h=`modal-title-${Math.random().toString(36).slice(2)}`,[g,_]=a({title:c.title,children:c.children});r(()=>{c.open&&_({title:c.title,children:c.children})});let v=()=>c.open?{title:c.title,children:c.children}:g();return r(()=>{c.open&&!u.open?u.showModal():!c.open&&u.open&&u.close()}),n(()=>{let e=e=>{e.preventDefault(),c.onClose()};u.addEventListener(`cancel`,e),l(()=>u.removeEventListener(`cancel`,e))}),(()=>{var n=m(),r=n.firstChild,a=r.firstChild,l=a.firstChild,g=l.nextSibling,_=a.nextSibling;n.$$click=e=>{e.target===u&&c.onClose()};var y=u;return typeof y==`function`?i(y,n):u=n,s(n,`aria-labelledby`,h),s(l,`id`,h),o(l,()=>v().title),g.$$click=()=>c.onClose(),o(_,()=>v().children),o(r,t(e,{get when(){return c.footer},get children(){var e=p();return o(e,()=>c.footer),e}}),null),f(e=>d(r,`max-width`,`${c.width??640}px`)),n})()}c([`click`]);export{h as t};
|