queen-mq 0.1.5 → 0.1.6

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 (125) hide show
  1. package/package.json +11 -1
  2. package/src/server.js +24 -1
  3. package/src/webapp-dist/assets/Analytics-DJrE4Rz2.css +1 -0
  4. package/src/webapp-dist/assets/Analytics-HEMXKmfJ.js +1 -0
  5. package/src/webapp-dist/assets/ConfirmDialog-YEoCdE7x.js +1 -0
  6. package/src/webapp-dist/assets/ConsumerGroups-CC5VJywp.css +1 -0
  7. package/src/webapp-dist/assets/ConsumerGroups-D8Z20HhZ.js +1 -0
  8. package/src/webapp-dist/assets/Dashboard-BRFOz6it.css +1 -0
  9. package/src/webapp-dist/assets/Dashboard-Bpx9I32h.js +1 -0
  10. package/src/webapp-dist/assets/LoadingSpinner-BPttXcbs.js +1 -0
  11. package/src/webapp-dist/assets/Messages-BOfVHKma.css +1 -0
  12. package/src/webapp-dist/assets/Messages-EKURCbLl.js +1 -0
  13. package/src/webapp-dist/assets/QueueDetail-BXXA7xoZ.css +1 -0
  14. package/src/webapp-dist/assets/QueueDetail-Bmxg0KiA.js +1 -0
  15. package/src/webapp-dist/assets/Queues-CvrJkrZT.css +1 -0
  16. package/src/webapp-dist/assets/Queues-yUx9_3-9.js +1 -0
  17. package/src/webapp-dist/assets/StatusBadge-C1bBtXHh.css +1 -0
  18. package/src/webapp-dist/assets/StatusBadge-C6N84XmO.js +1 -0
  19. package/src/webapp-dist/assets/analytics-BapTekLM.js +1 -0
  20. package/src/webapp-dist/assets/colors-5z6Q_kUr.js +18 -0
  21. package/src/webapp-dist/assets/index-B7w2bKT6.css +1 -0
  22. package/src/webapp-dist/assets/index-CUSnwYTH.js +31 -0
  23. package/src/webapp-dist/assets/messages-CRV6E-xU.js +1 -0
  24. package/src/webapp-dist/assets/queues-BdUbxfBC.js +1 -0
  25. package/src/webapp-dist/assets/resources-Bs9U-ceF.js +1 -0
  26. package/{webapp → src/webapp-dist}/index.html +2 -1
  27. package/API.md +0 -1226
  28. package/AUTH.md +0 -2044
  29. package/CHANGELOG_STATIC_SERVING.md +0 -213
  30. package/DEPLOYMENT.md +0 -425
  31. package/PROGRAMMATIC_SERVER.md +0 -239
  32. package/WEBAPP.md +0 -1889
  33. package/assets/dashboard-01.png +0 -0
  34. package/assets/dashboard.png +0 -0
  35. package/examples/batch-processing.js +0 -58
  36. package/examples/bus-mode.js +0 -239
  37. package/examples/continuous-consumer-optimized.js +0 -215
  38. package/examples/continuous-consumer.js +0 -159
  39. package/examples/continuous-producer.js +0 -343
  40. package/examples/mixed-mode.js +0 -277
  41. package/examples/multi-server-test.js +0 -305
  42. package/examples/programmatic-server.js +0 -58
  43. package/examples/server-with-frontend.js +0 -46
  44. package/examples/single.js +0 -64
  45. package/examples/smartchat-dealyed.js +0 -42
  46. package/examples/smartchat.js +0 -52
  47. package/examples/test-cache-invalidation.js +0 -119
  48. package/examples/test-cache-multi-server.js +0 -245
  49. package/examples/test-complete-client.js +0 -260
  50. package/examples/test-connection-recovery.js +0 -66
  51. package/examples/test-dashboard-api.js +0 -200
  52. package/examples/test-minimal-client.js +0 -112
  53. package/examples/test-queue-creation-policy.js +0 -137
  54. package/examples/test-traceid.js +0 -147
  55. package/server.log +0 -1
  56. package/test-keepalive-v2.sh +0 -22
  57. package/webapp/COLOR_GUIDE.md +0 -118
  58. package/webapp/README.md +0 -143
  59. package/webapp/package-lock.json +0 -3184
  60. package/webapp/package.json +0 -25
  61. package/webapp/postcss.config.js +0 -7
  62. package/webapp/public/assets/queen-logo-blue.svg +0 -210
  63. package/webapp/public/assets/queen-logo-cyan.svg +0 -210
  64. package/webapp/public/assets/queen-logo-indigo.svg +0 -210
  65. package/webapp/public/assets/queen-logo-orange.svg +0 -210
  66. package/webapp/public/assets/queen-logo-pink.svg +0 -210
  67. package/webapp/public/assets/queen-logo-purple.svg +0 -210
  68. package/webapp/public/assets/queen-logo-rose.svg +0 -239
  69. package/webapp/public/assets/queen-logo.svg +0 -263
  70. package/webapp/src/App.vue +0 -19
  71. package/webapp/src/api/analytics.js +0 -10
  72. package/webapp/src/api/client.js +0 -34
  73. package/webapp/src/api/consumers.js +0 -52
  74. package/webapp/src/api/health.js +0 -7
  75. package/webapp/src/api/messages.js +0 -26
  76. package/webapp/src/api/queues.js +0 -14
  77. package/webapp/src/api/resources.js +0 -8
  78. package/webapp/src/assets/styles/main.css +0 -357
  79. package/webapp/src/components/analytics/AnalyticsFilters.vue +0 -87
  80. package/webapp/src/components/analytics/AnalyticsMetrics.vue +0 -57
  81. package/webapp/src/components/analytics/MessageDistributionChart.vue +0 -111
  82. package/webapp/src/components/analytics/MessageFlowChart.vue +0 -173
  83. package/webapp/src/components/analytics/TimeRangeSelector.vue +0 -27
  84. package/webapp/src/components/analytics/TopQueuesChart.vue +0 -132
  85. package/webapp/src/components/common/ConfirmDialog.vue +0 -56
  86. package/webapp/src/components/common/LoadingSpinner.vue +0 -6
  87. package/webapp/src/components/common/MetricCard.vue +0 -43
  88. package/webapp/src/components/common/StatusBadge.vue +0 -45
  89. package/webapp/src/components/dashboard/MessageStatusCard.vue +0 -50
  90. package/webapp/src/components/dashboard/PerformanceCard.vue +0 -38
  91. package/webapp/src/components/dashboard/ThroughputChart.vue +0 -182
  92. package/webapp/src/components/dashboard/TopQueuesTable.vue +0 -53
  93. package/webapp/src/components/layout/AppLayout.vue +0 -110
  94. package/webapp/src/components/layout/AppSidebar.vue +0 -304
  95. package/webapp/src/components/messages/MessageDetailPanel.vue +0 -242
  96. package/webapp/src/components/messages/MessageFilters.vue +0 -101
  97. package/webapp/src/components/queue-detail/PartitionList.vue +0 -79
  98. package/webapp/src/components/queue-detail/PushMessageModal.vue +0 -175
  99. package/webapp/src/components/queue-detail/QueueConfig.vue +0 -63
  100. package/webapp/src/components/queue-detail/QueueDetailHeader.vue +0 -53
  101. package/webapp/src/components/queue-detail/RecentMessages.vue +0 -76
  102. package/webapp/src/components/queues/CreateQueueModal.vue +0 -193
  103. package/webapp/src/components/queues/QueueFilters.vue +0 -90
  104. package/webapp/src/composables/useApi.js +0 -34
  105. package/webapp/src/composables/useTheme.js +0 -36
  106. package/webapp/src/main.js +0 -11
  107. package/webapp/src/router/index.js +0 -42
  108. package/webapp/src/utils/colors.js +0 -96
  109. package/webapp/src/utils/formatters.js +0 -49
  110. package/webapp/src/views/Analytics.vue +0 -377
  111. package/webapp/src/views/ConsumerGroups.vue +0 -433
  112. package/webapp/src/views/Dashboard.vue +0 -418
  113. package/webapp/src/views/Messages.vue +0 -363
  114. package/webapp/src/views/QueueDetail.vue +0 -582
  115. package/webapp/src/views/Queues.vue +0 -496
  116. package/webapp/tailwind.config.js +0 -25
  117. package/webapp/vite.config.js +0 -10
  118. /package/{assets → src/webapp-dist/assets}/queen-logo-blue.svg +0 -0
  119. /package/{assets → src/webapp-dist/assets}/queen-logo-cyan.svg +0 -0
  120. /package/{assets → src/webapp-dist/assets}/queen-logo-indigo.svg +0 -0
  121. /package/{assets → src/webapp-dist/assets}/queen-logo-orange.svg +0 -0
  122. /package/{assets → src/webapp-dist/assets}/queen-logo-pink.svg +0 -0
  123. /package/{assets → src/webapp-dist/assets}/queen-logo-purple.svg +0 -0
  124. /package/{assets → src/webapp-dist/assets}/queen-logo-rose.svg +0 -0
  125. /package/{assets → src/webapp-dist/assets}/queen-logo.svg +0 -0
package/package.json CHANGED
@@ -1,12 +1,16 @@
1
1
  {
2
2
  "name": "queen-mq",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "type": "module",
5
5
  "description": "High-performance message queue backed by PostgreSQL",
6
6
  "main": "src/client/index.js",
7
7
  "scripts": {
8
8
  "start": "node src/server.js",
9
9
  "start:cluster": "node src/cluster-server.js",
10
+ "build:webapp": "cd webapp && npm install && npm run build",
11
+ "copy:webapp": "rm -rf src/webapp-dist && cp -r webapp/dist src/webapp-dist",
12
+ "prepublishOnly": "npm run build:webapp && npm run copy:webapp",
13
+ "publish:public": "npm run build:webapp && npm run copy:webapp && npm publish --access public",
10
14
  "test:produce": "node test.js produce",
11
15
  "test:consume": "node test.js consume",
12
16
  "test": "node src/test/test.js",
@@ -22,6 +26,12 @@
22
26
  "test:simple": "node test-simple.js",
23
27
  "init": "node init-db.js"
24
28
  },
29
+ "files": [
30
+ "src/",
31
+ "init-db.js",
32
+ "LICENSE.md",
33
+ "README.md"
34
+ ],
25
35
  "dependencies": {
26
36
  "axios": "^1.12.2",
27
37
  "chart.js": "^4.5.1",
package/src/server.js CHANGED
@@ -40,7 +40,13 @@ export async function QueenServer(options = {}) {
40
40
  const PORT = options.port || config.SERVER.PORT;
41
41
  const HOST = options.host || config.SERVER.HOST;
42
42
  const SERVE_WEBAPP = options.serveWebapp || false;
43
- const WEBAPP_PATH = options.webappPath || path.join(__dirname, '..', 'webapp', 'dist');
43
+
44
+ // Default webapp path: try src/webapp-dist (npm package), fall back to ../webapp/dist (development)
45
+ let defaultWebappPath = path.join(__dirname, 'webapp-dist');
46
+ if (!fs.existsSync(defaultWebappPath)) {
47
+ defaultWebappPath = path.join(__dirname, '..', 'webapp', 'dist');
48
+ }
49
+ const WEBAPP_PATH = options.webappPath || defaultWebappPath;
44
50
 
45
51
  // Use WORKER_ID from config as the server instance ID for consumer groups
46
52
  // This ensures the same server (identified by WORKER_ID) maintains its position in the event stream
@@ -1234,6 +1240,23 @@ export async function QueenServer(options = {}) {
1234
1240
  // ============================================================================
1235
1241
 
1236
1242
  if (SERVE_WEBAPP) {
1243
+ // Check if webapp directory exists
1244
+ if (!fs.existsSync(WEBAPP_PATH)) {
1245
+ log(`❌ ERROR: Webapp directory not found at: ${WEBAPP_PATH}`);
1246
+ log(`💡 To enable frontend serving:`);
1247
+ log(` 1. Build the webapp: cd webapp && npm install && npm run build`);
1248
+ log(` 2. Or specify a custom path: QueenServer({ webappPath: '/path/to/dist' })`);
1249
+ log(` 3. Or disable frontend: QueenServer({ serveWebapp: false })`);
1250
+ throw new Error(`Webapp directory not found: ${WEBAPP_PATH}`);
1251
+ }
1252
+
1253
+ const indexPath = path.join(WEBAPP_PATH, 'index.html');
1254
+ if (!fs.existsSync(indexPath)) {
1255
+ log(`❌ ERROR: index.html not found in webapp directory: ${WEBAPP_PATH}`);
1256
+ log(`💡 Make sure the webapp is built: cd webapp && npm run build`);
1257
+ throw new Error(`index.html not found in: ${WEBAPP_PATH}`);
1258
+ }
1259
+
1237
1260
  log(`📁 Enabling static file serving from: ${WEBAPP_PATH}`);
1238
1261
 
1239
1262
  // MIME type mapping
@@ -0,0 +1 @@
1
+ .page-flat[data-v-bdc83bdb]{min-height:100%}.chart-flat[data-v-bdc83bdb]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem;transition:all .3s ease}.dark .chart-flat[data-v-bdc83bdb]{background:#0a0d14}.chart-flat[data-v-bdc83bdb]:hover{background:#fafafa}.dark .chart-flat[data-v-bdc83bdb]:hover{background:#0d1117}.filter-flat[data-v-bdc83bdb]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem}.dark .filter-flat[data-v-bdc83bdb]{background:#0a0d14}.filter-flat[data-v-bdc83bdb] .input{background:transparent;border:1px solid rgba(156,163,175,.15);transition:all .2s ease}.filter-flat[data-v-bdc83bdb] .input:hover{border-color:#9ca3af40}.filter-flat[data-v-bdc83bdb] .input:focus{background:#f43f5e05;border-color:#f43f5e66;box-shadow:0 0 0 3px #f43f5e0d}.dark .filter-flat[data-v-bdc83bdb] .input{border-color:#9ca3af1a}.dark .filter-flat[data-v-bdc83bdb] .input:focus{background:#f43f5e08;border-color:#f43f5e80;box-shadow:0 0 0 3px #f43f5e14}.info-flat[data-v-bdc83bdb]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem;transition:all .3s ease}.dark .info-flat[data-v-bdc83bdb]{background:#0a0d14}.info-flat[data-v-bdc83bdb]:hover{background:#fafafa}.dark .info-flat[data-v-bdc83bdb]:hover{background:#0d1117}.error-flat[data-v-bdc83bdb]{background:transparent;color:#dc2626;font-size:.875rem;padding:1rem}.dark .error-flat[data-v-bdc83bdb]{color:#fca5a5}
@@ -0,0 +1 @@
1
+ import{a as ae}from"./analytics-BapTekLM.js";import{q as re}from"./queues-BdUbxfBC.js";import{r as J}from"./resources-Bs9U-ceF.js";import{a as i,o as n,d as e,f as w,F as S,r as q,t as b,c as y,b as L,u as z,g as h,w as oe,h as ne,i as le,l as C,j as de,k as _}from"./index-CUSnwYTH.js";import{C as M,a as K,L as X,B as Y,p as ee,b as D,c as T,d as F,e as te,A as ie,D as ue}from"./colors-5z6Q_kUr.js";import{f as ce,_ as ge,L as pe}from"./LoadingSpinner-BPttXcbs.js";const be={class:"flex flex-col sm:flex-row gap-3"},ve={class:"flex items-center gap-2"},me=["value"],fe=["value"],he=["value"],xe=["value"],ke=["value"],ye=["value"],_e=["value"],we={__name:"AnalyticsFilters",props:{timeRange:String,queue:String,namespace:String,task:String,queues:Array,namespaces:Array,tasks:Array},emits:["update:timeRange","update:queue","update:namespace","update:task"],setup(c,{emit:d}){const g=d;function v(){g("update:queue",""),g("update:namespace",""),g("update:task","")}return(o,s)=>(n(),i("div",null,[e("div",be,[e("div",ve,[s[5]||(s[5]=e("label",{class:"text-sm font-medium text-gray-700 dark:text-gray-300 whitespace-nowrap"},"Time Range:",-1)),e("select",{value:c.timeRange,onChange:s[0]||(s[0]=t=>o.$emit("update:timeRange",t.target.value)),class:"input w-32"},[...s[4]||(s[4]=[e("option",{value:"1h"},"Last Hour",-1),e("option",{value:"6h"},"6 Hours",-1),e("option",{value:"24h"},"24 Hours",-1),e("option",{value:"7d"},"7 Days",-1)])],40,me)]),e("select",{value:c.queue,onChange:s[1]||(s[1]=t=>o.$emit("update:queue",t.target.value)),class:"input flex-1 sm:w-48"},[s[6]||(s[6]=e("option",{value:""},"All Queues",-1)),(n(!0),i(S,null,q(c.queues,t=>(n(),i("option",{key:t.id,value:t.name},b(t.name),9,he))),128))],40,fe),e("select",{value:c.namespace,onChange:s[2]||(s[2]=t=>o.$emit("update:namespace",t.target.value)),class:"input sm:w-40"},[s[7]||(s[7]=e("option",{value:""},"All Namespaces",-1)),(n(!0),i(S,null,q(c.namespaces,t=>(n(),i("option",{key:t.namespace,value:t.namespace},b(t.namespace),9,ke))),128))],40,xe),e("select",{value:c.task,onChange:s[3]||(s[3]=t=>o.$emit("update:task",t.target.value)),class:"input sm:w-40"},[s[8]||(s[8]=e("option",{value:""},"All Tasks",-1)),(n(!0),i(S,null,q(c.tasks,t=>(n(),i("option",{key:t.task,value:t.task},b(t.task),9,_e))),128))],40,ye),c.queue||c.namespace||c.task?(n(),i("button",{key:0,onClick:v,class:"btn btn-secondary whitespace-nowrap"}," Clear Filters ")):w("",!0)])]))}},Ce={class:"chart-container"},Se={key:1,class:"flex items-center justify-center h-full text-gray-500 text-sm"},$e={__name:"MessageFlowChart",props:{data:Object},setup(c){M.register(K,X,Y,ee,D,T);const d=c,g=y(()=>{var t,r;if(!((r=(t=d.data)==null?void 0:t.throughput)!=null&&r.length))return null;const s=[...d.data.throughput].reverse();return{labels:s.map(l=>new Date(l.timestamp).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})),datasets:[{label:"Ingested",data:s.map(l=>l.ingested||l.ingestedPerSecond||0),backgroundColor:v("rose"),borderColor:"transparent",borderWidth:0,borderRadius:4,barPercentage:.9,categoryPercentage:.95},{label:"Processed",data:s.map(l=>l.processed||l.processedPerSecond||0),backgroundColor:v("purple"),borderColor:"transparent",borderWidth:0,borderRadius:4,barPercentage:.9,categoryPercentage:.95}]}});function v(s){return t=>{const r=t.chart,{ctx:l,chartArea:u}=r;if(!u)return s==="rose"?F.charts.ingested.border:F.charts.processed.border;const p=l.createLinearGradient(0,u.top,0,u.bottom);return s==="rose"?(p.addColorStop(0,"rgba(244, 63, 94, 0.9)"),p.addColorStop(1,"rgba(244, 63, 94, 0.5)")):s==="purple"&&(p.addColorStop(0,"rgba(168, 85, 247, 0.9)"),p.addColorStop(1,"rgba(168, 85, 247, 0.5)")),p}}const o={responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{stacked:!1,grid:{display:!1},border:{display:!1},ticks:{maxRotation:0,autoSkipPadding:20,font:{size:10},color:"#9ca3af"}},y:{stacked:!1,beginAtZero:!0,border:{display:!1},grid:{display:!1},ticks:{font:{size:11},color:"#9ca3af",padding:8}}},plugins:{legend:{display:!0,position:"top",align:"end",labels:{boxWidth:12,boxHeight:12,padding:15,usePointStyle:!0,pointStyle:"circle",font:{size:12,weight:"500"},color:"#6b7280"}},tooltip:{enabled:!0,backgroundColor:"rgba(0, 0, 0, 0.9)",padding:12,cornerRadius:8,titleFont:{size:13,weight:"600"},bodyFont:{size:12},bodySpacing:6,usePointStyle:!0}}};return(s,t)=>(n(),i("div",Ce,[g.value?(n(),L(z(te),{key:0,data:g.value,options:o},null,8,["data"])):(n(),i("div",Se," No data available for this time range "))]))}},Ae={class:"h-80"},je={key:1,class:"flex items-center justify-center h-full text-gray-500 text-sm"},Re={__name:"TopQueuesChart",props:{queues:Array},setup(c){M.register(K,X,Y,ee,D,T);const d=c,g=y(()=>{var t;if(!((t=d.queues)!=null&&t.length))return null;const s=[...d.queues].sort((r,l)=>{var u,p;return(((u=l.messages)==null?void 0:u.total)||0)-(((p=r.messages)==null?void 0:p.total)||0)}).slice(0,10);return{labels:s.map(r=>r.name),datasets:[{label:"Total Messages",data:s.map(r=>{var l;return((l=r.messages)==null?void 0:l.total)||0}),backgroundColor:v(),borderColor:"transparent",borderWidth:0,borderRadius:8,barThickness:24}]}});function v(){return s=>{const t=s.chart,{ctx:r,chartArea:l}=t;if(!l)return F.secondary.rgba(.8);const u=r.createLinearGradient(l.left,0,l.right,0);return u.addColorStop(0,"rgba(244, 63, 94, 0.8)"),u.addColorStop(.5,"rgba(236, 72, 153, 0.8)"),u.addColorStop(1,"rgba(168, 85, 247, 0.8)"),u}}const o={responsive:!0,maintainAspectRatio:!1,indexAxis:"y",scales:{x:{beginAtZero:!0,grid:{display:!1},border:{display:!1},ticks:{font:{size:11},color:"#9ca3af"}},y:{grid:{display:!1},border:{display:!1},ticks:{font:{size:11},color:"#6b7280"}}},plugins:{legend:{display:!1},tooltip:{backgroundColor:"rgba(0, 0, 0, 0.9)",padding:12,cornerRadius:8,titleFont:{size:13},bodyFont:{size:12}}}};return(s,t)=>(n(),i("div",Ae,[g.value?(n(),L(z(te),{key:0,data:g.value,options:o},null,8,["data"])):(n(),i("div",je," No queue data available "))]))}},qe={class:"h-80 flex items-center justify-center"},Le={class:"w-full max-w-sm"},ze={key:1,class:"text-center text-gray-500 text-sm"},Pe={__name:"MessageDistributionChart",props:{messages:Object},setup(c){M.register(ie,D,T);const d=c,g=y(()=>{if(!d.messages)return null;const o=[d.messages.pending||0,d.messages.processing||0,d.messages.completed||0,d.messages.failed||0,d.messages.deadLetter||0];return o.every(s=>s===0)?null:{labels:["Pending","Processing","Completed","Failed","Dead Letter"],datasets:[{data:o,backgroundColor:["rgba(236, 72, 153, 0.8)","rgba(168, 85, 247, 0.8)","rgba(139, 92, 246, 0.8)","rgba(244, 63, 94, 0.8)","rgba(192, 132, 252, 0.7)"],borderColor:["rgb(236, 72, 153)","rgb(168, 85, 247)","rgb(139, 92, 246)","rgb(244, 63, 94)","rgb(192, 132, 252)"],borderWidth:2}]}}),v={responsive:!0,maintainAspectRatio:!0,plugins:{legend:{position:"bottom",labels:{padding:15,font:{size:12},color:"#6b7280",usePointStyle:!0,pointStyle:"circle"}},tooltip:{backgroundColor:"rgba(0, 0, 0, 0.9)",padding:12,cornerRadius:8,titleFont:{size:13},bodyFont:{size:12},callbacks:{label:o=>{const s=o.label||"",t=o.parsed||0,r=o.dataset.data.reduce((u,p)=>u+p,0),l=r>0?(t/r*100).toFixed(1):0;return` ${s}: ${t.toLocaleString()} (${l}%)`}}}}};return(o,s)=>(n(),i("div",qe,[e("div",Le,[g.value?(n(),L(z(ue),{key:0,data:g.value,options:v},null,8,["data"])):(n(),i("div",ze," No message data available "))])]))}},Fe={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},Me={class:"card"},De={class:"metric-value"},Te={class:"card"},Be={class:"metric-value"},He={class:"card"},Qe={class:"metric-value"},Ve={__name:"AnalyticsMetrics",props:{data:Object,messages:Object},setup(c){const d=c,g=y(()=>{var l,u;if(!((u=(l=d.data)==null?void 0:l.throughput)!=null&&u.length))return"0.00";const s=d.data.throughput;return(s.reduce((p,x)=>p+(x.processedPerSecond||x.processed||0),0)/s.length).toFixed(2)}),v=y(()=>{var s;return((s=d.messages)==null?void 0:s.completed)||0}),o=y(()=>{var u,p,x;const s=((u=d.messages)==null?void 0:u.failed)||0,t=((p=d.messages)==null?void 0:p.deadLetter)||0,r=((x=d.messages)==null?void 0:x.total)||0;return r===0?"0.00":((s+t)/r*100).toFixed(2)});return(s,t)=>(n(),i("div",Fe,[e("div",Me,[t[0]||(t[0]=e("p",{class:"metric-label"},"Avg Throughput",-1)),e("p",De,b(g.value),1),t[1]||(t[1]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1.5"},"messages/sec",-1))]),e("div",Te,[t[2]||(t[2]=e("p",{class:"metric-label"},"Total Processed",-1)),e("p",Be,b(z(ce)(v.value)),1),t[3]||(t[3]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1.5"},"in time range",-1))]),e("div",He,[t[4]||(t[4]=e("p",{class:"metric-label"},"Error Rate",-1)),e("p",Qe,b(o.value)+"%",1),t[5]||(t[5]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400 mt-1.5"},"failed / total",-1))])]))}},Ne={class:"page-flat"},Oe={class:"py-4 px-3"},Ee={class:"space-y-2.5"},Ue={class:"filter-flat"},We={key:1,class:"error-flat"},Ge={key:0,class:"flex flex-wrap gap-2"},Ie={key:0,class:"badge badge-info"},Ze={key:1,class:"badge badge-info"},Je={key:2,class:"badge badge-info"},Ke={class:"chart-flat"},Xe={class:"grid grid-cols-1 lg:grid-cols-2 gap-2"},Ye={class:"chart-flat"},et={class:"chart-flat"},tt={class:"info-flat"},st={class:"grid grid-cols-1 lg:grid-cols-2 gap-2"},at={class:"info-flat"},rt={class:"space-y-2.5"},ot={class:"flex items-center justify-between text-sm"},nt={class:"font-semibold"},lt={class:"flex items-center justify-between text-sm"},dt={class:"font-semibold"},it={class:"flex items-center justify-between text-sm"},ut={class:"font-semibold"},ct={class:"flex items-center justify-between text-sm"},gt={class:"font-semibold"},pt={class:"info-flat"},bt={class:"space-y-2.5"},vt={class:"flex items-center justify-between text-sm"},mt={class:"font-semibold"},ft={class:"flex items-center justify-between text-sm"},ht={class:"font-semibold"},xt={key:0,class:"mt-4 pt-4 border-t border-gray-200/30 dark:border-gray-700/30"},kt={class:"space-y-2"},yt={class:"flex items-center justify-between"},_t={class:"text-gray-600 dark:text-gray-400 truncate flex-1"},wt={class:"font-semibold ml-2"},Ct={__name:"Analytics",setup(c){const d=h(!1),g=h(null),v=h("1h"),o=h(""),s=h(""),t=h(""),r=h(null),l=h([]),u=h([]),p=h([]),x=y(()=>{let m=l.value;return o.value&&(m=m.filter(a=>a.name===o.value)),s.value&&(m=m.filter(a=>a.namespace===s.value)),t.value&&(m=m.filter(a=>a.task===t.value)),m});async function P(){d.value=!0,g.value=null;try{const m=new Date,a=new Date(m);switch(v.value){case"1h":a.setHours(a.getHours()-1);break;case"6h":a.setHours(a.getHours()-6);break;case"24h":a.setHours(a.getHours()-24);break;case"7d":a.setDate(a.getDate()-7);break}const k={from:a.toISOString(),to:m.toISOString()};o.value&&(k.queue=o.value),s.value&&(k.namespace=s.value),t.value&&(k.task=t.value);const[$,A,j,R]=await Promise.all([ae.getStatus(k),re.getQueues(),J.getNamespaces(),J.getTasks()]);r.value=$.data,l.value=A.data.queues,u.value=j.data.namespaces,p.value=R.data.tasks}catch(m){g.value=m.message,console.error("Analytics error:",m)}finally{d.value=!1}}return oe([v,o,s,t],()=>{P()}),ne(()=>{P(),window.registerRefreshCallback&&window.registerRefreshCallback("/analytics",P)}),le(()=>{window.registerRefreshCallback&&window.registerRefreshCallback("/analytics",null)}),(m,a)=>{var k,$,A,j,R,B,H,Q,V,N,O,E,U,W,G,I,Z;return n(),i("div",Ne,[e("div",Oe,[e("div",Ee,[e("div",Ue,[C(we,{"time-range":v.value,"onUpdate:timeRange":a[0]||(a[0]=f=>v.value=f),queue:o.value,"onUpdate:queue":a[1]||(a[1]=f=>o.value=f),namespace:s.value,"onUpdate:namespace":a[2]||(a[2]=f=>s.value=f),task:t.value,"onUpdate:task":a[3]||(a[3]=f=>t.value=f),queues:l.value,namespaces:u.value,tasks:p.value},null,8,["time-range","queue","namespace","task","queues","namespaces","tasks"])]),d.value&&!r.value?(n(),L(pe,{key:0})):g.value?(n(),i("div",We,[e("p",null,[a[4]||(a[4]=e("strong",null,"Error loading analytics:",-1)),de(" "+b(g.value),1)])])):(n(),i(S,{key:2},[o.value||s.value||t.value?(n(),i("div",Ge,[o.value?(n(),i("span",Ie," Queue: "+b(o.value),1)):w("",!0),s.value?(n(),i("span",Ze," Namespace: "+b(s.value),1)):w("",!0),t.value?(n(),i("span",Je," Task: "+b(t.value),1)):w("",!0)])):w("",!0),e("div",Ke,[a[5]||(a[5]=_('<div class="flex items-center gap-2 mb-2" data-v-bdc83bdb><div class="w-7 h-7 rounded-lg bg-gradient-to-br from-rose-500/10 to-purple-500/20 flex items-center justify-center" data-v-bdc83bdb><svg class="w-4 h-4 text-rose-600 dark:text-rose-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-bdc83bdb><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 12l3-3 3 3 4-4M8 21l4-4 4 4M3 4h18M4 4h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z" data-v-bdc83bdb></path></svg></div><h3 class="text-sm font-semibold text-gray-900 dark:text-gray-100" data-v-bdc83bdb>Message Flow Over Time</h3></div>',1)),C($e,{data:r.value},null,8,["data"])]),e("div",Xe,[e("div",Ye,[a[6]||(a[6]=_('<div class="flex items-center gap-2 mb-2" data-v-bdc83bdb><div class="w-7 h-7 rounded-lg bg-gradient-to-br from-indigo-500/10 to-violet-500/20 flex items-center justify-center" data-v-bdc83bdb><svg class="w-4 h-4 text-indigo-600 dark:text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-bdc83bdb><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" data-v-bdc83bdb></path></svg></div><h3 class="text-sm font-semibold text-gray-900 dark:text-gray-100" data-v-bdc83bdb>Top Queues by Volume</h3></div>',1)),C(Re,{queues:x.value},null,8,["queues"])]),e("div",et,[a[7]||(a[7]=_('<div class="flex items-center gap-2 mb-2" data-v-bdc83bdb><div class="w-7 h-7 rounded-lg bg-gradient-to-br from-green-500/10 to-emerald-500/20 flex items-center justify-center" data-v-bdc83bdb><svg class="w-4 h-4 text-green-600 dark:text-green-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-bdc83bdb><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z" data-v-bdc83bdb></path><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z" data-v-bdc83bdb></path></svg></div><h3 class="text-sm font-semibold text-gray-900 dark:text-gray-100" data-v-bdc83bdb>Message Status Distribution</h3></div>',1)),C(Pe,{messages:(k=r.value)==null?void 0:k.messages},null,8,["messages"])])]),e("div",tt,[a[8]||(a[8]=_('<div class="flex items-center gap-2 mb-2" data-v-bdc83bdb><div class="w-7 h-7 rounded-lg bg-gradient-to-br from-blue-500/10 to-cyan-500/20 flex items-center justify-center" data-v-bdc83bdb><svg class="w-4 h-4 text-blue-600 dark:text-blue-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-bdc83bdb><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" data-v-bdc83bdb></path></svg></div><h3 class="text-sm font-semibold text-gray-900 dark:text-gray-100" data-v-bdc83bdb>Performance Metrics</h3></div>',1)),C(Ve,{data:r.value,messages:($=r.value)==null?void 0:$.messages},null,8,["data","messages"])]),e("div",st,[e("div",at,[a[13]||(a[13]=_('<div class="flex items-center gap-2 mb-2" data-v-bdc83bdb><div class="w-7 h-7 rounded-lg bg-gradient-to-br from-purple-500/10 to-indigo-500/20 flex items-center justify-center" data-v-bdc83bdb><svg class="w-4 h-4 text-purple-600 dark:text-purple-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-bdc83bdb><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" data-v-bdc83bdb></path></svg></div><h3 class="text-sm font-semibold" data-v-bdc83bdb>Active Leases</h3></div>',1)),e("div",rt,[e("div",ot,[a[9]||(a[9]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Active Leases",-1)),e("span",nt,b(((j=(A=r.value)==null?void 0:A.leases)==null?void 0:j.active)||0),1)]),e("div",lt,[a[10]||(a[10]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Partitions with Leases",-1)),e("span",dt,b(((B=(R=r.value)==null?void 0:R.leases)==null?void 0:B.partitionsWithLeases)||0),1)]),e("div",it,[a[11]||(a[11]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Total Batch Size",-1)),e("span",ut,b(((Q=(H=r.value)==null?void 0:H.leases)==null?void 0:Q.totalBatchSize)||0),1)]),e("div",ct,[a[12]||(a[12]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Total Acked",-1)),e("span",gt,b(((N=(V=r.value)==null?void 0:V.leases)==null?void 0:N.totalAcked)||0),1)])])]),e("div",pt,[a[17]||(a[17]=_('<div class="flex items-center gap-2 mb-2" data-v-bdc83bdb><div class="w-7 h-7 rounded-lg bg-gradient-to-br from-red-500/10 to-rose-500/20 flex items-center justify-center" data-v-bdc83bdb><svg class="w-4 h-4 text-red-600 dark:text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-bdc83bdb><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" data-v-bdc83bdb></path></svg></div><h3 class="text-sm font-semibold" data-v-bdc83bdb>Dead Letter Queue</h3></div>',1)),e("div",bt,[e("div",vt,[a[14]||(a[14]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Total Messages",-1)),e("span",mt,b(((E=(O=r.value)==null?void 0:O.deadLetterQueue)==null?void 0:E.totalMessages)||0),1)]),e("div",ft,[a[15]||(a[15]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Affected Partitions",-1)),e("span",ht,b(((W=(U=r.value)==null?void 0:U.deadLetterQueue)==null?void 0:W.affectedPartitions)||0),1)])]),(Z=(I=(G=r.value)==null?void 0:G.deadLetterQueue)==null?void 0:I.topErrors)!=null&&Z.length?(n(),i("div",xt,[a[16]||(a[16]=e("p",{class:"text-xs font-semibold text-gray-600 dark:text-gray-400 mb-2"},"Top Errors:",-1)),e("div",kt,[(n(!0),i(S,null,q(r.value.deadLetterQueue.topErrors.slice(0,3),(f,se)=>(n(),i("div",{key:se,class:"text-xs"},[e("div",yt,[e("span",_t,b(f.error),1),e("span",wt,b(f.count),1)])]))),128))])])):w("",!0)])])],64))])])])}}},Lt=ge(Ct,[["__scopeId","data-v-bdc83bdb"]]);export{Lt as default};
@@ -0,0 +1 @@
1
+ import{a as o,f as l,o as r,d as e,t as s,s as c}from"./index-CUSnwYTH.js";const d={key:0,class:"fixed inset-0 z-50 overflow-y-auto"},m={class:"flex items-center justify-center min-h-screen px-4"},f={class:"relative bg-white dark:bg-slate-800 rounded-xl shadow-2xl max-w-md w-full p-6 animate-scale-in border border-gray-200 dark:border-gray-700"},b={class:"mb-4"},g={class:"text-lg font-bold mb-2"},u={class:"text-sm text-gray-600 dark:text-gray-400"},y={class:"flex gap-3"},p={__name:"ConfirmDialog",props:{isOpen:Boolean,title:{type:String,default:"Confirm Action"},message:{type:String,default:"Are you sure you want to proceed?"},confirmText:{type:String,default:"Confirm"},cancelText:{type:String,default:"Cancel"},confirmClass:{type:String,default:"btn-primary"}},emits:["confirm","cancel"],setup(t){return(a,n)=>t.isOpen?(r(),o("div",d,[e("div",m,[e("div",{class:"fixed inset-0 bg-black bg-opacity-50 backdrop-blur-sm transition-opacity animate-fade-in",onClick:n[0]||(n[0]=i=>a.$emit("cancel"))}),e("div",f,[e("div",b,[e("h3",g,s(t.title),1),e("p",u,s(t.message),1)]),e("div",y,[e("button",{onClick:n[1]||(n[1]=i=>a.$emit("cancel")),class:"btn btn-secondary flex-1"},s(t.cancelText),1),e("button",{onClick:n[2]||(n[2]=i=>a.$emit("confirm")),class:c(`btn ${t.confirmClass} flex-1`)},s(t.confirmText),3)])])])])):l("",!0)}};export{p as _};
@@ -0,0 +1 @@
1
+ .page-flat[data-v-7c302ff9]{min-height:100%}.info-banner[data-v-7c302ff9]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem;color:inherit;border-left:3px solid rgba(168,85,247,.3)}.dark .info-banner[data-v-7c302ff9]{background:#0a0d14;border-left-color:#a855f780}.filter-flat[data-v-7c302ff9]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem}.dark .filter-flat[data-v-7c302ff9]{background:#0a0d14}.filter-flat[data-v-7c302ff9] .input{background:transparent;border:1px solid rgba(156,163,175,.15);transition:all .2s ease}.filter-flat[data-v-7c302ff9] .input:hover{border-color:#9ca3af40}.filter-flat[data-v-7c302ff9] .input:focus{background:#f43f5e05;border-color:#f43f5e66;box-shadow:0 0 0 3px #f43f5e0d}.dark .filter-flat[data-v-7c302ff9] .input{border-color:#9ca3af1a}.dark .filter-flat[data-v-7c302ff9] .input:focus{background:#f43f5e08;border-color:#f43f5e80;box-shadow:0 0 0 3px #f43f5e14}.metric-flat[data-v-7c302ff9]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem;transition:all .3s ease}.dark .metric-flat[data-v-7c302ff9]{background:#0a0d14}.metric-flat[data-v-7c302ff9]:hover{background:#fafafa}.dark .metric-flat[data-v-7c302ff9]:hover{background:#0d1117}.metric-value-flat[data-v-7c302ff9]{font-size:1.5rem;font-weight:700;line-height:1.1;margin-top:.125rem;background:linear-gradient(135deg,#f43f5e,#ec4899,#a855f7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.02em}.table-section[data-v-7c302ff9]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem 0}.dark .table-section[data-v-7c302ff9]{background:#0a0d14}.metric-icon-flat[data-v-7c302ff9]{width:2rem;height:2rem;border-radius:.5rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .3s ease}.metric-flat:hover .metric-icon-flat[data-v-7c302ff9]{transform:scale(1.05)}.table-section[data-v-7c302ff9] .table{border-collapse:separate;border-spacing:0}.table-section[data-v-7c302ff9] .table thead{background:transparent;border-bottom:1px solid rgba(156,163,175,.08)}.dark .table-section[data-v-7c302ff9] .table thead{border-bottom-color:#9ca3af1a}.table-section[data-v-7c302ff9] .table th{padding:1rem;font-weight:600;letter-spacing:.05em}.table-section[data-v-7c302ff9] .table tbody tr{border:none;transition:all .15s ease}.table-section[data-v-7c302ff9] .table tbody tr:nth-child(2n){background:#00000004}.dark .table-section[data-v-7c302ff9] .table tbody tr:nth-child(2n){background:#ffffff05}.table-section[data-v-7c302ff9] .table tbody tr:hover{background:#f43f5e08;box-shadow:inset 3px 0 #f43f5e99}.dark .table-section[data-v-7c302ff9] .table tbody tr:hover{background:#f43f5e0d;box-shadow:inset 3px 0 #f43f5ecc}.table-section[data-v-7c302ff9] .table td{padding:.875rem 1rem;border:none}.error-flat[data-v-7c302ff9]{background:transparent;color:#dc2626;font-size:.875rem;padding:1rem}.dark .error-flat[data-v-7c302ff9]{color:#fca5a5}
@@ -0,0 +1 @@
1
+ import{y as C,g as m,c as _,h as L,i as S,a as d,d as t,k as G,b as T,f as g,p as k,v as z,q as B,j as V,t as l,F as b,r as w,o as i,u as y,l as E}from"./index-CUSnwYTH.js";import{_ as j,L as A,f as D,b as N}from"./LoadingSpinner-BPttXcbs.js";import{S as F}from"./StatusBadge-C6N84XmO.js";const U={getConsumerGroups:async()=>{try{const u=(await C.get("/api/v1/status/queues")).data.queues,c=new Map;return u.forEach(o=>{if(o.lag||o.performance){const n=o.consumerGroup||"__QUEUE_MODE__";c.has(n)||c.set(n,{name:n,topics:[],queues:new Set,totalLag:0,maxTimeLag:0,state:"Stable"});const r=c.get(n);r.queues.add(o.name),r.topics.push(o.name),o.lag&&(r.totalLag+=o.lag.offset||0,r.maxTimeLag=Math.max(r.maxTimeLag,o.lag.timeLagMs||0))}}),Array.from(c.values()).map(o=>({...o,topics:Array.from(o.queues),members:o.topics.length}))}catch(f){return console.error("Error fetching consumer groups:",f),[]}}},H={class:"page-flat"},R={class:"py-4 px-3"},O={class:"space-y-2.5"},Q={class:"filter-flat"},I={class:"flex flex-col sm:flex-row gap-3"},q={class:"flex-1"},J={key:1,class:"error-flat"},K={class:"grid grid-cols-2 lg:grid-cols-4 gap-2"},P={class:"metric-flat"},W={class:"flex items-start gap-3"},X={class:"flex-1"},Y={class:"metric-value-flat"},Z={class:"metric-flat"},$={class:"flex items-start gap-3"},tt={class:"flex-1"},et={class:"metric-value-flat"},st={class:"metric-flat"},at={class:"flex items-start gap-3"},ot={class:"flex-1"},lt={class:"metric-value-flat"},rt={class:"metric-flat"},nt={class:"flex items-start gap-3"},it={class:"flex-1"},ct={class:"metric-value-flat"},dt={class:"table-section"},ut={class:"table-container scrollbar-thin"},mt={class:"table"},pt={class:"font-medium text-gray-900 dark:text-gray-100"},vt={class:"text-xs text-gray-500 dark:text-gray-400 md:hidden"},gt={class:"hidden md:table-cell"},ft={class:"flex flex-wrap gap-1"},ht={key:0,class:"text-xs text-gray-500"},xt={class:"text-right font-medium"},_t={class:"text-right font-medium hidden lg:table-cell"},kt={class:"text-right font-medium"},bt={class:"text-right"},wt={key:0,class:"text-center py-12 text-gray-500 text-sm"},yt={__name:"ConsumerGroups",setup(f){const u=m(!1),c=m(null),o=m([]),n=m(""),r=m(""),h=_(()=>{let a=o.value;if(n.value){const e=n.value.toLowerCase();a=a.filter(s=>s.name.toLowerCase().includes(e)||s.topics.some(v=>v.toLowerCase().includes(e)))}return r.value&&(a=a.filter(e=>e.state===r.value)),a}),p=_(()=>{const a=o.value;return{activeGroups:a.filter(e=>e.state==="Stable").length,totalConsumers:a.reduce((e,s)=>e+s.members,0),totalTopics:new Set(a.flatMap(e=>e.topics)).size,avgLag:a.length>0?Math.round(a.reduce((e,s)=>e+s.totalLag,0)/a.length):0}});function M(){n.value="",r.value=""}async function x(){u.value=!0,c.value=null;try{const a=await U.getConsumerGroups();o.value=a}catch(a){c.value=a.message,console.error("Consumer groups error:",a)}finally{u.value=!1}}return L(()=>{x(),window.registerRefreshCallback&&window.registerRefreshCallback("/consumer-groups",x)}),S(()=>{window.registerRefreshCallback&&window.registerRefreshCallback("/consumer-groups",null)}),(a,e)=>(i(),d("div",H,[t("div",R,[t("div",O,[e[14]||(e[14]=G('<div class="info-banner" data-v-7c302ff9><div class="flex gap-3" data-v-7c302ff9><svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-7c302ff9><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" data-v-7c302ff9></path></svg><div class="text-sm" data-v-7c302ff9><p class="font-semibold mb-1" data-v-7c302ff9>Consumer Groups Overview</p><p class="text-purple-800 dark:text-purple-200" data-v-7c302ff9> Consumer groups enable multiple consumers to process messages in parallel without duplication. Each group maintains its own consumption cursor per partition. </p></div></div></div>',1)),t("div",Q,[t("div",I,[t("div",q,[k(t("input",{"onUpdate:modelValue":e[0]||(e[0]=s=>n.value=s),type:"text",placeholder:"Search consumer groups...",class:"input"},null,512),[[z,n.value]])]),k(t("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>r.value=s),class:"input sm:w-48"},[...e[2]||(e[2]=[t("option",{value:""},"All States",-1),t("option",{value:"Stable"},"Stable",-1),t("option",{value:"Lagging"},"Lagging",-1),t("option",{value:"Dead"},"Dead",-1)])],512),[[B,r.value]]),n.value||r.value?(i(),d("button",{key:0,onClick:M,class:"btn btn-secondary whitespace-nowrap"}," Clear Filters ")):g("",!0)])]),u.value&&!o.value.length?(i(),T(A,{key:0})):c.value?(i(),d("div",J,[t("p",null,[e[3]||(e[3]=t("strong",null,"Error loading consumer groups:",-1)),V(" "+l(c.value),1)])])):g("",!0),t("div",K,[t("div",P,[t("div",W,[e[5]||(e[5]=t("div",{class:"metric-icon-flat bg-green-500/10 dark:bg-green-500/20"},[t("svg",{class:"w-5 h-5 text-green-600 dark:text-green-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),t("div",X,[e[4]||(e[4]=t("p",{class:"metric-label"},"Active Groups",-1)),t("p",Y,l(p.value.activeGroups),1)])])]),t("div",Z,[t("div",$,[e[7]||(e[7]=t("div",{class:"metric-icon-flat bg-purple-500/10 dark:bg-purple-500/20"},[t("svg",{class:"w-5 h-5 text-purple-600 dark:text-purple-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})])],-1)),t("div",tt,[e[6]||(e[6]=t("p",{class:"metric-label"},"Total Consumers",-1)),t("p",et,l(p.value.totalConsumers),1)])])]),t("div",st,[t("div",at,[e[9]||(e[9]=t("div",{class:"metric-icon-flat bg-rose-500/10 dark:bg-rose-500/20"},[t("svg",{class:"w-5 h-5 text-rose-600 dark:text-rose-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"})])],-1)),t("div",ot,[e[8]||(e[8]=t("p",{class:"metric-label"},"Topics Monitored",-1)),t("p",lt,l(p.value.totalTopics),1)])])]),t("div",rt,[t("div",nt,[e[11]||(e[11]=t("div",{class:"metric-icon-flat bg-orange-500/10 dark:bg-orange-500/20"},[t("svg",{class:"w-5 h-5 text-orange-600 dark:text-orange-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 10V3L4 14h7v7l9-11h-7z"})])],-1)),t("div",it,[e[10]||(e[10]=t("p",{class:"metric-label"},"Avg Lag",-1)),t("p",ct,l(p.value.avgLag),1)])])])]),t("div",dt,[t("div",ut,[t("table",mt,[e[12]||(e[12]=t("thead",null,[t("tr",null,[t("th",null,"Consumer Group"),t("th",{class:"hidden md:table-cell"},"Topics"),t("th",{class:"text-right"},"Members"),t("th",{class:"text-right hidden lg:table-cell"},"Offset Lag"),t("th",{class:"text-right"},"Time Lag"),t("th",{class:"text-right"},"State")])],-1)),t("tbody",null,[(i(!0),d(b,null,w(h.value,s=>(i(),d("tr",{key:s.name},[t("td",null,[t("div",pt,l(s.name),1),t("div",vt,l(s.topics.length)+" topic"+l(s.topics.length!==1?"s":""),1)]),t("td",gt,[t("div",ft,[(i(!0),d(b,null,w(s.topics.slice(0,2),v=>(i(),d("span",{key:v,class:"badge badge-info text-xs"},l(v),1))),128)),s.topics.length>2?(i(),d("span",ht," +"+l(s.topics.length-2)+" more ",1)):g("",!0)])]),t("td",xt,l(s.members),1),t("td",_t,l(y(D)(s.totalLag)),1),t("td",kt,l(s.maxTimeLag>0?y(N)(s.maxTimeLag):"0ms"),1),t("td",bt,[E(F,{status:s.state},null,8,["status"])])]))),128))])]),!h.value.length&&!u.value?(i(),d("div",wt,[...e[13]||(e[13]=[t("svg",{class:"w-12 h-12 mx-auto mb-3 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})],-1),t("p",null,"No consumer groups found",-1),t("p",{class:"text-xs mt-2"},"Consumer groups are created automatically when consumers connect with a consumerGroup parameter.",-1)])])):g("",!0)])])])])]))}},St=j(yt,[["__scopeId","data-v-7c302ff9"]]);export{St as default};
@@ -0,0 +1 @@
1
+ .dashboard-flat[data-v-8919ef7d]{min-height:100%}.metric-flat[data-v-8919ef7d]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:.75rem;transition:all .3s ease}.dark .metric-flat[data-v-8919ef7d]{background:#0a0d14}.metric-flat[data-v-8919ef7d]:hover{background:#fafafa;transform:translateY(-2px)}.dark .metric-flat[data-v-8919ef7d]:hover{background:#101319}.metric-icon-flat[data-v-8919ef7d]{width:2rem;height:2rem;border-radius:.5rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .3s ease}.metric-flat:hover .metric-icon-flat[data-v-8919ef7d]{transform:scale(1.05)}.metric-value-flat[data-v-8919ef7d]{font-size:2rem;font-weight:700;line-height:1.1;margin-top:.25rem;background:linear-gradient(135deg,#f43f5e,#ec4899,#a855f7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.02em}.metric-value-flat-sm[data-v-8919ef7d]{font-size:1.5rem;font-weight:700;line-height:1.1;margin-top:.125rem;background:linear-gradient(135deg,#f43f5e,#ec4899,#a855f7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.02em}.chart-flat[data-v-8919ef7d]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem;transition:all .3s ease}.dark .chart-flat[data-v-8919ef7d]{background:#0a0d14}.chart-flat[data-v-8919ef7d]:hover{background:#fafafa}.dark .chart-flat[data-v-8919ef7d]:hover{background:#101319}.chart-area[data-v-8919ef7d]{border:none;box-shadow:none}.info-flat[data-v-8919ef7d]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem;transition:all .3s ease}.dark .info-flat[data-v-8919ef7d]{background:#0a0d14}.info-flat[data-v-8919ef7d]:hover{background:#fafafa}.dark .info-flat[data-v-8919ef7d]:hover{background:#101319}.table-flat[data-v-8919ef7d]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem;transition:all .3s ease}.dark .table-flat[data-v-8919ef7d]{background:#0a0d14}.table-flat[data-v-8919ef7d]:hover{background:#fafafa}.dark .table-flat[data-v-8919ef7d]:hover{background:#101319}.error-card[data-v-8919ef7d]{background:transparent;border:none;box-shadow:none;border-radius:.75rem;padding:1rem;color:#dc2626;font-size:.875rem}.dark .error-card[data-v-8919ef7d]{color:#fca5a5}.table-flat[data-v-8919ef7d] .table{border:none}.table-flat[data-v-8919ef7d] .table thead{background:none;border-bottom:1px solid rgba(0,0,0,.05)}.dark .table-flat[data-v-8919ef7d] .table thead{border-bottom:1px solid rgba(255,255,255,.05)}.table-flat[data-v-8919ef7d] .table tbody tr{border-color:#00000008}.dark .table-flat[data-v-8919ef7d] .table tbody tr{border-color:#ffffff08}.table-flat[data-v-8919ef7d] .table tbody tr:hover{background:#f43f5e08;box-shadow:none}.dark .table-flat[data-v-8919ef7d] .table tbody tr:hover{background:#f43f5e0d}
@@ -0,0 +1 @@
1
+ import{c as V,a as v,o as m,b as A,u as n,d as e,t as r,e as Q,f as T,F as q,r as H,g as C,h as O,i as U,j as P,k as S,l as B,m as F}from"./index-CUSnwYTH.js";import{r as E}from"./resources-Bs9U-ceF.js";import{a as W}from"./analytics-BapTekLM.js";import{q as G}from"./queues-BdUbxfBC.js";import{f as c,a as I,b as Z,_ as J,L as K}from"./LoadingSpinner-BPttXcbs.js";import{C as X,a as Y,L as ee,B as te,p as se,b as ae,c as oe,d as N,e as re}from"./colors-5z6Q_kUr.js";const de={class:"chart-container"},le={key:1,class:"flex items-center justify-center h-full text-gray-500 text-sm"},ne={__name:"ThroughputChart",props:{data:Object},setup(l){X.register(Y,ee,te,se,ae,oe);const x=l,s=V(()=>{var d,u;if(!((u=(d=x.data)==null?void 0:d.throughput)!=null&&u.length))return null;const o=[...x.data.throughput].reverse();return{labels:o.map(g=>new Date(g.timestamp).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})),datasets:[{label:"Ingested",data:o.map(g=>g.ingestedPerSecond),backgroundColor:a("rose"),borderColor:"transparent",borderWidth:0,borderRadius:4,barPercentage:.9,categoryPercentage:.95},{label:"Processed",data:o.map(g=>g.processedPerSecond),backgroundColor:a("purple"),borderColor:"transparent",borderWidth:0,borderRadius:4,barPercentage:.9,categoryPercentage:.95}]}});function a(o){return d=>{const u=d.chart,{ctx:g,chartArea:f}=u;if(!f)return o==="rose"?N.charts.ingested.border:N.charts.processed.border;const i=g.createLinearGradient(0,f.top,0,f.bottom);return o==="rose"?(i.addColorStop(0,"rgba(244, 63, 94, 0.9)"),i.addColorStop(1,"rgba(244, 63, 94, 0.5)")):o==="purple"&&(i.addColorStop(0,"rgba(168, 85, 247, 0.9)"),i.addColorStop(1,"rgba(168, 85, 247, 0.5)")),i}}const p={responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},scales:{x:{stacked:!1,grid:{display:!1},border:{display:!1},ticks:{maxRotation:0,autoSkipPadding:20,font:{size:10},color:"#9ca3af"}},y:{stacked:!1,beginAtZero:!0,border:{display:!1},grid:{display:!1},ticks:{font:{size:11},color:"#9ca3af",padding:8,callback:o=>o.toFixed(1)}}},plugins:{legend:{display:!0,position:"top",align:"end",labels:{boxWidth:12,boxHeight:12,padding:15,usePointStyle:!0,pointStyle:"circle",font:{size:12,weight:"500"},color:"#6b7280"}},tooltip:{enabled:!0,backgroundColor:"rgba(0, 0, 0, 0.9)",padding:12,cornerRadius:8,titleFont:{size:13,weight:"600"},bodyFont:{size:12},bodySpacing:6,usePointStyle:!0,callbacks:{title:o=>o[0].label,label:o=>` ${o.dataset.label}: ${o.parsed.y.toFixed(2)} msg/s`}}}};return(o,d)=>(m(),v("div",de,[s.value?(m(),A(n(re),{key:0,data:s.value,options:p},null,8,["data"])):(m(),v("div",le," No data available "))]))}},ie={class:"space-y-2.5"},ce={class:"flex items-center justify-between text-sm"},ue={class:"font-semibold"},ge={class:"flex items-center justify-between text-sm"},me={class:"font-semibold"},fe={class:"flex items-center justify-between text-sm"},pe={class:"font-semibold text-green-600 dark:text-green-400"},ve={class:"flex items-center justify-between text-sm"},xe={class:"font-semibold text-red-600 dark:text-red-400"},he={class:"flex items-center justify-between text-sm"},be={class:"font-semibold text-gray-600 dark:text-gray-400"},ye={class:"flex items-center justify-between text-sm pt-2 border-t border-gray-200 dark:border-gray-700"},ke={class:"font-semibold text-gray-500 dark:text-gray-400"},_e={__name:"MessageStatusCard",props:{data:Object,calculatedPending:{type:Number,default:0}},setup(l){return(x,s)=>{var a,p,o,d,u;return m(),v("div",null,[e("div",ie,[e("div",ce,[s[0]||(s[0]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Pending",-1)),e("span",ue,r(n(c)(l.calculatedPending)),1)]),e("div",ge,[s[1]||(s[1]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Processing",-1)),e("span",me,r(n(c)(((a=l.data)==null?void 0:a.processing)||0)),1)]),e("div",fe,[s[2]||(s[2]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Completed",-1)),e("span",pe,r(n(c)(((p=l.data)==null?void 0:p.completed)||0)),1)]),e("div",ve,[s[3]||(s[3]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Failed",-1)),e("span",xe,r(n(c)(((o=l.data)==null?void 0:o.failed)||0)),1)]),e("div",he,[s[4]||(s[4]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Dead Letter",-1)),e("span",be,r(n(c)(((d=l.data)==null?void 0:d.deadLetter)||0)),1)]),e("div",ye,[s[5]||(s[5]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Total in DB",-1)),e("span",ke,r(n(c)(((u=l.data)==null?void 0:u.total)||0)),1)])])])}}},we={class:"space-y-2.5"},$e={class:"flex items-center justify-between text-sm"},Ce={class:"font-semibold font-mono"},je={class:"flex items-center justify-between text-sm"},Me={class:"font-semibold font-mono"},Pe={class:"flex items-center justify-between text-sm"},Se={class:"font-semibold font-mono"},Be={class:"flex items-center justify-between text-sm"},Le={class:"font-semibold font-mono"},ze={class:"flex items-center justify-between text-sm"},Re={class:"font-semibold font-mono"},De={__name:"PerformanceCard",props:{data:Object},setup(l){return(x,s)=>{var a,p,o,d,u,g,f,i,t,b,y,k,_,h,w,$,j,M;return m(),v("div",null,[e("div",we,[e("div",$e,[s[0]||(s[0]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Requests/sec",-1)),e("span",Ce,r(((o=(p=(a=l.data)==null?void 0:a.requests)==null?void 0:p.rate)==null?void 0:o.toFixed(2))||"0.00"),1)]),e("div",je,[s[1]||(s[1]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Messages/sec",-1)),e("span",Me,r(((g=(u=(d=l.data)==null?void 0:d.messages)==null?void 0:u.rate)==null?void 0:g.toFixed(2))||"0.00"),1)]),e("div",Pe,[s[2]||(s[2]=e("span",{class:"text-gray-600 dark:text-gray-400"},"DB Connections",-1)),e("span",Se,r((((i=(f=l.data)==null?void 0:f.database)==null?void 0:i.poolSize)||0)-(((b=(t=l.data)==null?void 0:t.database)==null?void 0:b.idleConnections)||0))+"/"+r(((k=(y=l.data)==null?void 0:y.database)==null?void 0:k.poolSize)||0),1)]),e("div",Be,[s[3]||(s[3]=e("span",{class:"text-gray-600 dark:text-gray-400"},"Memory (Heap)",-1)),e("span",Le,r(n(I)(((h=(_=l.data)==null?void 0:_.memory)==null?void 0:h.heapUsed)||0)),1)]),e("div",ze,[s[4]||(s[4]=e("span",{class:"text-gray-600 dark:text-gray-400"},"CPU Time",-1)),e("span",Re,r(n(Z)((((($=(w=l.data)==null?void 0:w.cpu)==null?void 0:$.user)||0)+(((M=(j=l.data)==null?void 0:j.cpu)==null?void 0:M.system)||0))/1e3)),1)])])])}}},Te={class:"table-container scrollbar-thin"},Fe={class:"table"},Ne=["onClick"],Ve={class:"font-medium text-gray-900 dark:text-gray-100"},Ae={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},qe={class:"text-right font-medium"},Qe={class:"text-right font-medium hidden sm:table-cell"},He={class:"text-right font-medium text-green-600 dark:text-green-400"},Oe={key:0,class:"text-center py-8 text-gray-500 text-sm"},Ue={__name:"TopQueuesTable",props:{queues:Array},setup(l){const x=Q();function s(a){x.push(`/queues/${a}`)}return(a,p)=>{var o;return m(),v("div",Te,[e("table",Fe,[p[0]||(p[0]=e("thead",null,[e("tr",null,[e("th",null,"Queue Name"),e("th",{class:"text-right"},"Pending"),e("th",{class:"text-right hidden sm:table-cell"},"Processing"),e("th",{class:"text-right"},"Completed")])],-1)),e("tbody",null,[(m(!0),v(q,null,H(l.queues,d=>{var u,g,f;return m(),v("tr",{key:d.id,class:"cursor-pointer",onClick:i=>s(d.name)},[e("td",null,[e("div",Ve,r(d.name),1),d.namespace?(m(),v("div",Ae,r(d.namespace),1)):T("",!0)]),e("td",qe,r(n(c)(((u=d.messages)==null?void 0:u.pending)||0)),1),e("td",Qe,r(n(c)(((g=d.messages)==null?void 0:g.processing)||0)),1),e("td",He,r(n(c)(((f=d.messages)==null?void 0:f.total)||0)),1)],8,Ne)}),128))])]),(o=l.queues)!=null&&o.length?T("",!0):(m(),v("div",Oe," No queues available "))])}}},Ee={class:"dashboard-flat"},We={class:"py-4 px-3"},Ge={class:"space-y-2.5"},Ie={key:1,class:"error-card"},Ze={class:"grid grid-cols-2 lg:grid-cols-4 gap-2"},Je={class:"metric-flat"},Ke={class:"flex items-start gap-3"},Xe={class:"flex-1"},Ye={class:"metric-value-flat-sm"},et={class:"text-xs text-gray-500 dark:text-gray-400 mt-0.5"},tt={class:"font-semibold"},st={class:"metric-flat"},at={class:"flex items-start gap-3"},ot={class:"flex-1"},rt={class:"metric-value-flat-sm"},dt={class:"text-xs text-gray-500 dark:text-gray-400 mt-0.5"},lt={class:"font-semibold"},nt={class:"metric-flat"},it={class:"flex items-start gap-3"},ct={class:"flex-1"},ut={class:"metric-value-flat-sm text-green-600 dark:text-green-400"},gt={class:"text-xs text-gray-500 dark:text-gray-400 mt-0.5"},mt={class:"font-semibold"},ft={class:"metric-flat"},pt={class:"flex items-start gap-3"},vt={class:"flex-1"},xt={class:"metric-value-flat-sm text-red-600 dark:text-red-400"},ht={class:"text-xs text-gray-500 dark:text-gray-400 mt-0.5"},bt={class:"font-semibold"},yt={class:"chart-flat"},kt={class:"chart-area"},_t={class:"grid grid-cols-1 lg:grid-cols-2 gap-2"},wt={class:"info-flat"},$t={class:"info-flat"},Ct={class:"table-flat"},jt={__name:"Dashboard",setup(l){const x=C(!1),s=C(null),a=C(null),p=C(null),o=C(null),d=C(null),u=C([]),g=V(()=>{var h;if(!((h=a.value)!=null&&h.messages))return 0;const i=a.value.messages.total||0,t=a.value.messages.completed||0,b=a.value.messages.failed||0,y=a.value.messages.deadLetter||0,k=a.value.messages.processing||0,_=i-t-b-y-k;return Math.max(0,_)});async function f(){x.value=!0,s.value=null;try{const[i,t,b,y,k]=await Promise.all([E.getOverview(),F.getHealth(),F.getMetrics(),W.getStatus(),G.getQueues()]);a.value=i.data,p.value=t.data,o.value=b.data,d.value=y.data,u.value=k.data.queues.sort((_,h)=>{var w,$;return(((w=h.messages)==null?void 0:w.total)||0)-((($=_.messages)==null?void 0:$.total)||0)}).slice(0,5)}catch(i){s.value=i.message,console.error("Dashboard error:",i)}finally{x.value=!1}}return O(()=>{f(),window.registerRefreshCallback&&window.registerRefreshCallback("/",f)}),U(()=>{window.registerRefreshCallback&&window.registerRefreshCallback("/",null)}),(i,t)=>{var b,y,k,_,h,w,$,j,M,L,z,R,D;return m(),v("div",Ee,[e("div",We,[e("div",Ge,[x.value&&!a.value?(m(),A(K,{key:0})):s.value?(m(),v("div",Ie,[e("p",null,[t[0]||(t[0]=e("strong",null,"Error loading dashboard:",-1)),P(" "+r(s.value),1)])])):(m(),v(q,{key:2},[e("div",Ze,[e("div",Je,[e("div",Ke,[t[3]||(t[3]=e("div",{class:"metric-icon-flat bg-rose-500/10 dark:bg-rose-500/20"},[e("svg",{class:"w-5 h-5 text-rose-600 dark:text-rose-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6h16M4 10h16M4 14h16M4 18h16"})])],-1)),e("div",Xe,[t[2]||(t[2]=e("p",{class:"metric-label"},"Queues",-1)),e("p",Ye,r(n(c)(((b=a.value)==null?void 0:b.queues)||0)),1),e("p",et,[t[1]||(t[1]=P(" Partitions: ",-1)),e("span",tt,r(n(c)(((y=a.value)==null?void 0:y.partitions)||0)),1)])])])]),e("div",st,[e("div",at,[t[6]||(t[6]=e("div",{class:"metric-icon-flat bg-yellow-500/10 dark:bg-yellow-500/20"},[e("svg",{class:"w-5 h-5 text-yellow-600 dark:text-yellow-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e("div",ot,[t[5]||(t[5]=e("p",{class:"metric-label"},"Pending",-1)),e("p",rt,r(n(c)(g.value)),1),e("p",dt,[t[4]||(t[4]=P(" Processing: ",-1)),e("span",lt,r(n(c)(((_=(k=a.value)==null?void 0:k.messages)==null?void 0:_.processing)||0)),1)])])])]),e("div",nt,[e("div",it,[t[9]||(t[9]=e("div",{class:"metric-icon-flat bg-green-500/10 dark:bg-green-500/20"},[e("svg",{class:"w-5 h-5 text-green-600 dark:text-green-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e("div",ct,[t[8]||(t[8]=e("p",{class:"metric-label"},"Completed",-1)),e("p",ut,r(n(c)(((w=(h=a.value)==null?void 0:h.messages)==null?void 0:w.completed)||0)),1),e("p",gt,[t[7]||(t[7]=P(" Total in DB: ",-1)),e("span",mt,r(n(c)(((j=($=a.value)==null?void 0:$.messages)==null?void 0:j.total)||0)),1)])])])]),e("div",ft,[e("div",pt,[t[12]||(t[12]=e("div",{class:"metric-icon-flat bg-red-500/10 dark:bg-red-500/20"},[e("svg",{class:"w-5 h-5 text-red-600 dark:text-red-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})])],-1)),e("div",vt,[t[11]||(t[11]=e("p",{class:"metric-label"},"Failed",-1)),e("p",xt,r(n(c)(((L=(M=a.value)==null?void 0:M.messages)==null?void 0:L.failed)||0)),1),e("p",ht,[t[10]||(t[10]=P(" Dead Letter: ",-1)),e("span",bt,r(n(c)(((R=(z=a.value)==null?void 0:z.messages)==null?void 0:R.deadLetter)||0)),1)])])])])]),e("div",yt,[t[13]||(t[13]=S('<div class="flex items-center justify-between mb-4" data-v-8919ef7d><div class="flex items-center gap-2" data-v-8919ef7d><div class="w-8 h-8 rounded-lg bg-rose-500/10 dark:bg-rose-500/20 flex items-center justify-center" data-v-8919ef7d><svg class="w-5 h-5 text-rose-600 dark:text-rose-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-8919ef7d><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 12l3-3 3 3 4-4M8 21l4-4 4 4M3 4h18M4 4h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z" data-v-8919ef7d></path></svg></div><h3 class="text-sm font-semibold text-gray-900 dark:text-gray-100" data-v-8919ef7d>Message Throughput</h3></div><span class="text-xs text-gray-500 dark:text-gray-400 px-2.5 py-1 bg-gray-100 dark:bg-slate-700 rounded-full" data-v-8919ef7d> Last Hour </span></div>',1)),e("div",kt,[B(ne,{data:d.value},null,8,["data"])])]),e("div",_t,[e("div",wt,[t[14]||(t[14]=S('<div class="flex items-center gap-2 mb-2" data-v-8919ef7d><div class="w-7 h-7 rounded-lg bg-purple-500/10 dark:bg-purple-500/20 flex items-center justify-center" data-v-8919ef7d><svg class="w-4 h-4 text-purple-600 dark:text-purple-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-8919ef7d><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" data-v-8919ef7d></path></svg></div><h3 class="text-sm font-semibold" data-v-8919ef7d>Message Status</h3></div>',1)),B(_e,{data:(D=a.value)==null?void 0:D.messages,"calculated-pending":g.value},null,8,["data","calculated-pending"])]),e("div",$t,[t[15]||(t[15]=S('<div class="flex items-center gap-2 mb-2" data-v-8919ef7d><div class="w-7 h-7 rounded-lg bg-blue-500/10 dark:bg-blue-500/20 flex items-center justify-center" data-v-8919ef7d><svg class="w-4 h-4 text-blue-600 dark:text-blue-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-8919ef7d><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" data-v-8919ef7d></path></svg></div><h3 class="text-sm font-semibold" data-v-8919ef7d>System Performance</h3></div>',1)),B(De,{data:o.value},null,8,["data"])])]),e("div",Ct,[t[16]||(t[16]=S('<div class="flex items-center gap-2 mb-4" data-v-8919ef7d><div class="w-7 h-7 rounded-lg bg-indigo-500/10 dark:bg-indigo-500/20 flex items-center justify-center" data-v-8919ef7d><svg class="w-4 h-4 text-indigo-600 dark:text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-8919ef7d><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3" data-v-8919ef7d></path></svg></div><h3 class="text-sm font-semibold text-gray-900 dark:text-gray-100" data-v-8919ef7d>Top Queues by Activity</h3></div>',1)),B(Ue,{queues:u.value},null,8,["queues"])])],64))])])])}}},Rt=J(jt,[["__scopeId","data-v-8919ef7d"]]);export{Rt as default};
@@ -0,0 +1 @@
1
+ import{a as i,o as a,d as s}from"./index-CUSnwYTH.js";function h(t){return t>=1e6?(t/1e6).toFixed(1)+"M":t>=1e3?(t/1e3).toFixed(1)+"K":t.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function m(t){if(t===0)return"0 B";const o=1024,r=["B","KB","MB","GB"],e=Math.floor(Math.log(t)/Math.log(o));return parseFloat((t/Math.pow(o,e)).toFixed(2))+" "+r[e]}function g(t){if(t<1e3)return`${t}ms`;const o=Math.floor(t/1e3),r=Math.floor(o/60),e=Math.floor(r/60),n=Math.floor(e/24);return n>0?`${n}d ${e%24}h`:e>0?`${e}h ${r%60}m`:r>0?`${r}m ${o%60}s`:`${o}s`}function p(t){return new Date(t).toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function _(t){return new Date(t).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",second:"2-digit"})}const c=(t,o)=>{const r=t.__vccOpts||t;for(const[e,n]of o)r[e]=n;return r},f={},u={class:"flex items-center justify-center p-8"};function d(t,o){return a(),i("div",u,[...o[0]||(o[0]=[s("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-rose-600"},null,-1)])])}const B=c(f,[["render",d]]);export{B as L,c as _,m as a,g as b,p as c,_ as d,h as f};
@@ -0,0 +1 @@
1
+ .page-flat[data-v-fd217494]{min-height:100%}.warning-banner[data-v-fd217494]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem;border-left:3px solid rgba(245,158,11,.5)}.dark .warning-banner[data-v-fd217494]{background:#0a0d14;border-left-color:#f59e0bb3}.filter-flat[data-v-fd217494]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem}.dark .filter-flat[data-v-fd217494]{background:#0a0d14}.filter-flat[data-v-fd217494] .input{background:transparent;border:1px solid rgba(156,163,175,.15);transition:all .2s ease}.filter-flat[data-v-fd217494] .input:hover{border-color:#9ca3af40}.filter-flat[data-v-fd217494] .input:focus{background:#f43f5e05;border-color:#f43f5e66;box-shadow:0 0 0 3px #f43f5e0d}.dark .filter-flat[data-v-fd217494] .input{border-color:#9ca3af1a}.dark .filter-flat[data-v-fd217494] .input:focus{background:#f43f5e08;border-color:#f43f5e80;box-shadow:0 0 0 3px #f43f5e14}.table-flat[data-v-fd217494]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem 0}.dark .table-flat[data-v-fd217494]{background:#0a0d14}.table-flat[data-v-fd217494] .table{border-collapse:separate;border-spacing:0}.table-flat[data-v-fd217494] .table thead{background:transparent;border-bottom:1px solid rgba(156,163,175,.08)}.dark .table-flat[data-v-fd217494] .table thead{border-bottom-color:#9ca3af1a}.table-flat[data-v-fd217494] .table th{padding:1rem;font-weight:600;letter-spacing:.05em}.table-flat[data-v-fd217494] .table tbody tr{border:none;transition:all .15s ease}.table-flat[data-v-fd217494] .table tbody tr:nth-child(2n){background:#00000004}.dark .table-flat[data-v-fd217494] .table tbody tr:nth-child(2n){background:#ffffff05}.table-flat[data-v-fd217494] .table tbody tr:hover{background:#f43f5e08;box-shadow:inset 3px 0 #f43f5e99}.dark .table-flat[data-v-fd217494] .table tbody tr:hover{background:#f43f5e0d;box-shadow:inset 3px 0 #f43f5ecc}.table-flat[data-v-fd217494] .table td{padding:.875rem 1rem;border:none}.error-flat[data-v-fd217494]{background:transparent;color:#dc2626;font-size:.875rem;padding:1rem}.dark .error-flat[data-v-fd217494]{color:#fca5a5}
@@ -0,0 +1 @@
1
+ import{g as u,w as C,a as n,o as l,d as e,p as I,f as k,v as F,q as P,F as B,r as j,t as d,k as L,l as q,b as R,u as Q,j as A,s as H,h as O,i as z,x as E}from"./index-CUSnwYTH.js";import{m as M}from"./messages-CRV6E-xU.js";import{q as J}from"./queues-BdUbxfBC.js";import{L as T,c as G,_ as K,d as W}from"./LoadingSpinner-BPttXcbs.js";import{S as V}from"./StatusBadge-C6N84XmO.js";import{_ as X}from"./ConfirmDialog-YEoCdE7x.js";const Y={class:"flex flex-col sm:flex-row gap-3"},Z={class:"flex-1"},ee=["value"],te={__name:"MessageFilters",props:{search:String,queue:String,status:String,queues:Array},emits:["update:search","update:queue","update:status"],setup(h,{emit:$}){const f=h,c=$,i=u(f.search||""),y=u(f.queue||""),r=u(f.status||"");C(()=>f.search,x=>{i.value=x||""}),C(()=>f.queue,x=>{y.value=x||""}),C(()=>f.status,x=>{r.value=x||""});function m(){c("update:search",i.value)}function a(){c("update:queue",y.value)}function v(){c("update:status",r.value)}function w(){i.value="",y.value="",r.value="",c("update:search",""),c("update:queue",""),c("update:status","")}return(x,p)=>(l(),n("div",null,[e("div",Y,[e("div",Z,[I(e("input",{"onUpdate:modelValue":p[0]||(p[0]=g=>i.value=g),onInput:m,type:"text",placeholder:"Search by transaction ID...",class:"input font-mono text-xs"},null,544),[[F,i.value]])]),I(e("select",{"onUpdate:modelValue":p[1]||(p[1]=g=>y.value=g),onChange:a,class:"input sm:w-48"},[p[3]||(p[3]=e("option",{value:""},"All Queues",-1)),(l(!0),n(B,null,j(h.queues,g=>(l(),n("option",{key:g.id,value:g.name},d(g.name),9,ee))),128))],544),[[P,y.value]]),I(e("select",{"onUpdate:modelValue":p[2]||(p[2]=g=>r.value=g),onChange:v,class:"input sm:w-40"},[...p[4]||(p[4]=[L('<option value="">All Status</option><option value="pending">Pending</option><option value="processing">Processing</option><option value="completed">Completed</option><option value="dead_letter">Dead Letter</option>',5)])],544),[[P,r.value]]),i.value||y.value||r.value?(l(),n("button",{key:0,onClick:w,class:"btn btn-secondary whitespace-nowrap"}," Clear Filters ")):k("",!0)])]))}},se={class:"p-6"},ae={class:"flex items-start justify-between mb-6"},le={class:"flex-1 min-w-0"},oe={class:"text-xs font-mono text-gray-500 dark:text-gray-400 break-all"},ne={key:1,class:"text-sm text-red-600 dark:text-red-400"},re={class:"mb-6"},ue={class:"space-y-4 mb-6"},ie={class:"text-sm font-medium"},de={class:"text-sm"},ce={key:0},ve={class:"text-xs font-mono break-all"},ge={key:1},me={class:"text-sm text-red-600 dark:text-red-400"},pe={key:2},fe={class:"text-sm"},xe={class:"mb-6"},ye={class:"bg-gray-50 dark:bg-slate-900 rounded-lg p-4 overflow-x-auto scrollbar-thin"},ke={class:"text-xs font-mono"},be={class:"space-y-2"},he={key:0,class:"card bg-green-50 dark:bg-green-900/20 text-green-800 dark:text-green-200 text-sm"},we=["disabled"],_e=["disabled"],Ce=["disabled"],Me={key:0,class:"text-sm text-red-600 dark:text-red-400 mt-4"},$e={__name:"MessageDetailPanel",props:{isOpen:Boolean,message:Object},emits:["close","action-complete"],setup(h,{emit:$}){const f=h,c=$,i=u(!1),y=u(null),r=u(!1),m=u(null),a=u(null),v=u(!1);C(()=>f.message,async o=>{o&&await w()});async function w(){var o,t,s;if((o=f.message)!=null&&o.transactionId){i.value=!0,y.value=null;try{const b=await M.getMessage(f.message.transactionId);a.value=b.data}catch(b){y.value=((s=(t=b.response)==null?void 0:t.data)==null?void 0:s.error)||b.message}finally{i.value=!1}}}async function x(){var o,t;r.value=!0,m.value=null;try{await M.retryMessage(a.value.transactionId),c("action-complete"),_()}catch(s){m.value=((t=(o=s.response)==null?void 0:o.data)==null?void 0:t.error)||s.message}finally{r.value=!1}}async function p(){var o,t;r.value=!0,m.value=null;try{await M.moveToDLQ(a.value.transactionId),c("action-complete"),_()}catch(s){m.value=((t=(o=s.response)==null?void 0:o.data)==null?void 0:t.error)||s.message}finally{r.value=!1}}function g(){v.value=!0}async function D(){var o,t;r.value=!0,m.value=null,v.value=!1;try{await M.deleteMessage(a.value.transactionId),c("action-complete"),_()}catch(s){m.value=((t=(o=s.response)==null?void 0:o.data)==null?void 0:t.error)||s.message}finally{r.value=!1}}function _(){c("close"),a.value=null}return(o,t)=>{var s;return h.isOpen?(l(),n("div",{key:0,class:H(["fixed inset-y-0 right-0 w-full sm:w-[32rem] bg-white dark:bg-slate-800 shadow-2xl z-40 overflow-y-auto scrollbar-thin transform transition-all duration-300 border-l border-gray-200 dark:border-gray-700",h.isOpen?"translate-x-0":"translate-x-full"])},[h.isOpen?(l(),n("div",{key:0,class:"sm:hidden fixed inset-0 bg-black bg-opacity-50 backdrop-blur-sm -z-10 animate-fade-in",onClick:_})):k("",!0),e("div",se,[e("div",ae,[e("div",le,[t[1]||(t[1]=e("h3",{class:"text-lg font-bold mb-1"},"Message Details",-1)),e("p",oe,d((s=h.message)==null?void 0:s.transactionId),1)]),e("button",{onClick:_,class:"text-gray-400 hover:text-gray-600 p-1"},[...t[2]||(t[2]=[e("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])])]),i.value?(l(),R(T,{key:0})):y.value?(l(),n("div",ne,d(y.value),1)):a.value?(l(),n(B,{key:2},[e("div",re,[q(V,{status:a.value.status},null,8,["status"])]),e("div",ue,[e("div",null,[t[3]||(t[3]=e("label",{class:"text-xs text-gray-500 dark:text-gray-400 block mb-1"},"Queue",-1)),e("p",ie,d(a.value.queue)+" / "+d(a.value.partition),1)]),e("div",null,[t[4]||(t[4]=e("label",{class:"text-xs text-gray-500 dark:text-gray-400 block mb-1"},"Created",-1)),e("p",de,d(Q(G)(a.value.createdAt)),1)]),a.value.traceId?(l(),n("div",ce,[t[5]||(t[5]=e("label",{class:"text-xs text-gray-500 dark:text-gray-400 block mb-1"},"Trace ID",-1)),e("p",ve,d(a.value.traceId),1)])):k("",!0),a.value.errorMessage?(l(),n("div",ge,[t[6]||(t[6]=e("label",{class:"text-xs text-gray-500 dark:text-gray-400 block mb-1"},"Error Message",-1)),e("p",me,d(a.value.errorMessage),1)])):k("",!0),a.value.retryCount?(l(),n("div",pe,[t[7]||(t[7]=e("label",{class:"text-xs text-gray-500 dark:text-gray-400 block mb-1"},"Retry Count",-1)),e("p",fe,d(a.value.retryCount),1)])):k("",!0)]),e("div",xe,[t[8]||(t[8]=e("label",{class:"text-xs text-gray-500 dark:text-gray-400 block mb-2"},"Payload",-1)),e("div",ye,[e("pre",ke,d(JSON.stringify(a.value.payload,null,2)),1)])]),e("div",be,[a.value.status==="completed"?(l(),n("div",he,[...t[9]||(t[9]=[e("div",{class:"flex gap-2"},[e("svg",{class:"w-5 h-5 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})]),e("p",null,"This message has been successfully consumed and acknowledged.")],-1)])])):k("",!0),a.value.status==="dead_letter"?(l(),n("button",{key:1,onClick:x,disabled:r.value,class:"btn btn-primary w-full"},[...t[10]||(t[10]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),A(" Retry Message ",-1)])],8,we)):k("",!0),a.value.status==="pending"?(l(),n("button",{key:2,onClick:p,disabled:r.value,class:"btn btn-secondary w-full"}," Move to Dead Letter Queue ",8,_e)):k("",!0),e("button",{onClick:g,disabled:r.value,class:"btn btn-danger w-full"},[...t[11]||(t[11]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1),A(" Delete Message ",-1)])],8,Ce)]),m.value?(l(),n("div",Me,d(m.value),1)):k("",!0)],64)):k("",!0)]),q(X,{"is-open":v.value,title:"Delete Message",message:"Are you sure you want to delete this message? This action cannot be undone.","confirm-text":"Delete","confirm-class":"btn-danger",onConfirm:D,onCancel:t[0]||(t[0]=b=>v.value=!1)},null,8,["is-open"])],2)):k("",!0)}}},qe={class:"page-flat"},De={class:"py-4 px-3"},Ie={class:"space-y-2.5"},Se={key:0,class:"warning-banner"},Ae={class:"filter-flat"},Be={key:2,class:"error-flat"},Pe={key:3,class:"table-flat"},je={class:"table-container scrollbar-thin"},Le={class:"table"},Re=["onClick"],Qe={class:"font-mono text-xs"},Te={class:"text-xs text-gray-500 dark:text-gray-400 md:hidden"},Ve={class:"hidden md:table-cell"},Ne={class:"text-sm"},Ue={class:"hidden lg:table-cell"},Fe={class:"text-xs text-gray-600 dark:text-gray-400"},He={class:"text-right text-xs"},Oe={class:"text-right"},ze={key:0,class:"text-center py-12 text-gray-500 text-sm"},Ee={key:0,class:"flex items-center justify-between mt-4 pt-4 border-t border-gray-200/30 dark:border-gray-700/30"},Je={class:"text-sm text-gray-600 dark:text-gray-400"},Ge={class:"flex gap-2"},Ke=["disabled"],We=["disabled"],S=50,Xe={__name:"Messages",setup(h){const $=E(),f=u(!1),c=u(null),i=u([]),y=u([]),r=u(""),m=u(""),a=u(""),v=u(1),w=u(1),x=u(null),p=u(!1);C(()=>$.query.transactionId,o=>{if(o&&i.value.length){const t=i.value.find(s=>s.transactionId===o);t&&(x.value=t)}},{immediate:!0});async function g(){var o,t;f.value=!0,c.value=null,p.value=!1;try{const s=await J.getQueues();y.value=s.data.queues;const b={limit:S,offset:(v.value-1)*S};if(r.value)try{const U=await M.getMessage(r.value);i.value=[U.data],w.value=1;return}catch{}m.value&&(b.queue=m.value),a.value&&(b.status=a.value);const N=await M.getMessages(b);i.value=N.data.messages||[],w.value=i.value.length===S?v.value+1:v.value}catch(s){c.value=((t=(o=s.response)==null?void 0:o.data)==null?void 0:t.error)||s.message,c.value.includes("column m.status does not exist")&&(p.value=!0)}finally{f.value=!1}}function D(o){x.value=o}async function _(){x.value=null,await g()}return C([r,m,a],()=>{v.value=1,g()}),C(v,()=>{g()}),O(()=>{g(),window.registerRefreshCallback&&window.registerRefreshCallback("/messages",g)}),z(()=>{window.registerRefreshCallback&&window.registerRefreshCallback("/messages",null)}),(o,t)=>(l(),n("div",qe,[e("div",De,[e("div",Ie,[p.value?(l(),n("div",Se,[...t[6]||(t[6]=[L('<div class="flex gap-3" data-v-fd217494><svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-fd217494><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" data-v-fd217494></path></svg><div class="text-sm" data-v-fd217494><p class="font-semibold mb-1" data-v-fd217494>API Update Required</p><p class="text-yellow-800 dark:text-yellow-200" data-v-fd217494> The messages API has been fixed. Please restart the Queen server for changes to take effect. </p></div></div>',1)])])):k("",!0),e("div",Ae,[q(te,{search:r.value,"onUpdate:search":t[0]||(t[0]=s=>r.value=s),queue:m.value,"onUpdate:queue":t[1]||(t[1]=s=>m.value=s),status:a.value,"onUpdate:status":t[2]||(t[2]=s=>a.value=s),queues:y.value},null,8,["search","queue","status","queues"])]),f.value&&!i.value.length?(l(),R(T,{key:1})):c.value?(l(),n("div",Be,[e("p",null,[t[7]||(t[7]=e("strong",null,"Error loading messages:",-1)),A(" "+d(c.value),1)])])):(l(),n("div",Pe,[e("div",je,[e("table",Le,[t[8]||(t[8]=e("thead",null,[e("tr",null,[e("th",null,"Transaction ID"),e("th",{class:"hidden md:table-cell"},"Queue"),e("th",{class:"hidden lg:table-cell"},"Partition"),e("th",{class:"text-right"},"Created"),e("th",{class:"text-right"},"Status")])],-1)),e("tbody",null,[(l(!0),n(B,null,j(i.value,s=>(l(),n("tr",{key:s.id,class:"cursor-pointer",onClick:b=>D(s)},[e("td",null,[e("div",Qe,d(s.transactionId.substring(0,20))+"...",1),e("div",Te,d(s.queue),1)]),e("td",Ve,[e("div",Ne,d(s.queue),1)]),e("td",Ue,[e("span",Fe,d(s.partition),1)]),e("td",He,d(Q(W)(s.createdAt)),1),e("td",Oe,[q(V,{status:s.status,"show-dot":!1},null,8,["status"])])],8,Re))),128))])]),!i.value.length&&!f.value?(l(),n("div",ze,[...t[9]||(t[9]=[e("svg",{class:"w-12 h-12 mx-auto mb-3 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4"})],-1),e("p",null,"No messages found",-1)])])):k("",!0)]),w.value>1?(l(),n("div",Ee,[e("div",Je," Page "+d(v.value)+" of "+d(w.value),1),e("div",Ge,[e("button",{onClick:t[3]||(t[3]=s=>v.value--),disabled:v.value===1,class:"btn btn-secondary px-3 py-1.5"},[...t[10]||(t[10]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])],8,Ke),e("button",{onClick:t[4]||(t[4]=s=>v.value++),disabled:v.value===w.value,class:"btn btn-secondary px-3 py-1.5"},[...t[11]||(t[11]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)])],8,We)])])):k("",!0)]))])]),q($e,{"is-open":!!x.value,message:x.value,onClose:t[5]||(t[5]=s=>x.value=null),onActionComplete:_},null,8,["is-open","message"])]))}},lt=K(Xe,[["__scopeId","data-v-fd217494"]]);export{lt as default};
@@ -0,0 +1 @@
1
+ .page-flat[data-v-64020374]{min-height:100%}.header-section[data-v-64020374]{background:transparent;padding:0}.config-section[data-v-64020374]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem;transition:all .3s ease}.dark .config-section[data-v-64020374]{background:#0a0d14}.config-section[data-v-64020374]:hover{background:#fafafa}.dark .config-section[data-v-64020374]:hover{background:#0d1117}.partition-section[data-v-64020374]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem}.dark .partition-section[data-v-64020374]{background:#0a0d14}.partition-section[data-v-64020374] .input{background:transparent;border:1px solid rgba(156,163,175,.15);transition:all .2s ease}.partition-section[data-v-64020374] .input:hover{border-color:#9ca3af40}.partition-section[data-v-64020374] .input:focus{background:#f43f5e05;border-color:#f43f5e66;box-shadow:0 0 0 3px #f43f5e0d}.dark .partition-section[data-v-64020374] .input{border-color:#9ca3af1a}.dark .partition-section[data-v-64020374] .input:focus{background:#f43f5e08;border-color:#f43f5e80;box-shadow:0 0 0 3px #f43f5e14}.partition-section[data-v-64020374] .table{border-collapse:separate;border-spacing:0}.partition-section[data-v-64020374] .table thead{background:transparent;border-bottom:1px solid rgba(156,163,175,.08)}.dark .partition-section[data-v-64020374] .table thead{border-bottom-color:#9ca3af1a}.partition-section[data-v-64020374] .table th{padding:1rem;font-weight:600;letter-spacing:.05em}.partition-section[data-v-64020374] .table tbody tr{border:none;transition:all .15s ease}.partition-section[data-v-64020374] .table tbody tr:nth-child(2n){background:#00000004}.dark .partition-section[data-v-64020374] .table tbody tr:nth-child(2n){background:#ffffff05}.partition-section[data-v-64020374] .table tbody tr:hover{background:#f43f5e08;box-shadow:inset 3px 0 #f43f5e99}.dark .partition-section[data-v-64020374] .table tbody tr:hover{background:#f43f5e0d;box-shadow:inset 3px 0 #f43f5ecc}.partition-section[data-v-64020374] .table td{padding:.875rem 1rem;border:none}.metric-flat[data-v-64020374]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem;transition:all .3s ease}.dark .metric-flat[data-v-64020374]{background:#0a0d14}.metric-flat[data-v-64020374]:hover{background:#fafafa}.dark .metric-flat[data-v-64020374]:hover{background:#0d1117}.metric-icon-flat[data-v-64020374]{width:2rem;height:2rem;border-radius:.5rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .3s ease}.metric-flat:hover .metric-icon-flat[data-v-64020374]{transform:scale(1.05)}.metric-value-flat[data-v-64020374]{font-size:1.5rem;font-weight:700;line-height:1.1;margin-top:.125rem;background:linear-gradient(135deg,#f43f5e,#ec4899,#a855f7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.02em}.error-flat[data-v-64020374]{background:transparent;color:#dc2626;font-size:.875rem;padding:1rem}.dark .error-flat[data-v-64020374]{color:#fca5a5}
@@ -0,0 +1 @@
1
+ import{g as f,c as U,w as De,a as d,f as D,o as i,d as e,t as o,n as Le,p as $,v as B,x as Ne,h as Se,b as Qe,l as Ce,j as y,F as _e,u as m,k as Me,s as A,r as Ve,e as Te}from"./index-CUSnwYTH.js";import{q as je}from"./queues-BdUbxfBC.js";import{a as ze}from"./analytics-BapTekLM.js";import{_ as Ie,c as Ae,f as h,b as Oe,L as Re,d as Ue}from"./LoadingSpinner-BPttXcbs.js";import{_ as Fe}from"./ConfirmDialog-YEoCdE7x.js";import{m as Ee}from"./messages-CRV6E-xU.js";const Je={key:0,class:"fixed inset-0 z-50 overflow-y-auto"},He={class:"flex items-center justify-center min-h-screen px-4"},We={class:"relative bg-white dark:bg-slate-800 rounded-xl shadow-2xl max-w-2xl w-full p-6 animate-scale-in border border-gray-200 dark:border-gray-700"},Ye={class:"flex items-center justify-between mb-4"},Ge={class:"text-lg font-bold"},Ke={key:0,class:"text-xs text-red-600 mt-1"},Xe={class:"grid grid-cols-2 gap-3"},Ze={key:0,class:"text-sm text-red-600 dark:text-red-400"},et={class:"flex gap-3 pt-2"},tt=["disabled"],st={key:0},ot={key:1},at={__name:"PushMessageModal",props:{isOpen:Boolean,queueName:String},emits:["close","pushed"],setup(O,{emit:F}){const R=O,w=F,C=f(!1),x=f(null),a=f({partition:"Default",payload:"",ttl:null,priority:null,traceId:""}),l=U(()=>{if(!a.value.payload)return null;try{return JSON.parse(a.value.payload),null}catch{return"Invalid JSON format"}});De(()=>R.isOpen,b=>{b&&q()});function q(){a.value={partition:"Default",payload:"",ttl:null,priority:null,traceId:""},x.value=null}async function P(){var b,s;C.value=!0,x.value=null;try{const u=JSON.parse(a.value.payload),j={queue:R.queueName,partition:a.value.partition||"Default",payload:u};a.value.ttl&&(j.ttl=a.value.ttl),a.value.priority&&(j.priority=a.value.priority),a.value.traceId&&(j.traceId=a.value.traceId),await Ee.pushMessages({items:[j]}),w("pushed"),k()}catch(u){x.value=((s=(b=u.response)==null?void 0:b.data)==null?void 0:s.error)||u.message}finally{C.value=!1}}function k(){w("close")}return(b,s)=>O.isOpen?(i(),d("div",Je,[e("div",He,[e("div",{class:"fixed inset-0 bg-black bg-opacity-50 backdrop-blur-sm transition-opacity animate-fade-in",onClick:k}),e("div",We,[e("div",Ye,[e("h3",Ge,"Push Message to "+o(O.queueName),1),e("button",{onClick:k,class:"text-gray-400 hover:text-gray-600"},[...s[5]||(s[5]=[e("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])])]),e("form",{onSubmit:Le(P,["prevent"]),class:"space-y-4"},[e("div",null,[s[6]||(s[6]=e("label",{class:"block text-sm font-medium mb-1"},"Partition",-1)),$(e("input",{"onUpdate:modelValue":s[0]||(s[0]=u=>a.value.partition=u),type:"text",placeholder:"Default",class:"input"},null,512),[[B,a.value.partition]])]),e("div",null,[s[7]||(s[7]=e("label",{class:"block text-sm font-medium mb-1"},"Payload (JSON) *",-1)),$(e("textarea",{"onUpdate:modelValue":s[1]||(s[1]=u=>a.value.payload=u),rows:"10",placeholder:'{"key": "value", "message": "Hello World"}',class:"input font-mono text-xs",required:""},null,512),[[B,a.value.payload]]),l.value?(i(),d("p",Ke,o(l.value),1)):D("",!0)]),e("div",Xe,[e("div",null,[s[8]||(s[8]=e("label",{class:"block text-sm font-medium mb-1"},"TTL (seconds)",-1)),$(e("input",{"onUpdate:modelValue":s[2]||(s[2]=u=>a.value.ttl=u),type:"number",placeholder:"3600",class:"input"},null,512),[[B,a.value.ttl,void 0,{number:!0}]])]),e("div",null,[s[9]||(s[9]=e("label",{class:"block text-sm font-medium mb-1"},"Priority",-1)),$(e("input",{"onUpdate:modelValue":s[3]||(s[3]=u=>a.value.priority=u),type:"number",placeholder:"0",class:"input"},null,512),[[B,a.value.priority,void 0,{number:!0}]])])]),e("div",null,[s[10]||(s[10]=e("label",{class:"block text-sm font-medium mb-1"},"Trace ID (optional)",-1)),$(e("input",{"onUpdate:modelValue":s[4]||(s[4]=u=>a.value.traceId=u),type:"text",placeholder:"trace-id-for-distributed-tracing",class:"input"},null,512),[[B,a.value.traceId]])]),x.value?(i(),d("div",Ze,o(x.value),1)):D("",!0),e("div",et,[e("button",{type:"submit",disabled:C.value||!!l.value,class:"btn btn-primary flex-1"},[C.value?(i(),d("span",st,"Pushing...")):(i(),d("span",ot,"Push Message"))],8,tt),e("button",{type:"button",onClick:k,class:"btn btn-secondary"}," Cancel ")])],32)])])])):D("",!0)}},lt={class:"page-flat"},rt={class:"py-4 px-3"},nt={class:"space-y-2.5"},it={key:1,class:"error-flat"},dt={class:"header-section"},ut={class:"flex items-center justify-between mb-2"},ct={class:"flex items-center gap-3"},vt={class:"text-xl font-bold gradient-text"},mt={class:"flex gap-2"},pt={class:"flex flex-wrap gap-x-6 gap-y-1 text-sm text-gray-600 dark:text-gray-400 mb-1"},gt={class:"text-xs text-gray-500"},ft={class:"grid grid-cols-2 lg:grid-cols-4 gap-2"},xt={class:"metric-flat"},kt={class:"flex items-start gap-3"},yt={class:"flex-1"},bt={class:"metric-value-flat"},ht={class:"metric-flat"},wt={class:"flex items-start gap-3"},Ct={class:"flex-1"},_t={class:"metric-value-flat"},Mt={class:"metric-flat"},jt={class:"flex items-start gap-3"},qt={class:"flex-1"},Pt={class:"metric-value-flat text-green-600 dark:text-green-400"},$t={class:"metric-flat"},Bt={class:"flex items-start gap-3"},Dt={class:"flex-1"},Lt={class:"metric-value-flat text-red-600 dark:text-red-400"},Nt={class:"config-section"},St={class:"grid grid-cols-2 md:grid-cols-3 gap-x-6 gap-y-3 text-sm"},Qt={class:"font-semibold"},Vt={class:"font-semibold"},Tt={class:"font-semibold"},zt={class:"font-semibold"},It={class:"font-semibold"},At={class:"font-semibold"},Ot={class:"partition-section"},Rt={class:"flex items-center justify-between mb-2"},Ut={class:"table-container scrollbar-thin"},Ft={class:"table"},Et={class:"flex items-center gap-1"},Jt={class:"flex items-center justify-end gap-1"},Ht={class:"flex items-center justify-end gap-1"},Wt={class:"flex items-center justify-end gap-1"},Yt={class:"flex items-center justify-end gap-1"},Gt={class:"font-medium"},Kt={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},Xt={class:"text-right font-medium"},Zt={class:"text-right font-medium"},es={class:"text-right font-medium text-green-600 dark:text-green-400"},ts={class:"text-right font-medium text-red-600 dark:text-red-400"},ss={class:"text-right"},os={class:"text-sm"},as={class:"text-xs text-gray-500 dark:text-gray-400"},ls={key:0,class:"text-center py-8 text-gray-500 text-sm"},rs={__name:"QueueDetail",setup(O){const F=Ne(),R=Te(),w=U(()=>F.params.queueName),C=f(!1),x=f(null),a=f(null),l=f(null),q=f(""),P=f("name"),k=f("asc"),b=f(!1),s=f(!1),u=U(()=>{var c,v,_,M;if(!((v=(c=l.value)==null?void 0:c.totals)!=null&&v.messages))return 0;const n=((M=(_=a.value)==null?void 0:_.totals)==null?void 0:M.total)||0,t=l.value.totals.messages.completed||0,p=l.value.totals.messages.failed||0,g=l.value.totals.messages.processing||0;return Math.max(0,n-t-p-g)}),j=U(()=>{var t;let n=((t=l.value)==null?void 0:t.partitions)||[];if(q.value){const p=q.value.toLowerCase();n=n.filter(g=>g.name.toLowerCase().includes(p))}return[...n].sort((p,g)=>{var _,M,S,Q,V,T,z,I;let c,v;switch(P.value){case"name":c=p.name.toLowerCase(),v=g.name.toLowerCase();break;case"pending":c=((_=p.messages)==null?void 0:_.pending)||0,v=((M=g.messages)==null?void 0:M.pending)||0;break;case"processing":c=((S=p.messages)==null?void 0:S.processing)||0,v=((Q=g.messages)==null?void 0:Q.processing)||0;break;case"completed":c=((V=p.messages)==null?void 0:V.completed)||0,v=((T=g.messages)==null?void 0:T.completed)||0;break;case"failed":c=((z=p.messages)==null?void 0:z.failed)||0,v=((I=g.messages)==null?void 0:I.failed)||0;break;default:return 0}return c<v?k.value==="asc"?-1:1:c>v?k.value==="asc"?1:-1:0})});function L(n){P.value===n?k.value=k.value==="asc"?"desc":"asc":(P.value=n,k.value="asc")}function N(n){return P.value!==n?"opacity-30":k.value==="asc"?"":"rotate-180"}function qe(){R.push("/queues")}async function E(){C.value=!0,x.value=null;try{const[n,t]=await Promise.all([je.getQueue(w.value),ze.getQueueDetail(w.value)]);a.value=n.data,l.value=t.data}catch(n){x.value=n.message,console.error("Queue detail error:",n)}finally{C.value=!1}}function Pe(){s.value=!0}async function $e(){try{await je.clearQueue(w.value),s.value=!1,await E()}catch(n){x.value=n.message}}async function Be(){await E()}return Se(()=>{E()}),(n,t)=>{var p,g,c,v,_,M,S,Q,V,T,z,I,J,H,W,Y,G,K,X,Z,ee,te,se,oe,ae,le,re,ne,ie,de,ue,ce,ve,me,pe,ge,fe;return i(),d("div",lt,[e("div",rt,[e("div",nt,[C.value&&!a.value?(i(),Qe(Re,{key:0})):x.value?(i(),d("div",it,[e("p",null,[t[9]||(t[9]=e("strong",null,"Error loading queue:",-1)),y(" "+o(x.value),1)])])):a.value?(i(),d(_e,{key:2},[e("div",dt,[e("div",ut,[e("div",ct,[e("button",{onClick:qe,class:"p-1.5 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg transition-colors"},[...t[10]||(t[10]=[e("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 19l-7-7m0 0l7-7m-7 7h18"})],-1)])]),e("h2",vt,o((g=(p=l.value)==null?void 0:p.queue)==null?void 0:g.name),1)]),e("div",mt,[e("button",{onClick:t[0]||(t[0]=r=>b.value=!0),class:"btn btn-primary"},[...t[11]||(t[11]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),y(" Push Message ",-1)])]),e("button",{onClick:Pe,class:"btn btn-secondary"},[...t[12]||(t[12]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1),y(" Clear Queue ",-1)])])])]),e("div",pt,[e("span",null,[t[13]||(t[13]=e("span",{class:"text-gray-500 dark:text-gray-500"},"Namespace:",-1)),y(" "+o(((v=(c=l.value)==null?void 0:c.queue)==null?void 0:v.namespace)||"-"),1)]),e("span",null,[t[14]||(t[14]=e("span",{class:"text-gray-500 dark:text-gray-500"},"Task:",-1)),y(" "+o(((M=(_=l.value)==null?void 0:_.queue)==null?void 0:M.task)||"-"),1)]),e("span",null,[t[15]||(t[15]=e("span",{class:"text-gray-500 dark:text-gray-500"},"Priority:",-1)),y(" "+o(((Q=(S=l.value)==null?void 0:S.queue)==null?void 0:Q.priority)||0),1)]),e("span",gt,"Created: "+o(m(Ae)((T=(V=l.value)==null?void 0:V.queue)==null?void 0:T.createdAt)),1)])]),e("div",ft,[e("div",xt,[e("div",kt,[t[17]||(t[17]=e("div",{class:"metric-icon-flat bg-yellow-500/10 dark:bg-yellow-500/20"},[e("svg",{class:"w-5 h-5 text-yellow-600 dark:text-yellow-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e("div",yt,[t[16]||(t[16]=e("p",{class:"metric-label"},"Pending",-1)),e("p",bt,o(m(h)(u.value)),1)])])]),e("div",ht,[e("div",wt,[t[19]||(t[19]=e("div",{class:"metric-icon-flat bg-purple-500/10 dark:bg-purple-500/20"},[e("svg",{class:"w-5 h-5 text-purple-600 dark:text-purple-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4v.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e("div",Ct,[t[18]||(t[18]=e("p",{class:"metric-label"},"Processing",-1)),e("p",_t,o(m(h)(((J=(I=(z=l.value)==null?void 0:z.totals)==null?void 0:I.messages)==null?void 0:J.processing)||0)),1)])])]),e("div",Mt,[e("div",jt,[t[21]||(t[21]=e("div",{class:"metric-icon-flat bg-green-500/10 dark:bg-green-500/20"},[e("svg",{class:"w-5 h-5 text-green-600 dark:text-green-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e("div",qt,[t[20]||(t[20]=e("p",{class:"metric-label"},"Completed",-1)),e("p",Pt,o(m(h)(((Y=(W=(H=l.value)==null?void 0:H.totals)==null?void 0:W.messages)==null?void 0:Y.completed)||0)),1)])])]),e("div",$t,[e("div",Bt,[t[23]||(t[23]=e("div",{class:"metric-icon-flat bg-red-500/10 dark:bg-red-500/20"},[e("svg",{class:"w-5 h-5 text-red-600 dark:text-red-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})])],-1)),e("div",Dt,[t[22]||(t[22]=e("p",{class:"metric-label"},"Failed",-1)),e("p",Lt,o(m(h)(((X=(K=(G=l.value)==null?void 0:G.totals)==null?void 0:K.messages)==null?void 0:X.failed)||0)),1)])])])]),e("div",Nt,[t[30]||(t[30]=Me('<div class="flex items-center gap-2 mb-3" data-v-64020374><div class="w-7 h-7 rounded-lg bg-gradient-to-br from-blue-500/10 to-cyan-500/20 flex items-center justify-center" data-v-64020374><svg class="w-4 h-4 text-blue-600 dark:text-blue-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-64020374><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" data-v-64020374></path><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" data-v-64020374></path></svg></div><h3 class="text-base font-semibold text-gray-900 dark:text-gray-100" data-v-64020374>Queue Configuration</h3></div>',1)),e("div",St,[e("div",null,[t[24]||(t[24]=e("span",{class:"text-gray-500 dark:text-gray-400 block mb-0.5"},"Lease Time",-1)),e("span",Qt,o(((te=(ee=(Z=l.value)==null?void 0:Z.queue)==null?void 0:ee.config)==null?void 0:te.leaseTime)||0)+"s",1)]),e("div",null,[t[25]||(t[25]=e("span",{class:"text-gray-500 dark:text-gray-400 block mb-0.5"},"TTL",-1)),e("span",Vt,o(m(Oe)((((ae=(oe=(se=l.value)==null?void 0:se.queue)==null?void 0:oe.config)==null?void 0:ae.ttl)||0)*1e3)),1)]),e("div",null,[t[26]||(t[26]=e("span",{class:"text-gray-500 dark:text-gray-400 block mb-0.5"},"Max Queue Size",-1)),e("span",Tt,o(m(h)(((ne=(re=(le=l.value)==null?void 0:le.queue)==null?void 0:re.config)==null?void 0:ne.maxQueueSize)||0)),1)]),e("div",null,[t[27]||(t[27]=e("span",{class:"text-gray-500 dark:text-gray-400 block mb-0.5"},"Retry Limit",-1)),e("span",zt,o(((ue=(de=(ie=l.value)==null?void 0:ie.queue)==null?void 0:de.config)==null?void 0:ue.retryLimit)||0),1)]),e("div",null,[t[28]||(t[28]=e("span",{class:"text-gray-500 dark:text-gray-400 block mb-0.5"},"Retry Delay",-1)),e("span",It,o(((me=(ve=(ce=l.value)==null?void 0:ce.queue)==null?void 0:ve.config)==null?void 0:me.retryDelay)||0)+"ms",1)]),e("div",null,[t[29]||(t[29]=e("span",{class:"text-gray-500 dark:text-gray-400 block mb-0.5"},"DLQ Enabled",-1)),e("span",At,o((fe=(ge=(pe=l.value)==null?void 0:pe.queue)==null?void 0:ge.config)!=null&&fe.deadLetterQueue?"Yes":"No"),1)])])]),e("div",Ot,[e("div",Rt,[t[31]||(t[31]=Me('<div class="flex items-center gap-2" data-v-64020374><div class="w-7 h-7 rounded-lg bg-gradient-to-br from-indigo-500/10 to-violet-500/20 flex items-center justify-center" data-v-64020374><svg class="w-4 h-4 text-indigo-600 dark:text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-64020374><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4" data-v-64020374></path></svg></div><h3 class="text-base font-semibold text-gray-900 dark:text-gray-100" data-v-64020374>Partitions</h3></div>',1)),$(e("input",{"onUpdate:modelValue":t[1]||(t[1]=r=>q.value=r),type:"text",placeholder:"Search partitions...",class:"input w-48"},null,512),[[B,q.value]])]),e("div",Ut,[e("table",Ft,[e("thead",null,[e("tr",null,[e("th",{onClick:t[2]||(t[2]=r=>L("name")),class:"cursor-pointer hover:text-rose-600 dark:hover:text-rose-400 transition-colors"},[e("div",Et,[t[33]||(t[33]=y(" Partition ",-1)),(i(),d("svg",{class:A(["w-3 h-3 transition-transform",N("name")]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...t[32]||(t[32]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))])]),e("th",{onClick:t[3]||(t[3]=r=>L("pending")),class:"text-right cursor-pointer hover:text-rose-600 dark:hover:text-rose-400 transition-colors"},[e("div",Jt,[t[35]||(t[35]=y(" Pending ",-1)),(i(),d("svg",{class:A(["w-3 h-3 transition-transform",N("pending")]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...t[34]||(t[34]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))])]),e("th",{onClick:t[4]||(t[4]=r=>L("processing")),class:"text-right cursor-pointer hover:text-rose-600 dark:hover:text-rose-400 transition-colors"},[e("div",Ht,[t[37]||(t[37]=y(" Processing ",-1)),(i(),d("svg",{class:A(["w-3 h-3 transition-transform",N("processing")]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...t[36]||(t[36]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))])]),e("th",{onClick:t[5]||(t[5]=r=>L("completed")),class:"text-right cursor-pointer hover:text-rose-600 dark:hover:text-rose-400 transition-colors"},[e("div",Wt,[t[39]||(t[39]=y(" Completed ",-1)),(i(),d("svg",{class:A(["w-3 h-3 transition-transform",N("completed")]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...t[38]||(t[38]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))])]),e("th",{onClick:t[6]||(t[6]=r=>L("failed")),class:"text-right cursor-pointer hover:text-rose-600 dark:hover:text-rose-400 transition-colors"},[e("div",Yt,[t[41]||(t[41]=y(" Failed ",-1)),(i(),d("svg",{class:A(["w-3 h-3 transition-transform",N("failed")]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...t[40]||(t[40]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))])]),t[42]||(t[42]=e("th",{class:"text-right"},"Consumed",-1))])]),e("tbody",null,[(i(!0),d(_e,null,Ve(j.value,r=>{var xe,ke,ye,be,he,we;return i(),d("tr",{key:r.id},[e("td",null,[e("div",Gt,o(r.name),1),r.lastActivity?(i(),d("div",Kt," Last: "+o(m(Ue)(r.lastActivity)),1)):D("",!0)]),e("td",Xt,o(m(h)(((xe=r.messages)==null?void 0:xe.pending)||0)),1),e("td",Zt,o(m(h)(((ke=r.messages)==null?void 0:ke.processing)||0)),1),e("td",es,o(m(h)(((ye=r.messages)==null?void 0:ye.completed)||0)),1),e("td",ts,o(m(h)(((be=r.messages)==null?void 0:be.failed)||0)),1),e("td",ss,[e("div",os,o(m(h)(((he=r.cursor)==null?void 0:he.totalConsumed)||0)),1),e("div",as,o(((we=r.cursor)==null?void 0:we.batchesConsumed)||0)+" batches ",1)])])}),128))])]),j.value.length?D("",!0):(i(),d("div",ls," No partitions found "))])])],64)):D("",!0),Ce(at,{"is-open":b.value,"queue-name":w.value,onClose:t[7]||(t[7]=r=>b.value=!1),onPushed:Be},null,8,["is-open","queue-name"]),Ce(Fe,{"is-open":s.value,title:"Clear Queue",message:`Are you sure you want to clear all messages from '${w.value}'? This action cannot be undone.`,"confirm-text":"Clear Queue","confirm-class":"btn-danger",onConfirm:$e,onCancel:t[8]||(t[8]=r=>s.value=!1)},null,8,["is-open","message"])])])])}}},ms=Ie(rs,[["__scopeId","data-v-64020374"]]);export{ms as default};
@@ -0,0 +1 @@
1
+ .page-flat[data-v-c45c4315]{min-height:100%}.filter-flat[data-v-c45c4315]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:1rem}.dark .filter-flat[data-v-c45c4315]{background:#0a0d14}.filter-flat[data-v-c45c4315] .input{background:transparent;border:1px solid rgba(156,163,175,.15);transition:all .2s ease}.filter-flat[data-v-c45c4315] .input:hover{border-color:#9ca3af40}.filter-flat[data-v-c45c4315] .input:focus{background:#f43f5e05;border-color:#f43f5e66;box-shadow:0 0 0 3px #f43f5e0d}.dark .filter-flat[data-v-c45c4315] .input{border-color:#9ca3af1a}.dark .filter-flat[data-v-c45c4315] .input:hover{border-color:#9ca3af33}.dark .filter-flat[data-v-c45c4315] .input:focus{background:#f43f5e08;border-color:#f43f5e80;box-shadow:0 0 0 3px #f43f5e14}.table-flat[data-v-c45c4315]{background:#fff;border:none;box-shadow:none;border-radius:.75rem;padding:0}.dark .table-flat[data-v-c45c4315]{background:#0a0d14}.table-flat[data-v-c45c4315] .table{border-collapse:separate;border-spacing:0}.table-flat[data-v-c45c4315] .table thead{background:transparent;border-bottom:1px solid rgba(156,163,175,.08)}.dark .table-flat[data-v-c45c4315] .table thead{border-bottom-color:#9ca3af1a}.table-flat[data-v-c45c4315] .table th{padding:1rem;font-weight:600;letter-spacing:.05em}.table-flat[data-v-c45c4315] .table tbody tr{border:none;transition:all .15s ease}.table-flat[data-v-c45c4315] .table tbody tr:nth-child(2n){background:#00000004}.dark .table-flat[data-v-c45c4315] .table tbody tr:nth-child(2n){background:#ffffff05}.table-flat[data-v-c45c4315] .table tbody tr:hover{background:#f43f5e08;box-shadow:inset 3px 0 #f43f5e99}.dark .table-flat[data-v-c45c4315] .table tbody tr:hover{background:#f43f5e0d;box-shadow:inset 3px 0 #f43f5ecc}.table-flat[data-v-c45c4315] .table td{padding:.875rem 1rem;border:none}.error-flat[data-v-c45c4315]{background:transparent;border:none;box-shadow:none;border-radius:.75rem;padding:1rem;color:#dc2626;font-size:.875rem}.dark .error-flat[data-v-c45c4315]{color:#fca5a5}
@@ -0,0 +1 @@
1
+ import{g as d,w as le,a as i,f as M,o as r,d as e,n as Y,p as f,v as y,t as u,c as S,h as ae,i as re,b as ie,l as K,q as ue,F as W,r as X,j as w,s as Q,e as de,u as A}from"./index-CUSnwYTH.js";import{q as _}from"./queues-BdUbxfBC.js";import{r as pe}from"./resources-Bs9U-ceF.js";import{_ as ve,L as me,f as R}from"./LoadingSpinner-BPttXcbs.js";import{_ as ce}from"./ConfirmDialog-YEoCdE7x.js";const fe={key:0,class:"fixed inset-0 z-50 overflow-y-auto"},ke={class:"flex items-center justify-center min-h-screen px-4"},ge={class:"relative bg-white dark:bg-slate-800 rounded-xl shadow-2xl max-w-md w-full p-6 animate-scale-in border border-gray-200 dark:border-gray-700"},xe={class:"grid grid-cols-2 gap-3"},be={class:"grid grid-cols-2 gap-3"},ye={key:0,class:"text-sm text-red-600 dark:text-red-400"},we={class:"flex gap-3 pt-2"},he=["disabled"],Ce={key:0},$e={key:1},Qe={__name:"CreateQueueModal",props:{isOpen:Boolean},emits:["close","created"],setup(P,{emit:U}){const j=P,k=U,g=d(!1),x=d(null),n=d({queue:"",partition:"Default",ttl:3600,priority:0,namespace:"",task:"",maxQueueSize:1e4});le(()=>j.isOpen,p=>{p&&b()});function b(){n.value={queue:"",partition:"Default",ttl:3600,priority:0,namespace:"",task:"",maxQueueSize:1e4},x.value=null}async function h(){var p,o;g.value=!0,x.value=null;try{const l={queue:n.value.queue,partition:n.value.partition||"Default",ttl:n.value.ttl,priority:n.value.priority,maxQueueSize:n.value.maxQueueSize};n.value.namespace&&(l.namespace=n.value.namespace),n.value.task&&(l.task=n.value.task),await _.configureQueue(l),k("created"),m()}catch(l){x.value=((o=(p=l.response)==null?void 0:p.data)==null?void 0:o.error)||l.message}finally{g.value=!1}}function m(){k("close")}return(p,o)=>P.isOpen?(r(),i("div",fe,[e("div",ke,[e("div",{class:"fixed inset-0 bg-black bg-opacity-50 backdrop-blur-sm transition-opacity animate-fade-in",onClick:m}),e("div",ge,[e("div",{class:"flex items-center justify-between mb-4"},[o[8]||(o[8]=e("h3",{class:"text-lg font-bold"},"Create New Queue",-1)),e("button",{onClick:m,class:"text-gray-400 hover:text-gray-600"},[...o[7]||(o[7]=[e("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])])]),e("form",{onSubmit:Y(h,["prevent"]),class:"space-y-4"},[e("div",null,[o[9]||(o[9]=e("label",{class:"block text-sm font-medium mb-1"},"Queue Name *",-1)),f(e("input",{"onUpdate:modelValue":o[0]||(o[0]=l=>n.value.queue=l),type:"text",required:"",placeholder:"my-queue",class:"input"},null,512),[[y,n.value.queue]])]),e("div",null,[o[10]||(o[10]=e("label",{class:"block text-sm font-medium mb-1"},"Partition",-1)),f(e("input",{"onUpdate:modelValue":o[1]||(o[1]=l=>n.value.partition=l),type:"text",placeholder:"Default",class:"input"},null,512),[[y,n.value.partition]])]),e("div",xe,[e("div",null,[o[11]||(o[11]=e("label",{class:"block text-sm font-medium mb-1"},"TTL (seconds)",-1)),f(e("input",{"onUpdate:modelValue":o[2]||(o[2]=l=>n.value.ttl=l),type:"number",placeholder:"3600",class:"input"},null,512),[[y,n.value.ttl,void 0,{number:!0}]])]),e("div",null,[o[12]||(o[12]=e("label",{class:"block text-sm font-medium mb-1"},"Priority",-1)),f(e("input",{"onUpdate:modelValue":o[3]||(o[3]=l=>n.value.priority=l),type:"number",min:"0",max:"100",placeholder:"0",class:"input"},null,512),[[y,n.value.priority,void 0,{number:!0}]])])]),e("div",be,[e("div",null,[o[13]||(o[13]=e("label",{class:"block text-sm font-medium mb-1"},"Namespace",-1)),f(e("input",{"onUpdate:modelValue":o[4]||(o[4]=l=>n.value.namespace=l),type:"text",placeholder:"optional",class:"input"},null,512),[[y,n.value.namespace]])]),e("div",null,[o[14]||(o[14]=e("label",{class:"block text-sm font-medium mb-1"},"Task",-1)),f(e("input",{"onUpdate:modelValue":o[5]||(o[5]=l=>n.value.task=l),type:"text",placeholder:"optional",class:"input"},null,512),[[y,n.value.task]])])]),e("div",null,[o[15]||(o[15]=e("label",{class:"block text-sm font-medium mb-1"},"Max Queue Size",-1)),f(e("input",{"onUpdate:modelValue":o[6]||(o[6]=l=>n.value.maxQueueSize=l),type:"number",placeholder:"10000",class:"input"},null,512),[[y,n.value.maxQueueSize,void 0,{number:!0}]])]),x.value?(r(),i("div",ye,u(x.value),1)):M("",!0),e("div",we,[e("button",{type:"submit",disabled:g.value,class:"btn btn-primary flex-1"},[g.value?(r(),i("span",Ce,"Creating...")):(r(),i("span",$e,"Create Queue"))],8,he),e("button",{type:"button",onClick:m,class:"btn btn-secondary"}," Cancel ")])],32)])])])):M("",!0)}},Me={class:"page-flat"},je={class:"py-4 px-3"},Be={class:"space-y-2.5"},Ve={class:"filter-flat"},De={class:"flex flex-col sm:flex-row gap-3"},Ne={class:"flex-1"},Se=["value"],Le={key:1,class:"error-flat"},qe={key:2,class:"table-flat"},Pe={class:"table-container scrollbar-thin"},Ue={class:"table"},ze={class:"flex items-center gap-1"},Te={class:"flex items-center gap-1"},Ae={class:"flex items-center justify-end gap-1"},Re={class:"flex items-center justify-end gap-1"},Fe={class:"flex items-center justify-end gap-1"},_e={class:"flex items-center justify-end gap-1"},He=["onClick"],Ie={class:"font-medium text-gray-900 dark:text-gray-100"},Oe={key:0,class:"text-xs text-gray-500 dark:text-gray-400 md:hidden"},Ee={class:"hidden md:table-cell"},Ge={key:0,class:"badge badge-info"},Je={key:1,class:"text-gray-400"},Ke={class:"text-right font-medium"},We={class:"text-right font-medium"},Xe={class:"text-right font-medium hidden sm:table-cell"},Ye={class:"text-right font-medium"},Ze=["onClick"],et={key:0,class:"text-center py-12 text-gray-500 text-sm"},tt={key:0,class:"flex items-center justify-between mt-4 pt-4 border-t border-gray-200/30 dark:border-gray-700/30"},st={class:"text-sm text-gray-600 dark:text-gray-400"},ot={class:"flex gap-2"},nt=["disabled"],lt={class:"px-3 py-1.5 text-sm"},at=["disabled"],F=20,rt={__name:"Queues",setup(P){const U=de(),j=d(!1),k=d(null),g=d([]),x=d([]),n=d(""),b=d(""),h=d("name"),m=d("asc"),p=d(1),o=d(!1),l=d(!1),B=d(null),V=S(()=>{let a=g.value;if(n.value){const t=n.value.toLowerCase();a=a.filter(v=>{var s;return v.name.toLowerCase().includes(t)||((s=v.namespace)==null?void 0:s.toLowerCase().includes(t))})}return b.value&&(a=a.filter(t=>t.namespace===b.value)),a=[...a].sort((t,v)=>{var D,N,q,I,O,E,G,J;let s,c;switch(h.value){case"name":s=t.name.toLowerCase(),c=v.name.toLowerCase();break;case"namespace":s=((D=t.namespace)==null?void 0:D.toLowerCase())||"",c=((N=v.namespace)==null?void 0:N.toLowerCase())||"";break;case"partitions":s=t.partitions||0,c=v.partitions||0;break;case"pending":s=((q=t.messages)==null?void 0:q.pending)||0,c=((I=v.messages)==null?void 0:I.pending)||0;break;case"processing":s=((O=t.messages)==null?void 0:O.processing)||0,c=((E=v.messages)==null?void 0:E.processing)||0;break;case"total":s=((G=t.messages)==null?void 0:G.total)||0,c=((J=v.messages)==null?void 0:J.total)||0;break;default:return 0}return s<c?m.value==="asc"?-1:1:s>c?m.value==="asc"?1:-1:0}),a}),z=S(()=>Math.ceil(V.value.length/F)),T=S(()=>(p.value-1)*F),H=S(()=>Math.min(T.value+F,V.value.length)),Z=S(()=>V.value.slice(T.value,H.value));function C(a){h.value===a?m.value=m.value==="asc"?"desc":"asc":(h.value=a,m.value="asc")}function $(a){return h.value!==a?"opacity-30":m.value==="asc"?"":"rotate-180"}function ee(a){U.push(`/queues/${a}`)}function te(a){B.value=a,l.value=!0}async function se(){if(B.value)try{await _.deleteQueue(B.value.name),l.value=!1,B.value=null,await L()}catch(a){k.value=a.message}}async function L(){j.value=!0,k.value=null;try{const[a,t]=await Promise.all([_.getQueues(),pe.getNamespaces()]);g.value=a.data.queues,x.value=t.data.namespaces}catch(a){k.value=a.message,console.error("Queues error:",a)}finally{j.value=!1}}async function oe(){await L()}function ne(){n.value="",b.value=""}return ae(()=>{L(),window.registerRefreshCallback&&window.registerRefreshCallback("/queues",L)}),re(()=>{window.registerRefreshCallback&&window.registerRefreshCallback("/queues",null)}),(a,t)=>{var v;return r(),i("div",Me,[e("div",je,[e("div",Be,[e("div",Ve,[e("div",De,[e("div",Ne,[f(e("input",{"onUpdate:modelValue":t[0]||(t[0]=s=>n.value=s),type:"text",placeholder:"Search queues...",class:"input"},null,512),[[y,n.value]])]),f(e("select",{"onUpdate:modelValue":t[1]||(t[1]=s=>b.value=s),class:"input sm:w-48"},[t[15]||(t[15]=e("option",{value:""},"All Namespaces",-1)),(r(!0),i(W,null,X(x.value,s=>(r(),i("option",{key:s.namespace,value:s.namespace},u(s.namespace)+" ("+u(s.queues)+") ",9,Se))),128))],512),[[ue,b.value]]),n.value||b.value?(r(),i("button",{key:0,onClick:ne,class:"btn btn-secondary whitespace-nowrap"}," Clear Filters ")):M("",!0),e("button",{onClick:t[2]||(t[2]=s=>o.value=!0),class:"btn btn-primary whitespace-nowrap"},[...t[16]||(t[16]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),e("span",{class:"hidden sm:inline"},"New Queue",-1)])])])]),j.value&&!g.value.length?(r(),ie(me,{key:0})):k.value?(r(),i("div",Le,[e("p",null,[t[17]||(t[17]=e("strong",null,"Error loading queues:",-1)),w(" "+u(k.value),1)])])):(r(),i("div",qe,[e("div",Pe,[e("table",Ue,[e("thead",null,[e("tr",null,[e("th",{onClick:t[3]||(t[3]=s=>C("name")),class:"cursor-pointer hover:text-rose-600 dark:hover:text-rose-400 transition-colors"},[e("div",ze,[t[19]||(t[19]=w(" Queue Name ",-1)),(r(),i("svg",{class:Q(["w-3 h-3 transition-transform",$("name")]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...t[18]||(t[18]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))])]),e("th",{onClick:t[4]||(t[4]=s=>C("namespace")),class:"hidden md:table-cell cursor-pointer hover:text-rose-600 dark:hover:text-rose-400 transition-colors"},[e("div",Te,[t[21]||(t[21]=w(" Namespace ",-1)),(r(),i("svg",{class:Q(["w-3 h-3 transition-transform",$("namespace")]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...t[20]||(t[20]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))])]),e("th",{onClick:t[5]||(t[5]=s=>C("partitions")),class:"text-right cursor-pointer hover:text-rose-600 dark:hover:text-rose-400 transition-colors"},[e("div",Ae,[t[23]||(t[23]=w(" Partitions ",-1)),(r(),i("svg",{class:Q(["w-3 h-3 transition-transform",$("partitions")]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...t[22]||(t[22]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))])]),e("th",{onClick:t[6]||(t[6]=s=>C("pending")),class:"text-right cursor-pointer hover:text-rose-600 dark:hover:text-rose-400 transition-colors"},[e("div",Re,[t[25]||(t[25]=w(" Pending ",-1)),(r(),i("svg",{class:Q(["w-3 h-3 transition-transform",$("pending")]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...t[24]||(t[24]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))])]),e("th",{onClick:t[7]||(t[7]=s=>C("processing")),class:"text-right hidden sm:table-cell cursor-pointer hover:text-rose-600 dark:hover:text-rose-400 transition-colors"},[e("div",Fe,[t[27]||(t[27]=w(" Processing ",-1)),(r(),i("svg",{class:Q(["w-3 h-3 transition-transform",$("processing")]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...t[26]||(t[26]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))])]),e("th",{onClick:t[8]||(t[8]=s=>C("total")),class:"text-right cursor-pointer hover:text-rose-600 dark:hover:text-rose-400 transition-colors"},[e("div",_e,[t[29]||(t[29]=w(" Total ",-1)),(r(),i("svg",{class:Q(["w-3 h-3 transition-transform",$("total")]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...t[28]||(t[28]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))])]),t[30]||(t[30]=e("th",{class:"text-right"},"Actions",-1))])]),e("tbody",null,[(r(!0),i(W,null,X(Z.value,s=>{var c,D,N;return r(),i("tr",{key:s.id,class:"cursor-pointer",onClick:q=>ee(s.name)},[e("td",null,[e("div",Ie,u(s.name),1),s.namespace?(r(),i("div",Oe,u(s.namespace),1)):M("",!0)]),e("td",Ee,[s.namespace?(r(),i("span",Ge,u(s.namespace),1)):(r(),i("span",Je,"-"))]),e("td",Ke,u(s.partitions),1),e("td",We,u(A(R)(((c=s.messages)==null?void 0:c.pending)||0)),1),e("td",Xe,u(A(R)(((D=s.messages)==null?void 0:D.processing)||0)),1),e("td",Ye,u(A(R)(((N=s.messages)==null?void 0:N.total)||0)),1),e("td",{class:"text-right",onClick:t[9]||(t[9]=Y(()=>{},["stop"]))},[e("button",{onClick:q=>te(s),class:"p-1.5 rounded hover:bg-red-50 dark:hover:bg-red-900/20 text-red-600 dark:text-red-400 transition-colors",title:"Delete queue"},[...t[31]||(t[31]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])],8,Ze)])],8,He)}),128))])]),V.value.length?M("",!0):(r(),i("div",et,[t[32]||(t[32]=e("svg",{class:"w-12 h-12 mx-auto mb-3 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4"})],-1)),t[33]||(t[33]=e("p",null,"No queues found",-1)),e("button",{onClick:t[10]||(t[10]=s=>o.value=!0),class:"btn btn-primary mt-3"}," Create your first queue ")]))]),z.value>1?(r(),i("div",tt,[e("div",st," Showing "+u(T.value+1)+"-"+u(H.value)+" of "+u(V.value.length),1),e("div",ot,[e("button",{onClick:t[11]||(t[11]=s=>p.value--),disabled:p.value===1,class:"btn btn-secondary px-3 py-1.5"},[...t[34]||(t[34]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])],8,nt),e("span",lt,u(p.value)+" / "+u(z.value),1),e("button",{onClick:t[12]||(t[12]=s=>p.value++),disabled:p.value===z.value,class:"btn btn-secondary px-3 py-1.5"},[...t[35]||(t[35]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)])],8,at)])])):M("",!0)])),K(Qe,{"is-open":o.value,onClose:t[13]||(t[13]=s=>o.value=!1),onCreated:oe},null,8,["is-open"]),K(ce,{"is-open":l.value,title:"Delete Queue",message:`Are you sure you want to delete '${(v=B.value)==null?void 0:v.name}'? This action cannot be undone.`,"confirm-text":"Delete","confirm-class":"btn-danger",onConfirm:se,onCancel:t[14]||(t[14]=s=>l.value=!1)},null,8,["is-open","message"])])])])}}},mt=ve(rt,[["__scopeId","data-v-c45c4315"]]);export{mt as default};
@@ -0,0 +1 @@
1
+ .badge-glow[data-v-f76d2b07]{transition:all .2s ease}
@@ -0,0 +1 @@
1
+ import{_ as b}from"./LoadingSpinner-BPttXcbs.js";import{c as e,a as l,o as r,f as u,j as p,s as o,t as i}from"./index-CUSnwYTH.js";const m={__name:"StatusBadge",props:{status:{type:String,required:!0},showDot:{type:Boolean,default:!0}},setup(s){const d=s,t={healthy:{class:"badge-success",dot:"bg-green-500",label:"Healthy"},stable:{class:"badge-success",dot:"bg-green-500",label:"Stable"},warning:{class:"badge-warning",dot:"bg-yellow-500",label:"Warning"},error:{class:"badge-danger",dot:"bg-red-500",label:"Error"},unhealthy:{class:"badge-danger",dot:"bg-red-500",label:"Unhealthy"},pending:{class:"badge-warning",dot:"bg-yellow-500",label:"Pending"},processing:{class:"bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-400",dot:"bg-purple-500 animate-pulse",label:"Processing"},completed:{class:"badge-success",dot:"bg-green-500",label:"Completed"},failed:{class:"badge-danger",dot:"bg-red-500",label:"Failed"},dead_letter:{class:"bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300",dot:"bg-gray-500",label:"Dead Letter"}},a=e(()=>t[d.status.toLowerCase()]||t.pending),g=e(()=>`badge ${a.value.class}`),n=e(()=>a.value.dot),c=e(()=>a.value.label);return(y,f)=>(r(),l("span",{class:o([g.value,"flex items-center badge-glow"])},[s.showDot?(r(),l("span",{key:0,class:o(["w-2 h-2 rounded-full mr-1.5",n.value])},null,2)):u("",!0),p(" "+i(c.value),1)],2))}},_=b(m,[["__scopeId","data-v-f76d2b07"]]);export{_ as S};
@@ -0,0 +1 @@
1
+ import{y as e}from"./index-CUSnwYTH.js";const u={getStatus:t=>e.get("/api/v1/status",{params:t}),getQueues:t=>e.get("/api/v1/status/queues",{params:t}),getQueueDetail:(t,s)=>e.get(`/api/v1/status/queues/${t}`,{params:s}),getQueueMessages:(t,s)=>e.get(`/api/v1/status/queues/${t}/messages`,{params:s}),getAnalytics:t=>e.get("/api/v1/status/analytics",{params:t})};export{u as a};