@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,66 @@
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
+ import { Icon } from "../Icon.js";
3
+ import { Badge } from "../Badge.js";
4
+ import { cn } from "../../lib/utils.js";
5
+ import { LintSeverityIcon, ToolIcon } from "../test-runner/MarkIcons.js";
6
+ import { toolMark } from "../test-runner/marks.js";
7
+ import { lintNodeCount, lintNodeSeverity } from "./stats.js";
8
+ import { UiTag } from "../../icons/components/UiTag.js";
9
+ import { UiFileCode } from "../../icons/components/UiFileCode.js";
10
+ import { UiFolder } from "../../icons/components/UiFolder.js";
11
+ import { UiWrench } from "../../icons/components/UiWrench.js";
12
+ const COUNT_TONE = { error: "danger", warning: "warning", info: "info" };
13
+ function NodeIcon({ node }) {
14
+ switch (node.kind) {
15
+ case "linter":
16
+ return toolMark(node.linterName) ? /* @__PURE__ */ jsx(ToolIcon, { tool: node.linterName }) : /* @__PURE__ */ jsx(Icon, { icon: UiWrench, className: "shrink-0 text-muted-foreground" });
17
+ case "lint-folder":
18
+ return /* @__PURE__ */ jsx(Icon, { icon: UiFolder, className: "shrink-0 text-muted-foreground" });
19
+ case "lint-file":
20
+ return /* @__PURE__ */ jsx(Icon, { icon: UiFileCode, className: "shrink-0 text-muted-foreground" });
21
+ case "lint-rule":
22
+ case "lint-rule-group":
23
+ return /* @__PURE__ */ jsx(Icon, { icon: UiTag, className: "shrink-0 text-muted-foreground" });
24
+ case "linter-error":
25
+ return /* @__PURE__ */ jsx(LintSeverityIcon, { severity: "error" });
26
+ }
27
+ }
28
+ function LintTreeNode({ node, selected }) {
29
+ var _a;
30
+ const count = node.kind === "linter-error" ? 0 : lintNodeCount(node);
31
+ const failedToRun = node.kind === "linter" && ((_a = node.children) == null ? void 0 : _a.some((c) => c.kind === "linter-error"));
32
+ const note = node.skipped ? node.message : failedToRun ? "failed to run" : void 0;
33
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
34
+ /* @__PURE__ */ jsx(NodeIcon, { node }),
35
+ /* @__PURE__ */ jsx(
36
+ "span",
37
+ {
38
+ className: cn(
39
+ "min-w-0 truncate",
40
+ selected ? "font-semibold" : "font-medium",
41
+ node.kind === "linter-error" ? "text-red-600 dark:text-red-400" : "text-foreground",
42
+ node.skipped && "text-muted-foreground"
43
+ ),
44
+ title: node.name,
45
+ children: node.name
46
+ }
47
+ ),
48
+ /* @__PURE__ */ jsx("span", { className: "flex-1" }),
49
+ note && /* @__PURE__ */ jsx(
50
+ "span",
51
+ {
52
+ className: cn(
53
+ "min-w-0 shrink-[100] truncate text-xs",
54
+ failedToRun ? "text-red-600 dark:text-red-400" : "text-muted-foreground"
55
+ ),
56
+ title: note,
57
+ children: note
58
+ }
59
+ ),
60
+ count > 0 && /* @__PURE__ */ jsx("span", { className: "flex shrink-0", title: `${count} violation${count === 1 ? "" : "s"}`, children: /* @__PURE__ */ jsx(Badge, { tone: COUNT_TONE[lintNodeSeverity(node)], variant: "solid", size: "xxs", count }) })
61
+ ] });
62
+ }
63
+ export {
64
+ LintTreeNode
65
+ };
66
+ //# sourceMappingURL=LintTreeNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LintTreeNode.js","sources":["../../../src/data/lint/LintTreeNode.tsx"],"sourcesContent":["import { Icon } from \"../Icon\";\nimport { Badge } from \"../Badge\";\nimport { cn } from \"../../lib/utils\";\nimport { UiFileCode, UiFolder, UiTag, UiWrench } from \"../../icons\";\nimport { LintSeverityIcon, ToolIcon } from \"../test-runner/MarkIcons\";\nimport { toolMark } from \"../test-runner/marks\";\nimport { lintNodeCount, lintNodeSeverity } from \"./stats\";\nimport type { LintNode, LintSeverity } from \"./types\";\n\nconst COUNT_TONE = { error: \"danger\", warning: \"warning\", info: \"info\" } as const satisfies Record<\n LintSeverity,\n \"danger\" | \"warning\" | \"info\"\n>;\n\nfunction NodeIcon({ node }: { node: LintNode }) {\n switch (node.kind) {\n case \"linter\":\n return toolMark(node.linterName) ? (\n <ToolIcon tool={node.linterName} />\n ) : (\n <Icon icon={UiWrench} className=\"shrink-0 text-muted-foreground\" />\n );\n case \"lint-folder\":\n return <Icon icon={UiFolder} className=\"shrink-0 text-muted-foreground\" />;\n case \"lint-file\":\n return <Icon icon={UiFileCode} className=\"shrink-0 text-muted-foreground\" />;\n case \"lint-rule\":\n case \"lint-rule-group\":\n return <Icon icon={UiTag} className=\"shrink-0 text-muted-foreground\" />;\n case \"linter-error\":\n return <LintSeverityIcon severity=\"error\" />;\n }\n}\n\n/** One lint tree row: kind glyph, name, trailing note, and a violation count coloured by worst severity. */\nexport function LintTreeNode({ node, selected }: { node: LintNode; selected: boolean }) {\n const count = node.kind === \"linter-error\" ? 0 : lintNodeCount(node);\n const failedToRun = node.kind === \"linter\" && node.children?.some((c) => c.kind === \"linter-error\");\n const note = node.skipped ? node.message : failedToRun ? \"failed to run\" : undefined;\n return (\n <>\n <NodeIcon node={node} />\n <span\n className={cn(\n \"min-w-0 truncate\",\n selected ? \"font-semibold\" : \"font-medium\",\n node.kind === \"linter-error\" ? \"text-red-600 dark:text-red-400\" : \"text-foreground\",\n node.skipped && \"text-muted-foreground\",\n )}\n title={node.name}\n >\n {node.name}\n </span>\n <span className=\"flex-1\" />\n {note && (\n <span\n className={cn(\n \"min-w-0 shrink-[100] truncate text-xs\",\n failedToRun ? \"text-red-600 dark:text-red-400\" : \"text-muted-foreground\",\n )}\n title={note}\n >\n {note}\n </span>\n )}\n {count > 0 && (\n <span className=\"flex shrink-0\" title={`${count} violation${count === 1 ? \"\" : \"s\"}`}>\n <Badge tone={COUNT_TONE[lintNodeSeverity(node)]} variant=\"solid\" size=\"xxs\" count={count} />\n </span>\n )}\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AASA,MAAM,aAAa,EAAE,OAAO,UAAU,SAAS,WAAW,MAAM,OAAA;AAKhE,SAAS,SAAS,EAAE,QAA4B;AAC9C,UAAQ,KAAK,MAAA;AAAA,IACX,KAAK;AACH,aAAO,SAAS,KAAK,UAAU,wBAC5B,UAAA,EAAS,MAAM,KAAK,WAAA,CAAY,IAEjC,oBAAC,MAAA,EAAK,MAAM,UAAU,WAAU,kCAAiC;AAAA,IAErE,KAAK;AACH,aAAO,oBAAC,MAAA,EAAK,MAAM,UAAU,WAAU,kCAAiC;AAAA,IAC1E,KAAK;AACH,aAAO,oBAAC,MAAA,EAAK,MAAM,YAAY,WAAU,kCAAiC;AAAA,IAC5E,KAAK;AAAA,IACL,KAAK;AACH,aAAO,oBAAC,MAAA,EAAK,MAAM,OAAO,WAAU,kCAAiC;AAAA,IACvE,KAAK;AACH,aAAO,oBAAC,kBAAA,EAAiB,UAAS,QAAA,CAAQ;AAAA,EAAA;AAEhD;AAGO,SAAS,aAAa,EAAE,MAAM,YAAmD;;AACtF,QAAM,QAAQ,KAAK,SAAS,iBAAiB,IAAI,cAAc,IAAI;AACnE,QAAM,cAAc,KAAK,SAAS,cAAY,UAAK,aAAL,mBAAe,KAAK,CAAC,MAAM,EAAE,SAAS;AACpF,QAAM,OAAO,KAAK,UAAU,KAAK,UAAU,cAAc,kBAAkB;AAC3E,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,oBAAC,YAAS,MAAY;AAAA,IACtB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,WAAW,kBAAkB;AAAA,UAC7B,KAAK,SAAS,iBAAiB,mCAAmC;AAAA,UAClE,KAAK,WAAW;AAAA,QAAA;AAAA,QAElB,OAAO,KAAK;AAAA,QAEX,UAAA,KAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAER,oBAAC,QAAA,EAAK,WAAU,SAAA,CAAS;AAAA,IACxB,QACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,cAAc,mCAAmC;AAAA,QAAA;AAAA,QAEnD,OAAO;AAAA,QAEN,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJ,QAAQ,KACP,oBAAC,QAAA,EAAK,WAAU,iBAAgB,OAAO,GAAG,KAAK,aAAa,UAAU,IAAI,KAAK,GAAG,IAChF,UAAA,oBAAC,OAAA,EAAM,MAAM,WAAW,iBAAiB,IAAI,CAAC,GAAG,SAAQ,SAAQ,MAAK,OAAM,MAAA,CAAc,EAAA,CAC5F;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const paths = require("./paths.cjs");
4
+ const DISABLE_TITLE = "Add {source} to .gavel.yaml";
5
+ function folderPattern(path) {
6
+ if (!path) return "**";
7
+ const trimmed = path.replace(/\/+$/, "");
8
+ return trimmed ? `${trimmed}/**` : "**";
9
+ }
10
+ function collectFolderLintStats(folder, results) {
11
+ const targetPath = folder.target_path ?? "";
12
+ const counts = /* @__PURE__ */ new Map();
13
+ for (const result of results) {
14
+ if (folder.work_dir && result.work_dir && result.work_dir !== folder.work_dir) continue;
15
+ for (const violation of result.violations ?? []) {
16
+ const rawFile = paths.relPath(violation.file, result.work_dir);
17
+ if (!rawFile) continue;
18
+ if (targetPath !== "" && rawFile !== targetPath && !rawFile.startsWith(`${targetPath}/`)) continue;
19
+ const current = counts.get(result.linter);
20
+ if (current) current.count += 1;
21
+ else counts.set(result.linter, { linter: result.linter, count: 1, workDir: result.work_dir });
22
+ }
23
+ }
24
+ return Array.from(counts.values()).sort((a, b) => b.count - a.count || a.linter.localeCompare(b.linter));
25
+ }
26
+ function disableLinter(linter, workDir) {
27
+ return {
28
+ key: "linter-disable",
29
+ label: `Disable ${linter} entirely`,
30
+ title: DISABLE_TITLE,
31
+ req: { source: linter, work_dir: workDir },
32
+ variant: "subtle"
33
+ };
34
+ }
35
+ function lintFolderActions(node, results) {
36
+ const pattern = folderPattern(node.target_path);
37
+ const linter = node.linterName ?? "";
38
+ const rule = node.ruleName ?? "";
39
+ const stats = linter ? [] : collectFolderLintStats(node, results);
40
+ const statWorkDirs = new Set(stats.flatMap((s) => s.workDir ? [s.workDir] : []));
41
+ const workDir = node.work_dir || (statWorkDirs.size === 1 ? Array.from(statWorkDirs)[0] : "");
42
+ if (linter && rule) {
43
+ return [
44
+ {
45
+ key: "rule-folder",
46
+ label: `Ignore ${rule} in this folder`,
47
+ title: "Add {source, rule, file} to .gavel.yaml",
48
+ req: { source: linter, rule, file: pattern, work_dir: workDir },
49
+ disabledWithoutWorkDir: true
50
+ },
51
+ {
52
+ key: "rule-repo",
53
+ label: `Ignore rule ${rule} everywhere`,
54
+ title: "Add {source, rule} to .gavel.yaml",
55
+ req: { source: linter, rule, work_dir: workDir }
56
+ },
57
+ disableLinter(linter, workDir)
58
+ ];
59
+ }
60
+ const everything = {
61
+ key: "folder-everything",
62
+ label: "Ignore everything in this folder",
63
+ title: "Add {file} to .gavel.yaml",
64
+ req: { file: pattern, work_dir: workDir },
65
+ disabledWithoutWorkDir: true
66
+ };
67
+ if (linter) {
68
+ return [
69
+ everything,
70
+ {
71
+ key: "linter-folder",
72
+ label: `Ignore ${linter} in this folder`,
73
+ title: "Add {source, file} to .gavel.yaml",
74
+ req: { source: linter, file: pattern, work_dir: workDir },
75
+ disabledWithoutWorkDir: true
76
+ },
77
+ disableLinter(linter, workDir)
78
+ ];
79
+ }
80
+ return [
81
+ everything,
82
+ ...stats.flatMap((stat) => [
83
+ {
84
+ key: `linter-folder:${stat.linter}`,
85
+ label: `Ignore ${stat.linter} in this folder`,
86
+ title: "Add {source, file} to .gavel.yaml",
87
+ req: { source: stat.linter, file: pattern, work_dir: workDir },
88
+ variant: "subtle",
89
+ disabledWithoutWorkDir: true
90
+ },
91
+ { ...disableLinter(stat.linter, workDir), key: `linter-disable:${stat.linter}` }
92
+ ])
93
+ ];
94
+ }
95
+ function uniqueChildLinters(node) {
96
+ const names = (node.children ?? []).flatMap((c) => c.kind === "linter" && c.linterName ? [c.linterName] : []);
97
+ return Array.from(new Set(names));
98
+ }
99
+ function lintFileActions(node) {
100
+ const linter = node.linterName ?? "";
101
+ const targetPath = node.target_path || node.file || "";
102
+ const workDir = node.work_dir ?? "";
103
+ if (linter) {
104
+ return [
105
+ {
106
+ key: "file-everything-linter",
107
+ label: `Ignore all ${linter} in this file`,
108
+ title: "Add {source, file} to .gavel.yaml",
109
+ req: { source: linter, file: targetPath, work_dir: workDir }
110
+ },
111
+ disableLinter(linter, workDir)
112
+ ];
113
+ }
114
+ return [
115
+ {
116
+ key: "file-everything",
117
+ label: "Ignore everything in this file",
118
+ title: "Add {file} to .gavel.yaml",
119
+ req: { file: targetPath, work_dir: workDir }
120
+ },
121
+ ...uniqueChildLinters(node).flatMap((child) => [
122
+ {
123
+ key: `file-linter:${child}`,
124
+ label: `Ignore all ${child} in this file`,
125
+ title: "Add {source, file} to .gavel.yaml",
126
+ req: { source: child, file: targetPath, work_dir: workDir },
127
+ variant: "subtle"
128
+ },
129
+ { ...disableLinter(child, workDir), key: `linter-disable:${child}` }
130
+ ])
131
+ ];
132
+ }
133
+ function lintRuleActions(node) {
134
+ const linter = node.linterName ?? "";
135
+ const rule = node.ruleName ?? "";
136
+ const workDir = node.work_dir ?? "";
137
+ const targetPath = node.target_path || node.file || "";
138
+ return [
139
+ ...node.file ? [
140
+ {
141
+ key: "rule-file",
142
+ label: `Ignore ${rule} in this file`,
143
+ title: "Add {source, rule, file} to .gavel.yaml",
144
+ req: { source: linter, rule, file: targetPath, work_dir: workDir }
145
+ }
146
+ ] : [],
147
+ {
148
+ key: "rule-repo",
149
+ label: `Ignore rule ${rule} everywhere`,
150
+ title: "Add {source, rule} to .gavel.yaml",
151
+ req: { source: linter, rule, work_dir: workDir }
152
+ },
153
+ disableLinter(linter, workDir)
154
+ ];
155
+ }
156
+ function lintNodeActions(node, results) {
157
+ var _a;
158
+ switch (node.kind) {
159
+ case "linter":
160
+ return node.linterName ? [disableLinter(node.linterName, node.work_dir || ((_a = node.linter) == null ? void 0 : _a.work_dir) || "")] : [];
161
+ case "lint-folder":
162
+ return lintFolderActions(node, results);
163
+ case "lint-file":
164
+ return lintFileActions(node);
165
+ case "lint-rule":
166
+ case "lint-rule-group":
167
+ return lintRuleActions(node);
168
+ case "linter-error":
169
+ return [];
170
+ }
171
+ }
172
+ function violationIgnoreAction({
173
+ violation,
174
+ linter,
175
+ file,
176
+ workDir
177
+ }) {
178
+ var _a;
179
+ const rule = (_a = violation.rule) == null ? void 0 : _a.method;
180
+ if (!rule || !file) return null;
181
+ return {
182
+ key: "violation",
183
+ label: "Ignore this violation",
184
+ title: "Add {source, rule, file} to .gavel.yaml",
185
+ variant: "subtle",
186
+ req: { source: linter, rule, file, work_dir: workDir }
187
+ };
188
+ }
189
+ exports.collectFolderLintStats = collectFolderLintStats;
190
+ exports.folderPattern = folderPattern;
191
+ exports.lintFileActions = lintFileActions;
192
+ exports.lintFolderActions = lintFolderActions;
193
+ exports.lintNodeActions = lintNodeActions;
194
+ exports.violationIgnoreAction = violationIgnoreAction;
195
+ //# sourceMappingURL=actions.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.cjs","sources":["../../../src/data/lint/actions.ts"],"sourcesContent":["// The \"Ignore ...\" buttons a lint node offers. These are pure descriptions: the\n// component never writes configuration itself, it hands the chosen action to\n// the host's `onIgnore`, which maps `req` onto an entry in `.gavel.yaml`.\n\nimport { relPath } from \"./paths\";\nimport type { LintAction, LintNode, LinterResult, Violation } from \"./types\";\n\nconst DISABLE_TITLE = \"Add {source} to .gavel.yaml\";\n\nexport function folderPattern(path: string | undefined): string {\n if (!path) return \"**\";\n const trimmed = path.replace(/\\/+$/, \"\");\n return trimmed ? `${trimmed}/**` : \"**\";\n}\n\ntype FolderLintStat = { linter: string; count: number; workDir: string | undefined };\n\n/** Per-linter violation counts beneath a folder, most findings first. */\nexport function collectFolderLintStats(\n folder: LintNode,\n results: readonly LinterResult[],\n): FolderLintStat[] {\n const targetPath = folder.target_path ?? \"\";\n const counts = new Map<string, FolderLintStat>();\n for (const result of results) {\n if (folder.work_dir && result.work_dir && result.work_dir !== folder.work_dir) continue;\n for (const violation of result.violations ?? []) {\n const rawFile = relPath(violation.file, result.work_dir);\n if (!rawFile) continue;\n if (targetPath !== \"\" && rawFile !== targetPath && !rawFile.startsWith(`${targetPath}/`)) continue;\n const current = counts.get(result.linter);\n if (current) current.count += 1;\n else counts.set(result.linter, { linter: result.linter, count: 1, workDir: result.work_dir });\n }\n }\n return Array.from(counts.values()).sort((a, b) => b.count - a.count || a.linter.localeCompare(b.linter));\n}\n\nfunction disableLinter(linter: string, workDir: string): LintAction {\n return {\n key: \"linter-disable\",\n label: `Disable ${linter} entirely`,\n title: DISABLE_TITLE,\n req: { source: linter, work_dir: workDir },\n variant: \"subtle\",\n };\n}\n\n/**\n * Folder buttons, by what the folder node is scoped to:\n * linter + rule -> folder / everywhere / disable the linter\n * linter only -> whole folder / this linter in the folder / disable the linter\n * neither -> whole folder, then a pair per linter that reported beneath it\n */\nexport function lintFolderActions(node: LintNode, results: readonly LinterResult[]): LintAction[] {\n const pattern = folderPattern(node.target_path);\n const linter = node.linterName ?? \"\";\n const rule = node.ruleName ?? \"\";\n const stats = linter ? [] : collectFolderLintStats(node, results);\n const statWorkDirs = new Set(stats.flatMap((s) => (s.workDir ? [s.workDir] : [])));\n const workDir = node.work_dir || (statWorkDirs.size === 1 ? Array.from(statWorkDirs)[0]! : \"\");\n\n if (linter && rule) {\n return [\n {\n key: \"rule-folder\",\n label: `Ignore ${rule} in this folder`,\n title: \"Add {source, rule, file} to .gavel.yaml\",\n req: { source: linter, rule, file: pattern, work_dir: workDir },\n disabledWithoutWorkDir: true,\n },\n {\n key: \"rule-repo\",\n label: `Ignore rule ${rule} everywhere`,\n title: \"Add {source, rule} to .gavel.yaml\",\n req: { source: linter, rule, work_dir: workDir },\n },\n disableLinter(linter, workDir),\n ];\n }\n\n const everything: LintAction = {\n key: \"folder-everything\",\n label: \"Ignore everything in this folder\",\n title: \"Add {file} to .gavel.yaml\",\n req: { file: pattern, work_dir: workDir },\n disabledWithoutWorkDir: true,\n };\n\n if (linter) {\n return [\n everything,\n {\n key: \"linter-folder\",\n label: `Ignore ${linter} in this folder`,\n title: \"Add {source, file} to .gavel.yaml\",\n req: { source: linter, file: pattern, work_dir: workDir },\n disabledWithoutWorkDir: true,\n },\n disableLinter(linter, workDir),\n ];\n }\n\n return [\n everything,\n ...stats.flatMap((stat): LintAction[] => [\n {\n key: `linter-folder:${stat.linter}`,\n label: `Ignore ${stat.linter} in this folder`,\n title: \"Add {source, file} to .gavel.yaml\",\n req: { source: stat.linter, file: pattern, work_dir: workDir },\n variant: \"subtle\",\n disabledWithoutWorkDir: true,\n },\n { ...disableLinter(stat.linter, workDir), key: `linter-disable:${stat.linter}` },\n ]),\n ];\n}\n\nfunction uniqueChildLinters(node: LintNode): string[] {\n const names = (node.children ?? []).flatMap((c) => (c.kind === \"linter\" && c.linterName ? [c.linterName] : []));\n return Array.from(new Set(names));\n}\n\n/** File buttons: a single-linter file ignores that linter; a multi-linter file offers each. */\nexport function lintFileActions(node: LintNode): LintAction[] {\n const linter = node.linterName ?? \"\";\n const targetPath = node.target_path || node.file || \"\";\n const workDir = node.work_dir ?? \"\";\n\n if (linter) {\n return [\n {\n key: \"file-everything-linter\",\n label: `Ignore all ${linter} in this file`,\n title: \"Add {source, file} to .gavel.yaml\",\n req: { source: linter, file: targetPath, work_dir: workDir },\n },\n disableLinter(linter, workDir),\n ];\n }\n\n return [\n {\n key: \"file-everything\",\n label: \"Ignore everything in this file\",\n title: \"Add {file} to .gavel.yaml\",\n req: { file: targetPath, work_dir: workDir },\n },\n ...uniqueChildLinters(node).flatMap((child): LintAction[] => [\n {\n key: `file-linter:${child}`,\n label: `Ignore all ${child} in this file`,\n title: \"Add {source, file} to .gavel.yaml\",\n req: { source: child, file: targetPath, work_dir: workDir },\n variant: \"subtle\",\n },\n { ...disableLinter(child, workDir), key: `linter-disable:${child}` },\n ]),\n ];\n}\n\nfunction lintRuleActions(node: LintNode): LintAction[] {\n const linter = node.linterName ?? \"\";\n const rule = node.ruleName ?? \"\";\n const workDir = node.work_dir ?? \"\";\n const targetPath = node.target_path || node.file || \"\";\n return [\n ...(node.file\n ? [\n {\n key: \"rule-file\",\n label: `Ignore ${rule} in this file`,\n title: \"Add {source, rule, file} to .gavel.yaml\",\n req: { source: linter, rule, file: targetPath, work_dir: workDir },\n },\n ]\n : []),\n {\n key: \"rule-repo\",\n label: `Ignore rule ${rule} everywhere`,\n title: \"Add {source, rule} to .gavel.yaml\",\n req: { source: linter, rule, work_dir: workDir },\n },\n disableLinter(linter, workDir),\n ];\n}\n\n/** Every ignore button for the selected node. A linter-error leaf has nothing to ignore. */\nexport function lintNodeActions(node: LintNode, results: readonly LinterResult[]): LintAction[] {\n switch (node.kind) {\n case \"linter\":\n return node.linterName\n ? [disableLinter(node.linterName, node.work_dir || node.linter?.work_dir || \"\")]\n : [];\n case \"lint-folder\":\n return lintFolderActions(node, results);\n case \"lint-file\":\n return lintFileActions(node);\n case \"lint-rule\":\n case \"lint-rule-group\":\n return lintRuleActions(node);\n case \"linter-error\":\n return [];\n }\n}\n\n/** Ignore one finding's rule in its file; unavailable for a finding without a rule or file. */\nexport function violationIgnoreAction({\n violation,\n linter,\n file,\n workDir,\n}: {\n violation: Violation;\n linter: string;\n file: string;\n workDir: string;\n}): LintAction | null {\n const rule = violation.rule?.method;\n if (!rule || !file) return null;\n return {\n key: \"violation\",\n label: \"Ignore this violation\",\n title: \"Add {source, rule, file} to .gavel.yaml\",\n variant: \"subtle\",\n req: { source: linter, rule, file, work_dir: workDir },\n };\n}\n"],"names":["relPath"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { LintAction, LintNode, LinterResult, Violation } from './types.js';
2
+ export declare function folderPattern(path: string | undefined): string;
3
+ type FolderLintStat = {
4
+ linter: string;
5
+ count: number;
6
+ workDir: string | undefined;
7
+ };
8
+ /** Per-linter violation counts beneath a folder, most findings first. */
9
+ export declare function collectFolderLintStats(folder: LintNode, results: readonly LinterResult[]): FolderLintStat[];
10
+ /**
11
+ * Folder buttons, by what the folder node is scoped to:
12
+ * linter + rule -> folder / everywhere / disable the linter
13
+ * linter only -> whole folder / this linter in the folder / disable the linter
14
+ * neither -> whole folder, then a pair per linter that reported beneath it
15
+ */
16
+ export declare function lintFolderActions(node: LintNode, results: readonly LinterResult[]): LintAction[];
17
+ /** File buttons: a single-linter file ignores that linter; a multi-linter file offers each. */
18
+ export declare function lintFileActions(node: LintNode): LintAction[];
19
+ /** Every ignore button for the selected node. A linter-error leaf has nothing to ignore. */
20
+ export declare function lintNodeActions(node: LintNode, results: readonly LinterResult[]): LintAction[];
21
+ /** Ignore one finding's rule in its file; unavailable for a finding without a rule or file. */
22
+ export declare function violationIgnoreAction({ violation, linter, file, workDir, }: {
23
+ violation: Violation;
24
+ linter: string;
25
+ file: string;
26
+ workDir: string;
27
+ }): LintAction | null;
28
+ export {};
29
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/data/lint/actions.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAI7E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI9D;AAED,KAAK,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAErF,yEAAyE;AACzE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,SAAS,YAAY,EAAE,GAC/B,cAAc,EAAE,CAelB;AAYD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,UAAU,EAAE,CA+DhG;AAOD,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,CAmC5D;AA4BD,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,UAAU,EAAE,CAgB9F;AAED,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,MAAM,EACN,IAAI,EACJ,OAAO,GACR,EAAE;IACD,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,UAAU,GAAG,IAAI,CAUpB"}
@@ -0,0 +1,195 @@
1
+ import { relPath } from "./paths.js";
2
+ const DISABLE_TITLE = "Add {source} to .gavel.yaml";
3
+ function folderPattern(path) {
4
+ if (!path) return "**";
5
+ const trimmed = path.replace(/\/+$/, "");
6
+ return trimmed ? `${trimmed}/**` : "**";
7
+ }
8
+ function collectFolderLintStats(folder, results) {
9
+ const targetPath = folder.target_path ?? "";
10
+ const counts = /* @__PURE__ */ new Map();
11
+ for (const result of results) {
12
+ if (folder.work_dir && result.work_dir && result.work_dir !== folder.work_dir) continue;
13
+ for (const violation of result.violations ?? []) {
14
+ const rawFile = relPath(violation.file, result.work_dir);
15
+ if (!rawFile) continue;
16
+ if (targetPath !== "" && rawFile !== targetPath && !rawFile.startsWith(`${targetPath}/`)) continue;
17
+ const current = counts.get(result.linter);
18
+ if (current) current.count += 1;
19
+ else counts.set(result.linter, { linter: result.linter, count: 1, workDir: result.work_dir });
20
+ }
21
+ }
22
+ return Array.from(counts.values()).sort((a, b) => b.count - a.count || a.linter.localeCompare(b.linter));
23
+ }
24
+ function disableLinter(linter, workDir) {
25
+ return {
26
+ key: "linter-disable",
27
+ label: `Disable ${linter} entirely`,
28
+ title: DISABLE_TITLE,
29
+ req: { source: linter, work_dir: workDir },
30
+ variant: "subtle"
31
+ };
32
+ }
33
+ function lintFolderActions(node, results) {
34
+ const pattern = folderPattern(node.target_path);
35
+ const linter = node.linterName ?? "";
36
+ const rule = node.ruleName ?? "";
37
+ const stats = linter ? [] : collectFolderLintStats(node, results);
38
+ const statWorkDirs = new Set(stats.flatMap((s) => s.workDir ? [s.workDir] : []));
39
+ const workDir = node.work_dir || (statWorkDirs.size === 1 ? Array.from(statWorkDirs)[0] : "");
40
+ if (linter && rule) {
41
+ return [
42
+ {
43
+ key: "rule-folder",
44
+ label: `Ignore ${rule} in this folder`,
45
+ title: "Add {source, rule, file} to .gavel.yaml",
46
+ req: { source: linter, rule, file: pattern, work_dir: workDir },
47
+ disabledWithoutWorkDir: true
48
+ },
49
+ {
50
+ key: "rule-repo",
51
+ label: `Ignore rule ${rule} everywhere`,
52
+ title: "Add {source, rule} to .gavel.yaml",
53
+ req: { source: linter, rule, work_dir: workDir }
54
+ },
55
+ disableLinter(linter, workDir)
56
+ ];
57
+ }
58
+ const everything = {
59
+ key: "folder-everything",
60
+ label: "Ignore everything in this folder",
61
+ title: "Add {file} to .gavel.yaml",
62
+ req: { file: pattern, work_dir: workDir },
63
+ disabledWithoutWorkDir: true
64
+ };
65
+ if (linter) {
66
+ return [
67
+ everything,
68
+ {
69
+ key: "linter-folder",
70
+ label: `Ignore ${linter} in this folder`,
71
+ title: "Add {source, file} to .gavel.yaml",
72
+ req: { source: linter, file: pattern, work_dir: workDir },
73
+ disabledWithoutWorkDir: true
74
+ },
75
+ disableLinter(linter, workDir)
76
+ ];
77
+ }
78
+ return [
79
+ everything,
80
+ ...stats.flatMap((stat) => [
81
+ {
82
+ key: `linter-folder:${stat.linter}`,
83
+ label: `Ignore ${stat.linter} in this folder`,
84
+ title: "Add {source, file} to .gavel.yaml",
85
+ req: { source: stat.linter, file: pattern, work_dir: workDir },
86
+ variant: "subtle",
87
+ disabledWithoutWorkDir: true
88
+ },
89
+ { ...disableLinter(stat.linter, workDir), key: `linter-disable:${stat.linter}` }
90
+ ])
91
+ ];
92
+ }
93
+ function uniqueChildLinters(node) {
94
+ const names = (node.children ?? []).flatMap((c) => c.kind === "linter" && c.linterName ? [c.linterName] : []);
95
+ return Array.from(new Set(names));
96
+ }
97
+ function lintFileActions(node) {
98
+ const linter = node.linterName ?? "";
99
+ const targetPath = node.target_path || node.file || "";
100
+ const workDir = node.work_dir ?? "";
101
+ if (linter) {
102
+ return [
103
+ {
104
+ key: "file-everything-linter",
105
+ label: `Ignore all ${linter} in this file`,
106
+ title: "Add {source, file} to .gavel.yaml",
107
+ req: { source: linter, file: targetPath, work_dir: workDir }
108
+ },
109
+ disableLinter(linter, workDir)
110
+ ];
111
+ }
112
+ return [
113
+ {
114
+ key: "file-everything",
115
+ label: "Ignore everything in this file",
116
+ title: "Add {file} to .gavel.yaml",
117
+ req: { file: targetPath, work_dir: workDir }
118
+ },
119
+ ...uniqueChildLinters(node).flatMap((child) => [
120
+ {
121
+ key: `file-linter:${child}`,
122
+ label: `Ignore all ${child} in this file`,
123
+ title: "Add {source, file} to .gavel.yaml",
124
+ req: { source: child, file: targetPath, work_dir: workDir },
125
+ variant: "subtle"
126
+ },
127
+ { ...disableLinter(child, workDir), key: `linter-disable:${child}` }
128
+ ])
129
+ ];
130
+ }
131
+ function lintRuleActions(node) {
132
+ const linter = node.linterName ?? "";
133
+ const rule = node.ruleName ?? "";
134
+ const workDir = node.work_dir ?? "";
135
+ const targetPath = node.target_path || node.file || "";
136
+ return [
137
+ ...node.file ? [
138
+ {
139
+ key: "rule-file",
140
+ label: `Ignore ${rule} in this file`,
141
+ title: "Add {source, rule, file} to .gavel.yaml",
142
+ req: { source: linter, rule, file: targetPath, work_dir: workDir }
143
+ }
144
+ ] : [],
145
+ {
146
+ key: "rule-repo",
147
+ label: `Ignore rule ${rule} everywhere`,
148
+ title: "Add {source, rule} to .gavel.yaml",
149
+ req: { source: linter, rule, work_dir: workDir }
150
+ },
151
+ disableLinter(linter, workDir)
152
+ ];
153
+ }
154
+ function lintNodeActions(node, results) {
155
+ var _a;
156
+ switch (node.kind) {
157
+ case "linter":
158
+ return node.linterName ? [disableLinter(node.linterName, node.work_dir || ((_a = node.linter) == null ? void 0 : _a.work_dir) || "")] : [];
159
+ case "lint-folder":
160
+ return lintFolderActions(node, results);
161
+ case "lint-file":
162
+ return lintFileActions(node);
163
+ case "lint-rule":
164
+ case "lint-rule-group":
165
+ return lintRuleActions(node);
166
+ case "linter-error":
167
+ return [];
168
+ }
169
+ }
170
+ function violationIgnoreAction({
171
+ violation,
172
+ linter,
173
+ file,
174
+ workDir
175
+ }) {
176
+ var _a;
177
+ const rule = (_a = violation.rule) == null ? void 0 : _a.method;
178
+ if (!rule || !file) return null;
179
+ return {
180
+ key: "violation",
181
+ label: "Ignore this violation",
182
+ title: "Add {source, rule, file} to .gavel.yaml",
183
+ variant: "subtle",
184
+ req: { source: linter, rule, file, work_dir: workDir }
185
+ };
186
+ }
187
+ export {
188
+ collectFolderLintStats,
189
+ folderPattern,
190
+ lintFileActions,
191
+ lintFolderActions,
192
+ lintNodeActions,
193
+ violationIgnoreAction
194
+ };
195
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sources":["../../../src/data/lint/actions.ts"],"sourcesContent":["// The \"Ignore ...\" buttons a lint node offers. These are pure descriptions: the\n// component never writes configuration itself, it hands the chosen action to\n// the host's `onIgnore`, which maps `req` onto an entry in `.gavel.yaml`.\n\nimport { relPath } from \"./paths\";\nimport type { LintAction, LintNode, LinterResult, Violation } from \"./types\";\n\nconst DISABLE_TITLE = \"Add {source} to .gavel.yaml\";\n\nexport function folderPattern(path: string | undefined): string {\n if (!path) return \"**\";\n const trimmed = path.replace(/\\/+$/, \"\");\n return trimmed ? `${trimmed}/**` : \"**\";\n}\n\ntype FolderLintStat = { linter: string; count: number; workDir: string | undefined };\n\n/** Per-linter violation counts beneath a folder, most findings first. */\nexport function collectFolderLintStats(\n folder: LintNode,\n results: readonly LinterResult[],\n): FolderLintStat[] {\n const targetPath = folder.target_path ?? \"\";\n const counts = new Map<string, FolderLintStat>();\n for (const result of results) {\n if (folder.work_dir && result.work_dir && result.work_dir !== folder.work_dir) continue;\n for (const violation of result.violations ?? []) {\n const rawFile = relPath(violation.file, result.work_dir);\n if (!rawFile) continue;\n if (targetPath !== \"\" && rawFile !== targetPath && !rawFile.startsWith(`${targetPath}/`)) continue;\n const current = counts.get(result.linter);\n if (current) current.count += 1;\n else counts.set(result.linter, { linter: result.linter, count: 1, workDir: result.work_dir });\n }\n }\n return Array.from(counts.values()).sort((a, b) => b.count - a.count || a.linter.localeCompare(b.linter));\n}\n\nfunction disableLinter(linter: string, workDir: string): LintAction {\n return {\n key: \"linter-disable\",\n label: `Disable ${linter} entirely`,\n title: DISABLE_TITLE,\n req: { source: linter, work_dir: workDir },\n variant: \"subtle\",\n };\n}\n\n/**\n * Folder buttons, by what the folder node is scoped to:\n * linter + rule -> folder / everywhere / disable the linter\n * linter only -> whole folder / this linter in the folder / disable the linter\n * neither -> whole folder, then a pair per linter that reported beneath it\n */\nexport function lintFolderActions(node: LintNode, results: readonly LinterResult[]): LintAction[] {\n const pattern = folderPattern(node.target_path);\n const linter = node.linterName ?? \"\";\n const rule = node.ruleName ?? \"\";\n const stats = linter ? [] : collectFolderLintStats(node, results);\n const statWorkDirs = new Set(stats.flatMap((s) => (s.workDir ? [s.workDir] : [])));\n const workDir = node.work_dir || (statWorkDirs.size === 1 ? Array.from(statWorkDirs)[0]! : \"\");\n\n if (linter && rule) {\n return [\n {\n key: \"rule-folder\",\n label: `Ignore ${rule} in this folder`,\n title: \"Add {source, rule, file} to .gavel.yaml\",\n req: { source: linter, rule, file: pattern, work_dir: workDir },\n disabledWithoutWorkDir: true,\n },\n {\n key: \"rule-repo\",\n label: `Ignore rule ${rule} everywhere`,\n title: \"Add {source, rule} to .gavel.yaml\",\n req: { source: linter, rule, work_dir: workDir },\n },\n disableLinter(linter, workDir),\n ];\n }\n\n const everything: LintAction = {\n key: \"folder-everything\",\n label: \"Ignore everything in this folder\",\n title: \"Add {file} to .gavel.yaml\",\n req: { file: pattern, work_dir: workDir },\n disabledWithoutWorkDir: true,\n };\n\n if (linter) {\n return [\n everything,\n {\n key: \"linter-folder\",\n label: `Ignore ${linter} in this folder`,\n title: \"Add {source, file} to .gavel.yaml\",\n req: { source: linter, file: pattern, work_dir: workDir },\n disabledWithoutWorkDir: true,\n },\n disableLinter(linter, workDir),\n ];\n }\n\n return [\n everything,\n ...stats.flatMap((stat): LintAction[] => [\n {\n key: `linter-folder:${stat.linter}`,\n label: `Ignore ${stat.linter} in this folder`,\n title: \"Add {source, file} to .gavel.yaml\",\n req: { source: stat.linter, file: pattern, work_dir: workDir },\n variant: \"subtle\",\n disabledWithoutWorkDir: true,\n },\n { ...disableLinter(stat.linter, workDir), key: `linter-disable:${stat.linter}` },\n ]),\n ];\n}\n\nfunction uniqueChildLinters(node: LintNode): string[] {\n const names = (node.children ?? []).flatMap((c) => (c.kind === \"linter\" && c.linterName ? [c.linterName] : []));\n return Array.from(new Set(names));\n}\n\n/** File buttons: a single-linter file ignores that linter; a multi-linter file offers each. */\nexport function lintFileActions(node: LintNode): LintAction[] {\n const linter = node.linterName ?? \"\";\n const targetPath = node.target_path || node.file || \"\";\n const workDir = node.work_dir ?? \"\";\n\n if (linter) {\n return [\n {\n key: \"file-everything-linter\",\n label: `Ignore all ${linter} in this file`,\n title: \"Add {source, file} to .gavel.yaml\",\n req: { source: linter, file: targetPath, work_dir: workDir },\n },\n disableLinter(linter, workDir),\n ];\n }\n\n return [\n {\n key: \"file-everything\",\n label: \"Ignore everything in this file\",\n title: \"Add {file} to .gavel.yaml\",\n req: { file: targetPath, work_dir: workDir },\n },\n ...uniqueChildLinters(node).flatMap((child): LintAction[] => [\n {\n key: `file-linter:${child}`,\n label: `Ignore all ${child} in this file`,\n title: \"Add {source, file} to .gavel.yaml\",\n req: { source: child, file: targetPath, work_dir: workDir },\n variant: \"subtle\",\n },\n { ...disableLinter(child, workDir), key: `linter-disable:${child}` },\n ]),\n ];\n}\n\nfunction lintRuleActions(node: LintNode): LintAction[] {\n const linter = node.linterName ?? \"\";\n const rule = node.ruleName ?? \"\";\n const workDir = node.work_dir ?? \"\";\n const targetPath = node.target_path || node.file || \"\";\n return [\n ...(node.file\n ? [\n {\n key: \"rule-file\",\n label: `Ignore ${rule} in this file`,\n title: \"Add {source, rule, file} to .gavel.yaml\",\n req: { source: linter, rule, file: targetPath, work_dir: workDir },\n },\n ]\n : []),\n {\n key: \"rule-repo\",\n label: `Ignore rule ${rule} everywhere`,\n title: \"Add {source, rule} to .gavel.yaml\",\n req: { source: linter, rule, work_dir: workDir },\n },\n disableLinter(linter, workDir),\n ];\n}\n\n/** Every ignore button for the selected node. A linter-error leaf has nothing to ignore. */\nexport function lintNodeActions(node: LintNode, results: readonly LinterResult[]): LintAction[] {\n switch (node.kind) {\n case \"linter\":\n return node.linterName\n ? [disableLinter(node.linterName, node.work_dir || node.linter?.work_dir || \"\")]\n : [];\n case \"lint-folder\":\n return lintFolderActions(node, results);\n case \"lint-file\":\n return lintFileActions(node);\n case \"lint-rule\":\n case \"lint-rule-group\":\n return lintRuleActions(node);\n case \"linter-error\":\n return [];\n }\n}\n\n/** Ignore one finding's rule in its file; unavailable for a finding without a rule or file. */\nexport function violationIgnoreAction({\n violation,\n linter,\n file,\n workDir,\n}: {\n violation: Violation;\n linter: string;\n file: string;\n workDir: string;\n}): LintAction | null {\n const rule = violation.rule?.method;\n if (!rule || !file) return null;\n return {\n key: \"violation\",\n label: \"Ignore this violation\",\n title: \"Add {source, rule, file} to .gavel.yaml\",\n variant: \"subtle\",\n req: { source: linter, rule, file, work_dir: workDir },\n };\n}\n"],"names":[],"mappings":";AAOA,MAAM,gBAAgB;AAEf,SAAS,cAAc,MAAkC;AAC9D,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,UAAU,KAAK,QAAQ,QAAQ,EAAE;AACvC,SAAO,UAAU,GAAG,OAAO,QAAQ;AACrC;AAKO,SAAS,uBACd,QACA,SACkB;AAClB,QAAM,aAAa,OAAO,eAAe;AACzC,QAAM,6BAAa,IAAA;AACnB,aAAW,UAAU,SAAS;AAC5B,QAAI,OAAO,YAAY,OAAO,YAAY,OAAO,aAAa,OAAO,SAAU;AAC/E,eAAW,aAAa,OAAO,cAAc,CAAA,GAAI;AAC/C,YAAM,UAAU,QAAQ,UAAU,MAAM,OAAO,QAAQ;AACvD,UAAI,CAAC,QAAS;AACd,UAAI,eAAe,MAAM,YAAY,cAAc,CAAC,QAAQ,WAAW,GAAG,UAAU,GAAG,EAAG;AAC1F,YAAM,UAAU,OAAO,IAAI,OAAO,MAAM;AACxC,UAAI,iBAAiB,SAAS;AAAA,UACzB,QAAO,IAAI,OAAO,QAAQ,EAAE,QAAQ,OAAO,QAAQ,OAAO,GAAG,SAAS,OAAO,UAAU;AAAA,IAC9F;AAAA,EACF;AACA,SAAO,MAAM,KAAK,OAAO,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,cAAc,EAAE,MAAM,CAAC;AACzG;AAEA,SAAS,cAAc,QAAgB,SAA6B;AAClE,SAAO;AAAA,IACL,KAAK;AAAA,IACL,OAAO,WAAW,MAAM;AAAA,IACxB,OAAO;AAAA,IACP,KAAK,EAAE,QAAQ,QAAQ,UAAU,QAAA;AAAA,IACjC,SAAS;AAAA,EAAA;AAEb;AAQO,SAAS,kBAAkB,MAAgB,SAAgD;AAChG,QAAM,UAAU,cAAc,KAAK,WAAW;AAC9C,QAAM,SAAS,KAAK,cAAc;AAClC,QAAM,OAAO,KAAK,YAAY;AAC9B,QAAM,QAAQ,SAAS,CAAA,IAAK,uBAAuB,MAAM,OAAO;AAChE,QAAM,eAAe,IAAI,IAAI,MAAM,QAAQ,CAAC,MAAO,EAAE,UAAU,CAAC,EAAE,OAAO,IAAI,CAAA,CAAG,CAAC;AACjF,QAAM,UAAU,KAAK,aAAa,aAAa,SAAS,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC,IAAK;AAE3F,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,MACL;AAAA,QACE,KAAK;AAAA,QACL,OAAO,UAAU,IAAI;AAAA,QACrB,OAAO;AAAA,QACP,KAAK,EAAE,QAAQ,QAAQ,MAAM,MAAM,SAAS,UAAU,QAAA;AAAA,QACtD,wBAAwB;AAAA,MAAA;AAAA,MAE1B;AAAA,QACE,KAAK;AAAA,QACL,OAAO,eAAe,IAAI;AAAA,QAC1B,OAAO;AAAA,QACP,KAAK,EAAE,QAAQ,QAAQ,MAAM,UAAU,QAAA;AAAA,MAAQ;AAAA,MAEjD,cAAc,QAAQ,OAAO;AAAA,IAAA;AAAA,EAEjC;AAEA,QAAM,aAAyB;AAAA,IAC7B,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK,EAAE,MAAM,SAAS,UAAU,QAAA;AAAA,IAChC,wBAAwB;AAAA,EAAA;AAG1B,MAAI,QAAQ;AACV,WAAO;AAAA,MACL;AAAA,MACA;AAAA,QACE,KAAK;AAAA,QACL,OAAO,UAAU,MAAM;AAAA,QACvB,OAAO;AAAA,QACP,KAAK,EAAE,QAAQ,QAAQ,MAAM,SAAS,UAAU,QAAA;AAAA,QAChD,wBAAwB;AAAA,MAAA;AAAA,MAE1B,cAAc,QAAQ,OAAO;AAAA,IAAA;AAAA,EAEjC;AAEA,SAAO;AAAA,IACL;AAAA,IACA,GAAG,MAAM,QAAQ,CAAC,SAAuB;AAAA,MACvC;AAAA,QACE,KAAK,iBAAiB,KAAK,MAAM;AAAA,QACjC,OAAO,UAAU,KAAK,MAAM;AAAA,QAC5B,OAAO;AAAA,QACP,KAAK,EAAE,QAAQ,KAAK,QAAQ,MAAM,SAAS,UAAU,QAAA;AAAA,QACrD,SAAS;AAAA,QACT,wBAAwB;AAAA,MAAA;AAAA,MAE1B,EAAE,GAAG,cAAc,KAAK,QAAQ,OAAO,GAAG,KAAK,kBAAkB,KAAK,MAAM,GAAA;AAAA,IAAG,CAChF;AAAA,EAAA;AAEL;AAEA,SAAS,mBAAmB,MAA0B;AACpD,QAAM,SAAS,KAAK,YAAY,CAAA,GAAI,QAAQ,CAAC,MAAO,EAAE,SAAS,YAAY,EAAE,aAAa,CAAC,EAAE,UAAU,IAAI,EAAG;AAC9G,SAAO,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC;AAClC;AAGO,SAAS,gBAAgB,MAA8B;AAC5D,QAAM,SAAS,KAAK,cAAc;AAClC,QAAM,aAAa,KAAK,eAAe,KAAK,QAAQ;AACpD,QAAM,UAAU,KAAK,YAAY;AAEjC,MAAI,QAAQ;AACV,WAAO;AAAA,MACL;AAAA,QACE,KAAK;AAAA,QACL,OAAO,cAAc,MAAM;AAAA,QAC3B,OAAO;AAAA,QACP,KAAK,EAAE,QAAQ,QAAQ,MAAM,YAAY,UAAU,QAAA;AAAA,MAAQ;AAAA,MAE7D,cAAc,QAAQ,OAAO;AAAA,IAAA;AAAA,EAEjC;AAEA,SAAO;AAAA,IACL;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,KAAK,EAAE,MAAM,YAAY,UAAU,QAAA;AAAA,IAAQ;AAAA,IAE7C,GAAG,mBAAmB,IAAI,EAAE,QAAQ,CAAC,UAAwB;AAAA,MAC3D;AAAA,QACE,KAAK,eAAe,KAAK;AAAA,QACzB,OAAO,cAAc,KAAK;AAAA,QAC1B,OAAO;AAAA,QACP,KAAK,EAAE,QAAQ,OAAO,MAAM,YAAY,UAAU,QAAA;AAAA,QAClD,SAAS;AAAA,MAAA;AAAA,MAEX,EAAE,GAAG,cAAc,OAAO,OAAO,GAAG,KAAK,kBAAkB,KAAK,GAAA;AAAA,IAAG,CACpE;AAAA,EAAA;AAEL;AAEA,SAAS,gBAAgB,MAA8B;AACrD,QAAM,SAAS,KAAK,cAAc;AAClC,QAAM,OAAO,KAAK,YAAY;AAC9B,QAAM,UAAU,KAAK,YAAY;AACjC,QAAM,aAAa,KAAK,eAAe,KAAK,QAAQ;AACpD,SAAO;AAAA,IACL,GAAI,KAAK,OACL;AAAA,MACE;AAAA,QACE,KAAK;AAAA,QACL,OAAO,UAAU,IAAI;AAAA,QACrB,OAAO;AAAA,QACP,KAAK,EAAE,QAAQ,QAAQ,MAAM,MAAM,YAAY,UAAU,QAAA;AAAA,MAAQ;AAAA,IACnE,IAEF,CAAA;AAAA,IACJ;AAAA,MACE,KAAK;AAAA,MACL,OAAO,eAAe,IAAI;AAAA,MAC1B,OAAO;AAAA,MACP,KAAK,EAAE,QAAQ,QAAQ,MAAM,UAAU,QAAA;AAAA,IAAQ;AAAA,IAEjD,cAAc,QAAQ,OAAO;AAAA,EAAA;AAEjC;AAGO,SAAS,gBAAgB,MAAgB,SAAgD;;AAC9F,UAAQ,KAAK,MAAA;AAAA,IACX,KAAK;AACH,aAAO,KAAK,aACR,CAAC,cAAc,KAAK,YAAY,KAAK,cAAY,UAAK,WAAL,mBAAa,aAAY,EAAE,CAAC,IAC7E,CAAA;AAAA,IACN,KAAK;AACH,aAAO,kBAAkB,MAAM,OAAO;AAAA,IACxC,KAAK;AACH,aAAO,gBAAgB,IAAI;AAAA,IAC7B,KAAK;AAAA,IACL,KAAK;AACH,aAAO,gBAAgB,IAAI;AAAA,IAC7B,KAAK;AACH,aAAO,CAAA;AAAA,EAAC;AAEd;AAGO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKsB;;AACpB,QAAM,QAAO,eAAU,SAAV,mBAAgB;AAC7B,MAAI,CAAC,QAAQ,CAAC,KAAM,QAAO;AAC3B,SAAO;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,KAAK,EAAE,QAAQ,QAAQ,MAAM,MAAM,UAAU,QAAA;AAAA,EAAQ;AAEzD;"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const UiListTree = require("../../icons/components/UiListTree.cjs");
4
+ const UiFolder = require("../../icons/components/UiFolder.cjs");
5
+ const UiFileCode = require("../../icons/components/UiFileCode.cjs");
6
+ const UiCollapseAll = require("../../icons/components/UiCollapseAll.cjs");
7
+ const LINT_GROUPING_OPTIONS = [
8
+ { key: "linter-rule-file", label: "Linter · Rule · File", icon: UiListTree.UiListTree },
9
+ { key: "linter-file", label: "Linter · File", icon: UiFolder.UiFolder },
10
+ { key: "file-linter-rule", label: "File · Linter · Rule", icon: UiFileCode.UiFileCode },
11
+ { key: "summary", label: "Summary", icon: UiCollapseAll.UiCollapseAll }
12
+ ];
13
+ exports.LINT_GROUPING_OPTIONS = LINT_GROUPING_OPTIONS;
14
+ //# sourceMappingURL=grouping-options.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grouping-options.cjs","sources":["../../../src/data/lint/grouping-options.ts"],"sourcesContent":["import type { StaticIconComponent } from \"../Icon\";\nimport { UiCollapseAll, UiFileCode, UiFolder, UiListTree } from \"../../icons\";\nimport type { LintGrouping } from \"./types\";\n\n/** The groupings a host can offer, in display order, with the label and glyph the picker shows. */\nexport const LINT_GROUPING_OPTIONS: ReadonlyArray<{\n key: LintGrouping;\n label: string;\n icon: StaticIconComponent;\n}> = [\n { key: \"linter-rule-file\", label: \"Linter · Rule · File\", icon: UiListTree },\n { key: \"linter-file\", label: \"Linter · File\", icon: UiFolder },\n { key: \"file-linter-rule\", label: \"File · Linter · Rule\", icon: UiFileCode },\n { key: \"summary\", label: \"Summary\", icon: UiCollapseAll },\n];\n"],"names":["UiListTree","UiFolder","UiFileCode","UiCollapseAll"],"mappings":";;;;;;AAKO,MAAM,wBAIR;AAAA,EACH,EAAE,KAAK,oBAAoB,OAAO,wBAAwB,MAAMA,WAAAA,WAAA;AAAA,EAChE,EAAE,KAAK,eAAe,OAAO,iBAAiB,MAAMC,SAAAA,SAAA;AAAA,EACpD,EAAE,KAAK,oBAAoB,OAAO,wBAAwB,MAAMC,WAAAA,WAAA;AAAA,EAChE,EAAE,KAAK,WAAW,OAAO,WAAW,MAAMC,cAAAA,cAAA;AAC5C;;"}
@@ -0,0 +1,9 @@
1
+ import { StaticIconComponent } from '../Icon.js';
2
+ import { LintGrouping } from './types.js';
3
+ /** The groupings a host can offer, in display order, with the label and glyph the picker shows. */
4
+ export declare const LINT_GROUPING_OPTIONS: ReadonlyArray<{
5
+ key: LintGrouping;
6
+ label: string;
7
+ icon: StaticIconComponent;
8
+ }>;
9
+ //# sourceMappingURL=grouping-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grouping-options.d.ts","sourceRoot":"","sources":["../../../src/data/lint/grouping-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,mGAAmG;AACnG,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC;IAChD,GAAG,EAAE,YAAY,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAKA,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { UiListTree } from "../../icons/components/UiListTree.js";
2
+ import { UiFolder } from "../../icons/components/UiFolder.js";
3
+ import { UiFileCode } from "../../icons/components/UiFileCode.js";
4
+ import { UiCollapseAll } from "../../icons/components/UiCollapseAll.js";
5
+ const LINT_GROUPING_OPTIONS = [
6
+ { key: "linter-rule-file", label: "Linter · Rule · File", icon: UiListTree },
7
+ { key: "linter-file", label: "Linter · File", icon: UiFolder },
8
+ { key: "file-linter-rule", label: "File · Linter · Rule", icon: UiFileCode },
9
+ { key: "summary", label: "Summary", icon: UiCollapseAll }
10
+ ];
11
+ export {
12
+ LINT_GROUPING_OPTIONS
13
+ };
14
+ //# sourceMappingURL=grouping-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grouping-options.js","sources":["../../../src/data/lint/grouping-options.ts"],"sourcesContent":["import type { StaticIconComponent } from \"../Icon\";\nimport { UiCollapseAll, UiFileCode, UiFolder, UiListTree } from \"../../icons\";\nimport type { LintGrouping } from \"./types\";\n\n/** The groupings a host can offer, in display order, with the label and glyph the picker shows. */\nexport const LINT_GROUPING_OPTIONS: ReadonlyArray<{\n key: LintGrouping;\n label: string;\n icon: StaticIconComponent;\n}> = [\n { key: \"linter-rule-file\", label: \"Linter · Rule · File\", icon: UiListTree },\n { key: \"linter-file\", label: \"Linter · File\", icon: UiFolder },\n { key: \"file-linter-rule\", label: \"File · Linter · Rule\", icon: UiFileCode },\n { key: \"summary\", label: \"Summary\", icon: UiCollapseAll },\n];\n"],"names":[],"mappings":";;;;AAKO,MAAM,wBAIR;AAAA,EACH,EAAE,KAAK,oBAAoB,OAAO,wBAAwB,MAAM,WAAA;AAAA,EAChE,EAAE,KAAK,eAAe,OAAO,iBAAiB,MAAM,SAAA;AAAA,EACpD,EAAE,KAAK,oBAAoB,OAAO,wBAAwB,MAAM,WAAA;AAAA,EAChE,EAAE,KAAK,WAAW,OAAO,WAAW,MAAM,cAAA;AAC5C;"}