queen-mq 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +467 -1775
  2. package/package.json +12 -14
  3. package/src/client/client.js +664 -5
  4. package/src/managers/queueManagerOptimized.js +250 -47
  5. package/src/routes/ack.js +3 -3
  6. package/src/server.js +131 -3
  7. package/src/test/advanced-client-tests.js +761 -0
  8. package/src/test/advanced-pattern-tests.js +2 -2
  9. package/src/test/bus-mode-tests.js +6 -6
  10. package/src/test/core-tests.js +1 -1
  11. package/src/test/edge-case-tests.js +2 -2
  12. package/src/test/test-new.js +36 -1
  13. package/src/webapp-dist/assets/Analytics-DJrE4Rz2.css +1 -0
  14. package/src/webapp-dist/assets/Analytics-HEMXKmfJ.js +1 -0
  15. package/src/webapp-dist/assets/ConfirmDialog-YEoCdE7x.js +1 -0
  16. package/src/webapp-dist/assets/ConsumerGroups-CC5VJywp.css +1 -0
  17. package/src/webapp-dist/assets/ConsumerGroups-D8Z20HhZ.js +1 -0
  18. package/src/webapp-dist/assets/Dashboard-BRFOz6it.css +1 -0
  19. package/src/webapp-dist/assets/Dashboard-Bpx9I32h.js +1 -0
  20. package/src/webapp-dist/assets/LoadingSpinner-BPttXcbs.js +1 -0
  21. package/src/webapp-dist/assets/Messages-BOfVHKma.css +1 -0
  22. package/src/webapp-dist/assets/Messages-EKURCbLl.js +1 -0
  23. package/src/webapp-dist/assets/QueueDetail-BXXA7xoZ.css +1 -0
  24. package/src/webapp-dist/assets/QueueDetail-Bmxg0KiA.js +1 -0
  25. package/src/webapp-dist/assets/Queues-CvrJkrZT.css +1 -0
  26. package/src/webapp-dist/assets/Queues-yUx9_3-9.js +1 -0
  27. package/src/webapp-dist/assets/StatusBadge-C1bBtXHh.css +1 -0
  28. package/src/webapp-dist/assets/StatusBadge-C6N84XmO.js +1 -0
  29. package/src/webapp-dist/assets/analytics-BapTekLM.js +1 -0
  30. package/src/webapp-dist/assets/colors-5z6Q_kUr.js +18 -0
  31. package/src/webapp-dist/assets/index-B7w2bKT6.css +1 -0
  32. package/src/webapp-dist/assets/index-CUSnwYTH.js +31 -0
  33. package/src/webapp-dist/assets/messages-CRV6E-xU.js +1 -0
  34. package/src/webapp-dist/assets/queues-BdUbxfBC.js +1 -0
  35. package/src/webapp-dist/assets/resources-Bs9U-ceF.js +1 -0
  36. package/{webapp → src/webapp-dist}/index.html +2 -1
  37. package/API.md +0 -1226
  38. package/AUTH.md +0 -2044
  39. package/CHANGELOG_STATIC_SERVING.md +0 -213
  40. package/DEPLOYMENT.md +0 -425
  41. package/PROGRAMMATIC_SERVER.md +0 -239
  42. package/WEBAPP.md +0 -1889
  43. package/assets/dashboard-01.png +0 -0
  44. package/assets/dashboard.png +0 -0
  45. package/examples/batch-processing.js +0 -58
  46. package/examples/bus-mode.js +0 -239
  47. package/examples/continuous-consumer-optimized.js +0 -215
  48. package/examples/continuous-consumer.js +0 -159
  49. package/examples/continuous-producer.js +0 -343
  50. package/examples/mixed-mode.js +0 -277
  51. package/examples/multi-server-test.js +0 -305
  52. package/examples/programmatic-server.js +0 -58
  53. package/examples/server-with-frontend.js +0 -46
  54. package/examples/single.js +0 -64
  55. package/examples/smartchat-dealyed.js +0 -42
  56. package/examples/smartchat.js +0 -52
  57. package/examples/test-cache-invalidation.js +0 -119
  58. package/examples/test-cache-multi-server.js +0 -245
  59. package/examples/test-complete-client.js +0 -260
  60. package/examples/test-connection-recovery.js +0 -66
  61. package/examples/test-dashboard-api.js +0 -200
  62. package/examples/test-minimal-client.js +0 -112
  63. package/examples/test-queue-creation-policy.js +0 -137
  64. package/examples/test-traceid.js +0 -147
  65. package/server.log +0 -1
  66. package/test-keepalive-v2.sh +0 -22
  67. package/webapp/COLOR_GUIDE.md +0 -118
  68. package/webapp/README.md +0 -143
  69. package/webapp/package-lock.json +0 -3184
  70. package/webapp/package.json +0 -25
  71. package/webapp/postcss.config.js +0 -7
  72. package/webapp/public/assets/queen-logo-blue.svg +0 -210
  73. package/webapp/public/assets/queen-logo-cyan.svg +0 -210
  74. package/webapp/public/assets/queen-logo-indigo.svg +0 -210
  75. package/webapp/public/assets/queen-logo-orange.svg +0 -210
  76. package/webapp/public/assets/queen-logo-pink.svg +0 -210
  77. package/webapp/public/assets/queen-logo-purple.svg +0 -210
  78. package/webapp/public/assets/queen-logo-rose.svg +0 -239
  79. package/webapp/public/assets/queen-logo.svg +0 -263
  80. package/webapp/src/App.vue +0 -19
  81. package/webapp/src/api/analytics.js +0 -10
  82. package/webapp/src/api/client.js +0 -34
  83. package/webapp/src/api/consumers.js +0 -52
  84. package/webapp/src/api/health.js +0 -7
  85. package/webapp/src/api/messages.js +0 -26
  86. package/webapp/src/api/queues.js +0 -14
  87. package/webapp/src/api/resources.js +0 -8
  88. package/webapp/src/assets/styles/main.css +0 -357
  89. package/webapp/src/components/analytics/AnalyticsFilters.vue +0 -87
  90. package/webapp/src/components/analytics/AnalyticsMetrics.vue +0 -57
  91. package/webapp/src/components/analytics/MessageDistributionChart.vue +0 -111
  92. package/webapp/src/components/analytics/MessageFlowChart.vue +0 -173
  93. package/webapp/src/components/analytics/TimeRangeSelector.vue +0 -27
  94. package/webapp/src/components/analytics/TopQueuesChart.vue +0 -132
  95. package/webapp/src/components/common/ConfirmDialog.vue +0 -56
  96. package/webapp/src/components/common/LoadingSpinner.vue +0 -6
  97. package/webapp/src/components/common/MetricCard.vue +0 -43
  98. package/webapp/src/components/common/StatusBadge.vue +0 -45
  99. package/webapp/src/components/dashboard/MessageStatusCard.vue +0 -50
  100. package/webapp/src/components/dashboard/PerformanceCard.vue +0 -38
  101. package/webapp/src/components/dashboard/ThroughputChart.vue +0 -182
  102. package/webapp/src/components/dashboard/TopQueuesTable.vue +0 -53
  103. package/webapp/src/components/layout/AppLayout.vue +0 -110
  104. package/webapp/src/components/layout/AppSidebar.vue +0 -304
  105. package/webapp/src/components/messages/MessageDetailPanel.vue +0 -242
  106. package/webapp/src/components/messages/MessageFilters.vue +0 -101
  107. package/webapp/src/components/queue-detail/PartitionList.vue +0 -79
  108. package/webapp/src/components/queue-detail/PushMessageModal.vue +0 -175
  109. package/webapp/src/components/queue-detail/QueueConfig.vue +0 -63
  110. package/webapp/src/components/queue-detail/QueueDetailHeader.vue +0 -53
  111. package/webapp/src/components/queue-detail/RecentMessages.vue +0 -76
  112. package/webapp/src/components/queues/CreateQueueModal.vue +0 -193
  113. package/webapp/src/components/queues/QueueFilters.vue +0 -90
  114. package/webapp/src/composables/useApi.js +0 -34
  115. package/webapp/src/composables/useTheme.js +0 -36
  116. package/webapp/src/main.js +0 -11
  117. package/webapp/src/router/index.js +0 -42
  118. package/webapp/src/utils/colors.js +0 -96
  119. package/webapp/src/utils/formatters.js +0 -49
  120. package/webapp/src/views/Analytics.vue +0 -377
  121. package/webapp/src/views/ConsumerGroups.vue +0 -433
  122. package/webapp/src/views/Dashboard.vue +0 -418
  123. package/webapp/src/views/Messages.vue +0 -363
  124. package/webapp/src/views/QueueDetail.vue +0 -582
  125. package/webapp/src/views/Queues.vue +0 -496
  126. package/webapp/tailwind.config.js +0 -25
  127. package/webapp/vite.config.js +0 -10
  128. /package/{assets → src/webapp-dist/assets}/queen-logo-blue.svg +0 -0
  129. /package/{assets → src/webapp-dist/assets}/queen-logo-cyan.svg +0 -0
  130. /package/{assets → src/webapp-dist/assets}/queen-logo-indigo.svg +0 -0
  131. /package/{assets → src/webapp-dist/assets}/queen-logo-orange.svg +0 -0
  132. /package/{assets → src/webapp-dist/assets}/queen-logo-pink.svg +0 -0
  133. /package/{assets → src/webapp-dist/assets}/queen-logo-purple.svg +0 -0
  134. /package/{assets → src/webapp-dist/assets}/queen-logo-rose.svg +0 -0
  135. /package/{assets → src/webapp-dist/assets}/queen-logo.svg +0 -0
@@ -401,8 +401,8 @@ export async function testComplexPriorityScenarios(client) {
401
401
  }
402
402
 
403
403
  // Calculate average priority of first vs last 3 messages
404
- const firstThree = received.slice(0, 3).map(m => m.payload.priority);
405
- const lastThree = received.slice(-3).map(m => m.payload.priority);
404
+ const firstThree = received.slice(0, 3).map(m => m.data.priority);
405
+ const lastThree = received.slice(-3).map(m => m.data.priority);
406
406
 
407
407
  const avgFirst = firstThree.reduce((a, b) => a + b, 0) / 3;
408
408
  const avgLast = lastThree.reduce((a, b) => a + b, 0) / 3;
@@ -47,8 +47,8 @@ export async function testBusConsumerGroups(client) {
47
47
  }
48
48
 
49
49
  // Verify both groups got the same message IDs
50
- const group1Ids = group1Messages.map(m => m.payload.id).sort();
51
- const group2Ids = group2Messages.map(m => m.payload.id).sort();
50
+ const group1Ids = group1Messages.map(m => m.data.id).sort();
51
+ const group2Ids = group2Messages.map(m => m.data.id).sort();
52
52
 
53
53
  if (JSON.stringify(group1Ids) !== JSON.stringify(group2Ids)) {
54
54
  throw new Error('Consumer groups did not receive the same messages');
@@ -119,8 +119,8 @@ export async function testMixedMode(client) {
119
119
  }
120
120
 
121
121
  // Workers should get different messages (competing)
122
- const worker1Ids = worker1Messages.map(m => m.payload.id);
123
- const worker2Ids = worker2Messages.map(m => m.payload.id);
122
+ const worker1Ids = worker1Messages.map(m => m.data.id);
123
+ const worker2Ids = worker2Messages.map(m => m.data.id);
124
124
  const intersection = worker1Ids.filter(id => worker2Ids.includes(id));
125
125
 
126
126
  if (intersection.length > 0) {
@@ -150,8 +150,8 @@ export async function testMixedMode(client) {
150
150
  }
151
151
 
152
152
  // Verify groups got all messages
153
- const analyticsIds = analyticsMessages.map(m => m.payload.id).sort();
154
- const auditIds = auditMessages.map(m => m.payload.id).sort();
153
+ const analyticsIds = analyticsMessages.map(m => m.data.id).sort();
154
+ const auditIds = auditMessages.map(m => m.data.id).sort();
155
155
 
156
156
  if (JSON.stringify(analyticsIds) !== JSON.stringify([1, 2, 3, 4, 5, 6])) {
157
157
  throw new Error('Analytics group did not receive all messages');
@@ -418,7 +418,7 @@ export async function testWindowBuffer(client) {
418
418
  const task = `test-task-${timestamp}`;
419
419
  const queue3 = 'test-window-buffer-filtered-' + timestamp;
420
420
 
421
- await client.queue(queue3, { windowBuffer: 5 }, ns, task);
421
+ await client.queue(queue3, { windowBuffer: 5 }, { namespace: ns, task: task });
422
422
  await client.push(`${queue3}/p1`, { test: 'case3' });
423
423
 
424
424
  let gotCase3Immediate = false;
@@ -487,10 +487,10 @@ export async function testManyConsumerGroups(client) {
487
487
  }
488
488
 
489
489
  // Verify all groups got the same messages
490
- const firstGroupIds = groupResults[0].map(m => m.payload.id).sort();
490
+ const firstGroupIds = groupResults[0].map(m => m.data.id).sort();
491
491
 
492
492
  for (let g = 1; g < numGroups; g++) {
493
- const groupIds = groupResults[g].map(m => m.payload.id).sort();
493
+ const groupIds = groupResults[g].map(m => m.data.id).sort();
494
494
  if (JSON.stringify(groupIds) !== JSON.stringify(firstGroupIds)) {
495
495
  throw new Error(`Group ${g} got different messages`);
496
496
  }
@@ -90,6 +90,21 @@ import {
90
90
  testMessageDeduplication
91
91
  } from './advanced-pattern-tests.js';
92
92
 
93
+ import {
94
+ testPipelineBasic,
95
+ testPipelineErrorHandling,
96
+ testPipelineAutoRenewal,
97
+ testPipelineParallel,
98
+ testPipelineConcurrencyRaceCondition,
99
+ testPipelineContinuous,
100
+ testTransactionAPI,
101
+ testPipelineAtomic,
102
+ testManualLeaseRenewal,
103
+ testLeaseValidation,
104
+ testComplexPipelineWorkflow,
105
+ runAdvancedClientTests
106
+ } from './advanced-client-tests.js';
107
+
93
108
  // Helper to run a test with error handling and delay
94
109
  async function runTest(testFn) {
95
110
  try {
@@ -234,11 +249,31 @@ async function runTests() {
234
249
  await runTest(() => testXSSPrevention(client));
235
250
  }
236
251
 
252
+ // ============================================
253
+ // ADVANCED CLIENT FEATURE TESTS
254
+ // ============================================
255
+ if (!testFilter || testFilter === 'advanced' || testFilter === 'client') {
256
+ console.log('\n🚀 ADVANCED CLIENT FEATURES');
257
+ console.log('-'.repeat(40));
258
+
259
+ await runTest(() => testPipelineBasic(client));
260
+ await runTest(() => testPipelineErrorHandling(client));
261
+ await runTest(() => testPipelineAutoRenewal(client));
262
+ await runTest(() => testPipelineParallel(client));
263
+ await runTest(() => testPipelineConcurrencyRaceCondition(client));
264
+ await runTest(() => testPipelineContinuous(client));
265
+ await runTest(() => testTransactionAPI(client));
266
+ await runTest(() => testPipelineAtomic(client));
267
+ await runTest(() => testManualLeaseRenewal(client));
268
+ await runTest(() => testLeaseValidation(client));
269
+ await runTest(() => testComplexPipelineWorkflow(client));
270
+ }
271
+
237
272
  // ============================================
238
273
  // ADVANCED SCENARIO TESTS
239
274
  // ============================================
240
275
  if (!testFilter || testFilter === 'advanced' || testFilter === 'pattern') {
241
- console.log('\n🎯 ADVANCED SCENARIOS');
276
+ console.log('\n🎯 ADVANCED PATTERNS');
242
277
  console.log('-'.repeat(40));
243
278
 
244
279
  await runTest(() => testMultiStagePipeline(client));
@@ -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};