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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/controllers/wurk/api/serializers.rb +1 -1
- data/app/controllers/wurk/api_controller.rb +2 -1
- data/app/controllers/wurk/extensions_controller.rb +1 -1
- data/config/routes.rb +1 -1
- data/lib/wurk/version.rb +1 -1
- data/lib/wurk/web/extension.rb +1 -1
- data/vendor/assets/dashboard/assets/ArgsValue-BUqJa-eG.js +1 -0
- data/vendor/assets/dashboard/assets/BatchDetail-C5dkqAzp.js +1 -0
- data/vendor/assets/dashboard/assets/Batches-bgkXn8tc.js +1 -0
- data/vendor/assets/dashboard/assets/Busy-QSHBFXhy.js +1 -0
- data/vendor/assets/dashboard/assets/Cron-CUHppvTA.js +1 -0
- data/vendor/assets/dashboard/assets/Dashboard-CzPudckV.js +1 -0
- data/vendor/assets/dashboard/assets/Dead-BIq4Nz_i.js +1 -0
- data/vendor/assets/dashboard/assets/Extension-CW36i9R1.js +1 -0
- data/vendor/assets/dashboard/assets/JobDetailModal-BhNdWSp7.js +2 -0
- data/vendor/assets/dashboard/assets/Limiters-CiI_DfUK.js +1 -0
- data/vendor/assets/dashboard/assets/Metrics-BzZ8ugms.js +1 -0
- data/vendor/assets/dashboard/assets/Modal-DzVfgsSF.js +1 -0
- data/vendor/assets/dashboard/assets/PageHeader-Dp3qhX3e.js +1 -0
- data/vendor/assets/dashboard/assets/Profiles-BTtIlTdR.js +1 -0
- data/vendor/assets/dashboard/assets/Queues-BuXoxQ4W.js +1 -0
- data/vendor/assets/dashboard/assets/Retries-D4HAPaOQ.js +1 -0
- data/vendor/assets/dashboard/assets/Scheduled-6NCZYVJh.js +1 -0
- data/vendor/assets/dashboard/assets/Search-JaB_-52c.js +1 -0
- data/vendor/assets/dashboard/assets/charts-6uvCyY0x.js +1 -0
- data/vendor/assets/dashboard/assets/i18n-gIeA5VLo.js +1 -0
- data/vendor/assets/dashboard/assets/index-BDG9tvBA.css +1 -0
- data/vendor/assets/dashboard/assets/index-DWfWAGBc.js +141 -0
- data/vendor/assets/dashboard/assets/useJobSetActions-DTDaAoWr.js +1 -0
- data/vendor/assets/dashboard/assets/usePageParam-BcAvRko-.js +1 -0
- data/vendor/assets/dashboard/assets/useSort-D5Am4bGq.js +1 -0
- data/vendor/assets/dashboard/index.html +3 -2
- data/vendor/assets/dashboard/wurk-manifest.json +2 -2
- metadata +27 -27
- data/vendor/assets/dashboard/assets/AreaChart-BrEBs9bV.js +0 -53
- data/vendor/assets/dashboard/assets/ArgsValue-CiJzEwxS.js +0 -1
- data/vendor/assets/dashboard/assets/BatchDetail-Cu1LFfNV.js +0 -1
- data/vendor/assets/dashboard/assets/Batches-pf4zKSuU.js +0 -1
- data/vendor/assets/dashboard/assets/Busy-Lv6K2ZkR.js +0 -1
- data/vendor/assets/dashboard/assets/Cron-BcnQ2Kev.js +0 -1
- data/vendor/assets/dashboard/assets/Dashboard-DMO-cH6d.js +0 -1
- data/vendor/assets/dashboard/assets/Dead-o9K-1fo2.js +0 -1
- data/vendor/assets/dashboard/assets/Extension-MTUtXQuK.js +0 -1
- data/vendor/assets/dashboard/assets/JobDetailModal-DKYvp6QS.js +0 -2
- data/vendor/assets/dashboard/assets/Limiters-Bv9WgiHP.js +0 -1
- data/vendor/assets/dashboard/assets/Metrics-DnAsLwWl.js +0 -7
- data/vendor/assets/dashboard/assets/Modal-CvD-1IKA.js +0 -1
- data/vendor/assets/dashboard/assets/PageHeader-B-0cTQeM.js +0 -1
- data/vendor/assets/dashboard/assets/Profiles-S_WCoS6S.js +0 -1
- data/vendor/assets/dashboard/assets/Queues-B6qQmaoY.js +0 -1
- data/vendor/assets/dashboard/assets/Retries-BagJsqI0.js +0 -1
- data/vendor/assets/dashboard/assets/Scheduled-DPzzoJkC.js +0 -1
- data/vendor/assets/dashboard/assets/Search-jWG793ku.js +0 -1
- data/vendor/assets/dashboard/assets/index-DcfzJOIq.js +0 -126
- data/vendor/assets/dashboard/assets/index-DdkkU3x4.css +0 -1
- data/vendor/assets/dashboard/assets/useJobSetActions-BCW6DHSe.js +0 -1
- data/vendor/assets/dashboard/assets/useMutation-NUbe15ar.js +0 -1
- data/vendor/assets/dashboard/assets/usePageParam-BDV1DCDQ.js +0 -1
- data/vendor/assets/dashboard/assets/useSort-BPPxnBBo.js +0 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dashboard-CzPudckV.js","assets/i18n-gIeA5VLo.js","assets/utils-DDJC7tJV.js","assets/charts-6uvCyY0x.js","assets/Queues-BuXoxQ4W.js","assets/usePageParam-BcAvRko-.js","assets/useSort-D5Am4bGq.js","assets/PageHeader-Dp3qhX3e.js","assets/Modal-DzVfgsSF.js","assets/ArgsValue-BUqJa-eG.js","assets/JobDetailModal-BhNdWSp7.js","assets/Retries-D4HAPaOQ.js","assets/useJobSetActions-DTDaAoWr.js","assets/Scheduled-6NCZYVJh.js","assets/Dead-BIq4Nz_i.js","assets/Busy-QSHBFXhy.js","assets/Batches-bgkXn8tc.js","assets/BatchDetail-C5dkqAzp.js","assets/Limiters-CiI_DfUK.js","assets/Cron-CUHppvTA.js","assets/Metrics-BzZ8ugms.js","assets/Profiles-BTtIlTdR.js","assets/Search-JaB_-52c.js","assets/Extension-CW36i9R1.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{A as e,B as t,C as n,D as r,E as i,F as a,G as o,H as s,I as c,J as l,K as u,L as d,M as f,P as p,S as m,U as h,V as g,X as _,Y as ee,Z as v,_ as te,a as y,d as b,f as x,g as S,h as C,i as w,j as T,k as ne,m as E,n as D,p as O,q as k,r as A,s as re,t as j,u as M,v as N,w as P,y as F,z as ie}from"./i18n-gIeA5VLo.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function ae(){let e=new Set;function t(t){return e.add(t),()=>e.delete(t)}let n=!1;function r(t,r){if(n)return!(n=!1);let i={to:t,options:r,defaultPrevented:!1,preventDefault:()=>i.defaultPrevented=!0};for(let a of e)a.listener({...i,from:a.location,retry:e=>{e&&(n=!0),a.navigate(t,{...r,resolve:!1})}});return!i.defaultPrevented}return{subscribe:t,confirm:r}}var I;function L(){(!window.history.state||window.history.state._depth==null)&&window.history.replaceState({...window.history.state,_depth:window.history.length-1},``),I=window.history.state._depth}L();function oe(e){return{...e,_depth:window.history.state&&window.history.state._depth}}function se(e,t){let n=!1;return()=>{let r=I;L();let i=r==null?null:I-r;if(n){n=!1;return}i&&t(i)?(n=!0,window.history.go(-i)):e()}}var ce=/^(?:[a-z0-9]+:)?\/\//i,le=/^\/+|(\/)\/+$/g,ue=`http://sr`;function R(e,t=!1){let n=e.replace(le,`$1`);return n?t||/^[?#]/.test(n)?n:`/`+n:``}function z(e,t,n){if(ce.test(t))return;let r=R(e),i=n&&R(n),a=``;return a=!i||t.startsWith(`/`)?r:i.toLowerCase().indexOf(r.toLowerCase())===0?i:r+i,(a||`/`)+R(t,!a)}function de(e,t){if(e==null)throw Error(t);return e}function fe(e,t){return R(e).replace(/\/*(\*.*)?$/g,``)+R(t)}function pe(e){let t={};return e.searchParams.forEach((e,n)=>{n in t?Array.isArray(t[n])?t[n].push(e):t[n]=[t[n],e]:t[n]=e}),t}function me(e,t,n){let[r,i]=e.split(`/*`,2),a=r.split(`/`).filter(Boolean),o=a.length;return e=>{let r=e.split(`/`).filter(Boolean),s=r.length-o;if(s<0||s>0&&i===void 0&&!t)return null;let c={path:o?``:`/`,params:{}},l=e=>n===void 0?void 0:n[e];for(let e=0;e<o;e++){let t=a[e],n=t[0]===`:`,i=n?r[e]:r[e].toLowerCase(),o=n?t.slice(1):t.toLowerCase();if(n&&B(i,l(o)))c.params[o]=i;else if(n||!B(i,o))return null;c.path+=`/${i}`}if(i){let e=s?r.slice(-s).join(`/`):``;if(B(e,l(i)))c.params[i]=e;else return null}return c}}function B(e,t){let n=t=>t===e;return t===void 0?!0:typeof t==`string`?n(t):typeof t==`function`?t(e):Array.isArray(t)?t.some(n):t instanceof RegExp?t.test(e):!1}function he(e){let[t,n]=e.pattern.split(`/*`,2),r=t.split(`/`).filter(Boolean);return r.reduce((e,t)=>e+(t.startsWith(`:`)?2:3),r.length-(n===void 0?0:1))}function ge(e){let t=new Map,n=ie();return new Proxy({},{get(r,i){return t.has(i)||u(n,()=>t.set(i,p(()=>e()[i]))),t.get(i)()},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}},ownKeys(){return Reflect.ownKeys(e())},has(t,n){return n in e()}})}function _e(e,t){let n=new URLSearchParams(e);Object.entries(t).forEach(([e,t])=>{t==null||t===``||t instanceof Array&&!t.length?n.delete(e):t instanceof Array?(n.delete(e),t.forEach(t=>{n.append(e,String(t))})):n.set(e,String(t))});let r=n.toString();return r?`?${r}`:``}function ve(e){let t=/(\/?\:[^\/]+)\?/.exec(e);if(!t)return[e];let n=e.slice(0,t.index),r=e.slice(t.index+t[0].length),i=[n,n+=t[1]];for(;t=/^(\/\:[^\/]+)\?/.exec(r);)i.push(n+=t[1]),r=r.slice(t[0].length);return ve(r).reduce((e,t)=>[...e,...i.map(e=>e+t)],[])}var ye=100,V=f(),H=f(),U=()=>de(v(V),`<A> and 'use' router primitives can be only used inside a Route.`),be=()=>v(H)||U().base,xe=e=>{let t=be();return p(()=>t.resolvePath(e()))},Se=e=>{let t=U();return p(()=>{let n=e();return n===void 0?n:t.renderPath(n)})},Ce=()=>U().navigatorFactory(),we=()=>U().location,Te=()=>U().params,Ee=()=>{let e=we(),t=Ce();return[e.query,(n,r)=>{let i=_(()=>_e(e.search,n)+e.hash);t(i,{scroll:!1,resolve:!1,...r})}]};function De(e,t=``){let{component:n,preload:r,load:i,children:a,info:o}=e,s=!a||Array.isArray(a)&&!a.length,c={key:e,component:n,preload:r||i,info:o};return ke(e.path).reduce((n,r)=>{for(let i of ve(r)){let a=fe(t,i),o=s?a:a.split(`/*`,1)[0];o=o.split(`/`).map(e=>e.startsWith(`:`)||e.startsWith(`*`)?e:encodeURIComponent(e)).join(`/`),n.push({...c,originalPath:r,pattern:o,matcher:me(o,!s,e.matchFilters)})}return n},[])}function Oe(e,t=0){return{routes:e,score:he(e[e.length-1])*1e4-t,matcher(t){let n=[];for(let r=e.length-1;r>=0;r--){let i=e[r],a=i.matcher(t);if(!a)return null;n.unshift({...a,route:i})}return n}}}function ke(e){return Array.isArray(e)?e:[e]}function W(e,t=``,n=[],r=[]){let i=ke(e);for(let e=0,a=i.length;e<a;e++){let a=i[e];if(a&&typeof a==`object`){a.hasOwnProperty(`path`)||(a.path=``);let e=De(a,t);for(let t of e){n.push(t);let e=Array.isArray(a.children)&&a.children.length===0;if(a.children&&!e)W(a.children,t.pattern,n,r);else{let e=Oe([...n],r.length);r.push(e)}n.pop()}}}return n.length?r:r.sort((e,t)=>t.score-e.score)}function G(e,t){for(let n=0,r=e.length;n<r;n++){let r=e[n].matcher(t);if(r)return r}return[]}function Ae(e,t,n){let r=new URL(ue),i=p(t=>{let n=e();try{return new URL(n,r)}catch{return console.error(`Invalid path ${n}`),t}},r,{equals:(e,t)=>e.href===t.href}),a=p(()=>i().pathname),o=p(()=>i().search,!0),c=p(()=>i().hash),l=()=>``,u=s(o,()=>pe(i()));return{get pathname(){return a()},get search(){return o()},get hash(){return c()},get state(){return t()},get key(){return l()},query:n?n(u):ge(u)}}var K;function je(){return K}function Me(e,t,n,r={}){let{signal:[i,c],utils:l={}}=e,f=l.parsePath||(e=>e),m=l.renderPath||(e=>e),h=l.beforeLeave||ae(),g=z(``,r.base||``);if(g===void 0)throw Error(`${g} is not a valid base path`);g&&!i().value&&c({value:g,replace:!0,scroll:!1});let[te,y]=d(!1),b,x=(e,t)=>{t.value===S()&&t.state===w()||(b===void 0&&y(!0),K=e,b=t,ee(()=>{b===t&&(C(b.value),T(b.state),o(),O[1](e=>e.filter(e=>e.pending)))}).finally(()=>{b===t&&ne(()=>{K=void 0,e===`navigate`&&P(b),y(!1),b=void 0})}))},[S,C]=d(i().value),[w,T]=d(i().state),E=Ae(S,w,l.queryWrapper),D=[],O=d([]),k=p(()=>typeof r.transformUrl==`function`?G(t(),r.transformUrl(E.pathname)):G(t(),E.pathname)),A=()=>{let e=k(),t={};for(let n=0;n<e.length;n++)Object.assign(t,e[n].params);return t},re=l.paramsWrapper?l.paramsWrapper(A,t):ge(A),j={pattern:g,path:()=>g,outlet:()=>null,resolvePath(e){return z(g,e)}};return a(s(i,e=>x(`native`,e),{defer:!0})),{base:j,location:E,params:re,isRouting:te,renderPath:m,parsePath:f,navigatorFactory:N,matches:k,beforeLeave:h,preloadRoute:F,singleFlight:r.singleFlight===void 0?!0:r.singleFlight,submissions:O};function M(e,t,n){_(()=>{if(typeof t==`number`){t&&(l.go?l.go(t):console.warn(`Router integration does not support relative routing`));return}let r=!t||t[0]===`?`,{replace:i,resolve:a,scroll:o,state:s}={replace:!1,resolve:!r,scroll:!0,...n},c=a?e.resolvePath(t):z(r&&E.pathname||``,t);if(c===void 0)throw Error(`Path '${t}' is not a routable path`);if(D.length>=ye)throw Error(`Too many redirects`);let u=S();(c!==u||s!==w())&&h.confirm(c,n)&&(D.push({value:u,replace:i,scroll:o,state:w()}),x(`navigate`,{value:c,state:s}))})}function N(e){return e=e||v(H)||j,(t,n)=>M(e,t,n)}function P(e){let t=D[0];t&&(c({...e,replace:t.replace,scroll:t.scroll}),D.length=0)}function F(e,r){let i=G(t(),e.pathname),a=K;K=`preload`;for(let t in i){let{route:a,params:o}=i[t];a.component&&a.component.preload&&a.component.preload();let{preload:s}=a;r&&s&&u(n(),()=>s({params:o,location:{pathname:e.pathname,search:e.search,hash:e.hash,query:pe(e),state:null,key:``},intent:`preload`}))}K=a}}function Ne(e,t,n,r){let{base:i,location:a,params:o}=e,{pattern:s,component:c,preload:l}=r().route,u=p(()=>r().path);c&&c.preload&&c.preload();let d=l?l({params:o,location:a,intent:K||`initial`}):void 0;return{parent:t,pattern:s,path:u,outlet:()=>c?T(c,{params:o,location:a,data:d,get children(){return n()}}):n(),resolvePath(e){return z(i.path(),e,u())}}}var Pe=t=>n=>{let{base:r}=n,i=e(()=>n.children),a=p(()=>W(i(),n.base||``)),o,s=Me(t,a,()=>o,{base:r,singleFlight:n.singleFlight,transformUrl:n.transformUrl});return t.create&&t.create(s),T(V.Provider,{value:s,get children(){return T(Fe,{routerState:s,get root(){return n.root},get preload(){return n.rootPreload||n.rootLoad},get children(){return[O(()=>(o=ie())&&null),T(Ie,{routerState:s,get branches(){return a()}})]}})}})};function Fe(e){let t=e.routerState.location,n=e.routerState.params,r=p(()=>e.preload&&_(()=>{e.preload({params:n,location:t,intent:je()||`initial`})}));return T(i,{get when(){return e.root},keyed:!0,get fallback(){return e.children},children:i=>T(i,{params:n,location:t,get data(){return r()},get children(){return e.children}})})}function Ie(e){let t=[],n,r=p(s(e.routerState.matches,(i,a,o)=>{let s=a&&i.length===a.length,l=[];for(let n=0,u=i.length;n<u;n++){let u=a&&a[n],d=i[n];o&&u&&d.route.key===u.route.key?l[n]=o[n]:(s=!1,t[n]&&t[n](),c(i=>{t[n]=i,l[n]=Ne(e.routerState,l[n-1]||e.routerState.base,Le(()=>r()[n+1]),()=>{let t=e.routerState.matches();return t[n]??t[0]})}))}return t.splice(i.length).forEach(e=>e()),o&&s?o:(n=l[0],l)}));return Le(()=>r()&&n)()}var Le=e=>()=>T(i,{get when(){return e()},keyed:!0,children:e=>T(H.Provider,{value:e,get children(){return e.outlet()}})}),q=t=>{let n=e(()=>t.children);return g(t,{get children(){return n()}})};function Re([e,t],n,r){return[n?()=>n(e()):e,r?e=>t(r(e)):t]}function ze(e){let t=!1,n=e=>typeof e==`string`?{value:e}:e,r=Re(d(n(e.get()),{equals:(e,t)=>e.value===t.value&&e.state===t.state}),void 0,n=>(!t&&e.set(n),k.registry&&!k.done&&(k.done=!0),n));return e.init&&h(e.init((i=e.get())=>{t=!0,r[1](n(i)),t=!1})),Pe({signal:r,create:e.create,utils:e.utils})}function Be(e,t,n){return e.addEventListener(t,n),()=>e.removeEventListener(t,n)}function Ve(e,t){let n=e&&document.getElementById(e);n?n.scrollIntoView():t&&window.scrollTo(0,0)}var He=new Map;function Ue(e=!0,t=!1,n=`/_server`,r){return i=>{let a=i.base.path(),o=i.navigatorFactory(i.base),s,c;function l(e){return e.namespaceURI===`http://www.w3.org/2000/svg`}function u(e){if(e.defaultPrevented||e.button!==0||e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)return;let n=e.composedPath().find(e=>e instanceof Node&&e.nodeName.toUpperCase()===`A`);if(!n||t&&!n.hasAttribute(`link`))return;let r=l(n),i=r?n.href.baseVal:n.href;if((r?n.target.baseVal:n.target)||!i&&!n.hasAttribute(`state`))return;let o=(n.getAttribute(`rel`)||``).split(/\s+/);if(n.hasAttribute(`download`)||o&&o.includes(`external`))return;let s=r?new URL(i,document.baseURI):new URL(i);if(!(s.origin!==window.location.origin||a&&s.pathname&&!s.pathname.toLowerCase().startsWith(a.toLowerCase())))return[n,s]}function d(e){let t=u(e);if(!t)return;let[n,r]=t,a=i.parsePath(r.pathname+r.search+r.hash),s=n.getAttribute(`state`);e.preventDefault(),o(a,{resolve:!1,replace:n.hasAttribute(`replace`),scroll:!n.hasAttribute(`noscroll`),state:s?JSON.parse(s):void 0})}function f(e){let t=u(e);if(!t)return;let[n,a]=t;r&&(a.pathname=r(a.pathname)),i.preloadRoute(a,n.getAttribute(`preload`)!==`false`)}function p(e){clearTimeout(s);let t=u(e);if(!t)return c=null;let[n,a]=t;c!==n&&(r&&(a.pathname=r(a.pathname)),s=setTimeout(()=>{i.preloadRoute(a,n.getAttribute(`preload`)!==`false`),c=n},20))}function m(e){if(e.defaultPrevented)return;let t=e.submitter&&e.submitter.hasAttribute(`formaction`)?e.submitter.getAttribute(`formaction`):e.target.getAttribute(`action`);if(!t)return;if(!t.startsWith(`https://action/`)){let e=new URL(t,ue);if(t=i.parsePath(e.pathname+e.search),!t.startsWith(n))return}if(e.target.method.toUpperCase()!==`POST`)throw Error(`Only POST forms are supported for Actions`);let r=He.get(t);if(r){e.preventDefault();let t=new FormData(e.target,e.submitter);r.call({r:i,f:e.target},e.target.enctype===`multipart/form-data`?t:new URLSearchParams(t))}}b([`click`,`submit`]),document.addEventListener(`click`,d),e&&(document.addEventListener(`mousemove`,p,{passive:!0}),document.addEventListener(`focusin`,f,{passive:!0}),document.addEventListener(`touchstart`,f,{passive:!0})),document.addEventListener(`submit`,m),h(()=>{document.removeEventListener(`click`,d),e&&(document.removeEventListener(`mousemove`,p),document.removeEventListener(`focusin`,f),document.removeEventListener(`touchstart`,f)),document.removeEventListener(`submit`,m)})}}function We(e){let t=()=>{let e=window.location.pathname.replace(/^\/+/,`/`)+window.location.search,t=window.history.state&&window.history.state._depth&&Object.keys(window.history.state).length===1?void 0:window.history.state;return{value:e+window.location.hash,state:t}},n=ae();return ze({get:t,set({value:e,replace:t,scroll:n,state:r}){t?window.history.replaceState(oe(r),``,e):window.history.pushState(r,``,e),Ve(decodeURIComponent(window.location.hash.slice(1)),n),L()},init:e=>Be(window,`popstate`,se(e,e=>{if(e)return!n.confirm(e);{let e=t();return!n.confirm(e.value,{state:e.state})}})),create:Ue(e.preload,e.explicitLinks,e.actionBase,e.transformUrl),utils:{go:e=>window.history.go(e),beforeLeave:n}})(e)}var Ge=F(`<a>`);function J(e){e=g({inactiveClass:`inactive`,activeClass:`active`},e);let[,t]=l(e,[`href`,`state`,`class`,`activeClass`,`inactiveClass`,`end`]),n=xe(()=>e.href),r=Se(n),i=we(),a=p(()=>{let t=n();if(t===void 0)return[!1,!1];let r=R(t.split(/[?#]/,1)[0]).toLowerCase(),a=decodeURI(R(i.pathname).toLowerCase());return[e.end?r===a:a.startsWith(r+`/`)||a===r,r===a]});return(()=>{var n=Ge();return te(n,g(t,{get href(){return r()||e.href},get state(){return JSON.stringify(e.state)},get classList(){return{...e.class&&{[e.class]:!0},[e.inactiveClass]:!a()[0],[e.activeClass]:a()[0],...t.classList}},link:``,get"aria-current"(){return a()[1]?`page`:void 0}}),!1,!1),n})()}function Y(){return re(()=>({queryKey:[`meta`],queryFn:()=>fetch(`/wurk/api/meta`).then(e=>e.json()),staleTime:1/0}))}var Ke=`/wurk-assets/assets/wurk-logo-Vy3xW4K0.png`,qe=F(`<div class=nav-overlay style=position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:99;display:none>`),Je=F(`<img alt=Wurk style="height:36px;width:auto;display:block;flex:none;filter:drop-shadow(0 2px 6px rgba(0,0,0,0.45))">`),Ye=F(`<span style="font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:0.02em;color:var(--text-muted);background:var(--surface-strong);border:1px solid var(--border);border-radius:5px;padding:0.05rem 0.3rem">v`),Xe=F(`<span class=nav-label style=display:flex;flex-direction:column;line-height:1.15><span style=display:inline-flex;align-items:baseline;gap:0.4rem><span style=font-size:18px;font-weight:700;letter-spacing:-0.02em;color:var(--text-bright)>Wurk</span></span><span style=font-family:var(--font-mono);font-size:9px;font-weight:500;letter-spacing:0.1em;text-transform:uppercase;color:var(--text-muted);margin-top:2px;display:inline-flex;align-items:center;gap:5px><span class=live-dot style=width:6px;height:6px></span>System Status: Active`),Ze=F(`<li aria-hidden=true style="padding:0.5rem 0.95rem 0.2rem;margin-top:0.4rem"><div style=height:1px;background:var(--border);margin-bottom:0.45rem></div><span class=nav-label style=font-size:10px;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;color:var(--text-muted)>`),Qe=F(`<nav class=wurk-nav style="position:fixed;top:0;inset-inline-start:0;bottom:0;background:var(--surface);border-inline-end:1px solid var(--border);display:flex;flex-direction:column;z-index:100;overflow-y:auto;overflow-x:hidden"><div class=nav-brand-wrap style="padding:1.25rem 1rem 0.75rem"></div><div style="height:1px;background:var(--border);margin:0 1rem 0.5rem"></div><ul style=list-style:none;flex:1></ul><div style="height:1px;background:var(--border);margin:0.5rem 1rem 0"></div><button type=button class=nav-collapse-toggle style="display:flex;align-items:center;gap:0.625rem;width:calc(100% - 16px);padding:0.5rem 0.85rem;margin:4px 8px;border-radius:8px;border:none;background:transparent;color:var(--text-muted);font-size:13px;cursor:pointer;font:inherit"><i aria-hidden=true></i><span class=nav-label></span></button><div style="height:1px;background:var(--border);margin:0.5rem 1rem"></div><a href=https://github.com/developerz-ai/wurk target=_blank rel="noopener noreferrer"class=wurk-navlink style="display:flex;align-items:center;gap:0.625rem;padding:0.5rem 0.85rem;margin:2px 8px 0.85rem;border-radius:8px;color:var(--text-muted);font-size:13px;text-decoration:none;transition:background var(--dur-base) var(--ease-standard), color var(--dur-base) var(--ease-standard)"><i class="fa-brands fa-github"style=font-size:16px;width:20px;text-align:center;flex:none></i><span class=nav-label>GitHub`),$e=F(`<style>
|
|
3
|
+
.wurk-nav { width: var(--nav-width); transition: width var(--dur-page) var(--ease-emphasized); }
|
|
4
|
+
/* Base nav-item chrome (was an inline style function under React; Solid's
|
|
5
|
+
<A> toggles the .active class, so the active look lives in CSS now). */
|
|
6
|
+
.wurk-navlink {
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
gap: 0.625rem;
|
|
10
|
+
padding: 0.5rem 0.85rem;
|
|
11
|
+
border-radius: 8px;
|
|
12
|
+
margin: 2px 8px;
|
|
13
|
+
color: var(--text);
|
|
14
|
+
background: transparent;
|
|
15
|
+
box-shadow: none;
|
|
16
|
+
font-weight: 400;
|
|
17
|
+
font-size: 14px;
|
|
18
|
+
text-decoration: none;
|
|
19
|
+
transition: background var(--dur-base) var(--ease-standard), color var(--dur-base) var(--ease-standard), box-shadow var(--dur-base) var(--ease-standard);
|
|
20
|
+
}
|
|
21
|
+
/* Text stays white for every item; the active one is marked by a subtle
|
|
22
|
+
dark raised pill + hairline, not a bright white box. */
|
|
23
|
+
.wurk-navlink.active {
|
|
24
|
+
color: var(--accent);
|
|
25
|
+
background: var(--surface-strong);
|
|
26
|
+
box-shadow: inset 0 0 0 1px var(--border);
|
|
27
|
+
font-weight: 600;
|
|
28
|
+
}
|
|
29
|
+
.wurk-navlink:hover {
|
|
30
|
+
background: var(--surface-hover) !important;
|
|
31
|
+
color: var(--accent) !important;
|
|
32
|
+
text-decoration: none !important;
|
|
33
|
+
}
|
|
34
|
+
/* The collapse toggle is a control, not a nav item — it only shifts
|
|
35
|
+
colour on hover, no filled pill/active box. */
|
|
36
|
+
.nav-collapse-toggle:hover { color: var(--text) !important; }
|
|
37
|
+
.nav-label { white-space: nowrap; }
|
|
38
|
+
.wurk-navlink__icon { width: 24px; font-size: 18px; text-align: center; flex: none; transition: background var(--dur-base) var(--ease-standard), color var(--dur-base) var(--ease-standard), transform var(--dur-base) var(--ease-standard); }
|
|
39
|
+
/* Subtle lift on hover so the nav feels reactive. */
|
|
40
|
+
.wurk-navlink:hover .wurk-navlink__icon { transform: scale(1.12); }
|
|
41
|
+
@media (prefers-reduced-motion: reduce) {
|
|
42
|
+
.wurk-navlink__icon { transition: background var(--dur-base) var(--ease-standard), color var(--dur-base) var(--ease-standard); }
|
|
43
|
+
.wurk-navlink:hover .wurk-navlink__icon { transform: none; }
|
|
44
|
+
}
|
|
45
|
+
@media (max-width: 767px) {
|
|
46
|
+
.wurk-nav {
|
|
47
|
+
transform: translateX(-100%);
|
|
48
|
+
transition: transform var(--dur-slow) var(--ease-standard);
|
|
49
|
+
}
|
|
50
|
+
.wurk-nav--open {
|
|
51
|
+
transform: translateX(0);
|
|
52
|
+
}
|
|
53
|
+
/* RTL: the rail is pinned to the right edge, so it slides off to the
|
|
54
|
+
right when closed. */
|
|
55
|
+
[dir="rtl"] .wurk-nav {
|
|
56
|
+
transform: translateX(100%);
|
|
57
|
+
}
|
|
58
|
+
[dir="rtl"] .wurk-nav--open {
|
|
59
|
+
transform: translateX(0);
|
|
60
|
+
}
|
|
61
|
+
.nav-overlay {
|
|
62
|
+
display: block !important;
|
|
63
|
+
}
|
|
64
|
+
/* The collapse control is desktop-only; on mobile the nav is a
|
|
65
|
+
full-width drawer toggled by the hamburger. */
|
|
66
|
+
.nav-collapse-toggle { display: none !important; }
|
|
67
|
+
}
|
|
68
|
+
/* Desktop: a fixed-width rail the user pins open or collapsed (icons only)
|
|
69
|
+
via the toggle button — no hover-driven movement. The width change
|
|
70
|
+
animates; prefers-reduced-motion drops the animation. */
|
|
71
|
+
@media (min-width: 768px) {
|
|
72
|
+
.wurk-nav { transform: none !important; }
|
|
73
|
+
.wurk-nav--collapsed { width: var(--nav-rail); }
|
|
74
|
+
/* !important: the brand wordmark span carries an inline display:flex,
|
|
75
|
+
which a plain class rule can't beat — without this the "Wurk /
|
|
76
|
+
System Status" text stays rendered in the 64px rail and gets clipped. */
|
|
77
|
+
.wurk-nav--collapsed .nav-label { display: none !important; }
|
|
78
|
+
/* Collapsed: center each icon. The glyph lives in a FIXED 38px round
|
|
79
|
+
container at all times, so idle → hover → active only swaps its
|
|
80
|
+
background colour, never its size — the icon never shifts when you
|
|
81
|
+
click it, and the highlight is always a circle, never a square link
|
|
82
|
+
box. Tight link padding keeps the icons from drifting apart. */
|
|
83
|
+
/* !important: the <A> carries an inline padding (0.5rem 0.85rem)
|
|
84
|
+
that outranks any class rule. Zero it in the rail so the fixed-size
|
|
85
|
+
round glyph container — not link padding — defines the footprint;
|
|
86
|
+
the horizontal inline padding would otherwise cramp the circle in
|
|
87
|
+
the 64px rail and make it shift when the active background appears.
|
|
88
|
+
width/margin pin each control to a fixed rail-width box anchored at
|
|
89
|
+
the nav's start edge, so the centred glyph sits on a constant x
|
|
90
|
+
(rail/2). Without this, justify-content:center re-centres against the
|
|
91
|
+
*animating* nav width (248→64px), so the icons leap right on collapse
|
|
92
|
+
and glide back — a visible jump (#272 follow-up). */
|
|
93
|
+
.wurk-nav--collapsed .wurk-navlink,
|
|
94
|
+
.wurk-nav--collapsed .nav-collapse-toggle {
|
|
95
|
+
justify-content: center;
|
|
96
|
+
width: var(--nav-rail) !important;
|
|
97
|
+
margin-inline: 0 !important;
|
|
98
|
+
padding: 0 !important;
|
|
99
|
+
}
|
|
100
|
+
.wurk-nav--collapsed .wurk-navlink__icon {
|
|
101
|
+
display: grid;
|
|
102
|
+
place-items: center;
|
|
103
|
+
width: 36px;
|
|
104
|
+
height: 36px;
|
|
105
|
+
border-radius: 50%;
|
|
106
|
+
}
|
|
107
|
+
/* The link/button never fills — the round glyph container carries the
|
|
108
|
+
highlight instead of a boxy pill. */
|
|
109
|
+
.wurk-nav--collapsed .wurk-navlink:hover,
|
|
110
|
+
.wurk-nav--collapsed .wurk-navlink.active {
|
|
111
|
+
background: transparent !important;
|
|
112
|
+
box-shadow: none !important;
|
|
113
|
+
}
|
|
114
|
+
.wurk-nav--collapsed .wurk-navlink:hover .wurk-navlink__icon {
|
|
115
|
+
background: var(--surface-hover);
|
|
116
|
+
color: var(--accent);
|
|
117
|
+
}
|
|
118
|
+
.wurk-nav--collapsed .wurk-navlink.active .wurk-navlink__icon {
|
|
119
|
+
background: var(--surface-strong);
|
|
120
|
+
box-shadow: inset 0 0 0 1px var(--border);
|
|
121
|
+
color: var(--accent);
|
|
122
|
+
}
|
|
123
|
+
/* Collapsed: drop the wordmark and show just the logo mark, centered
|
|
124
|
+
with balanced padding so it sits squarely in the rail instead of
|
|
125
|
+
hugging the top-left. */
|
|
126
|
+
/* !important: the wrap carries an inline padding (1.25rem 1rem 0.75rem)
|
|
127
|
+
whose 1rem sides a plain class rule can't beat — leaving it in place
|
|
128
|
+
offsets the fixed-width brand box below by 16px, so the centred logo
|
|
129
|
+
lands right-of-centre in the rail. Zero the sides so the box anchors
|
|
130
|
+
at the nav's start edge and the logo sits on the rail mid-line. */
|
|
131
|
+
.wurk-nav--collapsed .nav-brand-wrap { padding: 0.9rem 0 !important; }
|
|
132
|
+
/* Same fixed rail-width box as the nav controls above, so the logo
|
|
133
|
+
centres on the constant rail mid-line instead of leaping right
|
|
134
|
+
against the animating nav width on collapse. */
|
|
135
|
+
.wurk-nav--collapsed .nav-brand-wrap a { justify-content: center; gap: 0; width: var(--nav-rail); }
|
|
136
|
+
.wurk-nav--collapsed .nav-brand-wrap img { height: 38px !important; }
|
|
137
|
+
}
|
|
138
|
+
@media (min-width: 768px) and (prefers-reduced-motion: reduce) {
|
|
139
|
+
.wurk-nav { transition: none; }
|
|
140
|
+
}
|
|
141
|
+
`),et=F(`<i aria-hidden=true>`),tt=F(`<span class=nav-label>`),nt=F(`<li>`),rt=F(`<i class="fa-solid fa-puzzle-piece wurk-navlink__icon"aria-hidden=true>`),it=[{to:`/`,label:A(`nav.dashboard`),icon:`fa-gauge-high`,end:!0},{to:`/queues`,label:A(`nav.queues`),icon:`fa-layer-group`,end:!1},{to:`/retries`,label:A(`nav.retries`),icon:`fa-rotate-right`,end:!1},{to:`/scheduled`,label:A(`nav.scheduled`),icon:`fa-clock`,end:!1},{to:`/dead`,label:A(`nav.dead`),icon:`fa-skull`,end:!1},{to:`/busy`,label:A(`nav.busy`),icon:`fa-gears`,end:!1},{to:`/batches`,label:A(`nav.batches`),icon:`fa-table-cells-large`,end:!1},{to:`/limiters`,label:A(`nav.limiters`),icon:`fa-gauge`,end:!1},{to:`/cron`,label:A(`nav.cron`),icon:`fa-stopwatch`,end:!1},{to:`/metrics`,label:A(`nav.metrics`),icon:`fa-chart-line`,end:!1},{to:`/profiles`,label:A(`nav.profiles`),icon:`fa-fire`,end:!1},{to:`/search`,label:A(`nav.search`),icon:`fa-magnifying-glass`,end:!1}];function at(e){let t=Y(),r=()=>t.data?.custom_tabs??[],o=()=>e.onClose();return[T(i,{get when(){return e.open},get children(){var e=qe();return e.$$click=o,e}}),(()=>{var s=Qe(),c=s.firstChild,l=c.nextSibling.nextSibling,u=l.nextSibling.nextSibling,d=u.firstChild,f=d.nextSibling;return u.nextSibling.nextSibling.firstChild,x(c,T(J,{href:`/`,end:!0,onClick:o,"aria-label":`Wurk — dashboard home`,style:{color:`var(--text)`,"text-decoration":`none`,display:`flex`,"align-items":`center`,gap:`0.6rem`},get children(){return[(()=>{var e=Je();return C(e,`src`,Ke),e})(),(()=>{var e=Xe(),n=e.firstChild;return n.firstChild,n.nextSibling.firstChild,x(n,T(i,{get when(){return t.data?.version},get children(){var e=Ye();return e.firstChild,x(e,()=>t.data?.version,null),e}}),null),e})()]}})),x(l,T(n,{each:it,children:e=>(()=>{var t=nt();return x(t,T(J,{get href(){return e.to},get end(){return e.end},onClick:o,get title(){return e.label},class:`wurk-navlink`,activeClass:`active`,get children(){return[(()=>{var t=et();return a(()=>M(t,`fa-solid ${e.icon} wurk-navlink__icon`)),t})(),(()=>{var t=tt();return x(t,()=>e.label),t})()]}})),t})()}),null),x(l,T(i,{get when(){return r().length>0},get children(){var e=Ze(),t=e.firstChild.nextSibling;return x(t,()=>A(`nav.extensions`)),e}}),null),x(l,T(n,{get each(){return r()},children:e=>(()=>{var t=nt();return x(t,T(J,{get href(){return`/ext/${e.path.replace(/\/+$/,``)}`},onClick:o,get title(){return e.name},class:`wurk-navlink`,activeClass:`active`,get children(){return[rt(),(()=>{var t=tt();return x(t,()=>e.name),t})()]}})),t})()}),null),u.$$click=()=>e.onToggleCollapse(),x(f,()=>A(`nav.collapse`)),a(t=>{var n=!!e.open,r=!!e.collapsed,i=e.collapsed?A(`nav.expand`):A(`nav.collapse`),a=!e.collapsed,o=e.collapsed?A(`nav.expand`):A(`nav.collapse`),c=`fa-solid ${e.collapsed?`fa-angles-right`:`fa-angles-left`} wurk-navlink__icon`;return n!==t.e&&s.classList.toggle(`wurk-nav--open`,t.e=n),r!==t.t&&s.classList.toggle(`wurk-nav--collapsed`,t.t=r),i!==t.a&&C(u,`aria-label`,t.a=i),a!==t.o&&C(u,`aria-expanded`,t.o=a),o!==t.i&&C(u,`title`,t.i=o),c!==t.n&&M(d,t.n=c),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),s})(),$e()]}b([`click`]);var ot=F(`<span aria-hidden=true>`),st=F(`<span aria-hidden=true class="skeleton skeleton--text">`),ct=F(`<div class=skeleton-table role=status aria-busy=true aria-label=Loading>`),lt=F(`<div class=skeleton-table__row>`),ut=F(`<span class="skeleton skeleton-table__cell"aria-hidden=true>`),dt=F(`<div class=skeleton-cards role=status aria-busy=true aria-label=Loading>`),ft=F(`<div class=skeleton-card>`),pt=F(`<div role=status aria-busy=true aria-label=Loading><div class=page-header style=animation:none><div class=skeleton-stack style=flex:1;max-width:18rem>`),X=e=>typeof e==`number`?`${e}px`:e;function Z(e){return(()=>{var t=ot();return a(n=>{var r=`skeleton${e.circle?` skeleton--circle`:``}${e.class?` ${e.class}`:``}`,i={width:X(e.width),height:X(e.height),"border-radius":X(e.radius),...e.style};return r!==n.e&&M(t,n.e=r),n.t=N(t,i,n.t),n},{e:void 0,t:void 0}),t})()}function mt(e){return(()=>{var t=st();return a(n=>N(t,{width:X(e.width??`100%`),...e.style},n)),t})()}function ht(e){return(()=>{var t=ct();return x(t,T(P,{get each(){return Array.from({length:e.rows??6})},children:()=>(()=>{var t=lt();return x(t,T(P,{get each(){return Array.from({length:e.cols??4})},children:()=>ut()})),t})()})),t})()}function gt(e){return(()=>{var t=dt();return x(t,T(P,{get each(){return Array.from({length:e.count??4})},children:()=>(()=>{var e=ft();return x(e,T(mt,{width:`45%`}),null),x(e,T(Z,{height:`1.6rem`,width:`60%`}),null),e})()})),t})()}function _t(){return(()=>{var e=pt(),t=e.firstChild,n=t.firstChild;return x(t,T(Z,{width:`2.75rem`,height:`2.75rem`,radius:`var(--radius)`}),n),x(n,T(Z,{height:`1.4rem`,width:`45%`}),null),x(n,T(mt,{width:`70%`}),null),x(e,T(ht,{rows:8,cols:4}),null),e})()}var vt=F(`<div class=empty-state role=alert><div style=font-size:15px;font-weight:600;color:var(--text);margin-bottom:0.4rem></div><p style="max-width:26rem;margin:0 auto 1.1rem;font-size:13px"></p><button class="btn btn-accent">`);function yt(e){return T(m,{fallback:e=>(console.error(`Dashboard route error:`,e),(()=>{var e=vt(),t=e.firstChild,n=t.nextSibling,r=n.nextSibling;return x(t,()=>A(`common.load_failed`)),x(n,()=>A(`common.load_failed_hint`)),r.$$click=()=>window.location.reload(),x(r,()=>A(`common.reload`)),e})()),get children(){return e.children}})}b([`click`]);var bt=`modulepreload`,xt=function(e){return`/wurk-assets/`+e},St={},Q=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,new URL(`../../../src/node/plugins/importAnalysisBuild.ts`,import.meta.url)).href}r=o(t.map(t=>{if(t=xt(t,n),t=s(t),t in St)return;St[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:bt,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Ct=F(`<div role=status style="background:var(--warning);color:#1a1a1a;text-align:center;padding:0.5rem 1rem;font-weight:600;font-size:13px;letter-spacing:0.01em;border-radius:8px;margin-bottom:1.75rem">`),wt=F(`<div style=display:flex;min-height:100vh><button class=hamburger aria-label="Toggle navigation"style=position:fixed;top:12px;inset-inline-start:12px;z-index:200><i class="fa-solid fa-bars"></i></button><main class=main-content style=flex:1;padding:1.5rem>`),Tt=t(()=>Q(()=>import(`./Dashboard-CzPudckV.js`),__vite__mapDeps([0,1,2,3]))),Et=t(()=>Q(()=>import(`./Queues-BuXoxQ4W.js`),__vite__mapDeps([4,1,2,5,6,7,8,9,10]))),Dt=t(()=>Q(()=>import(`./Retries-D4HAPaOQ.js`),__vite__mapDeps([11,1,2,5,6,7,9,10,8,12]))),Ot=t(()=>Q(()=>import(`./Scheduled-6NCZYVJh.js`),__vite__mapDeps([13,1,2,5,6,7,9,10,8,12]))),kt=t(()=>Q(()=>import(`./Dead-BIq4Nz_i.js`),__vite__mapDeps([14,1,2,5,6,7,9,10,8,12]))),At=t(()=>Q(()=>import(`./Busy-QSHBFXhy.js`),__vite__mapDeps([15,1,2,7,8,9]))),jt=t(()=>Q(()=>import(`./Batches-bgkXn8tc.js`),__vite__mapDeps([16,1,2,5,6,7]))),Mt=t(()=>Q(()=>import(`./BatchDetail-C5dkqAzp.js`),__vite__mapDeps([17,1,2]))),Nt=t(()=>Q(()=>import(`./Limiters-CiI_DfUK.js`),__vite__mapDeps([18,1,5,6,7]))),Pt=t(()=>Q(()=>import(`./Cron-CUHppvTA.js`),__vite__mapDeps([19,1,2,6,7,8]))),Ft=t(()=>Q(()=>import(`./Metrics-BzZ8ugms.js`),__vite__mapDeps([20,1,2,3]))),It=t(()=>Q(()=>import(`./Profiles-BTtIlTdR.js`),__vite__mapDeps([21,1]))),Lt=t(()=>Q(()=>import(`./Search-JaB_-52c.js`),__vite__mapDeps([22,1,2,7]))),Rt=t(()=>Q(()=>import(`./Extension-CW36i9R1.js`),__vite__mapDeps([23,1,7]))),zt=new w({defaultOptions:{queries:{staleTime:5e3,retry:1}}});function Bt(){let e=Y();return T(i,{get when(){return e.data?.read_only},get children(){var t=Ct();return x(t,()=>e.data?.read_only_message||A(`readonly.banner`)),t}})}var Vt=`wurk-nav-collapsed`;function Ht(){return typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches===!0}function Ut(e){let[t,n]=d(!1),[i,o]=d((()=>{try{return typeof localStorage<`u`&&localStorage.getItem(Vt)===`1`}catch{return!1}})()),s=()=>o(e=>{let t=!e;try{localStorage.setItem(Vt,t?`1`:`0`)}catch{}return t});return T(y,{client:zt,get children(){var o=wt(),c=o.firstChild,l=c.nextSibling;return c.$$click=()=>n(e=>!e),x(l,T(Bt,{}),null),x(l,T(yt,{get children(){return T(r,{get fallback(){return T(_t,{})},get children(){return e.children}})}}),null),x(o,T(at,{get open(){return t()},onClose:()=>n(!1),get collapsed(){return i()},onToggleCollapse:s}),null),a(e=>{var t=i()?`var(--nav-rail)`:`var(--nav-width)`,n=Ht()?`none`:`margin var(--dur-page) var(--ease-emphasized)`;return t!==e.e&&S(l,`margin-inline-start`,e.e=t),n!==e.t&&S(l,`transition`,e.t=n),e},{e:void 0,t:void 0}),o}})}function Wt(){return T(We,{root:Ut,base:`/wurk`,get children(){return[T(q,{path:`/`,component:Tt}),T(q,{path:`/queues`,component:Et}),T(q,{path:`/retries`,component:Dt}),T(q,{path:`/scheduled`,component:Ot}),T(q,{path:`/dead`,component:kt}),T(q,{path:`/busy`,component:At}),T(q,{path:`/batches`,component:jt}),T(q,{path:`/batches/:bid`,component:Mt}),T(q,{path:`/limiters`,component:Nt}),T(q,{path:`/cron`,component:Pt}),T(q,{path:`/metrics`,component:Ft}),T(q,{path:`/profiles`,component:It}),T(q,{path:`/search`,component:Lt}),T(q,{path:`/ext/:tab`,component:Rt})]}})}b([`click`]);var Gt=F(`<div style=padding:2rem;text-align:center;color:var(--text-muted);font-size:14px;line-height:1.6>`);document.documentElement.dir=j,document.documentElement.lang=D;var Kt=window.self!==window.top&&new URLSearchParams(window.location.search).has(`wurk_ext_embed`),$=document.getElementById(`wurk-root`);$&&($.dir=j,E(()=>Kt?(()=>{var e=Gt();return x(e,()=>A(`extension.notRendered`)),e})():T(Wt,{}),$));export{J as a,Y as i,gt as n,Te as o,ht as r,Ee as s,Z as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,F as t,L as n,c as r,d as i,f as a,j as o,o as s,p as c,r as l,u,y as d}from"./i18n-gIeA5VLo.js";var f=d(`<div class=action-bar><div class=action-bar-group><span class=action-bar-count></span></div><div class=action-bar-group>`),p=d(`<button>`);function m(n){let r=(e,t)=>!e.danger||window.confirm(l(`actions.confirm`,{action:e.label,scope:t}));return(()=>{var i=f(),s=i.firstChild,d=s.firstChild,m=s.nextSibling;return a(d,(()=>{var e=c(()=>n.selectedCount>0);return()=>e()?l(`actions.selected`,{n:n.selectedCount}):l(`actions.select_hint`)})()),a(s,o(e,{get each(){return n.bulk},children:e=>(()=>{var i=p();return i.$$click=()=>r(e,l(`actions.scope_selected`,{n:n.selectedCount}))&&n.onBulk(e.cmd),a(i,()=>e.label),t(t=>{var r=`btn btn-sm${e.danger?` btn-danger`:``}`,a=n.pending||n.selectedCount===0;return r!==t.e&&u(i,t.e=r),a!==t.t&&(i.disabled=t.t=a),t},{e:void 0,t:void 0}),i})()}),null),a(m,o(e,{get each(){return n.all},children:e=>(()=>{var i=p();return i.$$click=()=>r(e,l(`actions.scope_all`))&&n.onAll(e.cmd),a(i,()=>`${e.label} ${l(`actions.all_suffix`)}`),t(t=>{var r=`btn btn-sm btn-ghost${e.danger?` btn-danger`:``}`,a=n.pending||n.total===0;return r!==t.e&&u(i,t.e=r),a!==t.t&&(i.disabled=t.t=a),t},{e:void 0,t:void 0}),i})()})),i})()}i([`click`]);function h(){let[e,t]=n(new Set);return{selected:e,toggle:e=>t(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),toggleAll:e=>t(t=>e.length>0&&e.every(e=>t.has(e))?new Set:new Set(e)),clear:()=>t(new Set),count:()=>e().size}}function g(e){return`${e.score}|${e.jid}`}async function _(e,t){let n=await fetch(e,{method:`POST`,headers:t?{"Content-Type":`application/json`}:{},body:t?JSON.stringify(t):void 0});if(!n.ok)throw Error(`Request failed (${n.status})`);return n}function v(e){let t=r(),n=()=>{t.invalidateQueries({queryKey:[e]}),t.invalidateQueries({queryKey:[`stats`]})};return{single:s(()=>({mutationFn:({key:t,cmd:n})=>_(`/wurk/api/${e}/${encodeURIComponent(t)}`,{cmd:n}),onSuccess:n})),bulk:s(()=>({mutationFn:({keys:t,cmd:n})=>_(`/wurk/api/${e}`,{keys:t,cmd:n}),onSuccess:n})),all:s(()=>({mutationFn:t=>_(`/wurk/api/${e}/all/${t}`),onSuccess:n}))}}export{m as i,v as n,h as r,g as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{F as e,d as t,f as n,g as r,r as i,y as a}from"./i18n-gIeA5VLo.js";import{s as o}from"./index-DWfWAGBc.js";var s=a(`<div class=pagination><button class=btn></button><span> <!> <!> </span><button class=btn>`);function c(t){let a=()=>Math.max(1,Math.ceil(t.total/t.count));return(()=>{var o=s(),c=o.firstChild,l=c.nextSibling,u=l.firstChild,d=u.nextSibling,f=d.nextSibling.nextSibling;f.nextSibling;var p=l.nextSibling;return c.$$click=()=>t.onChange(t.page-1),n(c,()=>i(`actions.prev`)),n(l,()=>i(`common.page`),u),n(l,()=>t.page,d),n(l,()=>i(`common.of`),f),n(l,a,null),p.$$click=()=>t.onChange(t.page+1),n(p,()=>i(`actions.next`)),e(e=>{var n=t.page<=1,i=t.page<=1?.4:1,o=t.page>=a(),s=t.page>=a()?.4:1;return n!==e.e&&(c.disabled=e.e=n),i!==e.t&&r(c,`opacity`,e.t=i),o!==e.a&&(p.disabled=e.a=o),s!==e.o&&r(p,`opacity`,e.o=s),e},{e:void 0,t:void 0,a:void 0,o:void 0}),o})()}t([`click`]);function l(){let[e,t]=o();return[()=>{let t=parseInt(e.page??`1`,10);return Number.isFinite(t)&&t>0?t:1},e=>t({page:e<=1?void 0:String(e)})]}export{c as n,l as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{F as e,L as t,P as n,d as r,f as i,h as a,u as o,v as s,y as c}from"./i18n-gIeA5VLo.js";var l=c(`<th class=th-sortable><button type=button class=th-sortable__btn><i aria-hidden=true>`);function u(t){let n=()=>t.sort.key===t.sortKey,r=()=>n()?t.sort.dir===`asc`?`fa-arrow-up-short-wide`:`fa-arrow-down-wide-short`:`fa-sort`;return(()=>{var c=l(),u=c.firstChild,d=u.firstChild;return u.$$click=()=>t.onSort(t.sortKey),i(u,()=>t.label,d),e(e=>{var i=n()?t.sort.dir===`asc`?`ascending`:`descending`:`none`,l=t.style,u=`fa-solid ${r()} th-sortable__icon${n()?` is-active`:``}`;return i!==e.e&&a(c,`aria-sort`,e.e=i),e.t=s(c,l,e.t),u!==e.a&&o(d,e.a=u),e},{e:void 0,t:void 0,a:void 0}),c})()}r([`click`]);function d(e,r,i){let[a,o]=t(i??{key:null,dir:`asc`});return{sorted:n(()=>{let t=a(),n=t.key?r[t.key]:void 0,i=e();if(!n)return i;let o=[...i];return o.sort((e,r)=>{let i=n(e),a=n(r);if(i==null&&a==null)return 0;if(i==null)return 1;if(a==null)return-1;let o=typeof i==`number`&&typeof a==`number`?i-a:String(i).localeCompare(String(a),void 0,{numeric:!0,sensitivity:`base`});return t.dir===`asc`?o:-o}),o}),sort:a,toggle:e=>o(t=>t.key===e?{key:e,dir:t.dir===`asc`?`desc`:`asc`}:{key:e,dir:`asc`})}}export{u as n,d as t};
|
|
@@ -40,8 +40,9 @@
|
|
|
40
40
|
<meta name="twitter:image" content="/wurk-assets/og-image.png" />
|
|
41
41
|
|
|
42
42
|
<title>Wurk — Background Jobs</title>
|
|
43
|
-
<script type="module" crossorigin src="/wurk-assets/assets/index-
|
|
44
|
-
<link rel="
|
|
43
|
+
<script type="module" crossorigin src="/wurk-assets/assets/index-DWfWAGBc.js"></script>
|
|
44
|
+
<link rel="modulepreload" crossorigin href="/wurk-assets/assets/i18n-gIeA5VLo.js">
|
|
45
|
+
<link rel="stylesheet" crossorigin href="/wurk-assets/assets/index-BDG9tvBA.css">
|
|
45
46
|
</head>
|
|
46
47
|
<body>
|
|
47
48
|
<div id="wurk-root"></div>
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: wurk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- developerz.ai
|
|
@@ -119,7 +119,7 @@ dependencies:
|
|
|
119
119
|
version: '2'
|
|
120
120
|
description: 'Wire-compatible Ruby background job processor: same Redis schema, same
|
|
121
121
|
job JSON, same Ruby DSL. Pro + Enterprise feature parity in the same gem, no license
|
|
122
|
-
check. Fork-based real parallelism. Mountable Rails engine with a precompiled
|
|
122
|
+
check. Fork-based real parallelism. Mountable Rails engine with a precompiled SolidJS
|
|
123
123
|
dashboard.'
|
|
124
124
|
email:
|
|
125
125
|
- admin@developerz.ai
|
|
@@ -270,25 +270,25 @@ files:
|
|
|
270
270
|
- lib/wurk/worker.rb
|
|
271
271
|
- lib/wurk/worker/setter.rb
|
|
272
272
|
- vendor/assets/dashboard/apple-touch-icon.png
|
|
273
|
-
- vendor/assets/dashboard/assets/
|
|
274
|
-
- vendor/assets/dashboard/assets/
|
|
275
|
-
- vendor/assets/dashboard/assets/
|
|
276
|
-
- vendor/assets/dashboard/assets/
|
|
277
|
-
- vendor/assets/dashboard/assets/
|
|
278
|
-
- vendor/assets/dashboard/assets/
|
|
279
|
-
- vendor/assets/dashboard/assets/
|
|
280
|
-
- vendor/assets/dashboard/assets/
|
|
281
|
-
- vendor/assets/dashboard/assets/
|
|
282
|
-
- vendor/assets/dashboard/assets/
|
|
283
|
-
- vendor/assets/dashboard/assets/
|
|
284
|
-
- vendor/assets/dashboard/assets/
|
|
285
|
-
- vendor/assets/dashboard/assets/
|
|
286
|
-
- vendor/assets/dashboard/assets/
|
|
287
|
-
- vendor/assets/dashboard/assets/
|
|
288
|
-
- vendor/assets/dashboard/assets/
|
|
289
|
-
- vendor/assets/dashboard/assets/
|
|
290
|
-
- vendor/assets/dashboard/assets/
|
|
291
|
-
- vendor/assets/dashboard/assets/
|
|
273
|
+
- vendor/assets/dashboard/assets/ArgsValue-BUqJa-eG.js
|
|
274
|
+
- vendor/assets/dashboard/assets/BatchDetail-C5dkqAzp.js
|
|
275
|
+
- vendor/assets/dashboard/assets/Batches-bgkXn8tc.js
|
|
276
|
+
- vendor/assets/dashboard/assets/Busy-QSHBFXhy.js
|
|
277
|
+
- vendor/assets/dashboard/assets/Cron-CUHppvTA.js
|
|
278
|
+
- vendor/assets/dashboard/assets/Dashboard-CzPudckV.js
|
|
279
|
+
- vendor/assets/dashboard/assets/Dead-BIq4Nz_i.js
|
|
280
|
+
- vendor/assets/dashboard/assets/Extension-CW36i9R1.js
|
|
281
|
+
- vendor/assets/dashboard/assets/JobDetailModal-BhNdWSp7.js
|
|
282
|
+
- vendor/assets/dashboard/assets/Limiters-CiI_DfUK.js
|
|
283
|
+
- vendor/assets/dashboard/assets/Metrics-BzZ8ugms.js
|
|
284
|
+
- vendor/assets/dashboard/assets/Modal-DzVfgsSF.js
|
|
285
|
+
- vendor/assets/dashboard/assets/PageHeader-Dp3qhX3e.js
|
|
286
|
+
- vendor/assets/dashboard/assets/Profiles-BTtIlTdR.js
|
|
287
|
+
- vendor/assets/dashboard/assets/Queues-BuXoxQ4W.js
|
|
288
|
+
- vendor/assets/dashboard/assets/Retries-D4HAPaOQ.js
|
|
289
|
+
- vendor/assets/dashboard/assets/Scheduled-6NCZYVJh.js
|
|
290
|
+
- vendor/assets/dashboard/assets/Search-JaB_-52c.js
|
|
291
|
+
- vendor/assets/dashboard/assets/charts-6uvCyY0x.js
|
|
292
292
|
- vendor/assets/dashboard/assets/fa-brands-400-BK5CuonO.woff2
|
|
293
293
|
- vendor/assets/dashboard/assets/fa-regular-400-WLfxSHV3.woff2
|
|
294
294
|
- vendor/assets/dashboard/assets/fa-solid-900-Iz_TytpP.woff2
|
|
@@ -301,8 +301,9 @@ files:
|
|
|
301
301
|
- vendor/assets/dashboard/assets/geist-sans-latin-600-normal-DFOURf8L.woff2
|
|
302
302
|
- vendor/assets/dashboard/assets/geist-sans-latin-700-normal-BmN9tIp5.woff2
|
|
303
303
|
- vendor/assets/dashboard/assets/geist-sans-latin-700-normal-CjScfYeH.woff
|
|
304
|
-
- vendor/assets/dashboard/assets/
|
|
305
|
-
- vendor/assets/dashboard/assets/index-
|
|
304
|
+
- vendor/assets/dashboard/assets/i18n-gIeA5VLo.js
|
|
305
|
+
- vendor/assets/dashboard/assets/index-BDG9tvBA.css
|
|
306
|
+
- vendor/assets/dashboard/assets/index-DWfWAGBc.js
|
|
306
307
|
- vendor/assets/dashboard/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff
|
|
307
308
|
- vendor/assets/dashboard/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2
|
|
308
309
|
- vendor/assets/dashboard/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff
|
|
@@ -312,10 +313,9 @@ files:
|
|
|
312
313
|
- vendor/assets/dashboard/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2
|
|
313
314
|
- vendor/assets/dashboard/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff
|
|
314
315
|
- vendor/assets/dashboard/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff
|
|
315
|
-
- vendor/assets/dashboard/assets/useJobSetActions-
|
|
316
|
-
- vendor/assets/dashboard/assets/
|
|
317
|
-
- vendor/assets/dashboard/assets/
|
|
318
|
-
- vendor/assets/dashboard/assets/useSort-BPPxnBBo.js
|
|
316
|
+
- vendor/assets/dashboard/assets/useJobSetActions-DTDaAoWr.js
|
|
317
|
+
- vendor/assets/dashboard/assets/usePageParam-BcAvRko-.js
|
|
318
|
+
- vendor/assets/dashboard/assets/useSort-D5Am4bGq.js
|
|
319
319
|
- vendor/assets/dashboard/assets/utils-DDJC7tJV.js
|
|
320
320
|
- vendor/assets/dashboard/assets/wurk-logo-Vy3xW4K0.png
|
|
321
321
|
- vendor/assets/dashboard/favicon-16.png
|