adonisjs-server-stats 1.5.4 → 1.6.2

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 (527) hide show
  1. package/README.md +351 -171
  2. package/dist/configure.d.ts.map +1 -1
  3. package/dist/core/api-client.d.ts +73 -0
  4. package/dist/core/api-client.d.ts.map +1 -0
  5. package/dist/core/config-utils.d.ts +109 -0
  6. package/dist/core/config-utils.d.ts.map +1 -0
  7. package/dist/core/constants.d.ts +11 -0
  8. package/dist/core/constants.d.ts.map +1 -0
  9. package/dist/core/dashboard-api.d.ts +65 -0
  10. package/dist/core/dashboard-api.d.ts.map +1 -0
  11. package/dist/core/dashboard-data-controller.d.ts +157 -0
  12. package/dist/core/dashboard-data-controller.d.ts.map +1 -0
  13. package/dist/core/debug-data-controller.d.ts +89 -0
  14. package/dist/core/debug-data-controller.d.ts.map +1 -0
  15. package/dist/core/feature-detect.d.ts +67 -0
  16. package/dist/core/feature-detect.d.ts.map +1 -0
  17. package/dist/core/formatters.d.ts +189 -0
  18. package/dist/core/formatters.d.ts.map +1 -0
  19. package/dist/core/history-buffer.d.ts +23 -0
  20. package/dist/core/history-buffer.d.ts.map +1 -0
  21. package/dist/core/icons.d.ts +36 -0
  22. package/dist/core/icons.d.ts.map +1 -0
  23. package/dist/core/index.d.ts +39 -0
  24. package/dist/core/index.d.ts.map +1 -0
  25. package/dist/core/index.js +1961 -0
  26. package/dist/core/internals-utils.d.ts +71 -0
  27. package/dist/core/internals-utils.d.ts.map +1 -0
  28. package/dist/core/job-utils.d.ts +45 -0
  29. package/dist/core/job-utils.d.ts.map +1 -0
  30. package/dist/core/log-utils.d.ts +34 -0
  31. package/dist/core/log-utils.d.ts.map +1 -0
  32. package/dist/core/metrics.d.ts +41 -0
  33. package/dist/core/metrics.d.ts.map +1 -0
  34. package/dist/core/pagination.d.ts +128 -0
  35. package/dist/core/pagination.d.ts.map +1 -0
  36. package/dist/core/query-utils.d.ts +35 -0
  37. package/dist/core/query-utils.d.ts.map +1 -0
  38. package/dist/core/resizable-columns.d.ts +18 -0
  39. package/dist/core/resizable-columns.d.ts.map +1 -0
  40. package/dist/core/routes.d.ts +12 -0
  41. package/dist/core/routes.d.ts.map +1 -0
  42. package/dist/core/server-stats-controller.d.ts +106 -0
  43. package/dist/core/server-stats-controller.d.ts.map +1 -0
  44. package/dist/core/sparkline.d.ts +80 -0
  45. package/dist/core/sparkline.d.ts.map +1 -0
  46. package/dist/core/theme.d.ts +42 -0
  47. package/dist/core/theme.d.ts.map +1 -0
  48. package/dist/core/trace-utils.d.ts +62 -0
  49. package/dist/core/trace-utils.d.ts.map +1 -0
  50. package/dist/core/transmit-adapter.d.ts +59 -0
  51. package/dist/core/transmit-adapter.d.ts.map +1 -0
  52. package/dist/core/types.d.ts +619 -0
  53. package/dist/core/types.d.ts.map +1 -0
  54. package/dist/react/CacheSection-DGxMDlWK.js +146 -0
  55. package/dist/react/CacheTab-CnVW5PLs.js +123 -0
  56. package/dist/react/ConfigContent-CnsEI4j3.js +397 -0
  57. package/dist/react/ConfigSection-DPcrfqXY.js +11 -0
  58. package/dist/react/ConfigTab-BSWq_o2p.js +15 -0
  59. package/dist/react/CustomPaneTab-xjkYwTvH.js +104 -0
  60. package/dist/react/DataTable-YyShr5B-.js +55 -0
  61. package/dist/react/EmailsSection-CSyTg1aX.js +262 -0
  62. package/dist/react/EmailsTab-Dh2YSa_f.js +131 -0
  63. package/dist/react/EventsSection-C1pbJDfW.js +86 -0
  64. package/dist/react/EventsTab-eCh02cdd.js +63 -0
  65. package/dist/react/FilterBar-DQRXpWrb.js +50 -0
  66. package/dist/react/InternalsContent-DBzsI0CG.js +346 -0
  67. package/dist/react/InternalsSection-t7ihcWO-.js +32 -0
  68. package/dist/react/InternalsTab-Oij0A2fN.js +30 -0
  69. package/dist/react/JobsSection-CLAin5vU.js +187 -0
  70. package/dist/react/JobsTab-Dl5nrj2z.js +141 -0
  71. package/dist/react/LogsSection-C1p81fXO.js +212 -0
  72. package/dist/react/LogsTab-D-kR7PjX.js +88 -0
  73. package/dist/react/OverviewSection-nm3xdACz.js +539 -0
  74. package/dist/react/Pagination-BkmzUDY8.js +64 -0
  75. package/dist/react/QueriesSection-DB12HMfQ.js +461 -0
  76. package/dist/react/QueriesTab-fyBB1u_Y.js +90 -0
  77. package/dist/react/RequestsSection-DTqB81ac.js +209 -0
  78. package/dist/react/RoutesSection-DJWa4NPV.js +74 -0
  79. package/dist/react/RoutesTab-D3l8TOpu.js +74 -0
  80. package/dist/react/TimelineSection-C4d-jRX1.js +158 -0
  81. package/dist/react/TimelineTab-C5TFaSmQ.js +193 -0
  82. package/dist/react/WaterfallChart-Cj73WdfM.js +100 -0
  83. package/dist/react/core/api-client.d.ts +73 -0
  84. package/dist/react/core/api-client.d.ts.map +1 -0
  85. package/dist/react/core/config-utils.d.ts +109 -0
  86. package/dist/react/core/config-utils.d.ts.map +1 -0
  87. package/dist/react/core/constants.d.ts +11 -0
  88. package/dist/react/core/constants.d.ts.map +1 -0
  89. package/dist/react/core/dashboard-api.d.ts +65 -0
  90. package/dist/react/core/dashboard-api.d.ts.map +1 -0
  91. package/dist/react/core/dashboard-data-controller.d.ts +157 -0
  92. package/dist/react/core/dashboard-data-controller.d.ts.map +1 -0
  93. package/dist/react/core/debug-data-controller.d.ts +89 -0
  94. package/dist/react/core/debug-data-controller.d.ts.map +1 -0
  95. package/dist/react/core/feature-detect.d.ts +67 -0
  96. package/dist/react/core/feature-detect.d.ts.map +1 -0
  97. package/dist/react/core/formatters.d.ts +189 -0
  98. package/dist/react/core/formatters.d.ts.map +1 -0
  99. package/dist/react/core/history-buffer.d.ts +23 -0
  100. package/dist/react/core/history-buffer.d.ts.map +1 -0
  101. package/dist/react/core/icons.d.ts +36 -0
  102. package/dist/react/core/icons.d.ts.map +1 -0
  103. package/dist/react/core/index.d.ts +39 -0
  104. package/dist/react/core/index.d.ts.map +1 -0
  105. package/dist/react/core/internals-utils.d.ts +71 -0
  106. package/dist/react/core/internals-utils.d.ts.map +1 -0
  107. package/dist/react/core/job-utils.d.ts +45 -0
  108. package/dist/react/core/job-utils.d.ts.map +1 -0
  109. package/dist/react/core/log-utils.d.ts +34 -0
  110. package/dist/react/core/log-utils.d.ts.map +1 -0
  111. package/dist/react/core/metrics.d.ts +41 -0
  112. package/dist/react/core/metrics.d.ts.map +1 -0
  113. package/dist/react/core/pagination.d.ts +128 -0
  114. package/dist/react/core/pagination.d.ts.map +1 -0
  115. package/dist/react/core/query-utils.d.ts +35 -0
  116. package/dist/react/core/query-utils.d.ts.map +1 -0
  117. package/dist/react/core/resizable-columns.d.ts +18 -0
  118. package/dist/react/core/resizable-columns.d.ts.map +1 -0
  119. package/dist/react/core/routes.d.ts +12 -0
  120. package/dist/react/core/routes.d.ts.map +1 -0
  121. package/dist/react/core/server-stats-controller.d.ts +106 -0
  122. package/dist/react/core/server-stats-controller.d.ts.map +1 -0
  123. package/dist/react/core/sparkline.d.ts +80 -0
  124. package/dist/react/core/sparkline.d.ts.map +1 -0
  125. package/dist/react/core/theme.d.ts +42 -0
  126. package/dist/react/core/theme.d.ts.map +1 -0
  127. package/dist/react/core/trace-utils.d.ts +62 -0
  128. package/dist/react/core/trace-utils.d.ts.map +1 -0
  129. package/dist/react/core/transmit-adapter.d.ts +59 -0
  130. package/dist/react/core/transmit-adapter.d.ts.map +1 -0
  131. package/dist/react/core/types.d.ts +619 -0
  132. package/dist/react/core/types.d.ts.map +1 -0
  133. package/dist/react/index-UdTfSvtO.js +1074 -0
  134. package/dist/react/index.js +18 -0
  135. package/dist/react/react/components/Dashboard/DashboardPage.d.ts +17 -0
  136. package/dist/react/react/components/Dashboard/DashboardPage.d.ts.map +1 -0
  137. package/dist/react/react/components/Dashboard/sections/CacheSection.d.ts +7 -0
  138. package/dist/react/react/components/Dashboard/sections/CacheSection.d.ts.map +1 -0
  139. package/dist/react/react/components/Dashboard/sections/ConfigSection.d.ts +7 -0
  140. package/dist/react/react/components/Dashboard/sections/ConfigSection.d.ts.map +1 -0
  141. package/dist/react/react/components/Dashboard/sections/EmailsSection.d.ts +7 -0
  142. package/dist/react/react/components/Dashboard/sections/EmailsSection.d.ts.map +1 -0
  143. package/dist/react/react/components/Dashboard/sections/EventsSection.d.ts +7 -0
  144. package/dist/react/react/components/Dashboard/sections/EventsSection.d.ts.map +1 -0
  145. package/dist/react/react/components/Dashboard/sections/InternalsSection.d.ts +14 -0
  146. package/dist/react/react/components/Dashboard/sections/InternalsSection.d.ts.map +1 -0
  147. package/dist/react/react/components/Dashboard/sections/JobsSection.d.ts +7 -0
  148. package/dist/react/react/components/Dashboard/sections/JobsSection.d.ts.map +1 -0
  149. package/dist/react/react/components/Dashboard/sections/LogsSection.d.ts +7 -0
  150. package/dist/react/react/components/Dashboard/sections/LogsSection.d.ts.map +1 -0
  151. package/dist/react/react/components/Dashboard/sections/OverviewSection.d.ts +7 -0
  152. package/dist/react/react/components/Dashboard/sections/OverviewSection.d.ts.map +1 -0
  153. package/dist/react/react/components/Dashboard/sections/QueriesSection.d.ts +7 -0
  154. package/dist/react/react/components/Dashboard/sections/QueriesSection.d.ts.map +1 -0
  155. package/dist/react/react/components/Dashboard/sections/RequestsSection.d.ts +7 -0
  156. package/dist/react/react/components/Dashboard/sections/RequestsSection.d.ts.map +1 -0
  157. package/dist/react/react/components/Dashboard/sections/RoutesSection.d.ts +7 -0
  158. package/dist/react/react/components/Dashboard/sections/RoutesSection.d.ts.map +1 -0
  159. package/dist/react/react/components/Dashboard/sections/TimelineSection.d.ts +9 -0
  160. package/dist/react/react/components/Dashboard/sections/TimelineSection.d.ts.map +1 -0
  161. package/dist/react/react/components/Dashboard/shared/DataTable.d.ts +27 -0
  162. package/dist/react/react/components/Dashboard/shared/DataTable.d.ts.map +1 -0
  163. package/dist/react/react/components/Dashboard/shared/FilterBar.d.ts +17 -0
  164. package/dist/react/react/components/Dashboard/shared/FilterBar.d.ts.map +1 -0
  165. package/dist/react/react/components/Dashboard/shared/Pagination.d.ts +13 -0
  166. package/dist/react/react/components/Dashboard/shared/Pagination.d.ts.map +1 -0
  167. package/dist/react/react/components/Dashboard/shared/TimeRangeSelector.d.ts +12 -0
  168. package/dist/react/react/components/Dashboard/shared/TimeRangeSelector.d.ts.map +1 -0
  169. package/dist/react/react/components/Dashboard/shared/WaterfallChart.d.ts +16 -0
  170. package/dist/react/react/components/Dashboard/shared/WaterfallChart.d.ts.map +1 -0
  171. package/dist/react/react/components/DebugPanel/DebugPanel.d.ts +16 -0
  172. package/dist/react/react/components/DebugPanel/DebugPanel.d.ts.map +1 -0
  173. package/dist/react/react/components/DebugPanel/tabs/CacheTab.d.ts +8 -0
  174. package/dist/react/react/components/DebugPanel/tabs/CacheTab.d.ts.map +1 -0
  175. package/dist/react/react/components/DebugPanel/tabs/ConfigTab.d.ts +8 -0
  176. package/dist/react/react/components/DebugPanel/tabs/ConfigTab.d.ts.map +1 -0
  177. package/dist/react/react/components/DebugPanel/tabs/CustomPaneTab.d.ts +14 -0
  178. package/dist/react/react/components/DebugPanel/tabs/CustomPaneTab.d.ts.map +1 -0
  179. package/dist/react/react/components/DebugPanel/tabs/EmailsTab.d.ts +7 -0
  180. package/dist/react/react/components/DebugPanel/tabs/EmailsTab.d.ts.map +1 -0
  181. package/dist/react/react/components/DebugPanel/tabs/EventsTab.d.ts +7 -0
  182. package/dist/react/react/components/DebugPanel/tabs/EventsTab.d.ts.map +1 -0
  183. package/dist/react/react/components/DebugPanel/tabs/InternalsTab.d.ts +12 -0
  184. package/dist/react/react/components/DebugPanel/tabs/InternalsTab.d.ts.map +1 -0
  185. package/dist/react/react/components/DebugPanel/tabs/JobsTab.d.ts +9 -0
  186. package/dist/react/react/components/DebugPanel/tabs/JobsTab.d.ts.map +1 -0
  187. package/dist/react/react/components/DebugPanel/tabs/LogsTab.d.ts +7 -0
  188. package/dist/react/react/components/DebugPanel/tabs/LogsTab.d.ts.map +1 -0
  189. package/dist/react/react/components/DebugPanel/tabs/QueriesTab.d.ts +7 -0
  190. package/dist/react/react/components/DebugPanel/tabs/QueriesTab.d.ts.map +1 -0
  191. package/dist/react/react/components/DebugPanel/tabs/RoutesTab.d.ts +8 -0
  192. package/dist/react/react/components/DebugPanel/tabs/RoutesTab.d.ts.map +1 -0
  193. package/dist/react/react/components/DebugPanel/tabs/TimelineTab.d.ts +7 -0
  194. package/dist/react/react/components/DebugPanel/tabs/TimelineTab.d.ts.map +1 -0
  195. package/dist/react/react/components/StatsBar/MetricCard.d.ts +21 -0
  196. package/dist/react/react/components/StatsBar/MetricCard.d.ts.map +1 -0
  197. package/dist/react/react/components/StatsBar/Sparkline.d.ts +15 -0
  198. package/dist/react/react/components/StatsBar/Sparkline.d.ts.map +1 -0
  199. package/dist/react/react/components/StatsBar/StatsBar.d.ts +22 -0
  200. package/dist/react/react/components/StatsBar/StatsBar.d.ts.map +1 -0
  201. package/dist/react/react/components/shared/Badge.d.ts +32 -0
  202. package/dist/react/react/components/shared/Badge.d.ts.map +1 -0
  203. package/dist/react/react/components/shared/ConfigContent.d.ts +13 -0
  204. package/dist/react/react/components/shared/ConfigContent.d.ts.map +1 -0
  205. package/dist/react/react/components/shared/InternalsContent.d.ts +10 -0
  206. package/dist/react/react/components/shared/InternalsContent.d.ts.map +1 -0
  207. package/dist/react/react/components/shared/JsonViewer.d.ts +12 -0
  208. package/dist/react/react/components/shared/JsonViewer.d.ts.map +1 -0
  209. package/dist/react/react/components/shared/ThemeToggle.d.ts +13 -0
  210. package/dist/react/react/components/shared/ThemeToggle.d.ts.map +1 -0
  211. package/dist/react/react/components/shared/Tooltip.d.ts +16 -0
  212. package/dist/react/react/components/shared/Tooltip.d.ts.map +1 -0
  213. package/dist/react/react/hooks/useApiClient.d.ts +10 -0
  214. package/dist/react/react/hooks/useApiClient.d.ts.map +1 -0
  215. package/dist/react/react/hooks/useDashboardApiBase.d.ts +19 -0
  216. package/dist/react/react/hooks/useDashboardApiBase.d.ts.map +1 -0
  217. package/dist/react/react/hooks/useDashboardData.d.ts +27 -0
  218. package/dist/react/react/hooks/useDashboardData.d.ts.map +1 -0
  219. package/dist/react/react/hooks/useDebugData.d.ts +17 -0
  220. package/dist/react/react/hooks/useDebugData.d.ts.map +1 -0
  221. package/dist/react/react/hooks/useFeatures.d.ts +13 -0
  222. package/dist/react/react/hooks/useFeatures.d.ts.map +1 -0
  223. package/dist/react/react/hooks/useResizableTable.d.ts +13 -0
  224. package/dist/react/react/hooks/useResizableTable.d.ts.map +1 -0
  225. package/dist/react/react/hooks/useServerStats.d.ts +21 -0
  226. package/dist/react/react/hooks/useServerStats.d.ts.map +1 -0
  227. package/dist/react/react/hooks/useTheme.d.ts +12 -0
  228. package/dist/react/react/hooks/useTheme.d.ts.map +1 -0
  229. package/dist/react/react/index.d.ts +14 -0
  230. package/dist/react/react/index.d.ts.map +1 -0
  231. package/dist/react/style.css +1 -0
  232. package/dist/react/useApiClient-BVtNCmnL.js +9 -0
  233. package/dist/react/useDashboardApiBase-Bi36pJ2L.js +14 -0
  234. package/dist/react/useResizableTable-CNJmACdt.js +13 -0
  235. package/dist/src/collectors/app_collector.d.ts.map +1 -1
  236. package/dist/src/collectors/app_collector.js +30 -2
  237. package/dist/src/collectors/auto_detect.d.ts +31 -0
  238. package/dist/src/collectors/auto_detect.d.ts.map +1 -0
  239. package/dist/src/collectors/auto_detect.js +120 -0
  240. package/dist/src/collectors/collector.d.ts +17 -0
  241. package/dist/src/collectors/collector.d.ts.map +1 -1
  242. package/dist/src/collectors/db_pool_collector.d.ts.map +1 -1
  243. package/dist/src/collectors/db_pool_collector.js +35 -1
  244. package/dist/src/collectors/http_collector.d.ts +4 -3
  245. package/dist/src/collectors/http_collector.d.ts.map +1 -1
  246. package/dist/src/collectors/http_collector.js +28 -11
  247. package/dist/src/collectors/index.d.ts +2 -0
  248. package/dist/src/collectors/index.d.ts.map +1 -1
  249. package/dist/src/collectors/index.js +1 -0
  250. package/dist/src/collectors/log_collector.d.ts +11 -4
  251. package/dist/src/collectors/log_collector.d.ts.map +1 -1
  252. package/dist/src/collectors/log_collector.js +51 -5
  253. package/dist/src/collectors/process_collector.d.ts.map +1 -1
  254. package/dist/src/collectors/process_collector.js +4 -0
  255. package/dist/src/collectors/queue_collector.d.ts.map +1 -1
  256. package/dist/src/collectors/queue_collector.js +55 -1
  257. package/dist/src/collectors/redis_collector.d.ts.map +1 -1
  258. package/dist/src/collectors/redis_collector.js +42 -3
  259. package/dist/src/collectors/system_collector.d.ts.map +1 -1
  260. package/dist/src/collectors/system_collector.js +4 -0
  261. package/dist/src/controller/api_controller.d.ts +101 -0
  262. package/dist/src/controller/api_controller.d.ts.map +1 -0
  263. package/dist/src/controller/api_controller.js +131 -0
  264. package/dist/src/controller/debug_controller.d.ts +19 -10
  265. package/dist/src/controller/debug_controller.d.ts.map +1 -1
  266. package/dist/src/controller/debug_controller.js +118 -101
  267. package/dist/src/core/theme.d.ts +42 -0
  268. package/dist/src/core/theme.d.ts.map +1 -0
  269. package/dist/src/core/theme.js +115 -0
  270. package/dist/src/dashboard/chart_aggregator.d.ts.map +1 -1
  271. package/dist/src/dashboard/chart_aggregator.js +3 -2
  272. package/dist/src/dashboard/dashboard_controller.d.ts +10 -14
  273. package/dist/src/dashboard/dashboard_controller.d.ts.map +1 -1
  274. package/dist/src/dashboard/dashboard_controller.js +132 -250
  275. package/dist/src/dashboard/dashboard_store.d.ts +62 -19
  276. package/dist/src/dashboard/dashboard_store.d.ts.map +1 -1
  277. package/dist/src/dashboard/dashboard_store.js +242 -53
  278. package/dist/src/dashboard/integrations/cache_inspector.d.ts +19 -1
  279. package/dist/src/dashboard/integrations/cache_inspector.d.ts.map +1 -1
  280. package/dist/src/dashboard/integrations/config_inspector.d.ts +1 -1
  281. package/dist/src/dashboard/integrations/config_inspector.d.ts.map +1 -1
  282. package/dist/src/dashboard/integrations/config_inspector.js +3 -2
  283. package/dist/src/dashboard/integrations/queue_inspector.d.ts +55 -10
  284. package/dist/src/dashboard/integrations/queue_inspector.d.ts.map +1 -1
  285. package/dist/src/dashboard/integrations/queue_inspector.js +70 -24
  286. package/dist/src/dashboard/migrator.d.ts +5 -0
  287. package/dist/src/dashboard/migrator.d.ts.map +1 -1
  288. package/dist/src/dashboard/migrator.js +44 -9
  289. package/dist/src/dashboard/models/stats_event.d.ts +1 -1
  290. package/dist/src/dashboard/models/stats_event.d.ts.map +1 -1
  291. package/dist/src/dashboard/models/stats_log.d.ts +1 -1
  292. package/dist/src/dashboard/models/stats_log.d.ts.map +1 -1
  293. package/dist/src/dashboard/models/stats_query.d.ts +1 -1
  294. package/dist/src/dashboard/models/stats_query.d.ts.map +1 -1
  295. package/dist/src/dashboard/models/stats_saved_filter.d.ts +1 -1
  296. package/dist/src/dashboard/models/stats_saved_filter.d.ts.map +1 -1
  297. package/dist/src/dashboard/models/stats_trace.d.ts +2 -1
  298. package/dist/src/dashboard/models/stats_trace.d.ts.map +1 -1
  299. package/dist/src/data/data_access.d.ts +105 -0
  300. package/dist/src/data/data_access.d.ts.map +1 -0
  301. package/dist/src/data/data_access.js +310 -0
  302. package/dist/src/data/index.d.ts +3 -0
  303. package/dist/src/data/index.d.ts.map +1 -0
  304. package/dist/src/data/index.js +1 -0
  305. package/dist/src/debug/debug_store.d.ts +20 -1
  306. package/dist/src/debug/debug_store.d.ts.map +1 -1
  307. package/dist/src/debug/debug_store.js +43 -15
  308. package/dist/src/debug/email_collector.d.ts +6 -2
  309. package/dist/src/debug/email_collector.d.ts.map +1 -1
  310. package/dist/src/debug/email_collector.js +3 -0
  311. package/dist/src/debug/event_collector.d.ts +6 -2
  312. package/dist/src/debug/event_collector.d.ts.map +1 -1
  313. package/dist/src/debug/event_collector.js +12 -8
  314. package/dist/src/debug/query_collector.d.ts +6 -2
  315. package/dist/src/debug/query_collector.d.ts.map +1 -1
  316. package/dist/src/debug/query_collector.js +3 -0
  317. package/dist/src/debug/ring_buffer.d.ts +1 -0
  318. package/dist/src/debug/ring_buffer.d.ts.map +1 -1
  319. package/dist/src/debug/ring_buffer.js +5 -2
  320. package/dist/src/debug/route_inspector.d.ts +2 -2
  321. package/dist/src/debug/route_inspector.d.ts.map +1 -1
  322. package/dist/src/debug/route_inspector.js +4 -3
  323. package/dist/src/debug/trace_collector.d.ts +7 -3
  324. package/dist/src/debug/trace_collector.d.ts.map +1 -1
  325. package/dist/src/debug/trace_collector.js +7 -5
  326. package/dist/src/debug/types.d.ts +107 -2
  327. package/dist/src/debug/types.d.ts.map +1 -1
  328. package/dist/src/debug/types.js +1 -1
  329. package/dist/src/define_config.d.ts +49 -5
  330. package/dist/src/define_config.d.ts.map +1 -1
  331. package/dist/src/define_config.js +361 -4
  332. package/dist/src/edge/bootstrap.d.ts +17 -0
  333. package/dist/src/edge/bootstrap.d.ts.map +1 -0
  334. package/dist/src/edge/bootstrap.js +29 -0
  335. package/dist/src/edge/client/dashboard.js +2 -3619
  336. package/dist/src/edge/client/debug-panel-deferred.js +1 -0
  337. package/dist/src/edge/client/debug-panel.js +1 -2140
  338. package/dist/src/edge/client/stats-bar.js +1 -801
  339. package/dist/src/edge/client-vue/dashboard.js +5 -0
  340. package/dist/src/edge/client-vue/debug-panel-deferred.js +4 -0
  341. package/dist/src/edge/client-vue/debug-panel.js +4 -0
  342. package/dist/src/edge/client-vue/stats-bar.js +4 -0
  343. package/dist/src/edge/plugin.d.ts +35 -2
  344. package/dist/src/edge/plugin.d.ts.map +1 -1
  345. package/dist/src/edge/plugin.js +30 -66
  346. package/dist/src/edge/types.d.ts +46 -0
  347. package/dist/src/edge/types.d.ts.map +1 -0
  348. package/dist/src/edge/types.js +4 -0
  349. package/dist/src/edge/views/dashboard.edge +1 -358
  350. package/dist/src/edge/views/debug-panel.edge +2 -154
  351. package/dist/src/edge/views/stats-bar.edge +15 -48
  352. package/dist/src/engine/stats_engine.d.ts +18 -0
  353. package/dist/src/engine/stats_engine.d.ts.map +1 -1
  354. package/dist/src/engine/stats_engine.js +45 -2
  355. package/dist/src/index.d.ts +1 -1
  356. package/dist/src/index.d.ts.map +1 -1
  357. package/dist/src/log_stream/log_stream_provider.d.ts.map +1 -1
  358. package/dist/src/log_stream/log_stream_provider.js +21 -4
  359. package/dist/src/log_stream/log_stream_service.d.ts +8 -1
  360. package/dist/src/log_stream/log_stream_service.d.ts.map +1 -1
  361. package/dist/src/log_stream/log_stream_service.js +27 -3
  362. package/dist/src/middleware/request_tracking_middleware.d.ts +1 -1
  363. package/dist/src/middleware/request_tracking_middleware.d.ts.map +1 -1
  364. package/dist/src/middleware/request_tracking_middleware.js +21 -6
  365. package/dist/src/prometheus/prometheus_collector.d.ts +2 -1
  366. package/dist/src/prometheus/prometheus_collector.d.ts.map +1 -1
  367. package/dist/src/provider/server_stats_provider.d.ts +100 -0
  368. package/dist/src/provider/server_stats_provider.d.ts.map +1 -1
  369. package/dist/src/provider/server_stats_provider.js +460 -104
  370. package/dist/src/routes/access_middleware.d.ts +2 -1
  371. package/dist/src/routes/access_middleware.d.ts.map +1 -1
  372. package/dist/src/routes/access_middleware.js +7 -1
  373. package/dist/src/routes/index.d.ts +4 -0
  374. package/dist/src/routes/index.d.ts.map +1 -0
  375. package/dist/src/routes/index.js +1 -0
  376. package/dist/src/routes/register_routes.d.ts +103 -0
  377. package/dist/src/routes/register_routes.d.ts.map +1 -0
  378. package/dist/src/routes/register_routes.js +356 -0
  379. package/dist/src/routes/router_types.d.ts +29 -0
  380. package/dist/src/routes/router_types.d.ts.map +1 -0
  381. package/dist/src/routes/router_types.js +1 -0
  382. package/dist/src/stubs/config.stub +12 -32
  383. package/dist/src/styles/components.css +1048 -0
  384. package/dist/src/{edge/client → styles}/dashboard.css +299 -736
  385. package/dist/src/{edge/client → styles}/debug-panel.css +117 -633
  386. package/dist/src/{edge/client → styles}/stats-bar.css +28 -10
  387. package/dist/src/styles/tokens.css +153 -0
  388. package/dist/src/styles/utilities.css +75 -0
  389. package/dist/src/types.d.ts +119 -16
  390. package/dist/src/types.d.ts.map +1 -1
  391. package/dist/src/utils/app_import.d.ts +23 -0
  392. package/dist/src/utils/app_import.d.ts.map +1 -0
  393. package/dist/src/utils/app_import.js +44 -0
  394. package/dist/src/utils/json_helpers.d.ts +2 -2
  395. package/dist/src/utils/json_helpers.d.ts.map +1 -1
  396. package/dist/src/utils/logger.d.ts +17 -0
  397. package/dist/src/utils/logger.d.ts.map +1 -0
  398. package/dist/src/utils/logger.js +27 -0
  399. package/dist/src/utils/mail_helpers.d.ts +1 -1
  400. package/dist/src/utils/mail_helpers.d.ts.map +1 -1
  401. package/dist/src/utils/mail_helpers.js +1 -1
  402. package/dist/vue/CacheSection-C788Yfai.js +149 -0
  403. package/dist/vue/CacheTab-BPisYYiQ.js +104 -0
  404. package/dist/vue/ConfigSection-CRzYxqW2.js +576 -0
  405. package/dist/vue/ConfigTab-C8cafGUj.js +361 -0
  406. package/dist/vue/CustomPaneTab-BJxT5Dp7.js +172 -0
  407. package/dist/vue/EmailsSection-C8JFMtW7.js +206 -0
  408. package/dist/vue/EmailsTab-DhFhoNmU.js +157 -0
  409. package/dist/vue/EventsSection-C4wXUgxG.js +107 -0
  410. package/dist/vue/EventsTab-DQ4Nd6AK.js +97 -0
  411. package/dist/vue/FilterBar.vue_vue_type_script_setup_true_lang-ClJ37hhT.js +62 -0
  412. package/dist/vue/InternalsSection-BJUXE-5F.js +468 -0
  413. package/dist/vue/InternalsTab-DEMjqtlw.js +471 -0
  414. package/dist/vue/JobsSection-CsKWTjgN.js +187 -0
  415. package/dist/vue/JobsTab-BCvhOARO.js +117 -0
  416. package/dist/vue/JsonViewer.vue_vue_type_script_setup_true_lang-Vsqar1zx.js +67 -0
  417. package/dist/vue/LogsSection-BFVjSZ24.js +227 -0
  418. package/dist/vue/LogsTab-DpEQ7euu.js +122 -0
  419. package/dist/vue/OverviewSection-CbMdAido.js +849 -0
  420. package/dist/vue/PaginationControls.vue_vue_type_script_setup_true_lang-CuN7g_8Z.js +50 -0
  421. package/dist/vue/QueriesSection-BPiv7u3r.js +429 -0
  422. package/dist/vue/QueriesTab-C8_7oprC.js +107 -0
  423. package/dist/vue/RequestsSection-LtImH4rD.js +243 -0
  424. package/dist/vue/RoutesSection-CrxOxmzx.js +106 -0
  425. package/dist/vue/RoutesTab-Dz0MkZuF.js +80 -0
  426. package/dist/vue/TimelineSection-DLxMW2J_.js +186 -0
  427. package/dist/vue/TimelineTab-Db6lKKsD.js +250 -0
  428. package/dist/vue/WaterfallChart.vue_vue_type_script_setup_true_lang-tZ13cNj1.js +118 -0
  429. package/dist/vue/components/Dashboard/DashboardPage.vue.d.ts +18 -0
  430. package/dist/vue/components/Dashboard/DashboardPage.vue.d.ts.map +1 -0
  431. package/dist/vue/components/Dashboard/sections/CacheSection.vue.d.ts +5 -0
  432. package/dist/vue/components/Dashboard/sections/CacheSection.vue.d.ts.map +1 -0
  433. package/dist/vue/components/Dashboard/sections/ConfigSection.vue.d.ts +3 -0
  434. package/dist/vue/components/Dashboard/sections/ConfigSection.vue.d.ts.map +1 -0
  435. package/dist/vue/components/Dashboard/sections/EmailsSection.vue.d.ts +5 -0
  436. package/dist/vue/components/Dashboard/sections/EmailsSection.vue.d.ts.map +1 -0
  437. package/dist/vue/components/Dashboard/sections/EventsSection.vue.d.ts +5 -0
  438. package/dist/vue/components/Dashboard/sections/EventsSection.vue.d.ts.map +1 -0
  439. package/dist/vue/components/Dashboard/sections/InternalsSection.vue.d.ts +3 -0
  440. package/dist/vue/components/Dashboard/sections/InternalsSection.vue.d.ts.map +1 -0
  441. package/dist/vue/components/Dashboard/sections/JobsSection.vue.d.ts +5 -0
  442. package/dist/vue/components/Dashboard/sections/JobsSection.vue.d.ts.map +1 -0
  443. package/dist/vue/components/Dashboard/sections/LogsSection.vue.d.ts +3 -0
  444. package/dist/vue/components/Dashboard/sections/LogsSection.vue.d.ts.map +1 -0
  445. package/dist/vue/components/Dashboard/sections/OverviewSection.vue.d.ts +5 -0
  446. package/dist/vue/components/Dashboard/sections/OverviewSection.vue.d.ts.map +1 -0
  447. package/dist/vue/components/Dashboard/sections/QueriesSection.vue.d.ts +45 -0
  448. package/dist/vue/components/Dashboard/sections/QueriesSection.vue.d.ts.map +1 -0
  449. package/dist/vue/components/Dashboard/sections/RequestsSection.vue.d.ts +5 -0
  450. package/dist/vue/components/Dashboard/sections/RequestsSection.vue.d.ts.map +1 -0
  451. package/dist/vue/components/Dashboard/sections/RoutesSection.vue.d.ts +5 -0
  452. package/dist/vue/components/Dashboard/sections/RoutesSection.vue.d.ts.map +1 -0
  453. package/dist/vue/components/Dashboard/sections/TimelineSection.vue.d.ts +11 -0
  454. package/dist/vue/components/Dashboard/sections/TimelineSection.vue.d.ts.map +1 -0
  455. package/dist/vue/components/Dashboard/shared/FilterBar.vue.d.ts +29 -0
  456. package/dist/vue/components/Dashboard/shared/FilterBar.vue.d.ts.map +1 -0
  457. package/dist/vue/components/Dashboard/shared/PaginationControls.vue.d.ts +12 -0
  458. package/dist/vue/components/Dashboard/shared/PaginationControls.vue.d.ts.map +1 -0
  459. package/dist/vue/components/Dashboard/shared/TimeRangeSelector.vue.d.ts +11 -0
  460. package/dist/vue/components/Dashboard/shared/TimeRangeSelector.vue.d.ts.map +1 -0
  461. package/dist/vue/components/Dashboard/shared/WaterfallChart.vue.d.ts +10 -0
  462. package/dist/vue/components/Dashboard/shared/WaterfallChart.vue.d.ts.map +1 -0
  463. package/dist/vue/components/DebugPanel/DebugPanel.vue.d.ts +21 -0
  464. package/dist/vue/components/DebugPanel/DebugPanel.vue.d.ts.map +1 -0
  465. package/dist/vue/components/DebugPanel/tabs/CacheTab.vue.d.ts +12 -0
  466. package/dist/vue/components/DebugPanel/tabs/CacheTab.vue.d.ts.map +1 -0
  467. package/dist/vue/components/DebugPanel/tabs/ConfigTab.vue.d.ts +11 -0
  468. package/dist/vue/components/DebugPanel/tabs/ConfigTab.vue.d.ts.map +1 -0
  469. package/dist/vue/components/DebugPanel/tabs/CustomPaneTab.vue.d.ts +11 -0
  470. package/dist/vue/components/DebugPanel/tabs/CustomPaneTab.vue.d.ts.map +1 -0
  471. package/dist/vue/components/DebugPanel/tabs/EmailsTab.vue.d.ts +12 -0
  472. package/dist/vue/components/DebugPanel/tabs/EmailsTab.vue.d.ts.map +1 -0
  473. package/dist/vue/components/DebugPanel/tabs/EventsTab.vue.d.ts +12 -0
  474. package/dist/vue/components/DebugPanel/tabs/EventsTab.vue.d.ts.map +1 -0
  475. package/dist/vue/components/DebugPanel/tabs/InternalsTab.vue.d.ts +11 -0
  476. package/dist/vue/components/DebugPanel/tabs/InternalsTab.vue.d.ts.map +1 -0
  477. package/dist/vue/components/DebugPanel/tabs/JobsTab.vue.d.ts +13 -0
  478. package/dist/vue/components/DebugPanel/tabs/JobsTab.vue.d.ts.map +1 -0
  479. package/dist/vue/components/DebugPanel/tabs/LogsTab.vue.d.ts +15 -0
  480. package/dist/vue/components/DebugPanel/tabs/LogsTab.vue.d.ts.map +1 -0
  481. package/dist/vue/components/DebugPanel/tabs/QueriesTab.vue.d.ts +12 -0
  482. package/dist/vue/components/DebugPanel/tabs/QueriesTab.vue.d.ts.map +1 -0
  483. package/dist/vue/components/DebugPanel/tabs/RoutesTab.vue.d.ts +12 -0
  484. package/dist/vue/components/DebugPanel/tabs/RoutesTab.vue.d.ts.map +1 -0
  485. package/dist/vue/components/DebugPanel/tabs/TimelineTab.vue.d.ts +15 -0
  486. package/dist/vue/components/DebugPanel/tabs/TimelineTab.vue.d.ts.map +1 -0
  487. package/dist/vue/components/StatsBar/MetricCard.vue.d.ts +19 -0
  488. package/dist/vue/components/StatsBar/MetricCard.vue.d.ts.map +1 -0
  489. package/dist/vue/components/StatsBar/Sparkline.vue.d.ts +17 -0
  490. package/dist/vue/components/StatsBar/Sparkline.vue.d.ts.map +1 -0
  491. package/dist/vue/components/StatsBar/StatsBar.vue.d.ts +22 -0
  492. package/dist/vue/components/StatsBar/StatsBar.vue.d.ts.map +1 -0
  493. package/dist/vue/components/shared/JsonViewer.vue.d.ts +13 -0
  494. package/dist/vue/components/shared/JsonViewer.vue.d.ts.map +1 -0
  495. package/dist/vue/components/shared/ThemeToggle.vue.d.ts +8 -0
  496. package/dist/vue/components/shared/ThemeToggle.vue.d.ts.map +1 -0
  497. package/dist/vue/composables/useApiClient.d.ts +9 -0
  498. package/dist/vue/composables/useApiClient.d.ts.map +1 -0
  499. package/dist/vue/composables/useDashboardData.d.ts +53 -0
  500. package/dist/vue/composables/useDashboardData.d.ts.map +1 -0
  501. package/dist/vue/composables/useDebugData.d.ts +25 -0
  502. package/dist/vue/composables/useDebugData.d.ts.map +1 -0
  503. package/dist/vue/composables/useFeatures.d.ts +80 -0
  504. package/dist/vue/composables/useFeatures.d.ts.map +1 -0
  505. package/dist/vue/composables/useResizableTable.d.ts +16 -0
  506. package/dist/vue/composables/useResizableTable.d.ts.map +1 -0
  507. package/dist/vue/composables/useServerStats.d.ts +104 -0
  508. package/dist/vue/composables/useServerStats.d.ts.map +1 -0
  509. package/dist/vue/composables/useTheme.d.ts +6 -0
  510. package/dist/vue/composables/useTheme.d.ts.map +1 -0
  511. package/dist/vue/index-qCQpBftQ.js +1233 -0
  512. package/dist/vue/index.d.ts +10 -0
  513. package/dist/vue/index.d.ts.map +1 -0
  514. package/dist/vue/index.js +11 -0
  515. package/dist/vue/style.css +1 -0
  516. package/dist/vue/useApiClient-BQQ9CF-q.js +10 -0
  517. package/dist/vue/useResizableTable-BoivAevK.js +17 -0
  518. package/package.json +72 -10
  519. package/dist/src/dashboard/dashboard_routes.d.ts +0 -16
  520. package/dist/src/dashboard/dashboard_routes.d.ts.map +0 -1
  521. package/dist/src/dashboard/dashboard_routes.js +0 -77
  522. package/dist/src/routes/debug_routes.d.ts +0 -14
  523. package/dist/src/routes/debug_routes.d.ts.map +0 -1
  524. package/dist/src/routes/debug_routes.js +0 -42
  525. package/dist/src/routes/stats_routes.d.ts +0 -14
  526. package/dist/src/routes/stats_routes.d.ts.map +0 -1
  527. package/dist/src/routes/stats_routes.js +0 -27
@@ -0,0 +1,539 @@
1
+ import { jsx as s, jsxs as e } from "react/jsx-runtime";
2
+ import { useState as E, useRef as X, useEffect as P, useCallback as z } from "react";
3
+ import { formatDuration as $, timeAgo as ss, formatTime as es, durationSeverity as as } from "adonisjs-server-stats/core";
4
+ import { a as B, S } from "./index-UdTfSvtO.js";
5
+ const ls = [
6
+ { value: "5m", label: "5m" },
7
+ { value: "15m", label: "15m" },
8
+ { value: "30m", label: "30m" },
9
+ { value: "1h", label: "1h" },
10
+ { value: "6h", label: "6h" },
11
+ { value: "24h", label: "24h" },
12
+ { value: "7d", label: "7d" }
13
+ ];
14
+ function rs({ value: r, onChange: i, className: c = "" }) {
15
+ return /* @__PURE__ */ s("div", { className: `ss-dash-btn-group ${c}`, children: ls.map((n) => /* @__PURE__ */ s(
16
+ "button",
17
+ {
18
+ type: "button",
19
+ className: `ss-dash-btn ${r === n.value ? "ss-dash-active" : ""}`,
20
+ onClick: () => i(n.value),
21
+ children: n.label
22
+ },
23
+ n.value
24
+ )) });
25
+ }
26
+ function ts(r, i) {
27
+ if (r <= 0) return [0];
28
+ const c = r / i, n = Math.pow(10, Math.floor(Math.log10(c))), u = c / n;
29
+ let o;
30
+ u <= 1 ? o = n : u <= 2 ? o = 2 * n : u <= 5 ? o = 5 * n : o = 10 * n;
31
+ const a = [];
32
+ for (let v = o; v <= r + o * 0.5; v += o) a.push(Math.round(v));
33
+ return a.length === 0 && a.push(Math.ceil(r)), a;
34
+ }
35
+ function O(r) {
36
+ try {
37
+ return new Date(r).toLocaleTimeString("en-US", {
38
+ hour12: !1,
39
+ hour: "2-digit",
40
+ minute: "2-digit"
41
+ });
42
+ } catch {
43
+ return "";
44
+ }
45
+ }
46
+ function U(r) {
47
+ if (r.length === 0) return "";
48
+ if (r.length === 1) return `M${r[0].x},${r[0].y}`;
49
+ let i = `M${r[0].x.toFixed(1)},${r[0].y.toFixed(1)}`;
50
+ for (let c = 0; c < r.length - 1; c++) {
51
+ const n = r[c], u = r[c + 1], o = (n.x + u.x) / 2;
52
+ i += ` C${o.toFixed(1)},${n.y.toFixed(1)} ${o.toFixed(1)},${u.y.toFixed(1)} ${u.x.toFixed(1)},${u.y.toFixed(1)}`;
53
+ }
54
+ return i;
55
+ }
56
+ function I(r) {
57
+ const i = as(r);
58
+ return i === "very-slow" ? "ss-dash-very-slow" : i === "slow" ? "ss-dash-slow" : "";
59
+ }
60
+ function ds({ chartPoints: r }) {
61
+ const i = { top: 12, right: 12, bottom: 28, left: 38 }, c = 220, n = X(null), [u, o] = E(0);
62
+ P(() => {
63
+ const d = n.current;
64
+ if (!d) return;
65
+ o(d.clientWidth);
66
+ const t = new ResizeObserver((w) => {
67
+ for (const C of w)
68
+ o(C.contentRect.width);
69
+ });
70
+ return t.observe(d), () => t.disconnect();
71
+ }, []);
72
+ const a = u || 600, v = a - i.left - i.right, f = c - i.top - i.bottom, x = i.top + f, b = r.map((d) => {
73
+ const t = d;
74
+ return (d.requestCount ?? 0) + (Number(t.request_count) || 0) || d.total || 0;
75
+ }), y = r.map((d) => {
76
+ const t = d;
77
+ return (d.errorCount ?? 0) + (Number(t.error_count) || 0);
78
+ }), T = Math.max(...b, 1), g = Math.ceil(T * 1.1), N = y.some((d) => d > 0), k = ts(g, 4), M = k.length > 0 ? k[k.length - 1] : g, R = (d) => i.left + d / Math.max(r.length - 1, 1) * v, q = (d) => i.top + f - d / (M || 1) * f, l = r.map((d, t) => ({ x: R(t), y: q(b[t]) })), h = r.map((d, t) => ({ x: R(t), y: q(y[t]) })), m = U(l), L = N ? U(h) : "", F = l.length > 1 ? `${m} L${l[l.length - 1].x.toFixed(1)},${x} L${l[0].x.toFixed(1)},${x} Z` : "", j = N && h.length > 1 ? `${L} L${h[h.length - 1].x.toFixed(1)},${x} L${h[0].x.toFixed(1)},${x} Z` : "", G = Math.min(10, r.length), K = Math.max(1, Math.ceil(r.length / G)), [p, Q] = E({ visible: !1, x: 0, idx: -1 }), V = z(
79
+ (d) => {
80
+ const t = l[d].x;
81
+ Q({ visible: !0, x: t, idx: d });
82
+ },
83
+ [l]
84
+ ), Y = z(() => {
85
+ Q({ visible: !1, x: 0, idx: -1 });
86
+ }, []), _ = 120, Z = p.visible ? Math.max(_ / 2, Math.min(p.x, a - _ / 2)) : 0;
87
+ return /* @__PURE__ */ e("div", { ref: n, style: { position: "relative" }, children: [
88
+ /* @__PURE__ */ e("svg", { viewBox: `0 0 ${a} ${c}`, className: "ss-dash-chart-svg", children: [
89
+ /* @__PURE__ */ e("defs", { children: [
90
+ /* @__PURE__ */ e("linearGradient", { id: "ss-cg-total", x1: "0", y1: "0", x2: "0", y2: "1", children: [
91
+ /* @__PURE__ */ s("stop", { offset: "0%", stopColor: "var(--ss-accent)", stopOpacity: 0.3 }),
92
+ /* @__PURE__ */ s("stop", { offset: "100%", stopColor: "var(--ss-accent)", stopOpacity: 0.02 })
93
+ ] }),
94
+ /* @__PURE__ */ e("linearGradient", { id: "ss-cg-error", x1: "0", y1: "0", x2: "0", y2: "1", children: [
95
+ /* @__PURE__ */ s("stop", { offset: "0%", stopColor: "var(--ss-red-fg)", stopOpacity: 0.35 }),
96
+ /* @__PURE__ */ s("stop", { offset: "100%", stopColor: "var(--ss-red-fg)", stopOpacity: 0.02 })
97
+ ] })
98
+ ] }),
99
+ k.map((d) => {
100
+ const t = q(d);
101
+ return /* @__PURE__ */ e("g", { children: [
102
+ /* @__PURE__ */ s(
103
+ "line",
104
+ {
105
+ x1: i.left,
106
+ y1: t,
107
+ x2: a - i.right,
108
+ y2: t,
109
+ stroke: "var(--ss-border-faint)",
110
+ strokeWidth: 0.5,
111
+ strokeDasharray: "3,3"
112
+ }
113
+ ),
114
+ /* @__PURE__ */ s(
115
+ "text",
116
+ {
117
+ x: i.left - 6,
118
+ y: t,
119
+ textAnchor: "end",
120
+ fill: "var(--ss-dim)",
121
+ fontSize: 9,
122
+ dominantBaseline: "middle",
123
+ children: d
124
+ }
125
+ )
126
+ ] }, `ytick-${d}`);
127
+ }),
128
+ F && /* @__PURE__ */ s("path", { d: F, fill: "url(#ss-cg-total)" }),
129
+ m && /* @__PURE__ */ s(
130
+ "path",
131
+ {
132
+ d: m,
133
+ fill: "none",
134
+ stroke: "var(--ss-accent)",
135
+ strokeWidth: 1.5,
136
+ strokeLinejoin: "round",
137
+ strokeLinecap: "round"
138
+ }
139
+ ),
140
+ j && /* @__PURE__ */ s("path", { d: j, fill: "url(#ss-cg-error)" }),
141
+ L && /* @__PURE__ */ s(
142
+ "path",
143
+ {
144
+ d: L,
145
+ fill: "none",
146
+ stroke: "var(--ss-red-fg)",
147
+ strokeWidth: 1.5,
148
+ strokeLinejoin: "round",
149
+ strokeLinecap: "round",
150
+ strokeDasharray: "4,2"
151
+ }
152
+ ),
153
+ r.map((d, t) => {
154
+ const w = b[t], C = y[t], D = l[t].x, J = l[t].y, A = v / (r.length || 1), W = p.visible && p.idx === t, H = p.visible && p.idx !== t;
155
+ return /* @__PURE__ */ e("g", { children: [
156
+ /* @__PURE__ */ s(
157
+ "rect",
158
+ {
159
+ x: D - A / 2,
160
+ y: i.top,
161
+ width: A,
162
+ height: f,
163
+ fill: "transparent",
164
+ className: "ss-dash-chart-hover-zone",
165
+ "data-idx": t,
166
+ onMouseEnter: () => V(t),
167
+ onMouseLeave: Y
168
+ }
169
+ ),
170
+ w > 0 && /* @__PURE__ */ s(
171
+ "circle",
172
+ {
173
+ cx: D,
174
+ cy: J,
175
+ r: W ? 4 : 2.5,
176
+ fill: "var(--ss-accent)",
177
+ stroke: "var(--ss-surface)",
178
+ strokeWidth: 1,
179
+ className: "ss-dash-chart-dot",
180
+ "data-idx": t,
181
+ opacity: H ? 0.3 : 1
182
+ }
183
+ ),
184
+ C > 0 && /* @__PURE__ */ s(
185
+ "circle",
186
+ {
187
+ cx: D,
188
+ cy: h[t].y,
189
+ r: W ? 3.5 : 2,
190
+ fill: "var(--ss-red-fg)",
191
+ stroke: "var(--ss-surface)",
192
+ strokeWidth: 1,
193
+ className: "ss-dash-chart-dot ss-dash-chart-dot-err",
194
+ "data-idx": t,
195
+ opacity: H ? 0.3 : 1
196
+ }
197
+ )
198
+ ] }, t);
199
+ }),
200
+ r.map((d, t) => {
201
+ if (t % K !== 0 && t !== r.length - 1) return null;
202
+ const w = O(d.bucket);
203
+ return w ? /* @__PURE__ */ s(
204
+ "text",
205
+ {
206
+ x: R(t),
207
+ y: c - 6,
208
+ textAnchor: "middle",
209
+ fill: "var(--ss-dim)",
210
+ fontSize: 9,
211
+ children: w
212
+ },
213
+ `xlabel-${t}`
214
+ ) : null;
215
+ })
216
+ ] }),
217
+ p.visible && p.idx >= 0 && /* @__PURE__ */ e(
218
+ "div",
219
+ {
220
+ className: "ss-dash-chart-tooltip",
221
+ style: {
222
+ left: Z,
223
+ top: i.top - 4,
224
+ transform: "translate(-50%, -100%)"
225
+ },
226
+ children: [
227
+ /* @__PURE__ */ s("div", { children: O(r[p.idx].bucket) }),
228
+ /* @__PURE__ */ e("div", { children: [
229
+ "Requests: ",
230
+ b[p.idx]
231
+ ] }),
232
+ y[p.idx] > 0 && /* @__PURE__ */ e("div", { style: { color: "var(--ss-red-fg)" }, children: [
233
+ "Errors: ",
234
+ y[p.idx]
235
+ ] })
236
+ ]
237
+ }
238
+ )
239
+ ] });
240
+ }
241
+ function hs({ options: r = {} }) {
242
+ const [i, c] = E("1h"), { data: n, isLoading: u } = B("overview", r), { data: o } = B("overview/chart", {
243
+ ...r,
244
+ timeRange: i
245
+ });
246
+ if (u && !n)
247
+ return /* @__PURE__ */ s("div", { className: "ss-dash-empty", children: "Loading overview..." });
248
+ const a = n || {
249
+ avgResponseTime: 0,
250
+ p95ResponseTime: 0,
251
+ requestsPerMinute: 0,
252
+ errorRate: 0,
253
+ totalRequests: 0,
254
+ slowestEndpoints: [],
255
+ queryStats: { total: 0, avgDuration: 0, perRequest: 0 },
256
+ recentErrors: [],
257
+ topEvents: [],
258
+ emailActivity: { sent: 0, queued: 0, failed: 0 },
259
+ logLevelBreakdown: { error: 0, warn: 0, info: 0, debug: 0 },
260
+ cacheStats: null,
261
+ jobQueueStatus: null,
262
+ statusDistribution: { "2xx": 0, "3xx": 0, "4xx": 0, "5xx": 0 },
263
+ slowestQueries: []
264
+ }, v = a, f = a.avgResponseTime || Number(v.avg_response_time) || 0, x = a.p95ResponseTime || Number(v.p95_response_time) || 0, b = a.requestsPerMinute || Number(v.requests_per_minute) || 0, y = a.errorRate || Number(v.error_rate) || 0, g = (a.totalRequests || Number(v.total_requests) || 0) > 0, N = o?.buckets || [], k = a.sparklines?.avgResponseTime ?? N.map((l) => l.avgDuration ?? 0), M = a.sparklines?.p95ResponseTime ?? N.map((l) => l.p95Duration ?? 0), R = a.sparklines?.requestsPerMinute ?? N.map((l) => l.requestCount ?? 0), q = a.sparklines?.errorRate ?? N.map((l) => l.errorCount ?? 0);
265
+ return /* @__PURE__ */ e("div", { className: "ss-dash-overview", children: [
266
+ /* @__PURE__ */ e("div", { className: "ss-dash-cards", children: [
267
+ /* @__PURE__ */ e("div", { className: "ss-dash-card", children: [
268
+ /* @__PURE__ */ s("div", { className: "ss-dash-card-title", children: "Avg Response Time" }),
269
+ /* @__PURE__ */ s(
270
+ "div",
271
+ {
272
+ className: `ss-dash-card-value ${g ? f > 500 ? "ss-dash-red" : f > 200 ? "ss-dash-amber" : "ss-dash-accent" : "ss-dash-dim"}`,
273
+ children: g ? $(f) : "-"
274
+ }
275
+ ),
276
+ /* @__PURE__ */ s("div", { className: "ss-dash-sparkline", children: /* @__PURE__ */ s(S, { data: k, color: "#34d399", width: 160, height: 40 }) })
277
+ ] }),
278
+ /* @__PURE__ */ e("div", { className: "ss-dash-card", children: [
279
+ /* @__PURE__ */ s("div", { className: "ss-dash-card-title", children: "P95 Response Time" }),
280
+ /* @__PURE__ */ s(
281
+ "div",
282
+ {
283
+ className: `ss-dash-card-value ${g ? x > 500 ? "ss-dash-red" : x > 200 ? "ss-dash-amber" : "ss-dash-accent" : "ss-dash-dim"}`,
284
+ children: g ? $(x) : "-"
285
+ }
286
+ ),
287
+ /* @__PURE__ */ s("div", { className: "ss-dash-sparkline", children: /* @__PURE__ */ s(S, { data: M, color: "#60a5fa", width: 160, height: 40 }) })
288
+ ] }),
289
+ /* @__PURE__ */ e("div", { className: "ss-dash-card", children: [
290
+ /* @__PURE__ */ s("div", { className: "ss-dash-card-title", children: "Requests / min" }),
291
+ /* @__PURE__ */ s("div", { className: `ss-dash-card-value ${g ? "ss-dash-accent" : "ss-dash-dim"}`, children: g ? b.toFixed(1) : "-" }),
292
+ /* @__PURE__ */ s("div", { className: "ss-dash-sparkline", children: /* @__PURE__ */ s(S, { data: R, color: "#34d399", width: 160, height: 40 }) })
293
+ ] }),
294
+ /* @__PURE__ */ e("div", { className: "ss-dash-card", children: [
295
+ /* @__PURE__ */ s("div", { className: "ss-dash-card-title", children: "Error Rate" }),
296
+ /* @__PURE__ */ s(
297
+ "div",
298
+ {
299
+ className: `ss-dash-card-value ${g ? y > 5 ? "ss-dash-red" : y > 1 ? "ss-dash-amber" : "ss-dash-accent" : "ss-dash-dim"}`,
300
+ children: g ? `${y.toFixed(1)}%` : "-"
301
+ }
302
+ ),
303
+ /* @__PURE__ */ s("div", { className: "ss-dash-sparkline", children: /* @__PURE__ */ s(S, { data: q, color: "#f87171", width: 160, height: 40 }) })
304
+ ] })
305
+ ] }),
306
+ /* @__PURE__ */ e("div", { className: "ss-dash-chart-container", children: [
307
+ /* @__PURE__ */ e("div", { className: "ss-dash-chart-header", children: [
308
+ /* @__PURE__ */ s("span", { className: "ss-dash-chart-title", children: "Request Volume" }),
309
+ /* @__PURE__ */ s(rs, { value: i, onChange: c })
310
+ ] }),
311
+ /* @__PURE__ */ s("div", { className: "ss-dash-chart", id: "ss-dash-chart-area", children: N.length === 0 ? /* @__PURE__ */ s("div", { className: "ss-dash-empty", style: { minHeight: "120px" }, children: "No data for this range" }) : /* @__PURE__ */ s(ds, { chartPoints: N }) }),
312
+ /* @__PURE__ */ e("div", { className: "ss-dash-chart-legend", id: "ss-dash-chart-legend", children: [
313
+ /* @__PURE__ */ e("span", { className: "ss-dash-chart-legend-item", children: [
314
+ /* @__PURE__ */ s("span", { className: "ss-dash-legend-dot", style: { background: "var(--ss-accent)" } }),
315
+ "Requests"
316
+ ] }),
317
+ N.some((l) => (l.errorCount ?? 0) > 0) && /* @__PURE__ */ e("span", { className: "ss-dash-chart-legend-item", children: [
318
+ /* @__PURE__ */ s("span", { className: "ss-dash-legend-dot", style: { background: "var(--ss-red-fg)" } }),
319
+ "Errors"
320
+ ] })
321
+ ] })
322
+ ] }),
323
+ /* @__PURE__ */ e("div", { className: "ss-dash-secondary-cards", children: [
324
+ /* @__PURE__ */ e("div", { className: "ss-dash-secondary-card", children: [
325
+ /* @__PURE__ */ s("div", { className: "ss-dash-secondary-card-title", children: /* @__PURE__ */ s("a", { href: "#requests", className: "ss-dash-widget-link", children: "Slowest Endpoints" }) }),
326
+ a.slowestEndpoints.length === 0 ? /* @__PURE__ */ s("div", { className: "ss-dash-empty", style: { minHeight: "60px" }, children: "No data yet" }) : /* @__PURE__ */ s("ul", { className: "ss-dash-secondary-list", children: a.slowestEndpoints.slice(0, 5).map((l, h) => {
327
+ const m = l.url || l.pattern || "-";
328
+ return /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e(
329
+ "a",
330
+ {
331
+ href: `#requests?url=${encodeURIComponent(m)}`,
332
+ className: "ss-dash-widget-row-link",
333
+ children: [
334
+ /* @__PURE__ */ s("span", { title: m, children: m }),
335
+ /* @__PURE__ */ s(
336
+ "span",
337
+ {
338
+ className: `ss-dash-secondary-list-value ss-dash-duration ${I(l.avgDuration)}`,
339
+ children: $(l.avgDuration)
340
+ }
341
+ )
342
+ ]
343
+ }
344
+ ) }, h);
345
+ }) })
346
+ ] }),
347
+ /* @__PURE__ */ e("div", { className: "ss-dash-secondary-card", children: [
348
+ /* @__PURE__ */ s("div", { className: "ss-dash-secondary-card-title", children: /* @__PURE__ */ s("a", { href: "#queries", className: "ss-dash-widget-link", children: "Query Stats" }) }),
349
+ /* @__PURE__ */ e("ul", { className: "ss-dash-secondary-list", children: [
350
+ /* @__PURE__ */ e("li", { children: [
351
+ /* @__PURE__ */ s("span", { children: "Total Queries" }),
352
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.queryStats.total })
353
+ ] }),
354
+ /* @__PURE__ */ e("li", { children: [
355
+ /* @__PURE__ */ s("span", { children: "Avg Duration" }),
356
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: $(a.queryStats.avgDuration) })
357
+ ] }),
358
+ /* @__PURE__ */ e("li", { children: [
359
+ /* @__PURE__ */ s("span", { children: "Queries / Request" }),
360
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.queryStats.perRequest.toFixed(1) })
361
+ ] })
362
+ ] })
363
+ ] }),
364
+ /* @__PURE__ */ e("div", { className: "ss-dash-secondary-card", children: [
365
+ /* @__PURE__ */ s("div", { className: "ss-dash-secondary-card-title", children: /* @__PURE__ */ s("a", { href: "#logs?level=error", className: "ss-dash-widget-link", children: "Recent Errors" }) }),
366
+ a.recentErrors.length === 0 ? /* @__PURE__ */ s("div", { className: "ss-dash-empty", style: { minHeight: "60px" }, children: "No recent errors" }) : /* @__PURE__ */ s("ul", { className: "ss-dash-secondary-list", children: a.recentErrors.map((l, h) => /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: `#logs?id=${l.id ?? ""}`, className: "ss-dash-widget-row-link", children: [
367
+ /* @__PURE__ */ s("span", { style: { color: "var(--ss-red-fg)" }, title: l.message, children: l.message }),
368
+ l.timestamp && /* @__PURE__ */ s(
369
+ "span",
370
+ {
371
+ className: "ss-dash-secondary-list-value",
372
+ style: { color: "var(--ss-dim)" },
373
+ title: es(l.timestamp),
374
+ children: ss(l.timestamp)
375
+ }
376
+ )
377
+ ] }) }, h)) })
378
+ ] }),
379
+ /* @__PURE__ */ e("div", { className: "ss-dash-secondary-card", children: [
380
+ /* @__PURE__ */ s("div", { className: "ss-dash-secondary-card-title", children: /* @__PURE__ */ s("a", { href: "#events", className: "ss-dash-widget-link", children: "Top Events" }) }),
381
+ a.topEvents.length === 0 ? /* @__PURE__ */ s("div", { className: "ss-dash-empty", style: { minHeight: "60px" }, children: "No events yet" }) : /* @__PURE__ */ s("ul", { className: "ss-dash-secondary-list", children: a.topEvents.slice(0, 5).map((l, h) => {
382
+ const m = l.name || l.eventName || l.event_name || l.event || "";
383
+ return /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e(
384
+ "a",
385
+ {
386
+ href: `#events?event_name=${encodeURIComponent(m)}`,
387
+ className: "ss-dash-widget-row-link",
388
+ children: [
389
+ /* @__PURE__ */ s("span", { children: m }),
390
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: l.count })
391
+ ]
392
+ }
393
+ ) }, h);
394
+ }) })
395
+ ] }),
396
+ /* @__PURE__ */ e("div", { className: "ss-dash-secondary-card", children: [
397
+ /* @__PURE__ */ s("div", { className: "ss-dash-secondary-card-title", children: /* @__PURE__ */ s("a", { href: "#emails", className: "ss-dash-widget-link", children: "Email Activity" }) }),
398
+ /* @__PURE__ */ e("ul", { className: "ss-dash-secondary-list", children: [
399
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#emails?status=sent", className: "ss-dash-widget-row-link", children: [
400
+ /* @__PURE__ */ s("span", { children: "Sent" }),
401
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.emailActivity.sent })
402
+ ] }) }),
403
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#emails?status=queued", className: "ss-dash-widget-row-link", children: [
404
+ /* @__PURE__ */ s("span", { children: "Queued" }),
405
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.emailActivity.queued })
406
+ ] }) }),
407
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#emails?status=failed", className: "ss-dash-widget-row-link", children: [
408
+ /* @__PURE__ */ s("span", { children: "Failed" }),
409
+ /* @__PURE__ */ s(
410
+ "span",
411
+ {
412
+ className: "ss-dash-secondary-list-value",
413
+ style: a.emailActivity.failed > 0 ? { color: "var(--ss-red-fg)" } : void 0,
414
+ children: a.emailActivity.failed
415
+ }
416
+ )
417
+ ] }) })
418
+ ] })
419
+ ] }),
420
+ /* @__PURE__ */ e("div", { className: "ss-dash-secondary-card", children: [
421
+ /* @__PURE__ */ s("div", { className: "ss-dash-secondary-card-title", children: /* @__PURE__ */ s("a", { href: "#logs", className: "ss-dash-widget-link", children: "Log Levels" }) }),
422
+ /* @__PURE__ */ e("ul", { className: "ss-dash-secondary-list", children: [
423
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#logs?level=error", className: "ss-dash-widget-row-link", children: [
424
+ /* @__PURE__ */ s("span", { style: { color: "var(--ss-red-fg)" }, children: "Error" }),
425
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.logLevelBreakdown.error })
426
+ ] }) }),
427
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#logs?level=warn", className: "ss-dash-widget-row-link", children: [
428
+ /* @__PURE__ */ s("span", { style: { color: "var(--ss-amber-fg)" }, children: "Warn" }),
429
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.logLevelBreakdown.warn })
430
+ ] }) }),
431
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#logs?level=info", className: "ss-dash-widget-row-link", children: [
432
+ /* @__PURE__ */ s("span", { style: { color: "var(--ss-green-fg)" }, children: "Info" }),
433
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.logLevelBreakdown.info })
434
+ ] }) }),
435
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#logs?level=debug", className: "ss-dash-widget-row-link", children: [
436
+ /* @__PURE__ */ s("span", { style: { color: "var(--ss-dim)" }, children: "Debug" }),
437
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.logLevelBreakdown.debug })
438
+ ] }) })
439
+ ] })
440
+ ] }),
441
+ a.cacheStats && a.cacheStats.available && /* @__PURE__ */ e("div", { className: "ss-dash-secondary-card", children: [
442
+ /* @__PURE__ */ s("div", { className: "ss-dash-secondary-card-title", children: /* @__PURE__ */ s("a", { href: "#cache", className: "ss-dash-widget-link", children: "Cache" }) }),
443
+ /* @__PURE__ */ e("ul", { className: "ss-dash-secondary-list", children: [
444
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#cache", className: "ss-dash-widget-row-link", children: [
445
+ /* @__PURE__ */ s("span", { children: "Keys" }),
446
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.cacheStats.totalKeys })
447
+ ] }) }),
448
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#cache", className: "ss-dash-widget-row-link", children: [
449
+ /* @__PURE__ */ s("span", { children: "Hit Rate" }),
450
+ /* @__PURE__ */ e("span", { className: "ss-dash-secondary-list-value", children: [
451
+ a.cacheStats.hitRate.toFixed(1),
452
+ "%"
453
+ ] })
454
+ ] }) }),
455
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#cache", className: "ss-dash-widget-row-link", children: [
456
+ /* @__PURE__ */ s("span", { children: "Memory" }),
457
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.cacheStats.memoryUsedHuman })
458
+ ] }) })
459
+ ] })
460
+ ] }),
461
+ a.jobQueueStatus && a.jobQueueStatus.available && /* @__PURE__ */ e("div", { className: "ss-dash-secondary-card", children: [
462
+ /* @__PURE__ */ s("div", { className: "ss-dash-secondary-card-title", children: /* @__PURE__ */ s("a", { href: "#jobs", className: "ss-dash-widget-link", children: "Job Queue" }) }),
463
+ /* @__PURE__ */ e("ul", { className: "ss-dash-secondary-list", children: [
464
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#jobs?status=active", className: "ss-dash-widget-row-link", children: [
465
+ /* @__PURE__ */ s("span", { children: "Active" }),
466
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.jobQueueStatus.active })
467
+ ] }) }),
468
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#jobs?status=waiting", className: "ss-dash-widget-row-link", children: [
469
+ /* @__PURE__ */ s("span", { children: "Waiting" }),
470
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.jobQueueStatus.waiting })
471
+ ] }) }),
472
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#jobs?status=failed", className: "ss-dash-widget-row-link", children: [
473
+ /* @__PURE__ */ s("span", { children: "Failed" }),
474
+ /* @__PURE__ */ s(
475
+ "span",
476
+ {
477
+ className: "ss-dash-secondary-list-value",
478
+ style: a.jobQueueStatus.failed > 0 ? { color: "var(--ss-red-fg)" } : void 0,
479
+ children: a.jobQueueStatus.failed
480
+ }
481
+ )
482
+ ] }) }),
483
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#jobs?status=completed", className: "ss-dash-widget-row-link", children: [
484
+ /* @__PURE__ */ s("span", { children: "Completed" }),
485
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.jobQueueStatus.completed })
486
+ ] }) })
487
+ ] })
488
+ ] }),
489
+ /* @__PURE__ */ e("div", { className: "ss-dash-secondary-card", children: [
490
+ /* @__PURE__ */ s("div", { className: "ss-dash-secondary-card-title", children: /* @__PURE__ */ s("a", { href: "#requests", className: "ss-dash-widget-link", children: "Response Status" }) }),
491
+ /* @__PURE__ */ e("ul", { className: "ss-dash-secondary-list", children: [
492
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#requests?status=2xx", className: "ss-dash-widget-row-link", children: [
493
+ /* @__PURE__ */ s("span", { style: { color: "var(--ss-green-fg)" }, children: "2xx" }),
494
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.statusDistribution["2xx"] })
495
+ ] }) }),
496
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#requests?status=3xx", className: "ss-dash-widget-row-link", children: [
497
+ /* @__PURE__ */ s("span", { style: { color: "var(--ss-blue-fg)" }, children: "3xx" }),
498
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.statusDistribution["3xx"] })
499
+ ] }) }),
500
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#requests?status=4xx", className: "ss-dash-widget-row-link", children: [
501
+ /* @__PURE__ */ s("span", { style: { color: "var(--ss-amber-fg)" }, children: "4xx" }),
502
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.statusDistribution["4xx"] })
503
+ ] }) }),
504
+ /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e("a", { href: "#requests?status=5xx", className: "ss-dash-widget-row-link", children: [
505
+ /* @__PURE__ */ s("span", { style: { color: "var(--ss-red-fg)" }, children: "5xx" }),
506
+ /* @__PURE__ */ s("span", { className: "ss-dash-secondary-list-value", children: a.statusDistribution["5xx"] })
507
+ ] }) })
508
+ ] })
509
+ ] }),
510
+ /* @__PURE__ */ e("div", { className: "ss-dash-secondary-card", children: [
511
+ /* @__PURE__ */ s("div", { className: "ss-dash-secondary-card-title", children: /* @__PURE__ */ s("a", { href: "#queries", className: "ss-dash-widget-link", children: "Slowest Queries" }) }),
512
+ a.slowestQueries.length === 0 ? /* @__PURE__ */ s("div", { className: "ss-dash-empty", style: { minHeight: "60px" }, children: "No query data yet" }) : /* @__PURE__ */ s("ul", { className: "ss-dash-secondary-list", children: a.slowestQueries.slice(0, 5).map((l, h) => {
513
+ const m = l.sqlNormalized || l.normalizedSql || l.sql_normalized || l.sql || "-";
514
+ return /* @__PURE__ */ s("li", { children: /* @__PURE__ */ e(
515
+ "a",
516
+ {
517
+ href: `#queries?pattern=${encodeURIComponent(m)}`,
518
+ className: "ss-dash-widget-row-link",
519
+ children: [
520
+ /* @__PURE__ */ s("span", { title: m, children: m }),
521
+ /* @__PURE__ */ s(
522
+ "span",
523
+ {
524
+ className: `ss-dash-secondary-list-value ss-dash-duration ${I(l.avgDuration)}`,
525
+ children: $(l.avgDuration)
526
+ }
527
+ )
528
+ ]
529
+ }
530
+ ) }, h);
531
+ }) })
532
+ ] })
533
+ ] })
534
+ ] });
535
+ }
536
+ export {
537
+ hs as OverviewSection,
538
+ hs as default
539
+ };
@@ -0,0 +1,64 @@
1
+ import { jsxs as o, jsx as l } from "react/jsx-runtime";
2
+ import { useMemo as h, useCallback as c } from "react";
3
+ import { getPageNumbers as u } from "adonisjs-server-stats/core";
4
+ function v({
5
+ page: s,
6
+ lastPage: i,
7
+ total: d,
8
+ onPageChange: t,
9
+ className: r = ""
10
+ }) {
11
+ const e = h(() => u(s, i), [s, i]), a = c(() => {
12
+ s > 1 && t(s - 1);
13
+ }, [s, t]), m = c(() => {
14
+ s < i && t(s + 1);
15
+ }, [s, i, t]);
16
+ return i <= 1 ? null : /* @__PURE__ */ o("div", { className: `ss-dash-pagination ${r}`, children: [
17
+ /* @__PURE__ */ o("span", { className: "ss-dash-page-info", children: [
18
+ "Page ",
19
+ s,
20
+ " of ",
21
+ i,
22
+ " (",
23
+ d,
24
+ " total)"
25
+ ] }),
26
+ /* @__PURE__ */ o("div", { className: "ss-dash-pagination-controls", children: [
27
+ /* @__PURE__ */ l(
28
+ "button",
29
+ {
30
+ type: "button",
31
+ className: "ss-dash-page-btn",
32
+ onClick: a,
33
+ disabled: s <= 1,
34
+ children: "« Prev"
35
+ }
36
+ ),
37
+ e.map(
38
+ (n, b) => n === "..." ? /* @__PURE__ */ l("span", { className: "ss-dash-page-ellipsis", children: "..." }, `ellipsis-${b}`) : /* @__PURE__ */ l(
39
+ "button",
40
+ {
41
+ type: "button",
42
+ className: `ss-dash-page-btn ${n === s ? "ss-dash-active" : ""}`,
43
+ onClick: () => t(n),
44
+ children: n
45
+ },
46
+ n
47
+ )
48
+ ),
49
+ /* @__PURE__ */ l(
50
+ "button",
51
+ {
52
+ type: "button",
53
+ className: "ss-dash-page-btn",
54
+ onClick: m,
55
+ disabled: s >= i,
56
+ children: "Next »"
57
+ }
58
+ )
59
+ ] })
60
+ ] });
61
+ }
62
+ export {
63
+ v as P
64
+ };