wurk 1.0.7 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/controllers/wurk/api/serializers.rb +1 -1
  4. data/app/controllers/wurk/api_controller.rb +2 -1
  5. data/app/controllers/wurk/extensions_controller.rb +1 -1
  6. data/config/routes.rb +1 -1
  7. data/lib/wurk/version.rb +1 -1
  8. data/lib/wurk/web/extension.rb +1 -1
  9. data/vendor/assets/dashboard/assets/ArgsValue-BUqJa-eG.js +1 -0
  10. data/vendor/assets/dashboard/assets/BatchDetail-C5dkqAzp.js +1 -0
  11. data/vendor/assets/dashboard/assets/Batches-bgkXn8tc.js +1 -0
  12. data/vendor/assets/dashboard/assets/Busy-QSHBFXhy.js +1 -0
  13. data/vendor/assets/dashboard/assets/Cron-CUHppvTA.js +1 -0
  14. data/vendor/assets/dashboard/assets/Dashboard-CzPudckV.js +1 -0
  15. data/vendor/assets/dashboard/assets/Dead-BIq4Nz_i.js +1 -0
  16. data/vendor/assets/dashboard/assets/Extension-CW36i9R1.js +1 -0
  17. data/vendor/assets/dashboard/assets/JobDetailModal-BhNdWSp7.js +2 -0
  18. data/vendor/assets/dashboard/assets/Limiters-CiI_DfUK.js +1 -0
  19. data/vendor/assets/dashboard/assets/Metrics-BzZ8ugms.js +1 -0
  20. data/vendor/assets/dashboard/assets/Modal-DzVfgsSF.js +1 -0
  21. data/vendor/assets/dashboard/assets/PageHeader-Dp3qhX3e.js +1 -0
  22. data/vendor/assets/dashboard/assets/Profiles-BTtIlTdR.js +1 -0
  23. data/vendor/assets/dashboard/assets/Queues-BuXoxQ4W.js +1 -0
  24. data/vendor/assets/dashboard/assets/Retries-D4HAPaOQ.js +1 -0
  25. data/vendor/assets/dashboard/assets/Scheduled-6NCZYVJh.js +1 -0
  26. data/vendor/assets/dashboard/assets/Search-JaB_-52c.js +1 -0
  27. data/vendor/assets/dashboard/assets/charts-6uvCyY0x.js +1 -0
  28. data/vendor/assets/dashboard/assets/i18n-gIeA5VLo.js +1 -0
  29. data/vendor/assets/dashboard/assets/index-BDG9tvBA.css +1 -0
  30. data/vendor/assets/dashboard/assets/index-DWfWAGBc.js +141 -0
  31. data/vendor/assets/dashboard/assets/useJobSetActions-DTDaAoWr.js +1 -0
  32. data/vendor/assets/dashboard/assets/usePageParam-BcAvRko-.js +1 -0
  33. data/vendor/assets/dashboard/assets/useSort-D5Am4bGq.js +1 -0
  34. data/vendor/assets/dashboard/index.html +3 -2
  35. data/vendor/assets/dashboard/wurk-manifest.json +2 -2
  36. metadata +27 -27
  37. data/vendor/assets/dashboard/assets/AreaChart-BrEBs9bV.js +0 -53
  38. data/vendor/assets/dashboard/assets/ArgsValue-CiJzEwxS.js +0 -1
  39. data/vendor/assets/dashboard/assets/BatchDetail-Cu1LFfNV.js +0 -1
  40. data/vendor/assets/dashboard/assets/Batches-pf4zKSuU.js +0 -1
  41. data/vendor/assets/dashboard/assets/Busy-Lv6K2ZkR.js +0 -1
  42. data/vendor/assets/dashboard/assets/Cron-BcnQ2Kev.js +0 -1
  43. data/vendor/assets/dashboard/assets/Dashboard-DMO-cH6d.js +0 -1
  44. data/vendor/assets/dashboard/assets/Dead-o9K-1fo2.js +0 -1
  45. data/vendor/assets/dashboard/assets/Extension-MTUtXQuK.js +0 -1
  46. data/vendor/assets/dashboard/assets/JobDetailModal-DKYvp6QS.js +0 -2
  47. data/vendor/assets/dashboard/assets/Limiters-Bv9WgiHP.js +0 -1
  48. data/vendor/assets/dashboard/assets/Metrics-DnAsLwWl.js +0 -7
  49. data/vendor/assets/dashboard/assets/Modal-CvD-1IKA.js +0 -1
  50. data/vendor/assets/dashboard/assets/PageHeader-B-0cTQeM.js +0 -1
  51. data/vendor/assets/dashboard/assets/Profiles-S_WCoS6S.js +0 -1
  52. data/vendor/assets/dashboard/assets/Queues-B6qQmaoY.js +0 -1
  53. data/vendor/assets/dashboard/assets/Retries-BagJsqI0.js +0 -1
  54. data/vendor/assets/dashboard/assets/Scheduled-DPzzoJkC.js +0 -1
  55. data/vendor/assets/dashboard/assets/Search-jWG793ku.js +0 -1
  56. data/vendor/assets/dashboard/assets/index-DcfzJOIq.js +0 -126
  57. data/vendor/assets/dashboard/assets/index-DdkkU3x4.css +0 -1
  58. data/vendor/assets/dashboard/assets/useJobSetActions-BCW6DHSe.js +0 -1
  59. data/vendor/assets/dashboard/assets/useMutation-NUbe15ar.js +0 -1
  60. data/vendor/assets/dashboard/assets/usePageParam-BDV1DCDQ.js +0 -1
  61. data/vendor/assets/dashboard/assets/useSort-BPPxnBBo.js +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ab301a0e5b620bb3045d471b6f7558e972490f3298e9c2a6526ccd68935cf21
4
- data.tar.gz: 7c06d2874cbd5d83beaa79299c376fb0693584d98907ba3707f28e0ed38346b3
3
+ metadata.gz: d6d1517377dd46c320f3e03fc705dd4877530c948a51c525a375aa6caacfe964
4
+ data.tar.gz: aa4e80a91da88be21978b22a776f79bd5fb89d6c793cd7826f4e9292041071ea
5
5
  SHA512:
6
- metadata.gz: 511b4a6d7897b8ca89fc5bf0320bcc3ee3f19562b07f711495440f20888e44766fe81bae76bfd9a2991beaf9d47c72cf63246179da79d038234c882943ca9ae1
7
- data.tar.gz: 468c9e134dfafd8a44fcaef5472a88444fa06101df8f00745d5b48de206b3dcaeb305b5b0ca6c90ecf292805d5df80e2ae047368c196edb9a85d9f5e15f29c04
6
+ metadata.gz: 35c6371f7561bbd62340002b9bf9850abaf79745b8e330ce7a6fe06cd265cc564ab65a47d279e7b0cfe0f9f058758f0e31af0d3ed1ec5e1ee449fbdf9a7e5506
7
+ data.tar.gz: 7694620688b95769ed0713e827cd1c9c6b78372d0e735eee4c3244835ccc19c7a0be1be18bfc0d42bcc364e449176d423455242a9f7cfe6522b578b75045f3f4
data/README.md CHANGED
@@ -49,7 +49,7 @@ Everything below is in the one free gem. The "Sidekiq tier" column is only there
49
49
  | **Limiters** | Concurrent, bucket, window, leaky, and points rate limiters via `Sidekiq::Limiter` | Enterprise |
50
50
  | **Periodic** | Cron/periodic jobs, leader-elected so each tick fires exactly once across the cluster | Enterprise |
51
51
  | **Encryption** | Transparent AES-256-GCM job-argument encryption with zero-downtime key rotation | Enterprise |
52
- | **Dashboard** | Mountable Rails engine, precompiled React SPA (no Node needed), live SSE, charts, host-app auth hook | OSS + Pro/Ent |
52
+ | **Dashboard** | Mountable Rails engine, precompiled SolidJS SPA (no Node needed), live SSE, charts, host-app auth hook | OSS + Pro/Ent |
53
53
 
54
54
  Plus Wurk extras: a worker topology DSL, a Kubernetes liveness/readiness listener, and opt-in AI dashboard panes (anomaly detection, NL queries, backlog forecasting).
55
55
 
@@ -9,7 +9,7 @@ module Wurk
9
9
  module Serializers
10
10
  module_function
11
11
 
12
- # Wire-shape consumed by the React dashboard's landing page + SSE feed.
12
+ # Wire-shape consumed by the SolidJS dashboard's landing page + SSE feed.
13
13
  # Field names match the SPA's `StatsSnapshot` interface in
14
14
  # frontend/src/hooks/useSSE.ts — keep them in sync. The canonical
15
15
  # Sidekiq-compatible accessors on Wurk::Stats use `_size` suffixes;
@@ -5,7 +5,7 @@ require_relative 'api/pagination'
5
5
  require 'wurk/web'
6
6
 
7
7
  module Wurk
8
- # JSON APIs consumed by the React SPA. Action methods stay thin; mapping to
8
+ # JSON APIs consumed by the SolidJS SPA. Action methods stay thin; mapping to
9
9
  # the wire shape lives in `Wurk::Api::Serializers`, and pagination lives in
10
10
  # `Wurk::Api::Pagination`. SSE lives in #stream.
11
11
  #
@@ -44,6 +44,7 @@ module Wurk
44
44
  def meta
45
45
  config = ::Wurk::Web.config
46
46
  render json: {
47
+ version: ::Wurk::VERSION,
47
48
  read_only: config.read_only? || !mutations_authorized?(config),
48
49
  read_only_message: config.read_only_message,
49
50
  custom_tabs: config.custom_tabs
@@ -23,7 +23,7 @@ module Wurk
23
23
  name: params[:name], method: request.request_method,
24
24
  subpath: "/#{params[:subpath]}", env: request.env, mount: request.script_name
25
25
  )
26
- return index unless result # not an extension → SPA client route; let React handle it
26
+ return index unless result # not an extension → SPA client route; let the SolidJS router handle it
27
27
 
28
28
  respond_with(result)
29
29
  end
data/config/routes.rb CHANGED
@@ -82,6 +82,6 @@ Wurk::Engine.routes.draw do
82
82
  get 'ext-assets/:name/*file', to: 'extensions#asset', as: :extension_asset,
83
83
  format: false, constraints: { name: %r{[^/]+} }
84
84
 
85
- # SPA catch-all — let React Router handle the rest.
85
+ # SPA catch-all — let the SolidJS router handle the rest.
86
86
  get '*path', to: 'dashboard#index', constraints: ->(req) { req.format == :html }
87
87
  end
data/lib/wurk/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Wurk
4
- VERSION = "1.0.7"
4
+ VERSION = "1.1.0"
5
5
  end
@@ -11,7 +11,7 @@ module Wurk
11
11
  # Sidekiq extensions register Sinatra-style routes + ERB views via
12
12
  # `Sidekiq::Web.register(Ext, name:, tab:, index:, root_dir:, asset_paths:)`,
13
13
  # where `Ext.registered(app)` calls `app.get "/path" do … end` and
14
- # `app.helpers SomeModule`. wurk's dashboard is a React SPA with no Sinatra
14
+ # `app.helpers SomeModule`. wurk's dashboard is a SolidJS SPA with no Sinatra
15
15
  # render path, so this module provides a minimal, Sidekiq-Web-compatible
16
16
  # renderer: it captures the routes, runs the matched block in an `Action`
17
17
  # context (a `WebHelpers` subset + the ext's own helpers + `erb`), and
@@ -0,0 +1 @@
1
+ import{E as e,F as t,f as n,h as r,j as i,p as a,y as o}from"./i18n-gIeA5VLo.js";import{o as s}from"./utils-DDJC7tJV.js";var c=o(`<span>`),l=o(`<span style=color:var(--text-muted)>—`);function u(o){return i(e,{get when(){return a(()=>o.str!==`[]`)()&&o.str!==``},get fallback(){return l()},get children(){var e=c();return n(e,()=>s(o.str,o.max)),t(()=>r(e,`title`,o.str)),e}})}export{u as t};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,O as n,T as r,W as i,f as a,j as o,p as s,r as c,s as l,y as u}from"./i18n-gIeA5VLo.js";import{a as d,n as f,o as p}from"./index-DWfWAGBc.js";import{a as m}from"./utils-DDJC7tJV.js";var h=u(`<div style=display:flex;flex-direction:column;gap:2px><span style=font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.04em></span><span style=font-variant-numeric:tabular-nums>`),g=u(`<div style=margin-top:1.5rem><h2 style="font-size:14px;margin:0 0 0.5rem"> <span class="badge badge-muted"></span></h2><div class=table-wrapper><table><tbody>`),_=u(`<tr><td style=font-family:monospace;font-size:12px>`),v=u(`<div><div class=section-header style=gap:0.75rem></div><div style=margin-top:1rem>`),y=u(`<div class=empty-state style=color:var(--danger)>`),b=u(`<span class="badge badge-success">complete`),x=u(`<span class="badge badge-danger">invalidated`),S=u(`<p style=color:var(--text-muted);margin-top:0>`),C=u(`<div><div class=section-header style=gap:0.75rem><h1 class=page-title style=margin:0;font-family:monospace;font-size:16px></h1></div><div style="display:grid;grid-template-columns:repeat(auto-fill, minmax(140px, 1fr));gap:1rem;margin-top:1rem">`),w=u(`<span class="badge badge-accent">%`);function T(e){return(()=>{var t=h(),n=t.firstChild,r=n.nextSibling;return a(n,()=>e.label),a(r,()=>e.children),t})()}function E(n){return o(t,{get when(){return n.jids.length>0},get children(){var t=g(),r=t.firstChild,i=r.firstChild,s=i.nextSibling,c=r.nextSibling.firstChild.firstChild;return a(r,()=>n.label,i),a(s,()=>n.jids.length),a(c,o(e,{get each(){return n.jids},children:e=>(()=>{var t=_(),n=t.firstChild;return a(n,e),t})()})),t}})}function D(){let e=p(),u=()=>e.bid??``;i(()=>{document.title=`${c(`nav.batches`)} — Wurk`});let h=l(()=>({queryKey:[`batch`,u()],queryFn:()=>fetch(`/wurk/api/batches/${encodeURIComponent(u())}`).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.json()})}));return o(n,{get children(){return[o(r,{get when(){return h.isPending},get children(){var e=v(),t=e.firstChild,n=t.nextSibling;return a(t,o(d,{href:`/batches`,class:`btn btn-sm`,get children(){return[`← `,s(()=>c(`nav.batches`))]}})),a(n,o(f,{count:8})),e}}),o(r,{get when(){return h.isError||!h.data},get children(){var e=y();return a(e,()=>c(`common.error`)),e}}),o(r,{get when(){return h.data},children:e=>{let n=()=>e().total-e().pending,r=()=>e().total>0?Math.round(n()/e().total*100):0;return(()=>{var n=C(),i=n.firstChild,l=i.firstChild,u=i.nextSibling;return a(i,o(d,{href:`/batches`,class:`btn btn-sm`,get children(){return[`← `,s(()=>c(`nav.batches`))]}}),l),a(l,()=>e().bid),a(i,o(t,{get when(){return e().complete},get fallback(){return(()=>{var e=w(),t=e.firstChild;return a(e,r,t),e})()},get children(){return b()}}),null),a(i,o(t,{get when(){return e().invalidated},get children(){return x()}}),null),a(n,o(t,{get when(){return e().description},get children(){var t=S();return a(t,()=>e().description),t}}),u),a(u,o(T,{label:`Total`,get children(){return e().total.toLocaleString()}}),null),a(u,o(T,{label:`Pending`,get children(){return e().pending.toLocaleString()}}),null),a(u,o(T,{label:`Failures`,get children(){return e().failures.toLocaleString()}}),null),a(u,o(T,{label:`Children`,get children(){return e().child_count.toLocaleString()}}),null),a(u,o(T,{label:`Created`,get children(){return s(()=>!!e().created_at)()?m(e().created_at):`—`}}),null),a(u,o(T,{label:`Completed`,get children(){return s(()=>!!e().complete_at)()?m(e().complete_at):`—`}}),null),a(u,o(t,{get when(){return e().parent_bid},get children(){return o(T,{label:`Parent`,get children(){return e().parent_bid}})}}),null),a(u,o(t,{get when(){return e().tags.length>0},get children(){return o(T,{label:`Tags`,get children(){return e().tags.join(`, `)}})}}),null),a(n,o(E,{label:`Failed jobs`,get jids(){return e().failed_jids}}),null),a(n,o(E,{label:`Dead jobs`,get jids(){return e().dead_jids}}),null),n})()}})]}})}export{D as default};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,F as n,O as r,T as i,W as a,f as o,g as s,h as c,j as l,p as u,r as d,s as f,y as p}from"./i18n-gIeA5VLo.js";import{a as m,r as h}from"./index-DWfWAGBc.js";import{a as g,o as _}from"./utils-DDJC7tJV.js";import{n as v,t as y}from"./usePageParam-BcAvRko-.js";import{n as b,t as x}from"./useSort-D5Am4bGq.js";import{t as S}from"./PageHeader-Dp3qhX3e.js";var C=p(`<div>`),w=p(`<div class=empty-state style=color:var(--danger)>`),T=p(`<span class="badge badge-accent">`),E=p(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),D=p(`<div class=empty-state>`),O=p(`<tr><td style=font-family:monospace;font-size:12px></td><td></td><td></td><td></td><td></td><td style=width:100px><div style=display:flex;align-items:center;gap:0.5rem><div class=progress-bar-track style=flex:1><div class=progress-bar-fill></div></div><span style=font-size:11px;color:var(--text-muted);min-width:32px>%</span></div></td><td>`),k=25,A={bid:e=>e.bid,description:e=>e.description??``,total:e=>e.total,pending:e=>e.pending,failures:e=>e.failures,progress:e=>e.total>0?(e.total-e.pending)/e.total:0,created:e=>e.created_at??null};function j(){let[p,j]=y();a(()=>{document.title=`${d(`nav.batches`)} — Wurk`});let M=f(()=>({queryKey:[`batches`,p()],queryFn:()=>fetch(`/wurk/api/batches?page=${p()-1}&count=${k}`).then(e=>e.json())})),{sorted:N,sort:P,toggle:F}=x(()=>M.data?.batches??[],A);return l(r,{get children(){return[l(i,{get when(){return M.isPending},get children(){var e=C();return o(e,l(S,{icon:`fa-table-cells-large`,get title(){return d(`nav.batches`)},get summary(){return d(`summaries.batches`)}}),null),o(e,l(h,{rows:8,cols:7}),null),e}}),l(i,{get when(){return M.isError||!M.data},get children(){var e=w();return o(e,()=>d(`common.error`)),e}}),l(i,{get when(){return M.data},children:r=>(()=>{var i=C();return o(i,l(S,{icon:`fa-table-cells-large`,get title(){return d(`nav.batches`)},get summary(){return d(`summaries.batches`)},get children(){var e=T();return o(e,()=>r().total.toLocaleString()),e}}),null),o(i,l(t,{get when(){return N().length>0},get fallback(){return(()=>{var e=D();return o(e,()=>d(`common.empty`)),e})()},get children(){return[(()=>{var t=E(),r=t.firstChild.firstChild,i=r.firstChild,a=r.nextSibling;return o(i,l(b,{label:`BID`,sortKey:`bid`,get sort(){return P()},onSort:F}),null),o(i,l(b,{label:`Description`,sortKey:`description`,get sort(){return P()},onSort:F}),null),o(i,l(b,{get label(){return d(`table.total`)},sortKey:`total`,get sort(){return P()},onSort:F}),null),o(i,l(b,{get label(){return d(`table.pending`)},sortKey:`pending`,get sort(){return P()},onSort:F}),null),o(i,l(b,{label:`Failures`,sortKey:`failures`,get sort(){return P()},onSort:F}),null),o(i,l(b,{label:`Progress`,sortKey:`progress`,get sort(){return P()},onSort:F}),null),o(i,l(b,{label:`Created`,sortKey:`created`,get sort(){return P()},onSort:F}),null),o(a,l(e,{get each(){return N()},children:e=>{let t=e.total-e.pending,r=e.total>0?t/e.total*100:0;return(()=>{var t=O(),i=t.firstChild,a=i.nextSibling,d=a.nextSibling,f=d.nextSibling,p=f.nextSibling,h=p.nextSibling,v=h.firstChild.firstChild,y=v.firstChild,b=v.nextSibling,x=b.firstChild,S=h.nextSibling;return o(i,l(m,{get href(){return`/batches/${e.bid}`},get title(){return e.bid},get children(){return _(e.bid,14)}})),o(a,()=>_(e.description??`—`,40)),o(d,()=>e.total.toLocaleString()),o(f,()=>e.pending.toLocaleString()),o(p,()=>e.failures.toLocaleString()),s(y,`width`,`${r}%`),o(b,()=>Math.round(r),x),o(S,(()=>{var t=u(()=>!!e.created_at);return()=>t()?g(e.created_at):`—`})()),n(t=>{var n=e.description??``,r=e.pending>0?`var(--warning)`:`var(--success)`,i=e.failures>0?`var(--danger)`:void 0,o=e.failures>0?`var(--danger)`:`var(--success)`;return n!==t.e&&c(a,`title`,t.e=n),r!==t.t&&s(f,`color`,t.t=r),i!==t.a&&s(p,`color`,t.a=i),o!==t.o&&s(y,`background`,t.o=o),t},{e:void 0,t:void 0,a:void 0,o:void 0}),t})()}})),t})(),l(v,{get page(){return p()},get total(){return r().total},count:k,onChange:j})]}}),null),i})()})]}})}export{j as default};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,F as n,L as r,O as i,T as a,W as o,c as s,d as c,f as l,g as u,h as d,j as f,o as p,p as m,r as h,s as g,v as _,y as v}from"./i18n-gIeA5VLo.js";import{i as y,n as b}from"./index-DWfWAGBc.js";import{a as x,i as S,n as C,o as w,r as T,t as E}from"./utils-DDJC7tJV.js";import{t as D}from"./PageHeader-Dp3qhX3e.js";import{t as O}from"./Modal-DzVfgsSF.js";import{t as k}from"./ArgsValue-BUqJa-eG.js";var A=v(`<code style=font-size:12px>`),j=v(`<span>`),M=v(`<div class=table-wrapper><table><thead><tr><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>`),N=v(`<div><div style="display:grid;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:0.75rem;margin-bottom:1rem"></div><div style=margin-bottom:0.25rem></div><div style=display:flex;flex-wrap:wrap;gap:0.25rem;margin-bottom:1rem></div><h3 class=section-title style=margin-bottom:0.5rem> <span class="badge badge-muted">`),P=v(`<div><div></div><div style=font-size:14px>`),F=v(`<span class="badge badge-muted">`),I=v(`<div class=empty-state style=padding:1rem>`),L=v(`<tr><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td><span class="badge badge-muted"></span></td><td></td><td>`),R=v(`<span class="badge badge-muted"><i class="fa-solid fa-microchip"style=margin-right:0.35rem>`),z=v(`<span class="badge badge-muted"><i class="fa-solid fa-memory"style=margin-right:0.35rem>`),B=v(`<div style=display:flex;flex-wrap:wrap;align-items:center;gap:0.75rem;margin-bottom:0.75rem><span style=font-weight:600;font-size:15px><i class="fa-solid fa-server"style=color:var(--text-muted);margin-right:0.5rem></i></span><span class="badge badge-muted"> </span><span class="badge badge-muted"style=font-variant-numeric:tabular-nums> <!> / `),V=v(`<div>`),H=v(`<div class=empty-state style=color:var(--danger)>`),U=v(`<button class="btn btn-sm btn-ghost">`),W=v(`<button class="btn btn-sm btn-ghost btn-danger">`),G=v(`<div style=display:flex;align-items:center;gap:0.6rem><span class="badge badge-muted"> `),K=v(`<div class=empty-state>`),q=v(`<section style=margin-bottom:1.5rem><div style="display:grid;grid-template-columns:repeat(auto-fill, minmax(min(100%, 320px), 1fr));gap:1rem">`),J=v(`<span class=live-dot title="Heartbeat OK">`),Y=v(`<span class="badge badge-warning">Quiet`),X=v(`<span class="badge badge-muted">embedded`),Z=v(`<div style=display:flex;gap:0.4rem;margin-top:0.85rem><button class="btn btn-sm"></button><button class="btn btn-sm btn-danger">`),Q=v(`<div class="card row-clickable"><div style=display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:0.75rem><div><div style=font-weight:600;font-size:15px>PID </div><div style=color:var(--text-muted);font-size:12px></div></div><div style=display:flex;gap:0.375rem></div></div><div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:0.5rem;margin-bottom:0.75rem"><div><div> / </div><div style=font-weight:600;font-size:18px;font-variant-numeric:tabular-nums> / </div></div><div><div></div><div style=font-size:13px></div></div><div><div></div><div style=font-size:13px></div></div></div><div class=progress-bar-track style=margin-bottom:0.75rem><div class=progress-bar-fill></div></div><div><div style=margin-bottom:0.25rem></div><div style=display:flex;flex-wrap:wrap;gap:0.25rem>`);function ee(e){let t=new Map;for(let n of e){let e=t.get(n.hostname);e||(e={hostname:n.hostname,processes:[],busy:0,concurrency:0,rssKb:0},t.set(n.hostname,e)),e.processes.push(n),e.busy+=n.busy,e.concurrency+=n.concurrency,e.rssKb+=n.rss??0,e.cpuModel??=n.cpu_model??void 0,e.cores??=n.cores,e.memoryTotalKb??=n.memory_total_kb}return[...t.values()].sort((e,t)=>e.hostname.localeCompare(t.hostname))}function te(e){return e>90?`var(--danger)`:e>70?`var(--warning)`:`var(--accent)`}var $={"font-size":`11px`,color:`var(--text-muted)`,"text-transform":`uppercase`,"letter-spacing":`0.04em`};function ne(r){let i=g(()=>({queryKey:[`workers`],queryFn:()=>fetch(`/wurk/api/workers`).then(e=>e.json()),refetchInterval:5e3})),a=()=>(i.data??[]).filter(e=>e.process_id===r.proc.identity),o=()=>[[h(`busy.identity`),(()=>{var e=A();return l(e,()=>r.proc.identity),e})()],[`PID`,r.proc.pid],[h(`busy.started`),r.proc.started_at?(()=>{var e=j();return l(e,()=>x(r.proc.started_at)),n(()=>d(e,`title`,S(r.proc.started_at))),e})():`—`],[h(`busy.heartbeat`),(()=>{var e=j();return l(e,()=>x(r.proc.beat)),n(()=>d(e,`title`,S(r.proc.beat))),e})()],[`${h(`table.busy`)} / ${h(`table.concurrency`)}`,`${r.proc.busy} / ${r.proc.concurrency}`],[h(`busy.rss`),T(r.proc.rss??0)],[h(`busy.rtt`),r.proc.rtt_us?`${(r.proc.rtt_us/1e3).toFixed(1)} ${h(`common.ms`)}`:`—`],[h(`busy.version`),r.proc.version??`—`],[h(`busy.tag`),r.proc.tag||`—`],[h(`busy.labels`),r.proc.labels?.length?r.proc.labels.join(`, `):`—`]];return(()=>{var i=N(),s=i.firstChild,c=s.nextSibling,u=c.nextSibling,p=u.nextSibling,m=p.firstChild,g=m.nextSibling;return l(s,f(e,{get each(){return o()},children:([e,t])=>(()=>{var r=P(),i=r.firstChild,a=i.nextSibling;return l(i,e),l(a,t),n(e=>_(i,$,e)),r})()})),l(c,()=>h(`table.queues`)),l(u,f(e,{get each(){return r.proc.queues},children:e=>(()=>{var t=F();return l(t,e),t})()})),l(p,()=>h(`busy.running_jobs`),m),l(g,()=>a().length),l(i,f(t,{get when(){return a().length>0},get fallback(){return(()=>{var e=I();return l(e,()=>h(`busy.no_running`)),e})()},get children(){var t=M(),r=t.firstChild.firstChild,i=r.firstChild.firstChild,o=i.nextSibling,s=o.nextSibling,c=s.nextSibling,u=c.nextSibling,p=r.nextSibling;return l(i,()=>h(`table.jid`)),l(o,()=>h(`table.class`)),l(s,()=>h(`table.queue`)),l(c,()=>h(`table.args`)),l(u,()=>h(`busy.running_since`)),l(p,f(e,{get each(){return a()},children:e=>(()=>{var t=L(),r=t.firstChild,i=r.nextSibling,a=i.nextSibling,o=a.firstChild,s=a.nextSibling,c=s.nextSibling;return l(r,()=>w(e.jid,12)),l(i,()=>e.klass),l(o,()=>e.queue),l(s,f(k,{get str(){return E(e.args)},max:40})),l(c,()=>x(e.run_at)),n(t=>{var n=e.jid,i=S(e.run_at);return n!==t.e&&d(r,`title`,t.e=n),i!==t.t&&d(c,`title`,t.t=i),t},{e:void 0,t:void 0}),t})()})),t}}),null),n(e=>_(c,{...$},e)),i})()}function re(e){let r=()=>e.group.memoryTotalKb?Math.min(100,e.group.rssKb/e.group.memoryTotalKb*100):null;return(()=>{var i=B(),a=i.firstChild;a.firstChild;var o=a.nextSibling,s=o.firstChild,c=o.nextSibling,u=c.firstChild,p=u.nextSibling;return p.nextSibling,l(a,()=>e.group.hostname,null),l(o,()=>e.group.processes.length,s),l(o,()=>h(`dashboard.processes`).toLowerCase(),null),l(i,f(t,{get when(){return e.group.cpuModel},get children(){var t=R();return t.firstChild,l(t,()=>w(e.group.cpuModel,40),null),n(()=>d(t,`title`,e.group.cpuModel??void 0)),t}}),c),l(i,f(t,{get when(){return m(()=>e.group.cores!=null)()&&e.group.cores>0},get children(){var t=F();return l(t,()=>h(`busy.cores`,{n:e.group.cores})),t}}),c),l(i,f(t,{get when(){return e.group.rssKb>0},get children(){var t=z();return t.firstChild,l(t,()=>T(e.group.rssKb),null),l(t,(()=>{var t=m(()=>!!e.group.memoryTotalKb);return()=>t()?` / ${T(e.group.memoryTotalKb)}`:``})(),null),n(()=>d(t,`title`,r()==null?void 0:`${r().toFixed(1)}% ${h(`busy.of_total_ram`)}`)),t}}),c),l(c,()=>h(`table.busy`),u),l(c,()=>e.group.busy,p),l(c,()=>e.group.concurrency,null),i})()}function ie(){let c=y(),d=()=>c.data?.read_only??!1,v=s(),[S,w]=r(null);o(()=>{document.title=`${h(`nav.busy`)} — Wurk`});let E=g(()=>({queryKey:[`processes`],queryFn:()=>fetch(`/wurk/api/processes`).then(e=>e.json()),refetchInterval:5e3})),k=p(()=>({mutationFn:async e=>{let{signal:t}=e,n=e.scope===`all`?`all`:e.identity,r=await fetch(`/wurk/api/busy/${t}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({identity:n})});if(!r.ok)throw Error(`${t} failed (${r.status})`);return r},onSuccess:()=>v.invalidateQueries({queryKey:[`processes`]})})),A=e=>window.confirm(h(`actions.confirm`,{action:h(`actions.stop`),scope:e})),j=()=>(E.data??[]).some(e=>!e.embedded),M=()=>ee(E.data??[]),N=()=>(E.data??[]).find(e=>e.identity===S())??null;return f(i,{get children(){return[f(a,{get when(){return E.isPending},get children(){var e=V();return l(e,f(D,{icon:`fa-gears`,get title(){return h(`nav.busy`)},get summary(){return h(`summaries.busy`)}}),null),l(e,f(b,{count:6}),null),e}}),f(a,{get when(){return E.isError||!E.data},get children(){var e=H();return l(e,()=>h(`common.error`)),e}}),f(a,{get when(){return E.data},children:r=>(()=>{var i=V();return l(i,f(D,{icon:`fa-gears`,get title(){return h(`nav.busy`)},get summary(){return h(`summaries.busy`)},get children(){var e=G(),i=e.firstChild,a=i.firstChild;return l(i,()=>r().length,a),l(i,()=>h(`dashboard.processes`).toLowerCase(),null),l(e,f(t,{get when(){return M().length>1},get children(){var e=F();return l(e,()=>h(`busy.hosts`,{n:M().length})),e}}),null),l(e,f(t,{get when(){return m(()=>!d())()&&j()},get children(){return[(()=>{var e=U();return e.$$click=()=>k.mutate({signal:`quiet`,scope:`all`}),l(e,()=>`${h(`actions.quiet`)} ${h(`actions.all_suffix`)}`),n(()=>e.disabled=k.isPending),e})(),(()=>{var e=W();return e.$$click=()=>A(h(`actions.scope_all_processes`))&&k.mutate({signal:`stop`,scope:`all`}),l(e,()=>`${h(`actions.stop`)} ${h(`actions.all_suffix`)}`),n(()=>e.disabled=k.isPending),e})()]}}),null),e}}),null),l(i,f(t,{get when(){return r().length>0},get fallback(){return(()=>{var e=K();return l(e,()=>h(`common.empty`)),e})()},get children(){return f(e,{get each(){return M()},children:r=>(()=>{var i=q(),a=i.firstChild;return l(i,f(re,{group:r}),a),l(a,f(e,{get each(){return r.processes},children:r=>{let i=r.concurrency>0?r.busy/r.concurrency*100:0,a=Date.now()/1e3-r.beat<30;return(()=>{var o=Q(),s=o.firstChild,c=s.firstChild,p=c.firstChild;p.firstChild;var g=p.nextSibling,v=c.nextSibling,y=s.nextSibling,b=y.firstChild,S=b.firstChild,E=S.firstChild,D=S.nextSibling,O=D.firstChild,j=b.nextSibling,M=j.firstChild,N=M.nextSibling,P=j.nextSibling.firstChild,I=P.nextSibling,L=y.nextSibling,R=L.firstChild,z=L.nextSibling.firstChild,B=z.nextSibling;return o.$$click=()=>r.identity&&w(r.identity),l(p,()=>r.pid,null),l(g,()=>r.tag||r.hostname,null),l(g,(()=>{var e=m(()=>!!r.started_at);return()=>e()?` · ${h(`busy.up_for`)} ${C(Date.now()/1e3-r.started_at)}`:``})(),null),l(v,f(t,{when:a,get children(){return J()}}),null),l(v,f(t,{get when(){return r.quiet},get children(){return Y()}}),null),l(v,f(t,{get when(){return r.embedded},get children(){return X()}}),null),l(S,()=>h(`table.busy`),E),l(S,()=>h(`table.concurrency`),null),l(D,()=>r.busy,O),l(D,()=>r.concurrency,null),l(M,()=>h(`busy.heartbeat`)),u(N,`color`,a?`var(--success)`:`var(--danger)`),l(N,()=>x(r.beat)),l(P,()=>h(`busy.rss`)),l(I,()=>T(r.rss??0)),u(R,`width`,`${i}%`),l(z,()=>h(`table.queues`)),l(B,f(e,{get each(){return r.queues},children:e=>(()=>{var t=F();return l(t,e),t})()})),l(o,f(t,{get when(){return m(()=>!d())()&&!r.embedded},get children(){var e=Z(),t=e.firstChild,i=t.nextSibling;return e.$$click=e=>e.stopPropagation(),t.$$click=()=>k.mutate({signal:`quiet`,scope:`one`,identity:r.identity}),l(t,()=>h(`actions.quiet`)),i.$$click=()=>A(h(`actions.scope_this_process`))&&k.mutate({signal:`stop`,scope:`one`,identity:r.identity}),l(i,()=>h(`actions.stop`)),n(e=>{var n=k.isPending,r=k.isPending;return n!==e.e&&(t.disabled=e.e=n),r!==e.t&&(i.disabled=e.t=r),e},{e:void 0,t:void 0}),e}}),null),n(e=>{var t=$,n=$,r=$,a=te(i),o={...$};return e.e=_(S,t,e.e),e.t=_(M,n,e.t),e.a=_(P,r,e.a),a!==e.o&&u(R,`background`,e.o=a),e.i=_(z,o,e.i),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),o})()}})),i})()})}}),null),l(i,f(O,{get open(){return N()!==null},onClose:()=>w(null),get title(){return m(()=>!!N())()?`${N().hostname} · PID ${N().pid}`:``},width:780,get children(){return f(t,{get when(){return N()},children:e=>f(ne,{get proc(){return e()}})})}}),null),i})()})]}})}c([`click`]);export{ie as default};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,F as n,L as r,O as i,T as a,W as o,c as s,d as c,f as l,g as u,h as d,j as f,o as p,p as m,r as h,s as g,y as _}from"./i18n-gIeA5VLo.js";import{i as v,r as y}from"./index-DWfWAGBc.js";import{a as b,i as x,o as S}from"./utils-DDJC7tJV.js";import{n as C,t as w}from"./useSort-D5Am4bGq.js";import{t as T}from"./PageHeader-Dp3qhX3e.js";import{t as E}from"./Modal-DzVfgsSF.js";var D=_(`<div>`),O=_(`<div class=empty-state style=color:var(--danger)>`),k=_(`<span class="badge badge-muted">`),A=_(`<th>`),j=_(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),M=_(`<div class=empty-state>`),N=_(`<span class="badge badge-muted">paused`),P=_(`<td><div style=display:flex;gap:0.4rem><button class="btn btn-sm"></button><button class="btn btn-sm">Enqueue`),F=_(`<tr class=row-clickable><td style=font-family:monospace;font-size:12px></td><td></td><td></td><td style=color:var(--text-muted)></td><td></td><td>`),I=_(`<span class="badge badge-success">active`),L=_(`<div class=table-wrapper><table><thead><tr><th></th><th></th></tr></thead><tbody>`),R=_(`<tr><td style=color:var(--text-muted)></td><td style=font-family:monospace;font-size:12px>`),z={schedule:e=>e.schedule,klass:e=>e.klass,queue:e=>e.queue,last_fire:e=>e.last_fire_at,next_fire:e=>e.next_fire_at,status:e=>e.paused?`paused`:`active`};function B(){let c=s(),_=v(),B=()=>_.data?.read_only??!1,[V,H]=r(null);o(()=>{document.title=`${h(`nav.cron`)} — Wurk`});let U=g(()=>({queryKey:[`cron`],queryFn:()=>fetch(`/wurk/api/cron`).then(e=>e.json()),refetchInterval:15e3})),W=(e,t)=>fetch(`/wurk/api/cron/${e}/${t}`,{method:`POST`}),G=p(()=>({mutationFn:({lid:e,paused:t})=>W(e,t?`unpause`:`pause`),onSuccess:()=>c.invalidateQueries({queryKey:[`cron`]})})),K=p(()=>({mutationFn:e=>W(e,`enqueue`),onSuccess:()=>c.invalidateQueries({queryKey:[`cron`]})})),q=g(()=>({queryKey:[`cron-history`,V()?.lid],queryFn:()=>fetch(`/wurk/api/cron/${V().lid}/history`).then(e=>e.json()).then(e=>e.history),enabled:V()!==null})),{sorted:J,sort:Y,toggle:X}=w(()=>U.data??[],z);return f(i,{get children(){return[f(a,{get when(){return U.isPending},get children(){var e=D();return l(e,f(T,{icon:`fa-stopwatch`,get title(){return h(`nav.cron`)},get summary(){return h(`summaries.cron`)}}),null),l(e,f(y,{rows:8,get cols(){return B()?6:7}}),null),e}}),f(a,{get when(){return U.isError||!U.data},get children(){var e=O();return l(e,()=>h(`common.error`)),e}}),f(a,{get when(){return U.data},children:r=>(()=>{var o=D();return l(o,f(T,{icon:`fa-stopwatch`,get title(){return h(`nav.cron`)},get summary(){return h(`summaries.cron`)},get children(){var e=k();return l(e,()=>r().length),e}}),null),l(o,f(t,{get when(){return r().length>0},get fallback(){return(()=>{var e=M();return l(e,()=>h(`common.empty`)),e})()},get children(){var r=j(),i=r.firstChild.firstChild,a=i.firstChild,o=i.nextSibling;return l(a,f(C,{label:`Schedule`,sortKey:`schedule`,get sort(){return Y()},onSort:X}),null),l(a,f(C,{get label(){return h(`table.class`)},sortKey:`klass`,get sort(){return Y()},onSort:X}),null),l(a,f(C,{get label(){return h(`table.queue`)},sortKey:`queue`,get sort(){return Y()},onSort:X}),null),l(a,f(C,{label:`Last fire`,sortKey:`last_fire`,get sort(){return Y()},onSort:X}),null),l(a,f(C,{label:`Next fire`,sortKey:`next_fire`,get sort(){return Y()},onSort:X}),null),l(a,f(C,{get label(){return h(`table.status`)},sortKey:`status`,get sort(){return Y()},onSort:X}),null),l(a,f(t,{get when(){return!B()},get children(){return A()}}),null),l(o,f(e,{get each(){return J()},children:e=>(()=>{var r=F(),i=r.firstChild,a=i.nextSibling,o=a.nextSibling,s=o.nextSibling,c=s.nextSibling,p=c.nextSibling;return r.$$click=()=>H(e),l(i,()=>e.schedule),l(a,()=>S(e.klass,32)),l(o,()=>e.queue),l(s,(()=>{var t=m(()=>!!e.last_fire_at);return()=>t()?b(e.last_fire_at):`—`})()),l(c,(()=>{var t=m(()=>!!e.paused);return()=>t()?`—`:m(()=>!!e.next_fire_at)()?b(e.next_fire_at):`—`})()),l(p,f(t,{get when(){return e.paused},get fallback(){return I()},get children(){return N()}})),l(r,f(t,{get when(){return!B()},get children(){var t=P(),r=t.firstChild.firstChild,i=r.nextSibling;return t.$$click=e=>e.stopPropagation(),r.$$click=()=>G.mutate({lid:e.lid,paused:e.paused}),l(r,()=>e.paused?`Resume`:`Pause`),i.$$click=()=>K.mutate(e.lid),n(e=>{var t=G.isPending,n=K.isPending;return t!==e.e&&(r.disabled=e.e=t),n!==e.t&&(i.disabled=e.t=n),e},{e:void 0,t:void 0}),t}}),null),n(t=>{var n=e.tz??void 0,r=e.klass,o=e.paused?`var(--text-muted)`:`var(--accent)`;return n!==t.e&&d(i,`title`,t.e=n),r!==t.t&&d(a,`title`,t.t=r),o!==t.a&&u(c,`color`,t.a=o),t},{e:void 0,t:void 0,a:void 0}),r})()})),r}}),null),l(o,f(E,{get open(){return V()!==null},onClose:()=>H(null),get title(){return m(()=>!!V())()?`${h(`cron.history_title`)} — ${S(V().klass,40)}`:h(`cron.history_title`)},get children(){return f(i,{get children(){return[f(a,{get when(){return q.isPending},get children(){return f(y,{rows:6,cols:2})}}),f(a,{get when(){return q.isError},get children(){var e=O();return l(e,()=>h(`common.error`)),e}}),f(a,{get when(){return!q.data||q.data.length===0},get children(){var e=M();return l(e,()=>h(`cron.no_history`)),e}}),f(a,{get when(){return q.data},children:t=>(()=>{var r=L(),i=r.firstChild.firstChild,a=i.firstChild.firstChild,o=a.nextSibling,s=i.nextSibling;return l(a,()=>h(`cron.fired`)),l(o,()=>h(`table.jid`)),l(s,f(e,{get each(){return t()},children:([e,t])=>(()=>{var r=R(),i=r.firstChild,a=i.nextSibling;return l(i,()=>b(e)),l(a,t),n(()=>d(i,`title`,x(e))),r})()})),r})()})]}})}}),null),o})()})]}})}c([`click`]);export{B as default};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,F as n,L as r,N as i,O as a,P as o,T as s,U as c,W as l,d as u,f as d,h as f,j as p,p as m,r as h,s as g,u as _,y as v}from"./i18n-gIeA5VLo.js";import{a as y,n as b,r as x,t as ee}from"./index-DWfWAGBc.js";import{n as te}from"./utils-DDJC7tJV.js";import{r as S}from"./charts-6uvCyY0x.js";var C=e=>1-(1-e)**3,w=()=>typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches;function T(e,t=700){let[n,a]=r(0),o=0,s=null;return i(()=>{let n=e();if(w()||!Number.isFinite(n)){o=n,a(n);return}let r=o;if(r===n)return;let i=performance.now(),l=e=>{let c=Math.min((e-i)/t,1),u=r+(n-r)*C(c);o=u,a(u),c<1&&(s=requestAnimationFrame(l))};s=requestAnimationFrame(l),c(()=>{s!==null&&cancelAnimationFrame(s)})}),n}function E(e){let t=T(()=>e.value);return m(()=>Math.round(t()).toLocaleString())}function D(e=!0){let[t,n]=r(null),[i,a]=r(!1);return l(()=>{if(!e)return;let t=new EventSource(`/wurk/api/stream`);t.addEventListener(`stats`,e=>{try{n(JSON.parse(e.data))}catch{}}),t.onopen=()=>a(!0),t.onerror=()=>a(!1),c(()=>{t.close(),a(!1)})}),{stats:t,connected:i}}var O=v(`<span class=obs-metric__sub>`),k=v(`<span class=obs-metric__sub><span> <!>%</span> `),A=v(`<div class=obs>`),j=v(`<div class=empty-state style=color:var(--danger)>`),M=v(`<div class=empty-state>`),N=v(`<div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-circle-check obs-metric__icon"aria-hidden=true>`),P=v(`<span class=obs-metric__value>`),F=v(`<i class="fa-solid fa-arrow-right obs-card__go"aria-hidden=true>`),I=v(`<div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-triangle-exclamation obs-metric__icon"aria-hidden=true>`),L=v(`<div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-ban obs-metric__icon"aria-hidden=true>`),R=v(`<div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-spinner obs-metric__icon"aria-hidden=true>`),z=v(`<span class=obs-mono>`),B=v(`<span class=obs-stat__value>`),V=v(`<i class="fa-solid fa-arrow-right"aria-hidden=true>`),H=v(`<div class=obs-tablescroll><table><thead><tr><th>Name</th><th></th><th></th><th></th></tr></thead><tbody>`),U=v(`<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> `),W=v(`<button role=tab>`),ne=v(`<div class=empty-state style=height:320px;display:grid;place-items:center>`),re=v(`<span class="obs-chip obs-chip--paused">`),ie=v(`<tr><td style=font-weight:500;color:var(--obs-text)></td><td></td><td></td><td>`),ae=v(`<span class="obs-chip obs-chip--active">`);function G(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 K=[{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`}],q=(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 J(e){return p(t,{get when(){return e.pct!==null},get fallback(){return(()=>{var e=O();return d(e,()=>h(`dashboard.vs_last_hour`)),e})()},get children(){return(()=>{let t=()=>e.pct>=0,r=()=>t()===e.goodWhenUp;return(()=>{var i=k(),a=i.firstChild,o=a.firstChild,s=o.nextSibling;return s.nextSibling,a.nextSibling,d(a,()=>t()?`▲`:`▼`,o),d(a,()=>t()?`+`:``,s),d(a,()=>e.pct,s),d(i,()=>h(`dashboard.vs_last_hour`),null),n(()=>_(a,r()?`up`:`down`)),i})()})()}})}function Y(){let i=D(),[c,u]=r(0),v=()=>K[c()];l(()=>{document.title=`${h(`nav.dashboard`)} — Wurk`});let C=g(()=>({queryKey:[`stats`],queryFn:()=>fetch(`/wurk/api/stats`).then(e=>e.json()),enabled:!i.connected(),refetchInterval:i.connected()?!1:5e3})),w=g(()=>({queryKey:[`history`,v().bucket,v().window],queryFn:()=>fetch(`/wurk/api/history/${v().bucket}?window=${v().window}`).then(e=>e.json()),refetchInterval:3e4})),T=()=>i.stats()??C.data??null,k=o(()=>(w.data?.series??[]).map(e=>({...e,label:q(e.at,v().bucket)}))),Y=o(()=>{let e=v(),t=`slice`in e?e.slice:void 0;return t?k().slice(-t):k()}),oe=o(()=>Y().some(e=>e.processed>0||e.failed>0));return p(a,{get children(){return[p(s,{get when(){return m(()=>!!C.isLoading)()&&!T()},get children(){var e=A();return d(e,p(b,{count:4}),null),d(e,p(x,{rows:6,cols:4}),null),e}}),p(s,{get when(){return m(()=>!!C.isError)()&&!T()},get children(){var e=j();return d(e,()=>h(`common.error`)),e}}),p(s,{get when(){return!T()},get children(){var e=M();return d(e,()=>h(`common.empty`)),e}}),p(s,{get when(){return T()},children:r=>(()=>{var i=U(),a=i.firstChild,o=a.nextSibling,s=o.firstChild,l=s.firstChild,g=l.firstChild,b=g.nextSibling,x=l.nextSibling.firstChild,C=x.nextSibling.firstChild;C.firstChild.nextSibling;var T=C.nextSibling;T.firstChild.nextSibling;var D=s.nextSibling,A=o.nextSibling,j=A.nextSibling,q=j.firstChild,se=q.firstChild,X=j.nextSibling.firstChild.nextSibling,Z=X.nextSibling,Q=Z.nextSibling.firstChild;Q.firstChild.nextSibling;var $=Q.nextSibling;return $.firstChild.nextSibling,d(a,p(y,{class:`obs-card obs-metric obs-card--link`,href:`/metrics`,get children(){return[(()=>{var e=N(),t=e.firstChild;return d(t,()=>h(`dashboard.processed`)),e})(),(()=>{var e=P();return d(e,p(E,{get value(){return r().processed}})),e})(),p(J,{get pct(){return G(k(),`processed`)},goodWhenUp:!0}),F()]}}),null),d(a,p(y,{class:`obs-card obs-metric obs-card--link`,href:`/retries`,get children(){return[(()=>{var e=I(),t=e.firstChild;return d(t,()=>h(`dashboard.failed`)),e})(),(()=>{var e=P();return d(e,p(E,{get value(){return r().failed}})),e})(),p(J,{get pct(){return G(k(),`failed`)},goodWhenUp:!1}),F()]}}),null),d(a,p(y,{class:`obs-card obs-metric obs-card--link`,href:`/dead`,get children(){return[(()=>{var e=L(),t=e.firstChild;return d(t,()=>h(`dashboard.expired`)),e})(),(()=>{var e=P();return d(e,p(E,{get value(){return r().expired}})),e})(),(()=>{var e=O();return d(e,(()=>{var e=m(()=>r().expired===0);return()=>e()?h(`dashboard.stable_threshold`):h(`dashboard.above_threshold`)})()),e})(),F()]}}),null),d(a,p(y,{class:`obs-card obs-metric obs-card--link`,href:`/busy`,get children(){return[(()=>{var e=R(),t=e.firstChild;return d(t,()=>h(`dashboard.busy`)),e})(),(()=>{var e=P();return d(e,p(E,{get value(){return r().busy}})),e})(),(()=>{var e=O();return d(e,(()=>{var e=m(()=>r().busy===0);return()=>e()?h(`dashboard.system_idle`):h(`dashboard.processing`)})()),e})(),F()]}}),null),d(g,()=>h(`dashboard.performance_insight`)),d(b,()=>h(`dashboard.perf_subtitle`,{range:h(v().desc_key)})),d(x,p(e,{each:K,children:(e,t)=>(()=>{var r=W();return r.$$click=()=>u(t()),d(r,()=>e.key),n(e=>{var n=t()===c(),i=t()===c()?`is-active`:``;return n!==e.e&&f(r,`aria-selected`,e.e=n),i!==e.t&&_(r,e.t=i),e},{e:void 0,t:void 0}),r})()})),d(C,()=>h(`dashboard.processed`),null),d(T,()=>h(`dashboard.failed`),null),d(D,p(t,{get when(){return!w.isPending},get fallback(){return p(ee,{height:320})},get children(){return p(t,{get when(){return oe()},get fallback(){return(()=>{var e=ne();return d(e,()=>h(`dashboard.no_history`)),e})()},get children(){return p(S,{get data(){return Y()},height:320,xMinTickGap:64,get series(){return[{key:`processed`,name:h(`dashboard.processed`),stroke:`#fafafa`,strokeWidth:2,fill:`gradient`},{key:`failed`,name:h(`dashboard.failed`),stroke:`#a1a1aa`,strokeWidth:1.5,strokeDasharray:`5 4`,fill:`none`}]}})}})}})),d(A,p(y,{class:`obs-card obs-stat obs-card--link`,href:`/queues`,get children(){return[(()=>{var e=z();return d(e,()=>h(`dashboard.enqueued`)),e})(),(()=>{var e=B();return d(e,p(E,{get value(){return r().enqueued}})),e})(),F()]}}),null),d(A,p(y,{class:`obs-card obs-stat obs-card--link`,href:`/retries`,get children(){return[(()=>{var e=z();return d(e,()=>h(`dashboard.retries`)),e})(),(()=>{var e=B();return d(e,p(E,{get value(){return r().retries}})),e})(),F()]}}),null),d(A,p(y,{class:`obs-card obs-stat obs-card--link`,href:`/scheduled`,get children(){return[(()=>{var e=z();return d(e,()=>h(`dashboard.scheduled`)),e})(),(()=>{var e=B();return d(e,p(E,{get value(){return r().scheduled}})),e})(),F()]}}),null),d(A,p(y,{class:`obs-card obs-stat obs-card--link`,href:`/dead`,get children(){return[(()=>{var e=z();return d(e,()=>h(`dashboard.dead`)),e})(),(()=>{var e=B();return d(e,p(E,{get value(){return r().dead}})),e})(),F()]}}),null),d(se,()=>h(`table.queues`)),d(q,p(y,{class:`obs-table__link`,href:`/queues`,get children(){return[`View All `,V()]}}),null),d(j,p(t,{get when(){return r().queues.length>0},get fallback(){return(()=>{var e=M();return d(e,()=>h(`common.empty`)),e})()},get children(){var i=H(),a=i.firstChild.firstChild,o=a.firstChild.firstChild.nextSibling,s=o.nextSibling,c=s.nextSibling,l=a.nextSibling;return d(o,()=>h(`table.size`)),d(s,()=>h(`table.latency`)),d(c,()=>h(`table.status`)),d(l,p(e,{get each(){return r().queues},children:e=>(()=>{var r=ie(),i=r.firstChild,a=i.nextSibling,o=a.nextSibling,s=o.nextSibling;return d(i,()=>e.name),d(a,p(E,{get value(){return e.size}})),d(o,()=>te(e.latency)),d(s,p(t,{get when(){return e.paused},get fallback(){return(()=>{var e=ae();return d(e,()=>h(`dashboard.active`)),e})()},get children(){var e=re();return d(e,()=>h(`dashboard.paused`)),e}})),n(()=>f(o,`title`,`${e.latency.toFixed(3)}s`)),r})()})),i}}),null),d(X,()=>h(`dashboard.strapline`)),d(Z,()=>h(`dashboard.tagline`)),d(Q,()=>h(`dashboard.install`),null),d($,()=>h(`dashboard.docs`),null),i})()})]}})}u([`click`]);export{Y as default};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,F as n,L as r,O as i,T as a,W as o,d as s,f as c,h as l,j as u,r as d,s as f,y as p}from"./i18n-gIeA5VLo.js";import{i as m,r as h}from"./index-DWfWAGBc.js";import{a as g,i as _,o as v,t as y}from"./utils-DDJC7tJV.js";import{n as ee,t as b}from"./usePageParam-BcAvRko-.js";import{n as x,t as S}from"./useSort-D5Am4bGq.js";import{t as C}from"./PageHeader-Dp3qhX3e.js";import{t as w}from"./ArgsValue-BUqJa-eG.js";import{t as T}from"./JobDetailModal-BhNdWSp7.js";import{i as E,n as D,r as O,t as k}from"./useJobSetActions-DTDaAoWr.js";var A=p(`<div>`),j=p(`<div class=empty-state style=color:var(--danger)>`),M=p(`<span class="badge badge-danger">`),te=p(`<th class=row-action><input type=checkbox aria-label="Select all">`),ne=p(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),re=p(`<div class=empty-state>`),N=p(`<td class=row-action><input type=checkbox aria-label="Select job">`),P=p(`<tr class=row-clickable><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td></td><td style=color:var(--danger)></td><td></td><td>`),F=25,I={jid:e=>e.jid,klass:e=>e.klass,args:e=>y(e.args),error_class:e=>e.error_class,error_message:e=>e.error_message,failed_at:e=>e.at},L=[{cmd:`retry`,label:d(`actions.retry`)},{cmd:`delete`,label:d(`actions.delete`),danger:!0}];function R(){let[s,p]=b(),[R,z]=r(null),[B,V]=r(null),H=m(),U=()=>H.data?.read_only??!1,W=O(),{single:G,bulk:K,all:q}=D(`dead`),J=()=>G.isPending||K.isPending||q.isPending;o(()=>{document.title=`${d(`nav.dead`)} — Wurk`});let Y=f(()=>({queryKey:[`dead`,s()],queryFn:()=>fetch(`/wurk/api/dead?page=${s()-1}&count=${F}`).then(e=>e.json())})),{sorted:X,sort:Z,toggle:Q}=S(()=>Y.data?.entries??[],I),$=()=>X().map(k),ie=()=>$().length>0&&$().every(e=>W.selected().has(e));return u(i,{get children(){return[u(a,{get when(){return Y.isPending},get children(){var e=A();return c(e,u(C,{icon:`fa-skull`,get title(){return d(`nav.dead`)},get summary(){return d(`summaries.dead`)}}),null),c(e,u(h,{rows:8,cols:7}),null),e}}),u(a,{get when(){return Y.isError||!Y.data},get children(){var e=j();return c(e,()=>d(`common.error`)),e}}),u(a,{get when(){return Y.data},children:r=>(()=>{var i=A();return c(i,u(C,{icon:`fa-skull`,get title(){return d(`nav.dead`)},get summary(){return d(`summaries.dead`)},get children(){var e=M();return c(e,()=>r().total.toLocaleString()),e}}),null),c(i,u(t,{get when(){return X().length>0},get fallback(){return(()=>{var e=re();return c(e,()=>d(`common.empty`)),e})()},get children(){return[u(t,{get when(){return!U()},get children(){return u(E,{bulk:L,all:L,get selectedCount(){return W.count()},get total(){return r().total},get pending(){return J()},onBulk:e=>K.mutate({keys:[...W.selected()],cmd:e},{onSuccess:W.clear}),onAll:e=>q.mutate(e,{onSuccess:W.clear})})}}),(()=>{var r=ne(),i=r.firstChild.firstChild,a=i.firstChild,o=i.nextSibling;return c(a,u(t,{get when(){return!U()},get children(){var e=te(),t=e.firstChild;return t.addEventListener(`change`,()=>W.toggleAll($())),n(()=>t.checked=ie()),e}}),null),c(a,u(x,{get label(){return d(`table.jid`)},sortKey:`jid`,get sort(){return Z()},onSort:Q}),null),c(a,u(x,{get label(){return d(`table.class`)},sortKey:`klass`,get sort(){return Z()},onSort:Q}),null),c(a,u(x,{get label(){return d(`table.args`)},sortKey:`args`,get sort(){return Z()},onSort:Q}),null),c(a,u(x,{get label(){return d(`table.error`)},sortKey:`error_class`,get sort(){return Z()},onSort:Q}),null),c(a,u(x,{label:`Message`,sortKey:`error_message`,get sort(){return Z()},onSort:Q}),null),c(a,u(x,{get label(){return d(`table.failed_at`)},sortKey:`failed_at`,get sort(){return Z()},onSort:Q}),null),c(o,u(e,{get each(){return X()},children:e=>{let r=y(e.args),i=k(e);return(()=>{var a=P(),o=a.firstChild,s=o.nextSibling,d=s.nextSibling,f=d.nextSibling,p=f.nextSibling,m=p.nextSibling;return a.$$click=()=>{z(e),V(i)},c(a,u(t,{get when(){return!U()},get children(){var e=N(),t=e.firstChild;return e.$$click=e=>e.stopPropagation(),t.addEventListener(`change`,()=>W.toggle(i)),n(()=>t.checked=W.selected().has(i)),e}}),o),c(o,()=>v(e.jid,12)),c(s,()=>e.klass),c(d,u(w,{str:r,max:40})),c(f,()=>v(e.error_class,25)),c(p,()=>v(e.error_message,40)),c(m,()=>g(e.at)),n(t=>{var n=e.jid,r=e.error_class??``,i=e.error_message??``,a=_(e.at);return n!==t.e&&l(o,`title`,t.e=n),r!==t.t&&l(f,`title`,t.t=r),i!==t.a&&l(p,`title`,t.a=i),a!==t.o&&l(m,`title`,t.o=a),t},{e:void 0,t:void 0,a:void 0,o:void 0}),a})()}})),r})(),u(ee,{get page(){return s()},get total(){return r().total},count:F,onChange:p})]}}),null),c(i,u(T,{get entry(){return R()},get atLabel(){return d(`table.failed_at`)},get actions(){return U()?void 0:L},get pending(){return G.isPending},onAction:e=>{let t=B();t&&G.mutate({key:t,cmd:e},{onSuccess:()=>{z(null),V(null)}})},onClose:()=>{z(null),V(null)}}),null),i})()})]}})}s([`click`]);export{R as default};
@@ -0,0 +1 @@
1
+ import{E as e,F as t,L as n,N as r,d as i,f as a,h as o,j as s,p as c,r as l,y as u}from"./i18n-gIeA5VLo.js";import{i as d,o as f,r as p,t as m}from"./index-DWfWAGBc.js";import{t as h}from"./PageHeader-Dp3qhX3e.js";var g=u(`<div class=empty-state style=color:var(--danger)>`),_=u(`<div class=skeleton-stack>`),v=u(`<div class="card ext-view">`),y=u(`<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>`),b=u(`<iframe style="width:100%;height:calc(100vh - 11rem);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)">`);function x(){let t=f(),n=()=>t.tab??``,r=d(),i=e=>e.replace(/\/+$/,``),a=()=>r.data?.custom_tabs?.find(e=>i(e.path)===i(n())),o=()=>a()?.name??n();return s(e,{get when(){return a()?.ext_name},keyed:!0,get fallback(){return s(C,{get tab(){return n()},get title(){return o()}})},children:e=>s(S,{extName:e,get indexPath(){return n()},get title(){return o()}})})}function S(i){let o=`/wurk/ext/${i.extName}/`,[u,d]=n(null),[f,y]=n(!1),b=0,x=async(e,t)=>{let n=++b;try{let r=await fetch(o+e,t),i=await r.text();if(n!==b)return;y(!r.ok&&r.status!==404),d(i)}catch{n===b&&y(!0)}};r(()=>{x(i.indexPath.replace(/\/+$/,``))});let S=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(o)||(e.preventDefault(),x(n.pathname.slice(o.length)+n.search))},C=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(o))return;e.preventDefault();let r=new FormData(t);if((t.method||`get`).toUpperCase()===`GET`){let e=new URLSearchParams(Array.from(r.entries())).toString();x(`${n.pathname.slice(o.length)}${e?`?${e}`:``}`)}else x(n.pathname.slice(o.length)+n.search,{method:`POST`,body:r})};return[s(h,{icon:`fa-puzzle-piece`,get title(){return i.title},get summary(){return l(`extension.summary`)}}),s(e,{get when(){return f()},get children(){var e=g();return a(e,()=>l(`common.error`)),e}}),s(e,{get when(){return c(()=>u()===null)()&&!f()},get children(){var e=_();return a(e,s(m,{height:`1.5rem`,width:`40%`}),null),a(e,s(p,{rows:6,cols:4}),null),e}}),s(e,{get when(){return c(()=>u()!==null)()&&!f()},get children(){var e=v();return e.addEventListener(`submit`,C),e.$$click=S,t(()=>e.innerHTML=u()),e}})]}function C(e){let n=()=>`/wurk/${e.tab}?wurk_ext_embed=1`;return[s(h,{icon:`fa-puzzle-piece`,get title(){return e.title},get summary(){return l(`extension.summary`)},get children(){var n=y();return n.firstChild,a(n,()=>l(`extension.open`),null),t(()=>o(n,`href`,`/wurk/${e.tab}`)),n}}),(()=>{var r=b();return t(t=>{var i=e.title,a=n();return i!==t.e&&o(r,`title`,t.e=i),a!==t.t&&o(r,`src`,t.t=a),t},{e:void 0,t:void 0}),r})()]}i([`click`]);export{x as default};
@@ -0,0 +1,2 @@
1
+ import{C as e,E as t,F as n,d as r,f as i,g as a,j as o,p as s,r as c,u as l,y as u}from"./i18n-gIeA5VLo.js";import{a as d,i as f,t as p}from"./utils-DDJC7tJV.js";import{t as m}from"./Modal-DzVfgsSF.js";var h=u(`<div style=display:flex;flex-direction:column;gap:3px><span style=font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.04em></span><span style=font-size:13px;word-break:break-word>`),g=u(`<div style=display:flex;gap:0.5rem;justify-content:flex-end;flex-wrap:wrap>`),_=u(`<button>`),v=u(`<span style=color:var(--text-muted)>—`),y=u(`<div style=display:flex;flex-direction:column;gap:3px><span style=font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.04em></span><span style=font-size:13px;color:var(--danger);word-break:break-word>`),b=u(`<pre class=job-backtrace>`),x=u(`<div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));gap:0.9rem">`),S=u(`<div style=display:flex;flex-direction:column;gap:1rem><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));gap:0.9rem">`),C=u(`<pre style=margin:0;white-space:pre-wrap;word-break:break-word>`);function w(e){return(()=>{var t=h(),r=t.firstChild,o=r.nextSibling;return i(r,()=>e.label),i(o,()=>e.children),n(t=>a(o,`font-family`,e.mono?`ui-monospace, monospace`:void 0)),t})()}function T(r){return o(m,{get open(){return r.entry!==null},get onClose(){return r.onClose},get title(){return r.entry?.klass??c(`job.detail`)},width:680,footer:r.actions&&r.actions.length>0&&r.onAction?(()=>{var t=g();return i(t,o(e,{get each(){return r.actions},children:e=>(()=>{var t=_();return t.$$click=()=>{r.pending||e.danger&&!window.confirm(c(`actions.confirm`,{action:e.label,scope:c(`job.detail`).toLowerCase()}))||r.onAction?.(e.cmd)},i(t,()=>e.label),n(n=>{var i=`btn btn-sm${e.danger?` btn-danger`:``}`,a=r.pending;return i!==n.e&&l(t,n.e=i),a!==n.t&&(t.disabled=n.t=a),n},{e:void 0,t:void 0}),t})()})),t})():void 0,get children(){return o(t,{get when(){return r.entry},children:n=>(()=>{var a=S(),l=a.firstChild;return i(l,o(w,{get label(){return c(`job.class`)},get children(){return n().klass}}),null),i(l,o(t,{get when(){return n().queue},get children(){return o(w,{get label(){return c(`job.queue`)},get children(){return n().queue}})}}),null),i(l,o(w,{get label(){return c(`job.jid`)},mono:!0,get children(){return n().jid}}),null),i(l,o(t,{get when(){return typeof n().retry_count==`number`},get children(){return o(w,{get label(){return c(`job.retries`)},get children(){return n().retry_count}})}}),null),i(l,o(t,{get when(){return n().enqueued_at!=null},get children(){return o(w,{get label(){return c(`job.enqueued`)},mono:!0,get children(){return[s(()=>f(n().enqueued_at)),` (`,s(()=>d(n().enqueued_at)),`)`]}})}}),null),i(l,o(t,{get when(){return n().at!=null},get children(){return o(w,{get label(){return r.atLabel??c(`job.at`)},mono:!0,get children(){return[s(()=>f(n().at)),` (`,s(()=>d(n().at)),`)`]}})}}),null),i(a,o(w,{get label(){return c(`job.args`)},mono:!0,get children(){return o(t,{get when(){return p(n().args)===`[]`||p(n().args)===``},get fallback(){return(()=>{var e=C();return i(e,()=>p(n().args)),e})()},get children(){return v()}})}}),null),i(a,o(t,{get when(){return n().error_class||n().error_message},get children(){var e=y(),t=e.firstChild,r=t.nextSibling;return i(t,()=>c(`job.error`)),i(r,()=>n().error_class,null),i(r,(()=>{var e=s(()=>!!n().error_message);return()=>e()?`: ${n().error_message}`:``})(),null),e}}),null),i(a,o(t,{get when(){return s(()=>!!n().error_backtrace)()&&n().error_backtrace.length>0},get children(){return o(w,{get label(){return c(`job.backtrace`)},get children(){var e=b();return i(e,()=>n().error_backtrace.join(`
2
+ `)),e}})}}),null),i(a,o(t,{get when(){return s(()=>!!n().custom_rows)()&&n().custom_rows.length>0},get children(){var t=x();return i(t,o(e,{get each(){return n().custom_rows},children:([e,t])=>o(w,{label:e,children:t})})),t}}),null),a})()})}})}r([`click`]);export{T as t};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,F as n,O as r,T as i,W as a,c as o,d as s,f as c,g as l,h as u,j as d,o as f,r as p,s as m,y as h}from"./i18n-gIeA5VLo.js";import{i as g,r as _}from"./index-DWfWAGBc.js";import{n as v,t as y}from"./usePageParam-BcAvRko-.js";import{n as b,t as x}from"./useSort-D5Am4bGq.js";import{t as S}from"./PageHeader-Dp3qhX3e.js";var C=h(`<div>`),w=h(`<div class=empty-state style=color:var(--danger)>`),T=h(`<span class="badge badge-muted">`),E=h(`<th>`),D=h(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),O=h(`<div class=empty-state>`),k=h(`<div style=display:flex;align-items:center;gap:0.5rem><div class=progress-bar-track style=flex:1><div class=progress-bar-fill></div></div><span style=font-size:12px;color:var(--text-muted);min-width:36px>%`),A=h(`<span class="badge badge-success">available`),j=h(`<td><button class="btn btn-sm">Reset`),M=h(`<tr><td style=font-weight:500></td><td><span class="badge badge-accent"></span></td><td style=font-variant-numeric:tabular-nums></td><td style=font-variant-numeric:tabular-nums></td><td style=width:160px></td><td>`),N=h(`<span style=color:var(--text-muted)>—`),P=h(`<span class="badge badge-danger">exhausted`),F=25,I={name:e=>e.name,type:e=>e.type,used:e=>e.status?.used??0,limit:e=>e.status?.limit??null,usage:e=>{let t=e.status?.used??0,n=e.status?.limit??null;return n&&n>0?t/n:0},status:e=>e.status?.[`available?`]??!0?`available`:`exhausted`};function L(){let s=o(),h=g(),L=()=>h.data?.read_only??!1,[R,z]=y();a(()=>{document.title=`${p(`nav.limiters`)} — Wurk`});let B=m(()=>({queryKey:[`limiters`,R()],queryFn:()=>fetch(`/wurk/api/limiters?page=${R()-1}&count=${F}`).then(e=>e.json()),refetchInterval:5e3})),V=f(()=>({mutationFn:e=>fetch(`/wurk/api/limiters/${encodeURIComponent(e)}/reset`,{method:`POST`}),onSuccess:()=>s.invalidateQueries({queryKey:[`limiters`]})})),{sorted:H,sort:U,toggle:W}=x(()=>B.data?.limiters??[],I);return d(r,{get children(){return[d(i,{get when(){return B.isPending},get children(){var e=C();return c(e,d(S,{icon:`fa-gauge`,get title(){return p(`nav.limiters`)},get summary(){return p(`summaries.limiters`)}}),null),c(e,d(_,{rows:8,get cols(){return L()?6:7}}),null),e}}),d(i,{get when(){return B.isError||!B.data},get children(){var e=w();return c(e,()=>p(`common.error`)),e}}),d(i,{get when(){return B.data},children:r=>(()=>{var i=C();return c(i,d(S,{icon:`fa-gauge`,get title(){return p(`nav.limiters`)},get summary(){return p(`summaries.limiters`)},get children(){var e=T();return c(e,()=>r().total.toLocaleString()),e}}),null),c(i,d(t,{get when(){return H().length>0},get fallback(){return(()=>{var e=O();return c(e,()=>p(`common.empty`)),e})()},get children(){return[(()=>{var r=D(),i=r.firstChild.firstChild,a=i.firstChild,o=i.nextSibling;return c(a,d(b,{label:`Name`,sortKey:`name`,get sort(){return U()},onSort:W}),null),c(a,d(b,{label:`Type`,sortKey:`type`,get sort(){return U()},onSort:W}),null),c(a,d(b,{label:`Used`,sortKey:`used`,get sort(){return U()},onSort:W}),null),c(a,d(b,{label:`Limit`,sortKey:`limit`,get sort(){return U()},onSort:W}),null),c(a,d(b,{label:`Usage`,sortKey:`usage`,get sort(){return U()},onSort:W}),null),c(a,d(b,{label:`Status`,sortKey:`status`,get sort(){return U()},onSort:W}),null),c(a,d(t,{get when(){return!L()},get children(){return E()}}),null),c(o,d(e,{get each(){return H()},children:e=>{let r=e.status,i=r?.used??0,a=r?.limit??null,o=a&&a>0?Math.min(i/a*100,100):0,s=o>90?`var(--danger)`:o>70?`var(--warning)`:`var(--success)`,f=r?.[`available?`]??!0,p=r?Object.entries(r).filter(([e])=>![`used`,`limit`,`reset_at`,`available?`].includes(e)).map(([e,t])=>`${e}=${t}`).join(` `):``;return(()=>{var r=M(),m=r.firstChild,h=m.nextSibling,g=h.firstChild,_=h.nextSibling,v=_.nextSibling,y=v.nextSibling,b=y.nextSibling;return c(m,()=>e.name),c(g,()=>e.type),u(_,`title`,p),c(_,()=>i.toLocaleString()),c(v,()=>a==null?`∞`:a.toLocaleString()),c(y,d(t,{when:a!=null,get fallback(){return N()},get children(){var e=k(),t=e.firstChild,n=t.firstChild,r=t.nextSibling,i=r.firstChild;return l(n,`width`,`${o}%`),l(n,`background`,s),c(r,()=>Math.round(o),i),e}})),c(b,d(t,{when:f,get fallback(){return P()},get children(){return A()}})),c(r,d(t,{get when(){return!L()},get children(){var t=j(),r=t.firstChild;return r.$$click=()=>V.mutate(e.name),n(()=>r.disabled=V.isPending),t}}),null),n(()=>u(m,`title`,e.name)),r})()}})),r})(),d(v,{get page(){return R()},get total(){return r().total},count:F,onChange:z})]}}),null),i})()})]}})}s([`click`]);export{L as default};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,F as n,L as r,P as i,W as a,d as o,f as s,g as c,h as l,j as u,p as d,r as f,s as p,u as ee,y as m}from"./i18n-gIeA5VLo.js";import{t as h}from"./index-DWfWAGBc.js";import{n as g,o as _}from"./utils-DDJC7tJV.js";import{n as v,r as y,t as b}from"./charts-6uvCyY0x.js";var x=m(`<span style=font-size:12px;margin-inline-start:8px>%`),S=m(`<div role=status>`),C=m(`<div class=obs-tablescroll><table><thead><tr><th>Job Class</th><th style=text-align:end>Count</th><th style=text-align:end>% Total</th></tr></thead><tbody>`),w=m(`<div class=obs><div class=obs-toolbar><span class=obs-toolbar__label><i class="fa-regular fa-calendar"aria-hidden=true></i> Time Range:</span><div class=obs-seg role=tablist aria-label="Time range"></div></div><div class=obs-metrics><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono>Total Processed</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>across all queues</span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono>Failed Jobs</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>total failures</span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono>Avg Latency</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>head-of-line</span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono>Active Workers</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>Throughput &amp; Failures</h2><p class=obs-panel__sub>Jobs processed per bucket over the last </p></div><div class=obs-legend><span><i class="dot dot--processed"></i> Processed</span><span><i class="dot dot--failed"></i> Failed</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>Queue Depth</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>Top Job Types (Volume)`),T=m(`<button role=tab>`),E=m(`<div class=empty-state style=height:300px;display:grid;place-items:center>No history yet — the chart fills in as jobs run.`),te=m(`<div class=empty-state style=height:240px;display:grid;place-items:center>No queue history yet.`),ne=m(`<div class=obs-empty>`),re=m(`<tr><td style=color:var(--obs-text)><span class=obs-jobdot></span></td><td style=text-align:end;font-variant-numeric:tabular-nums></td><td class=obs-pct style=text-align:end>%`),D=m(`<div class="obs-card obs-panel"><div class=obs-panel__head><h2 class=obs-panel__title style=font-size:18px>Queue Latency (seconds)</h2></div><div class=obs-chartbox>`),O=m(`<div class="obs-card obs-panel"><div class=obs-panel__head><h2 class=obs-panel__title style=font-size:18px>Historical Snapshots</h2></div><div class=obs-chartbox>`),k=[`var(--accent)`,`#e0b341`,`#46b3a8`,`#d4737e`,`#8a7fd1`,`#5fa8d3`,`#c08457`,`#7bb274`],A=e=>k[e%k.length],j=[`#fafafa`,`#d4d4d8`,`#a1a1aa`,`#71717a`,`#52525b`,`#3f3f46`],M=[{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}],N=(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 P(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 F(e){return u(t,{get when(){return e.pct!==null},get children(){return(()=>{let t=()=>e.pct>=0,r=()=>t()===e.goodWhenUp;return(()=>{var i=x(),a=i.firstChild;return s(i,()=>t()?`↑`:`↓`,a),s(i,()=>Math.abs(e.pct),a),n(e=>c(i,`color`,r()?`var(--success)`:`var(--danger)`)),i})()})()}})}var I=(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 L(e){return(()=>{var t=S();return s(t,u(h,{height:`100%`})),n(n=>{var r=`${e.height}px`,i=f(`common.loading`);return r!==n.e&&c(t,`height`,n.e=r),i!==n.t&&l(t,`aria-label`,n.t=i),n},{e:void 0,t:void 0}),t})()}function R(){let[o,m]=r(2),h=()=>M[o()];a(()=>{document.title=`${f(`nav.metrics`)} — Wurk`});let v=p(()=>({queryKey:[`stats`],queryFn:()=>fetch(`/wurk/api/stats`).then(e=>e.json()),refetchInterval:5e3})),x=p(()=>({queryKey:[`history`,h().bucket,h().window],queryFn:()=>fetch(`/wurk/api/history/${h().bucket}?window=${h().window}`).then(e=>e.json()),refetchInterval:3e4})),S=p(()=>({queryKey:[`metrics`,h().minutes],queryFn:()=>fetch(`/wurk/api/metrics?minutes=${h().minutes}`).then(e=>e.json()),refetchInterval:3e4})),D=p(()=>({queryKey:[`queue-history`,h().bucket,h().window],queryFn:async()=>{let e=await fetch(`/wurk/api/queue-history/${h().bucket}?window=${h().window}`);if(!e.ok)throw Error(`queue-history failed (${e.status})`);return e.json()},refetchInterval:3e4})),O=i(()=>(x.data?.series??[]).map(e=>({...e,label:N(e.at,h().bucket)}))),k=i(()=>{let e=h(),t=`slice`in e?e.slice:void 0;return t?O().slice(-t):O()}),A=i(()=>k().some(e=>e.processed>0||e.failed>0)),R=i(()=>D.data?.queues??[]),B=i(()=>R()[0]?.points.map(e=>e.at)??[]),H=i(()=>I(B().map((e,t)=>({label:N(e,h().bucket),depth:R().reduce((e,n)=>e+(n.points[t]?.size??0),0)})),16)),U=i(()=>Math.max(0,...H().map(e=>e.depth))),W=i(()=>(S.data?.top_jobs??[]).map(e=>({klass:e.klass,count:e.processed+e.failed})).sort((e,t)=>t.count-e.count)),G=i(()=>W().reduce((e,t)=>e+t.count,0)),K=i(()=>W().slice(0,6));return(()=>{var r=w(),i=r.firstChild,a=i.firstChild.nextSibling,p=i.nextSibling,N=p.firstChild,I=N.firstChild.nextSibling,R=N.nextSibling,B=R.firstChild.nextSibling,W=R.nextSibling,ie=W.firstChild.nextSibling,q=W.nextSibling.firstChild.nextSibling,ae=q.nextSibling,J=p.nextSibling,Y=J.firstChild,X=Y.firstChild.firstChild.nextSibling;X.firstChild;var oe=Y.nextSibling,Z=J.nextSibling.firstChild,Q=Z.firstChild,se=Q.firstChild.nextSibling,ce=Q.nextSibling,$=Z.nextSibling;return $.firstChild.firstChild,s(a,u(e,{each:M,children:(e,t)=>(()=>{var r=T();return r.$$click=()=>m(t()),s(r,()=>e.key),n(e=>{var n=t()===o(),i=t()===o()?`is-active`:``;return n!==e.e&&l(r,`aria-selected`,e.e=n),i!==e.t&&ee(r,e.t=i),e},{e:void 0,t:void 0}),r})()})),s(I,()=>(v.data?.processed??0).toLocaleString(),null),s(I,u(F,{get pct(){return P(O(),`processed`)},goodWhenUp:!0}),null),s(B,()=>(v.data?.failed??0).toLocaleString(),null),s(B,u(F,{get pct(){return P(O(),`failed`)},goodWhenUp:!1}),null),s(ie,(()=>{var e=d(()=>!!v.data);return()=>e()?g(v.data.latency):`—`})()),s(q,()=>(v.data?.processes??0).toLocaleString()),s(ae,()=>(v.data?.processes??0)>0?`Stable`:`No workers`),s(X,()=>h().key,null),s(oe,u(t,{get when(){return!x.isPending},get fallback(){return u(L,{height:300})},get children(){return u(t,{get when(){return A()},get fallback(){return E()},get children(){return u(y,{get data(){return k()},height:300,yAxisWidth:36,yDecimals:!1,xMinTickGap:56,series:[{key:`processed`,name:`Processed`,stroke:`#fafafa`,strokeWidth:2,fill:`gradient`},{key:`failed`,name:`Failed`,stroke:`#a1a1aa`,strokeWidth:1.5,strokeDasharray:`5 4`,fill:`none`}]})}})}})),s(se,(()=>{var e=d(()=>U()>0);return()=>e()?`peak ${U().toLocaleString()}`:``})()),s(ce,u(t,{get when(){return!D.isPending},get fallback(){return u(L,{height:240})},get children(){return u(t,{get when(){return H().length>0},get fallback(){return te()},get children(){return u(b,{get data(){return H().map(e=>({label:e.label,value:e.depth,color:e.depth===U()&&U()>0?`#fafafa`:`#3f3f46`}))},height:240,name:`Depth`,yAxisWidth:36,yDecimals:!1,xMinTickGap:40})}})}})),s($,u(t,{get when(){return!S.isPending},get fallback(){return u(L,{height:240})},get children(){return u(t,{get when(){return K().length>0},get fallback(){return(()=>{var e=ne();return s(e,()=>f(`common.empty`)),e})()},get children(){var t=C(),r=t.firstChild.firstChild;r.firstChild.firstChild.nextSibling.nextSibling;var i=r.nextSibling;return s(i,u(e,{get each(){return K()},children:(e,t)=>(()=>{var r=re(),i=r.firstChild,a=i.firstChild,o=i.nextSibling,u=o.nextSibling,f=u.firstChild;return s(i,()=>_(e.klass.split(`::`).pop()??e.klass,36),null),s(o,()=>e.count.toLocaleString()),s(u,(()=>{var t=d(()=>G()>0);return()=>t()?Math.round(e.count/G()*100):0})(),f),n(n=>{var r=e.klass,o=j[t()%j.length];return r!==n.e&&l(i,`title`,n.e=r),o!==n.t&&c(a,`background`,n.t=o),n},{e:void 0,t:void 0}),r})()})),t}})}}),null),s(r,u(z,{get range(){return h()}}),null),s(r,u(V,{}),null),r})()}function z(e){let n=p(()=>({queryKey:[`queue-history-lat`,e.range.bucket,e.range.window],queryFn:async()=>{let t=await fetch(`/wurk/api/queue-history/${e.range.bucket}?window=${e.range.window}`);if(!t.ok)throw Error(`queue-history failed (${t.status})`);return t.json()},refetchInterval:3e4})),r=i(()=>n.data?.queues??[]),a=i(()=>r().map((e,t)=>({key:`queue_${t}`,name:e.name}))),o=i(()=>r()[0]?.points.map(e=>e.at)??[]),c=i(()=>o().map((t,n)=>{let i={label:N(t,e.range.bucket)};return r().forEach((e,t)=>{i[a()[t].key]=e.points[n]?.latency??0}),i})),l=i(()=>a().map((e,t)=>({key:e.key,name:e.name,stroke:A(t),strokeWidth:2}))),d=i(()=>r().some(e=>e.points.some(e=>e.latency>0)));return u(t,{get when(){return d()},get children(){var e=D(),t=e.firstChild;t.firstChild;var n=t.nextSibling;return s(n,u(v,{get data(){return c()},get series(){return l()},height:240,legend:!0,yAxisWidth:40,xMinTickGap:48})),e}})}var B=new Set([`processed`,`failures`]);function V(){let e=p(()=>({queryKey:[`history-snapshots`],queryFn:async()=>{let e=await fetch(`/wurk/api/history/snapshots?limit=1000`);if(!e.ok)throw Error(`history snapshots request failed (${e.status})`);return e.json()},refetchInterval:3e4})),n=i(()=>e.data?.snapshots??[]),r=i(()=>Array.from(new Set(n().flatMap(e=>Object.keys(e).filter(t=>t!==`at`&&!B.has(t)&&typeof e[t]==`number`))))),a=i(()=>n().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})),o=i(()=>r().map((e,t)=>({key:e,name:e,stroke:A(t),strokeWidth:2})));return u(t,{get when(){return d(()=>n().length>0)()&&r().length>0},get children(){var e=O(),t=e.firstChild;t.firstChild;var n=t.nextSibling;return s(n,u(v,{get data(){return a()},get series(){return o()},height:240,legend:!0,yAxisWidth:40,yDecimals:!1,xMinTickGap:48})),e}})}o([`click`]);export{R as default};
@@ -0,0 +1 @@
1
+ import{E as e,F as t,L as n,N as r,U as i,W as a,b as o,d as s,f as c,g as l,h as u,j as d,y as f}from"./i18n-gIeA5VLo.js";var p=f(`<div class=modal-footer>`),m=f(`<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(s){let f,h=`modal-title-${Math.random().toString(36).slice(2)}`,[g,_]=n({title:s.title,children:s.children});r(()=>{s.open&&_({title:s.title,children:s.children})});let v=()=>s.open?{title:s.title,children:s.children}:g();return r(()=>{s.open&&!f.open?f.showModal():!s.open&&f.open&&f.close()}),a(()=>{let e=e=>{e.preventDefault(),s.onClose()};f.addEventListener(`cancel`,e),i(()=>f.removeEventListener(`cancel`,e))}),(()=>{var n=m(),r=n.firstChild,i=r.firstChild,a=i.firstChild,g=a.nextSibling,_=i.nextSibling;n.$$click=e=>{e.target===f&&s.onClose()};var y=f;return typeof y==`function`?o(y,n):f=n,u(n,`aria-labelledby`,h),u(a,`id`,h),c(a,()=>v().title),g.$$click=()=>s.onClose(),c(_,()=>v().children),c(r,d(e,{get when(){return s.footer},get children(){var e=p();return c(e,()=>s.footer),e}}),null),t(e=>l(r,`max-width`,`${s.width??640}px`)),n})()}s([`click`]);export{h as t};
@@ -0,0 +1 @@
1
+ import{E as e,F as t,f as n,j as r,u as i,y as a}from"./i18n-gIeA5VLo.js";var o=a(`<div class=page-header__aside>`),s=a(`<div class=page-header><span class=page-header__icon><i></i></span><div class=page-header__text><h1 class=page-header__title></h1><p class=page-header__summary>`);function c(a){return(()=>{var c=s(),l=c.firstChild,u=l.firstChild,d=l.nextSibling.firstChild,f=d.nextSibling;return n(d,()=>a.title),n(f,()=>a.summary),n(c,r(e,{get when(){return a.children!=null},get children(){var e=o();return n(e,()=>a.children),e}}),null),t(()=>i(u,`fa-solid ${a.icon}`)),c})()}export{c as t};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,F as n,O as r,T as i,W as a,f as o,h as s,j as c,p as l,r as u,s as d,y as f}from"./i18n-gIeA5VLo.js";import{r as p}from"./index-DWfWAGBc.js";var m=f(`<div class=obs>`),h=f(`<div class=obs><div class=empty-state style=color:var(--danger)>`),g=f(`<div class="obs-card obs-table"><div class=obs-tablescroll><table><thead><tr><th>Type</th><th>JID</th><th>Started</th><th>Elapsed</th><th>Size</th><th></th></tr></thead><tbody>`),_=f(`<div class=obs><div class=obs-pagehead><div><h1></h1><p class=obs-panel__sub></p></div><span class="obs-chip obs-chip--active">`),v=f(`<div class="obs-card obs-empty">`),y=f(`<tr><td style=font-weight:500;color:var(--obs-text)></td><td><span class=obs-mono-cell></span></td><td></td><td> ms</td><td></td><td style=text-align:end><a class="obs-btn obs-btn--ghost obs-btn--sm"target=_blank rel="noopener noreferrer"><i class="fa-solid fa-up-right-from-square"aria-hidden=true></i> Open`);function b(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function x(e){return e?new Date(e*1e3).toLocaleString():`—`}function S(){a(()=>{document.title=`${u(`nav.profiles`)} — Wurk`});let f=d(()=>({queryKey:[`profiles`],queryFn:async()=>{let e=await fetch(`/wurk/api/profiles`);if(!e.ok)throw Error(`profiles request failed: ${e.status}`);return e.json()},refetchInterval:5e3}));return c(r,{get children(){return[c(i,{get when(){return f.isPending},get children(){var e=m();return o(e,c(p,{rows:8,cols:6})),e}}),c(i,{get when(){return!Array.isArray(f.data)},get children(){var e=h(),t=e.firstChild;return o(t,()=>u(`common.error`)),e}}),c(i,{get when(){return l(()=>!!Array.isArray(f.data))()&&f.data},children:r=>(()=>{var i=_(),a=i.firstChild.firstChild,l=a.firstChild,d=l.nextSibling,f=a.nextSibling;return o(l,()=>u(`nav.profiles`)),o(d,()=>u(`summaries.profiles`)),o(f,()=>r().length.toLocaleString()),o(i,c(t,{get when(){return r().length>0},get fallback(){return(()=>{var e=v();return o(e,()=>u(`common.empty`)),e})()},get children(){var t=g(),i=t.firstChild.firstChild.firstChild.nextSibling;return o(i,c(e,{get each(){return r()},children:e=>(()=>{var t=y(),r=t.firstChild,i=r.nextSibling,a=i.firstChild,c=i.nextSibling,l=c.nextSibling,u=l.firstChild,d=l.nextSibling,f=d.nextSibling.firstChild;return o(r,()=>e.type),o(a,()=>e.jid),o(c,()=>x(e.started_at)),o(l,()=>e.elapsed.toLocaleString(),u),o(d,()=>b(e.size)),n(()=>s(f,`href`,`/wurk/profiles/${encodeURIComponent(e.key)}`)),t})()})),t}}),null),i})()})]}})}export{S as default};
@@ -0,0 +1 @@
1
+ import{A as e,C as t,E as n,F as r,L as i,N as a,O as o,R as s,T as c,W as l,b as u,c as d,d as f,f as p,g as m,h,j as g,l as _,o as v,p as y,r as b,s as x,y as S}from"./i18n-gIeA5VLo.js";import{i as C,r as w}from"./index-DWfWAGBc.js";import{a as T,n as E,o as D,t as O}from"./utils-DDJC7tJV.js";import{n as k,t as A}from"./usePageParam-BcAvRko-.js";import{n as j,t as M}from"./useSort-D5Am4bGq.js";import{t as N}from"./PageHeader-Dp3qhX3e.js";import{t as P}from"./Modal-DzVfgsSF.js";import{t as F}from"./ArgsValue-BUqJa-eG.js";import{t as I}from"./JobDetailModal-BhNdWSp7.js";var L=S(`<span style=display:inline-flex>`),R=S(`<div role=tooltip style="position:fixed;transform:translate(-50%, -100%);max-width:260px;background:var(--surface-strong);color:var(--text);border:1px solid var(--border-strong);padding:0.4rem 0.6rem;border-radius:6px;font-size:12px;line-height:1.35;z-index:9999;pointer-events:none;box-shadow:0 4px 14px rgba(0, 0, 0, 0.45)">`);function z(t){let[o,c]=i(null),l,d=s(),f=()=>{let e=l?.getBoundingClientRect();e&&c({x:e.left+e.width/2,y:e.top})},v=e(()=>t.children);return a(()=>{let e=v();e instanceof HTMLElement&&e.setAttribute(`aria-describedby`,d)}),(()=>{var e=L();e.addEventListener(`mouseleave`,()=>c(null)),e.addEventListener(`mouseenter`,f);var i=l;return typeof i==`function`?u(i,e):l=e,p(e,v,null),p(e,g(n,{get when(){return o()},children:e=>g(_,{get children(){var n=R();return h(n,`id`,d),p(n,()=>t.tip),r(t=>{var r=`${e().x}px`,i=`${e().y-8}px`;return r!==t.e&&m(n,`left`,t.e=r),i!==t.t&&m(n,`top`,t.t=i),t},{e:void 0,t:void 0}),n}})}),null),e})()}var B=S(`<div class=empty-state style=color:var(--danger)>`),V=S(`<span class="badge badge-warning">`),H=S(`<th class=row-action>`),U=S(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),W=S(`<div class=qjobs><div style=display:flex;align-items:center;gap:0.75rem;margin-bottom:1rem><span style=color:var(--text-muted);font-size:13px> jobs · <span>latency `),G=S(`<div class=empty-state>`),K=S(`<td class=row-action><button class="btn btn-sm btn-danger">`),q=S(`<tr class=row-clickable><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td></td><td>`),J=S(`<div>`),Y=S(`<button class="btn btn-sm">`),X=S(`<td class=row-action><div style=display:flex;gap:0.4rem;justify-content:flex-end><button class="btn btn-sm btn-danger">`),Z=S(`<tr class=row-clickable><td style=font-weight:500></td><td></td><td></td><td>`),Q=S(`<span class="badge badge-success">Active`),$=25,ee={jid:e=>e.jid,class:e=>e.class,args:e=>O(e.args),enqueued:e=>e.enqueued_at};function te(e){let[a,s]=A(),[l,u]=i(null),f=C(),m=()=>f.data?.read_only??!1,_=d(),y=x(()=>({queryKey:[`queue`,e.name,a()],queryFn:()=>fetch(`/wurk/api/queues/${encodeURIComponent(e.name)}?page=${a()-1}&count=${$}`).then(e=>e.json())})),S=v(()=>({mutationFn:async t=>{let n=await fetch(`/wurk/api/queues/${encodeURIComponent(e.name)}/delete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({jid:t})});if(!n.ok)throw Error(`Delete failed (${n.status})`);return n},onSuccess:()=>{_.invalidateQueries({queryKey:[`queue`,e.name]}),_.invalidateQueries({queryKey:[`queues`]}),_.invalidateQueries({queryKey:[`stats`]})}})),{sorted:N,sort:P,toggle:L}=M(()=>y.data?.jobs??[],ee);return g(o,{get children(){return[g(c,{get when(){return y.isPending},get children(){return g(w,{rows:6,cols:5})}}),g(c,{get when(){return y.isError||!y.data},get children(){var e=B();return p(e,()=>b(`common.error`)),e}}),g(c,{get when(){return y.data},children:i=>(()=>{var o=W(),c=o.firstChild,d=c.firstChild,f=d.firstChild,_=f.nextSibling;return _.firstChild,p(d,()=>i().size.toLocaleString(),f),p(_,()=>E(i().latency),null),p(c,g(n,{get when(){return i().paused},get children(){var e=V();return p(e,()=>b(`dashboard.paused`)),e}}),null),p(o,g(n,{get when(){return N().length>0},get fallback(){return(()=>{var e=G();return p(e,()=>b(`common.empty`)),e})()},get children(){return[(()=>{var i=U(),a=i.firstChild.firstChild,o=a.firstChild,s=a.nextSibling;return p(o,g(j,{get label(){return b(`table.jid`)},sortKey:`jid`,get sort(){return P()},onSort:L}),null),p(o,g(j,{get label(){return b(`table.class`)},sortKey:`class`,get sort(){return P()},onSort:L}),null),p(o,g(j,{get label(){return b(`table.args`)},sortKey:`args`,get sort(){return P()},onSort:L}),null),p(o,g(j,{get label(){return b(`table.enqueued_at`)},sortKey:`enqueued`,get sort(){return P()},onSort:L}),null),p(o,g(n,{get when(){return!m()},get children(){return H()}}),null),p(s,g(t,{get each(){return N()},children:t=>{let i=O(t.args);return(()=>{var a=q(),o=a.firstChild,s=o.nextSibling,c=s.nextSibling,l=c.nextSibling;return a.$$click=()=>u({jid:t.jid,klass:t.class,args:t.args,queue:e.name,enqueued_at:t.enqueued_at}),p(o,()=>D(t.jid,12)),p(s,()=>t.class),p(c,g(F,{str:i,max:60})),p(l,()=>T(t.enqueued_at)),p(a,g(n,{get when(){return!m()},get children(){var e=K(),n=e.firstChild;return e.$$click=e=>e.stopPropagation(),n.$$click=()=>{window.confirm(b(`actions.confirm`,{action:b(`actions.delete`),scope:b(`actions.scope_this_job`)}))&&S.mutate(t.jid)},p(n,()=>b(`actions.delete`)),r(()=>n.disabled=S.isPending),e}}),null),r(()=>h(o,`title`,t.jid)),a})()}})),i})(),g(k,{get page(){return a()},get total(){return i().size},count:$,onChange:s})]}}),null),p(o,g(I,{get entry(){return l()},onClose:()=>u(null)}),null),r(()=>h(_,`title`,`${i().latency.toFixed(3)}s`)),o})()})]}})}var ne={name:e=>e.name,size:e=>e.size,latency:e=>e.latency,status:e=>e.paused?`paused`:`active`};function re(){let[e,a]=i(null),s=C(),u=()=>s.data?.read_only??!1,f=d();l(()=>{document.title=`${b(`nav.queues`)} — Wurk`});let m=x(()=>({queryKey:[`queues`],queryFn:()=>fetch(`/wurk/api/queues`).then(e=>e.json()),refetchInterval:5e3})),_=v(()=>({mutationFn:async e=>{let t=await fetch(`/wurk/api/queues/${encodeURIComponent(e)}/clear`,{method:`POST`});if(!t.ok)throw Error(`Clear failed (${t.status})`);return t},onSuccess:(e,t)=>{f.invalidateQueries({queryKey:[`queues`]}),f.invalidateQueries({queryKey:[`queue`,t]}),f.invalidateQueries({queryKey:[`stats`]})}})),S=v(()=>({mutationFn:async({name:e,paused:t})=>{let n=t?`unpause`:`pause`,r=await fetch(`/wurk/api/queues/${encodeURIComponent(e)}/${n}`,{method:`POST`});if(!r.ok)throw Error(`${n} failed (${r.status})`);return r},onSuccess:(e,{name:t})=>{f.invalidateQueries({queryKey:[`queues`]}),f.invalidateQueries({queryKey:[`queue`,t]}),f.invalidateQueries({queryKey:[`stats`]})}})),{sorted:T,sort:D,toggle:O}=M(()=>m.data??[],ne);return g(o,{get children(){return[g(c,{get when(){return m.isPending},get children(){var e=J();return p(e,g(N,{icon:`fa-layer-group`,get title(){return b(`nav.queues`)},get summary(){return b(`summaries.queues`)}}),null),p(e,g(w,{rows:8,cols:5}),null),e}}),g(c,{get when(){return m.isError||!m.data},get children(){var e=B();return p(e,()=>b(`common.error`)),e}}),g(c,{get when(){return m.data},children:i=>(()=>{var i=J();return p(i,g(N,{icon:`fa-layer-group`,get title(){return b(`nav.queues`)},get summary(){return b(`summaries.queues`)}}),null),p(i,g(n,{get when(){return T().length>0},get fallback(){return(()=>{var e=G();return p(e,()=>b(`common.empty`)),e})()},get children(){var e=U(),i=e.firstChild.firstChild,o=i.firstChild,s=i.nextSibling;return p(o,g(j,{label:`Name`,sortKey:`name`,get sort(){return D()},onSort:O}),null),p(o,g(j,{get label(){return b(`table.size`)},sortKey:`size`,get sort(){return D()},onSort:O}),null),p(o,g(j,{get label(){return b(`table.latency`)},sortKey:`latency`,get sort(){return D()},onSort:O}),null),p(o,g(j,{get label(){return b(`table.status`)},sortKey:`status`,get sort(){return D()},onSort:O}),null),p(o,g(n,{get when(){return!u()},get children(){return H()}}),null),p(s,g(t,{get each(){return T()},children:e=>(()=>{var t=Z(),i=t.firstChild,o=i.nextSibling,s=o.nextSibling,c=s.nextSibling;return t.$$click=()=>a(e.name),p(i,()=>e.name),p(o,()=>e.size.toLocaleString()),p(s,()=>E(e.latency)),p(c,g(n,{get when(){return e.paused},get fallback(){return Q()},get children(){var e=V();return p(e,()=>b(`dashboard.paused`)),e}})),p(t,g(n,{get when(){return!u()},get children(){var t=X(),n=t.firstChild,i=n.firstChild;return t.$$click=e=>e.stopPropagation(),p(n,g(z,{get tip(){return y(()=>!!e.paused)()?b(`actions.unpause_hint`):b(`actions.pause_hint`)},get children(){var t=Y();return t.$$click=()=>S.mutate({name:e.name,paused:e.paused}),p(t,(()=>{var t=y(()=>!!e.paused);return()=>t()?b(`actions.unpause`):b(`actions.pause`)})()),r(()=>t.disabled=S.isPending),t}}),i),i.$$click=()=>{window.confirm(b(`actions.confirm_clear_queue`,{name:e.name}))&&_.mutate(e.name)},p(i,()=>b(`actions.clear`)),r(()=>i.disabled=_.isPending),t}}),null),r(()=>h(s,`title`,`${e.latency.toFixed(3)}s`)),t})()})),e}}),null),p(i,g(P,{get open(){return e()!==null},onClose:()=>a(null),get title(){return e()??``},width:780,get children(){return g(n,{get when(){return e()},children:e=>g(te,{get name(){return e()}})})}}),null),i})()})]}})}f([`click`]);export{re as default};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,F as n,L as r,O as i,T as a,W as o,d as s,f as c,h as l,j as u,r as d,s as f,y as p}from"./i18n-gIeA5VLo.js";import{i as m,r as ee}from"./index-DWfWAGBc.js";import{a as h,i as g,o as _,t as v}from"./utils-DDJC7tJV.js";import{n as y,t as b}from"./usePageParam-BcAvRko-.js";import{n as x,t as S}from"./useSort-D5Am4bGq.js";import{t as C}from"./PageHeader-Dp3qhX3e.js";import{t as te}from"./ArgsValue-BUqJa-eG.js";import{t as ne}from"./JobDetailModal-BhNdWSp7.js";import{i as re,n as w,r as T,t as E}from"./useJobSetActions-DTDaAoWr.js";var D=p(`<div>`),O=p(`<div class=empty-state style=color:var(--danger)>`),k=p(`<span class="badge badge-warning">`),A=p(`<th class=row-action><input type=checkbox aria-label="Select all">`),j=p(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),M=p(`<div class=empty-state>`),ie=p(`<td class=row-action><input type=checkbox aria-label="Select job">`),N=p(`<tr class=row-clickable><td style=font-weight:500></td><td></td><td style=color:var(--danger)></td><td></td><td style=color:var(--warning)></td><td>`),P=25,F={klass:e=>e.klass,args:e=>v(e.args),error_class:e=>e.error_class,error_message:e=>e.error_message,retry_count:e=>e.retry_count,at:e=>e.at},I=[{cmd:`retry`,label:d(`actions.retry`)},{cmd:`delete`,label:d(`actions.delete`),danger:!0},{cmd:`kill`,label:d(`actions.kill`),danger:!0}],L=[{cmd:`retry`,label:d(`actions.retry`)},{cmd:`kill`,label:d(`actions.kill`),danger:!0},{cmd:`delete`,label:d(`actions.delete`),danger:!0}];function R(){let[s,p]=b(),[R,z]=r(null),[B,V]=r(null),H=m(),U=()=>H.data?.read_only??!1,W=T(),{single:G,bulk:K,all:q}=w(`retries`),J=()=>G.isPending||K.isPending||q.isPending;o(()=>{document.title=`${d(`nav.retries`)} — Wurk`});let Y=f(()=>({queryKey:[`retries`,s()],queryFn:()=>fetch(`/wurk/api/retries?page=${s()-1}&count=${P}`).then(e=>e.json())})),{sorted:X,sort:Z,toggle:Q}=S(()=>Y.data?.entries??[],F),$=()=>X().map(E),ae=()=>$().length>0&&$().every(e=>W.selected().has(e));return u(i,{get children(){return[u(a,{get when(){return Y.isPending},get children(){var e=D();return c(e,u(C,{icon:`fa-rotate-right`,get title(){return d(`nav.retries`)},get summary(){return d(`summaries.retries`)}}),null),c(e,u(ee,{rows:8,cols:7}),null),e}}),u(a,{get when(){return Y.isError||!Y.data},get children(){var e=O();return c(e,()=>d(`common.error`)),e}}),u(a,{get when(){return Y.data},children:r=>(()=>{var i=D();return c(i,u(C,{icon:`fa-rotate-right`,get title(){return d(`nav.retries`)},get summary(){return d(`summaries.retries`)},get children(){var e=k();return c(e,()=>r().total.toLocaleString()),e}}),null),c(i,u(t,{get when(){return X().length>0},get fallback(){return(()=>{var e=M();return c(e,()=>d(`common.empty`)),e})()},get children(){return[u(t,{get when(){return!U()},get children(){return u(re,{bulk:I,all:L,get selectedCount(){return W.count()},get total(){return r().total},get pending(){return J()},onBulk:e=>K.mutate({keys:[...W.selected()],cmd:e},{onSuccess:W.clear}),onAll:e=>q.mutate(e,{onSuccess:W.clear})})}}),(()=>{var r=j(),i=r.firstChild.firstChild,a=i.firstChild,o=i.nextSibling;return c(a,u(t,{get when(){return!U()},get children(){var e=A(),t=e.firstChild;return t.addEventListener(`change`,()=>W.toggleAll($())),n(()=>t.checked=ae()),e}}),null),c(a,u(x,{get label(){return d(`table.class`)},sortKey:`klass`,get sort(){return Z()},onSort:Q}),null),c(a,u(x,{get label(){return d(`table.args`)},sortKey:`args`,get sort(){return Z()},onSort:Q}),null),c(a,u(x,{get label(){return d(`table.error`)},sortKey:`error_class`,get sort(){return Z()},onSort:Q}),null),c(a,u(x,{get label(){return d(`table.message`)},sortKey:`error_message`,get sort(){return Z()},onSort:Q}),null),c(a,u(x,{get label(){return d(`table.count`)},sortKey:`retry_count`,get sort(){return Z()},onSort:Q}),null),c(a,u(x,{get label(){return d(`table.retry_at`)},sortKey:`at`,get sort(){return Z()},onSort:Q}),null),c(o,u(e,{get each(){return X()},children:e=>{let r=v(e.args),i=E(e);return(()=>{var a=N(),o=a.firstChild,s=o.nextSibling,d=s.nextSibling,f=d.nextSibling,p=f.nextSibling,m=p.nextSibling;return a.$$click=()=>{z(e),V(i)},c(a,u(t,{get when(){return!U()},get children(){var e=ie(),t=e.firstChild;return e.$$click=e=>e.stopPropagation(),t.addEventListener(`change`,()=>W.toggle(i)),n(()=>t.checked=W.selected().has(i)),e}}),o),c(o,()=>e.klass),c(s,u(te,{str:r,max:40})),c(d,()=>_(e.error_class,30)),c(f,()=>_(e.error_message,50)),c(p,()=>e.retry_count),c(m,()=>h(e.at)),n(t=>{var n=e.error_class??``,r=e.error_message??``,i=g(e.at);return n!==t.e&&l(d,`title`,t.e=n),r!==t.t&&l(f,`title`,t.t=r),i!==t.a&&l(m,`title`,t.a=i),t},{e:void 0,t:void 0,a:void 0}),a})()}})),r})(),u(y,{get page(){return s()},get total(){return r().total},count:P,onChange:p})]}}),null),c(i,u(ne,{get entry(){return R()},get atLabel(){return d(`table.retry_at`)},get actions(){return U()?void 0:I},get pending(){return G.isPending},onAction:e=>{let t=B();t&&G.mutate({key:t,cmd:e},{onSuccess:()=>{z(null),V(null)}})},onClose:()=>{z(null),V(null)}}),null),i})()})]}})}s([`click`]);export{R as default};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,F as n,L as r,O as i,T as a,W as o,d as s,f as c,h as l,j as u,r as d,s as f,y as p}from"./i18n-gIeA5VLo.js";import{i as m,r as h}from"./index-DWfWAGBc.js";import{a as g,i as ee,o as te,t as _}from"./utils-DDJC7tJV.js";import{n as ne,t as v}from"./usePageParam-BcAvRko-.js";import{n as y,t as b}from"./useSort-D5Am4bGq.js";import{t as x}from"./PageHeader-Dp3qhX3e.js";import{t as S}from"./ArgsValue-BUqJa-eG.js";import{t as re}from"./JobDetailModal-BhNdWSp7.js";import{i as C,n as w,r as T,t as E}from"./useJobSetActions-DTDaAoWr.js";var D=p(`<div>`),O=p(`<div class=empty-state style=color:var(--danger)>`),k=p(`<span class="badge badge-accent">`),A=p(`<th class=row-action><input type=checkbox aria-label="Select all">`),j=p(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),M=p(`<div class=empty-state>`),N=p(`<td class=row-action><input type=checkbox aria-label="Select job">`),P=p(`<tr class=row-clickable><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td></td><td>`),F=25,I={jid:e=>e.jid,klass:e=>e.klass,args:e=>_(e.args),at:e=>e.at},L=[{cmd:`add_to_queue`,label:d(`actions.add_to_queue`)},{cmd:`delete`,label:d(`actions.delete`),danger:!0}];function R(){let[s,p]=v(),[R,z]=r(null),[B,V]=r(null),H=m(),U=()=>H.data?.read_only??!1,W=T(),{single:G,bulk:K,all:q}=w(`scheduled`),J=()=>G.isPending||K.isPending||q.isPending;o(()=>{document.title=`${d(`nav.scheduled`)} — Wurk`});let Y=f(()=>({queryKey:[`scheduled`,s()],queryFn:()=>fetch(`/wurk/api/scheduled?page=${s()-1}&count=${F}`).then(e=>e.json())})),{sorted:X,sort:Z,toggle:Q}=b(()=>Y.data?.entries??[],I),$=()=>X().map(E),ie=()=>$().length>0&&$().every(e=>W.selected().has(e));return u(i,{get children(){return[u(a,{get when(){return Y.isPending},get children(){var e=D();return c(e,u(x,{icon:`fa-clock`,get title(){return d(`nav.scheduled`)},get summary(){return d(`summaries.scheduled`)}}),null),c(e,u(h,{rows:8,cols:5}),null),e}}),u(a,{get when(){return Y.isError||!Y.data},get children(){var e=O();return c(e,()=>d(`common.error`)),e}}),u(a,{get when(){return Y.data},children:r=>(()=>{var i=D();return c(i,u(x,{icon:`fa-clock`,get title(){return d(`nav.scheduled`)},get summary(){return d(`summaries.scheduled`)},get children(){var e=k();return c(e,()=>r().total.toLocaleString()),e}}),null),c(i,u(t,{get when(){return X().length>0},get fallback(){return(()=>{var e=M();return c(e,()=>d(`common.empty`)),e})()},get children(){return[u(t,{get when(){return!U()},get children(){return u(C,{bulk:L,all:L,get selectedCount(){return W.count()},get total(){return r().total},get pending(){return J()},onBulk:e=>K.mutate({keys:[...W.selected()],cmd:e},{onSuccess:W.clear}),onAll:e=>q.mutate(e,{onSuccess:W.clear})})}}),(()=>{var r=j(),i=r.firstChild.firstChild,a=i.firstChild,o=i.nextSibling;return c(a,u(t,{get when(){return!U()},get children(){var e=A(),t=e.firstChild;return t.addEventListener(`change`,()=>W.toggleAll($())),n(()=>t.checked=ie()),e}}),null),c(a,u(y,{get label(){return d(`table.jid`)},sortKey:`jid`,get sort(){return Z()},onSort:Q}),null),c(a,u(y,{get label(){return d(`table.class`)},sortKey:`klass`,get sort(){return Z()},onSort:Q}),null),c(a,u(y,{get label(){return d(`table.args`)},sortKey:`args`,get sort(){return Z()},onSort:Q}),null),c(a,u(y,{get label(){return d(`table.scheduled_at`)},sortKey:`at`,get sort(){return Z()},onSort:Q}),null),c(o,u(e,{get each(){return X()},children:e=>{let r=_(e.args),i=E(e);return(()=>{var a=P(),o=a.firstChild,s=o.nextSibling,d=s.nextSibling,f=d.nextSibling;return a.$$click=()=>{z(e),V(i)},c(a,u(t,{get when(){return!U()},get children(){var e=N(),t=e.firstChild;return e.$$click=e=>e.stopPropagation(),t.addEventListener(`change`,()=>W.toggle(i)),n(()=>t.checked=W.selected().has(i)),e}}),o),c(o,()=>te(e.jid,12)),c(s,()=>e.klass),c(d,u(S,{str:r,max:60})),c(f,()=>g(e.at)),n(t=>{var n=e.jid,r=ee(e.at);return n!==t.e&&l(o,`title`,t.e=n),r!==t.t&&l(f,`title`,t.t=r),t},{e:void 0,t:void 0}),a})()}})),r})(),u(ne,{get page(){return s()},get total(){return r().total},count:F,onChange:p})]}}),null),c(i,u(re,{get entry(){return R()},get atLabel(){return d(`table.scheduled_at`)},get actions(){return U()?void 0:L},get pending(){return G.isPending},onAction:e=>{let t=B();t&&G.mutate({key:t,cmd:e},{onSuccess:()=>{z(null),V(null)}})},onClose:()=>{z(null),V(null)}}),null),i})()})]}})}s([`click`]);export{R as default};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,F as n,L as r,W as i,d as a,f as o,h as s,j as c,p as l,r as u,s as d,y as f}from"./i18n-gIeA5VLo.js";import{s as p}from"./index-DWfWAGBc.js";import{a as m,o as h,t as g}from"./utils-DDJC7tJV.js";import{t as _}from"./PageHeader-Dp3qhX3e.js";var v=f(`<div class=search-empty__chips><span class=search-empty__chips-label>`),y=f(`<div class=search-empty><div class=search-empty__icon><i class="fa-solid fa-magnifying-glass"></i></div><p class=search-empty__title></p><p class=search-empty__hint>`),b=f(`<div style=margin-bottom:0.75rem;color:var(--text-muted);font-size:13px> result<!> for "<!>"`),x=f(`<div style=margin-bottom:2rem><h2 class=section-title style=margin-bottom:0.75rem>Retries <span class="badge badge-warning"></span></h2><div class=table-wrapper><table><thead><tr><th></th><th></th><th></th><th></th><th>Count</th><th></th></tr></thead><tbody>`),S=f(`<div style=margin-bottom:2rem><h2 class=section-title style=margin-bottom:0.75rem>Scheduled <span class="badge badge-accent"></span></h2><div class=table-wrapper><table><thead><tr><th></th><th></th><th></th><th></th></tr></thead><tbody>`),C=f(`<div style=margin-bottom:2rem><h2 class=section-title style=margin-bottom:0.75rem>Dead <span class="badge badge-danger"></span></h2><div class=table-wrapper><table><thead><tr><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>`),w=f(`<div class=empty-state>`),T=f(`<div><form style=display:flex;gap:0.75rem;margin-bottom:2rem><input class=input type=text placeholder="Search by JID or class name…"style=flex:1;max-width:480px><button type=submit class="btn btn-accent">`),E=f(`<button type=button class=chip>`),D=f(`<tr><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td></td><td style=color:var(--danger)></td><td></td><td>`),O=f(`<tr><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td></td><td>`),k=f(`<tr><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td></td><td style=color:var(--danger)></td><td>`);function A(e,t,n){let r=e.toLowerCase();return(t??``).toLowerCase().includes(r)||(n??``).toLowerCase().includes(r)}function j(){let[a,f]=p(),[j,M]=r(a.q??``),N=()=>a.q??``;i(()=>{document.title=`${u(`nav.search`)} — Wurk`});let P=d(()=>({queryKey:[`search-retries`],queryFn:()=>fetch(`/wurk/api/retries?page=0&count=200`).then(e=>e.json()),enabled:N().length>=2})),F=d(()=>({queryKey:[`search-scheduled`],queryFn:()=>fetch(`/wurk/api/scheduled?page=0&count=200`).then(e=>e.json()),enabled:N().length>=2})),I=d(()=>({queryKey:[`search-dead`],queryFn:()=>fetch(`/wurk/api/dead?page=0&count=200`).then(e=>e.json()),enabled:N().length>=2})),L=d(()=>({queryKey:[`search-suggest`],queryFn:()=>Promise.all([`/wurk/api/retries?page=0&count=10`,`/wurk/api/dead?page=0&count=10`].map(e=>fetch(e).then(e=>e.json()))),staleTime:3e4})),R=()=>Array.from(new Set((L.data??[]).flatMap(e=>(e.entries??[]).map(e=>e.klass)).filter(Boolean))).slice(0,5),z=e=>{M(e),f({q:e||void 0})},B=()=>N().length>=2?(P.data?.entries??[]).filter(e=>A(N(),e.jid,e.klass)):[],V=()=>N().length>=2?(F.data?.entries??[]).filter(e=>A(N(),e.jid,e.klass)):[],H=()=>N().length>=2?(I.data?.entries??[]).filter(e=>A(N(),e.jid,e.klass)):[],U=e=>{e.preventDefault(),f({q:j()||void 0})},W=()=>B().length+V().length+H().length;return(()=>{var r=T(),i=r.firstChild,a=i.firstChild,d=a.nextSibling;return o(r,c(_,{icon:`fa-magnifying-glass`,get title(){return u(`nav.search`)},get summary(){return u(`summaries.search`)}}),i),i.addEventListener(`submit`,U),a.$$input=e=>M(e.currentTarget.value),o(d,()=>u(`actions.search`)),o(r,c(t,{get when(){return N().length<2},get children(){var n=y(),r=n.firstChild.nextSibling,i=r.nextSibling;return o(r,()=>u(`search.emptyTitle`)),o(i,()=>u(`search.emptyHint`)),o(n,c(t,{get when(){return R().length>0},get children(){var t=v(),n=t.firstChild;return o(n,()=>u(`search.try`)),o(t,c(e,{get each(){return R()},children:e=>(()=>{var t=E();return t.$$click=()=>z(e),o(t,e),t})()}),null),t}}),null),n}}),null),o(r,c(t,{get when(){return N().length>=2},get children(){var e=b(),t=e.firstChild,n=t.nextSibling,r=n.nextSibling.nextSibling;return r.nextSibling,o(e,W,t),o(e,()=>W()===1?``:`s`,n),o(e,N,r),e}}),null),o(r,c(t,{get when(){return B().length>0},get children(){var t=x(),r=t.firstChild,i=r.firstChild.nextSibling,a=r.nextSibling.firstChild.firstChild,l=a.firstChild.firstChild,d=l.nextSibling,f=d.nextSibling,p=f.nextSibling,_=p.nextSibling.nextSibling,v=a.nextSibling;return o(i,()=>B().length),o(l,()=>u(`table.jid`)),o(d,()=>u(`table.class`)),o(f,()=>u(`table.args`)),o(p,()=>u(`table.error`)),o(_,()=>u(`table.retry_at`)),o(v,c(e,{get each(){return B()},children:e=>{let t=g(e.args);return(()=>{var r=D(),i=r.firstChild,a=i.nextSibling,c=a.nextSibling,l=c.nextSibling,u=l.nextSibling,d=u.nextSibling;return o(i,()=>h(e.jid,12)),o(a,()=>e.klass),s(c,`title`,t),o(c,()=>h(t,40)),o(l,()=>h(e.error_class,25)),o(u,()=>e.retry_count),o(d,()=>m(e.retry_at)),n(t=>{var n=e.jid,r=e.error_class??``;return n!==t.e&&s(i,`title`,t.e=n),r!==t.t&&s(l,`title`,t.t=r),t},{e:void 0,t:void 0}),r})()}})),t}}),null),o(r,c(t,{get when(){return V().length>0},get children(){var t=S(),r=t.firstChild,i=r.firstChild.nextSibling,a=r.nextSibling.firstChild.firstChild,l=a.firstChild.firstChild,d=l.nextSibling,f=d.nextSibling,p=f.nextSibling,_=a.nextSibling;return o(i,()=>V().length),o(l,()=>u(`table.jid`)),o(d,()=>u(`table.class`)),o(f,()=>u(`table.args`)),o(p,()=>u(`table.scheduled_at`)),o(_,c(e,{get each(){return V()},children:e=>{let t=g(e.args);return(()=>{var r=O(),i=r.firstChild,a=i.nextSibling,c=a.nextSibling,l=c.nextSibling;return o(i,()=>h(e.jid,12)),o(a,()=>e.klass),s(c,`title`,t),o(c,()=>h(t,60)),o(l,()=>m(e.at)),n(()=>s(i,`title`,e.jid)),r})()}})),t}}),null),o(r,c(t,{get when(){return H().length>0},get children(){var t=C(),r=t.firstChild,i=r.firstChild.nextSibling,a=r.nextSibling.firstChild.firstChild,l=a.firstChild.firstChild,d=l.nextSibling,f=d.nextSibling,p=f.nextSibling,_=p.nextSibling,v=a.nextSibling;return o(i,()=>H().length),o(l,()=>u(`table.jid`)),o(d,()=>u(`table.class`)),o(f,()=>u(`table.args`)),o(p,()=>u(`table.error`)),o(_,()=>u(`table.failed_at`)),o(v,c(e,{get each(){return H()},children:e=>{let t=g(e.args);return(()=>{var r=k(),i=r.firstChild,a=i.nextSibling,c=a.nextSibling,l=c.nextSibling,u=l.nextSibling;return o(i,()=>h(e.jid,12)),o(a,()=>e.klass),s(c,`title`,t),o(c,()=>h(t,40)),o(l,()=>h(e.error_class,25)),o(u,()=>m(e.failed_at)),n(t=>{var n=e.jid,r=e.error_class??``;return n!==t.e&&s(i,`title`,t.e=n),r!==t.t&&s(l,`title`,t.t=r),t},{e:void 0,t:void 0}),r})()}})),t}}),null),o(r,c(t,{get when(){return l(()=>N().length>=2)()&&W()===0},get children(){var e=w();return o(e,()=>u(`common.empty`)),e}}),null),n(()=>a.value=j()),r})()}a([`input`,`click`]);export{j as default};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,F as n,L as r,P as i,R as a,U as o,W as s,b as c,d as l,f as u,g as d,h as f,j as p,p as m,y as h}from"./i18n-gIeA5VLo.js";var g=h(`<svg><line stroke=rgba(255,255,255,0.06) stroke-dasharray="3 3"></svg>`,!1,!0,!1),_=h(`<svg><text text-anchor=end dominant-baseline=middle fill=#71717a font-size=11 font-family="JetBrains Mono, monospace"></svg>`,!1,!0,!1),v=h(`<svg><text fill=#71717a font-size=11 font-family="JetBrains Mono, monospace"></svg>`,!1,!0,!1),y=h(`<div style="position:absolute;top:8px;background:#161618;border:1px solid #272729;color:#e4e4e7;border-radius:6px;font-size:12px;font-family:JetBrains Mono, monospace;padding:8px 10px;pointer-events:none;white-space:nowrap;z-index:10"><div style=color:#a1a1aa;margin-bottom:4px>`),b=h(`<div style=display:flex;align-items:center;gap:6px><span style=width:8px;height:8px;border-radius:2px;display:inline-block;flex:none></span><span></span><span style=margin-inline-start:auto;padding-inline-start:10px>`),x=`JetBrains Mono, monospace`,S=`rgba(255,255,255,0.25)`,C=`rgba(255,255,255,0.04)`,w=`#09090b`;function T(e,t,n=0){let r=n;return{width:e,height:t,left:r,right:8,top:8,bottom:22,plotW:Math.max(0,e-r-8),plotH:Math.max(0,t-8-22)}}function E(e,t,n){return t<=1?n.left+n.plotW/2:n.left+e*n.plotW/(t-1)}function D(e,t,n){let r=n.height-n.bottom;return t<=0?r:r-e/t*n.plotH}function O(e){if(e.length===0)return``;if(e.length===1)return`M${e[0][0]},${e[0][1]}`;let t=`M${e[0][0]},${e[0][1]}`;for(let n=0;n<e.length-1;n++){let r=e[n-1]??e[n],i=e[n],a=e[n+1],o=e[n+2]??a,s=i[0]+(a[0]-r[0])/6,c=i[1]+(a[1]-r[1])/6,l=a[0]-(o[0]-i[0])/6,u=a[1]-(o[1]-i[1])/6;t+=` C${s},${c} ${l},${u} ${a[0]},${a[1]}`}return t}function k(e,t){let n=Math.floor(Math.log10(e)),r=e/10**n,i;return i=t?r<1.5?1:r<3?2:r<7?5:10:r<=1?1:r<=2?2:r<=5?5:10,i*10**n}function A(e,t=!0){if(!(e>0))return{max:1,ticks:[0,1]};let n=k(e/4,!0);t||(n=Math.max(1,Math.round(n)));let r=Math.ceil(e/n)*n,i=[];for(let e=0;e<=r+n/1e3;e+=n)i.push(Number(e.toFixed(6)));return{max:r,ticks:i}}function j(e){return Number.isInteger(e)?e.toLocaleString():e.toFixed(e<10?2:1)}function M(e,t,n){let r=e.length;if(r<=1)return r===1?[0]:[];let i=Math.max(...e.map(e=>e.length))*6.6+n,a=Math.max(2,Math.floor(t/i));if(a>=r)return e.map((e,t)=>t);let o=Math.ceil((r-1)/(a-1)),s=[];for(let e=0;e<r;e+=o)s.push(e);return s[s.length-1]!==r-1&&s.push(r-1),s}function N(){let[e,t]=r({w:0,h:0}),n;return s(()=>{let e=()=>{n&&t({w:n.clientWidth,h:n.clientHeight})};e();let r=new ResizeObserver(e);n&&r.observe(n),o(()=>r.disconnect())}),{setRef:e=>{n=e},size:e}}function P(r){let i=()=>r.labels.length-1;return[p(e,{get each(){return r.yTicks},children:e=>(()=>{var t=g();return n(n=>{var i=r.geo.left,a=r.geo.width-r.geo.right,o=r.yAt(e),s=r.yAt(e);return i!==n.e&&f(t,`x1`,n.e=i),a!==n.t&&f(t,`x2`,n.t=a),o!==n.a&&f(t,`y1`,n.a=o),s!==n.o&&f(t,`y2`,n.o=s),n},{e:void 0,t:void 0,a:void 0,o:void 0}),t})()}),p(t,{get when(){return r.showY},get children(){return p(e,{get each(){return r.yTicks},children:e=>(()=>{var t=_();return u(t,()=>j(e)),n(n=>{var i=r.geo.left-6,a=r.yAt(e);return i!==n.e&&f(t,`x`,n.e=i),a!==n.t&&f(t,`y`,n.t=a),n},{e:void 0,t:void 0}),t})()})}}),p(e,{get each(){return r.xTicks},children:e=>(()=>{var t=v();return u(t,()=>r.labels[e]),n(n=>{var a=r.xAt(e),o=r.geo.height-r.geo.bottom+14,s=e===0?`start`:e===i()?`end`:`middle`;return a!==n.e&&f(t,`x`,n.e=a),o!==n.t&&f(t,`y`,n.t=o),s!==n.a&&f(t,`text-anchor`,n.a=s),n},{e:void 0,t:void 0,a:void 0}),t})()})]}function F(e){return Number.isInteger(e)?e.toLocaleString():e.toFixed(2)}function I(t){let r=()=>t.x>t.containerW/2;return(()=>{var i=y(),a=i.firstChild;return u(a,()=>t.label),u(i,p(e,{get each(){return t.rows},children:e=>(()=>{var t=b(),r=t.firstChild,i=r.nextSibling,a=i.nextSibling;return u(i,()=>e.name),u(a,()=>F(e.value)),n(t=>d(r,`background`,e.color)),t})()}),null),n(e=>{var n=`${t.x}px`,a=r()?`translateX(calc(-100% - 12px))`:`translateX(12px)`;return n!==e.e&&d(i,`left`,e.e=n),a!==e.t&&d(i,`transform`,e.t=a),e},{e:void 0,t:void 0}),i})()}function L(e,t,n){if(t<=1)return 0;let r=n.plotW/(t-1),i=Math.round((e-n.left)/r);return Math.max(0,Math.min(t-1,i))}function R(e,t,n){if(t<=0)return-1;let r=n.plotW/t,i=Math.floor((e-n.left)/r);return Math.max(0,Math.min(t-1,i))}function z(e,t){let n=t.getBoundingClientRect();return{x:e.clientX-n.left,y:e.clientY-n.top}}var B=h(`<svg><line stroke-width=1></svg>`,!1,!0,!1),V=h(`<svg><defs>`),H=h(`<div style=position:relative;width:100%><div style=position:relative;width:100%;height:100%>`),U=h(`<svg><linearGradient x1=0 y1=0 x2=0 y2=1><stop offset=0%></stop><stop offset=95% stop-opacity=0></svg>`,!1,!0,!1),W=h(`<svg><path stroke=none></svg>`,!1,!0,!1),G=h(`<svg><path fill=none stroke-linejoin=round stroke-linecap=round></svg>`,!1,!0,!1),K=h(`<svg><circle r=4 stroke-width=2></svg>`,!1,!0,!1);function q(o){let{setRef:s,size:l}=N(),[h,g]=r(null),_=a(),v,y=i(()=>T(l().w,l().h,o.yAxisWidth??0)),b=i(()=>{let e=0;for(let t of o.data)for(let n of o.series)e=Math.max(e,Number(t[n.key])||0);return e}),x=i(()=>A(b(),o.yDecimals??!0)),C=i(()=>o.data.map(e=>e.label)),k=i(()=>M(C(),y().plotW,o.xMinTickGap??56)),j=e=>E(e,o.data.length,y()),F=e=>D(e,x().max,y()),R=e=>{if(!v)return;let{x:t}=z(e,v);g(L(t,o.data.length,y()))},q=()=>{let e=h();return e===null?[]:o.series.map(t=>({name:t.name??t.key,value:Number(o.data[e]?.[t.key])||0,color:t.stroke}))};return(()=>{var r=H(),i=r.firstChild;return c(s,i),u(i,p(t,{get when(){return m(()=>l().w>0)()&&l().h>0},get children(){var r=V(),i=r.firstChild;r.addEventListener(`mouseleave`,()=>g(null)),r.$$mousemove=R;var a=v;return typeof a==`function`?c(a,r):v=r,u(i,p(e,{get each(){return o.series},children:e=>p(t,{get when(){return(e.fill??`gradient`)===`gradient`},get children(){var t=U(),r=t.firstChild,i=r.nextSibling;return n(n=>{var a=`${_}-${e.key}`,o=e.stroke,s=e.fillOpacity??.22,c=e.stroke;return a!==n.e&&f(t,`id`,n.e=a),o!==n.t&&f(r,`stop-color`,n.t=o),s!==n.a&&f(r,`stop-opacity`,n.a=s),c!==n.o&&f(i,`stop-color`,n.o=c),n},{e:void 0,t:void 0,a:void 0,o:void 0}),t}})})),u(r,p(P,{get geo(){return y()},get yTicks(){return x().ticks},yAt:F,get showY(){return o.yAxisWidth!=null},get xTicks(){return k()},xAt:j,get labels(){return C()}}),null),u(r,p(e,{get each(){return o.series},children:e=>{let r=()=>o.data.map((t,n)=>[j(n),F(Number(t[e.key])||0)]),i=()=>O(r()),a=()=>{let e=r();if(e.length===0)return``;let t=y().height-y().bottom;return`${O(e)} L${e[e.length-1][0]},${t} L${e[0][0]},${t} Z`};return[p(t,{get when(){return(e.fill??`gradient`)===`gradient`},get children(){var t=W();return n(n=>{var r=a(),i=`url(#${_}-${e.key})`;return r!==n.e&&f(t,`d`,n.e=r),i!==n.t&&f(t,`fill`,n.t=i),n},{e:void 0,t:void 0}),t}}),(()=>{var t=G();return n(n=>{var r=i(),a=e.stroke,o=e.strokeWidth??2,s=e.strokeDasharray;return r!==n.e&&f(t,`d`,n.e=r),a!==n.t&&f(t,`stroke`,n.t=a),o!==n.a&&f(t,`stroke-width`,n.a=o),s!==n.o&&f(t,`stroke-dasharray`,n.o=s),n},{e:void 0,t:void 0,a:void 0,o:void 0}),t})()]}}),null),u(r,p(t,{get when(){return h()!==null},get children(){return[(()=>{var e=B();return f(e,`stroke`,S),n(t=>{var n=j(h()),r=j(h()),i=y().top,a=y().height-y().bottom;return n!==t.e&&f(e,`x1`,t.e=n),r!==t.t&&f(e,`x2`,t.t=r),i!==t.a&&f(e,`y1`,t.a=i),a!==t.o&&f(e,`y2`,t.o=a),t},{e:void 0,t:void 0,a:void 0,o:void 0}),e})(),p(e,{get each(){return o.series},children:e=>(()=>{var t=K();return f(t,`stroke`,w),n(n=>{var r=j(h()),i=F(Number(o.data[h()]?.[e.key])||0),a=e.stroke;return r!==n.e&&f(t,`cx`,n.e=r),i!==n.t&&f(t,`cy`,n.t=i),a!==n.a&&f(t,`fill`,n.a=a),n},{e:void 0,t:void 0,a:void 0}),t})()})]}}),null),n(e=>{var t=l().w,n=l().h;return t!==e.e&&f(r,`width`,e.e=t),n!==e.t&&f(r,`height`,e.t=n),e},{e:void 0,t:void 0}),r}})),u(r,p(t,{get when(){return h()!==null},get children(){return p(I,{get x(){return j(h())},get containerW(){return l().w},get label(){return C()[h()]},get rows(){return q()}})}}),null),n(e=>d(r,`height`,`${o.height}px`)),r})()}l([`mousemove`]);var J=h(`<svg><line stroke-width=1></svg>`,!1,!0,!1),Y=h(`<svg>`),X=h(`<div style=display:flex;flex-wrap:wrap;justify-content:center;gap:12px;font-size:11px;color:#a1a1aa;padding-top:6px>`),Z=h(`<div style=position:relative;width:100%;display:flex;flex-direction:column><div style=position:relative;width:100%;flex:1;min-height:0>`),Q=h(`<svg><path fill=none stroke-linejoin=round stroke-linecap=round></svg>`,!1,!0,!1),ee=h(`<svg><circle r=4 stroke-width=2></svg>`,!1,!0,!1),te=h(`<span style=display:inline-flex;align-items:center;gap:5px><span style=width:10px;height:2px;display:inline-block>`);function ne(a){let{setRef:o,size:s}=N(),[l,h]=r(null),g,_=i(()=>T(s().w,s().h,a.yAxisWidth??0)),v=i(()=>{let e=0;for(let t of a.data)for(let n of a.series)e=Math.max(e,Number(t[n.key])||0);return e}),y=i(()=>A(v(),a.yDecimals??!0)),b=i(()=>a.data.map(e=>e.label)),C=i(()=>M(b(),_().plotW,a.xMinTickGap??48)),k=e=>E(e,a.data.length,_()),j=e=>D(e,y().max,_()),F=e=>{if(!g)return;let{x:t}=z(e,g);h(L(t,a.data.length,_()))},R=()=>{let e=l();return e===null?[]:a.series.map(t=>({name:t.name??t.key,value:Number(a.data[e]?.[t.key])||0,color:t.stroke}))};return(()=>{var r=Z(),i=r.firstChild;return c(o,i),u(i,p(t,{get when(){return m(()=>s().w>0)()&&s().h>0},get children(){var r=Y();r.addEventListener(`mouseleave`,()=>h(null)),r.$$mousemove=F;var i=g;return typeof i==`function`?c(i,r):g=r,u(r,p(P,{get geo(){return _()},get yTicks(){return y().ticks},yAt:j,get showY(){return a.yAxisWidth!=null},get xTicks(){return C()},xAt:k,get labels(){return b()}}),null),u(r,p(e,{get each(){return a.series},children:e=>(()=>{var t=Q();return n(n=>{var r=O(a.data.map((t,n)=>[k(n),j(Number(t[e.key])||0)])),i=e.stroke,o=e.strokeWidth??2;return r!==n.e&&f(t,`d`,n.e=r),i!==n.t&&f(t,`stroke`,n.t=i),o!==n.a&&f(t,`stroke-width`,n.a=o),n},{e:void 0,t:void 0,a:void 0}),t})()}),null),u(r,p(t,{get when(){return l()!==null},get children(){return[(()=>{var e=J();return f(e,`stroke`,S),n(t=>{var n=k(l()),r=k(l()),i=_().top,a=_().height-_().bottom;return n!==t.e&&f(e,`x1`,t.e=n),r!==t.t&&f(e,`x2`,t.t=r),i!==t.a&&f(e,`y1`,t.a=i),a!==t.o&&f(e,`y2`,t.o=a),t},{e:void 0,t:void 0,a:void 0,o:void 0}),e})(),p(e,{get each(){return a.series},children:e=>(()=>{var t=ee();return f(t,`stroke`,w),n(n=>{var r=k(l()),i=j(Number(a.data[l()]?.[e.key])||0),o=e.stroke;return r!==n.e&&f(t,`cx`,n.e=r),i!==n.t&&f(t,`cy`,n.t=i),o!==n.a&&f(t,`fill`,n.a=o),n},{e:void 0,t:void 0,a:void 0}),t})()})]}}),null),n(e=>{var t=s().w,n=s().h;return t!==e.e&&f(r,`width`,e.e=t),n!==e.t&&f(r,`height`,e.t=n),e},{e:void 0,t:void 0}),r}})),u(r,p(t,{get when(){return a.legend},get children(){var t=X();return d(t,`font-family`,x),u(t,p(e,{get each(){return a.series},children:e=>(()=>{var t=te(),r=t.firstChild;return u(t,()=>e.name??e.key,null),n(t=>d(r,`background`,e.stroke)),t})()})),t}}),null),u(r,p(t,{get when(){return l()!==null},get children(){return p(I,{get x(){return k(l())},get containerW(){return s().w},get label(){return b()[l()]},get rows(){return R()}})}}),null),n(e=>d(r,`height`,`${a.height}px`)),r})()}l([`mousemove`]);var $=h(`<svg><rect></svg>`,!1,!0,!1),re=h(`<svg>`),ie=h(`<div style=position:relative;width:100%><div style=position:relative;width:100%;height:100%>`);function ae(a){let{setRef:o,size:s}=N(),[l,h]=r(null),g,_=i(()=>T(s().w,s().h,a.yAxisWidth??0)),v=i(()=>Math.max(0,...a.data.map(e=>e.value))),y=i(()=>A(v(),a.yDecimals??!0)),b=i(()=>a.data.map(e=>e.label)),x=i(()=>M(b(),_().plotW,a.xMinTickGap??40)),S=e=>D(e,y().max,_()),w=()=>a.data.length>0?_().plotW/a.data.length:0,E=()=>Math.max(1,w()*.62),O=e=>_().left+w()*(e+.5),k=e=>{if(!g)return;let{x:t}=z(e,g);h(R(t,a.data.length,_()))},j=()=>{let e=l();return e===null||!a.data[e]?[]:[{name:a.name??`Value`,value:a.data[e].value,color:a.data[e].color}]};return(()=>{var r=ie(),i=r.firstChild;return c(o,i),u(i,p(t,{get when(){return m(()=>s().w>0)()&&s().h>0},get children(){var r=re();r.addEventListener(`mouseleave`,()=>h(null)),r.$$mousemove=k;var i=g;return typeof i==`function`?c(i,r):g=r,u(r,p(P,{get geo(){return _()},get yTicks(){return y().ticks},yAt:S,get showY(){return a.yAxisWidth!=null},get xTicks(){return x()},xAt:O,get labels(){return b()}}),null),u(r,p(t,{get when(){return l()!==null},get children(){var e=$();return f(e,`fill`,C),n(t=>{var n=_().left+w()*l(),r=_().top,i=w(),a=_().plotH;return n!==t.e&&f(e,`x`,t.e=n),r!==t.t&&f(e,`y`,t.t=r),i!==t.a&&f(e,`width`,t.a=i),a!==t.o&&f(e,`height`,t.o=a),t},{e:void 0,t:void 0,a:void 0,o:void 0}),e}}),null),u(r,p(e,{get each(){return a.data},children:(e,t)=>{let r=()=>S(e.value),i=()=>_().height-_().bottom,o=()=>Math.max(0,i()-r()),s=()=>Math.min(a.radius??3,E()/2,o());return(()=>{var i=$();return n(n=>{var a=O(t())-E()/2,c=r(),l=E(),u=o(),d=s(),p=s(),m=e.color;return a!==n.e&&f(i,`x`,n.e=a),c!==n.t&&f(i,`y`,n.t=c),l!==n.a&&f(i,`width`,n.a=l),u!==n.o&&f(i,`height`,n.o=u),d!==n.i&&f(i,`rx`,n.i=d),p!==n.n&&f(i,`ry`,n.n=p),m!==n.s&&f(i,`fill`,n.s=m),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),i})()}}),null),n(e=>{var t=s().w,n=s().h;return t!==e.e&&f(r,`width`,e.e=t),n!==e.t&&f(r,`height`,e.t=n),e},{e:void 0,t:void 0}),r}})),u(r,p(t,{get when(){return l()!==null},get children(){return p(I,{get x(){return O(l())},get containerW(){return s().w},get label(){return b()[l()]},get rows(){return j()}})}}),null),n(e=>d(r,`height`,`${a.height}px`)),r})()}l([`mousemove`]);export{ne as n,q as r,ae as t};