@lunora/studio 1.0.0-alpha.38 → 1.0.0-alpha.39

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 (121) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +10 -10
  3. package/dist/mount.js +1 -1
  4. package/dist/packem_chunks/ApiTab.js +3 -3
  5. package/dist/packem_chunks/AuditPanel.js +3 -3
  6. package/dist/packem_chunks/ExportImportPanel.js +2 -2
  7. package/dist/packem_chunks/FileBrowser.js +2 -2
  8. package/dist/packem_chunks/FunctionRunner.js +1 -1
  9. package/dist/packem_chunks/FunctionStatsPanel.js +3 -3
  10. package/dist/packem_chunks/HealthPanel.js +2 -2
  11. package/dist/packem_chunks/InsightsPanel.js +3 -3
  12. package/dist/packem_chunks/LogsPanel.js +2 -2
  13. package/dist/packem_chunks/MailPanel.js +3 -3
  14. package/dist/packem_chunks/MetricsPanel.js +2 -2
  15. package/dist/packem_chunks/MigrationsPanel.js +3 -3
  16. package/dist/packem_chunks/PitrPanel.js +1 -1
  17. package/dist/packem_chunks/SchemaViewer.js +1 -1
  18. package/dist/packem_chunks/SecurityAdvisorPanel.js +2 -2
  19. package/dist/packem_chunks/SettingsPanel.js +2 -2
  20. package/dist/packem_chunks/SqlEditorPanel.js +149 -139
  21. package/dist/packem_chunks/TableEditor.js +3 -3
  22. package/dist/packem_chunks/analytics-panel.js +1 -1
  23. package/dist/packem_chunks/auth-config-panel.js +1 -1
  24. package/dist/packem_chunks/auth-sessions-panel.js +2 -2
  25. package/dist/packem_chunks/containers-panel.js +1 -1
  26. package/dist/packem_chunks/dashboards-panel.js +2 -2
  27. package/dist/packem_chunks/fanout-panel.js +2 -2
  28. package/dist/packem_chunks/flags-panel.js +2 -2
  29. package/dist/packem_chunks/kv-browser.js +2 -2
  30. package/dist/packem_chunks/log-drains-panel.js +1 -1
  31. package/dist/packem_chunks/organizations-panel.js +3 -3
  32. package/dist/packem_chunks/payments-panel.js +3 -3
  33. package/dist/packem_chunks/permissions-panel.js +3 -3
  34. package/dist/packem_chunks/queues-panel.js +242 -219
  35. package/dist/packem_chunks/rls-panel.js +2 -2
  36. package/dist/packem_chunks/schedule-panel.js +3 -3
  37. package/dist/packem_chunks/storage-rules-panel.js +2 -2
  38. package/dist/packem_chunks/subscriptions-panel.js +2 -2
  39. package/dist/packem_chunks/users-panel.js +3 -3
  40. package/dist/packem_chunks/vector-browser.js +1 -1
  41. package/dist/packem_chunks/workflows-panel.js +2 -2
  42. package/dist/packem_shared/{ApiDocsPanel-D4CJf2ad.js → ApiDocsPanel-CBma-lnp.js} +1 -1
  43. package/dist/packem_shared/{ApiReferencePanel-Co_wpRF2.js → ApiReferencePanel-CQM3pPN7.js} +1 -1
  44. package/dist/packem_shared/{CommandPalette-BUPpbpMc.js → CommandPalette-X2tkbyHk.js} +1 -1
  45. package/dist/packem_shared/{DataBrowser-BeVNxSVm.js → DataBrowser-D2ywrdId.js} +5 -5
  46. package/dist/packem_shared/{GlobalDataBrowser-ErfvIs1S.js → GlobalDataBrowser-BkTPLzAY.js} +3 -3
  47. package/dist/packem_shared/{HomePanel-D9MQk8I7.js → HomePanel-D1Q9LZgK.js} +3 -3
  48. package/dist/packem_shared/{OpenRpcReferencePanel-DLWzrIx9.js → OpenRpcReferencePanel-Dno-hfDb.js} +1 -1
  49. package/dist/packem_shared/{ScheduledJobs-ClaNpZsg.js → ScheduledJobs-Ctw4jYtU.js} +2 -2
  50. package/dist/packem_shared/{Studio-C48P1K5W.js → Studio-lJhzDAze.js} +4 -4
  51. package/dist/packem_shared/{StudioApp-Cqh-SYm2.js → StudioApp-DiMkupvZ.js} +3 -12
  52. package/dist/packem_shared/{advisor-view-D3-U4kRR.js → advisor-view-BX8OhG0w.js} +1 -1
  53. package/dist/packem_shared/{browser-storage-tLOxkIHd.js → browser-storage-BTrX4y3B.js} +32 -2
  54. package/dist/packem_shared/{data-grid-Jz8FqQ2C.js → data-grid-CdXztApG.js} +1 -1
  55. package/dist/packem_shared/{error-alert-BBT6D22d.js → error-alert-CXjqyGw9.js} +1 -1
  56. package/dist/packem_shared/{grid-features-CUr8Z1_O.js → grid-features-BF-KBDFz.js} +128 -65
  57. package/dist/packem_shared/{home-panel-CoGxi-oj.js → home-panel-TFcRf9Ui.js} +272 -22
  58. package/dist/packem_shared/{internal-DTsYVn-g.js → internal-CYcbqMjX.js} +15 -3
  59. package/dist/packem_shared/{reference-view-CSKyUyPl.js → reference-view-DUiJcILV.js} +1 -1
  60. package/dist/packem_shared/{studio-CPHA_-3I.js → studio-Dh9UlaF_.js} +3 -3
  61. package/dist/packem_shared/{table-list-sidebar-B5psdSV1.js → table-list-sidebar-UVIXQJdU.js} +1 -1
  62. package/dist/packem_shared/{use-admin-query-BHPKmPuj.js → use-admin-query-CfHYWx5n.js} +1 -1
  63. package/dist/packem_shared/{use-async-submit-BWMDwRa4.js → use-async-submit-DJQiPc-_.js} +2 -2
  64. package/dist/standalone/{chunk-ZL4E2WVF.js → chunk-23C4TCRO.js} +1 -1
  65. package/dist/standalone/{chunk-NV6RHG5L.js → chunk-5ZAA2PVR.js} +1 -1
  66. package/dist/standalone/{chunk-Q3PTSVVU.js → chunk-676HEBIR.js} +1 -1
  67. package/dist/standalone/{chunk-Y2ZPNDL7.js → chunk-6VO23MMW.js} +1 -1
  68. package/dist/standalone/{chunk-2GFAOIC3.js → chunk-7RE5UW27.js} +1 -1
  69. package/dist/standalone/{chunk-4FL3EDN5.js → chunk-AAVIFQ4Y.js} +1 -1
  70. package/dist/standalone/{chunk-SE2TQAHJ.js → chunk-AJFQ3LNM.js} +1 -1
  71. package/dist/standalone/chunk-AJULNB46.js +4 -0
  72. package/dist/standalone/{chunk-6GFEVKJP.js → chunk-BGXOXASQ.js} +1 -1
  73. package/dist/standalone/{chunk-3DBG4RIV.js → chunk-BKW7FFEO.js} +1 -1
  74. package/dist/standalone/{chunk-OES45DFG.js → chunk-BXOYVWJR.js} +1 -1
  75. package/dist/standalone/{chunk-OIC7EJWI.js → chunk-C7WTJLC3.js} +1 -1
  76. package/dist/standalone/{chunk-AJIUI7DD.js → chunk-CACB34RQ.js} +1 -1
  77. package/dist/standalone/{chunk-TI7SE33D.js → chunk-CICVBMEN.js} +1 -1
  78. package/dist/standalone/{chunk-VFJPO4UO.js → chunk-CWEAJUHW.js} +1 -1
  79. package/dist/standalone/{chunk-FA3CCTXK.js → chunk-DECHEGIC.js} +1 -1
  80. package/dist/standalone/{chunk-PVZI3CXP.js → chunk-E75ANNWX.js} +7 -7
  81. package/dist/standalone/{chunk-MZ756AFF.js → chunk-ERJNDIXC.js} +1 -1
  82. package/dist/standalone/{chunk-I3VXCZZL.js → chunk-FKACHRWO.js} +1 -1
  83. package/dist/standalone/{chunk-X7RPB4K4.js → chunk-FSGCANAU.js} +1 -1
  84. package/dist/standalone/{chunk-34OQUHSV.js → chunk-H6RKXQZU.js} +1 -1
  85. package/dist/standalone/chunk-HZTGDL4L.js +1 -0
  86. package/dist/standalone/{chunk-FCSPAJW4.js → chunk-I7ZZRM7I.js} +1 -1
  87. package/dist/standalone/{chunk-OLE2AYTD.js → chunk-J46WXQYL.js} +1 -1
  88. package/dist/standalone/{chunk-2F4VYKM6.js → chunk-JVODY4EP.js} +1 -1
  89. package/dist/standalone/{chunk-IU6GTBPD.js → chunk-LYB5L53X.js} +1 -1
  90. package/dist/standalone/chunk-MJWVMKQ4.js +6 -0
  91. package/dist/standalone/chunk-MT2J3H7O.js +3 -0
  92. package/dist/standalone/{chunk-P5JW7HKP.js → chunk-N746FOQP.js} +1 -1
  93. package/dist/standalone/{chunk-P3ZMBPCY.js → chunk-NC6MBMSI.js} +1 -1
  94. package/dist/standalone/chunk-NN27EDQB.js +1 -0
  95. package/dist/standalone/{chunk-AJKR6PY7.js → chunk-NY6GDADQ.js} +1 -1
  96. package/dist/standalone/{chunk-R5OQZYSW.js → chunk-OY3HD7BJ.js} +1 -1
  97. package/dist/standalone/{chunk-4JOKDSPU.js → chunk-P5HJXCZS.js} +1 -1
  98. package/dist/standalone/{chunk-GM4NPF3W.js → chunk-PTS5TW3J.js} +1 -1
  99. package/dist/standalone/{chunk-IQ466Q6W.js → chunk-QDBOPDJ7.js} +1 -1
  100. package/dist/standalone/{chunk-KQTCLPLO.js → chunk-QHFTGJPS.js} +1 -1
  101. package/dist/standalone/{chunk-N7G5I47W.js → chunk-SSI4G2MY.js} +1 -1
  102. package/dist/standalone/{chunk-QKQABJBE.js → chunk-TH45YG6Q.js} +1 -1
  103. package/dist/standalone/{chunk-WXPWVBIY.js → chunk-UGUEC6BC.js} +1 -1
  104. package/dist/standalone/{chunk-K3GNLVYK.js → chunk-UKDJ4H7I.js} +1 -1
  105. package/dist/standalone/{chunk-O3I57FXK.js → chunk-V6IWFYAQ.js} +1 -1
  106. package/dist/standalone/{chunk-7FF76BYY.js → chunk-V7SRH36W.js} +1 -1
  107. package/dist/standalone/{chunk-XFSUINL3.js → chunk-WPNXY7IS.js} +1 -1
  108. package/dist/standalone/{chunk-PZ7HD5T2.js → chunk-X33MSJPP.js} +1 -1
  109. package/dist/standalone/{chunk-LEHGGJP2.js → chunk-XRNXOIVZ.js} +1 -1
  110. package/dist/standalone/{chunk-TDL7NEWA.js → chunk-YBGC4PPD.js} +1 -1
  111. package/dist/standalone/{chunk-HLZ4YLRK.js → chunk-YNZ7ARWW.js} +1 -1
  112. package/dist/standalone/{chunk-XGUOXHX4.js → chunk-YTO65GHS.js} +1 -1
  113. package/dist/standalone/{chunk-JTTVXBLU.js → chunk-ZE6FT5Z3.js} +1 -1
  114. package/dist/standalone/studio.js +31 -31
  115. package/dist/styles.css +1 -1
  116. package/package.json +2 -2
  117. package/dist/standalone/chunk-2SAZ5BZ5.js +0 -4
  118. package/dist/standalone/chunk-2SE7II7A.js +0 -1
  119. package/dist/standalone/chunk-3UFZCRWL.js +0 -1
  120. package/dist/standalone/chunk-IJPFHUJK.js +0 -2
  121. package/dist/standalone/chunk-ZYRGPDZB.js +0 -1
@@ -1,7 +1,8 @@
1
1
  import { c } from 'react/compiler-runtime';
2
2
  import { useLunora } from '@lunora/react';
3
3
  import { useState } from 'react';
4
- import { E as ErrorAlert } from '../packem_shared/error-alert-BBT6D22d.js';
4
+ import { E as ErrorAlert } from '../packem_shared/error-alert-CXjqyGw9.js';
5
+ import { A as Alert } from '../packem_shared/alert-CdAET2K_.js';
5
6
  import { B as Badge } from '../packem_shared/badge-B2PKA1-5.js';
6
7
  import { B as Button } from '../packem_shared/button-BhsN2uZH.js';
7
8
  import { C as Card, a as CardContent } from '../packem_shared/card-DURq3ElK.js';
@@ -10,13 +11,24 @@ import { I as Input } from '../packem_shared/input-XH4r1Pt1.js';
10
11
  import { S as ScrollArea } from '../packem_shared/scroll-area-DLhcy-ml.js';
11
12
  import { T as Table, a as TableHeader, b as TableRow, c as TableHead, d as TableBody, e as TableCell } from '../packem_shared/table-DsCa9Qp9.js';
12
13
  import { T as Textarea } from '../packem_shared/textarea-D3gaCU_-.js';
13
- import { u as useAdminQuery } from '../packem_shared/use-admin-query-BHPKmPuj.js';
14
+ import { u as useAdminQuery } from '../packem_shared/use-admin-query-CfHYWx5n.js';
14
15
  import { useAutoRefresh } from '../packem_shared/DEFAULT_AUTO_REFRESH_MS-Vxwaxx51.js';
15
16
  import { useT } from '../packem_shared/DEFAULT_LOCALE-CiX4W7Kr.js';
16
17
  import { ADMIN_FUNCTIONS } from '../packem_shared/ADMIN_FUNCTIONS-BHHJi3Gb.js';
17
- import { c as callOptions, e as errorMessage, f as fireAndForget, a as adminRef, i as formatTimestamp } from '../packem_shared/internal-DTsYVn-g.js';
18
+ import { c as callOptions, e as errorMessage, a as adminRef, f as fireAndForget, i as formatTimestamp } from '../packem_shared/internal-CYcbqMjX.js';
18
19
  import { jsxDEV, Fragment } from 'react/jsx-dev-runtime';
19
20
 
21
+ const computeQueueReliability = (queues, messages) => {
22
+ const dlqTargets = new Set(queues.map((queue) => queue.deadLetterQueue).filter((name) => typeof name === "string" && name !== ""));
23
+ const queuesWithoutDlq = queues.filter((queue) => (queue.deadLetterQueue === void 0 || queue.deadLetterQueue === "") && !dlqTargets.has(queue.name));
24
+ const deadLetteredCount = messages.filter((message) => message.deadLettered).length;
25
+ return {
26
+ deadLetteredCount,
27
+ queuesWithoutDlq,
28
+ showReliabilityWarning: queuesWithoutDlq.length > 0 || deadLetteredCount > 0
29
+ };
30
+ };
31
+
20
32
  const DEFAULT_MESSAGE_LIMIT = 200;
21
33
  const SEND_QUEUE_MESSAGE = adminRef(ADMIN_FUNCTIONS.sendQueueMessage);
22
34
  const REPLAY_QUEUE_MESSAGE = adminRef(ADMIN_FUNCTIONS.replayQueueMessage);
@@ -630,7 +642,7 @@ const QueuesSendTab = (t0) => {
630
642
  return t4;
631
643
  };
632
644
  const QueuesPanel = (t0) => {
633
- const $ = c(74);
645
+ const $ = c(59);
634
646
  const {
635
647
  limit
636
648
  } = t0;
@@ -668,15 +680,12 @@ const QueuesPanel = (t0) => {
668
680
  refetch: refetchMessages
669
681
  } = useAdminQuery(ADMIN_FUNCTIONS.getQueueMessages, t2);
670
682
  const queues = Array.isArray(queuesData?.queues) ? [...queuesData.queues].toSorted(_temp3) : [];
671
- let t3;
672
- if ($[3] !== messagesData?.entries) {
673
- t3 = messagesData?.entries ?? [];
674
- $[3] = messagesData?.entries;
675
- $[4] = t3;
676
- } else {
677
- t3 = $[4];
678
- }
679
- const messages = t3;
683
+ const messages = messagesData?.entries ?? [];
684
+ const {
685
+ deadLetteredCount,
686
+ queuesWithoutDlq,
687
+ showReliabilityWarning
688
+ } = computeQueueReliability(queues, messages);
680
689
  const [selectedExport, setSelectedExport] = useState("");
681
690
  const [bodyText, setBodyText] = useState("");
682
691
  const [delayText, setDelayText] = useState("");
@@ -688,84 +697,69 @@ const QueuesPanel = (t0) => {
688
697
  const readErrorSource = tab === "messages" ? messagesErrorSource : queuesErrorSource;
689
698
  const error = readError ?? actionError;
690
699
  const errorSource = readError === null ? actionError : readErrorSource;
691
- let t4;
692
- if ($[5] !== refetchMessages) {
693
- t4 = () => {
700
+ let t3;
701
+ if ($[3] !== refetchMessages) {
702
+ t3 = () => {
694
703
  refetchMessages();
695
704
  };
696
- $[5] = refetchMessages;
697
- $[6] = t4;
705
+ $[3] = refetchMessages;
706
+ $[4] = t3;
698
707
  } else {
699
- t4 = $[6];
708
+ t3 = $[4];
700
709
  }
701
- useAutoRefresh(t4, tab === "messages");
702
- let t5;
703
- if ($[7] !== batchMode || $[8] !== bodyText || $[9] !== client || $[10] !== delayText || $[11] !== refetchMessages || $[12] !== selectedExportName || $[13] !== setSending || $[14] !== t) {
704
- t5 = async () => {
705
- setActionError(null);
706
- const exportName = selectedExportName;
707
- if (exportName === "") {
710
+ useAutoRefresh(t3, tab === "messages");
711
+ const send = async () => {
712
+ setActionError(null);
713
+ const exportName = selectedExportName;
714
+ if (exportName === "") {
715
+ return;
716
+ }
717
+ let body = null;
718
+ const trimmedBody = bodyText.trim();
719
+ if (trimmedBody !== "") {
720
+ try {
721
+ body = JSON.parse(trimmedBody);
722
+ } catch {
723
+ setActionError(t("Body must be valid JSON."));
708
724
  return;
709
725
  }
710
- let body = null;
711
- const trimmedBody = bodyText.trim();
712
- if (trimmedBody !== "") {
713
- try {
714
- body = JSON.parse(trimmedBody);
715
- } catch {
716
- setActionError(t("Body must be valid JSON."));
717
- return;
718
- }
719
- }
720
- let delaySeconds;
721
- const trimmedDelay = delayText.trim();
722
- if (trimmedDelay !== "") {
723
- const parsed = Number(trimmedDelay);
724
- if (!Number.isFinite(parsed) || parsed < 0) {
725
- setActionError(t("Delay must be a non-negative number of seconds."));
726
- return;
727
- }
728
- delaySeconds = parsed;
729
- }
730
- if (batchMode && !Array.isArray(body)) {
731
- setActionError(t("Batch mode needs a JSON array body — each element is enqueued as one message."));
726
+ }
727
+ let delaySeconds;
728
+ const trimmedDelay = delayText.trim();
729
+ if (trimmedDelay !== "") {
730
+ const parsed = Number(trimmedDelay);
731
+ if (!Number.isFinite(parsed) || parsed < 0) {
732
+ setActionError(t("Delay must be a non-negative number of seconds."));
732
733
  return;
733
734
  }
734
- setSending(true);
735
- const args = batchMode ? {
736
- batch: body,
737
- delaySeconds,
738
- exportName
739
- } : {
740
- body,
741
- delaySeconds,
742
- exportName
743
- };
744
- try {
745
- await client.query(SEND_QUEUE_MESSAGE, args, callOptions(""));
746
- refetchMessages();
747
- } catch (t62) {
748
- const error_ = t62;
749
- setActionError(errorMessage(error_));
750
- }
751
- setSending(false);
735
+ delaySeconds = parsed;
736
+ }
737
+ if (batchMode && !Array.isArray(body)) {
738
+ setActionError(t("Batch mode needs a JSON array body — each element is enqueued as one message."));
739
+ return;
740
+ }
741
+ setSending(true);
742
+ const args = batchMode ? {
743
+ batch: body,
744
+ delaySeconds,
745
+ exportName
746
+ } : {
747
+ body,
748
+ delaySeconds,
749
+ exportName
752
750
  };
753
- $[7] = batchMode;
754
- $[8] = bodyText;
755
- $[9] = client;
756
- $[10] = delayText;
757
- $[11] = refetchMessages;
758
- $[12] = selectedExportName;
759
- $[13] = setSending;
760
- $[14] = t;
761
- $[15] = t5;
762
- } else {
763
- t5 = $[15];
764
- }
765
- const send = t5;
766
- let t6;
767
- if ($[16] !== client || $[17] !== refetchMessages || $[18] !== setReplayingId) {
768
- t6 = async (id) => {
751
+ try {
752
+ await client.query(SEND_QUEUE_MESSAGE, args, callOptions(""));
753
+ refetchMessages();
754
+ } catch (t4) {
755
+ const error_ = t4;
756
+ setActionError(errorMessage(error_));
757
+ }
758
+ setSending(false);
759
+ };
760
+ let t5;
761
+ if ($[5] !== client || $[6] !== refetchMessages) {
762
+ t5 = async (id) => {
769
763
  setActionError(null);
770
764
  setReplayingId(id);
771
765
  try {
@@ -773,110 +767,105 @@ const QueuesPanel = (t0) => {
773
767
  id
774
768
  }, callOptions(""));
775
769
  refetchMessages();
776
- } catch (t72) {
777
- const error__0 = t72;
770
+ } catch (t62) {
771
+ const error__0 = t62;
778
772
  setActionError(errorMessage(error__0));
779
773
  }
780
774
  setReplayingId(null);
781
775
  };
782
- $[16] = client;
783
- $[17] = refetchMessages;
784
- $[18] = setReplayingId;
785
- $[19] = t6;
776
+ $[5] = client;
777
+ $[6] = refetchMessages;
778
+ $[7] = t5;
786
779
  } else {
787
- t6 = $[19];
780
+ t5 = $[7];
788
781
  }
789
- const replay = t6;
790
- let t7;
791
- if ($[20] !== client || $[21] !== refetchMessages) {
792
- t7 = async () => {
782
+ const replay = t5;
783
+ let t6;
784
+ if ($[8] !== client || $[9] !== refetchMessages) {
785
+ t6 = async () => {
793
786
  setActionError(null);
794
787
  try {
795
788
  await client.query(CLEAR_QUEUE_MESSAGES, {}, callOptions(""));
796
789
  refetchMessages();
797
- } catch (t82) {
798
- const error__1 = t82;
790
+ } catch (t72) {
791
+ const error__1 = t72;
799
792
  setActionError(errorMessage(error__1));
800
793
  }
801
794
  };
802
- $[20] = client;
803
- $[21] = refetchMessages;
804
- $[22] = t7;
795
+ $[8] = client;
796
+ $[9] = refetchMessages;
797
+ $[10] = t6;
805
798
  } else {
806
- t7 = $[22];
799
+ t6 = $[10];
807
800
  }
808
- const clearLog = t7;
809
- let t8;
810
- if ($[23] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
811
- t8 = (event) => {
801
+ const clearLog = t6;
802
+ let t7;
803
+ if ($[11] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
804
+ t7 = (event) => {
812
805
  const next = event.currentTarget.dataset.tab;
813
806
  if (next === "declared" || next === "messages" || next === "send") {
814
807
  setTab(next);
815
808
  }
816
809
  };
817
- $[23] = t8;
810
+ $[11] = t7;
818
811
  } else {
819
- t8 = $[23];
812
+ t7 = $[11];
820
813
  }
821
- const onSelectTab = t8;
822
- let t9;
823
- if ($[24] !== setSelectedExport) {
824
- t9 = (event_0) => {
814
+ const onSelectTab = t7;
815
+ let t8;
816
+ if ($[12] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
817
+ t8 = (event_0) => {
825
818
  setSelectedExport(event_0.currentTarget.value);
826
819
  };
827
- $[24] = setSelectedExport;
828
- $[25] = t9;
820
+ $[12] = t8;
829
821
  } else {
830
- t9 = $[25];
822
+ t8 = $[12];
831
823
  }
832
- const onSelectExport = t9;
833
- let t10;
834
- if ($[26] !== setBodyText) {
835
- t10 = (event_1) => {
824
+ const onSelectExport = t8;
825
+ let t9;
826
+ if ($[13] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
827
+ t9 = (event_1) => {
836
828
  setBodyText(event_1.currentTarget.value);
837
829
  };
838
- $[26] = setBodyText;
839
- $[27] = t10;
830
+ $[13] = t9;
840
831
  } else {
841
- t10 = $[27];
832
+ t9 = $[13];
842
833
  }
843
- const onBodyChange = t10;
844
- let t11;
845
- if ($[28] !== setDelayText) {
846
- t11 = (event_2) => {
834
+ const onBodyChange = t9;
835
+ let t10;
836
+ if ($[14] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
837
+ t10 = (event_2) => {
847
838
  setDelayText(event_2.currentTarget.value);
848
839
  };
849
- $[28] = setDelayText;
850
- $[29] = t11;
840
+ $[14] = t10;
851
841
  } else {
852
- t11 = $[29];
842
+ t10 = $[14];
853
843
  }
854
- const onDelayChange = t11;
855
- let t12;
856
- if ($[30] !== setBatchMode) {
857
- t12 = (event_3) => {
844
+ const onDelayChange = t10;
845
+ let t11;
846
+ if ($[15] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
847
+ t11 = (event_3) => {
858
848
  setBatchMode(event_3.currentTarget.checked);
859
849
  };
860
- $[30] = setBatchMode;
861
- $[31] = t12;
850
+ $[15] = t11;
862
851
  } else {
863
- t12 = $[31];
852
+ t11 = $[15];
864
853
  }
865
- const onBatchModeChange = t12;
866
- let t13;
867
- if ($[32] !== send) {
868
- t13 = () => {
854
+ const onBatchModeChange = t11;
855
+ let t12;
856
+ if ($[16] !== send) {
857
+ t12 = () => {
869
858
  fireAndForget(send());
870
859
  };
871
- $[32] = send;
872
- $[33] = t13;
860
+ $[16] = send;
861
+ $[17] = t12;
873
862
  } else {
874
- t13 = $[33];
863
+ t12 = $[17];
875
864
  }
876
- const onSend = t13;
877
- let t14;
878
- if ($[34] !== replay) {
879
- t14 = (event_4) => {
865
+ const onSend = t12;
866
+ let t13;
867
+ if ($[18] !== replay) {
868
+ t13 = (event_4) => {
880
869
  const {
881
870
  id: id_0
882
871
  } = event_4.currentTarget.dataset;
@@ -884,26 +873,28 @@ const QueuesPanel = (t0) => {
884
873
  fireAndForget(replay(id_0));
885
874
  }
886
875
  };
887
- $[34] = replay;
888
- $[35] = t14;
876
+ $[18] = replay;
877
+ $[19] = t13;
889
878
  } else {
890
- t14 = $[35];
879
+ t13 = $[19];
891
880
  }
892
- const onReplay = t14;
893
- let t15;
894
- if ($[36] !== clearLog) {
895
- t15 = () => {
881
+ const onReplay = t13;
882
+ let t14;
883
+ if ($[20] !== clearLog) {
884
+ t14 = () => {
896
885
  fireAndForget(clearLog());
897
886
  };
898
- $[36] = clearLog;
899
- $[37] = t15;
887
+ $[20] = clearLog;
888
+ $[21] = t14;
900
889
  } else {
901
- t15 = $[37];
890
+ t14 = $[21];
902
891
  }
903
- const onClear = t15;
904
- let t16;
905
- if ($[38] !== t || $[39] !== tab) {
906
- t16 = /* @__PURE__ */ jsxDEV("div", {
892
+ const onClear = t14;
893
+ const t15 = "flex flex-col gap-6";
894
+ const t16 = "lunora-queues-panel";
895
+ let t17;
896
+ if ($[22] !== t || $[23] !== tab) {
897
+ t17 = /* @__PURE__ */ jsxDEV("div", {
907
898
  className: "flex items-center gap-1",
908
899
  "data-testid": "queues-tabs",
909
900
  role: "tablist",
@@ -919,59 +910,87 @@ const QueuesPanel = (t0) => {
919
910
  children: tabLabel(value, t)
920
911
  }, value, false))
921
912
  }, void 0, false);
922
- $[38] = t;
923
- $[39] = tab;
924
- $[40] = t16;
913
+ $[22] = t;
914
+ $[23] = tab;
915
+ $[24] = t17;
925
916
  } else {
926
- t16 = $[40];
917
+ t17 = $[24];
927
918
  }
928
- let t17;
929
- if ($[41] !== error || $[42] !== errorSource) {
930
- t17 = error !== null && /* @__PURE__ */ jsxDEV(ErrorAlert, {
919
+ let t18;
920
+ if ($[25] !== error || $[26] !== errorSource) {
921
+ t18 = error !== null && /* @__PURE__ */ jsxDEV(ErrorAlert, {
931
922
  error: errorSource,
932
923
  testId: "queues-error"
933
924
  }, void 0, false);
934
- $[41] = error;
935
- $[42] = errorSource;
936
- $[43] = t17;
925
+ $[25] = error;
926
+ $[26] = errorSource;
927
+ $[27] = t18;
937
928
  } else {
938
- t17 = $[43];
929
+ t18 = $[27];
939
930
  }
940
- let t18;
941
- if ($[44] !== queues || $[45] !== queuesData || $[46] !== tab) {
942
- t18 = tab === "declared" && /* @__PURE__ */ jsxDEV(QueuesDeclaredTab, {
931
+ const t19 = showReliabilityWarning && /* @__PURE__ */ jsxDEV(Alert, {
932
+ icon: /* @__PURE__ */ jsxDEV("span", {
933
+ "aria-hidden": "true",
934
+ className: "text-base leading-none",
935
+ children: "⚠"
936
+ }, void 0, false),
937
+ testId: "queues-dlq-warning",
938
+ variant: "warning",
939
+ children: /* @__PURE__ */ jsxDEV("div", {
940
+ className: "flex flex-col gap-1",
941
+ children: [queuesWithoutDlq.length > 0 && /* @__PURE__ */ jsxDEV(Fragment, {
942
+ children: [/* @__PURE__ */ jsxDEV("p", {
943
+ className: "font-medium",
944
+ children: t("No dead-letter queue on {queues}.", {
945
+ queues: queuesWithoutDlq.map(_temp4).join(", ")
946
+ })
947
+ }, void 0, false), /* @__PURE__ */ jsxDEV("p", {
948
+ className: "text-muted-foreground",
949
+ children: t("Exhausted messages are dropped after retries. Add a deadLetterQueue to capture them.")
950
+ }, void 0, false)]
951
+ }, void 0, true), deadLetteredCount > 0 && /* @__PURE__ */ jsxDEV("p", {
952
+ className: queuesWithoutDlq.length > 0 ? "text-muted-foreground" : "font-medium",
953
+ children: deadLetteredCount === 1 ? t("1 message was recently dead-lettered.") : t("{count} messages were recently dead-lettered.", {
954
+ count: deadLetteredCount
955
+ })
956
+ }, void 0, false)]
957
+ }, void 0, true)
958
+ }, void 0, false);
959
+ let t20;
960
+ if ($[28] !== queues || $[29] !== queuesData || $[30] !== tab) {
961
+ t20 = tab === "declared" && /* @__PURE__ */ jsxDEV(QueuesDeclaredTab, {
943
962
  loaded: queuesData !== void 0,
944
963
  queues
945
964
  }, void 0, false);
946
- $[44] = queues;
947
- $[45] = queuesData;
948
- $[46] = tab;
949
- $[47] = t18;
965
+ $[28] = queues;
966
+ $[29] = queuesData;
967
+ $[30] = tab;
968
+ $[31] = t20;
950
969
  } else {
951
- t18 = $[47];
970
+ t20 = $[31];
952
971
  }
953
- let t19;
954
- if ($[48] !== messages || $[49] !== messagesError || $[50] !== onClear || $[51] !== onReplay || $[52] !== replayingId || $[53] !== tab) {
955
- t19 = tab === "messages" && /* @__PURE__ */ jsxDEV(QueuesMessagesTab, {
972
+ let t21;
973
+ if ($[32] !== messages || $[33] !== messagesError || $[34] !== onClear || $[35] !== onReplay || $[36] !== replayingId || $[37] !== tab) {
974
+ t21 = tab === "messages" && /* @__PURE__ */ jsxDEV(QueuesMessagesTab, {
956
975
  hasError: messagesError !== null,
957
976
  messages,
958
977
  onClear,
959
978
  onReplay,
960
979
  replayingId
961
980
  }, void 0, false);
962
- $[48] = messages;
963
- $[49] = messagesError;
964
- $[50] = onClear;
965
- $[51] = onReplay;
966
- $[52] = replayingId;
967
- $[53] = tab;
968
- $[54] = t19;
981
+ $[32] = messages;
982
+ $[33] = messagesError;
983
+ $[34] = onClear;
984
+ $[35] = onReplay;
985
+ $[36] = replayingId;
986
+ $[37] = tab;
987
+ $[38] = t21;
969
988
  } else {
970
- t19 = $[54];
989
+ t21 = $[38];
971
990
  }
972
- let t20;
973
- if ($[55] !== batchMode || $[56] !== bodyText || $[57] !== delayText || $[58] !== onBatchModeChange || $[59] !== onBodyChange || $[60] !== onDelayChange || $[61] !== onSelectExport || $[62] !== onSend || $[63] !== queues || $[64] !== selectedExportName || $[65] !== sending || $[66] !== tab) {
974
- t20 = tab === "send" && /* @__PURE__ */ jsxDEV(QueuesSendTab, {
991
+ let t22;
992
+ if ($[39] !== batchMode || $[40] !== bodyText || $[41] !== delayText || $[42] !== onBatchModeChange || $[43] !== onBodyChange || $[44] !== onDelayChange || $[45] !== onSelectExport || $[46] !== onSend || $[47] !== queues || $[48] !== selectedExportName || $[49] !== sending || $[50] !== tab) {
993
+ t22 = tab === "send" && /* @__PURE__ */ jsxDEV(QueuesSendTab, {
975
994
  batchMode,
976
995
  bodyText,
977
996
  delayText,
@@ -984,39 +1003,40 @@ const QueuesPanel = (t0) => {
984
1003
  selectedExportName,
985
1004
  sending
986
1005
  }, void 0, false);
987
- $[55] = batchMode;
988
- $[56] = bodyText;
989
- $[57] = delayText;
990
- $[58] = onBatchModeChange;
991
- $[59] = onBodyChange;
992
- $[60] = onDelayChange;
993
- $[61] = onSelectExport;
994
- $[62] = onSend;
995
- $[63] = queues;
996
- $[64] = selectedExportName;
997
- $[65] = sending;
998
- $[66] = tab;
999
- $[67] = t20;
1006
+ $[39] = batchMode;
1007
+ $[40] = bodyText;
1008
+ $[41] = delayText;
1009
+ $[42] = onBatchModeChange;
1010
+ $[43] = onBodyChange;
1011
+ $[44] = onDelayChange;
1012
+ $[45] = onSelectExport;
1013
+ $[46] = onSend;
1014
+ $[47] = queues;
1015
+ $[48] = selectedExportName;
1016
+ $[49] = sending;
1017
+ $[50] = tab;
1018
+ $[51] = t22;
1000
1019
  } else {
1001
- t20 = $[67];
1020
+ t22 = $[51];
1002
1021
  }
1003
- let t21;
1004
- if ($[68] !== t16 || $[69] !== t17 || $[70] !== t18 || $[71] !== t19 || $[72] !== t20) {
1005
- t21 = /* @__PURE__ */ jsxDEV("div", {
1006
- className: "flex flex-col gap-6",
1007
- "data-testid": "lunora-queues-panel",
1008
- children: [t16, t17, t18, t19, t20]
1022
+ let t23;
1023
+ if ($[52] !== t17 || $[53] !== t18 || $[54] !== t19 || $[55] !== t20 || $[56] !== t21 || $[57] !== t22) {
1024
+ t23 = /* @__PURE__ */ jsxDEV("div", {
1025
+ className: t15,
1026
+ "data-testid": t16,
1027
+ children: [t17, t18, t19, t20, t21, t22]
1009
1028
  }, void 0, true);
1010
- $[68] = t16;
1011
- $[69] = t17;
1012
- $[70] = t18;
1013
- $[71] = t19;
1014
- $[72] = t20;
1015
- $[73] = t21;
1029
+ $[52] = t17;
1030
+ $[53] = t18;
1031
+ $[54] = t19;
1032
+ $[55] = t20;
1033
+ $[56] = t21;
1034
+ $[57] = t22;
1035
+ $[58] = t23;
1016
1036
  } else {
1017
- t21 = $[73];
1037
+ t23 = $[58];
1018
1038
  }
1019
- return t21;
1039
+ return t23;
1020
1040
  };
1021
1041
  function _temp(queue) {
1022
1042
  return /* @__PURE__ */ jsxDEV(TableRow, {
@@ -1048,5 +1068,8 @@ function _temp2(queue) {
1048
1068
  function _temp3(a, b) {
1049
1069
  return a.exportName.localeCompare(b.exportName);
1050
1070
  }
1071
+ function _temp4(queue_0) {
1072
+ return queue_0.name;
1073
+ }
1051
1074
 
1052
1075
  export { QueuesPanel as default };
@@ -1,10 +1,10 @@
1
1
  import { c } from 'react/compiler-runtime';
2
- import { E as ErrorAlert } from '../packem_shared/error-alert-BBT6D22d.js';
2
+ import { E as ErrorAlert } from '../packem_shared/error-alert-CXjqyGw9.js';
3
3
  import { B as Badge } from '../packem_shared/badge-B2PKA1-5.js';
4
4
  import { a as CardContent, C as Card } from '../packem_shared/card-DURq3ElK.js';
5
5
  import { E as EmptyState } from '../packem_shared/empty-state-DY_oe0k6.js';
6
6
  import { T as Table, a as TableHeader, b as TableRow, c as TableHead, d as TableBody, e as TableCell } from '../packem_shared/table-DsCa9Qp9.js';
7
- import { u as useAdminQuery } from '../packem_shared/use-admin-query-BHPKmPuj.js';
7
+ import { u as useAdminQuery } from '../packem_shared/use-admin-query-CfHYWx5n.js';
8
8
  import { useT } from '../packem_shared/DEFAULT_LOCALE-CiX4W7Kr.js';
9
9
  import { ADMIN_FUNCTIONS } from '../packem_shared/ADMIN_FUNCTIONS-BHHJi3Gb.js';
10
10
  import { jsxDEV } from 'react/jsx-dev-runtime';
@@ -8,11 +8,11 @@ import { B as Badge } from '../packem_shared/badge-B2PKA1-5.js';
8
8
  import { C as Card, a as CardContent } from '../packem_shared/card-DURq3ElK.js';
9
9
  import { E as EmptyState } from '../packem_shared/empty-state-DY_oe0k6.js';
10
10
  import { T as Table, a as TableHeader, b as TableRow, c as TableHead, d as TableBody, e as TableCell } from '../packem_shared/table-DsCa9Qp9.js';
11
- import { a as useClientQuery } from '../packem_shared/use-admin-query-BHPKmPuj.js';
12
- import { f as fireAndForget, e as errorMessage, i as formatTimestamp } from '../packem_shared/internal-DTsYVn-g.js';
11
+ import { a as useClientQuery } from '../packem_shared/use-admin-query-CfHYWx5n.js';
12
+ import { f as fireAndForget, e as errorMessage, i as formatTimestamp } from '../packem_shared/internal-CYcbqMjX.js';
13
13
  import { jsxDEV } from 'react/jsx-dev-runtime';
14
14
  import { useAutoRefresh } from '../packem_shared/DEFAULT_AUTO_REFRESH_MS-Vxwaxx51.js';
15
- import { ScheduledJobs } from '../packem_shared/ScheduledJobs-ClaNpZsg.js';
15
+ import { ScheduledJobs } from '../packem_shared/ScheduledJobs-Ctw4jYtU.js';
16
16
 
17
17
  const IDLE = {
18
18
  kind: "idle"
@@ -1,10 +1,10 @@
1
1
  import { c } from 'react/compiler-runtime';
2
- import { E as ErrorAlert } from '../packem_shared/error-alert-BBT6D22d.js';
2
+ import { E as ErrorAlert } from '../packem_shared/error-alert-CXjqyGw9.js';
3
3
  import { B as Badge } from '../packem_shared/badge-B2PKA1-5.js';
4
4
  import { C as Card, a as CardContent } from '../packem_shared/card-DURq3ElK.js';
5
5
  import { E as EmptyState } from '../packem_shared/empty-state-DY_oe0k6.js';
6
6
  import { T as Table, a as TableHeader, b as TableRow, c as TableHead, d as TableBody, e as TableCell } from '../packem_shared/table-DsCa9Qp9.js';
7
- import { u as useAdminQuery } from '../packem_shared/use-admin-query-BHPKmPuj.js';
7
+ import { u as useAdminQuery } from '../packem_shared/use-admin-query-CfHYWx5n.js';
8
8
  import { useT } from '../packem_shared/DEFAULT_LOCALE-CiX4W7Kr.js';
9
9
  import { ADMIN_FUNCTIONS } from '../packem_shared/ADMIN_FUNCTIONS-BHHJi3Gb.js';
10
10
  import { jsxDEV } from 'react/jsx-dev-runtime';