adonisjs-server-stats 1.9.0 → 1.10.3

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 (227) hide show
  1. package/README.md +23 -14
  2. package/dist/core/config-utils.d.ts +8 -0
  3. package/dist/core/constants.d.ts +4 -0
  4. package/dist/core/dashboard-data-controller.d.ts +16 -0
  5. package/dist/core/dashboard-data-helpers.d.ts +12 -0
  6. package/dist/core/debug-data-controller.d.ts +4 -0
  7. package/dist/core/define-config-helpers.d.ts +25 -0
  8. package/dist/core/feature-detect-helpers.d.ts +36 -0
  9. package/dist/core/formatters-helpers.d.ts +23 -0
  10. package/dist/core/index.js +596 -509
  11. package/dist/core/log-utils-helpers.d.ts +13 -0
  12. package/dist/core/metrics.d.ts +3 -28
  13. package/dist/core/pagination.d.ts +0 -9
  14. package/dist/core/server-stats-controller.d.ts +6 -0
  15. package/dist/core/split-pane.d.ts +18 -0
  16. package/dist/core/trace-utils.d.ts +5 -0
  17. package/dist/core/transmit-helpers.d.ts +7 -0
  18. package/dist/core/types-dashboard.d.ts +178 -0
  19. package/dist/core/types-diagnostics.d.ts +85 -0
  20. package/dist/core/types.d.ts +11 -443
  21. package/dist/react/{CacheSection-xH75hwXu.js → CacheSection-baMZotSn.js} +2 -2
  22. package/dist/react/CacheTab-2cw_rMzj.js +117 -0
  23. package/dist/react/{ConfigSection-D8BO1Ry9.js → ConfigSection-DGgqjAal.js} +1 -1
  24. package/dist/react/{ConfigTab-CcN-tfjv.js → ConfigTab-H3OnYqmK.js} +1 -1
  25. package/dist/react/CustomPaneTab-B6r7ha0u.js +98 -0
  26. package/dist/react/{EmailsSection-BzlsTdPs.js → EmailsSection-C-UZISG-.js} +2 -2
  27. package/dist/react/EmailsTab-DbK4Eobn.js +139 -0
  28. package/dist/react/{EventsSection-CGQWiIdV.js → EventsSection-C7RQW_LY.js} +2 -2
  29. package/dist/react/EventsTab-CfVr7AiM.js +57 -0
  30. package/dist/react/{FilterBar-DQRXpWrb.js → FilterBar-CQ7bD669.js} +15 -15
  31. package/dist/react/{JobsSection-D7AHQmZi.js → JobsSection-CQHNK_Ls.js} +2 -2
  32. package/dist/react/{JobsTab-B3Lfdqed.js → JobsTab-znzf6jzk.js} +54 -42
  33. package/dist/react/{LogsSection-Cly1dpvS.js → LogsSection-Dmm3rE2B.js} +9 -3
  34. package/dist/react/LogsTab-D8unMV5P.js +108 -0
  35. package/dist/react/{OverviewSection-CkBGFEWq.js → OverviewSection-ABP9ueBo.js} +1 -1
  36. package/dist/react/{QueriesSection-CfCpnNUD.js → QueriesSection-CnmSkznA.js} +2 -2
  37. package/dist/react/{QueriesTab-DbBmAqzO.js → QueriesTab-BQzcxEiW.js} +37 -40
  38. package/dist/react/RelatedLogs-3A8RuGKH.js +52 -0
  39. package/dist/react/RequestsSection-kW79_M7k.js +341 -0
  40. package/dist/react/{RoutesSection-CRqF-cNM.js → RoutesSection-BRhxrtjZ.js} +2 -2
  41. package/dist/react/RoutesTab-CpYH5lUw.js +68 -0
  42. package/dist/react/TimelineTab-DjLR35Ce.js +214 -0
  43. package/dist/react/index-CsImORX6.js +1121 -0
  44. package/dist/react/index.js +1 -1
  45. package/dist/react/react/components/{Dashboard/shared → shared}/FilterBar.d.ts +4 -3
  46. package/dist/react/react/components/shared/RelatedLogs.d.ts +7 -0
  47. package/dist/react/react/hooks/useDashboardData.d.ts +4 -8
  48. package/dist/react/style.css +1 -1
  49. package/dist/src/collectors/app_collector.d.ts +0 -8
  50. package/dist/src/collectors/app_collector.js +45 -52
  51. package/dist/src/collectors/auto_detect.d.ts +0 -23
  52. package/dist/src/collectors/auto_detect.js +33 -55
  53. package/dist/src/collectors/db_pool_collector.d.ts +14 -16
  54. package/dist/src/collectors/db_pool_collector.js +72 -57
  55. package/dist/src/collectors/log_collector.d.ts +0 -47
  56. package/dist/src/collectors/log_collector.js +36 -65
  57. package/dist/src/collectors/queue_collector.d.ts +0 -20
  58. package/dist/src/collectors/queue_collector.js +60 -76
  59. package/dist/src/collectors/redis_collector.d.ts +10 -10
  60. package/dist/src/collectors/redis_collector.js +69 -66
  61. package/dist/src/config/deprecation_migration.d.ts +7 -0
  62. package/dist/src/config/deprecation_migration.js +201 -0
  63. package/dist/src/controller/debug_controller.d.ts +1 -1
  64. package/dist/src/controller/debug_controller.js +87 -81
  65. package/dist/src/dashboard/cache_handlers.d.ts +14 -0
  66. package/dist/src/dashboard/cache_handlers.js +52 -0
  67. package/dist/src/dashboard/chart_aggregator.d.ts +0 -7
  68. package/dist/src/dashboard/chart_aggregator.js +68 -50
  69. package/dist/src/dashboard/coalesce_cache.d.ts +25 -0
  70. package/dist/src/dashboard/coalesce_cache.js +47 -0
  71. package/dist/src/dashboard/dashboard_controller.d.ts +11 -37
  72. package/dist/src/dashboard/dashboard_controller.js +52 -532
  73. package/dist/src/dashboard/dashboard_page_assets.d.ts +17 -0
  74. package/dist/src/dashboard/dashboard_page_assets.js +51 -0
  75. package/dist/src/dashboard/dashboard_store.d.ts +19 -217
  76. package/dist/src/dashboard/dashboard_store.js +115 -1069
  77. package/dist/src/dashboard/dashboard_types.d.ts +83 -0
  78. package/dist/src/dashboard/dashboard_types.js +4 -0
  79. package/dist/src/dashboard/detail_queries.d.ts +19 -0
  80. package/dist/src/dashboard/detail_queries.js +98 -0
  81. package/dist/src/dashboard/email_event_builder.d.ts +8 -0
  82. package/dist/src/dashboard/email_event_builder.js +65 -0
  83. package/dist/src/dashboard/explain_query.d.ts +8 -0
  84. package/dist/src/dashboard/explain_query.js +22 -0
  85. package/dist/src/dashboard/filter_handlers.d.ts +23 -0
  86. package/dist/src/dashboard/filter_handlers.js +56 -0
  87. package/dist/src/dashboard/filtered_queries.d.ts +15 -0
  88. package/dist/src/dashboard/filtered_queries.js +155 -0
  89. package/dist/src/dashboard/flush_manager.d.ts +25 -0
  90. package/dist/src/dashboard/flush_manager.js +107 -0
  91. package/dist/src/dashboard/format_helpers.d.ts +126 -0
  92. package/dist/src/dashboard/format_helpers.js +140 -0
  93. package/dist/src/dashboard/inspector_manager.d.ts +36 -0
  94. package/dist/src/dashboard/inspector_manager.js +102 -0
  95. package/dist/src/dashboard/integrations/config_inspector.js +11 -13
  96. package/dist/src/dashboard/integrations/queue_inspector.d.ts +3 -3
  97. package/dist/src/dashboard/integrations/queue_inspector.js +13 -10
  98. package/dist/src/dashboard/jobs_handlers.d.ts +14 -0
  99. package/dist/src/dashboard/jobs_handlers.js +61 -0
  100. package/dist/src/dashboard/knex_factory.d.ts +18 -0
  101. package/dist/src/dashboard/knex_factory.js +91 -0
  102. package/dist/src/dashboard/migrator.js +30 -153
  103. package/dist/src/dashboard/migrator_tables.d.ts +19 -0
  104. package/dist/src/dashboard/migrator_tables.js +153 -0
  105. package/dist/src/dashboard/overview_queries.d.ts +66 -0
  106. package/dist/src/dashboard/overview_queries.js +155 -0
  107. package/dist/src/dashboard/overview_query_runners.d.ts +25 -0
  108. package/dist/src/dashboard/overview_query_runners.js +84 -0
  109. package/dist/src/dashboard/overview_store_queries.d.ts +40 -0
  110. package/dist/src/dashboard/overview_store_queries.js +69 -0
  111. package/dist/src/dashboard/paginate_helper.d.ts +12 -0
  112. package/dist/src/dashboard/paginate_helper.js +33 -0
  113. package/dist/src/dashboard/query_explain_handler.d.ts +10 -0
  114. package/dist/src/dashboard/query_explain_handler.js +80 -0
  115. package/dist/src/dashboard/read_queries.d.ts +32 -0
  116. package/dist/src/dashboard/read_queries.js +107 -0
  117. package/dist/src/dashboard/saved_filter_queries.d.ts +10 -0
  118. package/dist/src/dashboard/saved_filter_queries.js +24 -0
  119. package/dist/src/dashboard/storage_stats.d.ts +41 -0
  120. package/dist/src/dashboard/storage_stats.js +81 -0
  121. package/dist/src/dashboard/write_queue.d.ts +106 -0
  122. package/dist/src/dashboard/write_queue.js +225 -0
  123. package/dist/src/data/data_access.d.ts +6 -36
  124. package/dist/src/data/data_access.js +43 -188
  125. package/dist/src/data/data_access_helpers.d.ts +130 -0
  126. package/dist/src/data/data_access_helpers.js +212 -0
  127. package/dist/src/debug/debug_store.js +37 -32
  128. package/dist/src/debug/email_collector.d.ts +1 -10
  129. package/dist/src/debug/email_collector.js +78 -81
  130. package/dist/src/debug/event_collector.d.ts +0 -9
  131. package/dist/src/debug/event_collector.js +79 -62
  132. package/dist/src/debug/query_collector.js +23 -19
  133. package/dist/src/debug/route_inspector.d.ts +1 -5
  134. package/dist/src/debug/route_inspector.js +50 -51
  135. package/dist/src/debug/trace_collector.d.ts +10 -2
  136. package/dist/src/debug/trace_collector.js +23 -16
  137. package/dist/src/debug/types.d.ts +5 -1
  138. package/dist/src/define_config.d.ts +0 -65
  139. package/dist/src/define_config.js +93 -333
  140. package/dist/src/edge/client/dashboard.js +2 -2
  141. package/dist/src/edge/client/debug-panel-deferred.js +1 -1
  142. package/dist/src/edge/client/stats-bar.js +1 -1
  143. package/dist/src/edge/client-vue/dashboard.js +5 -5
  144. package/dist/src/edge/client-vue/debug-panel-deferred.js +3 -3
  145. package/dist/src/edge/client-vue/stats-bar.js +3 -3
  146. package/dist/src/edge/plugin.d.ts +0 -16
  147. package/dist/src/edge/plugin.js +57 -64
  148. package/dist/src/engine/request_metrics.d.ts +1 -0
  149. package/dist/src/engine/request_metrics.js +32 -42
  150. package/dist/src/middleware/request_tracking_middleware.d.ts +3 -8
  151. package/dist/src/middleware/request_tracking_middleware.js +65 -91
  152. package/dist/src/provider/auth_middleware_detector.d.ts +16 -0
  153. package/dist/src/provider/auth_middleware_detector.js +97 -0
  154. package/dist/src/provider/boot_helpers.d.ts +20 -0
  155. package/dist/src/provider/boot_helpers.js +91 -0
  156. package/dist/src/provider/boot_initializer.d.ts +28 -0
  157. package/dist/src/provider/boot_initializer.js +35 -0
  158. package/dist/src/provider/dashboard_init.d.ts +30 -0
  159. package/dist/src/provider/dashboard_init.js +138 -0
  160. package/dist/src/provider/dashboard_setup.d.ts +25 -0
  161. package/dist/src/provider/dashboard_setup.js +78 -0
  162. package/dist/src/provider/diagnostics.d.ts +134 -0
  163. package/dist/src/provider/diagnostics.js +127 -0
  164. package/dist/src/provider/email_bridge.d.ts +43 -0
  165. package/dist/src/provider/email_bridge.js +80 -0
  166. package/dist/src/provider/email_helpers.d.ts +13 -0
  167. package/dist/src/provider/email_helpers.js +68 -0
  168. package/dist/src/provider/pino_hook.d.ts +17 -0
  169. package/dist/src/provider/pino_hook.js +35 -0
  170. package/dist/src/provider/provider_helpers_extra.d.ts +47 -0
  171. package/dist/src/provider/provider_helpers_extra.js +177 -0
  172. package/dist/src/provider/server_stats_provider.d.ts +39 -85
  173. package/dist/src/provider/server_stats_provider.js +131 -936
  174. package/dist/src/provider/shutdown_helpers.d.ts +43 -0
  175. package/dist/src/provider/shutdown_helpers.js +70 -0
  176. package/dist/src/provider/toolbar_setup.d.ts +57 -0
  177. package/dist/src/provider/toolbar_setup.js +141 -0
  178. package/dist/src/routes/dashboard_routes.d.ts +14 -0
  179. package/dist/src/routes/dashboard_routes.js +197 -0
  180. package/dist/src/routes/debug_routes.d.ts +14 -0
  181. package/dist/src/routes/debug_routes.js +101 -0
  182. package/dist/src/routes/register_routes.d.ts +0 -78
  183. package/dist/src/routes/register_routes.js +22 -347
  184. package/dist/src/routes/stats_routes.d.ts +5 -0
  185. package/dist/src/routes/stats_routes.js +14 -0
  186. package/dist/src/styles/components.css +177 -0
  187. package/dist/src/styles/dashboard.css +8 -90
  188. package/dist/src/styles/debug-panel.css +10 -31
  189. package/dist/src/types.d.ts +306 -15
  190. package/dist/vue/{CacheSection-Cx-hj09X.js → CacheSection-ITqvpfH5.js} +1 -1
  191. package/dist/vue/{ConfigSection-CMXyryf6.js → ConfigSection-DTn3GslE.js} +1 -1
  192. package/dist/vue/{EmailsSection-DgKl9xGT.js → EmailsSection-DtLJ4XoS.js} +1 -1
  193. package/dist/vue/{EventsSection-BNMCAim1.js → EventsSection-BOYYz0Ty.js} +1 -1
  194. package/dist/vue/{JobsSection-CCMgMlxd.js → JobsSection-BazTxcJL.js} +1 -1
  195. package/dist/vue/{LogsSection-CvOnTxUu.js → LogsSection-D55PjTKX.js} +9 -3
  196. package/dist/vue/{LogsTab-Bg3o0Mm6.js → LogsTab-47zEK7jL.js} +4 -1
  197. package/dist/vue/{OverviewSection-CHgaKtUR.js → OverviewSection-1uBKo-Tu.js} +1 -1
  198. package/dist/vue/{QueriesSection-BnHRD98z.js → QueriesSection-rpoZ4ogd.js} +1 -1
  199. package/dist/vue/RelatedLogs.vue_vue_type_script_setup_true_lang-CB2_TzYW.js +84 -0
  200. package/dist/vue/RequestsSection-x7LvT0MC.js +401 -0
  201. package/dist/vue/{RoutesSection-BrceOcKQ.js → RoutesSection-CCD0zZqQ.js} +1 -1
  202. package/dist/vue/TimelineTab-zj5Z5OdT.js +338 -0
  203. package/dist/vue/components/Dashboard/sections/RequestsSection.vue.d.ts +4 -0
  204. package/dist/vue/components/DebugPanel/tabs/TimelineTab.vue.d.ts +4 -0
  205. package/dist/vue/components/{Dashboard/sections/TimelineSection.vue.d.ts → shared/RelatedLogs.vue.d.ts} +5 -6
  206. package/dist/vue/composables/useDashboardData.d.ts +12 -23
  207. package/dist/vue/index-C8MxnS7Q.js +1232 -0
  208. package/dist/vue/index.js +1 -1
  209. package/dist/vue/style.css +1 -1
  210. package/package.json +1 -1
  211. package/dist/react/CacheTab-DYmsZJJ1.js +0 -123
  212. package/dist/react/CustomPaneTab-D7_o3Ec6.js +0 -104
  213. package/dist/react/EmailsTab-Uh2CQY3o.js +0 -153
  214. package/dist/react/EventsTab-CC6DQzEm.js +0 -63
  215. package/dist/react/LogsTab-BbYK-iyh.js +0 -103
  216. package/dist/react/RequestsSection-Cb5a6MlT.js +0 -209
  217. package/dist/react/RoutesTab-Bwreij3e.js +0 -74
  218. package/dist/react/TimelineSection-B2y06kRE.js +0 -158
  219. package/dist/react/TimelineTab-6hthfdBB.js +0 -193
  220. package/dist/react/WaterfallChart-Cj73WdfM.js +0 -100
  221. package/dist/react/index-CecA4IdQ.js +0 -1075
  222. package/dist/react/react/components/Dashboard/sections/TimelineSection.d.ts +0 -8
  223. package/dist/vue/RequestsSection-B-uSlM0f.js +0 -243
  224. package/dist/vue/TimelineSection-CfvnA2Oo.js +0 -186
  225. package/dist/vue/TimelineTab-Db6lKKsD.js +0 -250
  226. package/dist/vue/WaterfallChart.vue_vue_type_script_setup_true_lang-tZ13cNj1.js +0 -118
  227. package/dist/vue/index-oLxS08vN.js +0 -1235
@@ -1,158 +0,0 @@
1
- import { jsx as a, jsxs as t, Fragment as T } from "react/jsx-runtime";
2
- import { useState as n, useEffect as B, useCallback as L } from "react";
3
- import { normalizeTraceFields as P, durationSeverity as f, timeAgo as A, formatTime as E } from "adonisjs-server-stats/core";
4
- import { u as M } from "./useApiClient-BVtNCmnL.js";
5
- import { a as $, M as g, b } from "./index-CecA4IdQ.js";
6
- import { D as j } from "./DataTable-YyShr5B-.js";
7
- import { F as z } from "./FilterBar-DQRXpWrb.js";
8
- import { P as I } from "./Pagination-BkmzUDY8.js";
9
- import { W as R } from "./WaterfallChart-Cj73WdfM.js";
10
- function Q({ options: s = {}, tracingEnabled: y = !0 }) {
11
- const [w, v] = n(1), [i, k] = n(""), [r, o] = n(null), [c, h] = n(null), [x, d] = n(!1), { data: m, meta: l, isLoading: C, error: N } = $("traces", { ...s, page: w, search: i }), D = m || [], u = M(s.baseUrl || "", s.authToken);
12
- B(() => {
13
- if (!r) {
14
- h(null);
15
- return;
16
- }
17
- let e = !1;
18
- d(!0);
19
- const S = s.dashboardEndpoint || "/__stats/api";
20
- return u().fetch(`${S}/traces/${r}`).then((F) => {
21
- e || (h(F), d(!1));
22
- }).catch(() => {
23
- e || d(!1);
24
- }), () => {
25
- e = !0;
26
- };
27
- }, [r, u, s.dashboardEndpoint]);
28
- const p = L(() => o(null), []);
29
- if (!y)
30
- return /* @__PURE__ */ a("div", { className: "ss-dash-empty", children: "Tracing is not enabled. Enable tracing in your server-stats config to use the timeline." });
31
- if (r && c) {
32
- const e = P(c);
33
- return /* @__PURE__ */ t("div", { children: [
34
- /* @__PURE__ */ t("div", { className: "ss-dash-tl-detail-header", children: [
35
- /* @__PURE__ */ a("button", { type: "button", className: "ss-dash-btn", onClick: p, children: "← Back" }),
36
- /* @__PURE__ */ a(g, { method: e.method }),
37
- /* @__PURE__ */ a("span", { style: { color: "var(--ss-text)" }, children: e.url }),
38
- /* @__PURE__ */ a(b, { code: e.statusCode }),
39
- /* @__PURE__ */ t("span", { className: "ss-dash-tl-meta", children: [
40
- e.totalDuration.toFixed(1),
41
- "ms · ",
42
- e.spanCount,
43
- " spans"
44
- ] })
45
- ] }),
46
- /* @__PURE__ */ a(
47
- R,
48
- {
49
- spans: e.spans,
50
- totalDuration: e.totalDuration,
51
- warnings: e.warnings
52
- }
53
- )
54
- ] });
55
- }
56
- return r && x ? /* @__PURE__ */ t("div", { children: [
57
- /* @__PURE__ */ a("div", { className: "ss-dash-tl-detail-header", children: /* @__PURE__ */ a("button", { type: "button", className: "ss-dash-btn", onClick: p, children: "← Back" }) }),
58
- /* @__PURE__ */ a("div", { className: "ss-dash-empty", children: "Loading trace detail..." })
59
- ] }) : /* @__PURE__ */ t("div", { children: [
60
- /* @__PURE__ */ a(
61
- z,
62
- {
63
- search: i,
64
- onSearchChange: k,
65
- placeholder: "Filter traces...",
66
- summary: `${l?.total ?? 0} traces`
67
- }
68
- ),
69
- N && /* @__PURE__ */ a("div", { className: "ss-dash-empty", children: "Failed to load traces" }),
70
- C && !m ? /* @__PURE__ */ a("div", { className: "ss-dash-empty", children: "Loading traces..." }) : /* @__PURE__ */ t(T, { children: [
71
- /* @__PURE__ */ a("div", { className: "ss-dash-table-wrap", children: /* @__PURE__ */ a(
72
- j,
73
- {
74
- columns: [
75
- {
76
- key: "id",
77
- label: "#",
78
- width: "40px",
79
- render: (e) => /* @__PURE__ */ a("span", { style: { color: "var(--ss-dim)" }, children: e })
80
- },
81
- {
82
- key: "method",
83
- label: "Method",
84
- width: "70px",
85
- render: (e) => /* @__PURE__ */ a(g, { method: e })
86
- },
87
- {
88
- key: "url",
89
- label: "URL",
90
- render: (e) => /* @__PURE__ */ a(
91
- "span",
92
- {
93
- style: {
94
- color: "var(--ss-text)",
95
- overflow: "hidden",
96
- textOverflow: "ellipsis",
97
- whiteSpace: "nowrap"
98
- },
99
- title: e,
100
- children: e
101
- }
102
- )
103
- },
104
- {
105
- key: "statusCode",
106
- label: "Status",
107
- width: "60px",
108
- render: (e) => /* @__PURE__ */ a(b, { code: e })
109
- },
110
- {
111
- key: "totalDuration",
112
- label: "Duration",
113
- width: "80px",
114
- render: (e) => /* @__PURE__ */ t(
115
- "span",
116
- {
117
- className: `ss-dash-duration ${f(e) === "very-slow" ? "ss-dash-very-slow" : f(e) === "slow" ? "ss-dash-slow" : ""}`,
118
- children: [
119
- e.toFixed(1),
120
- "ms"
121
- ]
122
- }
123
- )
124
- },
125
- {
126
- key: "spanCount",
127
- label: "Spans",
128
- width: "50px",
129
- render: (e) => /* @__PURE__ */ a("span", { style: { color: "var(--ss-muted)", textAlign: "center" }, children: e })
130
- },
131
- {
132
- key: "createdAt",
133
- label: "Time",
134
- width: "80px",
135
- render: (e) => /* @__PURE__ */ a("span", { className: "ss-dash-event-time", title: E(e), children: A(e) })
136
- }
137
- ],
138
- data: D,
139
- onRowClick: (e) => o(e.id),
140
- emptyMessage: "No traces recorded"
141
- }
142
- ) }),
143
- l && /* @__PURE__ */ a(
144
- I,
145
- {
146
- page: l.page,
147
- lastPage: l.lastPage,
148
- total: l.total,
149
- onPageChange: v
150
- }
151
- )
152
- ] })
153
- ] });
154
- }
155
- export {
156
- Q as TimelineSection,
157
- Q as default
158
- };
@@ -1,193 +0,0 @@
1
- import { jsx as e, jsxs as l } from "react/jsx-runtime";
2
- import { useState as r, useMemo as B, useEffect as I, useCallback as C } from "react";
3
- import { formatDuration as u, durationSeverity as D, timeAgo as O, formatTime as j } from "adonisjs-server-stats/core";
4
- import { u as F } from "./useApiClient-BVtNCmnL.js";
5
- import { u as U } from "./index-CecA4IdQ.js";
6
- import { u as _ } from "./useResizableTable-CNJmACdt.js";
7
- const L = {
8
- request: "#1e3a5f",
9
- middleware: "rgba(30, 58, 95, 0.7)",
10
- db: "#6d28d9",
11
- view: "#0e7490",
12
- mail: "#059669",
13
- event: "#b45309",
14
- custom: "#525252"
15
- }, z = [
16
- { label: "Request", color: "#1e3a5f" },
17
- { label: "Middleware", color: "rgba(30, 58, 95, 0.7)" },
18
- { label: "Database", color: "#6d28d9" },
19
- { label: "View", color: "#0e7490" },
20
- { label: "Mail", color: "#059669" },
21
- { label: "Event", color: "#b45309" }
22
- ];
23
- function P({ options: p }) {
24
- const { baseUrl: E = "", debugEndpoint: f = "/admin/api/debug", authToken: $ } = p || {}, { data: h, isLoading: S, error: N } = U("timeline", p), [i, T] = r(""), [n, m] = r(null), [a, v] = r(null), [k, b] = r(!1), [w, g] = r(null), c = B(() => {
25
- const s = h?.traces || [];
26
- if (!i) return s;
27
- const d = i.toLowerCase();
28
- return s.filter(
29
- (t) => t.url.toLowerCase().includes(d) || t.method.toLowerCase().includes(d) || String(t.statusCode).includes(d)
30
- );
31
- }, [h, i]), y = F(E, $);
32
- I(() => {
33
- if (n === null) {
34
- v(null), g(null);
35
- return;
36
- }
37
- let s = !1;
38
- return b(!0), g(null), y().get(`${f}/traces/${n}`).then((t) => {
39
- s || (v(t), b(!1));
40
- }).catch((t) => {
41
- s || (g(t instanceof Error ? t.message : "Failed to load trace"), b(!1));
42
- }), () => {
43
- s = !0;
44
- };
45
- }, [n, f, y]);
46
- const M = C((s) => {
47
- m((d) => d === s ? null : s);
48
- }, []), x = C((s) => s >= 500 ? "ss-dbg-status-5xx" : s >= 400 ? "ss-dbg-status-4xx" : s >= 300 ? "ss-dbg-status-3xx" : "ss-dbg-status-2xx", []), R = _([c]);
49
- if (S && !h)
50
- return /* @__PURE__ */ e("div", { className: "ss-dbg-empty", children: "Loading traces..." });
51
- if (N)
52
- return /* @__PURE__ */ l("div", { className: "ss-dbg-empty", children: [
53
- "Error: ",
54
- N.message
55
- ] });
56
- if (n !== null) {
57
- if (k)
58
- return /* @__PURE__ */ e("div", { className: "ss-dbg-empty", children: "Loading trace detail..." });
59
- if (w)
60
- return /* @__PURE__ */ l("div", { children: [
61
- /* @__PURE__ */ e("div", { className: "ss-dbg-tl-detail-header", children: /* @__PURE__ */ e(
62
- "button",
63
- {
64
- type: "button",
65
- className: "ss-dbg-btn-clear",
66
- onClick: () => m(null),
67
- children: "← Back"
68
- }
69
- ) }),
70
- /* @__PURE__ */ l("div", { className: "ss-dbg-empty", children: [
71
- "Error: ",
72
- w
73
- ] })
74
- ] });
75
- if (!a)
76
- return /* @__PURE__ */ e("div", { className: "ss-dbg-empty", children: "Loading trace detail..." });
77
- const s = a.spans || [], d = a.warnings || [];
78
- return /* @__PURE__ */ l("div", { children: [
79
- /* @__PURE__ */ l("div", { className: "ss-dbg-tl-detail-header", children: [
80
- /* @__PURE__ */ e(
81
- "button",
82
- {
83
- type: "button",
84
- className: "ss-dbg-btn-clear",
85
- onClick: () => m(null),
86
- children: "← Back"
87
- }
88
- ),
89
- /* @__PURE__ */ e("span", { className: `ss-dbg-method ss-dbg-method-${a.method.toLowerCase()}`, children: a.method }),
90
- /* @__PURE__ */ e("span", { className: "ss-dbg-tl-detail-url", children: a.url }),
91
- /* @__PURE__ */ e("span", { className: `ss-dbg-status ${x(a.statusCode)}`, children: a.statusCode }),
92
- /* @__PURE__ */ l("span", { className: "ss-dbg-tl-meta", children: [
93
- u(a.totalDuration),
94
- " · ",
95
- a.spanCount,
96
- " spans"
97
- ] })
98
- ] }),
99
- /* @__PURE__ */ e("div", { className: "ss-dbg-tl-legend", children: z.map((t) => /* @__PURE__ */ l("div", { className: "ss-dbg-tl-legend-item", children: [
100
- /* @__PURE__ */ e("div", { className: "ss-dbg-tl-legend-dot", style: { background: t.color } }),
101
- /* @__PURE__ */ e("span", { children: t.label })
102
- ] }, t.label)) }),
103
- /* @__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((t) => {
104
- const o = a.totalDuration || 1, A = t.startOffset / o * 100, q = Math.max(t.duration / o * 100, 0.5);
105
- return /* @__PURE__ */ l("div", { className: "ss-dbg-tl-row", children: [
106
- /* @__PURE__ */ e("div", { className: "ss-dbg-tl-label", title: t.label, children: t.label }),
107
- /* @__PURE__ */ e("div", { className: "ss-dbg-tl-track", children: /* @__PURE__ */ e(
108
- "div",
109
- {
110
- className: `ss-dbg-tl-bar ss-dbg-tl-bar-${t.category}`,
111
- style: {
112
- left: `${A}%`,
113
- width: `${q}%`,
114
- background: L[t.category] || L.custom
115
- },
116
- title: `${t.label}: ${u(t.duration)}`
117
- }
118
- ) }),
119
- /* @__PURE__ */ e("span", { className: "ss-dbg-tl-dur", children: u(t.duration) })
120
- ] }, t.id);
121
- }) }),
122
- d.length > 0 && /* @__PURE__ */ l("div", { className: "ss-dbg-tl-warnings", children: [
123
- /* @__PURE__ */ e("div", { className: "ss-dbg-tl-warnings-title", children: "Warnings" }),
124
- d.map((t, o) => /* @__PURE__ */ e("div", { className: "ss-dbg-tl-warning", children: t }, o))
125
- ] })
126
- ] });
127
- }
128
- return /* @__PURE__ */ l("div", { children: [
129
- /* @__PURE__ */ l("div", { className: "ss-dbg-search-bar", children: [
130
- /* @__PURE__ */ e(
131
- "input",
132
- {
133
- type: "text",
134
- className: "ss-dbg-search",
135
- placeholder: "Filter traces...",
136
- value: i,
137
- onChange: (s) => T(s.target.value)
138
- }
139
- ),
140
- /* @__PURE__ */ l("span", { className: "ss-dbg-summary", children: [
141
- c.length,
142
- " traces"
143
- ] })
144
- ] }),
145
- c.length === 0 ? /* @__PURE__ */ e("div", { className: "ss-dbg-empty", children: "No traces captured. Enable tracing in config." }) : /* @__PURE__ */ l("table", { ref: R, className: "ss-dbg-table", children: [
146
- /* @__PURE__ */ l("colgroup", { children: [
147
- /* @__PURE__ */ e("col", { style: { width: "50px" } }),
148
- /* @__PURE__ */ e("col", { style: { width: "70px" } }),
149
- /* @__PURE__ */ e("col", {}),
150
- /* @__PURE__ */ e("col", { style: { width: "60px" } }),
151
- /* @__PURE__ */ e("col", { style: { width: "80px" } }),
152
- /* @__PURE__ */ e("col", { style: { width: "50px" } }),
153
- /* @__PURE__ */ e("col", { style: { width: "80px" } })
154
- ] }),
155
- /* @__PURE__ */ e("thead", { children: /* @__PURE__ */ l("tr", { children: [
156
- /* @__PURE__ */ e("th", { children: "#" }),
157
- /* @__PURE__ */ e("th", { children: "Method" }),
158
- /* @__PURE__ */ e("th", { children: "URL" }),
159
- /* @__PURE__ */ e("th", { children: "Status" }),
160
- /* @__PURE__ */ e("th", { children: "Duration" }),
161
- /* @__PURE__ */ e("th", { children: "Spans" }),
162
- /* @__PURE__ */ e("th", { children: "Time" })
163
- ] }) }),
164
- /* @__PURE__ */ e("tbody", { children: c.map((s) => /* @__PURE__ */ l(
165
- "tr",
166
- {
167
- className: "ss-dbg-email-row",
168
- onClick: () => M(s.id),
169
- children: [
170
- /* @__PURE__ */ e("td", { className: "ss-dbg-c-dim", style: { whiteSpace: "nowrap" }, children: s.id }),
171
- /* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { className: `ss-dbg-method ss-dbg-method-${s.method.toLowerCase()}`, children: s.method }) }),
172
- /* @__PURE__ */ e("td", { title: s.url, children: s.url }),
173
- /* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { className: `ss-dbg-status ${x(s.statusCode)}`, children: s.statusCode }) }),
174
- /* @__PURE__ */ e(
175
- "td",
176
- {
177
- className: `ss-dbg-duration ${D(s.totalDuration) === "very-slow" ? "ss-dbg-very-slow" : D(s.totalDuration) === "slow" ? "ss-dbg-slow" : ""}`,
178
- children: u(s.totalDuration)
179
- }
180
- ),
181
- /* @__PURE__ */ e("td", { className: "ss-dbg-c-muted", style: { textAlign: "center" }, children: s.spanCount }),
182
- /* @__PURE__ */ e("td", { className: "ss-dbg-event-time", title: j(s.timestamp), children: O(s.timestamp) })
183
- ]
184
- },
185
- s.id
186
- )) })
187
- ] })
188
- ] });
189
- }
190
- export {
191
- P as TimelineTab,
192
- P as default
193
- };
@@ -1,100 +0,0 @@
1
- import { jsx as t, jsxs as a } from "react/jsx-runtime";
2
- import { useMemo as n } from "react";
3
- const h = {
4
- request: "#1e3a5f",
5
- middleware: "rgba(30, 58, 95, 0.7)",
6
- db: "#6d28d9",
7
- view: "#0e7490",
8
- mail: "#059669",
9
- event: "#b45309",
10
- custom: "var(--ss-dim)"
11
- }, x = {
12
- request: "Request",
13
- middleware: "Middleware",
14
- db: "DB",
15
- mail: "Mail",
16
- event: "Event",
17
- view: "View",
18
- custom: "Custom"
19
- };
20
- function C({
21
- spans: b,
22
- totalDuration: d,
23
- className: g = "",
24
- warnings: l
25
- }) {
26
- const i = b || [], c = n(
27
- () => [...i].sort((e, s) => e.startOffset - s.startOffset),
28
- [i]
29
- ), u = n(() => {
30
- const e = {};
31
- for (const s of c)
32
- e[s.id] = s.parentId ? (e[s.parentId] || 0) + 1 : 0;
33
- return e;
34
- }, [c]);
35
- return i.length === 0 ? /* @__PURE__ */ t("div", { className: "ss-dash-empty", children: "No spans recorded" }) : /* @__PURE__ */ a("div", { className: `ss-dash-tl-waterfall ${g}`, children: [
36
- /* @__PURE__ */ t("div", { className: "ss-dash-tl-legend", children: Object.entries(x).map(([e, s]) => /* @__PURE__ */ a("div", { className: "ss-dash-tl-legend-item", children: [
37
- /* @__PURE__ */ t(
38
- "span",
39
- {
40
- className: "ss-dash-tl-legend-dot",
41
- style: {
42
- background: h[e] || h.custom
43
- }
44
- }
45
- ),
46
- /* @__PURE__ */ t("span", { children: s })
47
- ] }, e)) }),
48
- c.map((e) => {
49
- const s = d > 0 ? e.startOffset / d * 100 : 0, f = d > 0 ? Math.max(e.duration / d * 100, 0.5) : 1, v = u[e.id] || 0, N = e.label.length > 50 ? e.label.slice(0, 50) + "..." : e.label, y = e.category === "db" ? "DB" : e.category, $ = e.category === "db" ? "purple" : e.category === "mail" ? "green" : e.category === "event" ? "amber" : e.category === "view" ? "blue" : "muted", o = e.metadata ? Object.entries(e.metadata).filter(([, r]) => r != null).map(([r, w]) => `${r}=${w}`).join(", ") : "", m = o ? `${e.label} (${e.duration.toFixed(2)}ms)
50
- ${o}` : `${e.label} (${e.duration.toFixed(2)}ms)`;
51
- return /* @__PURE__ */ a("div", { className: "ss-dash-tl-row", children: [
52
- /* @__PURE__ */ a(
53
- "div",
54
- {
55
- className: "ss-dash-tl-label",
56
- title: m,
57
- style: { paddingLeft: 8 + v * 16 + "px" },
58
- children: [
59
- /* @__PURE__ */ t(
60
- "span",
61
- {
62
- className: `ss-dash-badge ss-dash-badge-${$}`,
63
- style: { fontSize: "9px", marginRight: "4px" },
64
- children: y
65
- }
66
- ),
67
- N
68
- ]
69
- }
70
- ),
71
- /* @__PURE__ */ t("div", { className: "ss-dash-tl-track", children: /* @__PURE__ */ t(
72
- "div",
73
- {
74
- className: `ss-dash-tl-bar ss-dash-tl-bar-${e.category || "custom"}`,
75
- style: {
76
- left: `${s}%`,
77
- width: `${f}%`
78
- },
79
- title: m
80
- }
81
- ) }),
82
- /* @__PURE__ */ a("span", { className: "ss-dash-tl-dur", children: [
83
- e.duration.toFixed(2),
84
- "ms"
85
- ] })
86
- ] }, e.id);
87
- }),
88
- l && l.length > 0 && /* @__PURE__ */ a("div", { className: "ss-dash-tl-warnings", children: [
89
- /* @__PURE__ */ a("div", { className: "ss-dash-tl-warnings-title", children: [
90
- "Warnings (",
91
- l.length,
92
- ")"
93
- ] }),
94
- l.map((e, s) => /* @__PURE__ */ t("div", { className: "ss-dash-tl-warning", children: e }, s))
95
- ] })
96
- ] });
97
- }
98
- export {
99
- C as W
100
- };