bunqueue-dashboard 1.0.1 → 1.0.3

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 (84) hide show
  1. package/README.md +13 -10
  2. package/agent/backup/routes.ts +20 -12
  3. package/agent/manager/config.ts +2 -1
  4. package/agent/server/handler.ts +2 -1
  5. package/agent/server/router.ts +6 -1
  6. package/agent/server/types.ts +1 -1
  7. package/agent/workflow/runtime.ts +25 -7
  8. package/agent/workflow/runtimeRoutes.ts +4 -1
  9. package/dist/.vite/manifest.json +500 -489
  10. package/dist/assets/{AddJob-CiwWycYG.js → AddJob-jq-VZ_YE.js} +1 -1
  11. package/dist/assets/{Alerts-DzKKoA9U.js → Alerts-Bi8zLKXV.js} +1 -1
  12. package/dist/assets/{AreaChart-Db2UVnaK.js → AreaChart-BMYp7z5y.js} +1 -1
  13. package/dist/assets/{Benchmark-CHYDL31K.js → Benchmark-CWYdqm55.js} +1 -1
  14. package/dist/assets/{BulkAddJobs-GRMVnf0j.js → BulkAddJobs-0cdWqkEF.js} +1 -1
  15. package/dist/assets/{Button-_aSJvRoW.js → Button-BCjgbAhY.js} +1 -1
  16. package/dist/assets/{Card-egIDLwVk.js → Card-DptfvL2O.js} +1 -1
  17. package/dist/assets/{Cron-XL0PdUEc.js → Cron-dPGwJXqY.js} +1 -1
  18. package/dist/assets/{CronManager-Cqtg9Zr8.js → CronManager-C0-Y2QDg.js} +1 -1
  19. package/dist/assets/{Database-BoxVpjts.js → Database-CseJOrvD.js} +1 -1
  20. package/dist/assets/{Diagnostics-B3QSQuFF.js → Diagnostics-cZTy4Y2t.js} +1 -1
  21. package/dist/assets/{Dlq-DHOfgORa.js → Dlq-W2xOJiZM.js} +1 -1
  22. package/dist/assets/{DlqControl-BY1e55-x.js → DlqControl-CIV5278D.js} +1 -1
  23. package/dist/assets/DlqPro-BuRxGtGt.js +1 -0
  24. package/dist/assets/{Fleet-Bkbq0dFB.js → Fleet-0zKJSjCw.js} +1 -1
  25. package/dist/assets/{Flows-CDCQrPit.js → Flows-CEfm102Y.js} +1 -1
  26. package/dist/assets/{JobInspector-Bw3Gs1Iy.js → JobInspector-BlMj5-Vr.js} +1 -1
  27. package/dist/assets/{Jobs-IrlneOy6.js → Jobs-D_TId_Oa.js} +1 -1
  28. package/dist/assets/JobsPro-A06ZG5Xi.js +1 -0
  29. package/dist/assets/{Logs-DG7cK-tF.js → Logs-hbh7XhQU.js} +1 -1
  30. package/dist/assets/{LogsPro-ClSqFKys.js → LogsPro-BgEIjgfj.js} +1 -1
  31. package/dist/assets/McpServer-ffXr4nFW.js +22 -0
  32. package/dist/assets/{Metrics-BkePZiCZ.js → Metrics-CIKZGgf0.js} +1 -1
  33. package/dist/assets/{MetricsPro-ooSvpQ3H.js → MetricsPro-CK3WfLCl.js} +1 -1
  34. package/dist/assets/{Overview-CuWmPRra.js → Overview-BBgwyUn4.js} +1 -1
  35. package/dist/assets/{PageHeader-CQzNsw8r.js → PageHeader-DD4vnVog.js} +1 -1
  36. package/dist/assets/{Pagination-CSkzhNW6.js → Pagination-Cj7GzYNX.js} +1 -1
  37. package/dist/assets/{QueueActions-BBxRt-t0.js → QueueActions-BgdW95rN.js} +1 -1
  38. package/dist/assets/{QueueControl-C01l6bBJ.js → QueueControl-g-9kwrpt.js} +1 -1
  39. package/dist/assets/{QueueDetail-gSf9Tb7G.js → QueueDetail-Cv3MLDoE.js} +1 -1
  40. package/dist/assets/{QueueDetailPro-BKszqI0M.js → QueueDetailPro-AhdOAzEF.js} +1 -1
  41. package/dist/assets/{Queues-BAg2nSz0.js → Queues-Bbvh_OCE.js} +1 -1
  42. package/dist/assets/{QueuesOverview-BLSjiYsA.js → QueuesOverview-sPQILfMU.js} +1 -1
  43. package/dist/assets/{S3Backup-Ci4dJPP_.js → S3Backup-Cg6sc2JG.js} +1 -1
  44. package/dist/assets/{S3BackupPro-DcjlrzC5.js → S3BackupPro-BWV_R_Vj.js} +1 -1
  45. package/dist/assets/ServerControl-Dr2gXbaU.js +3 -0
  46. package/dist/assets/{Settings-DR_iqW0T.js → Settings-BsDDlu-h.js} +1 -1
  47. package/dist/assets/{StatusBadge-DereLzOj.js → StatusBadge-cYUkK-4P.js} +1 -1
  48. package/dist/assets/{Usage-ZWfB7PcR.js → Usage-Cxx6pZfb.js} +1 -1
  49. package/dist/assets/{UsagePro-BjdeS2zb.js → UsagePro-CkC8WYcS.js} +1 -1
  50. package/dist/assets/{Webhooks-BonYUgMo.js → Webhooks-BKWnALGC.js} +1 -1
  51. package/dist/assets/{Workers-C1h6hCPp.js → Workers-SJ9MApx3.js} +1 -1
  52. package/dist/assets/WorkersPro-BDgHBTpY.js +1 -0
  53. package/dist/assets/Workflows-Cp6jqKeM.js +1 -0
  54. package/dist/assets/{api-D9aT0ND7.js → api-Bbo86MB6.js} +1 -1
  55. package/dist/assets/{bq-DR2BTISO.js → bq-CSX8DSME.js} +1 -1
  56. package/dist/assets/{classicJobsData-Csj4iihY.js → classicJobsData-BimIyQky.js} +1 -1
  57. package/dist/assets/{connectionStore-CVjQyIZv.js → connectionStore-DdLzJyut.js} +1 -1
  58. package/dist/assets/{controlConnectionEpoch-ChAeMMLk.js → controlConnectionEpoch-D4HtriLM.js} +1 -1
  59. package/dist/assets/{feedback-CtGN_kqB.js → feedback-Dxfj-Fy1.js} +1 -1
  60. package/dist/assets/{form-DG3X6cLL.js → form-Dy-an7ew.js} +1 -1
  61. package/dist/assets/{icons-DH9SS1DA.js → icons-C1HVBnFn.js} +1 -1
  62. package/dist/assets/{index-Bat1DN5U.js → index-CxzFSZj3.js} +3 -3
  63. package/dist/assets/index-DZXf58c2.css +1 -0
  64. package/dist/assets/install-DUkXE5kb.js +3 -0
  65. package/dist/assets/package-C7CtgBEy.js +1 -0
  66. package/dist/assets/react-vendor-DfC0iyIS.js +11 -0
  67. package/dist/assets/{toastStore-XmMX7A5W.js → toastStore-DnqA_aL-.js} +1 -1
  68. package/dist/assets/{useControlActionGuard-1i7aFA7E.js → useControlActionGuard-DImMgJtj.js} +1 -1
  69. package/dist/assets/{usePolledData-CEyyLRYa.js → usePolledData-Dp_ynL9f.js} +1 -1
  70. package/dist/assets/{useServerActionGuard-CUx8TOAC.js → useServerActionGuard-Cr4KUOeZ.js} +1 -1
  71. package/dist/assets/{useThroughputSeries-CeFx-Mwq.js → useThroughputSeries-CrTeR9s3.js} +1 -1
  72. package/dist/index.html +14 -14
  73. package/package.json +40 -33
  74. package/scripts/bunVersion.ts +1 -1
  75. package/scripts/embedded.gen.ts +146 -144
  76. package/dist/assets/DlqPro-CfwKDcpc.js +0 -1
  77. package/dist/assets/JobsPro-vlPd6Ows.js +0 -1
  78. package/dist/assets/McpServer-DoNFY0Pj.js +0 -24
  79. package/dist/assets/ServerControl-SiZBNo9P.js +0 -3
  80. package/dist/assets/WorkersPro-B0f_Nfdz.js +0 -1
  81. package/dist/assets/Workflows-CqZZ96EK.js +0 -1
  82. package/dist/assets/index-C9yGKhQ8.css +0 -1
  83. package/dist/assets/install-oydLpc1T.js +0 -3
  84. package/dist/assets/react-vendor-CFL9l8LK.js +0 -11
@@ -0,0 +1,3 @@
1
+ import{t as e}from"./package-C7CtgBEy.js";var t=e=>({ok:!0,result:e});function n(e,n){let r=e[1];return n===`GET`&&r===`status`?t({success:!0,message:`Backup configuration loaded`,data:{enabled:!0,bucket:`bunqueue-demo-backups`,endpoint:`https://s3.example.com`,interval:`6h`,retention:`30d`}}):n===`GET`&&r===`list`?t({success:!0,message:`Backups listed`,data:[{key:`backups/bunqueue-2026-08-04.db`,size:`2.6 MB`,date:`2026-08-04T10:00:00Z`},{key:`backups/bunqueue-2026-08-03.db`,size:`2.5 MB`,date:`2026-08-03T10:00:00Z`}]}):n===`POST`&&r===`configure`?t({configured:!0,enabled:!0}):n===`POST`&&r===`now`?t({success:!0,message:`Demo backup completed`,data:{key:`backups/bunqueue-demo-now.db`}}):n===`POST`&&r===`restore`?t({success:!0,message:`Demo backup restored`}):{ok:!1,error:`Demo backup route not found`}}var r={command:`bunx bunqueue@${e.dependencies.bunqueue} start`,httpPort:6790,tcpPort:6791,dataPath:`./data/bunqueue.db`,extraEnv:{LOG_LEVEL:`info`}},i=()=>({status:`running`,generation:1,configRevision:1,pid:42317,startedAt:Date.now()-36e5,exitCode:null,healthy:!0,version:e.dependencies.bunqueue,config:r,runningConfig:r,db:{path:r.dataPath,exists:!0,size:2621440,walSize:49152,shmSize:32768,totalSize:2703360,mtimeMs:Date.now()-12e3}}),a=()=>{let e=Date.now();return{ok:!0,data:{workers:[{id:`wrk-9f21c3d0`,name:`worker-emails-1`,queues:[`emails`,`notifications`],concurrency:10,hostname:`worker-01`,pid:3411,status:`active`,registeredAt:e-54e5,lastSeen:e-4e3,activeJobs:0,processedJobs:1284,failedJobs:6,currentJob:null,uptime:54e5},{id:`wrk-4b77aa19`,name:`worker-media-1`,queues:[`image-processing`],concurrency:4,hostname:`worker-02`,pid:3987,status:`active`,registeredAt:e-51e5,lastSeen:e-2e3,activeJobs:2,processedJobs:342,failedJobs:1,currentJob:`019f252b-8769-7000-bc44-cfc168232f53`,uptime:51e5},{id:`wrk-c05e881f`,name:`worker-batch-1`,queues:[`reports`],concurrency:2,hostname:`worker-02`,pid:4102,status:`stale`,registeredAt:e-9e6,lastSeen:e-12e5,activeJobs:0,processedJobs:57,failedJobs:0,currentJob:null,uptime:78e5}],stats:{total:3,active:2,totalProcessed:1683,totalFailed:7,activeJobs:2}}}},o=()=>{let t=Date.now(),n=(e,n,r,i)=>({seq:e,ts:t-n,stream:r,line:i});return{lines:[n(1,8e3,`sys`,`starting: ${r.command}`),n(2,7800,`stdout`,`bunqueue v${e.dependencies.bunqueue} — HTTP :6790, TCP :6791`),n(3,7600,`stdout`,`SQLite ready (WAL) at ./data/bunqueue.db`),n(4,5e3,`stdout`,`worker registered: image-processing`),n(5,1200,`stdout`,`health ok — 4 queues, 34 jobs`)]}},s={ok:!0,sqliteVersion:`3.45.1`,pageSize:4096,pageCount:640,journalMode:`wal`,freelistPages:8,tables:6,indexes:11,fileSize:2621440,walSize:49152},c={jobs:{columns:[`id`,`queue`,`state`,`priority`,`attempts`,`created_at`],types:{id:`TEXT`,queue:`TEXT`,state:`TEXT`,priority:`INTEGER`,attempts:`INTEGER`,created_at:`INTEGER`},rows:[[`019f252b-86c0-7000-a54e-3816c968ebf0`,`emails`,`prioritized`,1,0,1783035037376],[`019f252b-8769-7000-bc44-cfc168232f53`,`image-processing`,`active`,0,0,1783035037545],[`019f252b-86da-7000-a9e3-6b1b74944d70`,`emails`,`completed`,3,0,1783035037402],[`019f252b-8716-7000-bbec-d8c65e09f340`,`emails`,`failed`,3,0,1783035037462],[`019f252b-87d8-7000-8f0c-e8ca5fec7d18`,`reports`,`delayed`,0,0,1783035037656]]},queues:{columns:[`name`,`paused`,`concurrency`,`rate_limit`],types:{name:`TEXT`,paused:`INTEGER`,concurrency:`INTEGER`,rate_limit:`INTEGER`},rows:[[`emails`,0,10,0],[`image-processing`,0,4,100],[`reports`,0,2,0],[`notifications`,0,8,0]]},dlq:{columns:[`id`,`queue`,`reason`,`attempts`,`entered_at`],types:{id:`TEXT`,queue:`TEXT`,reason:`TEXT`,attempts:`INTEGER`,entered_at:`INTEGER`},rows:[[`019f252b-8716-7000-bbec-d8c65e09f340`,`emails`,`max attempts reached`,3,1783035037462],[`019f252b-8a02-7000-9b21-4c1f0b7e2a55`,`reports`,`handler threw`,5,1783035039101]]},crons:{columns:[`name`,`queue`,`pattern`,`tz`,`next_run`],types:{name:`TEXT`,queue:`TEXT`,pattern:`TEXT`,tz:`TEXT`,next_run:`INTEGER`},rows:[[`nightly-report`,`reports`,`0 2 * * *`,`UTC`,17830944e5],[`digest-email`,`emails`,`*/15 * * * *`,`UTC`,17830359e5]]},webhooks:{columns:[`id`,`url`,`events`,`active`,`failures`,`created_at`],types:{id:`TEXT`,url:`TEXT`,events:`TEXT`,active:`INTEGER`,failures:`INTEGER`,created_at:`INTEGER`},rows:[[`wh_9c31`,`https://hooks.example.com/bunqueue`,`job:completed,job:failed`,1,0,1783034e6]]},job_results:{columns:[`job_id`,`result`,`stored_at`],types:{job_id:`TEXT`,result:`TEXT`,stored_at:`INTEGER`},rows:[[`019f252b-86da-7000-a9e3-6b1b74944d70`,`{"messageId":"smtp-7712"}`,1783035037999],[`019f252b-8769-7000-bc44-cfc168232f53`,`{"bytes":184320}`,1783035038220],[`019f252b-87d8-7000-8f0c-e8ca5fec7d18`,`{"rows":128}`,1783035038511],[`019f252b-8a02-7000-9b21-4c1f0b7e2a55`,`{"error":"handler threw"}`,1783035039300],[`demo-csv-formula`,`=SUM(1,2)`,1783035039400]]}};function l(e){return Object.hasOwn(c,e)?c[e]:void 0}var u={ok:!0,tables:Object.entries(c).map(([e,t])=>({name:e,rows:t.rows.length,columns:t.columns.length}))};function d(e){let t=l(e),n=t?.columns??[`id`,`data`],r=t?.types??{};return{ok:!0,table:e,columns:n.map((e,t)=>({name:e,type:r[e]??`TEXT`,notNull:t===0,defaultValue:null,primaryKey:t===0})),indexes:[{name:`idx_${e}_${n[0]}`,unique:!0,columns:[n[0]]}],sql:`CREATE TABLE ${e} (${n.map(e=>`${e} ${r[e]??`TEXT`}`).join(`, `)})`,rowCount:t?.rows.length??0}}var f=e=>e.replace(/[A-Z]/g,e=>e.toLowerCase());function p(e,t,n=!1){let r=l(e);if(n&&!r)throw Error(`No such table: ${e}`);let i=r?.columns??[`id`,`data`],a=r?.rows??[],o=new URLSearchParams(t);if(n){let e=new Set([`orderBy`,`dir`,`fcol`,`fop`,`fval`]);for(let t of o.keys()){if(!e.has(t))throw Error(`Unknown database export option: ${t}`);if(o.getAll(t).length!==1)throw Error(`Duplicate database export option: ${t}`)}}let s=o.get(`orderBy`);if(n&&s===``)throw Error(`Database export orderBy must not be empty`);let c=s||null,u=o.get(`dir`);if(n&&u!==null&&u!==`asc`&&u!==`desc`)throw Error(`Database export dir must be "asc" or "desc"`);let d=u===`desc`?`desc`:`asc`,p=o.get(`fcol`),m=o.get(`fop`),h=o.get(`fval`);if(n&&(p!==null||m!==null||h!==null)&&(!p||!h||m!==`contains`&&m!==`eq`&&m!==`ne`))throw Error(`Database export filter requires valid fcol, fop and fval values`);let g=p&&h?{column:p,op:m===`eq`?`eq`:m===`ne`?`ne`:`contains`,value:h}:null,_=g?i.indexOf(g.column):-1;if(g&&_<0&&n)throw Error(`No such column: ${g.column}`);let v=g&&_>=0?a.filter(e=>{let t=e[_];if(t==null)return!1;let n=String(t);return g.op===`eq`?n===g.value:g.op===`ne`?n!==g.value:f(n).includes(f(g.value))}):a,y=c?i.indexOf(c):-1;if(c&&y<0&&n)throw Error(`No such column: ${c}`);return{table:e,columns:i,rows:y>=0?[...v].sort((e,t)=>{let n=e[y],r=t[y],i=n==null?r==null?0:-1:r==null?1:n<r?-1:+(n>r);return d===`desc`?-i:i}):v,orderBy:y>=0?c:null,dir:d,filter:_>=0?g:null}}function m(e,t){let n=p(e,t),r=new URLSearchParams(t),i=(e,t)=>{let n=Number(e);return e!==null&&Number.isFinite(n)&&n>=0?n:t},a=i(r.get(`limit`),50),o=i(r.get(`offset`),0),s=n.rows.slice(o,o+(a>0?a:n.rows.length));return{ok:!0,table:e,columns:n.columns,rows:s,rowids:s.map((e,t)=>o+t+1),truncatedCells:s.map(e=>e.map(()=>!1)),total:n.rows.length,limit:a,offset:o,orderBy:n.orderBy,dir:n.dir,filter:n.filter}}var h=2e5,g=16*1024*1024,_=2e3,v=2e3;function y(e){let t,n=!1;if(e==null)t=``;else if(typeof e==`string`)t=new TextEncoder().encode(e).byteLength>_?`${[...e].slice(0,v).join(``)}…`:e,n=!0;else if(typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`)t=String(e);else if(e instanceof Uint8Array)t=`<blob ${e.byteLength} B>`,n=!0;else throw Error(`Database export produced an unsupported SQLite value`);let r=n&&/^[=+\-@\t\r]/.test(t)?`'${t}`:t;return/[",\r\n]/.test(r)?`"${r.replaceAll(`"`,`""`)}"`:r}function ee(e,t){try{let n=p(e,t,!0),r=new TextEncoder,i=[],a=0,o=0,s=null,c=e=>{let t=r.encode(e);return a+t.byteLength>g?!1:(i.push(t),a+=t.byteLength,!0)};if(!c(n.columns.map(y).join(`,`)))throw Error(`Database export header exceeds the ${g}-byte export limit`);for(let e of n.rows){if(o>=h){s=`rows`;break}if(!c(`\r\n${e.map(y).join(`,`)}`)){s=`bytes`;break}o++}let l=new Uint8Array(a),u=0;for(let e of i)l.set(e,u),u+=e.byteLength;return new Response(l,{status:200,headers:{"Content-Type":`text/csv; charset=utf-8`,"Content-Length":String(a),"Cache-Control":`no-store`,"X-Content-Type-Options":`nosniff`,"X-Bunqueue-Db-Export-Version":`1`,"X-Bunqueue-Db-Export-Table":encodeURIComponent(n.table),"X-Bunqueue-Db-Export-Rows":String(o),"X-Bunqueue-Db-Export-Bytes":String(a),"X-Bunqueue-Db-Export-Cap":s??`none`,"Access-Control-Expose-Headers":`Content-Length, X-Bunqueue-Db-Export-Version, X-Bunqueue-Db-Export-Table, X-Bunqueue-Db-Export-Rows, X-Bunqueue-Db-Export-Bytes, X-Bunqueue-Db-Export-Cap`}})}catch(e){return new Response(JSON.stringify({ok:!1,error:e instanceof Error?e.message:String(e)}),{status:400,headers:{"Content-Type":`application/json`}})}}var b={"flow-order-9a3f":{id:`flow-order-9a3f`,queue:`orders`,data:{name:`process-order`,orderId:`demo-9a3f`,__childrenIds:[`flow-charge-1`,`flow-ship-2`,`flow-notify-3`]},state:`waiting-children`,priority:1,parentId:null,childrenIds:[`flow-charge-1`,`flow-ship-2`,`flow-notify-3`],dependsOn:[`flow-charge-1`,`flow-ship-2`,`flow-notify-3`]},"flow-charge-1":{id:`flow-charge-1`,queue:`payments`,data:{name:`charge-payment`,__parentId:`flow-order-9a3f`,__parentQueue:`orders`},state:`completed`,priority:2,parentId:`flow-order-9a3f`,childrenIds:[],dependsOn:[]},"flow-ship-2":{id:`flow-ship-2`,queue:`shipping`,data:{name:`ship-order`,__parentId:`flow-order-9a3f`,__parentQueue:`orders`,__childrenIds:[`flow-label-4`]},state:`waiting-children`,priority:1,parentId:`flow-order-9a3f`,childrenIds:[`flow-label-4`],dependsOn:[`flow-label-4`]},"flow-label-4":{id:`flow-label-4`,queue:`shipping`,data:{name:`create-label`,__parentId:`flow-ship-2`,__parentQueue:`shipping`},state:`waiting`,priority:0,parentId:`flow-ship-2`,childrenIds:[],dependsOn:[]},"flow-notify-3":{id:`flow-notify-3`,queue:`emails`,data:{name:`notify-customer`,__parentId:`flow-order-9a3f`,__parentQueue:`orders`},state:`delayed`,priority:0,parentId:`flow-order-9a3f`,childrenIds:[],dependsOn:[`flow-charge-1`]}},x={id:`flow-order-9a3f`,name:`process-order`,queueName:`orders`,state:`waiting-children`,children:[{id:`flow-charge-1`,name:`charge-payment`,queueName:`payments`,state:`completed`,children:[]},{id:`flow-ship-2`,name:`ship-order`,queueName:`shipping`,state:`waiting-children`,children:[{id:`flow-label-4`,name:`create-label`,queueName:`shipping`,state:`waiting`,children:[]}]},{id:`flow-notify-3`,name:`notify-customer`,queueName:`emails`,state:`delayed`,children:[]}]};function S(e,t,n=``){return e[1]===`results`?{ok:!0,result:{operation:`getParentResults`,entries:[[`flow-demo-child`,{rows:42}],[`flow-demo-zero`,0]]}}:e[1]===`tree`?{ok:!0,result:{flow:C(n)}}:e[1]===`create`?{ok:!0,result:{operation:`add`,root:{id:`flow-demo-created`,name:`aggregate`,queueName:`reports`,state:`waiting-children`,children:[]}}}:t===`GET`?{ok:!0,result:{values:{},dependencies:{processed:{},unprocessed:[`flow-demo-child`]},counts:{processed:0,unprocessed:1}}}:{ok:!0,result:{applied:!0,removed:!0}}}function C(e){let t=new URLSearchParams(e),n=w(t.get(`depth`),500),r=w(t.get(`maxChildren`),500),i=(e,t)=>({...e,children:t>=n?[]:e.children.slice(0,r).map(e=>i(e,t+1))});return i(x,0)}function w(e,t){return e===null||!/^\d+$/.test(e)?t:Math.min(Number(e),500)}var T={health:{ok:!0,status:`healthy`,uptime:133,version:`2.9.20`,queues:{waiting:13,active:2,delayed:6,completed:4,dlq:2},connections:{tcp:0,ws:0,sse:0},memory:{heapUsed:3,heapTotal:4,rss:68}},ping:{ok:!0,data:{pong:!0,time:1783035131368}},stats:{ok:!0,stats:{waiting:13,prioritized:7,delayed:6,active:2,dlq:2,completed:4,"waiting-children":0,totalPushed:34,totalPulled:8,totalCompleted:4,totalFailed:0,uptime:133882,cronJobs:2,cronPending:2,pushPerSec:.25,pullPerSec:.06,completePerSec:.03,failPerSec:0},memory:{heapUsed:3,heapTotal:4,rss:69,external:1,arrayBuffers:0},collections:{jobIndex:34,completedJobs:4,jobResults:0,jobLogs:0,customIdMap:0,jobLocks:0,clientJobs:0,clientJobsTotal:0,pendingDepChecks:0,stalledCandidates:0,processingTotal:2,queuedTotal:26,waitingDepsTotal:0,temporalIndexTotal:34,delayedHeapTotal:6}},storage:{ok:!0,data:{diskFull:!1,error:null,since:null}},dashboard:{ok:!0,stats:{waiting:13,active:2,delayed:6,completed:4,dlq:2,totalPushed:34,totalPulled:8,totalCompleted:4,totalFailed:0,uptime:133882},throughput:{pushPerSec:.25,pullPerSec:.06,completePerSec:.03,failPerSec:0},latency:{averages:{pushMs:.07645341176470588,pullMs:.3890205,ackMs:1.03645825},percentiles:{push:{p50:.1,p95:.5,p99:1},pull:{p50:.1,p95:1,p99:1},ack:{p50:2.5,p95:2.5,p99:2.5}}},memory:{heapUsed:3,heapTotal:4,rss:70},collections:{jobIndex:34,completedJobs:4,jobResults:0,jobLogs:0,customIdMap:0,jobLocks:0,clientJobs:0,clientJobsTotal:0,pendingDepChecks:0,stalledCandidates:0,processingTotal:2,queuedTotal:26,waitingDepsTotal:0,temporalIndexTotal:34,delayedHeapTotal:6},workers:{total:0,active:0,list:[],truncated:!1},crons:{total:2,list:[{name:`nightly-report`,jobName:`generate-report`,queue:`reports`,schedule:`0 2 * * *`,repeatEvery:null,nextRun:17830368e5,executions:0},{name:`heartbeat`,jobName:`send-heartbeat`,queue:`notifications`,schedule:null,repeatEvery:6e4,nextRun:1783035191362,executions:0}],truncated:!1},storage:{diskFull:!1,error:null,since:null},timestamp:1783035131369},dashboardQueues:{ok:!0,queues:[{name:`emails`,waiting:2,delayed:0,active:0,dlq:2,paused:!1},{name:`image-processing`,waiting:7,delayed:0,active:2,dlq:0,paused:!1},{name:`reports`,waiting:0,delayed:6,active:0,dlq:0,paused:!1},{name:`notifications`,waiting:4,delayed:0,active:0,dlq:0,paused:!1}],total:4,limit:100,offset:0,timestamp:1783035131370},queuesSummary:[{name:`emails`,paused:!1,counts:{waiting:2,prioritized:7,active:0,completed:4,failed:2,delayed:0}},{name:`image-processing`,paused:!1,counts:{waiting:7,prioritized:0,active:2,completed:0,failed:0,delayed:0}},{name:`reports`,paused:!1,counts:{waiting:0,prioritized:0,active:0,completed:0,failed:0,delayed:6}},{name:`notifications`,paused:!1,counts:{waiting:4,prioritized:0,active:0,completed:0,failed:0,delayed:0}}],crons:{ok:!0,crons:[{name:`nightly-report`,jobName:`generate-report`,queue:`reports`,schedule:`0 2 * * *`,repeatEvery:null,nextRun:17830368e5,executions:0,maxLimit:null,timezone:null},{name:`heartbeat`,jobName:`send-heartbeat`,queue:`notifications`,schedule:null,repeatEvery:6e4,nextRun:1783035191362,executions:0,maxLimit:null,timezone:null}]},webhooks:{ok:!0,data:{webhooks:[{id:`019f252c-f5e3-7000-883c-28cc5dc157a0`,url:`https://hooks.example.com/bunqueue`,events:[`job.completed`,`job.failed`],queue:null,createdAt:1783035131363,lastTriggered:178303512e4,successCount:42,failureCount:3,enabled:!0}],stats:{total:1,enabled:1}}},workers:{ok:!0,data:{workers:[],stats:{total:0,active:0,totalProcessed:0,totalFailed:0,activeJobs:0}}},dlqStats:{ok:!0,total:2,byQueue:{emails:2}},counts_emails:{ok:!0,counts:{waiting:2,prioritized:7,delayed:0,active:0,completed:4,failed:2,"waiting-children":0,paused:0}},dlq_emails:{ok:!0,entries:[{job:{id:`019f252b-8716-7000-bbec-d8c65e09f340`,queue:`emails`,data:{to:`user8@example.com`,subject:`Welcome 8`},createdAt:1783035037462,runAt:1783035037462,startedAt:1783035131364,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:3,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037462},{state:`active`,timestamp:1783035131364}]},enteredAt:1783035131367,reason:`timeout`,error:`Job exceeded its 30000 ms timeout while connecting to smtp.example.com`,attempts:[{attempt:0,startedAt:1783035131364,failedAt:1783035131367,reason:`timeout`,error:`Job exceeded its 30000 ms timeout while connecting to smtp.example.com`,duration:3}],retryCount:0,lastRetryAt:null,nextRetryAt:null,expiresAt:1783639931367},{job:{id:`019f252b-8750-7000-afa1-767720d8f433`,queue:`emails`,data:{to:`user13@example.com`,subject:`Welcome 13`},createdAt:1783035037520,runAt:1783035037520,startedAt:1783035131364,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:3,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037520},{state:`active`,timestamp:1783035131364}]},enteredAt:1783035131368,reason:`max_attempts`,error:`SMTP 550: mailbox unavailable (user13@example.com) — 3 of 3 attempts failed`,attempts:[{attempt:0,startedAt:1783035131364,failedAt:1783035131368,reason:`max_attempts`,error:`SMTP 550: mailbox unavailable (user13@example.com) — 3 of 3 attempts failed`,duration:4}],retryCount:0,lastRetryAt:null,nextRetryAt:null,expiresAt:1783639931368}],total:2},detail_emails:{ok:!0,name:`emails`,counts:{waiting:2,prioritized:7,delayed:0,active:0,completed:4,failed:2,"waiting-children":0,totalCompleted:4,totalFailed:0,paused:0},paused:!1,priorityCounts:{0:2,1:3,2:4},dlqPreview:[{id:`019f252b-8716-7000-bbec-d8c65e09f340`,data:{to:`user8@example.com`,subject:`Welcome 8`},attempts:0,createdAt:1783035037462},{id:`019f252b-8750-7000-afa1-767720d8f433`,data:{to:`user13@example.com`,subject:`Welcome 13`},attempts:0,createdAt:1783035037520}],timestamp:1783035131373,jobs:{waiting:[{id:`019f252b-86f2-7000-a45d-6e5e3dd4abf0`,priority:0,createdAt:1783035037426,runAt:1783035037426,attempts:0,progress:0},{id:`019f252b-872e-7000-91af-f820da905a23`,priority:0,createdAt:1783035037486,runAt:1783035037486,attempts:0,progress:0}],active:[],delayed:[],paused:[]}},"counts_image-processing":{ok:!0,counts:{waiting:7,prioritized:0,delayed:0,active:2,completed:0,failed:0,"waiting-children":0,paused:0}},"dlq_image-processing":{ok:!0,entries:[],total:0},"detail_image-processing":{ok:!0,name:`image-processing`,counts:{waiting:7,prioritized:0,delayed:0,active:2,completed:0,failed:0,"waiting-children":0,totalCompleted:0,totalFailed:0,paused:0},paused:!1,priorityCounts:{0:7},dlqPreview:[],timestamp:1783035131374,jobs:{waiting:[{id:`019f252b-8780-7000-9066-7f3a95bbb309`,priority:0,createdAt:1783035037568,runAt:1783035037568,attempts:0,progress:0},{id:`019f252b-878d-7000-9396-88a9de934b0c`,priority:0,createdAt:1783035037581,runAt:1783035037581,attempts:0,progress:0},{id:`019f252b-8799-7000-8433-2f4d874dfa3f`,priority:0,createdAt:1783035037593,runAt:1783035037593,attempts:0,progress:0},{id:`019f252b-87a5-7000-b3d2-48c6816be571`,priority:0,createdAt:1783035037605,runAt:1783035037605,attempts:0,progress:0}],active:[{id:`019f252b-8769-7000-bc44-cfc168232f53`,priority:0,createdAt:1783035037545,runAt:1783035037545,attempts:0,progress:0},{id:`019f252b-8775-7000-884a-63456175f48c`,priority:0,createdAt:1783035037557,runAt:1783035037557,attempts:0,progress:0}],delayed:[],paused:[]}},counts_reports:{ok:!0,counts:{waiting:0,prioritized:0,delayed:6,active:0,completed:0,failed:0,"waiting-children":0,paused:0}},dlq_reports:{ok:!0,entries:[],total:0},detail_reports:{ok:!0,name:`reports`,counts:{waiting:0,prioritized:0,delayed:6,active:0,completed:0,failed:0,"waiting-children":0,totalCompleted:0,totalFailed:0,paused:0},paused:!1,priorityCounts:{0:6},dlqPreview:[],timestamp:1783035131374,jobs:{waiting:[],active:[],delayed:[{id:`019f252b-87d8-7000-8f0c-e8ca5fec7d18`,priority:0,createdAt:1783035037656,runAt:1783035637656,attempts:0,progress:0},{id:`019f252b-87e3-7000-b0dc-18aac125e1ce`,priority:0,createdAt:1783035037667,runAt:1783035637667,attempts:0,progress:0},{id:`019f252b-87ee-7000-bb98-e9997d218441`,priority:0,createdAt:1783035037678,runAt:1783035637678,attempts:0,progress:0},{id:`019f252b-87fa-7000-9eb8-5b7a6d7aa7b4`,priority:0,createdAt:1783035037690,runAt:1783035637690,attempts:0,progress:0}],paused:[]}},counts_notifications:{ok:!0,counts:{waiting:4,prioritized:0,delayed:0,active:0,completed:0,failed:0,"waiting-children":0,paused:0}},dlq_notifications:{ok:!0,entries:[],total:0},detail_notifications:{ok:!0,name:`notifications`,counts:{waiting:4,prioritized:0,delayed:0,active:0,completed:0,failed:0,"waiting-children":0,totalCompleted:0,totalFailed:0,paused:0},paused:!1,priorityCounts:{0:4},dlqPreview:[],timestamp:1783035131375,jobs:{waiting:[{id:`019f252b-8823-7000-9455-de9cff6a56e2`,priority:0,createdAt:1783035037731,runAt:1783035037731,attempts:0,progress:0},{id:`019f252b-882e-7000-ae38-9c7fe01639d5`,priority:0,createdAt:1783035037742,runAt:1783035037742,attempts:0,progress:0},{id:`019f252b-883b-7000-8789-839b741a1011`,priority:0,createdAt:1783035037755,runAt:1783035037755,attempts:0,progress:0},{id:`019f252b-884d-7000-b703-96a357151ef4`,priority:0,createdAt:1783035037773,runAt:1783035037773,attempts:0,progress:0}],active:[],delayed:[],paused:[]}},emailsWaiting:{ok:!0,jobs:[{id:`019f252b-86c0-7000-a54e-3816c968ebf0`,queue:`emails`,data:{to:`user1@example.com`,subject:`Welcome 1`},createdAt:1783035037376,runAt:1783035037376,startedAt:null,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035037376,stallCount:0,priority:1,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037376}],_state:`prioritized`,state:`prioritized`},{id:`019f252b-86ce-7000-adfc-613a9495a6ef`,queue:`emails`,data:{to:`user2@example.com`,subject:`Welcome 2`},createdAt:1783035037390,runAt:1783035037390,startedAt:null,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035037390,stallCount:0,priority:2,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037390}],_state:`prioritized`,state:`prioritized`},{id:`019f252b-86fe-7000-894d-fe3ad935cc36`,queue:`emails`,data:{to:`user6@example.com`,subject:`Welcome 6`},createdAt:1783035037438,runAt:1783035037438,startedAt:null,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035037438,stallCount:0,priority:1,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037438}],_state:`prioritized`,state:`prioritized`},{id:`019f252b-870a-7000-91d2-ca4070505abe`,queue:`emails`,data:{to:`user7@example.com`,subject:`Welcome 7`},createdAt:1783035037450,runAt:1783035037450,startedAt:null,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035037450,stallCount:0,priority:2,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037450}],_state:`prioritized`,state:`prioritized`}]},emailsCompleted:{ok:!0,jobs:[{id:`019f252b-86da-7000-a9e3-6b1b74944d70`,queue:`emails`,data:{to:`user3@example.com`,subject:`Welcome 3`},createdAt:1783035037402,runAt:1783035037402,startedAt:1783035131364,completedAt:1783035131367,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:3,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037402},{state:`active`,timestamp:1783035131364},{state:`completed`,timestamp:1783035131367}],_state:`completed`,state:`completed`},{id:`019f252b-86e6-7000-a51e-e65a7cd2ce85`,queue:`emails`,data:{to:`user4@example.com`,subject:`Welcome 4`},createdAt:1783035037414,runAt:1783035037414,startedAt:1783035131364,completedAt:1783035131366,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:4,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037414},{state:`active`,timestamp:1783035131364},{state:`completed`,timestamp:1783035131366}],_state:`completed`,state:`completed`},{id:`019f252b-8722-7000-9270-14be63598def`,queue:`emails`,data:{to:`user9@example.com`,subject:`Welcome 9`},createdAt:1783035037474,runAt:1783035037474,startedAt:1783035131364,completedAt:1783035131366,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:4,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037474},{state:`active`,timestamp:1783035131364},{state:`completed`,timestamp:1783035131366}],_state:`completed`,state:`completed`},{id:`019f252b-875b-7000-8f4b-3d571d84663d`,queue:`emails`,data:{to:`user14@example.com`,subject:`Welcome 14`},createdAt:1783035037531,runAt:1783035037531,startedAt:1783035131364,completedAt:1783035131367,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:4,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037531},{state:`active`,timestamp:1783035131364},{state:`completed`,timestamp:1783035131367}],_state:`completed`,state:`completed`}]},oneJob:{ok:!0,job:{id:`019f252b-8716-7000-bbec-d8c65e09f340`,queue:`emails`,data:{to:`user8@example.com`,subject:`Welcome 8`},createdAt:1783035037462,runAt:1783035037462,startedAt:1783035131364,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:3,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037462},{state:`active`,timestamp:1783035131364}],state:`failed`}}},E=e=>T[e]?.jobs??[],D=T.oneJob.job,O=[...E(`emailsWaiting`),...E(`emailsCompleted`),...D?[D]:[]],te=[`emails`,`image-processing`,`reports`,`notifications`];function k(e,t,n){let r={...e,name:typeof e.name==`string`?e.name:`${t}-job`,...e.state===`completed`&&!Object.hasOwn(e,`returnvalue`)?{returnvalue:{ok:!0}}:{},...e.state===`failed`&&!Object.hasOwn(e,`failedReason`)?{failedReason:`Demo job exhausted its retries`}:{}};return t===`emails`?r:{...r,id:`${t}-${String(e.id).slice(-12)}-${n}`,queue:t}}function A(e){if(b[e])return b[e];let t=O.find(t=>t.id===e);if(t)return k(t,`emails`,0);for(let t of te){let n=O.map((e,n)=>k(e,t,n)).find(t=>t.id===e);if(n)return n}return{...D??{queue:`emails`,state:`failed`},id:e,customId:e.startsWith(`demo-custom:`)?e.slice(12):null}}var j=[{id:`wf-order-2026-0804`,workflowName:`order-fulfillment`,state:`running`,currentNodeIndex:3,createdAt:178583892e4,updatedAt:178583904e4,definitionHash:`sha256:8a03c8e91db4d8f5`,input:{orderId:`ord_9a3f`,customerId:`cus_417`,total:129.9},steps:{validate:{status:`completed`,attempts:1,startedAt:1785838920100,completedAt:1785838920210,result:{valid:!0}},charge:{status:`completed`,attempts:1,startedAt:1785838920300,completedAt:1785838921120,compensatable:!0,idempotencyKey:`charge:ord_9a3f`,result:{paymentId:`pay_802`}},reserveInventory:{status:`completed`,attempts:2,startedAt:1785838921200,completedAt:1785838930600,compensatable:!0,result:{reservationId:`res_551`}},ship:{status:`running`,attempts:1,startedAt:178583904e4,childExecutionId:`wf-shipping-0804`}},resolvedSteps:[`validate`,`charge`,`reserveInventory`,`ship`],signals:{},decisions:{"branch:payment":`card`}},{id:`wf-refund-2026-0803`,workflowName:`refund-order`,state:`compensation-stuck`,currentNodeIndex:4,createdAt:17857512e5,updatedAt:178575132e4,rollbackStatus:`stuck`,failureReason:`Refund provider unavailable after 3 attempts`,definitionHash:`sha256:cc89ab41c1b2f011`,input:{orderId:`ord_772`,reason:`customer_request`},steps:{loadOrder:{status:`completed`,attempts:1,result:{paymentId:`pay_331`}},revokeShipment:{status:`completed`,attempts:1,compensatable:!0,compensation:{status:`compensated`,at:1785751300100}},refundPayment:{status:`failed`,attempts:3,compensatable:!0,error:`Provider timeout`,compensation:{status:`compensation-failed`,at:178575132e4,error:`Provider unavailable`}}},resolvedSteps:[`loadOrder`,`revokeShipment`,`refundPayment`],signals:{approved:{actor:`ops@example.com`}},decisions:{"branch:refund-method":`original-payment`}},{id:`wf-signup-2026-0802`,workflowName:`customer-onboarding`,state:`waiting`,currentNodeIndex:2,createdAt:17856648e5,updatedAt:178566492e4,input:{customerId:`cus_881`,plan:`pro`},steps:{createAccount:{status:`completed`,attempts:1,result:{accountId:`acc_881`}},sendVerification:{status:`completed`,attempts:1,result:{messageId:`msg_194`}}},resolvedSteps:[`createAccount`,`sendVerification`],signals:{}}],M=[{id:`wf-month-close-2026-07`,workflowName:`month-end-close`,state:`completed`,currentNodeIndex:4,createdAt:17855784e5,updatedAt:1785578465e3,archivedAt:17856648e5,rollbackStatus:`not-applicable`,definitionHash:`sha256:78b6fd851d8b32a1`,input:{period:`2026-07`},steps:{lockPeriod:{status:`completed`,attempts:1,result:{locked:!0}},aggregate:{status:`completed`,attempts:1,result:{entries:1842}},publish:{status:`completed`,attempts:1,result:{reportId:`rep_2026_07`}}},resolvedSteps:[`lockPeriod`,`aggregate`,`publish`],signals:{},decisions:{}},{id:`wf-import-legacy-441`,workflowName:`legacy-import`,state:`failed`,currentNodeIndex:1,createdAt:1785492e6,updatedAt:1785492009e3,archivedAt:17856648e5,rollbackStatus:`not-applicable`,failureReason:`Input schema rejected row 441`,input:{batch:`legacy-2026-07`},steps:{validate:{status:`failed`,attempts:1,error:`Invalid customer reference at row 441`}},resolvedSteps:[`validate`],signals:{},decisions:{}}],ne={configured:!0,ready:!0,moduleName:`demo-workflows`,workflowNames:[`customer-onboarding`,`order-fulfillment`,`refund-order`]},N=e=>({ok:!0,result:e});function re(e,t){return e[1]===`runtime`&&(e.length===2||e[2]===`reload`)?N(ne):t===`POST`?e[1]===`start`?N({run:{id:`wf-demo-started`,workflowName:`order-fulfillment`}}):e[1]===`recover`?N({recovered:{running:1,waiting:1,compensating:0,total:2}}):e[1]===`archive`||e[1]===`cleanup`?N({affected:1}):e[2]===`signal`||e[2]===`resume-compensation`||e[2]===`abandon-compensation`?N({applied:!0}):null:null}function ie(e,t,n){let r=re(e,n);if(r)return r;if(e[1]===`stats`){let e={running:0,waiting:0,completed:0,failed:0,compensating:0,"compensation-stuck":0};for(let t of j)e[t.state]++;return{ok:!0,available:!0,activeTotal:j.length,archiveTotal:M.length,states:e,workflowNames:[...new Set([...j,...M].map(e=>String(e.workflowName)))].sort()}}let i=new URLSearchParams(t),a=i.get(`kind`)===`archive`?M:j;if(e[1]){let t=a.find(t=>t.id===decodeURIComponent(e[1]));return t?{ok:!0,execution:t}:{ok:!1,error:`Workflow execution not found`}}let o=i.get(`workflowName`),s=i.get(`state`),c=Number(i.get(`offset`)??0),l=Number(i.get(`limit`)??50),u=a.filter(e=>(!o||e.workflowName===o)&&(!s||e.state===s||s===`compensation`&&(e.state===`compensating`||e.state===`compensation-stuck`)));return{ok:!0,available:!0,executions:u.slice(c,c+l).map(({input:e,steps:t,resolvedSteps:n,signals:r,decisions:i,...a})=>a),total:u.length,limit:l,offset:c}}var ae=new Set([`events`,`health`,`healthz`,`live`,`ready`,`ping`,`stats`,`metrics`,`storage`,`dashboard`,`queues`,`queue-operations`,`jobs`,`crons`,`webhooks`,`workers`,`dlq`,`control`,`db`,`workflows`,`flows`,`backup`,`gc`,`heapstats`]);function oe(e,t){if(e[0]!==`queues`||!e[1])return null;let n=decodeURIComponent(e[1]);if(e[2]===`counts`)return T[`counts_${n}`]??{ok:!0,counts:{}};if(e[2]===`dlq`&&e[3]===`stats`)return{ok:!0,stats:n===`emails`?{total:2,byReason:{timeout:1,max_attempts:1}}:{total:0,byReason:{}}};if(e[2]===`dlq`)return T[`dlq_${n}`]??{ok:!0,entries:[],total:0};if(e[2]===`stall-config`)return{ok:!0,config:{enabled:!0,stallInterval:3e4,maxStalls:3,gracePeriod:5e3}};if(e[2]===`dlq-config`)return{ok:!0,config:{autoRetry:!1,autoRetryInterval:6e4,maxAutoRetries:3,maxAge:null,maxEntries:1e3}};if(e[2]!==`jobs`||e[3]!==`list`)return null;let r=new URLSearchParams(t),i=(r.get(`states`)??r.get(`state`)??``).split(`,`).map(e=>e.trim()).filter(Boolean),a=e=>i.length===0||i.includes(String(e))||i.includes(`waiting`)&&e===`prioritized`;return{ok:!0,jobs:O.filter(e=>a(e.state)).map((e,t)=>k(e,n,t))}}function se(e){let t=T.dashboardQueues,n=Array.isArray(t.queues)?t.queues:[],r=new URLSearchParams(e),i=Number(r.get(`limit`)??t.limit),a=Number(r.get(`offset`)??t.offset),o=Number.isSafeInteger(i)&&i>=0?i:Number(t.limit),s=Number.isSafeInteger(a)&&a>=0?a:Number(t.offset);return{...t,queues:n.slice(s,s+o),total:n.length,limit:o,offset:s}}function ce(e){if(e[0]!==`jobs`||!e[1])return null;let t=decodeURIComponent(e[1]);if(e[1]===`custom`&&e[2])return{ok:!0,job:A(`demo-custom:${decodeURIComponent(e[2])}`)};if(e[2]===`result`)return{ok:!0,id:t,result:{sent:!0,provider:`demo`}};if(e[2]===`logs`){let e=[`[info] picked up by worker-emails-1`,`[info] connecting to smtp.example.com:587`,`[error] SMTP 550: mailbox unavailable — will retry with backoff`];return{ok:!0,data:{logs:e,count:e.length}}}return e[2]?null:{ok:!0,job:A(t)}}function P(e,t){if(e[0]!==`db`)return null;if(e[1]===`info`)return s;if(e[1]===`tables`&&!e[2])return u;if(e[1]!==`tables`||!e[2])return null;let n=decodeURIComponent(e[2]);return e[3]===`schema`?d(n):e[3]===`cell`?{ok:!0,value:`demo cell value`}:m(n,t)}function F(e,t){return e===`/gc`?{ok:!0,before:{heapUsed:118,heapTotal:176,rss:214},after:{heapUsed:94,heapTotal:150,rss:181}}:e.endsWith(`/db/query`)?{ok:!0,columns:[`note`],rows:[[`This is the demo. Queries run against a static in-memory sample.`]],rowCount:1,truncated:!1,ms:.4}:e.endsWith(`/jobs`)||e.endsWith(`/jobs/bulk`)?{ok:!0,id:`demo-${t.join(`-`)}`,ids:[`demo-1`]}:{ok:!0}}function I(e,t,s){let c=e.replace(/\/+$/,``)||`/`,l=c.split(`/`).filter(Boolean);if(l[0]===`control`)return l[1]===`logs`?o():l[1]===`config`?{...r,configRevision:1}:i();if(l[0]===`workflows`)return ie(l,s,t);if(l[0]===`backup`)return n(l,t);if(l[0]===`flows`)return S(l,t,s);if(t!==`GET`)return F(c,l);if(c===`/workers`)return a();if(c===`/ready`)return{ok:!0,ready:!0};if(c===`/metrics`){let e=T.stats.stats;return{ok:!0,metrics:{totalPushed:e.totalPushed,totalPulled:e.totalPulled,totalCompleted:e.totalCompleted,totalFailed:e.totalFailed}}}if(c===`/heapstats`)return{ok:!0,memory:{heapUsed:94,heapTotal:150,rss:181},heap:{objectCount:486204,protectedCount:1284,globalCount:312},collections:{},topObjectTypes:[{type:`Structure`,count:42118},{type:`Object`,count:31064},{type:`Function`,count:18902},{type:`string`,count:12447},{type:`Array`,count:8021}]};if(c===`/dashboard/queues`)return se(s);let u={"/health":`health`,"/ping":`ping`,"/stats":`stats`,"/storage":`storage`,"/dashboard":`dashboard`,"/queues/summary":`queuesSummary`,"/crons":`crons`,"/webhooks":`webhooks`,"/dlq/stats":`dlqStats`};return u[c]?T[u[c]]:l[0]===`dashboard`&&l[1]===`queues`&&l[2]?T[`detail_${l[2]}`]??T.detail_emails:oe(l,s)??ce(l)??P(l,s)??{ok:!0}}var L=(e,t=200)=>new Response(JSON.stringify(e),{status:t,headers:{"Content-Type":`application/json`}});function R(e){let t=new TextEncoder,n=[`emails`,`image-processing`,`reports`,`notifications`],r=[`job:active`,`job:completed`,`job:completed`,`job:waiting`,`job:failed`,`job:active`],i=new ReadableStream({start(i){let a=0,o=!1,s,c=()=>{if(!o){o=!0,clearInterval(s);try{i.close()}catch{}}};i.enqueue(t.encode(`data: {"connected":true}
2
+
3
+ `)),s=setInterval(()=>{if(o)return;let e=r[a%r.length],s=n[a%n.length],l=JSON.stringify({queue:s,jobId:`demo-${a}`,name:s,timestamp:Date.now()});try{i.enqueue(t.encode(`event: ${e}\ndata: ${l}\n\n`))}catch{c()}a+=1},1400),e?.aborted?c():e?.addEventListener(`abort`,c,{once:!0})}});return new Response(i,{status:200,headers:{"Content-Type":`text/event-stream`}})}var z=8*1024,B=1783035039e3;function V(e,t,n){let r=n===-1?e.length:Math.min(e.length,n+1);return{meta:{count:e.reduce((e,t)=>e+t,0),prevTS:e.length?B:0,prevCount:e[0]??0},data:t>=r?[]:e.slice(t,r),count:e.length}}function H(e,t){let n=new URL(e.url).searchParams;for(let e of n.keys()){if(!t.includes(e))throw Error(`Unknown Queue operation option: ${e}`);if(n.getAll(e).length!==1)throw Error(`Duplicate Queue operation option: ${e}`)}if(!n.get(`target`))throw Error(`Queue operation target is required`);return n}async function U(e,t){let n=await e.text();if(new TextEncoder().encode(n).byteLength>z)throw Error(`Queue operation request body exceeds 8 KiB`);let r;try{r=JSON.parse(n)}catch{throw Error(`Queue operation request must be valid JSON`)}if(!ue(r))throw Error(`Queue operation request must be an object`);let i=Object.keys(r).find(e=>!t.includes(e));if(i)throw Error(`Unknown Queue operation body field: ${i}`);return r}function W(e){if(!e||e.length>256||e===`.`||e===`..`||!/^[\w.:-]+$/.test(e))throw Error(`Queue name must contain 1-256 letters, numbers, underscores, dashes, dots or colons`);return e}function G(e){if(typeof e!=`string`||!e||e.length>1024)throw Error(`Deduplication ID must contain 1-1024 characters`);return e}function K(e){if(typeof e!=`string`||!e||e.length>256||e.includes(`\0`))throw Error(`groupId must be a non-empty string of at most 256 characters without NUL`);return e}function q(e,t){let n=e.groups.get(t);if(n)return n;let r={jobs:0,active:0,consumedJobs:0,cooldownMs:0,rateLimit:null,concurrency:null,paused:!1,entries:[]};return e.groups.set(t,r),r}function J(e,t){return X(e,t,1,2**53-1)}function le(e){if(e!==`completed`&&e!==`failed`)throw Error(`Metrics type must be completed or failed`);return e}function Y(e,t,n,r){if(e!==null){if(!/^-?\d+$/.test(e))throw Error(`${t} must be an integer`);return X(Number(e),t,n,r)}}function X(e,t,n,r){if(!Number.isSafeInteger(e)||e<n||e>r)throw Error(`${t} must be an integer from ${n} to ${r}`);return e}function ue(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function de(){return L({ok:!1,error:`Unknown Queue operation`},404)}var fe=e=>e instanceof Error?e.message:String(e),pe={emails:{rateLimit:null,concurrency:10,activeJobs:0,consumedJobs:0,cooldownMs:0,events:1284,completed:[2,1,0,1],failed:[1,0,1],deduplications:[[`welcome:user8@example.com`,`019f252b-86c0-7000-a54e-3816c968ebf0`]]},"image-processing":{rateLimit:{max:100,duration:6e4},concurrency:4,activeJobs:2,consumedJobs:100,cooldownMs:750,events:1428,completed:[7,9,4,6,3],failed:[0,1,0,0,1],deduplications:[[`asset:hero`,`019f252b-8769-7000-bc44-cfc168232f53`]]},reports:{rateLimit:null,concurrency:2,activeJobs:0,consumedJobs:0,cooldownMs:0,events:318,completed:[1,0,2],failed:[1],deduplications:[]},notifications:{rateLimit:null,concurrency:8,activeJobs:0,consumedJobs:0,cooldownMs:0,events:612,completed:[5,4,3],failed:[],deduplications:[]}},me={rateLimit:null,concurrency:null,activeJobs:0,consumedJobs:0,cooldownMs:0,events:0,completed:[],failed:[],deduplications:[]},Z=1e4,Q=1e6;function he(){let e=new Map,t=t=>{let n=e.get(t);if(n)return n;let r=pe[t]??me,i={...r,deduplications:new Map(r.deduplications),groups:new Map};return e.set(t,i),i};return async(e,n)=>{try{let r=await ge(e,n,t);return r?L(r):de()}catch(e){return L({ok:!1,error:fe(e)},400)}}}async function ge(e,t,n){let r=t.replace(/\/+$/,``).split(`/`).filter(Boolean);if(r[0]!==`queue-operations`||r.length<3)return null;let i=W(decodeURIComponent(r[1])),a=r.slice(2).join(`/`),o=n(i);if(e.method===`GET`&&a===`limits`){let t=Y(H(e,[`target`,`maxJobs`]).get(`maxJobs`),`maxJobs`,0,1e6),n=o.rateLimit===null?-2:t!==void 0&&o.consumedJobs<t?0:o.cooldownMs;return{ok:!0,limits:{rateLimit:o.rateLimit,concurrency:o.concurrency,rateLimitTtl:n,maxed:o.concurrency!==null&&o.activeJobs>=o.concurrency}}}if(e.method===`GET`&&a===`groups`){let t=H(e,[`target`,`groupId`,`maxJobs`,`maxCount`,`start`,`end`]),n=K(t.get(`groupId`)),r=Y(t.get(`maxJobs`),`maxJobs`,0,1e6);Y(t.get(`maxCount`),`maxCount`,1,1e6);let i=Y(t.get(`start`),`start`,0,1e6)??0,a=Y(t.get(`end`),`end`,0,1e6)??i+24;if(a<i||a-i>=100)throw Error(`Group jobs page must be an inclusive range of at most 100 jobs`);let s=q(o,n),c=s.rateLimit===null?-2:r!==void 0&&s.consumedJobs<r?0:s.cooldownMs,l={};for(let e of s.entries){let t=String(e.priority);l[t]=(l[t]??0)+1}return{ok:!0,group:{jobs:s.jobs,active:s.active,totalGrouped:[...o.groups.values()].reduce((e,t)=>e+t.jobs,0),paused:s.paused,entries:s.entries.slice(i,a+1),priorityCounts:l,rateLimit:s.rateLimit,rateLimitTtl:c,concurrency:s.concurrency}}}if(e.method===`GET`&&a===`deduplication`){let t=G(H(e,[`target`,`deduplicationId`]).get(`deduplicationId`));return{ok:!0,jobId:o.deduplications.get(t)??null}}if(e.method===`GET`&&a===`metrics`){let t=H(e,[`target`,`type`,`start`,`end`]),n=le(t.get(`type`)),r=Y(t.get(`start`),`start`,0,Z)??0,i=Y(t.get(`end`),`end`,-1,Z)??-1;if(i!==-1&&i<r)throw Error(`Metrics end must be -1 or at least start`);return{ok:!0,metrics:V(o[n],r,i)}}if(e.method===`POST`&&a===`deduplication/remove`){H(e,[`target`]);let t=G((await U(e,[`deduplicationId`])).deduplicationId);return{ok:!0,removed:+!!o.deduplications.delete(t)}}if(e.method===`POST`&&a.startsWith(`groups/`)){if(H(e,[`target`]),a===`groups/pause`||a===`groups/resume`){let t=q(o,K((await U(e,[`groupId`])).groupId)),n=a===`groups/pause`,r=t.paused!==n;return t.paused=n,{ok:!0,changed:r}}let t=a.endsWith(`/remove`),n=a.includes(`/rate-limit`),r=await U(e,t?[`groupId`]:n?[`groupId`,`max`,`duration`]:[`groupId`,`concurrency`]),i=q(o,K(r.groupId));if(t){let e=n?i.rateLimit!==null:i.concurrency!==null;return n?i.rateLimit=null:i.concurrency=null,{ok:!0,removed:+!!e}}return n?i.rateLimit={max:J(r.max,`max`),duration:J(r.duration,`duration`)}:i.concurrency=J(r.concurrency,`concurrency`),{ok:!0,applied:!0}}if(e.method===`POST`&&a===`events/trim`){H(e,[`target`]);let t=X((await U(e,[`maxLength`])).maxLength,`maxLength`,0,Q),n=Math.max(0,o.events-t);return o.events-=n,{ok:!0,removed:n}}return null}var $=!1;function _e(){if($||typeof window>`u`)return()=>void 0;$=!0;let e=window.fetch,t=e.bind(window),n=`./`.replace(/\/+$/,``),r=he(),i=async(e,i)=>{let a=e instanceof Request?e:null,o=typeof e==`string`?e:e instanceof URL?e.href:a?.url??``,s=(i?.method??a?.method??`GET`).toUpperCase(),c;try{c=new URL(o,window.location.origin)}catch{return t(e,i)}let l=c.pathname;n&&(l===n||l.startsWith(`${n}/`))&&(l=l.slice(n.length)||`/`),(l===`/api`||l.startsWith(`/api/`))&&(l=l.slice(4)||`/`);let u=l.split(`/`).filter(Boolean)[0];if(!u||!ae.has(u))return t(e,i);if(u===`queue-operations`)try{let t=e instanceof Request?new Request(e,i):new Request(c,i);return await r(t,l)}catch(e){return L({ok:!1,error:`Invalid Queue operation request: ${e instanceof Error?e.message:String(e)}`},400)}if(u===`events`)return R(i?.signal??a?.signal);if(u===`healthz`||u===`live`)return new Response(`OK`,{status:200});if(s===`GET`){let e=l.replace(/\/+$/,``).split(`/`).filter(Boolean);if(e.length===4&&e[0]===`db`&&e[1]===`tables`&&e[3]===`export`)return ee(decodeURIComponent(e[2]),c.search)}return L(I(l,s,c.search))};window.fetch=i;let a=!1;return()=>{a||(a=!0,window.fetch===i&&(window.fetch=e),$=!1)}}export{_e as installDemo};
@@ -0,0 +1 @@
1
+ var e={name:`bunqueue-dashboard`,version:`1.0.3`,type:`module`,description:"Web dashboard for a bunqueue server (queues, jobs, DLQ, cron, metrics, workers, live activity). Run with `bunx bunqueue-dashboard` (requires Bun 1.4.4).",packageManager:`bun@1.4.4`,bin:{"bunqueue-dashboard":`scripts/serve.ts`},files:[`dist`,`scripts/serve.ts`,`scripts/serveHandler.ts`,`scripts/servePolicy.ts`,`scripts/bunVersion.ts`,`scripts/embedded.gen.ts`,`agent`,`shared`,`patches`],publishConfig:{access:`public`},license:`MIT`,author:`Egeo Minotti`,homepage:`https://egeominotti.github.io/bunqueue-dashboard/`,repository:{type:`git`,url:`git+https://github.com/egeominotti/bunqueue-dashboard.git`},bugs:{url:`https://github.com/egeominotti/bunqueue-dashboard/issues`},keywords:[`bunqueue`,`dashboard`,`queue-dashboard`,`job-queue-ui`,`bullmq-alternative`,`bull-board-alternative`,`redis-queue-ui`,`task-queue`,`background-jobs`,`dead-letter-queue`,`dlq`,`cron`,`job-monitoring`,`bun`,`react`],engines:{bun:`1.4.4`},scripts:{prepack:`bun run version:check && bun run build && bun scripts/gen-embed.ts`,start:`bun run scripts/dev.ts`,dev:`vite`,agent:`bun run agent/index.ts`,build:`bun run typecheck && vite build`,typecheck:`bun check --no-script && bun run typecheck:agent && bun run typecheck:examples && bun run typecheck:e2e`,"typecheck:agent":`bun check --no-script -p tsconfig.agent.json`,"typecheck:examples":`bun check --no-script -p tsconfig.examples.json`,size:`bun run scripts/check-bundle.ts`,"version:check":`bun run scripts/check-bun-version.ts && bun run scripts/check-playwright-image.ts`,architecture:`bun run scripts/check-file-size.ts`,"docs:dev":`vitepress dev docs`,"docs:build":`bun run scripts/build-docs.ts`,"docs:preview":`vitepress preview docs`,"build:bin":`bun run build && bun run scripts/gen-embed.ts && bun build scripts/serve.ts agent/dbReadWorker.ts agent/backup/standaloneWorker.ts --compile --minify --outfile bunqueue-dashboard`,preview:`vite preview`,test:`bun test`,"test:e2e:flow":`bun run scripts/validate-flow-runtime.ts`,"test:e2e:queue-operations":`bun run scripts/validate-queue-operations.ts`,"test:e2e:upgrade":`bun run scripts/validate-sqlite-upgrade-runtime.ts`,"test:e2e:workflow":`bun run scripts/validate-workflow-runtime.ts`,"test:e2e:postgres-fleet":`bun run scripts/validate-postgres-fleet-runtime.ts`,"test:e2e:tls":`bun run scripts/validate-tls-runtime.ts`,"test:e2e":`bun run test:e2e:tls && bun run test:e2e:upgrade && bun run test:e2e:flow && bun run test:e2e:workflow && bun run test:e2e:queue-operations && bun run test:e2e:postgres-fleet`,"test:e2e:browser:install":`playwright install chromium firefox webkit`,"test:e2e:browser:serve":`bun e2e/runtime.ts`,"test:e2e:browser:postgres-fleet":`bun run scripts/validate-postgres-fleet-dashboard-runtime.ts`,"test:e2e:browser":`bun run build && bun scripts/gen-embed.ts && playwright test`,"test:binary":`bun scripts/validate-standalone-runtime.ts ./bunqueue-dashboard`,"test:runtime":`bun scripts/validate-standalone-runtime.ts --source`,"test:soak":`bun scripts/validate-resilience.ts`,"test:package":`bun run scripts/validate-package-runtime.ts`,"test:coverage":`bun test --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage && bun scripts/check-coverage.ts && bun scripts/check-critical-coverage.ts && bun scripts/check-test-inventory.ts`,lint:`oxlint . && bun run scripts/check-implicit-any-let.ts`,"lint:fix":`oxlint --fix . && bun run scripts/check-implicit-any-let.ts`,format:`bun fmt`,"format:check":`bun fmt --check`,check:`bun run typecheck && bun run lint && bun run format:check`,"check:fix":`bun run lint:fix && bun run format`,"audit:high":`bun audit --audit-level=high`,quality:`bun run quality:static && bun run quality:unit && bun run quality:runtime-a && bun run quality:runtime-b && bun run quality:runtime-c && bun run quality:runtime-d`,"quality:static":`bun run version:check && bun run architecture && bun run check && bun run build && bun run size && bun run docs:build && bun run audit:high`,"quality:unit":`bun run test:coverage`,"quality:runtime-a":`bun run test:e2e:tls && bun run test:e2e:upgrade && bun run test:e2e:flow && bun run test:e2e:workflow`,"quality:runtime-b":`bun run test:e2e:queue-operations && bun run test:e2e:postgres-fleet`,"quality:runtime-c":`bun run test:package && bun run test:runtime`,"quality:runtime-d":`bun run test:soak`,"typecheck:e2e":`bun check --no-script -p tsconfig.e2e.json`,"test:e2e:browser:managed":`bun run build && bun scripts/gen-embed.ts && playwright test -c playwright.managed.config.ts`,"test:e2e:docs":`bun run docs:build && playwright test -c playwright.docs.config.ts`},devDependencies:{"@ai-sdk/anthropic":`^4.0.7`,"@ai-sdk/google":`^4.0.8`,"@ai-sdk/openai":`^4.0.7`,"@ai-sdk/openai-compatible":`^3.0.5`,"@axe-core/playwright":`4.13.0`,"@fontsource-variable/inter":`^5.2.8`,"@fontsource-variable/jetbrains-mono":`^5.2.8`,"@modelcontextprotocol/sdk":`1.32.1`,"@playwright/test":`1.62.1`,"@shikijs/vitepress-twoslash":`4.4.3`,"@tailwindcss/vite":`^4.3.2`,"@types/node":`^26.0.1`,"@types/react":`^19.3.0`,"@types/react-dom":`^19.3.0`,"@vitejs/plugin-react":`^6.0.3`,ai:`7.0.14`,"bun-types":`1.4.4`,"bunqueue-v2-9-2":`npm:bunqueue@2.9.2`,"happy-dom":`^21.0.4`,mermaid:`^12.2.0`,oxlint:`^1.78.0`,"oxlint-tsgolint":`^7.0.2001`,react:`^19.3.1`,"react-dom":`^19.3.1`,"react-router-dom":`^7.18.4`,tailwindcss:`^4.3.2`,typescript:`^6.0.3`,vite:`^8.1.6`,vitepress:`2.0.0-alpha.20`,"vitepress-plugin-llms":`^1.13.2`,zod:`^4.6.7`,zustand:`^5.0.14`},overrides:{"brace-expansion":`^5.0.12`,dompurify:`^3.4.17`,"fast-uri":`^3.1.9`,"ip-address":`^10.7.4`,"js-yaml":`^3.15.2`,"markdown-it":`^14.3.3`,nanoid:`^3.3.18`,postcss:`^8.5.25`,"proxy-addr":`^2.0.8`,"source-map-js":`^1.2.2`,vue:`^3.5.42`},dependencies:{bunqueue:`2.9.20`,msgpackr:`^1.11.8`},patchedDependencies:{"ai@7.0.14":`patches/ai@7.0.14.patch`}};export{e as t};