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
@@ -1,8 +1,9 @@
1
+ import type { HttpContext } from '@adonisjs/core/http';
1
2
  /**
2
3
  * Create a middleware function that gates access using the shouldShow callback.
3
4
  * Returns 403 if the callback returns false.
4
5
  *
5
6
  * Shared by stats, debug, and dashboard route registrars.
6
7
  */
7
- export declare function createAccessMiddleware(shouldShow: (ctx: any) => boolean): (ctx: any, next: () => Promise<void>) => Promise<any>;
8
+ export declare function createAccessMiddleware(shouldShow: (ctx: HttpContext) => boolean): (ctx: HttpContext, next: () => Promise<void>) => Promise<void>;
8
9
  //# sourceMappingURL=access_middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"access_middleware.d.ts","sourceRoot":"","sources":["../../../src/routes/access_middleware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,IACxD,KAAK,GAAG,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,kBAUlD"}
1
+ {"version":3,"file":"access_middleware.d.ts","sourceRoot":"","sources":["../../../src/routes/access_middleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAItD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,IAChE,KAAK,WAAW,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,mBAgB1D"}
@@ -1,3 +1,5 @@
1
+ import { log } from '../utils/logger.js';
2
+ let warnedShouldShow = false;
1
3
  /**
2
4
  * Create a middleware function that gates access using the shouldShow callback.
3
5
  * Returns 403 if the callback returns false.
@@ -11,7 +13,11 @@ export function createAccessMiddleware(shouldShow) {
11
13
  return ctx.response.forbidden({ error: 'Access denied' });
12
14
  }
13
15
  }
14
- catch {
16
+ catch (err) {
17
+ if (!warnedShouldShow) {
18
+ warnedShouldShow = true;
19
+ log.warn('shouldShow callback threw in route guard — returning 403: ' + err?.message);
20
+ }
15
21
  return ctx.response.forbidden({ error: 'Access denied' });
16
22
  }
17
23
  await next();
@@ -0,0 +1,4 @@
1
+ export { registerAllRoutes } from './register_routes.js';
2
+ export type { RegisterRoutesOptions } from './register_routes.js';
3
+ export type { AdonisRoute, AdonisRouter } from './router_types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACjE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1 @@
1
+ export { registerAllRoutes } from './register_routes.js';
@@ -0,0 +1,103 @@
1
+ import type { ApiController } from '../controller/api_controller.js';
2
+ import type DebugController from '../controller/debug_controller.js';
3
+ import type ServerStatsController from '../controller/server_stats_controller.js';
4
+ import type DashboardController from '../dashboard/dashboard_controller.js';
5
+ import type { AdonisRouter } from './router_types.js';
6
+ import type { HttpContext } from '@adonisjs/core/http';
7
+ /**
8
+ * Options for the unified route registration function.
9
+ *
10
+ * Brings together stats, debug, and dashboard route registration
11
+ * into a single call with all required dependencies declared upfront.
12
+ */
13
+ export interface RegisterRoutesOptions {
14
+ /** The AdonisJS router instance. */
15
+ router: AdonisRouter;
16
+ /**
17
+ * The unified API controller that serves all data resource endpoints
18
+ * (queries, events, emails, traces, routes, logs).
19
+ *
20
+ * Pass `null` during early boot — routes will return 503 until the
21
+ * controller is wired up.
22
+ */
23
+ getApiController: () => ApiController | null;
24
+ /**
25
+ * Lazy getter for the stats bar controller.
26
+ *
27
+ * The controller is created during `ready()`, but routes are
28
+ * registered during `boot()`, so a lazy getter is required.
29
+ */
30
+ getStatsController: () => ServerStatsController | null;
31
+ /**
32
+ * Lazy getter for the debug controller.
33
+ *
34
+ * Handles non-data debug endpoints: `/config` and `/diagnostics`.
35
+ */
36
+ getDebugController: () => DebugController | null;
37
+ /**
38
+ * Lazy getter for the dashboard controller.
39
+ *
40
+ * Handles dashboard-specific endpoints that are **not** data
41
+ * resources: page rendering, overview, requests, cache, jobs,
42
+ * config, saved filters, grouped queries, and query explain.
43
+ */
44
+ getDashboardController: () => DashboardController | null;
45
+ /**
46
+ * Stats polling endpoint path (e.g. `'/admin/api/server-stats'`).
47
+ *
48
+ * Set to `false` to skip registering the stats endpoint entirely.
49
+ */
50
+ statsEndpoint?: string | false;
51
+ /**
52
+ * Base path for debug panel API routes (e.g. `'/admin/api/debug'`).
53
+ *
54
+ * When omitted, debug routes are **not** registered.
55
+ */
56
+ debugEndpoint?: string;
57
+ /**
58
+ * Base path for the full-page dashboard (e.g. `'/__stats'`).
59
+ *
60
+ * When omitted, dashboard routes are **not** registered.
61
+ */
62
+ dashboardPath?: string;
63
+ /**
64
+ * Optional access-control callback applied to **all** registered
65
+ * routes as middleware. When it returns `false`, the request
66
+ * receives a 403 Forbidden response.
67
+ */
68
+ shouldShow?: (ctx: HttpContext) => boolean;
69
+ }
70
+ /**
71
+ * Register all server-stats routes in a single call.
72
+ *
73
+ * This is the unified replacement for the three separate registrars:
74
+ *
75
+ * - `registerStatsRoutes` — stats bar polling endpoint
76
+ * - `registerDebugRoutes` — debug panel API endpoints
77
+ * - `registerDashboardRoutes` — full-page dashboard endpoints
78
+ *
79
+ * **Data resource** endpoints (queries, events, emails, traces, routes,
80
+ * logs) are routed through the unified {@link ApiController} so that
81
+ * both the debug panel and the dashboard read from the same handler.
82
+ *
83
+ * **Non-data** endpoints (stats polling, config, diagnostics, overview,
84
+ * requests, cache, jobs, saved filters, grouped queries, query explain,
85
+ * and the dashboard HTML page) continue to use their original controllers.
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * registerAllRoutes({
90
+ * router,
91
+ * getApiController: () => apiController,
92
+ * getStatsController: () => statsController,
93
+ * getDebugController: () => debugController,
94
+ * getDashboardController: () => dashboardController,
95
+ * statsEndpoint: '/admin/api/server-stats',
96
+ * debugEndpoint: '/admin/api/debug',
97
+ * dashboardPath: '/__stats',
98
+ * shouldShow: (ctx) => ctx.auth?.user?.role === 'admin',
99
+ * })
100
+ * ```
101
+ */
102
+ export declare function registerAllRoutes(options: RegisterRoutesOptions): void;
103
+ //# sourceMappingURL=register_routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register_routes.d.ts","sourceRoot":"","sources":["../../../src/routes/register_routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,KAAK,eAAe,MAAM,mCAAmC,CAAA;AACpE,OAAO,KAAK,qBAAqB,MAAM,0CAA0C,CAAA;AACjF,OAAO,KAAK,mBAAmB,MAAM,sCAAsC,CAAA;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAMtD;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,MAAM,EAAE,YAAY,CAAA;IAEpB;;;;;;OAMG;IACH,gBAAgB,EAAE,MAAM,aAAa,GAAG,IAAI,CAAA;IAE5C;;;;;OAKG;IACH,kBAAkB,EAAE,MAAM,qBAAqB,GAAG,IAAI,CAAA;IAEtD;;;;OAIG;IACH,kBAAkB,EAAE,MAAM,eAAe,GAAG,IAAI,CAAA;IAEhD;;;;;;OAMG;IACH,sBAAsB,EAAE,MAAM,mBAAmB,GAAG,IAAI,CAAA;IAExD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAE9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAA;CAC3C;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CA6ZtE"}
@@ -0,0 +1,356 @@
1
+ import { createAccessMiddleware } from './access_middleware.js';
2
+ // ---------------------------------------------------------------------------
3
+ // Registration
4
+ // ---------------------------------------------------------------------------
5
+ /**
6
+ * Register all server-stats routes in a single call.
7
+ *
8
+ * This is the unified replacement for the three separate registrars:
9
+ *
10
+ * - `registerStatsRoutes` — stats bar polling endpoint
11
+ * - `registerDebugRoutes` — debug panel API endpoints
12
+ * - `registerDashboardRoutes` — full-page dashboard endpoints
13
+ *
14
+ * **Data resource** endpoints (queries, events, emails, traces, routes,
15
+ * logs) are routed through the unified {@link ApiController} so that
16
+ * both the debug panel and the dashboard read from the same handler.
17
+ *
18
+ * **Non-data** endpoints (stats polling, config, diagnostics, overview,
19
+ * requests, cache, jobs, saved filters, grouped queries, query explain,
20
+ * and the dashboard HTML page) continue to use their original controllers.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * registerAllRoutes({
25
+ * router,
26
+ * getApiController: () => apiController,
27
+ * getStatsController: () => statsController,
28
+ * getDebugController: () => debugController,
29
+ * getDashboardController: () => dashboardController,
30
+ * statsEndpoint: '/admin/api/server-stats',
31
+ * debugEndpoint: '/admin/api/debug',
32
+ * dashboardPath: '/__stats',
33
+ * shouldShow: (ctx) => ctx.auth?.user?.role === 'admin',
34
+ * })
35
+ * ```
36
+ */
37
+ export function registerAllRoutes(options) {
38
+ const { router, getApiController, getStatsController, getDebugController, getDashboardController, statsEndpoint, debugEndpoint, dashboardPath, shouldShow, } = options;
39
+ const middleware = shouldShow ? [createAccessMiddleware(shouldShow)] : [];
40
+ // =========================================================================
41
+ // Stats polling endpoint
42
+ // =========================================================================
43
+ if (typeof statsEndpoint === 'string') {
44
+ router
45
+ .get(statsEndpoint, async (ctx) => {
46
+ const controller = getStatsController();
47
+ if (!controller) {
48
+ return ctx.response.serviceUnavailable({
49
+ error: 'Stats engine is starting up, please retry',
50
+ });
51
+ }
52
+ return controller.index(ctx);
53
+ })
54
+ .as('server-stats.api')
55
+ .use(middleware);
56
+ }
57
+ // =========================================================================
58
+ // Debug panel API routes
59
+ // =========================================================================
60
+ if (debugEndpoint) {
61
+ const base = debugEndpoint.replace(/\/+$/, '');
62
+ /**
63
+ * Bind a debug controller method with lazy initialization and
64
+ * 503 fallback when the controller is not yet ready.
65
+ */
66
+ const bindDebug = (method) => {
67
+ return async (ctx) => {
68
+ const controller = getDebugController();
69
+ if (!controller) {
70
+ return ctx.response.serviceUnavailable({
71
+ error: 'Debug toolbar is starting up, please retry',
72
+ });
73
+ }
74
+ return controller[method].call(controller, ctx);
75
+ };
76
+ };
77
+ /**
78
+ * Wrap an ApiController method as an HTTP handler with lazy
79
+ * initialization and 503 fallback.
80
+ */
81
+ const bindApi = (fn) => {
82
+ return async (ctx) => {
83
+ const api = getApiController();
84
+ if (!api) {
85
+ return ctx.response.serviceUnavailable({
86
+ error: 'Debug toolbar is starting up, please retry',
87
+ });
88
+ }
89
+ return fn(api, ctx);
90
+ };
91
+ };
92
+ router
93
+ .group(() => {
94
+ // Non-data endpoints — stay with DebugController
95
+ router.get('/config', bindDebug('config')).as('server-stats.debug.config');
96
+ router.get('/diagnostics', bindDebug('diagnostics')).as('server-stats.debug.diagnostics');
97
+ // Data endpoints — unified through ApiController
98
+ // Debug panel always reads from ring buffers (source: 'memory')
99
+ // because SQLite column names (snake_case) differ from the
100
+ // camelCase QueryRecord/EventRecord/etc. shapes the frontend expects.
101
+ router
102
+ .get('/queries', bindApi(async (api, ctx) => {
103
+ const queries = await api.getQueries({ source: 'memory' });
104
+ const summary = api.getQuerySummary();
105
+ return ctx.response.json({ queries: queries.data, summary });
106
+ }))
107
+ .as('server-stats.debug.queries');
108
+ router
109
+ .get('/events', bindApi(async (api, ctx) => {
110
+ const result = await api.getEvents({ source: 'memory' });
111
+ return ctx.response.json({ events: result.data, total: result.meta.total });
112
+ }))
113
+ .as('server-stats.debug.events');
114
+ router
115
+ .get('/routes', bindApi((api, ctx) => {
116
+ const result = api.getRoutes();
117
+ return ctx.response.json({ routes: result.data, total: result.meta.total });
118
+ }))
119
+ .as('server-stats.debug.routes');
120
+ router
121
+ .get('/logs', bindApi(async (api, ctx) => {
122
+ const result = await api.getLogs({ source: 'memory' });
123
+ return ctx.response.json(result.data);
124
+ }))
125
+ .as('server-stats.debug.logs');
126
+ router
127
+ .get('/emails', bindApi(async (api, ctx) => {
128
+ const result = await api.getEmails({ source: 'memory' });
129
+ return ctx.response.json({ emails: result.data, total: result.meta.total });
130
+ }))
131
+ .as('server-stats.debug.emails');
132
+ router
133
+ .get('/emails/:id/preview', bindApi(async (api, ctx) => {
134
+ const id = Number(ctx.params.id);
135
+ const html = await api.getEmailPreview(id, 'memory');
136
+ if (!html) {
137
+ return ctx.response.notFound({ error: 'Email not found' });
138
+ }
139
+ return ctx.response.header('Content-Type', 'text/html; charset=utf-8').send(html);
140
+ }))
141
+ .as('server-stats.debug.emailPreview');
142
+ router
143
+ .get('/traces', bindApi(async (api, ctx) => {
144
+ const result = await api.getTraces({ source: 'memory' });
145
+ return ctx.response.json({ traces: result.data, total: result.meta.total });
146
+ }))
147
+ .as('server-stats.debug.traces');
148
+ router
149
+ .get('/traces/:id', bindApi(async (api, ctx) => {
150
+ const id = Number(ctx.params.id);
151
+ const trace = await api.getTraceDetail(id, 'memory');
152
+ if (!trace) {
153
+ return ctx.response.notFound({ error: 'Trace not found' });
154
+ }
155
+ return ctx.response.json(trace);
156
+ }))
157
+ .as('server-stats.debug.traceDetail');
158
+ })
159
+ .prefix(base)
160
+ .use(middleware);
161
+ }
162
+ // =========================================================================
163
+ // Dashboard routes
164
+ // =========================================================================
165
+ if (dashboardPath) {
166
+ const base = dashboardPath.replace(/\/+$/, '');
167
+ /**
168
+ * Bind a dashboard controller method with lazy initialization
169
+ * and 503 fallback.
170
+ */
171
+ const bindDash = (method) => {
172
+ return async (ctx) => {
173
+ const controller = getDashboardController();
174
+ if (!controller) {
175
+ return ctx.response.serviceUnavailable({
176
+ error: 'Dashboard is starting up, please retry',
177
+ });
178
+ }
179
+ return controller[method].call(controller, ctx);
180
+ };
181
+ };
182
+ /**
183
+ * Wrap an ApiController method as a dashboard HTTP handler with
184
+ * lazy initialization and 503 fallback.
185
+ */
186
+ const bindApi = (fn) => {
187
+ return async (ctx) => {
188
+ const api = getApiController();
189
+ if (!api) {
190
+ return ctx.response.serviceUnavailable({
191
+ error: 'Dashboard is starting up, please retry',
192
+ });
193
+ }
194
+ return fn(api, ctx);
195
+ };
196
+ };
197
+ router
198
+ .group(() => {
199
+ // ── Page ────────────────────────────────────────────────────
200
+ router.get('/', bindDash('page')).as('server-stats.dashboard');
201
+ // ── Overview (dashboard-only) ───────────────────────────────
202
+ router.get('/api/overview', bindDash('overview')).as('server-stats.overview');
203
+ router
204
+ .get('/api/overview/chart', bindDash('overviewChart'))
205
+ .as('server-stats.overview.chart');
206
+ // ── Requests (dashboard-only) ───────────────────────────────
207
+ router.get('/api/requests', bindDash('requests')).as('server-stats.requests');
208
+ router.get('/api/requests/:id', bindDash('requestDetail')).as('server-stats.requests.show');
209
+ // ── Queries — unified data via ApiController ────────────────
210
+ router
211
+ .get('/api/queries', bindApi(async (api, ctx) => {
212
+ const qs = ctx.request.qs();
213
+ const result = await api.getQueries({
214
+ page: Number(qs.page) || 1,
215
+ perPage: Number(qs.perPage) || 25,
216
+ search: qs.search || undefined,
217
+ filters: {
218
+ durationMin: qs.duration_min ? Number(qs.duration_min) : undefined,
219
+ model: qs.model || undefined,
220
+ method: qs.method || undefined,
221
+ connection: qs.connection || undefined,
222
+ },
223
+ });
224
+ return ctx.response.json(result);
225
+ }))
226
+ .as('server-stats.queries');
227
+ // Grouped queries and explain stay on DashboardController
228
+ router
229
+ .get('/api/queries/grouped', bindDash('queriesGrouped'))
230
+ .as('server-stats.queries.grouped');
231
+ router
232
+ .get('/api/queries/:id/explain', bindDash('queryExplain'))
233
+ .as('server-stats.queries.explain');
234
+ // ── Events — unified data via ApiController ─────────────────
235
+ router
236
+ .get('/api/events', bindApi(async (api, ctx) => {
237
+ const qs = ctx.request.qs();
238
+ const result = await api.getEvents({
239
+ page: Number(qs.page) || 1,
240
+ perPage: Number(qs.perPage) || 25,
241
+ search: qs.search || undefined,
242
+ filters: {
243
+ eventName: qs.event_name || undefined,
244
+ },
245
+ });
246
+ return ctx.response.json(result);
247
+ }))
248
+ .as('server-stats.events');
249
+ // ── Routes — unified data via ApiController ─────────────────
250
+ router
251
+ .get('/api/routes', bindApi((api, ctx) => {
252
+ const qs = ctx.request.qs();
253
+ const result = api.getRoutes(qs.search || undefined);
254
+ return ctx.response.json(result);
255
+ }))
256
+ .as('server-stats.routes');
257
+ // ── Logs — unified data via ApiController ───────────────────
258
+ router
259
+ .get('/api/logs', bindApi(async (api, ctx) => {
260
+ const qs = ctx.request.qs();
261
+ const result = await api.getLogs({
262
+ page: Number(qs.page) || 1,
263
+ perPage: Number(qs.perPage) || 50,
264
+ search: qs.message || qs.search || undefined,
265
+ filters: {
266
+ level: qs.level || undefined,
267
+ requestId: qs.request_id || qs.requestId || undefined,
268
+ },
269
+ });
270
+ return ctx.response.json(result);
271
+ }))
272
+ .as('server-stats.logs');
273
+ // ── Emails — unified data via ApiController ─────────────────
274
+ router
275
+ .get('/api/emails', bindApi(async (api, ctx) => {
276
+ const qs = ctx.request.qs();
277
+ const result = await api.getEmails({
278
+ page: Number(qs.page) || 1,
279
+ perPage: Number(qs.perPage) || 25,
280
+ search: qs.search || undefined,
281
+ filters: {
282
+ from: qs.from || undefined,
283
+ to: qs.to || undefined,
284
+ subject: qs.subject || undefined,
285
+ status: qs.status || undefined,
286
+ mailer: qs.mailer || undefined,
287
+ },
288
+ });
289
+ return ctx.response.json(result);
290
+ }))
291
+ .as('server-stats.emails');
292
+ router
293
+ .get('/api/emails/:id/preview', bindApi(async (api, ctx) => {
294
+ const id = Number(ctx.params.id);
295
+ const html = await api.getEmailPreview(id);
296
+ if (!html) {
297
+ return ctx.response.notFound({ error: 'Email not found' });
298
+ }
299
+ return ctx.response.header('Content-Type', 'text/html; charset=utf-8').send(html);
300
+ }))
301
+ .as('server-stats.emails.preview');
302
+ // ── Traces — unified data via ApiController ─────────────────
303
+ router
304
+ .get('/api/traces', bindApi(async (api, ctx) => {
305
+ const qs = ctx.request.qs();
306
+ const result = await api.getTraces({
307
+ page: Number(qs.page) || 1,
308
+ perPage: Number(qs.perPage) || 25,
309
+ search: qs.search || undefined,
310
+ filters: {
311
+ method: qs.method ? qs.method.toUpperCase() : undefined,
312
+ url: qs.url || undefined,
313
+ statusMin: qs.status_min ? Number(qs.status_min) : undefined,
314
+ statusMax: qs.status_max ? Number(qs.status_max) : undefined,
315
+ },
316
+ });
317
+ return ctx.response.json(result);
318
+ }))
319
+ .as('server-stats.traces');
320
+ router
321
+ .get('/api/traces/:id', bindApi(async (api, ctx) => {
322
+ const id = Number(ctx.params.id);
323
+ const trace = await api.getTraceDetail(id);
324
+ if (!trace) {
325
+ return ctx.response.notFound({ error: 'Trace not found' });
326
+ }
327
+ return ctx.response.json(trace);
328
+ }))
329
+ .as('server-stats.traces.show');
330
+ // ── Cache (dashboard-only) ──────────────────────────────────
331
+ router.get('/api/cache', bindDash('cacheStats')).as('server-stats.cache');
332
+ router
333
+ .get('/api/cache/:key', bindDash('cacheKey'))
334
+ .as('server-stats.cache.show')
335
+ .where('key', /.*/);
336
+ router
337
+ .delete('/api/cache/:key', bindDash('cacheKeyDelete'))
338
+ .as('server-stats.cache.delete')
339
+ .where('key', /.*/);
340
+ // ── Jobs / Queue (dashboard-only) ───────────────────────────
341
+ router.get('/api/jobs', bindDash('jobs')).as('server-stats.jobs');
342
+ router.get('/api/jobs/:id', bindDash('jobDetail')).as('server-stats.jobs.show');
343
+ router.post('/api/jobs/:id/retry', bindDash('jobRetry')).as('server-stats.jobs.retry');
344
+ // ── Config (dashboard-only) ─────────────────────────────────
345
+ router.get('/api/config', bindDash('config')).as('server-stats.config');
346
+ // ── Saved Filters (dashboard-only) ──────────────────────────
347
+ router.get('/api/filters', bindDash('savedFilters')).as('server-stats.filters');
348
+ router.post('/api/filters', bindDash('createSavedFilter')).as('server-stats.filters.create');
349
+ router
350
+ .delete('/api/filters/:id', bindDash('deleteSavedFilter'))
351
+ .as('server-stats.filters.delete');
352
+ })
353
+ .prefix(base)
354
+ .use(middleware);
355
+ }
356
+ }
@@ -0,0 +1,29 @@
1
+ import type { HttpContext } from '@adonisjs/core/http';
2
+ /**
3
+ * Minimal interface for an AdonisJS route returned by `router.get()` etc.
4
+ *
5
+ * Covers all chaining patterns used across stats, debug, and dashboard
6
+ * route files: `.as()`, `.where()`, and `.use()`.
7
+ */
8
+ export interface AdonisRoute {
9
+ as(name: string): AdonisRoute;
10
+ where(key: string, matcher: RegExp): AdonisRoute;
11
+ use(middleware: unknown[]): void;
12
+ }
13
+ /**
14
+ * Minimal interface for the AdonisJS router used in route registration.
15
+ *
16
+ * Covers every HTTP method and grouping pattern used by
17
+ * `registerStatsRoutes`, `registerDebugRoutes`, and `registerDashboardRoutes`.
18
+ */
19
+ export interface AdonisRouter {
20
+ get(pattern: string, handler: (ctx: HttpContext) => unknown): AdonisRoute;
21
+ post(pattern: string, handler: (ctx: HttpContext) => unknown): AdonisRoute;
22
+ delete(pattern: string, handler: (ctx: HttpContext) => unknown): AdonisRoute;
23
+ group(callback: () => void): {
24
+ prefix(path: string): {
25
+ use(middleware: unknown[]): void;
26
+ };
27
+ };
28
+ }
29
+ //# sourceMappingURL=router_types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router_types.d.ts","sourceRoot":"","sources":["../../../src/routes/router_types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAC7B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAAA;IAChD,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,GAAG,WAAW,CAAA;IACzE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,GAAG,WAAW,CAAA;IAC1E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,GAAG,WAAW,CAAA;IAC5E,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG;QAAE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG;YAAE,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;SAAE,CAAA;KAAE,CAAA;CAC5F"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,39 +1,19 @@
1
1
  {{{
2
2
  exports({ to: app.configPath('server_stats.ts') })
3
3
  }}}
4
- import env from '#start/env'
5
4
  import { defineConfig } from 'adonisjs-server-stats'
6
- import {
7
- processCollector,
8
- systemCollector,
9
- httpCollector,
10
- dbPoolCollector,
11
- redisCollector,
12
- queueCollector,
13
- logCollector,
14
- appCollector,
15
- } from 'adonisjs-server-stats/collectors'
16
5
 
17
6
  export default defineConfig({
18
- intervalMs: 3000,
19
- transport: 'transmit',
20
- channelName: 'admin/server-stats',
21
- endpoint: '/admin/api/server-stats',
22
- collectors: [
23
- processCollector(),
24
- systemCollector(),
25
- httpCollector({ maxRecords: 10_000 }),
26
- dbPoolCollector({ connectionName: 'postgres' }),
27
- redisCollector(),
28
- queueCollector({
29
- queueName: 'default',
30
- connection: {
31
- host: env.get('QUEUE_REDIS_HOST'),
32
- port: env.get('QUEUE_REDIS_PORT'),
33
- password: env.get('QUEUE_REDIS_PASSWORD'),
34
- },
35
- }),
36
- logCollector({ logPath: 'logs/adonisjs.log' }),
37
- appCollector(),
38
- ],
7
+ // Auto-detects installed packages and enables matching collectors.
8
+ // Override with a specific array if needed.
9
+ // collectors: 'auto',
10
+
11
+ // Who can see the stats bar, debug toolbar, and dashboard.
12
+ // authorize: (ctx) => ctx.auth?.user?.role === 'admin',
13
+
14
+ // Enable the debug toolbar (SQL queries, events, emails, logs)
15
+ // toolbar: true,
16
+
17
+ // Enable the full-page dashboard at /__stats
18
+ // dashboard: true,
39
19
  })