adonisjs-server-stats 1.11.7 → 1.12.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.
Files changed (69) hide show
  1. package/dist/core/explain-utils.d.ts +77 -0
  2. package/dist/core/index.d.ts +8 -2
  3. package/dist/core/index.js +1089 -877
  4. package/dist/core/queries-columns.d.ts +42 -0
  5. package/dist/core/queries-controller.d.ts +94 -0
  6. package/dist/core/query-utils.d.ts +49 -0
  7. package/dist/react/{CacheSection-DOUnyUrw.js → CacheSection-ewL3Ss82.js} +1 -1
  8. package/dist/react/{CacheTab-D9o6bsPc.js → CacheTab-B1wjTs64.js} +1 -1
  9. package/dist/react/{ConfigSection-DzNC7pOJ.js → ConfigSection-DAHu9mfy.js} +1 -1
  10. package/dist/react/{ConfigTab-CT-Tu-ct.js → ConfigTab-B4E7Pitz.js} +1 -1
  11. package/dist/react/{CustomPaneTab-CvIPe7NP.js → CustomPaneTab-iP7K6TLu.js} +1 -1
  12. package/dist/react/{EmailsSection-B1LT7Nx3.js → EmailsSection-hUkyUnKo.js} +1 -1
  13. package/dist/react/{EmailsTab-DKxK322z.js → EmailsTab-zZ4ucCv5.js} +1 -1
  14. package/dist/react/{EventsSection-D3AK0mhw.js → EventsSection-CbGz-b_I.js} +1 -1
  15. package/dist/react/{EventsTab-BRRSW6RI.js → EventsTab-BUNTKy9p.js} +1 -1
  16. package/dist/react/{JobsSection-BMvj5886.js → JobsSection-D10TwmEZ.js} +1 -1
  17. package/dist/react/{JobsTab-CQXWCrl8.js → JobsTab-CGrcuRPt.js} +1 -1
  18. package/dist/react/{LogEntryRow-DFI52ZEw.js → LogEntryRow-CkS9LMbl.js} +1 -1
  19. package/dist/react/{LogsSection-CW2hQ976.js → LogsSection-BhS0Orbh.js} +2 -2
  20. package/dist/react/{LogsTab-CV4Gf_yb.js → LogsTab-TChjBgV3.js} +2 -2
  21. package/dist/react/{OverviewSection-CxF9cabq.js → OverviewSection-DhU9kO4C.js} +1 -1
  22. package/dist/react/QueriesContent-BDIx8zFn.js +288 -0
  23. package/dist/react/QueriesSection-Dz4Eird3.js +123 -0
  24. package/dist/react/QueriesTab-CGMtuFFF.js +87 -0
  25. package/dist/react/{RequestsSection-Cb5YeqvI.js → RequestsSection-CrwlbkXj.js} +2 -2
  26. package/dist/react/{RoutesSection-B43olD9v.js → RoutesSection-DNmTM3w6.js} +1 -1
  27. package/dist/react/{RoutesTab-RfhCUbkx.js → RoutesTab-BS4PNbRf.js} +1 -1
  28. package/dist/react/{SplitPaneWrapper-B05Mg6Sg.js → SplitPaneWrapper-CIygm7YI.js} +1 -1
  29. package/dist/react/{TimelineTab-Dx4686Ti.js → TimelineTab-M3wrwrmF.js} +2 -2
  30. package/dist/react/components/shared/QueriesContent.d.ts +33 -0
  31. package/dist/react/{index-C4EMJrkH.js → index-LkZK--Bi.js} +2 -2
  32. package/dist/react/index.js +1 -1
  33. package/dist/react/style.css +1 -1
  34. package/dist/src/dashboard/query_explain_handler.d.ts +11 -0
  35. package/dist/src/dashboard/query_explain_handler.js +64 -11
  36. package/dist/src/debug/query_collector.d.ts +1 -0
  37. package/dist/src/debug/query_collector.js +3 -0
  38. package/dist/src/edge/client/dashboard.js +2 -2
  39. package/dist/src/edge/client/debug-panel-deferred.js +1 -1
  40. package/dist/src/edge/client-vue/dashboard.js +4 -4
  41. package/dist/src/edge/client-vue/debug-panel-deferred.js +2 -2
  42. package/dist/src/provider/server_stats_provider.js +2 -0
  43. package/dist/src/routes/debug_routes.d.ts +4 -0
  44. package/dist/src/routes/debug_routes.js +45 -0
  45. package/dist/src/routes/register_routes.d.ts +4 -0
  46. package/dist/src/routes/register_routes.js +2 -0
  47. package/dist/src/styles/components.css +238 -0
  48. package/dist/src/styles/dashboard.css +6 -173
  49. package/dist/src/styles/debug-panel.css +2 -24
  50. package/dist/vue/{CacheSection-BAotiuQq.js → CacheSection-PpnXregU.js} +1 -1
  51. package/dist/vue/{ConfigSection-JZjK5E5F.js → ConfigSection-CX5Vg95P.js} +1 -1
  52. package/dist/vue/{EmailsSection-BLwyQO7B.js → EmailsSection-BGHPwUgY.js} +1 -1
  53. package/dist/vue/{EventsSection-BUEwO-0A.js → EventsSection-x1DFVMLb.js} +1 -1
  54. package/dist/vue/{JobsSection-21A0yQMq.js → JobsSection-BEiYKfvI.js} +1 -1
  55. package/dist/vue/{LogsSection-BmOx8SNa.js → LogsSection-ChxccWDj.js} +1 -1
  56. package/dist/vue/{OverviewSection-BRDK3Ony.js → OverviewSection-OAWpIQZS.js} +1 -1
  57. package/dist/vue/QueriesSection-gKNTbjZz.js +423 -0
  58. package/dist/vue/QueriesTab-DO5XwJ--.js +112 -0
  59. package/dist/vue/{RequestsSection-DLrjCfcE.js → RequestsSection-CgLTYSVg.js} +1 -1
  60. package/dist/vue/{RoutesSection-CPr9w42B.js → RoutesSection-Bhnj_f3a.js} +1 -1
  61. package/dist/vue/components/Dashboard/sections/QueriesSection.vue.d.ts +1 -41
  62. package/dist/vue/{index-CYaqRGIT.js → index-DQxTdRYT.js} +2 -2
  63. package/dist/vue/index.js +1 -1
  64. package/dist/vue/style.css +1 -1
  65. package/package.json +1 -1
  66. package/dist/react/QueriesSection-CZJ-imAb.js +0 -474
  67. package/dist/react/QueriesTab-CQHa1ck3.js +0 -97
  68. package/dist/vue/QueriesSection-D2WGsuR4.js +0 -444
  69. package/dist/vue/QueriesTab-6D_xfi7Q.js +0 -114
@@ -0,0 +1,123 @@
1
+ import { jsx as f, jsxs as T } from "react/jsx-runtime";
2
+ import { useState as S, useRef as V, useCallback as i, useEffect as q, useMemo as b } from "react";
3
+ import { QueriesController as F, resolveField as l, computeDashboardQuerySummary as O } from "adonisjs-server-stats/core";
4
+ import { a as P } from "./index-LkZK--Bi.js";
5
+ import { Q as R } from "./QueriesContent-BDIx8zFn.js";
6
+ function K({ options: $ = {} }) {
7
+ const [y, d] = S(1), t = V(new F("list")), [x, D] = S(t.current.state), o = i(() => {
8
+ D({ ...t.current.state });
9
+ }, []), { viewMode: s, sort: C, search: E } = x, p = i(
10
+ (e) => {
11
+ e !== t.current.state.viewMode && (t.current.setViewMode(e), d(1), o());
12
+ },
13
+ [o]
14
+ ), M = i(
15
+ (e) => {
16
+ t.current.setSearch(e), o();
17
+ },
18
+ [o]
19
+ );
20
+ q(() => d(1), [E]);
21
+ const Q = s === "grouped" ? "queries/grouped" : "queries", { data: g, meta: m, isLoading: _, getApi: v } = P(Q, {
22
+ ...$,
23
+ page: y,
24
+ search: E,
25
+ sort: C.key,
26
+ sortDir: C.dir
27
+ }), N = i(
28
+ (e) => {
29
+ t.current.toggleSort(e), o();
30
+ },
31
+ [o]
32
+ ), k = i(
33
+ (e) => {
34
+ t.current.toggleExpand(e), o();
35
+ },
36
+ [o]
37
+ ), j = i(
38
+ async (e) => {
39
+ const r = t.current.getExplainState(e);
40
+ if (r && !r.loading) {
41
+ t.current.clearExplain(), o();
42
+ return;
43
+ }
44
+ t.current.startExplain(e), o();
45
+ try {
46
+ const n = await v().explainQuery(e);
47
+ if (n && n.error) {
48
+ const u = n.message ? `${n.error}: ${n.message}` : n.error;
49
+ t.current.failExplain(e, u);
50
+ } else
51
+ t.current.completeExplain(e, {
52
+ plan: n?.plan || void 0,
53
+ rows: n?.rows || void 0
54
+ });
55
+ } catch (n) {
56
+ console.warn("[ss] Query explain failed:", n);
57
+ let u = n instanceof Error ? n.message : String(n);
58
+ const w = n?.body;
59
+ if (w)
60
+ try {
61
+ const a = JSON.parse(w);
62
+ a.message ? u = a.error ? `${a.error}: ${a.message}` : a.message : a.error && (u = a.error);
63
+ } catch {
64
+ }
65
+ t.current.failExplain(e, u);
66
+ }
67
+ o();
68
+ },
69
+ [v, o]
70
+ ), z = i(() => {
71
+ t.current.clearExplain(), o();
72
+ }, [o]), h = s === "grouped" ? g?.groups || [] : g || [], c = b(() => s !== "grouped" ? h : h.map((e) => {
73
+ const r = { ...e };
74
+ return r.sqlNormalized ??= l(e, "sql_normalized", "pattern") ?? void 0, r.count ??= l(e, "total_count"), r.avgDuration ??= l(e, "avg_duration"), r.maxDuration ??= l(e, "max_duration"), r.minDuration ??= l(e, "min_duration"), r.totalDuration ??= l(e, "total_duration"), r.percentOfTotal ??= l(e, "pct_time"), r;
75
+ }), [h, s]), L = b(() => {
76
+ if (s === "grouped")
77
+ return `${c.length} query patterns`;
78
+ const e = O(c, m ?? void 0), r = [`${e.totalCount} queries`];
79
+ return e.slowCount > 0 && r.push(`${e.slowCount} slow`), e.dupCount > 0 && r.push(`${e.dupCount} dup`), r.push(`avg ${(e.avgDuration || 0).toFixed(1)}ms`), r.join(", ");
80
+ }, [s, c, m]);
81
+ return /* @__PURE__ */ f(
82
+ R,
83
+ {
84
+ mode: "dashboard",
85
+ controllerState: x,
86
+ queries: c,
87
+ meta: m,
88
+ isLoading: _ && !g,
89
+ onSearchChange: M,
90
+ onSort: N,
91
+ onToggleExpand: k,
92
+ onViewModeChange: p,
93
+ onPageChange: d,
94
+ onExplain: j,
95
+ onCloseExplain: z,
96
+ summary: L,
97
+ filterBarChildren: /* @__PURE__ */ T("div", { className: "ss-dash-btn-group", children: [
98
+ /* @__PURE__ */ f(
99
+ "button",
100
+ {
101
+ type: "button",
102
+ className: `ss-dash-btn ${s === "list" ? "ss-dash-active" : ""}`,
103
+ onClick: () => p("list"),
104
+ children: "List"
105
+ }
106
+ ),
107
+ /* @__PURE__ */ f(
108
+ "button",
109
+ {
110
+ type: "button",
111
+ className: `ss-dash-btn ${s === "grouped" ? "ss-dash-active" : ""}`,
112
+ onClick: () => p("grouped"),
113
+ children: "Grouped"
114
+ }
115
+ )
116
+ ] })
117
+ }
118
+ );
119
+ }
120
+ export {
121
+ K as QueriesSection,
122
+ K as default
123
+ };
@@ -0,0 +1,87 @@
1
+ import { jsx as S, jsxs as w, Fragment as L } from "react/jsx-runtime";
2
+ import { useRef as M, useState as R, useCallback as o, useMemo as l } from "react";
3
+ import { QueriesController as q, filterQueries as z, countDuplicateQueries as A, computeQuerySummary as B, formatDuration as F } from "adonisjs-server-stats/core";
4
+ import { u as U } from "./index-LkZK--Bi.js";
5
+ import { Q as _ } from "./QueriesContent-BDIx8zFn.js";
6
+ function V({ options: m }) {
7
+ const { baseUrl: d = "", debugEndpoint: g = "/admin/api/debug", authToken: c } = m || {}, { data: u, isLoading: Q, error: h } = U("queries", m), e = M(new q("list")), [f, $] = R(e.current.state), n = o(() => {
8
+ $({ ...e.current.state });
9
+ }, []), { search: x } = f, b = o(
10
+ (r) => {
11
+ e.current.setSearch(r), n();
12
+ },
13
+ [n]
14
+ ), y = o(
15
+ (r) => {
16
+ e.current.toggleExpand(r), n();
17
+ },
18
+ [n]
19
+ ), v = o((r) => {
20
+ }, []), D = o(
21
+ async (r) => {
22
+ const C = e.current.getExplainState(r);
23
+ if (C && !C.loading) {
24
+ e.current.clearExplain(), n();
25
+ return;
26
+ }
27
+ e.current.startExplain(r), n();
28
+ try {
29
+ const s = {};
30
+ c && (s.Authorization = `Bearer ${c}`);
31
+ const k = `${d}${g}/queries/${r}/explain`, t = await (await fetch(k, { headers: s })).json();
32
+ if (t && t.error) {
33
+ const N = t.message ? `${t.error}: ${t.message}` : t.error;
34
+ e.current.failExplain(r, N);
35
+ } else
36
+ e.current.completeExplain(r, {
37
+ plan: t?.plan || void 0,
38
+ rows: t?.rows || void 0
39
+ });
40
+ } catch (s) {
41
+ console.warn("[ss] Query explain failed:", s), e.current.failExplain(
42
+ r,
43
+ s instanceof Error ? s.message : String(s)
44
+ );
45
+ }
46
+ n();
47
+ },
48
+ [d, g, c, n]
49
+ ), T = o(() => {
50
+ e.current.clearExplain(), n();
51
+ }, [n]), a = l(() => u?.queries || [], [u]), p = l(() => z(a, x), [a, x]), E = l(() => A(a), [a]), i = l(
52
+ () => B(a, E),
53
+ [a, E]
54
+ );
55
+ if (Q && !u)
56
+ return /* @__PURE__ */ S("div", { className: "ss-dash-empty", children: "Loading queries..." });
57
+ if (h)
58
+ return /* @__PURE__ */ w("div", { className: "ss-dash-empty", children: [
59
+ "Error: ",
60
+ h.message
61
+ ] });
62
+ const j = /* @__PURE__ */ w(L, { children: [
63
+ p.length,
64
+ " queries",
65
+ i.slowCount > 0 && ` | ${i.slowCount} slow`,
66
+ i.dupCount > 0 && ` | ${i.dupCount} dup`,
67
+ p.length > 0 && ` | avg ${F(i.avgDuration)}`
68
+ ] });
69
+ return /* @__PURE__ */ S(
70
+ _,
71
+ {
72
+ mode: "debug",
73
+ controllerState: f,
74
+ queries: p,
75
+ onSearchChange: b,
76
+ onSort: v,
77
+ onToggleExpand: y,
78
+ onExplain: D,
79
+ onCloseExplain: T,
80
+ summary: j
81
+ }
82
+ );
83
+ }
84
+ export {
85
+ V as QueriesTab,
86
+ V as default
87
+ };
@@ -3,8 +3,8 @@ import { useMemo as $, useState as g, useEffect as E, useCallback as L } from "r
3
3
  import { normalizeTraceFields as P, resolveStatusCode as j, resolveDuration as W, durationClassName as z, resolveSpanCount as G, resolveWarningCount as I, resolveTimestamp as U } from "adonisjs-server-stats/core";
4
4
  import { T as Y } from "./TimeAgoCell-o3KigGfM.js";
5
5
  import { u as K } from "./useApiClient-BVtNCmnL.js";
6
- import { a as V, M as D, S as R } from "./index-C4EMJrkH.js";
7
- import { S as H, R as J } from "./SplitPaneWrapper-B05Mg6Sg.js";
6
+ import { a as V, M as D, S as R } from "./index-LkZK--Bi.js";
7
+ import { S as H, R as J } from "./SplitPaneWrapper-CIygm7YI.js";
8
8
  import { D as Q } from "./DataTable-YyShr5B-.js";
9
9
  import { F as X } from "./FilterBar-CQ7bD669.js";
10
10
  import { P as Z } from "./Pagination-BkmzUDY8.js";
@@ -1,6 +1,6 @@
1
1
  import { jsxs as m, jsx as r, Fragment as p } from "react/jsx-runtime";
2
2
  import { useState as y } from "react";
3
- import { a as u, M as f } from "./index-C4EMJrkH.js";
3
+ import { a as u, M as f } from "./index-LkZK--Bi.js";
4
4
  import { D as w } from "./DataTable-YyShr5B-.js";
5
5
  import { F as b } from "./FilterBar-CQ7bD669.js";
6
6
  function A({ options: n = {} }) {
@@ -1,6 +1,6 @@
1
1
  import { jsx as e, jsxs as d } from "react/jsx-runtime";
2
2
  import { useState as g, useMemo as p } from "react";
3
- import { u as b, M as f } from "./index-C4EMJrkH.js";
3
+ import { u as b, M as f } from "./index-LkZK--Bi.js";
4
4
  import { u as w } from "./useResizableTable-CNJmACdt.js";
5
5
  import { F as N } from "./FilterBar-CQ7bD669.js";
6
6
  function R({ options: o, currentPath: n }) {
@@ -1,6 +1,6 @@
1
1
  import { jsxs as c, jsx as l } from "react/jsx-runtime";
2
2
  import { useState as d, useRef as o, useEffect as u } from "react";
3
- import { L as p } from "./LogEntryRow-DFI52ZEw.js";
3
+ import { L as p } from "./LogEntryRow-CkS9LMbl.js";
4
4
  import { initSplitPane as f } from "adonisjs-server-stats/core";
5
5
  function v({ logs: n, onReqIdClick: a }) {
6
6
  const [t, s] = d(null);
@@ -2,11 +2,11 @@ import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
2
  import { useState as i, useMemo as q, useEffect as I, useCallback as O } from "react";
3
3
  import { formatDuration as m, durationClassName as j } from "adonisjs-server-stats/core";
4
4
  import { u as U } from "./useApiClient-BVtNCmnL.js";
5
- import { u as W, M as D, S as L } from "./index-C4EMJrkH.js";
5
+ import { u as W, M as D, S as L } from "./index-LkZK--Bi.js";
6
6
  import { T as _ } from "./TimeAgoCell-o3KigGfM.js";
7
7
  import { u as z } from "./useResizableTable-CNJmACdt.js";
8
8
  import { F as G } from "./FilterBar-CQ7bD669.js";
9
- import { S as K, R as V } from "./SplitPaneWrapper-B05Mg6Sg.js";
9
+ import { S as K, R as V } from "./SplitPaneWrapper-CIygm7YI.js";
10
10
  const S = {
11
11
  request: "#1e3a5f",
12
12
  middleware: "rgba(30, 58, 95, 0.7)",
@@ -0,0 +1,33 @@
1
+ import { default as React } from 'react';
2
+ import { QueriesControllerState } from '../../../core/queries-controller.js';
3
+ interface QueriesContentProps {
4
+ /** Rendering mode — determines feature set (explain, pagination, grouped). */
5
+ mode: 'dashboard' | 'debug';
6
+ controllerState: QueriesControllerState;
7
+ /** Query rows (untyped dashboard rows or typed QueryRecord[]). */
8
+ queries: Record<string, unknown>[];
9
+ /** Pagination metadata (dashboard only). */
10
+ meta?: {
11
+ page: number;
12
+ lastPage: number;
13
+ total: number;
14
+ } | null;
15
+ isLoading?: boolean;
16
+ onSearchChange: (search: string) => void;
17
+ onSort: (key: string) => void;
18
+ onToggleExpand: (id: number | string) => void;
19
+ onViewModeChange?: (mode: 'list' | 'grouped') => void;
20
+ onPageChange?: (page: number) => void;
21
+ onExplain?: (queryId: number) => void;
22
+ onCloseExplain?: () => void;
23
+ summary: React.ReactNode;
24
+ filterBarChildren?: React.ReactNode;
25
+ }
26
+ /**
27
+ * Shared queries rendering component used by both Dashboard QueriesSection
28
+ * and DebugPanel QueriesTab. Both modes render the same UI — same columns,
29
+ * same styles, same DataTable. The only differences: debug mode has no
30
+ * explain, no pagination, and no grouped view.
31
+ */
32
+ export declare function QueriesContent({ mode, controllerState, queries, meta, isLoading, onSearchChange, onSort, onToggleExpand, onViewModeChange, onPageChange, onExplain, onCloseExplain, summary, filterBarChildren, }: QueriesContentProps): import("react/jsx-runtime").JSX.Element;
33
+ export default QueriesContent;
@@ -435,7 +435,7 @@ function A({
435
435
  }
436
436
  );
437
437
  }
438
- const ge = L(() => import("./QueriesTab-CQHa1ck3.js")), me = L(() => import("./EventsTab-BRRSW6RI.js")), ve = L(() => import("./EmailsTab-DKxK322z.js")), fe = L(() => import("./RoutesTab-RfhCUbkx.js")), we = L(() => import("./LogsTab-CV4Gf_yb.js")), ke = L(() => import("./TimelineTab-Dx4686Ti.js")), Ne = L(() => import("./CacheTab-D9o6bsPc.js")), ye = L(() => import("./JobsTab-CQXWCrl8.js")), Ce = L(() => import("./ConfigTab-CT-Tu-ct.js")), Se = L(() => import("./InternalsTab--RD-L1dX.js")), Le = L(() => import("./CustomPaneTab-CvIPe7NP.js"));
438
+ const ge = L(() => import("./QueriesTab-CGMtuFFF.js")), me = L(() => import("./EventsTab-BUNTKy9p.js")), ve = L(() => import("./EmailsTab-zZ4ucCv5.js")), fe = L(() => import("./RoutesTab-BS4PNbRf.js")), we = L(() => import("./LogsTab-TChjBgV3.js")), ke = L(() => import("./TimelineTab-M3wrwrmF.js")), Ne = L(() => import("./CacheTab-B1wjTs64.js")), ye = L(() => import("./JobsTab-CGrcuRPt.js")), Ce = L(() => import("./ConfigTab-B4E7Pitz.js")), Se = L(() => import("./InternalsTab--RD-L1dX.js")), Le = L(() => import("./CustomPaneTab-iP7K6TLu.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-CxF9cabq.js")), Oe = L(() => import("./RequestsSection-Cb5YeqvI.js")), _e = L(() => import("./QueriesSection-CZJ-imAb.js")), je = L(() => import("./EventsSection-D3AK0mhw.js")), Pe = L(() => import("./RoutesSection-B43olD9v.js")), He = L(() => import("./LogsSection-CW2hQ976.js")), qe = L(() => import("./EmailsSection-B1LT7Nx3.js")), Ue = L(() => import("./CacheSection-DOUnyUrw.js")), Fe = L(() => import("./JobsSection-BMvj5886.js")), Ae = L(() => import("./ConfigSection-DzNC7pOJ.js")), ze = L(() => import("./InternalsSection-BwrTfpjA.js"));
727
+ ], Re = L(() => import("./OverviewSection-DhU9kO4C.js")), Oe = L(() => import("./RequestsSection-CrwlbkXj.js")), _e = L(() => import("./QueriesSection-Dz4Eird3.js")), je = L(() => import("./EventsSection-CbGz-b_I.js")), Pe = L(() => import("./RoutesSection-DNmTM3w6.js")), He = L(() => import("./LogsSection-BhS0Orbh.js")), qe = L(() => import("./EmailsSection-hUkyUnKo.js")), Ue = L(() => import("./CacheSection-ewL3Ss82.js")), Fe = L(() => import("./JobsSection-D10TwmEZ.js")), Ae = L(() => import("./ConfigSection-DAHu9mfy.js")), ze = L(() => import("./InternalsSection-BwrTfpjA.js"));
728
728
  function Xe(s) {
729
729
  const {
730
730
  baseUrl: o = "",
@@ -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, 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-C4EMJrkH.js";
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-LkZK--Bi.js";
2
2
  export {
3
3
  s as Badge,
4
4
  t as DashboardPage,