adonisjs-server-stats 1.8.0 → 1.10.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 (91) hide show
  1. package/dist/core/index.js +24 -22
  2. package/dist/core/log-utils.d.ts +14 -0
  3. package/dist/core/split-pane.d.ts +18 -0
  4. package/dist/core/trace-utils.d.ts +5 -0
  5. package/dist/core/types.d.ts +1 -1
  6. package/dist/react/{CacheSection-D5J5moz7.js → CacheSection-UCMptWyn.js} +1 -1
  7. package/dist/react/{CacheTab-F1MkWSZl.js → CacheTab-CA8LB1J5.js} +1 -1
  8. package/dist/react/{ConfigSection-DerLBu4o.js → ConfigSection-DfFd-WRq.js} +1 -1
  9. package/dist/react/{ConfigTab-Bsj7v9JW.js → ConfigTab-Bdg8YMer.js} +1 -1
  10. package/dist/react/{CustomPaneTab-gzdtDEvz.js → CustomPaneTab-Bxtv_8Rw.js} +1 -1
  11. package/dist/react/{EmailsSection-ndH3cvJk.js → EmailsSection-CM7stSyh.js} +1 -1
  12. package/dist/react/{EmailsTab-DVPHRx0L.js → EmailsTab-BDhEiomM.js} +1 -1
  13. package/dist/react/{EventsSection-ClIByDSk.js → EventsSection-ByQ-9blq.js} +1 -1
  14. package/dist/react/{EventsTab-CCzWEKrk.js → EventsTab-CMfY98Rl.js} +1 -1
  15. package/dist/react/{JobsSection-CVMyAs7O.js → JobsSection-DF3qEv9O.js} +1 -1
  16. package/dist/react/{JobsTab-CATUyb9V.js → JobsTab-BbrBWIOb.js} +1 -1
  17. package/dist/react/LogsSection-DcFTZY7b.js +227 -0
  18. package/dist/react/LogsTab-CicucmVk.js +103 -0
  19. package/dist/react/{OverviewSection-ae5AO2RG.js → OverviewSection-C4T1ur51.js} +1 -1
  20. package/dist/react/{QueriesSection-DFFr9Tbb.js → QueriesSection-PswteoF9.js} +1 -1
  21. package/dist/react/{QueriesTab-GrHRAREt.js → QueriesTab-osLUWd4L.js} +1 -1
  22. package/dist/react/RelatedLogs-DFDOyUMr.js +40 -0
  23. package/dist/react/RequestsSection-Nag30rEA.js +341 -0
  24. package/dist/react/{RoutesSection-F7nANhF0.js → RoutesSection-BUSkM6PY.js} +1 -1
  25. package/dist/react/{RoutesTab-rugjhCPH.js → RoutesTab-DgVzd2PZ.js} +1 -1
  26. package/dist/react/TimelineTab-Covg5weo.js +220 -0
  27. package/dist/react/{index-DDzo1bZk.js → index-Cflz9Ebj.js} +390 -395
  28. package/dist/react/index.js +1 -1
  29. package/dist/react/react/components/shared/JsonViewer.d.ts +2 -1
  30. package/dist/react/react/components/shared/RelatedLogs.d.ts +7 -0
  31. package/dist/react/style.css +1 -1
  32. package/dist/src/controller/debug_controller.js +1 -1
  33. package/dist/src/dashboard/dashboard_controller.js +13 -0
  34. package/dist/src/dashboard/dashboard_store.d.ts +1 -0
  35. package/dist/src/dashboard/dashboard_store.js +88 -41
  36. package/dist/src/dashboard/migrator.js +6 -0
  37. package/dist/src/data/data_access.d.ts +7 -0
  38. package/dist/src/data/data_access.js +32 -1
  39. package/dist/src/debug/trace_collector.d.ts +1 -1
  40. package/dist/src/debug/trace_collector.js +2 -1
  41. package/dist/src/debug/types.d.ts +4 -0
  42. package/dist/src/edge/client/dashboard.js +2 -2
  43. package/dist/src/edge/client/debug-panel-deferred.js +1 -1
  44. package/dist/src/edge/client-vue/dashboard.js +4 -4
  45. package/dist/src/edge/client-vue/debug-panel-deferred.js +3 -3
  46. package/dist/src/middleware/request_tracking_middleware.d.ts +1 -0
  47. package/dist/src/middleware/request_tracking_middleware.js +3 -1
  48. package/dist/src/provider/server_stats_provider.d.ts +3 -3
  49. package/dist/src/provider/server_stats_provider.js +29 -15
  50. package/dist/src/routes/register_routes.js +7 -2
  51. package/dist/src/styles/components.css +162 -0
  52. package/dist/src/styles/debug-panel.css +9 -0
  53. package/dist/src/types.d.ts +1 -1
  54. package/dist/vue/{CacheSection-DDvJ7bs2.js → CacheSection-oFAJL3mo.js} +2 -2
  55. package/dist/vue/{ConfigSection-GTCrvsPr.js → ConfigSection-BhfJ4KqL.js} +1 -1
  56. package/dist/vue/{EmailsSection-Ct5vsLCc.js → EmailsSection-BcNyhyHs.js} +1 -1
  57. package/dist/vue/{EventsSection-CRVhtagq.js → EventsSection-r60Q5Lmu.js} +2 -2
  58. package/dist/vue/{EventsTab-DQ4Nd6AK.js → EventsTab-BBM7olXF.js} +1 -1
  59. package/dist/vue/{JobsSection-B_wH2Co7.js → JobsSection-BHL-hkQw.js} +2 -2
  60. package/dist/vue/{JobsTab-BCvhOARO.js → JobsTab-WFnxPdN7.js} +1 -1
  61. package/dist/vue/{JsonViewer.vue_vue_type_script_setup_true_lang-Vsqar1zx.js → JsonViewer.vue_vue_type_script_setup_true_lang-Bid05zpm.js} +25 -23
  62. package/dist/vue/LogsSection-DRMGzJmg.js +252 -0
  63. package/dist/vue/LogsTab-Bg3o0Mm6.js +147 -0
  64. package/dist/vue/{OverviewSection-BqSwuMKH.js → OverviewSection-CXh6Ja1B.js} +1 -1
  65. package/dist/vue/{QueriesSection-D4Fs0YH6.js → QueriesSection-IodIsCJ-.js} +1 -1
  66. package/dist/vue/RelatedLogs.vue_vue_type_script_setup_true_lang-CB2_TzYW.js +84 -0
  67. package/dist/vue/RequestsSection-BPuMdmMc.js +401 -0
  68. package/dist/vue/{RoutesSection-Ys5dTzvF.js → RoutesSection-NKo3Rbq3.js} +1 -1
  69. package/dist/vue/TimelineTab-zj5Z5OdT.js +338 -0
  70. package/dist/vue/components/Dashboard/sections/RequestsSection.vue.d.ts +4 -0
  71. package/dist/vue/components/DebugPanel/tabs/TimelineTab.vue.d.ts +4 -0
  72. package/dist/vue/components/shared/JsonViewer.vue.d.ts +3 -0
  73. package/dist/vue/components/{Dashboard/sections/TimelineSection.vue.d.ts → shared/RelatedLogs.vue.d.ts} +5 -6
  74. package/dist/vue/index-Dtgysd26.js +1229 -0
  75. package/dist/vue/index.js +1 -1
  76. package/dist/vue/style.css +1 -1
  77. package/package.json +1 -1
  78. package/dist/react/LogsSection-hAsLaKOC.js +0 -212
  79. package/dist/react/LogsTab-QouH4NPQ.js +0 -88
  80. package/dist/react/RequestsSection-DtwnJOnM.js +0 -209
  81. package/dist/react/TimelineSection-F5ThmTdy.js +0 -158
  82. package/dist/react/TimelineTab-Dvpf-I5C.js +0 -193
  83. package/dist/react/WaterfallChart-Cj73WdfM.js +0 -100
  84. package/dist/react/react/components/Dashboard/sections/TimelineSection.d.ts +0 -8
  85. package/dist/vue/LogsSection-C4NRFOpA.js +0 -227
  86. package/dist/vue/LogsTab-DpEQ7euu.js +0 -122
  87. package/dist/vue/RequestsSection-B0A5SKcM.js +0 -243
  88. package/dist/vue/TimelineSection-D38iHB08.js +0 -186
  89. package/dist/vue/TimelineTab-Db6lKKsD.js +0 -250
  90. package/dist/vue/WaterfallChart.vue_vue_type_script_setup_true_lang-tZ13cNj1.js +0 -118
  91. package/dist/vue/index-Bj6pm5g3.js +0 -1235
@@ -0,0 +1,401 @@
1
+ import { defineComponent as I, computed as x, openBlock as l, createElementBlock as o, normalizeClass as p, createElementVNode as s, Fragment as f, renderList as B, normalizeStyle as U, toDisplayString as d, createTextVNode as k, createCommentVNode as v, inject as L, ref as m, watch as es, nextTick as as, onUnmounted as ls, createVNode as j, createBlock as G, unref as r } from "vue";
2
+ import { initSplitPane as ns, formatTime as os, timeAgo as is, normalizeTraceFields as ds, durationSeverity as rs } from "adonisjs-server-stats/core";
3
+ import { u as us } from "./useApiClient-BQQ9CF-q.js";
4
+ import { u as cs } from "./index-Dtgysd26.js";
5
+ import { u as hs } from "./useResizableTable-BoivAevK.js";
6
+ import { _ as ms } from "./FilterBar.vue_vue_type_script_setup_true_lang-ClJ37hhT.js";
7
+ import { _ as vs } from "./PaginationControls.vue_vue_type_script_setup_true_lang-CuN7g_8Z.js";
8
+ import { _ as ps } from "./RelatedLogs.vue_vue_type_script_setup_true_lang-CB2_TzYW.js";
9
+ const fs = {
10
+ key: 0,
11
+ class: "ss-dash-empty"
12
+ }, gs = { class: "ss-dash-tl-legend" }, ys = ["title"], _s = { class: "ss-dash-tl-track" }, ks = ["title"], ws = { class: "ss-dash-tl-dur" }, bs = {
13
+ key: 0,
14
+ class: "ss-dash-tl-warnings"
15
+ }, Cs = { class: "ss-dash-tl-warnings-title" }, H = /* @__PURE__ */ I({
16
+ __name: "WaterfallChart",
17
+ props: {
18
+ spans: {},
19
+ totalDuration: {},
20
+ className: {},
21
+ warnings: {}
22
+ },
23
+ setup(g) {
24
+ const w = g, b = {
25
+ request: "#1e3a5f",
26
+ middleware: "rgba(30, 58, 95, 0.7)",
27
+ db: "#6d28d9",
28
+ view: "#0e7490",
29
+ mail: "#059669",
30
+ event: "#b45309",
31
+ custom: "var(--ss-dim)"
32
+ }, R = {
33
+ request: "Request",
34
+ middleware: "Middleware",
35
+ db: "DB",
36
+ mail: "Mail",
37
+ event: "Event",
38
+ view: "View",
39
+ custom: "Custom"
40
+ }, C = x(() => w.spans || []), y = x(
41
+ () => [...C.value].sort((a, u) => a.startOffset - u.startOffset)
42
+ ), T = x(() => {
43
+ const a = {};
44
+ for (const u of y.value)
45
+ a[u.id] = u.parentId ? (a[u.parentId] || 0) + 1 : 0;
46
+ return a;
47
+ });
48
+ function A(a) {
49
+ const u = w.totalDuration || 1;
50
+ return `${a.startOffset / u * 100}%`;
51
+ }
52
+ function _(a) {
53
+ const u = w.totalDuration || 1;
54
+ return `${Math.max(a.duration / u * 100, 0.5)}%`;
55
+ }
56
+ function h(a) {
57
+ return a.length > 50 ? a.slice(0, 50) + "..." : a;
58
+ }
59
+ function F(a) {
60
+ return a === "db" ? "DB" : a;
61
+ }
62
+ function N(a) {
63
+ return a === "db" ? "purple" : a === "mail" ? "green" : a === "event" ? "amber" : a === "view" ? "blue" : "muted";
64
+ }
65
+ function q(a) {
66
+ const u = a.metadata ? Object.entries(a.metadata).filter(([, i]) => i != null).map(([i, n]) => `${i}=${n}`).join(", ") : "";
67
+ return u ? `${a.label} (${a.duration.toFixed(2)}ms)
68
+ ${u}` : `${a.label} (${a.duration.toFixed(2)}ms)`;
69
+ }
70
+ return (a, u) => C.value.length === 0 ? (l(), o("div", fs, "No spans recorded")) : (l(), o("div", {
71
+ key: 1,
72
+ class: p(`ss-dash-tl-waterfall ${g.className || ""}`)
73
+ }, [
74
+ s("div", gs, [
75
+ (l(), o(f, null, B(R, (i, n) => s("div", {
76
+ key: n,
77
+ class: "ss-dash-tl-legend-item"
78
+ }, [
79
+ s("span", {
80
+ class: "ss-dash-tl-legend-dot",
81
+ style: U({ background: b[n] || b.custom })
82
+ }, null, 4),
83
+ s("span", null, d(i), 1)
84
+ ])), 64))
85
+ ]),
86
+ (l(!0), o(f, null, B(y.value, (i) => (l(), o("div", {
87
+ key: i.id,
88
+ class: "ss-dash-tl-row"
89
+ }, [
90
+ s("div", {
91
+ class: "ss-dash-tl-label",
92
+ title: q(i),
93
+ style: U({ paddingLeft: 8 + (T.value[i.id] || 0) * 16 + "px" })
94
+ }, [
95
+ s("span", {
96
+ class: p(`ss-dash-badge ss-dash-badge-${N(i.category)}`),
97
+ style: { "font-size": "9px", "margin-right": "4px" }
98
+ }, d(F(i.category)), 3),
99
+ k(" " + d(h(i.label)), 1)
100
+ ], 12, ys),
101
+ s("div", _s, [
102
+ s("div", {
103
+ class: p(`ss-dash-tl-bar ss-dash-tl-bar-${i.category || "custom"}`),
104
+ style: U({
105
+ left: A(i),
106
+ width: _(i)
107
+ }),
108
+ title: q(i)
109
+ }, null, 14, ks)
110
+ ]),
111
+ s("span", ws, d(i.duration.toFixed(2)) + "ms", 1)
112
+ ]))), 128)),
113
+ g.warnings && g.warnings.length > 0 ? (l(), o("div", bs, [
114
+ s("div", Cs, "Warnings (" + d(g.warnings.length) + ")", 1),
115
+ (l(!0), o(f, null, B(g.warnings, (i, n) => (l(), o("div", {
116
+ key: n,
117
+ class: "ss-dash-tl-warning"
118
+ }, d(i), 1))), 128))
119
+ ])) : v("", !0)
120
+ ], 2));
121
+ }
122
+ }), $s = { class: "ss-dash-tl-detail-header" }, xs = { style: { color: "var(--ss-text)" } }, Rs = { class: "ss-dash-tl-meta" }, qs = { class: "ss-dash-tl-detail-header" }, Ds = {
123
+ key: 0,
124
+ class: "ss-dash-empty"
125
+ }, Ss = {
126
+ key: 1,
127
+ class: "ss-dash-empty"
128
+ }, Ls = { class: "ss-dash-table-wrap" }, Bs = {
129
+ key: 0,
130
+ class: "ss-dash-sort-arrow"
131
+ }, Ts = {
132
+ key: 0,
133
+ class: "ss-dash-sort-arrow"
134
+ }, As = {
135
+ key: 0,
136
+ class: "ss-dash-sort-arrow"
137
+ }, Fs = {
138
+ key: 0,
139
+ class: "ss-dash-sort-arrow"
140
+ }, Ns = {
141
+ key: 0,
142
+ class: "ss-dash-sort-arrow"
143
+ }, Os = ["onClick"], Ps = { style: { color: "var(--ss-dim)" } }, Es = ["title"], Ms = { style: { color: "var(--ss-muted)", "text-align": "center" } }, Vs = {
144
+ key: 0,
145
+ style: { color: "var(--ss-amber-fg)", "text-align": "center", display: "block" }
146
+ }, zs = {
147
+ key: 1,
148
+ style: { color: "var(--ss-dim)", "text-align": "center", display: "block" }
149
+ }, Us = ["title"], js = {
150
+ key: 1,
151
+ class: "ss-dash-empty"
152
+ }, Xs = /* @__PURE__ */ I({
153
+ __name: "RequestsSection",
154
+ setup(g) {
155
+ const w = L("ss-refresh-key", m(0)), b = L("ss-dashboard-endpoint", "/__stats/api"), R = L("ss-auth-token", void 0), C = L("ss-base-url", ""), { data: y, loading: T, error: A, pagination: _, sort: h, goToPage: F, setSearch: N, setSort: q } = cs(
156
+ () => "requests",
157
+ {
158
+ baseUrl: C,
159
+ dashboardEndpoint: b,
160
+ authToken: R,
161
+ refreshKey: w
162
+ }
163
+ ), a = m(""), u = m(null), i = m(!1), n = m(null), O = x(() => {
164
+ if (!y.value) return [];
165
+ const c = y.value;
166
+ return c.data || c.requests || y.value || [];
167
+ }), K = us(C, R);
168
+ async function Y(c) {
169
+ const t = c.id;
170
+ i.value = !0;
171
+ try {
172
+ const e = b || "/__stats/api", S = await K().fetch(`${e}/requests/${t}`), W = S.trace, ts = W ? { ...S, ...W, logs: S.logs } : S;
173
+ n.value = ds(ts), u.value = c;
174
+ } catch {
175
+ } finally {
176
+ i.value = !1;
177
+ }
178
+ }
179
+ function J() {
180
+ u.value = null, n.value = null;
181
+ }
182
+ function Q(c) {
183
+ a.value = c, N(c);
184
+ }
185
+ function $(c) {
186
+ q(c);
187
+ }
188
+ function X(c) {
189
+ const t = rs(c);
190
+ return t === "very-slow" ? "ss-dash-very-slow" : t === "slow" ? "ss-dash-slow" : "";
191
+ }
192
+ const { tableRef: Z } = hs(() => O.value), P = m(null), E = m(null), M = m(null), V = m(null);
193
+ let D = null;
194
+ const z = x(() => n.value ? n.value.logs || [] : []);
195
+ return es([() => u.value, () => n.value], async () => {
196
+ D?.(), D = null, n.value && z.value.length > 0 && (await as(), P.value && E.value && M.value && V.value && (D = ns({
197
+ container: P.value,
198
+ handle: E.value,
199
+ topPane: M.value,
200
+ bottomPane: V.value,
201
+ storageKey: "ss-requests-split"
202
+ })));
203
+ }), ls(() => {
204
+ D?.();
205
+ }), (c, t) => (l(), o("div", null, [
206
+ n.value && u.value ? (l(), o(f, { key: 0 }, [
207
+ s("div", $s, [
208
+ s("button", {
209
+ type: "button",
210
+ class: "ss-dash-btn",
211
+ onClick: J
212
+ }, " ← Back to Requests "),
213
+ s("span", {
214
+ class: p(`ss-dash-method ss-dash-method-${(n.value.method || "").toLowerCase()}`)
215
+ }, d(n.value.method), 3),
216
+ s("span", xs, d(n.value.url), 1),
217
+ s("span", {
218
+ class: p(`ss-dash-status ss-dash-status-${Math.floor((n.value.statusCode || 200) / 100)}xx`)
219
+ }, d(n.value.statusCode), 3),
220
+ s("span", Rs, d(n.value.totalDuration.toFixed(1)) + "ms · " + d(n.value.spanCount) + " spans ", 1)
221
+ ]),
222
+ z.value.length > 0 ? (l(), o("div", {
223
+ key: 0,
224
+ ref_key: "splitContainerRef",
225
+ ref: P,
226
+ class: "ss-dash-split-container"
227
+ }, [
228
+ s("div", {
229
+ ref_key: "splitTopRef",
230
+ ref: M,
231
+ class: "ss-dash-split-top"
232
+ }, [
233
+ j(H, {
234
+ spans: n.value.spans,
235
+ "total-duration": n.value.totalDuration,
236
+ warnings: n.value.warnings
237
+ }, null, 8, ["spans", "total-duration", "warnings"])
238
+ ], 512),
239
+ s("div", {
240
+ ref_key: "splitHandleRef",
241
+ ref: E,
242
+ class: "ss-dash-split-handle"
243
+ }, null, 512),
244
+ s("div", {
245
+ ref_key: "splitBottomRef",
246
+ ref: V,
247
+ class: "ss-dash-split-bottom"
248
+ }, [
249
+ j(ps, {
250
+ logs: z.value,
251
+ "class-prefix": "ss-dash"
252
+ }, null, 8, ["logs"])
253
+ ], 512)
254
+ ], 512)) : (l(), G(H, {
255
+ key: 1,
256
+ spans: n.value.spans,
257
+ "total-duration": n.value.totalDuration,
258
+ warnings: n.value.warnings
259
+ }, null, 8, ["spans", "total-duration", "warnings"]))
260
+ ], 64)) : i.value ? (l(), o(f, { key: 1 }, [
261
+ s("div", qs, [
262
+ s("button", {
263
+ type: "button",
264
+ class: "ss-dash-btn",
265
+ onClick: t[0] || (t[0] = (e) => i.value = !1)
266
+ }, " ← Back to Requests ")
267
+ ]),
268
+ t[6] || (t[6] = s("div", { class: "ss-dash-empty" }, "Loading request detail...", -1))
269
+ ], 64)) : (l(), o(f, { key: 2 }, [
270
+ j(ms, {
271
+ "model-value": a.value,
272
+ placeholder: "Filter requests...",
273
+ summary: `${r(_).total ?? 0} requests`,
274
+ "onUpdate:modelValue": Q
275
+ }, null, 8, ["model-value", "summary"]),
276
+ r(A) ? (l(), o("div", Ds, "Failed to load requests")) : v("", !0),
277
+ r(T) && !r(y) ? (l(), o("div", Ss, "Loading requests...")) : (l(), o(f, { key: 2 }, [
278
+ s("div", Ls, [
279
+ O.value.length > 0 ? (l(), o("table", {
280
+ key: 0,
281
+ ref_key: "tableRef",
282
+ ref: Z,
283
+ class: "ss-dash-table"
284
+ }, [
285
+ t[15] || (t[15] = s("colgroup", null, [
286
+ s("col", { style: { width: "40px" } }),
287
+ s("col", { style: { width: "70px" } }),
288
+ s("col"),
289
+ s("col", { style: { width: "60px" } }),
290
+ s("col", { style: { width: "80px" } }),
291
+ s("col", { style: { width: "50px" } }),
292
+ s("col", { style: { width: "40px" } }),
293
+ s("col", { style: { width: "80px" } })
294
+ ], -1)),
295
+ s("thead", null, [
296
+ s("tr", null, [
297
+ t[12] || (t[12] = s("th", null, "#", -1)),
298
+ s("th", {
299
+ class: "ss-dash-sortable",
300
+ onClick: t[1] || (t[1] = (e) => $("method"))
301
+ }, [
302
+ t[7] || (t[7] = k(" Method ", -1)),
303
+ r(h).column === "method" ? (l(), o("span", Bs, d(r(h).direction === "asc" ? " ▲" : " ▼"), 1)) : v("", !0)
304
+ ]),
305
+ s("th", {
306
+ class: "ss-dash-sortable",
307
+ onClick: t[2] || (t[2] = (e) => $("url"))
308
+ }, [
309
+ t[8] || (t[8] = k(" URL ", -1)),
310
+ r(h).column === "url" ? (l(), o("span", Ts, d(r(h).direction === "asc" ? " ▲" : " ▼"), 1)) : v("", !0)
311
+ ]),
312
+ s("th", {
313
+ class: "ss-dash-sortable",
314
+ onClick: t[3] || (t[3] = (e) => $("statusCode"))
315
+ }, [
316
+ t[9] || (t[9] = k(" Status ", -1)),
317
+ r(h).column === "statusCode" ? (l(), o("span", As, d(r(h).direction === "asc" ? " ▲" : " ▼"), 1)) : v("", !0)
318
+ ]),
319
+ s("th", {
320
+ class: "ss-dash-sortable",
321
+ onClick: t[4] || (t[4] = (e) => $("duration"))
322
+ }, [
323
+ t[10] || (t[10] = k(" Duration ", -1)),
324
+ r(h).column === "duration" ? (l(), o("span", Fs, d(r(h).direction === "asc" ? " ▲" : " ▼"), 1)) : v("", !0)
325
+ ]),
326
+ t[13] || (t[13] = s("th", null, "Spans", -1)),
327
+ t[14] || (t[14] = s("th", null, "⚠", -1)),
328
+ s("th", {
329
+ class: "ss-dash-sortable",
330
+ onClick: t[5] || (t[5] = (e) => $("createdAt"))
331
+ }, [
332
+ t[11] || (t[11] = k(" Time ", -1)),
333
+ r(h).column === "createdAt" ? (l(), o("span", Ns, d(r(h).direction === "asc" ? " ▲" : " ▼"), 1)) : v("", !0)
334
+ ])
335
+ ])
336
+ ]),
337
+ s("tbody", null, [
338
+ (l(!0), o(f, null, B(O.value, (e) => (l(), o("tr", {
339
+ key: e.id,
340
+ class: "ss-dash-clickable",
341
+ onClick: (ss) => Y(e)
342
+ }, [
343
+ s("td", null, [
344
+ s("span", Ps, d(e.id), 1)
345
+ ]),
346
+ s("td", null, [
347
+ s("span", {
348
+ class: p(`ss-dash-method ss-dash-method-${(e.method || "").toLowerCase()}`)
349
+ }, d(e.method), 3)
350
+ ]),
351
+ s("td", null, [
352
+ s("span", {
353
+ style: { color: "var(--ss-text)", overflow: "hidden", "text-overflow": "ellipsis", "white-space": "nowrap" },
354
+ title: e.url
355
+ }, d(e.url), 9, Es)
356
+ ]),
357
+ s("td", null, [
358
+ s("span", {
359
+ class: p(`ss-dash-status ss-dash-status-${Math.floor((e.status_code || e.statusCode || 200) / 100)}xx`)
360
+ }, d(e.status_code || e.statusCode), 3)
361
+ ]),
362
+ s("td", null, [
363
+ s("span", {
364
+ class: p(`ss-dash-duration ${X(e.total_duration || e.totalDuration || e.duration || 0)}`)
365
+ }, d((e.total_duration || e.totalDuration || e.duration || 0).toFixed(1)) + "ms ", 3)
366
+ ]),
367
+ s("td", null, [
368
+ s("span", Ms, d(e.span_count || e.spanCount || 0), 1)
369
+ ]),
370
+ s("td", null, [
371
+ (e.warning_count || e.warningCount || 0) > 0 ? (l(), o("span", Vs, d(e.warning_count || e.warningCount || 0), 1)) : (l(), o("span", zs, "-"))
372
+ ]),
373
+ s("td", null, [
374
+ s("span", {
375
+ class: "ss-dash-event-time",
376
+ title: r(os)(
377
+ e.createdAt || e.created_at || e.timestamp || ""
378
+ )
379
+ }, d(r(is)(
380
+ e.createdAt || e.created_at || e.timestamp || ""
381
+ )), 9, Us)
382
+ ])
383
+ ], 8, Os))), 128))
384
+ ])
385
+ ], 512)) : (l(), o("div", js, "No requests recorded yet"))
386
+ ]),
387
+ r(_).totalPages > 1 ? (l(), G(vs, {
388
+ key: 0,
389
+ page: r(_).page,
390
+ "last-page": r(_).totalPages,
391
+ total: r(_).total,
392
+ onPageChange: r(F)
393
+ }, null, 8, ["page", "last-page", "total", "onPageChange"])) : v("", !0)
394
+ ], 64))
395
+ ], 64))
396
+ ]));
397
+ }
398
+ });
399
+ export {
400
+ Xs as default
401
+ };
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as g, inject as d, ref as c, computed as A, openBlock as l, createElementBlock as o, createVNode as N, unref as u, createElementVNode as e, Fragment as R, renderList as S, normalizeClass as j, toDisplayString as a } from "vue";
2
- import { u as z } from "./index-Bj6pm5g3.js";
2
+ import { u as z } from "./index-Dtgysd26.js";
3
3
  import { u as C } from "./useResizableTable-BoivAevK.js";
4
4
  import { _ as D } from "./FilterBar.vue_vue_type_script_setup_true_lang-ClJ37hhT.js";
5
5
  const E = {