adonisjs-server-stats 1.10.3 → 1.11.1
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.
- package/dist/core/field-resolvers.d.ts +64 -0
- package/dist/core/formatters.d.ts +15 -0
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +208 -203
- package/dist/react/CacheSection-BYN53kYO.js +135 -0
- package/dist/react/CacheStatsBar-CRodCOeP.js +27 -0
- package/dist/react/CacheTab-DOhuK05d.js +106 -0
- package/dist/react/{ConfigSection-DGgqjAal.js → ConfigSection-B9EHh4Rp.js} +1 -1
- package/dist/react/{ConfigTab-H3OnYqmK.js → ConfigTab-C8kriE2b.js} +1 -1
- package/dist/react/CustomPaneTab-CvzQS_Wh.js +99 -0
- package/dist/react/EmailPreviewOverlay-BmXOAvqG.js +58 -0
- package/dist/react/EmailsSection-BJyFJf7A.js +226 -0
- package/dist/react/EmailsTab-Ch8jp10B.js +110 -0
- package/dist/react/{EventsSection-C7RQW_LY.js → EventsSection-DJPwHeT8.js} +27 -26
- package/dist/react/EventsTab-B-FoehXC.js +58 -0
- package/dist/react/{InternalsContent-DBzsI0CG.js → InternalsContent-O8ino9oM.js} +133 -109
- package/dist/react/InternalsSection-B6VlVx5f.js +22 -0
- package/dist/react/InternalsTab-CkEKpRMU.js +17 -0
- package/dist/react/JobStatsBar-C7RslAFE.js +30 -0
- package/dist/react/JobsSection-DWF4i1t_.js +167 -0
- package/dist/react/JobsTab-DqnifQXV.js +129 -0
- package/dist/react/LogEntryRow-CMMkqA9M.js +43 -0
- package/dist/react/LogsSection-C1xC5aP4.js +198 -0
- package/dist/react/LogsTab-CS4sLfLw.js +79 -0
- package/dist/react/{OverviewSection-ABP9ueBo.js → OverviewSection-CxvfOR0v.js} +70 -80
- package/dist/react/QueriesSection-CrMdU5Ax.js +458 -0
- package/dist/react/{QueriesTab-BQzcxEiW.js → QueriesTab-x85PjkyS.js} +22 -21
- package/dist/react/RequestsSection-DETN9oZb.js +321 -0
- package/dist/react/{RoutesSection-BRhxrtjZ.js → RoutesSection-CmorkJeC.js} +1 -1
- package/dist/react/{RoutesTab-CpYH5lUw.js → RoutesTab-CbzBOzpc.js} +12 -12
- package/dist/react/SplitPaneWrapper-BiIgT4ND.js +49 -0
- package/dist/react/TimeAgoCell-o3KigGfM.js +8 -0
- package/dist/react/{TimelineTab-DjLR35Ce.js → TimelineTab-Ue9tUD_n.js} +71 -91
- package/dist/react/{index-CsImORX6.js → index-DwDK-4oX.js} +4 -4
- package/dist/react/index.js +6 -6
- package/dist/react/react/components/shared/CacheStatsBar.d.ts +13 -0
- package/dist/react/react/components/shared/EmailPreviewOverlay.d.ts +29 -0
- package/dist/react/react/components/shared/JobStatsBar.d.ts +12 -0
- package/dist/react/react/components/shared/LogEntryRow.d.ts +9 -0
- package/dist/react/react/components/shared/RelatedLogs.d.ts +2 -2
- package/dist/react/react/components/shared/SplitPaneWrapper.d.ts +7 -0
- package/dist/react/react/components/shared/TimeAgoCell.d.ts +17 -0
- package/dist/react/react/hooks/useDiagnosticsData.d.ts +14 -0
- package/dist/react/style.css +1 -1
- package/dist/src/edge/client/dashboard.js +2 -2
- package/dist/src/edge/client/debug-panel-deferred.js +1 -1
- package/dist/src/edge/client-vue/dashboard.js +3 -3
- package/dist/src/edge/client-vue/debug-panel-deferred.js +4 -4
- package/dist/src/styles/components.css +67 -0
- package/dist/src/styles/dashboard.css +5 -15
- package/dist/src/styles/debug-panel.css +1 -22
- package/dist/src/styles/utilities.css +3 -1
- package/dist/vue/{CacheSection-ITqvpfH5.js → CacheSection-DT2Mwf_s.js} +1 -1
- package/dist/vue/{ConfigSection-DTn3GslE.js → ConfigSection-BwKwS9lh.js} +1 -1
- package/dist/vue/CustomPaneTab-Hr1IBHfz.js +172 -0
- package/dist/vue/{EmailsSection-DtLJ4XoS.js → EmailsSection-B65g0FVS.js} +1 -1
- package/dist/vue/{EventsSection-BOYYz0Ty.js → EventsSection-CxqtVF-o.js} +1 -1
- package/dist/vue/{JobsSection-BazTxcJL.js → JobsSection-rMIyMb-g.js} +1 -1
- package/dist/vue/{LogsSection-D55PjTKX.js → LogsSection-DmmZVJ7D.js} +1 -1
- package/dist/vue/{OverviewSection-1uBKo-Tu.js → OverviewSection-BMabyqw-.js} +49 -50
- package/dist/vue/{QueriesSection-rpoZ4ogd.js → QueriesSection-BfDFwGqH.js} +44 -45
- package/dist/vue/{QueriesTab-C8_7oprC.js → QueriesTab-DuTG7cpC.js} +30 -31
- package/dist/vue/RelatedLogs.vue_vue_type_script_setup_true_lang-Py1iu9GU.js +77 -0
- package/dist/vue/{RequestsSection-x7LvT0MC.js → RequestsSection-CTu4jPZ_.js} +143 -147
- package/dist/vue/{RoutesSection-CCD0zZqQ.js → RoutesSection-zQZDedL7.js} +1 -1
- package/dist/vue/TimelineTab-DHfXsX7t.js +334 -0
- package/dist/vue/components/shared/RelatedLogs.vue.d.ts +1 -4
- package/dist/vue/{index-C8MxnS7Q.js → index-CM3yNVUR.js} +2 -2
- package/dist/vue/index.js +1 -1
- package/dist/vue/style.css +1 -1
- package/package.json +7 -7
- package/dist/react/CacheSection-baMZotSn.js +0 -146
- package/dist/react/CacheTab-2cw_rMzj.js +0 -117
- package/dist/react/CustomPaneTab-B6r7ha0u.js +0 -98
- package/dist/react/EmailsSection-C-UZISG-.js +0 -262
- package/dist/react/EmailsTab-DbK4Eobn.js +0 -139
- package/dist/react/EventsTab-CfVr7AiM.js +0 -57
- package/dist/react/InternalsSection-t7ihcWO-.js +0 -32
- package/dist/react/InternalsTab-Oij0A2fN.js +0 -30
- package/dist/react/JobsSection-CQHNK_Ls.js +0 -187
- package/dist/react/JobsTab-znzf6jzk.js +0 -153
- package/dist/react/LogsSection-Dmm3rE2B.js +0 -233
- package/dist/react/LogsTab-D8unMV5P.js +0 -108
- package/dist/react/QueriesSection-CnmSkznA.js +0 -461
- package/dist/react/RelatedLogs-3A8RuGKH.js +0 -52
- package/dist/react/RequestsSection-kW79_M7k.js +0 -341
- package/dist/vue/CustomPaneTab-BJxT5Dp7.js +0 -172
- package/dist/vue/RelatedLogs.vue_vue_type_script_setup_true_lang-CB2_TzYW.js +0 -84
- package/dist/vue/TimelineTab-zj5Z5OdT.js +0 -338
|
@@ -1,33 +1,13 @@
|
|
|
1
1
|
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
|
2
|
-
import { useState as
|
|
3
|
-
import { formatDuration as
|
|
4
|
-
import { u as
|
|
5
|
-
import { u as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
classPrefix: i = "ss-dbg",
|
|
12
|
-
storageKey: u
|
|
13
|
-
}) {
|
|
14
|
-
const m = v(null), d = v(null), h = v(null), c = v(null);
|
|
15
|
-
return M(() => {
|
|
16
|
-
if (m.current && d.current && h.current && c.current)
|
|
17
|
-
return _({
|
|
18
|
-
container: m.current,
|
|
19
|
-
handle: d.current,
|
|
20
|
-
topPane: h.current,
|
|
21
|
-
bottomPane: c.current,
|
|
22
|
-
storageKey: u
|
|
23
|
-
});
|
|
24
|
-
}, [u]), /* @__PURE__ */ t("div", { ref: m, className: `${i}-split-container`, children: [
|
|
25
|
-
/* @__PURE__ */ e("div", { ref: h, className: `${i}-split-top`, children: o[0] }),
|
|
26
|
-
/* @__PURE__ */ e("div", { ref: d, className: `${i}-split-handle` }),
|
|
27
|
-
/* @__PURE__ */ e("div", { ref: c, className: `${i}-split-bottom`, children: o[1] })
|
|
28
|
-
] });
|
|
29
|
-
}
|
|
30
|
-
const k = {
|
|
2
|
+
import { useState as i, useMemo as q, useEffect as I, useCallback as O } from "react";
|
|
3
|
+
import { formatDuration as m, durationClassName as j } from "adonisjs-server-stats/core";
|
|
4
|
+
import { u as U } from "./useApiClient-BVtNCmnL.js";
|
|
5
|
+
import { u as W, M as D, S as L } from "./index-DwDK-4oX.js";
|
|
6
|
+
import { T as _ } from "./TimeAgoCell-o3KigGfM.js";
|
|
7
|
+
import { u as z } from "./useResizableTable-CNJmACdt.js";
|
|
8
|
+
import { F as G } from "./FilterBar-CQ7bD669.js";
|
|
9
|
+
import { S as K, R as V } from "./SplitPaneWrapper-BiIgT4ND.js";
|
|
10
|
+
const S = {
|
|
31
11
|
request: "#1e3a5f",
|
|
32
12
|
middleware: "rgba(30, 58, 95, 0.7)",
|
|
33
13
|
db: "#6d28d9",
|
|
@@ -35,7 +15,7 @@ const k = {
|
|
|
35
15
|
mail: "#059669",
|
|
36
16
|
event: "#b45309",
|
|
37
17
|
custom: "#525252"
|
|
38
|
-
},
|
|
18
|
+
}, H = [
|
|
39
19
|
{ label: "Request", color: "#1e3a5f" },
|
|
40
20
|
{ label: "Middleware", color: "rgba(30, 58, 95, 0.7)" },
|
|
41
21
|
{ label: "Database", color: "#6d28d9" },
|
|
@@ -43,67 +23,67 @@ const k = {
|
|
|
43
23
|
{ label: "Mail", color: "#059669" },
|
|
44
24
|
{ label: "Event", color: "#b45309" }
|
|
45
25
|
];
|
|
46
|
-
function
|
|
47
|
-
const { baseUrl:
|
|
48
|
-
const s =
|
|
49
|
-
if (!
|
|
50
|
-
const
|
|
26
|
+
function ae({ options: f }) {
|
|
27
|
+
const { baseUrl: E = "", debugEndpoint: N = "/admin/api/debug", authToken: T } = f || {}, { data: g, isLoading: k, error: v } = W("timeline", f), [n, $] = i(""), [c, u] = i(null), [d, w] = i(null), [M, b] = i(!1), [y, p] = i(null), o = q(() => {
|
|
28
|
+
const s = g?.traces || [];
|
|
29
|
+
if (!n) return s;
|
|
30
|
+
const r = n.toLowerCase();
|
|
51
31
|
return s.filter(
|
|
52
|
-
(
|
|
32
|
+
(a) => a.url.toLowerCase().includes(r) || a.method.toLowerCase().includes(r) || String(a.statusCode).includes(r)
|
|
53
33
|
);
|
|
54
|
-
}, [
|
|
55
|
-
|
|
56
|
-
if (
|
|
57
|
-
|
|
34
|
+
}, [g, n]), C = U(E, T);
|
|
35
|
+
I(() => {
|
|
36
|
+
if (c === null) {
|
|
37
|
+
w(null), p(null);
|
|
58
38
|
return;
|
|
59
39
|
}
|
|
60
40
|
let s = !1;
|
|
61
|
-
return
|
|
62
|
-
s || (
|
|
63
|
-
}).catch((
|
|
64
|
-
s || (
|
|
41
|
+
return b(!0), p(null), C().get(`${N}/traces/${c}`).then((a) => {
|
|
42
|
+
s || (w(a), b(!1));
|
|
43
|
+
}).catch((a) => {
|
|
44
|
+
s || (p(a instanceof Error ? a.message : "Failed to load trace"), b(!1));
|
|
65
45
|
}), () => {
|
|
66
46
|
s = !0;
|
|
67
47
|
};
|
|
68
|
-
}, [
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
}, []),
|
|
72
|
-
if (
|
|
48
|
+
}, [c, N, C]);
|
|
49
|
+
const R = O((s) => {
|
|
50
|
+
u((r) => r === s ? null : s);
|
|
51
|
+
}, []), B = z([o]);
|
|
52
|
+
if (k && !g)
|
|
73
53
|
return /* @__PURE__ */ e("div", { className: "ss-dbg-empty", children: "Loading traces..." });
|
|
74
|
-
if (
|
|
54
|
+
if (v)
|
|
75
55
|
return /* @__PURE__ */ t("div", { className: "ss-dbg-empty", children: [
|
|
76
56
|
"Error: ",
|
|
77
|
-
|
|
57
|
+
v.message
|
|
78
58
|
] });
|
|
79
|
-
if (
|
|
80
|
-
if (
|
|
59
|
+
if (c !== null) {
|
|
60
|
+
if (M)
|
|
81
61
|
return /* @__PURE__ */ e("div", { className: "ss-dbg-empty", children: "Loading trace detail..." });
|
|
82
|
-
if (
|
|
62
|
+
if (y)
|
|
83
63
|
return /* @__PURE__ */ t("div", { children: [
|
|
84
64
|
/* @__PURE__ */ e("div", { className: "ss-dbg-tl-detail-header", children: /* @__PURE__ */ e(
|
|
85
65
|
"button",
|
|
86
66
|
{
|
|
87
67
|
type: "button",
|
|
88
68
|
className: "ss-dbg-btn-clear",
|
|
89
|
-
onClick: () =>
|
|
69
|
+
onClick: () => u(null),
|
|
90
70
|
children: "← Back"
|
|
91
71
|
}
|
|
92
72
|
) }),
|
|
93
73
|
/* @__PURE__ */ t("div", { className: "ss-dbg-empty", children: [
|
|
94
74
|
"Error: ",
|
|
95
|
-
|
|
75
|
+
y
|
|
96
76
|
] })
|
|
97
77
|
] });
|
|
98
|
-
if (!
|
|
78
|
+
if (!d)
|
|
99
79
|
return /* @__PURE__ */ e("div", { className: "ss-dbg-empty", children: "Loading trace detail..." });
|
|
100
|
-
const s =
|
|
101
|
-
/* @__PURE__ */ e("div", { className: "ss-dbg-tl-legend", children:
|
|
80
|
+
const s = d.spans || [], r = d.warnings || [], a = d.logs || [], P = a.length > 0, x = /* @__PURE__ */ t("div", { children: [
|
|
81
|
+
/* @__PURE__ */ e("div", { className: "ss-dbg-tl-legend", children: H.map((l) => /* @__PURE__ */ t("div", { className: "ss-dbg-tl-legend-item", children: [
|
|
102
82
|
/* @__PURE__ */ e("div", { className: "ss-dbg-tl-legend-dot", style: { background: l.color } }),
|
|
103
83
|
/* @__PURE__ */ e("span", { children: l.label })
|
|
104
84
|
] }, l.label)) }),
|
|
105
85
|
/* @__PURE__ */ e("div", { style: { padding: "8px 12px", overflow: "auto" }, children: s.length === 0 ? /* @__PURE__ */ e("div", { className: "ss-dbg-empty", children: "No spans captured for this request" }) : s.map((l) => {
|
|
106
|
-
const
|
|
86
|
+
const h = d.totalDuration || 1, A = l.startOffset / h * 100, F = Math.max(l.duration / h * 100, 0.5);
|
|
107
87
|
return /* @__PURE__ */ t("div", { className: "ss-dbg-tl-row", children: [
|
|
108
88
|
/* @__PURE__ */ e("div", { className: "ss-dbg-tl-label", title: l.label, children: l.label }),
|
|
109
89
|
/* @__PURE__ */ e("div", { className: "ss-dbg-tl-track", children: /* @__PURE__ */ e(
|
|
@@ -111,19 +91,19 @@ function re({ options: o }) {
|
|
|
111
91
|
{
|
|
112
92
|
className: `ss-dbg-tl-bar ss-dbg-tl-bar-${l.category}`,
|
|
113
93
|
style: {
|
|
114
|
-
left: `${
|
|
115
|
-
width: `${
|
|
116
|
-
background:
|
|
94
|
+
left: `${A}%`,
|
|
95
|
+
width: `${F}%`,
|
|
96
|
+
background: S[l.category] || S.custom
|
|
117
97
|
},
|
|
118
|
-
title: `${l.label}: ${
|
|
98
|
+
title: `${l.label}: ${m(l.duration)}`
|
|
119
99
|
}
|
|
120
100
|
) }),
|
|
121
|
-
/* @__PURE__ */ e("span", { className: "ss-dbg-tl-dur", children:
|
|
101
|
+
/* @__PURE__ */ e("span", { className: "ss-dbg-tl-dur", children: m(l.duration) })
|
|
122
102
|
] }, l.id);
|
|
123
103
|
}) }),
|
|
124
|
-
|
|
104
|
+
r.length > 0 && /* @__PURE__ */ t("div", { className: "ss-dbg-tl-warnings", children: [
|
|
125
105
|
/* @__PURE__ */ e("div", { className: "ss-dbg-tl-warnings-title", children: "Warnings" }),
|
|
126
|
-
|
|
106
|
+
r.map((l, h) => /* @__PURE__ */ e("div", { className: "ss-dbg-tl-warning", children: l }, h))
|
|
127
107
|
] })
|
|
128
108
|
] });
|
|
129
109
|
return /* @__PURE__ */ t("div", { className: "ss-dbg-tl-detail-wrapper", children: [
|
|
@@ -133,37 +113,37 @@ function re({ options: o }) {
|
|
|
133
113
|
{
|
|
134
114
|
type: "button",
|
|
135
115
|
className: "ss-dbg-btn-clear",
|
|
136
|
-
onClick: () =>
|
|
116
|
+
onClick: () => u(null),
|
|
137
117
|
children: "← Back"
|
|
138
118
|
}
|
|
139
119
|
),
|
|
140
|
-
/* @__PURE__ */ e(
|
|
141
|
-
/* @__PURE__ */ e("span", { className: "ss-dbg-tl-detail-url", children:
|
|
142
|
-
/* @__PURE__ */ e(
|
|
120
|
+
/* @__PURE__ */ e(D, { method: d.method, classPrefix: "ss-dbg" }),
|
|
121
|
+
/* @__PURE__ */ e("span", { className: "ss-dbg-tl-detail-url", children: d.url }),
|
|
122
|
+
/* @__PURE__ */ e(L, { code: d.statusCode, classPrefix: "ss-dbg" }),
|
|
143
123
|
/* @__PURE__ */ t("span", { className: "ss-dbg-tl-meta", children: [
|
|
144
|
-
|
|
124
|
+
m(d.totalDuration),
|
|
145
125
|
" · ",
|
|
146
|
-
|
|
126
|
+
d.spanCount,
|
|
147
127
|
" spans"
|
|
148
128
|
] })
|
|
149
129
|
] }),
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
/* @__PURE__ */ e(
|
|
153
|
-
] }) :
|
|
130
|
+
P ? /* @__PURE__ */ t(K, { storageKey: "ss-dbg-timeline-split", children: [
|
|
131
|
+
x,
|
|
132
|
+
/* @__PURE__ */ e(V, { logs: a })
|
|
133
|
+
] }) : x
|
|
154
134
|
] });
|
|
155
135
|
}
|
|
156
136
|
return /* @__PURE__ */ t("div", { children: [
|
|
157
137
|
/* @__PURE__ */ e(
|
|
158
|
-
|
|
138
|
+
G,
|
|
159
139
|
{
|
|
160
|
-
search:
|
|
161
|
-
onSearchChange:
|
|
140
|
+
search: n,
|
|
141
|
+
onSearchChange: $,
|
|
162
142
|
placeholder: "Filter traces...",
|
|
163
|
-
summary: `${
|
|
143
|
+
summary: `${o.length} traces`
|
|
164
144
|
}
|
|
165
145
|
),
|
|
166
|
-
|
|
146
|
+
o.length === 0 ? /* @__PURE__ */ e("div", { className: "ss-dbg-empty", children: "No traces captured. Enable tracing in config." }) : /* @__PURE__ */ t("table", { ref: B, className: "ss-dbg-table", children: [
|
|
167
147
|
/* @__PURE__ */ t("colgroup", { children: [
|
|
168
148
|
/* @__PURE__ */ e("col", { style: { width: "50px" } }),
|
|
169
149
|
/* @__PURE__ */ e("col", { style: { width: "70px" } }),
|
|
@@ -182,25 +162,25 @@ function re({ options: o }) {
|
|
|
182
162
|
/* @__PURE__ */ e("th", { children: "Spans" }),
|
|
183
163
|
/* @__PURE__ */ e("th", { children: "Time" })
|
|
184
164
|
] }) }),
|
|
185
|
-
/* @__PURE__ */ e("tbody", { children:
|
|
165
|
+
/* @__PURE__ */ e("tbody", { children: o.map((s) => /* @__PURE__ */ t(
|
|
186
166
|
"tr",
|
|
187
167
|
{
|
|
188
168
|
className: "ss-dbg-email-row",
|
|
189
|
-
onClick: () =>
|
|
169
|
+
onClick: () => R(s.id),
|
|
190
170
|
children: [
|
|
191
171
|
/* @__PURE__ */ e("td", { className: "ss-dbg-c-dim", style: { whiteSpace: "nowrap" }, children: s.id }),
|
|
192
|
-
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e(
|
|
172
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e(D, { method: s.method, classPrefix: "ss-dbg" }) }),
|
|
193
173
|
/* @__PURE__ */ e("td", { title: s.url, children: s.url }),
|
|
194
|
-
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e(
|
|
174
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e(L, { code: s.statusCode, classPrefix: "ss-dbg" }) }),
|
|
195
175
|
/* @__PURE__ */ e(
|
|
196
176
|
"td",
|
|
197
177
|
{
|
|
198
|
-
className: `ss-dbg-duration ${
|
|
199
|
-
children:
|
|
178
|
+
className: `ss-dbg-duration ${j(s.totalDuration, "ss-dbg")}`,
|
|
179
|
+
children: m(s.totalDuration)
|
|
200
180
|
}
|
|
201
181
|
),
|
|
202
182
|
/* @__PURE__ */ e("td", { className: "ss-dbg-c-muted", style: { textAlign: "center" }, children: s.spanCount }),
|
|
203
|
-
/* @__PURE__ */ e("td", { className: "ss-dbg-event-time"
|
|
183
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e(_, { ts: s.timestamp, className: "ss-dbg-event-time" }) })
|
|
204
184
|
]
|
|
205
185
|
},
|
|
206
186
|
s.id
|
|
@@ -209,6 +189,6 @@ function re({ options: o }) {
|
|
|
209
189
|
] });
|
|
210
190
|
}
|
|
211
191
|
export {
|
|
212
|
-
|
|
213
|
-
|
|
192
|
+
ae as TimelineTab,
|
|
193
|
+
ae as default
|
|
214
194
|
};
|
|
@@ -435,7 +435,7 @@ function A({
|
|
|
435
435
|
}
|
|
436
436
|
);
|
|
437
437
|
}
|
|
438
|
-
const ge = L(() => import("./QueriesTab-
|
|
438
|
+
const ge = L(() => import("./QueriesTab-x85PjkyS.js")), me = L(() => import("./EventsTab-B-FoehXC.js")), ve = L(() => import("./EmailsTab-Ch8jp10B.js")), fe = L(() => import("./RoutesTab-CbzBOzpc.js")), we = L(() => import("./LogsTab-CS4sLfLw.js")), ke = L(() => import("./TimelineTab-Ue9tUD_n.js")), Ne = L(() => import("./CacheTab-DOhuK05d.js")), ye = L(() => import("./JobsTab-DqnifQXV.js")), Ce = L(() => import("./ConfigTab-C8kriE2b.js")), Se = L(() => import("./InternalsTab-CkEKpRMU.js")), Le = L(() => import("./CustomPaneTab-CvzQS_Wh.js"));
|
|
439
439
|
function Qe(s) {
|
|
440
440
|
const {
|
|
441
441
|
defaultOpen: o = !1,
|
|
@@ -724,7 +724,7 @@ const De = [
|
|
|
724
724
|
"jobs",
|
|
725
725
|
"config",
|
|
726
726
|
"internals"
|
|
727
|
-
], Re = L(() => import("./OverviewSection-
|
|
727
|
+
], Re = L(() => import("./OverviewSection-CxvfOR0v.js")), Oe = L(() => import("./RequestsSection-DETN9oZb.js")), _e = L(() => import("./QueriesSection-CrMdU5Ax.js")), je = L(() => import("./EventsSection-DJPwHeT8.js")), Pe = L(() => import("./RoutesSection-CmorkJeC.js")), He = L(() => import("./LogsSection-C1xC5aP4.js")), qe = L(() => import("./EmailsSection-BJyFJf7A.js")), Ue = L(() => import("./CacheSection-BYN53kYO.js")), Fe = L(() => import("./JobsSection-DWF4i1t_.js")), Ae = L(() => import("./ConfigSection-B9EHh4Rp.js")), ze = L(() => import("./InternalsSection-B6VlVx5f.js"));
|
|
728
728
|
function Xe(s) {
|
|
729
729
|
const {
|
|
730
730
|
baseUrl: o = "",
|
|
@@ -1107,10 +1107,10 @@ export {
|
|
|
1107
1107
|
Xe as D,
|
|
1108
1108
|
ts as J,
|
|
1109
1109
|
es as M,
|
|
1110
|
-
|
|
1110
|
+
ss as S,
|
|
1111
1111
|
A as T,
|
|
1112
1112
|
Be as a,
|
|
1113
|
-
|
|
1113
|
+
ue as b,
|
|
1114
1114
|
Qe as c,
|
|
1115
1115
|
Ge as d,
|
|
1116
1116
|
ns as e,
|
package/dist/react/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as s, D as t, c as r, J as u, M as g, d as o, d,
|
|
1
|
+
import { B as s, D as t, c as r, J as u, M as g, d as o, d, S as D, T as S, e as h, a as B, u as T, f as b, g as l, h as m } from "./index-DwDK-4oX.js";
|
|
2
2
|
export {
|
|
3
3
|
s as Badge,
|
|
4
4
|
t as DashboardPage,
|
|
@@ -8,11 +8,11 @@ export {
|
|
|
8
8
|
o as ServerStatsBar,
|
|
9
9
|
d as StatsBar,
|
|
10
10
|
D as StatusBadge,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
S as ThemeToggle,
|
|
12
|
+
h as Tooltip,
|
|
13
|
+
B as useDashboardData,
|
|
14
|
+
T as useDebugData,
|
|
15
|
+
b as useFeatures,
|
|
16
16
|
l as useServerStats,
|
|
17
17
|
m as useTheme
|
|
18
18
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface CacheStatsBarProps {
|
|
2
|
+
hitRate: number;
|
|
3
|
+
hits: number;
|
|
4
|
+
misses: number;
|
|
5
|
+
keys: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Shared cache stats bar showing Hit Rate, Hits, Misses, and Keys.
|
|
9
|
+
* Uses neutral `ss-cache-stats` CSS classes (with backward-compatible
|
|
10
|
+
* aliases for `ss-dash-` and `ss-dbg-` prefixes in components.css).
|
|
11
|
+
*/
|
|
12
|
+
export declare function CacheStatsBar({ hitRate, hits, misses, keys }: CacheStatsBarProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default CacheStatsBar;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared email preview overlay used by both Dashboard EmailsSection
|
|
3
|
+
* and DebugPanel EmailsTab.
|
|
4
|
+
*
|
|
5
|
+
* Uses the neutral `ss-email-*` CSS classes from `components.css`.
|
|
6
|
+
*/
|
|
7
|
+
export interface EmailPreviewData {
|
|
8
|
+
subject?: string | null;
|
|
9
|
+
from?: string | null;
|
|
10
|
+
to?: string | null;
|
|
11
|
+
cc?: string | null;
|
|
12
|
+
status?: string | null;
|
|
13
|
+
mailer?: string | null;
|
|
14
|
+
text?: string | null;
|
|
15
|
+
}
|
|
16
|
+
export interface EmailPreviewOverlayProps {
|
|
17
|
+
/** Email metadata to display in the header. */
|
|
18
|
+
email: EmailPreviewData | null;
|
|
19
|
+
/** The HTML string to render in the preview iframe, or `null`. */
|
|
20
|
+
previewHtml: string | null;
|
|
21
|
+
/** Whether the preview HTML is still loading. */
|
|
22
|
+
isLoading?: boolean;
|
|
23
|
+
/** Callback to close the preview overlay. */
|
|
24
|
+
onClose: () => void;
|
|
25
|
+
/** Optional CSS class name for the root container (allows context-specific overrides). */
|
|
26
|
+
className?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function EmailPreviewOverlay({ email, previewHtml, isLoading, onClose, className, }: EmailPreviewOverlayProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export default EmailPreviewOverlay;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { JobStats } from '../../../core/types.js';
|
|
2
|
+
interface JobStatsBarProps {
|
|
3
|
+
stats: JobStats | null;
|
|
4
|
+
/** CSS class prefix: 'ss-dash' for dashboard, 'ss-dbg' for debug panel, or 'ss' for neutral. */
|
|
5
|
+
classPrefix?: 'ss' | 'ss-dash' | 'ss-dbg';
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Shared stats bar showing Active/Waiting/Delayed/Completed/Failed counts.
|
|
9
|
+
* Used by both Dashboard JobsSection and DebugPanel JobsTab.
|
|
10
|
+
*/
|
|
11
|
+
export declare function JobStatsBar({ stats, classPrefix }: JobStatsBarProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
export default JobStatsBar;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LogEntry } from '../../../core/log-utils.js';
|
|
2
|
+
export interface LogEntryRowProps {
|
|
3
|
+
log: LogEntry | Record<string, unknown>;
|
|
4
|
+
index: number;
|
|
5
|
+
expanded: boolean;
|
|
6
|
+
onToggleExpand: (index: number) => void;
|
|
7
|
+
onReqIdClick?: (reqId: string) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function LogEntryRow({ log, index, expanded, onToggleExpand, onReqIdClick }: LogEntryRowProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { LogEntry } from '../../../core/log-utils.js';
|
|
2
2
|
interface RelatedLogsProps {
|
|
3
3
|
logs: LogEntry[];
|
|
4
|
-
|
|
4
|
+
onReqIdClick?: (reqId: string) => void;
|
|
5
5
|
}
|
|
6
|
-
export declare function RelatedLogs({ logs,
|
|
6
|
+
export declare function RelatedLogs({ logs, onReqIdClick }: RelatedLogsProps): import("react/jsx-runtime").JSX.Element | null;
|
|
7
7
|
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
interface SplitPaneWrapperProps {
|
|
3
|
+
children: [React.ReactNode, React.ReactNode];
|
|
4
|
+
storageKey?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function SplitPaneWrapper({ children, storageKey }: SplitPaneWrapperProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
interface TimeAgoCellProps {
|
|
3
|
+
/** Unix timestamp in milliseconds, or an ISO date string. */
|
|
4
|
+
ts: number | string | null | undefined;
|
|
5
|
+
/** CSS class name for the wrapper span. */
|
|
6
|
+
className?: string;
|
|
7
|
+
/** Optional inline styles. */
|
|
8
|
+
style?: React.CSSProperties;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Renders a relative time string (e.g. "3s ago") with a tooltip showing
|
|
12
|
+
* the formatted absolute time.
|
|
13
|
+
*
|
|
14
|
+
* Replaces the repeated `<span title={formatTime(ts)}>{timeAgo(ts)}</span>` pattern.
|
|
15
|
+
*/
|
|
16
|
+
export declare function TimeAgoCell({ ts, className, style }: TimeAgoCellProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DiagnosticsResponse } from '../../core/types.js';
|
|
2
|
+
interface UseDiagnosticsDataOptions {
|
|
3
|
+
baseUrl?: string;
|
|
4
|
+
debugEndpoint?: string;
|
|
5
|
+
authToken?: string;
|
|
6
|
+
/** Polling interval in ms. Defaults to 3000. */
|
|
7
|
+
refreshInterval?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function useDiagnosticsData(options?: UseDiagnosticsDataOptions): {
|
|
10
|
+
data: DiagnosticsResponse | null;
|
|
11
|
+
isLoading: boolean;
|
|
12
|
+
error: Error | null;
|
|
13
|
+
};
|
|
14
|
+
export {};
|