@flanksource/clicky-ui 0.3.48 → 0.3.50

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 (444) hide show
  1. package/dist/connections/ConnectionsPage.cjs +219 -0
  2. package/dist/connections/ConnectionsPage.cjs.map +1 -0
  3. package/dist/connections/ConnectionsPage.d.ts +23 -0
  4. package/dist/connections/ConnectionsPage.d.ts.map +1 -0
  5. package/dist/connections/ConnectionsPage.js +219 -0
  6. package/dist/connections/ConnectionsPage.js.map +1 -0
  7. package/dist/connections/connectionActionStatus.cjs +43 -0
  8. package/dist/connections/connectionActionStatus.cjs.map +1 -0
  9. package/dist/connections/connectionActionStatus.d.ts +5 -0
  10. package/dist/connections/connectionActionStatus.d.ts.map +1 -0
  11. package/dist/connections/connectionActionStatus.js +43 -0
  12. package/dist/connections/connectionActionStatus.js.map +1 -0
  13. package/dist/connections/connectionActionTypes.cjs +24 -0
  14. package/dist/connections/connectionActionTypes.cjs.map +1 -0
  15. package/dist/connections/connectionActionTypes.d.ts +36 -0
  16. package/dist/connections/connectionActionTypes.d.ts.map +1 -0
  17. package/dist/connections/connectionActionTypes.js +24 -0
  18. package/dist/connections/connectionActionTypes.js.map +1 -0
  19. package/dist/connections/connectionActions.cjs +11 -0
  20. package/dist/connections/connectionActions.cjs.map +1 -0
  21. package/dist/connections/connectionActions.d.ts +15 -0
  22. package/dist/connections/connectionActions.d.ts.map +1 -0
  23. package/dist/connections/connectionActions.js +11 -0
  24. package/dist/connections/connectionActions.js.map +1 -0
  25. package/dist/connections/connectionDashboard.cjs +185 -0
  26. package/dist/connections/connectionDashboard.cjs.map +1 -0
  27. package/dist/connections/connectionDashboard.d.ts +25 -0
  28. package/dist/connections/connectionDashboard.d.ts.map +1 -0
  29. package/dist/connections/connectionDashboard.js +185 -0
  30. package/dist/connections/connectionDashboard.js.map +1 -0
  31. package/dist/connections/connectionDashboardModel.cjs +43 -0
  32. package/dist/connections/connectionDashboardModel.cjs.map +1 -0
  33. package/dist/connections/connectionDashboardModel.d.ts +75 -0
  34. package/dist/connections/connectionDashboardModel.d.ts.map +1 -0
  35. package/dist/connections/connectionDashboardModel.js +43 -0
  36. package/dist/connections/connectionDashboardModel.js.map +1 -0
  37. package/dist/connections/connectionDashboardRenderer.cjs +21 -0
  38. package/dist/connections/connectionDashboardRenderer.cjs.map +1 -0
  39. package/dist/connections/connectionDashboardRenderer.d.ts +15 -0
  40. package/dist/connections/connectionDashboardRenderer.d.ts.map +1 -0
  41. package/dist/connections/connectionDashboardRenderer.js +21 -0
  42. package/dist/connections/connectionDashboardRenderer.js.map +1 -0
  43. package/dist/connections/connectionDashboardRow.cjs +169 -0
  44. package/dist/connections/connectionDashboardRow.cjs.map +1 -0
  45. package/dist/connections/connectionDashboardRow.d.ts +12 -0
  46. package/dist/connections/connectionDashboardRow.d.ts.map +1 -0
  47. package/dist/connections/connectionDashboardRow.js +169 -0
  48. package/dist/connections/connectionDashboardRow.js.map +1 -0
  49. package/dist/connections/connectionErrorView.cjs +8 -0
  50. package/dist/connections/connectionErrorView.cjs.map +1 -0
  51. package/dist/connections/connectionErrorView.d.ts +4 -0
  52. package/dist/connections/connectionErrorView.d.ts.map +1 -0
  53. package/dist/connections/connectionErrorView.js +8 -0
  54. package/dist/connections/connectionErrorView.js.map +1 -0
  55. package/dist/connections/connectionHealth.cjs +82 -0
  56. package/dist/connections/connectionHealth.cjs.map +1 -0
  57. package/dist/connections/connectionHealth.d.ts +33 -0
  58. package/dist/connections/connectionHealth.d.ts.map +1 -0
  59. package/dist/connections/connectionHealth.js +82 -0
  60. package/dist/connections/connectionHealth.js.map +1 -0
  61. package/dist/connections/connectionLogging.cjs +29 -0
  62. package/dist/connections/connectionLogging.cjs.map +1 -0
  63. package/dist/connections/connectionLogging.d.ts +11 -0
  64. package/dist/connections/connectionLogging.d.ts.map +1 -0
  65. package/dist/connections/connectionLogging.js +29 -0
  66. package/dist/connections/connectionLogging.js.map +1 -0
  67. package/dist/connections/connectionLoggingField.cjs +37 -0
  68. package/dist/connections/connectionLoggingField.cjs.map +1 -0
  69. package/dist/connections/connectionLoggingField.d.ts +12 -0
  70. package/dist/connections/connectionLoggingField.d.ts.map +1 -0
  71. package/dist/connections/connectionLoggingField.js +37 -0
  72. package/dist/connections/connectionLoggingField.js.map +1 -0
  73. package/dist/connections/connectionLoggingModel.cjs +16 -0
  74. package/dist/connections/connectionLoggingModel.cjs.map +1 -0
  75. package/dist/connections/connectionLoggingModel.d.ts +6 -0
  76. package/dist/connections/connectionLoggingModel.d.ts.map +1 -0
  77. package/dist/connections/connectionLoggingModel.js +16 -0
  78. package/dist/connections/connectionLoggingModel.js.map +1 -0
  79. package/dist/connections/connectionResolveView.cjs +24 -0
  80. package/dist/connections/connectionResolveView.cjs.map +1 -0
  81. package/dist/connections/connectionResolveView.d.ts +5 -0
  82. package/dist/connections/connectionResolveView.d.ts.map +1 -0
  83. package/dist/connections/connectionResolveView.js +24 -0
  84. package/dist/connections/connectionResolveView.js.map +1 -0
  85. package/dist/connections/connectionTestButton.cjs +58 -0
  86. package/dist/connections/connectionTestButton.cjs.map +1 -0
  87. package/dist/connections/connectionTestButton.d.ts +6 -0
  88. package/dist/connections/connectionTestButton.d.ts.map +1 -0
  89. package/dist/connections/connectionTestButton.js +58 -0
  90. package/dist/connections/connectionTestButton.js.map +1 -0
  91. package/dist/connections/connectionTestView.cjs +12 -0
  92. package/dist/connections/connectionTestView.cjs.map +1 -0
  93. package/dist/connections/connectionTestView.d.ts +5 -0
  94. package/dist/connections/connectionTestView.d.ts.map +1 -0
  95. package/dist/connections/connectionTestView.js +12 -0
  96. package/dist/connections/connectionTestView.js.map +1 -0
  97. package/dist/connections/connectionsPageModel.cjs +33 -0
  98. package/dist/connections/connectionsPageModel.cjs.map +1 -0
  99. package/dist/connections/connectionsPageModel.d.ts +24 -0
  100. package/dist/connections/connectionsPageModel.d.ts.map +1 -0
  101. package/dist/connections/connectionsPageModel.js +33 -0
  102. package/dist/connections/connectionsPageModel.js.map +1 -0
  103. package/dist/connections/iconProvider.cjs +20 -0
  104. package/dist/connections/iconProvider.cjs.map +1 -0
  105. package/dist/connections/iconProvider.d.ts +7 -0
  106. package/dist/connections/iconProvider.d.ts.map +1 -0
  107. package/dist/connections/iconProvider.js +20 -0
  108. package/dist/connections/iconProvider.js.map +1 -0
  109. package/dist/connections.cjs +45 -0
  110. package/dist/connections.cjs.map +1 -0
  111. package/dist/connections.d.ts +34 -0
  112. package/dist/connections.d.ts.map +1 -0
  113. package/dist/connections.js +45 -0
  114. package/dist/connections.js.map +1 -0
  115. package/dist/data/DataTable.cjs +18 -8
  116. package/dist/data/DataTable.cjs.map +1 -1
  117. package/dist/data/DataTable.d.ts +4 -0
  118. package/dist/data/DataTable.d.ts.map +1 -1
  119. package/dist/data/DataTable.js +18 -8
  120. package/dist/data/DataTable.js.map +1 -1
  121. package/dist/data/TaskManager.cjs +183 -159
  122. package/dist/data/TaskManager.cjs.map +1 -1
  123. package/dist/data/TaskManager.d.ts +3 -1
  124. package/dist/data/TaskManager.d.ts.map +1 -1
  125. package/dist/data/TaskManager.js +185 -161
  126. package/dist/data/TaskManager.js.map +1 -1
  127. package/dist/data/TaskManagerButton.cjs +1 -0
  128. package/dist/data/TaskManagerButton.cjs.map +1 -1
  129. package/dist/data/TaskManagerButton.js +1 -0
  130. package/dist/data/TaskManagerButton.js.map +1 -1
  131. package/dist/data/TaskProgress.cjs +13 -7
  132. package/dist/data/TaskProgress.cjs.map +1 -1
  133. package/dist/data/TaskProgress.d.ts +3 -1
  134. package/dist/data/TaskProgress.d.ts.map +1 -1
  135. package/dist/data/TaskProgress.js +13 -7
  136. package/dist/data/TaskProgress.js.map +1 -1
  137. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +52 -295
  138. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
  139. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
  140. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +47 -290
  141. package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
  142. package/dist/data/diagnostics/MetricTile.cjs +44 -0
  143. package/dist/data/diagnostics/MetricTile.cjs.map +1 -0
  144. package/dist/data/diagnostics/MetricTile.d.ts +13 -0
  145. package/dist/data/diagnostics/MetricTile.d.ts.map +1 -0
  146. package/dist/data/diagnostics/MetricTile.js +44 -0
  147. package/dist/data/diagnostics/MetricTile.js.map +1 -0
  148. package/dist/data/diagnostics/StackDumpView.cjs +227 -0
  149. package/dist/data/diagnostics/StackDumpView.cjs.map +1 -0
  150. package/dist/data/diagnostics/StackDumpView.d.ts +53 -0
  151. package/dist/data/diagnostics/StackDumpView.d.ts.map +1 -0
  152. package/dist/data/diagnostics/StackDumpView.js +227 -0
  153. package/dist/data/diagnostics/StackDumpView.js.map +1 -0
  154. package/dist/data/diagnostics/fixtures.d.ts +1 -0
  155. package/dist/data/diagnostics/fixtures.d.ts.map +1 -1
  156. package/dist/data/diagnostics/metric-tone.cjs +18 -0
  157. package/dist/data/diagnostics/metric-tone.cjs.map +1 -0
  158. package/dist/data/diagnostics/metric-tone.d.ts +6 -0
  159. package/dist/data/diagnostics/metric-tone.d.ts.map +1 -0
  160. package/dist/data/diagnostics/metric-tone.js +18 -0
  161. package/dist/data/diagnostics/metric-tone.js.map +1 -0
  162. package/dist/data/diagnostics/stacktrace.cjs +44 -0
  163. package/dist/data/diagnostics/stacktrace.cjs.map +1 -1
  164. package/dist/data/diagnostics/stacktrace.d.ts +7 -0
  165. package/dist/data/diagnostics/stacktrace.d.ts.map +1 -1
  166. package/dist/data/diagnostics/stacktrace.js +44 -0
  167. package/dist/data/diagnostics/stacktrace.js.map +1 -1
  168. package/dist/data/diagnostics/types.d.ts +2 -8
  169. package/dist/data/diagnostics/types.d.ts.map +1 -1
  170. package/dist/data/lint/LintDetail.cjs +339 -0
  171. package/dist/data/lint/LintDetail.cjs.map +1 -0
  172. package/dist/data/lint/LintDetail.d.ts +17 -0
  173. package/dist/data/lint/LintDetail.d.ts.map +1 -0
  174. package/dist/data/lint/LintDetail.js +339 -0
  175. package/dist/data/lint/LintDetail.js.map +1 -0
  176. package/dist/data/lint/LintFilterBar.cjs +103 -0
  177. package/dist/data/lint/LintFilterBar.cjs.map +1 -0
  178. package/dist/data/lint/LintFilterBar.d.ts +16 -0
  179. package/dist/data/lint/LintFilterBar.d.ts.map +1 -0
  180. package/dist/data/lint/LintFilterBar.js +103 -0
  181. package/dist/data/lint/LintFilterBar.js.map +1 -0
  182. package/dist/data/lint/LintResults.cjs +144 -0
  183. package/dist/data/lint/LintResults.cjs.map +1 -0
  184. package/dist/data/lint/LintResults.d.ts +39 -0
  185. package/dist/data/lint/LintResults.d.ts.map +1 -0
  186. package/dist/data/lint/LintResults.fixtures.d.ts +10 -0
  187. package/dist/data/lint/LintResults.fixtures.d.ts.map +1 -0
  188. package/dist/data/lint/LintResults.js +144 -0
  189. package/dist/data/lint/LintResults.js.map +1 -0
  190. package/dist/data/lint/LintTreeNode.cjs +66 -0
  191. package/dist/data/lint/LintTreeNode.cjs.map +1 -0
  192. package/dist/data/lint/LintTreeNode.d.ts +7 -0
  193. package/dist/data/lint/LintTreeNode.d.ts.map +1 -0
  194. package/dist/data/lint/LintTreeNode.js +66 -0
  195. package/dist/data/lint/LintTreeNode.js.map +1 -0
  196. package/dist/data/lint/actions.cjs +195 -0
  197. package/dist/data/lint/actions.cjs.map +1 -0
  198. package/dist/data/lint/actions.d.ts +29 -0
  199. package/dist/data/lint/actions.d.ts.map +1 -0
  200. package/dist/data/lint/actions.js +195 -0
  201. package/dist/data/lint/actions.js.map +1 -0
  202. package/dist/data/lint/grouping-options.cjs +14 -0
  203. package/dist/data/lint/grouping-options.cjs.map +1 -0
  204. package/dist/data/lint/grouping-options.d.ts +9 -0
  205. package/dist/data/lint/grouping-options.d.ts.map +1 -0
  206. package/dist/data/lint/grouping-options.js +14 -0
  207. package/dist/data/lint/grouping-options.js.map +1 -0
  208. package/dist/data/lint/grouping.cjs +450 -0
  209. package/dist/data/lint/grouping.cjs.map +1 -0
  210. package/dist/data/lint/grouping.d.ts +10 -0
  211. package/dist/data/lint/grouping.d.ts.map +1 -0
  212. package/dist/data/lint/grouping.js +450 -0
  213. package/dist/data/lint/grouping.js.map +1 -0
  214. package/dist/data/lint/index.d.ts +10 -0
  215. package/dist/data/lint/index.d.ts.map +1 -0
  216. package/dist/data/lint/paths.cjs +35 -0
  217. package/dist/data/lint/paths.cjs.map +1 -0
  218. package/dist/data/lint/paths.d.ts +13 -0
  219. package/dist/data/lint/paths.d.ts.map +1 -0
  220. package/dist/data/lint/paths.js +35 -0
  221. package/dist/data/lint/paths.js.map +1 -0
  222. package/dist/data/lint/stats.cjs +76 -0
  223. package/dist/data/lint/stats.cjs.map +1 -0
  224. package/dist/data/lint/stats.d.ts +19 -0
  225. package/dist/data/lint/stats.d.ts.map +1 -0
  226. package/dist/data/lint/stats.js +76 -0
  227. package/dist/data/lint/stats.js.map +1 -0
  228. package/dist/data/lint/types.cjs +16 -0
  229. package/dist/data/lint/types.cjs.map +1 -0
  230. package/dist/data/lint/types.d.ts +93 -0
  231. package/dist/data/lint/types.d.ts.map +1 -0
  232. package/dist/data/lint/types.js +16 -0
  233. package/dist/data/lint/types.js.map +1 -0
  234. package/dist/data/test-runner/TestAttemptDetail.cjs +113 -0
  235. package/dist/data/test-runner/TestAttemptDetail.cjs.map +1 -0
  236. package/dist/data/test-runner/TestAttemptDetail.d.ts +19 -0
  237. package/dist/data/test-runner/TestAttemptDetail.d.ts.map +1 -0
  238. package/dist/data/test-runner/TestAttemptDetail.js +113 -0
  239. package/dist/data/test-runner/TestAttemptDetail.js.map +1 -0
  240. package/dist/data/test-runner/TestAttempts.cjs +36 -0
  241. package/dist/data/test-runner/TestAttempts.cjs.map +1 -0
  242. package/dist/data/test-runner/TestAttempts.d.ts +5 -0
  243. package/dist/data/test-runner/TestAttempts.d.ts.map +1 -0
  244. package/dist/data/test-runner/TestAttempts.js +36 -0
  245. package/dist/data/test-runner/TestAttempts.js.map +1 -0
  246. package/dist/data/test-runner/TestDetailPanel.cjs +13 -3
  247. package/dist/data/test-runner/TestDetailPanel.cjs.map +1 -1
  248. package/dist/data/test-runner/TestDetailPanel.d.ts.map +1 -1
  249. package/dist/data/test-runner/TestDetailPanel.js +14 -4
  250. package/dist/data/test-runner/TestDetailPanel.js.map +1 -1
  251. package/dist/data/test-runner/TestFailureDetail.cjs +9 -29
  252. package/dist/data/test-runner/TestFailureDetail.cjs.map +1 -1
  253. package/dist/data/test-runner/TestFailureDetail.d.ts +6 -6
  254. package/dist/data/test-runner/TestFailureDetail.d.ts.map +1 -1
  255. package/dist/data/test-runner/TestFailureDetail.js +9 -29
  256. package/dist/data/test-runner/TestFailureDetail.js.map +1 -1
  257. package/dist/data/test-runner/TestRunSummary.cjs +33 -0
  258. package/dist/data/test-runner/TestRunSummary.cjs.map +1 -1
  259. package/dist/data/test-runner/TestRunSummary.d.ts.map +1 -1
  260. package/dist/data/test-runner/TestRunSummary.js +34 -1
  261. package/dist/data/test-runner/TestRunSummary.js.map +1 -1
  262. package/dist/data/test-runner/TestRunner.cjs +3 -0
  263. package/dist/data/test-runner/TestRunner.cjs.map +1 -1
  264. package/dist/data/test-runner/TestRunner.d.ts +8 -1
  265. package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
  266. package/dist/data/test-runner/TestRunner.js +3 -0
  267. package/dist/data/test-runner/TestRunner.js.map +1 -1
  268. package/dist/data/test-runner/TestTreeNode.cjs +3 -1
  269. package/dist/data/test-runner/TestTreeNode.cjs.map +1 -1
  270. package/dist/data/test-runner/TestTreeNode.d.ts.map +1 -1
  271. package/dist/data/test-runner/TestTreeNode.js +3 -1
  272. package/dist/data/test-runner/TestTreeNode.js.map +1 -1
  273. package/dist/data/test-runner/adapter.cjs +9 -1
  274. package/dist/data/test-runner/adapter.cjs.map +1 -1
  275. package/dist/data/test-runner/adapter.d.ts +5 -0
  276. package/dist/data/test-runner/adapter.d.ts.map +1 -1
  277. package/dist/data/test-runner/adapter.js +9 -1
  278. package/dist/data/test-runner/adapter.js.map +1 -1
  279. package/dist/data/test-runner/attempts.cjs +62 -0
  280. package/dist/data/test-runner/attempts.cjs.map +1 -0
  281. package/dist/data/test-runner/attempts.d.ts +13 -0
  282. package/dist/data/test-runner/attempts.d.ts.map +1 -0
  283. package/dist/data/test-runner/attempts.js +62 -0
  284. package/dist/data/test-runner/attempts.js.map +1 -0
  285. package/dist/data/test-runner/context.cjs.map +1 -1
  286. package/dist/data/test-runner/context.d.ts +6 -0
  287. package/dist/data/test-runner/context.d.ts.map +1 -1
  288. package/dist/data/test-runner/context.js.map +1 -1
  289. package/dist/data/test-runner/index.d.ts +5 -1
  290. package/dist/data/test-runner/index.d.ts.map +1 -1
  291. package/dist/data/test-runner/marks.cjs +2 -0
  292. package/dist/data/test-runner/marks.cjs.map +1 -1
  293. package/dist/data/test-runner/marks.d.ts.map +1 -1
  294. package/dist/data/test-runner/marks.js +2 -0
  295. package/dist/data/test-runner/marks.js.map +1 -1
  296. package/dist/data/test-runner/process-metrics.cjs +15 -0
  297. package/dist/data/test-runner/process-metrics.cjs.map +1 -0
  298. package/dist/data/test-runner/process-metrics.d.ts +22 -0
  299. package/dist/data/test-runner/process-metrics.d.ts.map +1 -0
  300. package/dist/data/test-runner/process-metrics.js +15 -0
  301. package/dist/data/test-runner/process-metrics.js.map +1 -0
  302. package/dist/data/test-runner/status.cjs +11 -3
  303. package/dist/data/test-runner/status.cjs.map +1 -1
  304. package/dist/data/test-runner/status.d.ts +3 -1
  305. package/dist/data/test-runner/status.d.ts.map +1 -1
  306. package/dist/data/test-runner/status.js +11 -3
  307. package/dist/data/test-runner/status.js.map +1 -1
  308. package/dist/data/test-runner/types.d.ts +14 -0
  309. package/dist/data/test-runner/types.d.ts.map +1 -1
  310. package/dist/data/traces/GoProfileView.cjs +176 -0
  311. package/dist/data/traces/GoProfileView.cjs.map +1 -0
  312. package/dist/data/traces/GoProfileView.d.ts +30 -0
  313. package/dist/data/traces/GoProfileView.d.ts.map +1 -0
  314. package/dist/data/traces/GoProfileView.js +176 -0
  315. package/dist/data/traces/GoProfileView.js.map +1 -0
  316. package/dist/data/traces/ProcessFacetTable.cjs +79 -0
  317. package/dist/data/traces/ProcessFacetTable.cjs.map +1 -0
  318. package/dist/data/traces/ProcessFacetTable.d.ts +21 -0
  319. package/dist/data/traces/ProcessFacetTable.d.ts.map +1 -0
  320. package/dist/data/traces/ProcessFacetTable.js +79 -0
  321. package/dist/data/traces/ProcessFacetTable.js.map +1 -0
  322. package/dist/data/traces/ProcessRecordViews.cjs +41 -0
  323. package/dist/data/traces/ProcessRecordViews.cjs.map +1 -0
  324. package/dist/data/traces/ProcessRecordViews.d.ts +16 -0
  325. package/dist/data/traces/ProcessRecordViews.d.ts.map +1 -0
  326. package/dist/data/traces/ProcessRecordViews.js +41 -0
  327. package/dist/data/traces/ProcessRecordViews.js.map +1 -0
  328. package/dist/data/traces/ProcessTraceDetail.cjs +316 -0
  329. package/dist/data/traces/ProcessTraceDetail.cjs.map +1 -0
  330. package/dist/data/traces/ProcessTraceDetail.d.ts +39 -0
  331. package/dist/data/traces/ProcessTraceDetail.d.ts.map +1 -0
  332. package/dist/data/traces/ProcessTraceDetail.js +316 -0
  333. package/dist/data/traces/ProcessTraceDetail.js.map +1 -0
  334. package/dist/data/traces/ProcessTraceTree.cjs +135 -0
  335. package/dist/data/traces/ProcessTraceTree.cjs.map +1 -0
  336. package/dist/data/traces/ProcessTraceTree.d.ts +41 -0
  337. package/dist/data/traces/ProcessTraceTree.d.ts.map +1 -0
  338. package/dist/data/traces/ProcessTraceTree.js +135 -0
  339. package/dist/data/traces/ProcessTraceTree.js.map +1 -0
  340. package/dist/data/traces/Sparkline.cjs +45 -0
  341. package/dist/data/traces/Sparkline.cjs.map +1 -0
  342. package/dist/data/traces/Sparkline.d.ts +29 -0
  343. package/dist/data/traces/Sparkline.d.ts.map +1 -0
  344. package/dist/data/traces/Sparkline.js +45 -0
  345. package/dist/data/traces/Sparkline.js.map +1 -0
  346. package/dist/data/traces/SqlTraceTable.cjs +104 -0
  347. package/dist/data/traces/SqlTraceTable.cjs.map +1 -0
  348. package/dist/data/traces/SqlTraceTable.d.ts +19 -0
  349. package/dist/data/traces/SqlTraceTable.d.ts.map +1 -0
  350. package/dist/data/traces/SqlTraceTable.js +104 -0
  351. package/dist/data/traces/SqlTraceTable.js.map +1 -0
  352. package/dist/data/traces/TerminalCastPlayer.cjs +162 -0
  353. package/dist/data/traces/TerminalCastPlayer.cjs.map +1 -0
  354. package/dist/data/traces/TerminalCastPlayer.js +162 -0
  355. package/dist/data/traces/TerminalCastPlayer.js.map +1 -0
  356. package/dist/data/traces/TraceHarView.cjs +15 -0
  357. package/dist/data/traces/TraceHarView.cjs.map +1 -0
  358. package/dist/data/traces/TraceHarView.js +15 -0
  359. package/dist/data/traces/TraceHarView.js.map +1 -0
  360. package/dist/data/traces/TraceView.cjs +63 -0
  361. package/dist/data/traces/TraceView.cjs.map +1 -0
  362. package/dist/data/traces/TraceView.d.ts +20 -0
  363. package/dist/data/traces/TraceView.d.ts.map +1 -0
  364. package/dist/data/traces/TraceView.js +63 -0
  365. package/dist/data/traces/TraceView.js.map +1 -0
  366. package/dist/data/traces/TraceWindowList.cjs +117 -0
  367. package/dist/data/traces/TraceWindowList.cjs.map +1 -0
  368. package/dist/data/traces/TraceWindowList.d.ts +48 -0
  369. package/dist/data/traces/TraceWindowList.d.ts.map +1 -0
  370. package/dist/data/traces/TraceWindowList.js +117 -0
  371. package/dist/data/traces/TraceWindowList.js.map +1 -0
  372. package/dist/data/traces/cast.cjs +81 -0
  373. package/dist/data/traces/cast.cjs.map +1 -0
  374. package/dist/data/traces/cast.js +81 -0
  375. package/dist/data/traces/cast.js.map +1 -0
  376. package/dist/data/traces/fixtures.d.ts +25 -1
  377. package/dist/data/traces/fixtures.d.ts.map +1 -1
  378. package/dist/data/traces/har-adapter.cjs +83 -0
  379. package/dist/data/traces/har-adapter.cjs.map +1 -0
  380. package/dist/data/traces/har-adapter.js +83 -0
  381. package/dist/data/traces/har-adapter.js.map +1 -0
  382. package/dist/data/traces/index.d.ts +19 -0
  383. package/dist/data/traces/index.d.ts.map +1 -0
  384. package/dist/data/traces/process-facets.cjs +48 -0
  385. package/dist/data/traces/process-facets.cjs.map +1 -0
  386. package/dist/data/traces/process-facets.d.ts +38 -0
  387. package/dist/data/traces/process-facets.d.ts.map +1 -0
  388. package/dist/data/traces/process-facets.js +48 -0
  389. package/dist/data/traces/process-facets.js.map +1 -0
  390. package/dist/data/traces/process-tree.cjs +85 -0
  391. package/dist/data/traces/process-tree.cjs.map +1 -0
  392. package/dist/data/traces/process-tree.d.ts +40 -0
  393. package/dist/data/traces/process-tree.d.ts.map +1 -0
  394. package/dist/data/traces/process-tree.js +85 -0
  395. package/dist/data/traces/process-tree.js.map +1 -0
  396. package/dist/data/traces/profile-aggregate.cjs +78 -0
  397. package/dist/data/traces/profile-aggregate.cjs.map +1 -0
  398. package/dist/data/traces/profile-aggregate.d.ts +41 -0
  399. package/dist/data/traces/profile-aggregate.d.ts.map +1 -0
  400. package/dist/data/traces/profile-aggregate.js +78 -0
  401. package/dist/data/traces/profile-aggregate.js.map +1 -0
  402. package/dist/data/traces/sql-trace.cjs +39 -0
  403. package/dist/data/traces/sql-trace.cjs.map +1 -0
  404. package/dist/data/traces/sql-trace.d.ts +31 -0
  405. package/dist/data/traces/sql-trace.d.ts.map +1 -0
  406. package/dist/data/traces/sql-trace.js +39 -0
  407. package/dist/data/traces/sql-trace.js.map +1 -0
  408. package/dist/data/traces/stack-checkpoints.cjs +22 -0
  409. package/dist/data/traces/stack-checkpoints.cjs.map +1 -0
  410. package/dist/data/traces/stack-checkpoints.d.ts +18 -0
  411. package/dist/data/traces/stack-checkpoints.d.ts.map +1 -0
  412. package/dist/data/traces/stack-checkpoints.js +22 -0
  413. package/dist/data/traces/stack-checkpoints.js.map +1 -0
  414. package/dist/data/traces/terminal-screen.cjs +270 -0
  415. package/dist/data/traces/terminal-screen.cjs.map +1 -0
  416. package/dist/data/traces/terminal-screen.js +270 -0
  417. package/dist/data/traces/terminal-screen.js.map +1 -0
  418. package/dist/data/traces/terminal-timeline.cjs +48 -0
  419. package/dist/data/traces/terminal-timeline.cjs.map +1 -0
  420. package/dist/data/traces/terminal-timeline.js +48 -0
  421. package/dist/data/traces/terminal-timeline.js.map +1 -0
  422. package/dist/data/traces/types.d.ts +121 -8
  423. package/dist/data/traces/types.d.ts.map +1 -1
  424. package/dist/data/verification/adapters.cjs +1 -0
  425. package/dist/data/verification/adapters.cjs.map +1 -1
  426. package/dist/data/verification/adapters.d.ts.map +1 -1
  427. package/dist/data/verification/adapters.js +1 -0
  428. package/dist/data/verification/adapters.js.map +1 -1
  429. package/dist/data/version-info.cjs +3 -3
  430. package/dist/data/version-info.cjs.map +1 -1
  431. package/dist/data/version-info.js +3 -3
  432. package/dist/data/version-info.js.map +1 -1
  433. package/dist/data.cjs +105 -5
  434. package/dist/data.cjs.map +1 -1
  435. package/dist/data.d.ts +5 -0
  436. package/dist/data.d.ts.map +1 -1
  437. package/dist/data.js +101 -1
  438. package/dist/data.js.map +1 -1
  439. package/dist/index.cjs +107 -7
  440. package/dist/index.cjs.map +1 -1
  441. package/dist/index.js +101 -1
  442. package/dist/index.js.map +1 -1
  443. package/dist/styles.css +1 -1
  444. package/package.json +6 -1
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const filterState = require("../test-runner/filterState.cjs");
4
+ const SEVERITY_RANK = { info: 1, warning: 2, error: 3 };
5
+ function severityOf(violation) {
6
+ return violation.severity ?? "error";
7
+ }
8
+ function worstSeverity(violations) {
9
+ let worst = "info";
10
+ for (const v of violations ?? []) {
11
+ const sev = severityOf(v);
12
+ if (SEVERITY_RANK[sev] > SEVERITY_RANK[worst]) worst = sev;
13
+ }
14
+ return worst;
15
+ }
16
+ function isLinterErrored(result) {
17
+ return !result.skipped && (Boolean(result.error) || Boolean(result.timed_out));
18
+ }
19
+ function linterErrorMessage(result) {
20
+ return result.error || "timed out";
21
+ }
22
+ function collectLintLinters(results) {
23
+ const names = /* @__PURE__ */ new Set();
24
+ for (const r of results) {
25
+ if ((r.violations ?? []).length > 0 || isLinterErrored(r)) names.add(r.linter);
26
+ }
27
+ return Array.from(names).sort();
28
+ }
29
+ function countLintBySeverity(results, linterFilter) {
30
+ const counts = { error: 0, warning: 0, info: 0 };
31
+ for (const r of results) {
32
+ if (!filterState.matchesFilterState(r.linter, linterFilter)) continue;
33
+ for (const v of r.violations ?? []) counts[severityOf(v)] += 1;
34
+ }
35
+ return counts;
36
+ }
37
+ function countLintByLinter(results, severityFilter) {
38
+ const counts = {};
39
+ for (const r of results) {
40
+ for (const v of r.violations ?? []) {
41
+ if (!filterState.matchesFilterState(severityOf(v), severityFilter)) continue;
42
+ counts[r.linter] = (counts[r.linter] ?? 0) + 1;
43
+ }
44
+ }
45
+ return counts;
46
+ }
47
+ function totalLintViolations(results) {
48
+ return results.reduce((n, r) => n + (r.violations ?? []).length, 0);
49
+ }
50
+ function lintNodeCount(node) {
51
+ var _a;
52
+ if (node.violations) return node.violations.length;
53
+ return (((_a = node.noFileViolations) == null ? void 0 : _a.length) ?? 0) + (node.children ?? []).reduce((n, child) => n + lintNodeCount(child), 0);
54
+ }
55
+ function lintNodeSeverity(node) {
56
+ if (node.kind === "linter-error") return "error";
57
+ let worst = "info";
58
+ const consider = (sev) => {
59
+ if (SEVERITY_RANK[sev] > SEVERITY_RANK[worst]) worst = sev;
60
+ };
61
+ if (node.violations) consider(worstSeverity(node.violations));
62
+ if (node.noFileViolations) consider(worstSeverity(node.noFileViolations));
63
+ for (const child of node.children ?? []) consider(lintNodeSeverity(child));
64
+ return worst;
65
+ }
66
+ exports.collectLintLinters = collectLintLinters;
67
+ exports.countLintByLinter = countLintByLinter;
68
+ exports.countLintBySeverity = countLintBySeverity;
69
+ exports.isLinterErrored = isLinterErrored;
70
+ exports.lintNodeCount = lintNodeCount;
71
+ exports.lintNodeSeverity = lintNodeSeverity;
72
+ exports.linterErrorMessage = linterErrorMessage;
73
+ exports.severityOf = severityOf;
74
+ exports.totalLintViolations = totalLintViolations;
75
+ exports.worstSeverity = worstSeverity;
76
+ //# sourceMappingURL=stats.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.cjs","sources":["../../../src/data/lint/stats.ts"],"sourcesContent":["// Counting and severity roll-ups over raw results and over built tree nodes.\n\nimport { matchesFilterState, type FilterState } from \"../test-runner/filterState\";\nimport type { LintNode, LintSeverity, LinterResult, Violation } from \"./types\";\n\nconst SEVERITY_RANK: Record<LintSeverity, number> = { info: 1, warning: 2, error: 3 };\n\n/** A violation without a severity is an error, as on the wire. */\nexport function severityOf(violation: Violation): LintSeverity {\n return violation.severity ?? \"error\";\n}\n\nexport function worstSeverity(violations: readonly Violation[] | undefined): LintSeverity {\n let worst: LintSeverity = \"info\";\n for (const v of violations ?? []) {\n const sev = severityOf(v);\n if (SEVERITY_RANK[sev] > SEVERITY_RANK[worst]) worst = sev;\n }\n return worst;\n}\n\n/** Whether the linter itself failed to run (as opposed to reporting findings). */\nexport function isLinterErrored(result: LinterResult): boolean {\n return !result.skipped && (Boolean(result.error) || Boolean(result.timed_out));\n}\n\n/** Why a linter failed: its error text, or \"timed out\" when it only carries the flag. */\nexport function linterErrorMessage(result: LinterResult): string {\n return result.error || \"timed out\";\n}\n\n/** Linters that reported violations or failed to run, sorted by name. */\nexport function collectLintLinters(results: readonly LinterResult[]): string[] {\n const names = new Set<string>();\n for (const r of results) {\n if ((r.violations ?? []).length > 0 || isLinterErrored(r)) names.add(r.linter);\n }\n return Array.from(names).sort();\n}\n\nexport function countLintBySeverity(\n results: readonly LinterResult[],\n linterFilter: FilterState<string>,\n): Record<LintSeverity, number> {\n const counts: Record<LintSeverity, number> = { error: 0, warning: 0, info: 0 };\n for (const r of results) {\n if (!matchesFilterState(r.linter, linterFilter)) continue;\n for (const v of r.violations ?? []) counts[severityOf(v)] += 1;\n }\n return counts;\n}\n\nexport function countLintByLinter(\n results: readonly LinterResult[],\n severityFilter: FilterState<LintSeverity>,\n): Record<string, number> {\n const counts: Record<string, number> = {};\n for (const r of results) {\n for (const v of r.violations ?? []) {\n if (!matchesFilterState(severityOf(v), severityFilter)) continue;\n counts[r.linter] = (counts[r.linter] ?? 0) + 1;\n }\n }\n return counts;\n}\n\nexport function totalLintViolations(results: readonly LinterResult[]): number {\n return results.reduce((n, r) => n + (r.violations ?? []).length, 0);\n}\n\n/** Violations at or beneath a node; error leaves count as zero (they are not findings). */\nexport function lintNodeCount(node: LintNode): number {\n if (node.violations) return node.violations.length;\n return (\n (node.noFileViolations?.length ?? 0) +\n (node.children ?? []).reduce((n, child) => n + lintNodeCount(child), 0)\n );\n}\n\n/** The worst severity at or beneath a node. A linter-error leaf is an error. */\nexport function lintNodeSeverity(node: LintNode): LintSeverity {\n if (node.kind === \"linter-error\") return \"error\";\n let worst: LintSeverity = \"info\";\n const consider = (sev: LintSeverity) => {\n if (SEVERITY_RANK[sev] > SEVERITY_RANK[worst]) worst = sev;\n };\n if (node.violations) consider(worstSeverity(node.violations));\n if (node.noFileViolations) consider(worstSeverity(node.noFileViolations));\n for (const child of node.children ?? []) consider(lintNodeSeverity(child));\n return worst;\n}\n"],"names":["matchesFilterState"],"mappings":";;;AAKA,MAAM,gBAA8C,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EAAA;AAG3E,SAAS,WAAW,WAAoC;AAC7D,SAAO,UAAU,YAAY;AAC/B;AAEO,SAAS,cAAc,YAA4D;AACxF,MAAI,QAAsB;AAC1B,aAAW,KAAK,cAAc,IAAI;AAChC,UAAM,MAAM,WAAW,CAAC;AACxB,QAAI,cAAc,GAAG,IAAI,cAAc,KAAK,EAAG,SAAQ;AAAA,EACzD;AACA,SAAO;AACT;AAGO,SAAS,gBAAgB,QAA+B;AAC7D,SAAO,CAAC,OAAO,YAAY,QAAQ,OAAO,KAAK,KAAK,QAAQ,OAAO,SAAS;AAC9E;AAGO,SAAS,mBAAmB,QAA8B;AAC/D,SAAO,OAAO,SAAS;AACzB;AAGO,SAAS,mBAAmB,SAA4C;AAC7E,QAAM,4BAAY,IAAA;AAClB,aAAW,KAAK,SAAS;AACvB,SAAK,EAAE,cAAc,CAAA,GAAI,SAAS,KAAK,gBAAgB,CAAC,EAAG,OAAM,IAAI,EAAE,MAAM;AAAA,EAC/E;AACA,SAAO,MAAM,KAAK,KAAK,EAAE,KAAA;AAC3B;AAEO,SAAS,oBACd,SACA,cAC8B;AAC9B,QAAM,SAAuC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,EAAA;AAC3E,aAAW,KAAK,SAAS;AACvB,QAAI,CAACA,YAAAA,mBAAmB,EAAE,QAAQ,YAAY,EAAG;AACjD,eAAW,KAAK,EAAE,cAAc,CAAA,EAAI,QAAO,WAAW,CAAC,CAAC,KAAK;AAAA,EAC/D;AACA,SAAO;AACT;AAEO,SAAS,kBACd,SACA,gBACwB;AACxB,QAAM,SAAiC,CAAA;AACvC,aAAW,KAAK,SAAS;AACvB,eAAW,KAAK,EAAE,cAAc,CAAA,GAAI;AAClC,UAAI,CAACA,YAAAA,mBAAmB,WAAW,CAAC,GAAG,cAAc,EAAG;AACxD,aAAO,EAAE,MAAM,KAAK,OAAO,EAAE,MAAM,KAAK,KAAK;AAAA,IAC/C;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,oBAAoB,SAA0C;AAC5E,SAAO,QAAQ,OAAO,CAAC,GAAG,MAAM,KAAK,EAAE,cAAc,IAAI,QAAQ,CAAC;AACpE;AAGO,SAAS,cAAc,MAAwB;;AACpD,MAAI,KAAK,WAAY,QAAO,KAAK,WAAW;AAC5C,YACG,UAAK,qBAAL,mBAAuB,WAAU,MACjC,KAAK,YAAY,CAAA,GAAI,OAAO,CAAC,GAAG,UAAU,IAAI,cAAc,KAAK,GAAG,CAAC;AAE1E;AAGO,SAAS,iBAAiB,MAA8B;AAC7D,MAAI,KAAK,SAAS,eAAgB,QAAO;AACzC,MAAI,QAAsB;AAC1B,QAAM,WAAW,CAAC,QAAsB;AACtC,QAAI,cAAc,GAAG,IAAI,cAAc,KAAK,EAAG,SAAQ;AAAA,EACzD;AACA,MAAI,KAAK,WAAY,UAAS,cAAc,KAAK,UAAU,CAAC;AAC5D,MAAI,KAAK,iBAAkB,UAAS,cAAc,KAAK,gBAAgB,CAAC;AACxE,aAAW,SAAS,KAAK,YAAY,CAAA,EAAI,UAAS,iBAAiB,KAAK,CAAC;AACzE,SAAO;AACT;;;;;;;;;;;"}
@@ -0,0 +1,19 @@
1
+ import { FilterState } from '../test-runner/filterState.js';
2
+ import { LintNode, LintSeverity, LinterResult, Violation } from './types.js';
3
+ /** A violation without a severity is an error, as on the wire. */
4
+ export declare function severityOf(violation: Violation): LintSeverity;
5
+ export declare function worstSeverity(violations: readonly Violation[] | undefined): LintSeverity;
6
+ /** Whether the linter itself failed to run (as opposed to reporting findings). */
7
+ export declare function isLinterErrored(result: LinterResult): boolean;
8
+ /** Why a linter failed: its error text, or "timed out" when it only carries the flag. */
9
+ export declare function linterErrorMessage(result: LinterResult): string;
10
+ /** Linters that reported violations or failed to run, sorted by name. */
11
+ export declare function collectLintLinters(results: readonly LinterResult[]): string[];
12
+ export declare function countLintBySeverity(results: readonly LinterResult[], linterFilter: FilterState<string>): Record<LintSeverity, number>;
13
+ export declare function countLintByLinter(results: readonly LinterResult[], severityFilter: FilterState<LintSeverity>): Record<string, number>;
14
+ export declare function totalLintViolations(results: readonly LinterResult[]): number;
15
+ /** Violations at or beneath a node; error leaves count as zero (they are not findings). */
16
+ export declare function lintNodeCount(node: LintNode): number;
17
+ /** The worst severity at or beneath a node. A linter-error leaf is an error. */
18
+ export declare function lintNodeSeverity(node: LintNode): LintSeverity;
19
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/data/lint/stats.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAI/E,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAE7D;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,GAAG,YAAY,CAOxF;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE7D;AAED,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE/D;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,EAAE,CAM7E;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAChC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAO9B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,cAAc,EAAE,WAAW,CAAC,YAAY,CAAC,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAE5E;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAMpD;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAU7D"}
@@ -0,0 +1,76 @@
1
+ import { matchesFilterState } from "../test-runner/filterState.js";
2
+ const SEVERITY_RANK = { info: 1, warning: 2, error: 3 };
3
+ function severityOf(violation) {
4
+ return violation.severity ?? "error";
5
+ }
6
+ function worstSeverity(violations) {
7
+ let worst = "info";
8
+ for (const v of violations ?? []) {
9
+ const sev = severityOf(v);
10
+ if (SEVERITY_RANK[sev] > SEVERITY_RANK[worst]) worst = sev;
11
+ }
12
+ return worst;
13
+ }
14
+ function isLinterErrored(result) {
15
+ return !result.skipped && (Boolean(result.error) || Boolean(result.timed_out));
16
+ }
17
+ function linterErrorMessage(result) {
18
+ return result.error || "timed out";
19
+ }
20
+ function collectLintLinters(results) {
21
+ const names = /* @__PURE__ */ new Set();
22
+ for (const r of results) {
23
+ if ((r.violations ?? []).length > 0 || isLinterErrored(r)) names.add(r.linter);
24
+ }
25
+ return Array.from(names).sort();
26
+ }
27
+ function countLintBySeverity(results, linterFilter) {
28
+ const counts = { error: 0, warning: 0, info: 0 };
29
+ for (const r of results) {
30
+ if (!matchesFilterState(r.linter, linterFilter)) continue;
31
+ for (const v of r.violations ?? []) counts[severityOf(v)] += 1;
32
+ }
33
+ return counts;
34
+ }
35
+ function countLintByLinter(results, severityFilter) {
36
+ const counts = {};
37
+ for (const r of results) {
38
+ for (const v of r.violations ?? []) {
39
+ if (!matchesFilterState(severityOf(v), severityFilter)) continue;
40
+ counts[r.linter] = (counts[r.linter] ?? 0) + 1;
41
+ }
42
+ }
43
+ return counts;
44
+ }
45
+ function totalLintViolations(results) {
46
+ return results.reduce((n, r) => n + (r.violations ?? []).length, 0);
47
+ }
48
+ function lintNodeCount(node) {
49
+ var _a;
50
+ if (node.violations) return node.violations.length;
51
+ return (((_a = node.noFileViolations) == null ? void 0 : _a.length) ?? 0) + (node.children ?? []).reduce((n, child) => n + lintNodeCount(child), 0);
52
+ }
53
+ function lintNodeSeverity(node) {
54
+ if (node.kind === "linter-error") return "error";
55
+ let worst = "info";
56
+ const consider = (sev) => {
57
+ if (SEVERITY_RANK[sev] > SEVERITY_RANK[worst]) worst = sev;
58
+ };
59
+ if (node.violations) consider(worstSeverity(node.violations));
60
+ if (node.noFileViolations) consider(worstSeverity(node.noFileViolations));
61
+ for (const child of node.children ?? []) consider(lintNodeSeverity(child));
62
+ return worst;
63
+ }
64
+ export {
65
+ collectLintLinters,
66
+ countLintByLinter,
67
+ countLintBySeverity,
68
+ isLinterErrored,
69
+ lintNodeCount,
70
+ lintNodeSeverity,
71
+ linterErrorMessage,
72
+ severityOf,
73
+ totalLintViolations,
74
+ worstSeverity
75
+ };
76
+ //# sourceMappingURL=stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.js","sources":["../../../src/data/lint/stats.ts"],"sourcesContent":["// Counting and severity roll-ups over raw results and over built tree nodes.\n\nimport { matchesFilterState, type FilterState } from \"../test-runner/filterState\";\nimport type { LintNode, LintSeverity, LinterResult, Violation } from \"./types\";\n\nconst SEVERITY_RANK: Record<LintSeverity, number> = { info: 1, warning: 2, error: 3 };\n\n/** A violation without a severity is an error, as on the wire. */\nexport function severityOf(violation: Violation): LintSeverity {\n return violation.severity ?? \"error\";\n}\n\nexport function worstSeverity(violations: readonly Violation[] | undefined): LintSeverity {\n let worst: LintSeverity = \"info\";\n for (const v of violations ?? []) {\n const sev = severityOf(v);\n if (SEVERITY_RANK[sev] > SEVERITY_RANK[worst]) worst = sev;\n }\n return worst;\n}\n\n/** Whether the linter itself failed to run (as opposed to reporting findings). */\nexport function isLinterErrored(result: LinterResult): boolean {\n return !result.skipped && (Boolean(result.error) || Boolean(result.timed_out));\n}\n\n/** Why a linter failed: its error text, or \"timed out\" when it only carries the flag. */\nexport function linterErrorMessage(result: LinterResult): string {\n return result.error || \"timed out\";\n}\n\n/** Linters that reported violations or failed to run, sorted by name. */\nexport function collectLintLinters(results: readonly LinterResult[]): string[] {\n const names = new Set<string>();\n for (const r of results) {\n if ((r.violations ?? []).length > 0 || isLinterErrored(r)) names.add(r.linter);\n }\n return Array.from(names).sort();\n}\n\nexport function countLintBySeverity(\n results: readonly LinterResult[],\n linterFilter: FilterState<string>,\n): Record<LintSeverity, number> {\n const counts: Record<LintSeverity, number> = { error: 0, warning: 0, info: 0 };\n for (const r of results) {\n if (!matchesFilterState(r.linter, linterFilter)) continue;\n for (const v of r.violations ?? []) counts[severityOf(v)] += 1;\n }\n return counts;\n}\n\nexport function countLintByLinter(\n results: readonly LinterResult[],\n severityFilter: FilterState<LintSeverity>,\n): Record<string, number> {\n const counts: Record<string, number> = {};\n for (const r of results) {\n for (const v of r.violations ?? []) {\n if (!matchesFilterState(severityOf(v), severityFilter)) continue;\n counts[r.linter] = (counts[r.linter] ?? 0) + 1;\n }\n }\n return counts;\n}\n\nexport function totalLintViolations(results: readonly LinterResult[]): number {\n return results.reduce((n, r) => n + (r.violations ?? []).length, 0);\n}\n\n/** Violations at or beneath a node; error leaves count as zero (they are not findings). */\nexport function lintNodeCount(node: LintNode): number {\n if (node.violations) return node.violations.length;\n return (\n (node.noFileViolations?.length ?? 0) +\n (node.children ?? []).reduce((n, child) => n + lintNodeCount(child), 0)\n );\n}\n\n/** The worst severity at or beneath a node. A linter-error leaf is an error. */\nexport function lintNodeSeverity(node: LintNode): LintSeverity {\n if (node.kind === \"linter-error\") return \"error\";\n let worst: LintSeverity = \"info\";\n const consider = (sev: LintSeverity) => {\n if (SEVERITY_RANK[sev] > SEVERITY_RANK[worst]) worst = sev;\n };\n if (node.violations) consider(worstSeverity(node.violations));\n if (node.noFileViolations) consider(worstSeverity(node.noFileViolations));\n for (const child of node.children ?? []) consider(lintNodeSeverity(child));\n return worst;\n}\n"],"names":[],"mappings":";AAKA,MAAM,gBAA8C,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EAAA;AAG3E,SAAS,WAAW,WAAoC;AAC7D,SAAO,UAAU,YAAY;AAC/B;AAEO,SAAS,cAAc,YAA4D;AACxF,MAAI,QAAsB;AAC1B,aAAW,KAAK,cAAc,IAAI;AAChC,UAAM,MAAM,WAAW,CAAC;AACxB,QAAI,cAAc,GAAG,IAAI,cAAc,KAAK,EAAG,SAAQ;AAAA,EACzD;AACA,SAAO;AACT;AAGO,SAAS,gBAAgB,QAA+B;AAC7D,SAAO,CAAC,OAAO,YAAY,QAAQ,OAAO,KAAK,KAAK,QAAQ,OAAO,SAAS;AAC9E;AAGO,SAAS,mBAAmB,QAA8B;AAC/D,SAAO,OAAO,SAAS;AACzB;AAGO,SAAS,mBAAmB,SAA4C;AAC7E,QAAM,4BAAY,IAAA;AAClB,aAAW,KAAK,SAAS;AACvB,SAAK,EAAE,cAAc,CAAA,GAAI,SAAS,KAAK,gBAAgB,CAAC,EAAG,OAAM,IAAI,EAAE,MAAM;AAAA,EAC/E;AACA,SAAO,MAAM,KAAK,KAAK,EAAE,KAAA;AAC3B;AAEO,SAAS,oBACd,SACA,cAC8B;AAC9B,QAAM,SAAuC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,EAAA;AAC3E,aAAW,KAAK,SAAS;AACvB,QAAI,CAAC,mBAAmB,EAAE,QAAQ,YAAY,EAAG;AACjD,eAAW,KAAK,EAAE,cAAc,CAAA,EAAI,QAAO,WAAW,CAAC,CAAC,KAAK;AAAA,EAC/D;AACA,SAAO;AACT;AAEO,SAAS,kBACd,SACA,gBACwB;AACxB,QAAM,SAAiC,CAAA;AACvC,aAAW,KAAK,SAAS;AACvB,eAAW,KAAK,EAAE,cAAc,CAAA,GAAI;AAClC,UAAI,CAAC,mBAAmB,WAAW,CAAC,GAAG,cAAc,EAAG;AACxD,aAAO,EAAE,MAAM,KAAK,OAAO,EAAE,MAAM,KAAK,KAAK;AAAA,IAC/C;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,oBAAoB,SAA0C;AAC5E,SAAO,QAAQ,OAAO,CAAC,GAAG,MAAM,KAAK,EAAE,cAAc,IAAI,QAAQ,CAAC;AACpE;AAGO,SAAS,cAAc,MAAwB;;AACpD,MAAI,KAAK,WAAY,QAAO,KAAK,WAAW;AAC5C,YACG,UAAK,qBAAL,mBAAuB,WAAU,MACjC,KAAK,YAAY,CAAA,GAAI,OAAO,CAAC,GAAG,UAAU,IAAI,cAAc,KAAK,GAAG,CAAC;AAE1E;AAGO,SAAS,iBAAiB,MAA8B;AAC7D,MAAI,KAAK,SAAS,eAAgB,QAAO;AACzC,MAAI,QAAsB;AAC1B,QAAM,WAAW,CAAC,QAAsB;AACtC,QAAI,cAAc,GAAG,IAAI,cAAc,KAAK,EAAG,SAAQ;AAAA,EACzD;AACA,MAAI,KAAK,WAAY,UAAS,cAAc,KAAK,UAAU,CAAC;AAC5D,MAAI,KAAK,iBAAkB,UAAS,cAAc,KAAK,gBAAgB,CAAC;AACxE,aAAW,SAAS,KAAK,YAAY,CAAA,EAAI,UAAS,iBAAiB,KAAK,CAAC;AACzE,SAAO;AACT;"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const DEFAULT_LINT_GROUPING = "linter-rule-file";
4
+ const LINT_GROUPINGS = [
5
+ "linter-rule-file",
6
+ "linter-file",
7
+ "file-linter-rule",
8
+ "summary"
9
+ ];
10
+ function emptyLintFilters() {
11
+ return { severity: /* @__PURE__ */ new Map(), linter: /* @__PURE__ */ new Map() };
12
+ }
13
+ exports.DEFAULT_LINT_GROUPING = DEFAULT_LINT_GROUPING;
14
+ exports.LINT_GROUPINGS = LINT_GROUPINGS;
15
+ exports.emptyLintFilters = emptyLintFilters;
16
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sources":["../../../src/data/lint/types.ts"],"sourcesContent":["// Lint data model — gavel's wire shape (models.Violation / linters.LinterResult)\n// plus the synthetic tree nodes the groupings build from it. Field names keep\n// the snake_case wire spelling on purpose so a host can pass a snapshot's\n// `lint` array straight through.\n\nimport type { FilterState } from \"../test-runner/filterState\";\nimport type { LintSeverity } from \"../test-runner/marks\";\n\nexport type { LintSeverity };\n\nexport type Violation = {\n file?: string | undefined;\n /** Frontend-only: the path relative to the linter's work_dir, set while grouping. */\n raw_file?: string | undefined;\n line?: number;\n column?: number;\n message?: string;\n source?: string;\n rule?: {\n method?: string;\n description?: string;\n pattern?: string;\n package?: string;\n } | null;\n /** Absent means error, as on the wire. */\n severity?: LintSeverity;\n /** The offending source snippet, not a rule id. */\n code?: string;\n fixable?: boolean;\n};\n\nexport type LinterResult = {\n linter: string;\n work_dir?: string;\n /** Resolved executable, e.g. \"eslint\". */\n command?: string;\n /** argv without the command name. */\n args?: string[];\n success?: boolean;\n skipped?: boolean;\n timed_out?: boolean;\n /** Nanoseconds. */\n duration?: number;\n /** Go marshals a nil slice as null when the linter failed before reporting. */\n violations: Violation[] | null;\n raw_output?: string;\n /** Why the linter failed to run (or why it was skipped). */\n error?: string;\n file_count?: number;\n rule_count?: number;\n};\n\nexport type LintGrouping = \"linter-rule-file\" | \"linter-file\" | \"file-linter-rule\" | \"summary\";\n\nexport const DEFAULT_LINT_GROUPING: LintGrouping = \"linter-rule-file\";\n\nexport const LINT_GROUPINGS: readonly LintGrouping[] = [\n \"linter-rule-file\",\n \"linter-file\",\n \"file-linter-rule\",\n \"summary\",\n];\n\n/** Tri-state severity and linter filters, same primitives as the test runner. */\nexport type LintFilters = {\n severity: FilterState<LintSeverity>;\n linter: FilterState<string>;\n};\n\nexport function emptyLintFilters(): LintFilters {\n return { severity: new Map(), linter: new Map() };\n}\n\nexport type LintNodeKind =\n | \"linter\"\n | \"lint-folder\"\n | \"lint-file\"\n | \"lint-rule\"\n | \"lint-rule-group\"\n /** A linter that failed to run: the leaf carries its error text. */\n | \"linter-error\";\n\nexport type LintNode = {\n name: string;\n kind: LintNodeKind;\n /** Stable, URL-safe selection key assigned by buildLintTree. */\n route_path: string;\n children?: LintNode[] | undefined;\n file?: string | undefined;\n /** Path relative to the linter's work_dir — what ignore rules match against. */\n target_path?: string | undefined;\n work_dir?: string | undefined;\n linterName?: string | undefined;\n ruleName?: string | undefined;\n linter?: LinterResult | undefined;\n violations?: Violation[] | undefined;\n /** Violations that carry no file, shown on the node itself. */\n noFileViolations?: Violation[] | undefined;\n failed: boolean;\n passed: boolean;\n skipped: boolean;\n message?: string | undefined;\n};\n\n/** The body of an ignore request, matching gavel's `.gavel.yaml` ignore entries. */\nexport type LintIgnoreRequest = {\n source?: string | undefined;\n rule?: string | undefined;\n file?: string | undefined;\n work_dir?: string | undefined;\n};\n\nexport type LintAction = {\n key: string;\n label: string;\n title: string;\n req: LintIgnoreRequest;\n variant?: \"primary\" | \"subtle\";\n /** Folder-scoped ignores cannot be applied without knowing the work dir. */\n disabledWithoutWorkDir?: boolean;\n};\n"],"names":[],"mappings":";;AAsDO,MAAM,wBAAsC;AAE5C,MAAM,iBAA0C;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAQO,SAAS,mBAAgC;AAC9C,SAAO,EAAE,UAAU,oBAAI,IAAA,GAAO,QAAQ,oBAAI,MAAI;AAChD;;;;"}
@@ -0,0 +1,93 @@
1
+ import { FilterState } from '../test-runner/filterState.js';
2
+ import { LintSeverity } from '../test-runner/marks.js';
3
+ export type { LintSeverity };
4
+ export type Violation = {
5
+ file?: string | undefined;
6
+ /** Frontend-only: the path relative to the linter's work_dir, set while grouping. */
7
+ raw_file?: string | undefined;
8
+ line?: number;
9
+ column?: number;
10
+ message?: string;
11
+ source?: string;
12
+ rule?: {
13
+ method?: string;
14
+ description?: string;
15
+ pattern?: string;
16
+ package?: string;
17
+ } | null;
18
+ /** Absent means error, as on the wire. */
19
+ severity?: LintSeverity;
20
+ /** The offending source snippet, not a rule id. */
21
+ code?: string;
22
+ fixable?: boolean;
23
+ };
24
+ export type LinterResult = {
25
+ linter: string;
26
+ work_dir?: string;
27
+ /** Resolved executable, e.g. "eslint". */
28
+ command?: string;
29
+ /** argv without the command name. */
30
+ args?: string[];
31
+ success?: boolean;
32
+ skipped?: boolean;
33
+ timed_out?: boolean;
34
+ /** Nanoseconds. */
35
+ duration?: number;
36
+ /** Go marshals a nil slice as null when the linter failed before reporting. */
37
+ violations: Violation[] | null;
38
+ raw_output?: string;
39
+ /** Why the linter failed to run (or why it was skipped). */
40
+ error?: string;
41
+ file_count?: number;
42
+ rule_count?: number;
43
+ };
44
+ export type LintGrouping = "linter-rule-file" | "linter-file" | "file-linter-rule" | "summary";
45
+ export declare const DEFAULT_LINT_GROUPING: LintGrouping;
46
+ export declare const LINT_GROUPINGS: readonly LintGrouping[];
47
+ /** Tri-state severity and linter filters, same primitives as the test runner. */
48
+ export type LintFilters = {
49
+ severity: FilterState<LintSeverity>;
50
+ linter: FilterState<string>;
51
+ };
52
+ export declare function emptyLintFilters(): LintFilters;
53
+ export type LintNodeKind = "linter" | "lint-folder" | "lint-file" | "lint-rule" | "lint-rule-group"
54
+ /** A linter that failed to run: the leaf carries its error text. */
55
+ | "linter-error";
56
+ export type LintNode = {
57
+ name: string;
58
+ kind: LintNodeKind;
59
+ /** Stable, URL-safe selection key assigned by buildLintTree. */
60
+ route_path: string;
61
+ children?: LintNode[] | undefined;
62
+ file?: string | undefined;
63
+ /** Path relative to the linter's work_dir — what ignore rules match against. */
64
+ target_path?: string | undefined;
65
+ work_dir?: string | undefined;
66
+ linterName?: string | undefined;
67
+ ruleName?: string | undefined;
68
+ linter?: LinterResult | undefined;
69
+ violations?: Violation[] | undefined;
70
+ /** Violations that carry no file, shown on the node itself. */
71
+ noFileViolations?: Violation[] | undefined;
72
+ failed: boolean;
73
+ passed: boolean;
74
+ skipped: boolean;
75
+ message?: string | undefined;
76
+ };
77
+ /** The body of an ignore request, matching gavel's `.gavel.yaml` ignore entries. */
78
+ export type LintIgnoreRequest = {
79
+ source?: string | undefined;
80
+ rule?: string | undefined;
81
+ file?: string | undefined;
82
+ work_dir?: string | undefined;
83
+ };
84
+ export type LintAction = {
85
+ key: string;
86
+ label: string;
87
+ title: string;
88
+ req: LintIgnoreRequest;
89
+ variant?: "primary" | "subtle";
90
+ /** Folder-scoped ignores cannot be applied without knowing the work dir. */
91
+ disabledWithoutWorkDir?: boolean;
92
+ };
93
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/data/lint/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ const DEFAULT_LINT_GROUPING = "linter-rule-file";
2
+ const LINT_GROUPINGS = [
3
+ "linter-rule-file",
4
+ "linter-file",
5
+ "file-linter-rule",
6
+ "summary"
7
+ ];
8
+ function emptyLintFilters() {
9
+ return { severity: /* @__PURE__ */ new Map(), linter: /* @__PURE__ */ new Map() };
10
+ }
11
+ export {
12
+ DEFAULT_LINT_GROUPING,
13
+ LINT_GROUPINGS,
14
+ emptyLintFilters
15
+ };
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../../../src/data/lint/types.ts"],"sourcesContent":["// Lint data model — gavel's wire shape (models.Violation / linters.LinterResult)\n// plus the synthetic tree nodes the groupings build from it. Field names keep\n// the snake_case wire spelling on purpose so a host can pass a snapshot's\n// `lint` array straight through.\n\nimport type { FilterState } from \"../test-runner/filterState\";\nimport type { LintSeverity } from \"../test-runner/marks\";\n\nexport type { LintSeverity };\n\nexport type Violation = {\n file?: string | undefined;\n /** Frontend-only: the path relative to the linter's work_dir, set while grouping. */\n raw_file?: string | undefined;\n line?: number;\n column?: number;\n message?: string;\n source?: string;\n rule?: {\n method?: string;\n description?: string;\n pattern?: string;\n package?: string;\n } | null;\n /** Absent means error, as on the wire. */\n severity?: LintSeverity;\n /** The offending source snippet, not a rule id. */\n code?: string;\n fixable?: boolean;\n};\n\nexport type LinterResult = {\n linter: string;\n work_dir?: string;\n /** Resolved executable, e.g. \"eslint\". */\n command?: string;\n /** argv without the command name. */\n args?: string[];\n success?: boolean;\n skipped?: boolean;\n timed_out?: boolean;\n /** Nanoseconds. */\n duration?: number;\n /** Go marshals a nil slice as null when the linter failed before reporting. */\n violations: Violation[] | null;\n raw_output?: string;\n /** Why the linter failed to run (or why it was skipped). */\n error?: string;\n file_count?: number;\n rule_count?: number;\n};\n\nexport type LintGrouping = \"linter-rule-file\" | \"linter-file\" | \"file-linter-rule\" | \"summary\";\n\nexport const DEFAULT_LINT_GROUPING: LintGrouping = \"linter-rule-file\";\n\nexport const LINT_GROUPINGS: readonly LintGrouping[] = [\n \"linter-rule-file\",\n \"linter-file\",\n \"file-linter-rule\",\n \"summary\",\n];\n\n/** Tri-state severity and linter filters, same primitives as the test runner. */\nexport type LintFilters = {\n severity: FilterState<LintSeverity>;\n linter: FilterState<string>;\n};\n\nexport function emptyLintFilters(): LintFilters {\n return { severity: new Map(), linter: new Map() };\n}\n\nexport type LintNodeKind =\n | \"linter\"\n | \"lint-folder\"\n | \"lint-file\"\n | \"lint-rule\"\n | \"lint-rule-group\"\n /** A linter that failed to run: the leaf carries its error text. */\n | \"linter-error\";\n\nexport type LintNode = {\n name: string;\n kind: LintNodeKind;\n /** Stable, URL-safe selection key assigned by buildLintTree. */\n route_path: string;\n children?: LintNode[] | undefined;\n file?: string | undefined;\n /** Path relative to the linter's work_dir — what ignore rules match against. */\n target_path?: string | undefined;\n work_dir?: string | undefined;\n linterName?: string | undefined;\n ruleName?: string | undefined;\n linter?: LinterResult | undefined;\n violations?: Violation[] | undefined;\n /** Violations that carry no file, shown on the node itself. */\n noFileViolations?: Violation[] | undefined;\n failed: boolean;\n passed: boolean;\n skipped: boolean;\n message?: string | undefined;\n};\n\n/** The body of an ignore request, matching gavel's `.gavel.yaml` ignore entries. */\nexport type LintIgnoreRequest = {\n source?: string | undefined;\n rule?: string | undefined;\n file?: string | undefined;\n work_dir?: string | undefined;\n};\n\nexport type LintAction = {\n key: string;\n label: string;\n title: string;\n req: LintIgnoreRequest;\n variant?: \"primary\" | \"subtle\";\n /** Folder-scoped ignores cannot be applied without knowing the work dir. */\n disabledWithoutWorkDir?: boolean;\n};\n"],"names":[],"mappings":"AAsDO,MAAM,wBAAsC;AAE5C,MAAM,iBAA0C;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAQO,SAAS,mBAAgC;AAC9C,SAAO,EAAE,UAAU,oBAAI,IAAA,GAAO,QAAQ,oBAAI,MAAI;AAChD;"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const format = require("../../lib/format.cjs");
6
+ const MetricTile = require("../diagnostics/MetricTile.cjs");
7
+ const metricTone = require("../diagnostics/metric-tone.cjs");
8
+ const StackDumpView = require("../diagnostics/StackDumpView.cjs");
9
+ const attempts = require("./attempts.cjs");
10
+ const processMetrics = require("./process-metrics.cjs");
11
+ const status = require("./status.cjs");
12
+ const POLL_MS = 2e3;
13
+ function useLiveProcessMetrics(pid, enabled, fetchMetrics) {
14
+ const [state, setState] = react.useState({});
15
+ const [polling, setPolling] = react.useState(false);
16
+ const fetchRef = react.useRef(fetchMetrics);
17
+ fetchRef.current = fetchMetrics;
18
+ const active = enabled && pid !== void 0 && pid > 0 && fetchMetrics !== void 0;
19
+ react.useEffect(() => {
20
+ if (!active || pid === void 0) return;
21
+ let cancelled = false;
22
+ let timer;
23
+ setState({});
24
+ setPolling(true);
25
+ const read = (target) => {
26
+ const current = fetchRef.current;
27
+ if (!current) throw new Error("fetchProcessMetrics was removed while an attempt was being polled");
28
+ return current(target);
29
+ };
30
+ const poll = async () => {
31
+ try {
32
+ const metrics = await read(pid);
33
+ if (cancelled) return;
34
+ setState({ metrics });
35
+ } catch (reason) {
36
+ if (cancelled) return;
37
+ if (reason instanceof processMetrics.ProcessNotFoundError) {
38
+ setState((prev) => ({ ...prev, note: "process exited" }));
39
+ setPolling(false);
40
+ return;
41
+ }
42
+ setState((prev) => ({ ...prev, note: reason instanceof Error ? reason.message : String(reason) }));
43
+ }
44
+ timer = setTimeout(poll, POLL_MS);
45
+ };
46
+ void poll();
47
+ return () => {
48
+ cancelled = true;
49
+ clearTimeout(timer);
50
+ setPolling(false);
51
+ };
52
+ }, [active, pid]);
53
+ return { state, polling };
54
+ }
55
+ function TestAttemptDetail({ attempt, fetchProcessMetrics }) {
56
+ const live = attempts.isAttemptLive(attempt);
57
+ const { state, polling } = useLiveProcessMetrics(attempt.pid, live, fetchProcessMetrics);
58
+ const recorded = {
59
+ ...attempt.pid !== void 0 ? { pid: attempt.pid } : {},
60
+ ...attempt.cpu_percent !== void 0 ? { cpu_percent: attempt.cpu_percent } : {},
61
+ ...attempt.rss !== void 0 ? { rss: attempt.rss } : {}
62
+ };
63
+ const shown = live && state.metrics ? state.metrics : recorded;
64
+ const pid = shown.pid ?? attempt.pid;
65
+ const hasAny = (pid ?? 0) > 0 || shown.cpu_percent !== void 0 || shown.rss !== void 0;
66
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", "data-attempt-sequence": attempt.sequence, children: [
67
+ /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
68
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center gap-2", children: [
69
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] uppercase tracking-wide text-muted-foreground", children: "Process metrics" }),
70
+ polling && /* @__PURE__ */ jsxRuntime.jsx(
71
+ "span",
72
+ {
73
+ className: "size-1.5 animate-pulse rounded-full bg-blue-500",
74
+ role: "status",
75
+ "aria-label": "Reading live metrics"
76
+ }
77
+ ),
78
+ attempt.shared_process && /* @__PURE__ */ jsxRuntime.jsx(
79
+ "span",
80
+ {
81
+ className: "rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground",
82
+ title: "The pid, CPU and RSS belong to the go test batch this package ran in, not to the package alone",
83
+ "data-shared-process": "",
84
+ children: "shared by batch"
85
+ }
86
+ )
87
+ ] }),
88
+ !hasAny ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs italic text-muted-foreground", children: "No metrics captured for this attempt." }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-density-1 md:grid-cols-4", children: [
89
+ pid !== void 0 && pid > 0 && /* @__PURE__ */ jsxRuntime.jsx(MetricTile.MetricTile, { label: "PID", value: String(pid) }),
90
+ /* @__PURE__ */ jsxRuntime.jsx(
91
+ MetricTile.MetricTile,
92
+ {
93
+ label: "CPU",
94
+ value: shown.cpu_percent !== void 0 ? `${shown.cpu_percent.toFixed(1)}%` : "—",
95
+ ...shown.cpu_percent !== void 0 ? { barPct: Math.min(100, shown.cpu_percent), tone: metricTone.cpuTone(shown.cpu_percent) } : {}
96
+ }
97
+ ),
98
+ /* @__PURE__ */ jsxRuntime.jsx(MetricTile.MetricTile, { label: "RSS", value: shown.rss !== void 0 && shown.rss > 0 ? format.formatBytes(shown.rss) : "—" }),
99
+ shown.open_files !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(MetricTile.MetricTile, { label: "FDs", value: String(shown.open_files) }),
100
+ attempt.duration !== void 0 && attempt.duration > 0 && /* @__PURE__ */ jsxRuntime.jsx(MetricTile.MetricTile, { label: "Duration", value: status.formatTestDuration(attempt.duration) }),
101
+ attempt.exit_code !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(MetricTile.MetricTile, { label: "Exit", value: String(attempt.exit_code), tone: attempt.exit_code === 0 ? "success" : "danger" }),
102
+ attempt.goroutine_count !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(MetricTile.MetricTile, { label: "Goroutines", value: String(attempt.goroutine_count) })
103
+ ] }),
104
+ state.note && live && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 text-[11px] italic text-muted-foreground", children: state.note })
105
+ ] }),
106
+ attempt.stack_trace && /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
107
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 text-[10px] uppercase tracking-wide text-muted-foreground", children: "Stack trace" }),
108
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex max-h-[32rem] min-h-0 flex-col", children: /* @__PURE__ */ jsxRuntime.jsx(StackDumpView.StackDumpView, { text: attempt.stack_trace }) })
109
+ ] })
110
+ ] });
111
+ }
112
+ exports.TestAttemptDetail = TestAttemptDetail;
113
+ //# sourceMappingURL=TestAttemptDetail.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestAttemptDetail.cjs","sources":["../../../src/data/test-runner/TestAttemptDetail.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { formatBytes } from \"../../lib/format\";\nimport { MetricTile } from \"../diagnostics/MetricTile\";\nimport { cpuTone } from \"../diagnostics/metric-tone\";\nimport { StackDumpView } from \"../diagnostics/StackDumpView\";\nimport { isAttemptLive } from \"./attempts\";\nimport {\n ProcessNotFoundError,\n type FetchProcessMetrics,\n type ProcessMetrics,\n} from \"./process-metrics\";\nimport { formatTestDuration } from \"./status\";\nimport type { TestAttempt } from \"./types\";\n\n/** How often a live attempt's process is read. */\nconst POLL_MS = 2000;\n\nexport type TestAttemptDetailProps = {\n attempt: TestAttempt;\n /**\n * Reads the attempt's process while it is live, every two seconds. Polling\n * stops when the attempt finishes or the fetch rejects with\n * `ProcessNotFoundError`; any other rejection is shown and polling goes on.\n */\n fetchProcessMetrics?: FetchProcessMetrics;\n};\n\ntype LiveState = { metrics?: ProcessMetrics; note?: string };\n\n/** Polls `fetchMetrics` for `pid` while `enabled`; the fetch may change identity between renders without restarting the poll. */\nfunction useLiveProcessMetrics(\n pid: number | undefined,\n enabled: boolean,\n fetchMetrics: FetchProcessMetrics | undefined,\n): { state: LiveState; polling: boolean } {\n const [state, setState] = useState<LiveState>({});\n const [polling, setPolling] = useState(false);\n const fetchRef = useRef(fetchMetrics);\n fetchRef.current = fetchMetrics;\n const active = enabled && pid !== undefined && pid > 0 && fetchMetrics !== undefined;\n\n useEffect(() => {\n if (!active || pid === undefined) return;\n let cancelled = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n setState({});\n setPolling(true);\n const read = (target: number) => {\n const current = fetchRef.current;\n if (!current) throw new Error(\"fetchProcessMetrics was removed while an attempt was being polled\");\n return current(target);\n };\n const poll = async () => {\n try {\n const metrics = await read(pid);\n if (cancelled) return;\n setState({ metrics });\n } catch (reason) {\n if (cancelled) return;\n if (reason instanceof ProcessNotFoundError) {\n setState((prev) => ({ ...prev, note: \"process exited\" }));\n setPolling(false);\n return;\n }\n setState((prev) => ({ ...prev, note: reason instanceof Error ? reason.message : String(reason) }));\n }\n timer = setTimeout(poll, POLL_MS);\n };\n void poll();\n return () => {\n cancelled = true;\n clearTimeout(timer);\n setPolling(false);\n };\n }, [active, pid]);\n\n return { state, polling };\n}\n\n/**\n * What one attempt of a test measured: its process metrics (pid, CPU, RSS, open\n * files, duration, exit code, goroutines), read live while the attempt runs,\n * and its timeout stack trace. A pid shared by every package of a `go test`\n * batch is labelled as such, since the numbers are the batch's.\n */\nexport function TestAttemptDetail({ attempt, fetchProcessMetrics }: TestAttemptDetailProps) {\n const live = isAttemptLive(attempt);\n const { state, polling } = useLiveProcessMetrics(attempt.pid, live, fetchProcessMetrics);\n const recorded: ProcessMetrics = {\n ...(attempt.pid !== undefined ? { pid: attempt.pid } : {}),\n ...(attempt.cpu_percent !== undefined ? { cpu_percent: attempt.cpu_percent } : {}),\n ...(attempt.rss !== undefined ? { rss: attempt.rss } : {}),\n };\n const shown = live && state.metrics ? state.metrics : recorded;\n const pid = shown.pid ?? attempt.pid;\n const hasAny = (pid ?? 0) > 0 || shown.cpu_percent !== undefined || shown.rss !== undefined;\n\n return (\n <div className=\"space-y-3\" data-attempt-sequence={attempt.sequence}>\n <section>\n <div className=\"mb-1 flex items-center gap-2\">\n <div className=\"text-[10px] uppercase tracking-wide text-muted-foreground\">Process metrics</div>\n {polling && (\n <span\n className=\"size-1.5 animate-pulse rounded-full bg-blue-500\"\n role=\"status\"\n aria-label=\"Reading live metrics\"\n />\n )}\n {attempt.shared_process && (\n <span\n className=\"rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground\"\n title=\"The pid, CPU and RSS belong to the go test batch this package ran in, not to the package alone\"\n data-shared-process=\"\"\n >\n shared by batch\n </span>\n )}\n </div>\n {!hasAny ? (\n <div className=\"text-xs italic text-muted-foreground\">No metrics captured for this attempt.</div>\n ) : (\n <div className=\"grid grid-cols-2 gap-density-1 md:grid-cols-4\">\n {pid !== undefined && pid > 0 && <MetricTile label=\"PID\" value={String(pid)} />}\n <MetricTile\n label=\"CPU\"\n value={shown.cpu_percent !== undefined ? `${shown.cpu_percent.toFixed(1)}%` : \"—\"}\n {...(shown.cpu_percent !== undefined\n ? { barPct: Math.min(100, shown.cpu_percent), tone: cpuTone(shown.cpu_percent) }\n : {})}\n />\n <MetricTile label=\"RSS\" value={shown.rss !== undefined && shown.rss > 0 ? formatBytes(shown.rss) : \"—\"} />\n {shown.open_files !== undefined && <MetricTile label=\"FDs\" value={String(shown.open_files)} />}\n {attempt.duration !== undefined && attempt.duration > 0 && (\n <MetricTile label=\"Duration\" value={formatTestDuration(attempt.duration)} />\n )}\n {attempt.exit_code !== undefined && (\n <MetricTile label=\"Exit\" value={String(attempt.exit_code)} tone={attempt.exit_code === 0 ? \"success\" : \"danger\"} />\n )}\n {attempt.goroutine_count !== undefined && (\n <MetricTile label=\"Goroutines\" value={String(attempt.goroutine_count)} />\n )}\n </div>\n )}\n {state.note && live && <div className=\"mt-1 text-[11px] italic text-muted-foreground\">{state.note}</div>}\n </section>\n {attempt.stack_trace && (\n <section>\n <div className=\"mb-1 text-[10px] uppercase tracking-wide text-muted-foreground\">Stack trace</div>\n <div className=\"flex max-h-[32rem] min-h-0 flex-col\">\n <StackDumpView text={attempt.stack_trace} />\n </div>\n </section>\n )}\n </div>\n );\n}\n"],"names":["useState","useRef","useEffect","ProcessNotFoundError","isAttemptLive","jsxs","jsx","MetricTile","cpuTone","formatBytes","formatTestDuration","StackDumpView"],"mappings":";;;;;;;;;;;AAeA,MAAM,UAAU;AAehB,SAAS,sBACP,KACA,SACA,cACwC;AACxC,QAAM,CAAC,OAAO,QAAQ,IAAIA,MAAAA,SAAoB,CAAA,CAAE;AAChD,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAAA,SAAS,KAAK;AAC5C,QAAM,WAAWC,MAAAA,OAAO,YAAY;AACpC,WAAS,UAAU;AACnB,QAAM,SAAS,WAAW,QAAQ,UAAa,MAAM,KAAK,iBAAiB;AAE3EC,QAAAA,UAAU,MAAM;AACd,QAAI,CAAC,UAAU,QAAQ,OAAW;AAClC,QAAI,YAAY;AAChB,QAAI;AACJ,aAAS,CAAA,CAAE;AACX,eAAW,IAAI;AACf,UAAM,OAAO,CAAC,WAAmB;AAC/B,YAAM,UAAU,SAAS;AACzB,UAAI,CAAC,QAAS,OAAM,IAAI,MAAM,mEAAmE;AACjG,aAAO,QAAQ,MAAM;AAAA,IACvB;AACA,UAAM,OAAO,YAAY;AACvB,UAAI;AACF,cAAM,UAAU,MAAM,KAAK,GAAG;AAC9B,YAAI,UAAW;AACf,iBAAS,EAAE,SAAS;AAAA,MACtB,SAAS,QAAQ;AACf,YAAI,UAAW;AACf,YAAI,kBAAkBC,eAAAA,sBAAsB;AAC1C,mBAAS,CAAC,UAAU,EAAE,GAAG,MAAM,MAAM,mBAAmB;AACxD,qBAAW,KAAK;AAChB;AAAA,QACF;AACA,iBAAS,CAAC,UAAU,EAAE,GAAG,MAAM,MAAM,kBAAkB,QAAQ,OAAO,UAAU,OAAO,MAAM,IAAI;AAAA,MACnG;AACA,cAAQ,WAAW,MAAM,OAAO;AAAA,IAClC;AACA,SAAK,KAAA;AACL,WAAO,MAAM;AACX,kBAAY;AACZ,mBAAa,KAAK;AAClB,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,QAAQ,GAAG,CAAC;AAEhB,SAAO,EAAE,OAAO,QAAA;AAClB;AAQO,SAAS,kBAAkB,EAAE,SAAS,uBAA+C;AAC1F,QAAM,OAAOC,SAAAA,cAAc,OAAO;AAClC,QAAM,EAAE,OAAO,YAAY,sBAAsB,QAAQ,KAAK,MAAM,mBAAmB;AACvF,QAAM,WAA2B;AAAA,IAC/B,GAAI,QAAQ,QAAQ,SAAY,EAAE,KAAK,QAAQ,IAAA,IAAQ,CAAA;AAAA,IACvD,GAAI,QAAQ,gBAAgB,SAAY,EAAE,aAAa,QAAQ,YAAA,IAAgB,CAAA;AAAA,IAC/E,GAAI,QAAQ,QAAQ,SAAY,EAAE,KAAK,QAAQ,QAAQ,CAAA;AAAA,EAAC;AAE1D,QAAM,QAAQ,QAAQ,MAAM,UAAU,MAAM,UAAU;AACtD,QAAM,MAAM,MAAM,OAAO,QAAQ;AACjC,QAAM,UAAU,OAAO,KAAK,KAAK,MAAM,gBAAgB,UAAa,MAAM,QAAQ;AAElF,yCACG,OAAA,EAAI,WAAU,aAAY,yBAAuB,QAAQ,UACxD,UAAA;AAAA,IAAAC,gCAAC,WAAA,EACC,UAAA;AAAA,MAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAU,gCACb,UAAA;AAAA,QAAAC,2BAAAA,IAAC,OAAA,EAAI,WAAU,6DAA4D,UAAA,mBAAe;AAAA,QACzF,WACCA,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,cAAW;AAAA,UAAA;AAAA,QAAA;AAAA,QAGd,QAAQ,kBACPA,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAM;AAAA,YACN,uBAAoB;AAAA,YACrB,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,GAEJ;AAAA,MACC,CAAC,SACAA,2BAAAA,IAAC,OAAA,EAAI,WAAU,wCAAuC,UAAA,wCAAA,CAAqC,IAE3FD,2BAAAA,KAAC,OAAA,EAAI,WAAU,iDACZ,UAAA;AAAA,QAAA,QAAQ,UAAa,MAAM,KAAKC,2BAAAA,IAACC,WAAAA,YAAA,EAAW,OAAM,OAAM,OAAO,OAAO,GAAG,EAAA,CAAG;AAAA,QAC7ED,2BAAAA;AAAAA,UAACC,WAAAA;AAAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,OAAO,MAAM,gBAAgB,SAAY,GAAG,MAAM,YAAY,QAAQ,CAAC,CAAC,MAAM;AAAA,YAC7E,GAAI,MAAM,gBAAgB,SACvB,EAAE,QAAQ,KAAK,IAAI,KAAK,MAAM,WAAW,GAAG,MAAMC,WAAAA,QAAQ,MAAM,WAAW,MAC3E,CAAA;AAAA,UAAC;AAAA,QAAA;AAAA,QAEPF,2BAAAA,IAACC,WAAAA,YAAA,EAAW,OAAM,OAAM,OAAO,MAAM,QAAQ,UAAa,MAAM,MAAM,IAAIE,OAAAA,YAAY,MAAM,GAAG,IAAI,KAAK;AAAA,QACvG,MAAM,eAAe,UAAaH,2BAAAA,IAACC,WAAAA,YAAA,EAAW,OAAM,OAAM,OAAO,OAAO,MAAM,UAAU,EAAA,CAAG;AAAA,QAC3F,QAAQ,aAAa,UAAa,QAAQ,WAAW,KACpDD,+BAACC,WAAAA,YAAA,EAAW,OAAM,YAAW,OAAOG,OAAAA,mBAAmB,QAAQ,QAAQ,GAAG;AAAA,QAE3E,QAAQ,cAAc,UACrBJ,2BAAAA,IAACC,WAAAA,YAAA,EAAW,OAAM,QAAO,OAAO,OAAO,QAAQ,SAAS,GAAG,MAAM,QAAQ,cAAc,IAAI,YAAY,UAAU;AAAA,QAElH,QAAQ,oBAAoB,UAC3BD,2BAAAA,IAACC,WAAAA,YAAA,EAAW,OAAM,cAAa,OAAO,OAAO,QAAQ,eAAe,EAAA,CAAG;AAAA,MAAA,GAE3E;AAAA,MAED,MAAM,QAAQ,QAAQD,2BAAAA,IAAC,SAAI,WAAU,iDAAiD,gBAAM,KAAA,CAAK;AAAA,IAAA,GACpG;AAAA,IACC,QAAQ,eACPD,2BAAAA,KAAC,WAAA,EACC,UAAA;AAAA,MAAAC,2BAAAA,IAAC,OAAA,EAAI,WAAU,kEAAiE,UAAA,eAAW;AAAA,MAC3FA,2BAAAA,IAAC,SAAI,WAAU,uCACb,yCAACK,cAAAA,eAAA,EAAc,MAAM,QAAQ,YAAA,CAAa,EAAA,CAC5C;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;;"}
@@ -0,0 +1,19 @@
1
+ import { FetchProcessMetrics } from './process-metrics.js';
2
+ import { TestAttempt } from './types.js';
3
+ export type TestAttemptDetailProps = {
4
+ attempt: TestAttempt;
5
+ /**
6
+ * Reads the attempt's process while it is live, every two seconds. Polling
7
+ * stops when the attempt finishes or the fetch rejects with
8
+ * `ProcessNotFoundError`; any other rejection is shown and polling goes on.
9
+ */
10
+ fetchProcessMetrics?: FetchProcessMetrics;
11
+ };
12
+ /**
13
+ * What one attempt of a test measured: its process metrics (pid, CPU, RSS, open
14
+ * files, duration, exit code, goroutines), read live while the attempt runs,
15
+ * and its timeout stack trace. A pid shared by every package of a `go test`
16
+ * batch is labelled as such, since the numbers are the batch's.
17
+ */
18
+ export declare function TestAttemptDetail({ attempt, fetchProcessMetrics }: TestAttemptDetailProps): import("react").JSX.Element;
19
+ //# sourceMappingURL=TestAttemptDetail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestAttemptDetail.d.ts","sourceRoot":"","sources":["../../../src/data/test-runner/TestAttemptDetail.tsx"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAK3C,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C,CAAC;AAsDF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,sBAAsB,+BAuEzF"}