@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.
- package/dist/connections/ConnectionsPage.cjs +219 -0
- package/dist/connections/ConnectionsPage.cjs.map +1 -0
- package/dist/connections/ConnectionsPage.d.ts +23 -0
- package/dist/connections/ConnectionsPage.d.ts.map +1 -0
- package/dist/connections/ConnectionsPage.js +219 -0
- package/dist/connections/ConnectionsPage.js.map +1 -0
- package/dist/connections/connectionActionStatus.cjs +43 -0
- package/dist/connections/connectionActionStatus.cjs.map +1 -0
- package/dist/connections/connectionActionStatus.d.ts +5 -0
- package/dist/connections/connectionActionStatus.d.ts.map +1 -0
- package/dist/connections/connectionActionStatus.js +43 -0
- package/dist/connections/connectionActionStatus.js.map +1 -0
- package/dist/connections/connectionActionTypes.cjs +24 -0
- package/dist/connections/connectionActionTypes.cjs.map +1 -0
- package/dist/connections/connectionActionTypes.d.ts +36 -0
- package/dist/connections/connectionActionTypes.d.ts.map +1 -0
- package/dist/connections/connectionActionTypes.js +24 -0
- package/dist/connections/connectionActionTypes.js.map +1 -0
- package/dist/connections/connectionActions.cjs +11 -0
- package/dist/connections/connectionActions.cjs.map +1 -0
- package/dist/connections/connectionActions.d.ts +15 -0
- package/dist/connections/connectionActions.d.ts.map +1 -0
- package/dist/connections/connectionActions.js +11 -0
- package/dist/connections/connectionActions.js.map +1 -0
- package/dist/connections/connectionDashboard.cjs +185 -0
- package/dist/connections/connectionDashboard.cjs.map +1 -0
- package/dist/connections/connectionDashboard.d.ts +25 -0
- package/dist/connections/connectionDashboard.d.ts.map +1 -0
- package/dist/connections/connectionDashboard.js +185 -0
- package/dist/connections/connectionDashboard.js.map +1 -0
- package/dist/connections/connectionDashboardModel.cjs +43 -0
- package/dist/connections/connectionDashboardModel.cjs.map +1 -0
- package/dist/connections/connectionDashboardModel.d.ts +75 -0
- package/dist/connections/connectionDashboardModel.d.ts.map +1 -0
- package/dist/connections/connectionDashboardModel.js +43 -0
- package/dist/connections/connectionDashboardModel.js.map +1 -0
- package/dist/connections/connectionDashboardRenderer.cjs +21 -0
- package/dist/connections/connectionDashboardRenderer.cjs.map +1 -0
- package/dist/connections/connectionDashboardRenderer.d.ts +15 -0
- package/dist/connections/connectionDashboardRenderer.d.ts.map +1 -0
- package/dist/connections/connectionDashboardRenderer.js +21 -0
- package/dist/connections/connectionDashboardRenderer.js.map +1 -0
- package/dist/connections/connectionDashboardRow.cjs +169 -0
- package/dist/connections/connectionDashboardRow.cjs.map +1 -0
- package/dist/connections/connectionDashboardRow.d.ts +12 -0
- package/dist/connections/connectionDashboardRow.d.ts.map +1 -0
- package/dist/connections/connectionDashboardRow.js +169 -0
- package/dist/connections/connectionDashboardRow.js.map +1 -0
- package/dist/connections/connectionErrorView.cjs +8 -0
- package/dist/connections/connectionErrorView.cjs.map +1 -0
- package/dist/connections/connectionErrorView.d.ts +4 -0
- package/dist/connections/connectionErrorView.d.ts.map +1 -0
- package/dist/connections/connectionErrorView.js +8 -0
- package/dist/connections/connectionErrorView.js.map +1 -0
- package/dist/connections/connectionHealth.cjs +82 -0
- package/dist/connections/connectionHealth.cjs.map +1 -0
- package/dist/connections/connectionHealth.d.ts +33 -0
- package/dist/connections/connectionHealth.d.ts.map +1 -0
- package/dist/connections/connectionHealth.js +82 -0
- package/dist/connections/connectionHealth.js.map +1 -0
- package/dist/connections/connectionLogging.cjs +29 -0
- package/dist/connections/connectionLogging.cjs.map +1 -0
- package/dist/connections/connectionLogging.d.ts +11 -0
- package/dist/connections/connectionLogging.d.ts.map +1 -0
- package/dist/connections/connectionLogging.js +29 -0
- package/dist/connections/connectionLogging.js.map +1 -0
- package/dist/connections/connectionLoggingField.cjs +37 -0
- package/dist/connections/connectionLoggingField.cjs.map +1 -0
- package/dist/connections/connectionLoggingField.d.ts +12 -0
- package/dist/connections/connectionLoggingField.d.ts.map +1 -0
- package/dist/connections/connectionLoggingField.js +37 -0
- package/dist/connections/connectionLoggingField.js.map +1 -0
- package/dist/connections/connectionLoggingModel.cjs +16 -0
- package/dist/connections/connectionLoggingModel.cjs.map +1 -0
- package/dist/connections/connectionLoggingModel.d.ts +6 -0
- package/dist/connections/connectionLoggingModel.d.ts.map +1 -0
- package/dist/connections/connectionLoggingModel.js +16 -0
- package/dist/connections/connectionLoggingModel.js.map +1 -0
- package/dist/connections/connectionResolveView.cjs +24 -0
- package/dist/connections/connectionResolveView.cjs.map +1 -0
- package/dist/connections/connectionResolveView.d.ts +5 -0
- package/dist/connections/connectionResolveView.d.ts.map +1 -0
- package/dist/connections/connectionResolveView.js +24 -0
- package/dist/connections/connectionResolveView.js.map +1 -0
- package/dist/connections/connectionTestButton.cjs +58 -0
- package/dist/connections/connectionTestButton.cjs.map +1 -0
- package/dist/connections/connectionTestButton.d.ts +6 -0
- package/dist/connections/connectionTestButton.d.ts.map +1 -0
- package/dist/connections/connectionTestButton.js +58 -0
- package/dist/connections/connectionTestButton.js.map +1 -0
- package/dist/connections/connectionTestView.cjs +12 -0
- package/dist/connections/connectionTestView.cjs.map +1 -0
- package/dist/connections/connectionTestView.d.ts +5 -0
- package/dist/connections/connectionTestView.d.ts.map +1 -0
- package/dist/connections/connectionTestView.js +12 -0
- package/dist/connections/connectionTestView.js.map +1 -0
- package/dist/connections/connectionsPageModel.cjs +33 -0
- package/dist/connections/connectionsPageModel.cjs.map +1 -0
- package/dist/connections/connectionsPageModel.d.ts +24 -0
- package/dist/connections/connectionsPageModel.d.ts.map +1 -0
- package/dist/connections/connectionsPageModel.js +33 -0
- package/dist/connections/connectionsPageModel.js.map +1 -0
- package/dist/connections/iconProvider.cjs +20 -0
- package/dist/connections/iconProvider.cjs.map +1 -0
- package/dist/connections/iconProvider.d.ts +7 -0
- package/dist/connections/iconProvider.d.ts.map +1 -0
- package/dist/connections/iconProvider.js +20 -0
- package/dist/connections/iconProvider.js.map +1 -0
- package/dist/connections.cjs +45 -0
- package/dist/connections.cjs.map +1 -0
- package/dist/connections.d.ts +34 -0
- package/dist/connections.d.ts.map +1 -0
- package/dist/connections.js +45 -0
- package/dist/connections.js.map +1 -0
- package/dist/data/DataTable.cjs +18 -8
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +4 -0
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.js +18 -8
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/TaskManager.cjs +183 -159
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts +3 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +185 -161
- package/dist/data/TaskManager.js.map +1 -1
- package/dist/data/TaskManagerButton.cjs +1 -0
- package/dist/data/TaskManagerButton.cjs.map +1 -1
- package/dist/data/TaskManagerButton.js +1 -0
- package/dist/data/TaskManagerButton.js.map +1 -1
- package/dist/data/TaskProgress.cjs +13 -7
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts +3 -1
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +13 -7
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +52 -295
- package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.js +47 -290
- package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
- package/dist/data/diagnostics/MetricTile.cjs +44 -0
- package/dist/data/diagnostics/MetricTile.cjs.map +1 -0
- package/dist/data/diagnostics/MetricTile.d.ts +13 -0
- package/dist/data/diagnostics/MetricTile.d.ts.map +1 -0
- package/dist/data/diagnostics/MetricTile.js +44 -0
- package/dist/data/diagnostics/MetricTile.js.map +1 -0
- package/dist/data/diagnostics/StackDumpView.cjs +227 -0
- package/dist/data/diagnostics/StackDumpView.cjs.map +1 -0
- package/dist/data/diagnostics/StackDumpView.d.ts +53 -0
- package/dist/data/diagnostics/StackDumpView.d.ts.map +1 -0
- package/dist/data/diagnostics/StackDumpView.js +227 -0
- package/dist/data/diagnostics/StackDumpView.js.map +1 -0
- package/dist/data/diagnostics/fixtures.d.ts +1 -0
- package/dist/data/diagnostics/fixtures.d.ts.map +1 -1
- package/dist/data/diagnostics/metric-tone.cjs +18 -0
- package/dist/data/diagnostics/metric-tone.cjs.map +1 -0
- package/dist/data/diagnostics/metric-tone.d.ts +6 -0
- package/dist/data/diagnostics/metric-tone.d.ts.map +1 -0
- package/dist/data/diagnostics/metric-tone.js +18 -0
- package/dist/data/diagnostics/metric-tone.js.map +1 -0
- package/dist/data/diagnostics/stacktrace.cjs +44 -0
- package/dist/data/diagnostics/stacktrace.cjs.map +1 -1
- package/dist/data/diagnostics/stacktrace.d.ts +7 -0
- package/dist/data/diagnostics/stacktrace.d.ts.map +1 -1
- package/dist/data/diagnostics/stacktrace.js +44 -0
- package/dist/data/diagnostics/stacktrace.js.map +1 -1
- package/dist/data/diagnostics/types.d.ts +2 -8
- package/dist/data/diagnostics/types.d.ts.map +1 -1
- package/dist/data/lint/LintDetail.cjs +339 -0
- package/dist/data/lint/LintDetail.cjs.map +1 -0
- package/dist/data/lint/LintDetail.d.ts +17 -0
- package/dist/data/lint/LintDetail.d.ts.map +1 -0
- package/dist/data/lint/LintDetail.js +339 -0
- package/dist/data/lint/LintDetail.js.map +1 -0
- package/dist/data/lint/LintFilterBar.cjs +103 -0
- package/dist/data/lint/LintFilterBar.cjs.map +1 -0
- package/dist/data/lint/LintFilterBar.d.ts +16 -0
- package/dist/data/lint/LintFilterBar.d.ts.map +1 -0
- package/dist/data/lint/LintFilterBar.js +103 -0
- package/dist/data/lint/LintFilterBar.js.map +1 -0
- package/dist/data/lint/LintResults.cjs +144 -0
- package/dist/data/lint/LintResults.cjs.map +1 -0
- package/dist/data/lint/LintResults.d.ts +39 -0
- package/dist/data/lint/LintResults.d.ts.map +1 -0
- package/dist/data/lint/LintResults.fixtures.d.ts +10 -0
- package/dist/data/lint/LintResults.fixtures.d.ts.map +1 -0
- package/dist/data/lint/LintResults.js +144 -0
- package/dist/data/lint/LintResults.js.map +1 -0
- package/dist/data/lint/LintTreeNode.cjs +66 -0
- package/dist/data/lint/LintTreeNode.cjs.map +1 -0
- package/dist/data/lint/LintTreeNode.d.ts +7 -0
- package/dist/data/lint/LintTreeNode.d.ts.map +1 -0
- package/dist/data/lint/LintTreeNode.js +66 -0
- package/dist/data/lint/LintTreeNode.js.map +1 -0
- package/dist/data/lint/actions.cjs +195 -0
- package/dist/data/lint/actions.cjs.map +1 -0
- package/dist/data/lint/actions.d.ts +29 -0
- package/dist/data/lint/actions.d.ts.map +1 -0
- package/dist/data/lint/actions.js +195 -0
- package/dist/data/lint/actions.js.map +1 -0
- package/dist/data/lint/grouping-options.cjs +14 -0
- package/dist/data/lint/grouping-options.cjs.map +1 -0
- package/dist/data/lint/grouping-options.d.ts +9 -0
- package/dist/data/lint/grouping-options.d.ts.map +1 -0
- package/dist/data/lint/grouping-options.js +14 -0
- package/dist/data/lint/grouping-options.js.map +1 -0
- package/dist/data/lint/grouping.cjs +450 -0
- package/dist/data/lint/grouping.cjs.map +1 -0
- package/dist/data/lint/grouping.d.ts +10 -0
- package/dist/data/lint/grouping.d.ts.map +1 -0
- package/dist/data/lint/grouping.js +450 -0
- package/dist/data/lint/grouping.js.map +1 -0
- package/dist/data/lint/index.d.ts +10 -0
- package/dist/data/lint/index.d.ts.map +1 -0
- package/dist/data/lint/paths.cjs +35 -0
- package/dist/data/lint/paths.cjs.map +1 -0
- package/dist/data/lint/paths.d.ts +13 -0
- package/dist/data/lint/paths.d.ts.map +1 -0
- package/dist/data/lint/paths.js +35 -0
- package/dist/data/lint/paths.js.map +1 -0
- package/dist/data/lint/stats.cjs +76 -0
- package/dist/data/lint/stats.cjs.map +1 -0
- package/dist/data/lint/stats.d.ts +19 -0
- package/dist/data/lint/stats.d.ts.map +1 -0
- package/dist/data/lint/stats.js +76 -0
- package/dist/data/lint/stats.js.map +1 -0
- package/dist/data/lint/types.cjs +16 -0
- package/dist/data/lint/types.cjs.map +1 -0
- package/dist/data/lint/types.d.ts +93 -0
- package/dist/data/lint/types.d.ts.map +1 -0
- package/dist/data/lint/types.js +16 -0
- package/dist/data/lint/types.js.map +1 -0
- package/dist/data/test-runner/TestAttemptDetail.cjs +113 -0
- package/dist/data/test-runner/TestAttemptDetail.cjs.map +1 -0
- package/dist/data/test-runner/TestAttemptDetail.d.ts +19 -0
- package/dist/data/test-runner/TestAttemptDetail.d.ts.map +1 -0
- package/dist/data/test-runner/TestAttemptDetail.js +113 -0
- package/dist/data/test-runner/TestAttemptDetail.js.map +1 -0
- package/dist/data/test-runner/TestAttempts.cjs +36 -0
- package/dist/data/test-runner/TestAttempts.cjs.map +1 -0
- package/dist/data/test-runner/TestAttempts.d.ts +5 -0
- package/dist/data/test-runner/TestAttempts.d.ts.map +1 -0
- package/dist/data/test-runner/TestAttempts.js +36 -0
- package/dist/data/test-runner/TestAttempts.js.map +1 -0
- package/dist/data/test-runner/TestDetailPanel.cjs +13 -3
- package/dist/data/test-runner/TestDetailPanel.cjs.map +1 -1
- package/dist/data/test-runner/TestDetailPanel.d.ts.map +1 -1
- package/dist/data/test-runner/TestDetailPanel.js +14 -4
- package/dist/data/test-runner/TestDetailPanel.js.map +1 -1
- package/dist/data/test-runner/TestFailureDetail.cjs +9 -29
- package/dist/data/test-runner/TestFailureDetail.cjs.map +1 -1
- package/dist/data/test-runner/TestFailureDetail.d.ts +6 -6
- package/dist/data/test-runner/TestFailureDetail.d.ts.map +1 -1
- package/dist/data/test-runner/TestFailureDetail.js +9 -29
- package/dist/data/test-runner/TestFailureDetail.js.map +1 -1
- package/dist/data/test-runner/TestRunSummary.cjs +33 -0
- package/dist/data/test-runner/TestRunSummary.cjs.map +1 -1
- package/dist/data/test-runner/TestRunSummary.d.ts.map +1 -1
- package/dist/data/test-runner/TestRunSummary.js +34 -1
- package/dist/data/test-runner/TestRunSummary.js.map +1 -1
- package/dist/data/test-runner/TestRunner.cjs +3 -0
- package/dist/data/test-runner/TestRunner.cjs.map +1 -1
- package/dist/data/test-runner/TestRunner.d.ts +8 -1
- package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
- package/dist/data/test-runner/TestRunner.js +3 -0
- package/dist/data/test-runner/TestRunner.js.map +1 -1
- package/dist/data/test-runner/TestTreeNode.cjs +3 -1
- package/dist/data/test-runner/TestTreeNode.cjs.map +1 -1
- package/dist/data/test-runner/TestTreeNode.d.ts.map +1 -1
- package/dist/data/test-runner/TestTreeNode.js +3 -1
- package/dist/data/test-runner/TestTreeNode.js.map +1 -1
- package/dist/data/test-runner/adapter.cjs +9 -1
- package/dist/data/test-runner/adapter.cjs.map +1 -1
- package/dist/data/test-runner/adapter.d.ts +5 -0
- package/dist/data/test-runner/adapter.d.ts.map +1 -1
- package/dist/data/test-runner/adapter.js +9 -1
- package/dist/data/test-runner/adapter.js.map +1 -1
- package/dist/data/test-runner/attempts.cjs +62 -0
- package/dist/data/test-runner/attempts.cjs.map +1 -0
- package/dist/data/test-runner/attempts.d.ts +13 -0
- package/dist/data/test-runner/attempts.d.ts.map +1 -0
- package/dist/data/test-runner/attempts.js +62 -0
- package/dist/data/test-runner/attempts.js.map +1 -0
- package/dist/data/test-runner/context.cjs.map +1 -1
- package/dist/data/test-runner/context.d.ts +6 -0
- package/dist/data/test-runner/context.d.ts.map +1 -1
- package/dist/data/test-runner/context.js.map +1 -1
- package/dist/data/test-runner/index.d.ts +5 -1
- package/dist/data/test-runner/index.d.ts.map +1 -1
- package/dist/data/test-runner/marks.cjs +2 -0
- package/dist/data/test-runner/marks.cjs.map +1 -1
- package/dist/data/test-runner/marks.d.ts.map +1 -1
- package/dist/data/test-runner/marks.js +2 -0
- package/dist/data/test-runner/marks.js.map +1 -1
- package/dist/data/test-runner/process-metrics.cjs +15 -0
- package/dist/data/test-runner/process-metrics.cjs.map +1 -0
- package/dist/data/test-runner/process-metrics.d.ts +22 -0
- package/dist/data/test-runner/process-metrics.d.ts.map +1 -0
- package/dist/data/test-runner/process-metrics.js +15 -0
- package/dist/data/test-runner/process-metrics.js.map +1 -0
- package/dist/data/test-runner/status.cjs +11 -3
- package/dist/data/test-runner/status.cjs.map +1 -1
- package/dist/data/test-runner/status.d.ts +3 -1
- package/dist/data/test-runner/status.d.ts.map +1 -1
- package/dist/data/test-runner/status.js +11 -3
- package/dist/data/test-runner/status.js.map +1 -1
- package/dist/data/test-runner/types.d.ts +14 -0
- package/dist/data/test-runner/types.d.ts.map +1 -1
- package/dist/data/traces/GoProfileView.cjs +176 -0
- package/dist/data/traces/GoProfileView.cjs.map +1 -0
- package/dist/data/traces/GoProfileView.d.ts +30 -0
- package/dist/data/traces/GoProfileView.d.ts.map +1 -0
- package/dist/data/traces/GoProfileView.js +176 -0
- package/dist/data/traces/GoProfileView.js.map +1 -0
- package/dist/data/traces/ProcessFacetTable.cjs +79 -0
- package/dist/data/traces/ProcessFacetTable.cjs.map +1 -0
- package/dist/data/traces/ProcessFacetTable.d.ts +21 -0
- package/dist/data/traces/ProcessFacetTable.d.ts.map +1 -0
- package/dist/data/traces/ProcessFacetTable.js +79 -0
- package/dist/data/traces/ProcessFacetTable.js.map +1 -0
- package/dist/data/traces/ProcessRecordViews.cjs +41 -0
- package/dist/data/traces/ProcessRecordViews.cjs.map +1 -0
- package/dist/data/traces/ProcessRecordViews.d.ts +16 -0
- package/dist/data/traces/ProcessRecordViews.d.ts.map +1 -0
- package/dist/data/traces/ProcessRecordViews.js +41 -0
- package/dist/data/traces/ProcessRecordViews.js.map +1 -0
- package/dist/data/traces/ProcessTraceDetail.cjs +316 -0
- package/dist/data/traces/ProcessTraceDetail.cjs.map +1 -0
- package/dist/data/traces/ProcessTraceDetail.d.ts +39 -0
- package/dist/data/traces/ProcessTraceDetail.d.ts.map +1 -0
- package/dist/data/traces/ProcessTraceDetail.js +316 -0
- package/dist/data/traces/ProcessTraceDetail.js.map +1 -0
- package/dist/data/traces/ProcessTraceTree.cjs +135 -0
- package/dist/data/traces/ProcessTraceTree.cjs.map +1 -0
- package/dist/data/traces/ProcessTraceTree.d.ts +41 -0
- package/dist/data/traces/ProcessTraceTree.d.ts.map +1 -0
- package/dist/data/traces/ProcessTraceTree.js +135 -0
- package/dist/data/traces/ProcessTraceTree.js.map +1 -0
- package/dist/data/traces/Sparkline.cjs +45 -0
- package/dist/data/traces/Sparkline.cjs.map +1 -0
- package/dist/data/traces/Sparkline.d.ts +29 -0
- package/dist/data/traces/Sparkline.d.ts.map +1 -0
- package/dist/data/traces/Sparkline.js +45 -0
- package/dist/data/traces/Sparkline.js.map +1 -0
- package/dist/data/traces/SqlTraceTable.cjs +104 -0
- package/dist/data/traces/SqlTraceTable.cjs.map +1 -0
- package/dist/data/traces/SqlTraceTable.d.ts +19 -0
- package/dist/data/traces/SqlTraceTable.d.ts.map +1 -0
- package/dist/data/traces/SqlTraceTable.js +104 -0
- package/dist/data/traces/SqlTraceTable.js.map +1 -0
- package/dist/data/traces/TerminalCastPlayer.cjs +162 -0
- package/dist/data/traces/TerminalCastPlayer.cjs.map +1 -0
- package/dist/data/traces/TerminalCastPlayer.js +162 -0
- package/dist/data/traces/TerminalCastPlayer.js.map +1 -0
- package/dist/data/traces/TraceHarView.cjs +15 -0
- package/dist/data/traces/TraceHarView.cjs.map +1 -0
- package/dist/data/traces/TraceHarView.js +15 -0
- package/dist/data/traces/TraceHarView.js.map +1 -0
- package/dist/data/traces/TraceView.cjs +63 -0
- package/dist/data/traces/TraceView.cjs.map +1 -0
- package/dist/data/traces/TraceView.d.ts +20 -0
- package/dist/data/traces/TraceView.d.ts.map +1 -0
- package/dist/data/traces/TraceView.js +63 -0
- package/dist/data/traces/TraceView.js.map +1 -0
- package/dist/data/traces/TraceWindowList.cjs +117 -0
- package/dist/data/traces/TraceWindowList.cjs.map +1 -0
- package/dist/data/traces/TraceWindowList.d.ts +48 -0
- package/dist/data/traces/TraceWindowList.d.ts.map +1 -0
- package/dist/data/traces/TraceWindowList.js +117 -0
- package/dist/data/traces/TraceWindowList.js.map +1 -0
- package/dist/data/traces/cast.cjs +81 -0
- package/dist/data/traces/cast.cjs.map +1 -0
- package/dist/data/traces/cast.js +81 -0
- package/dist/data/traces/cast.js.map +1 -0
- package/dist/data/traces/fixtures.d.ts +25 -1
- package/dist/data/traces/fixtures.d.ts.map +1 -1
- package/dist/data/traces/har-adapter.cjs +83 -0
- package/dist/data/traces/har-adapter.cjs.map +1 -0
- package/dist/data/traces/har-adapter.js +83 -0
- package/dist/data/traces/har-adapter.js.map +1 -0
- package/dist/data/traces/index.d.ts +19 -0
- package/dist/data/traces/index.d.ts.map +1 -0
- package/dist/data/traces/process-facets.cjs +48 -0
- package/dist/data/traces/process-facets.cjs.map +1 -0
- package/dist/data/traces/process-facets.d.ts +38 -0
- package/dist/data/traces/process-facets.d.ts.map +1 -0
- package/dist/data/traces/process-facets.js +48 -0
- package/dist/data/traces/process-facets.js.map +1 -0
- package/dist/data/traces/process-tree.cjs +85 -0
- package/dist/data/traces/process-tree.cjs.map +1 -0
- package/dist/data/traces/process-tree.d.ts +40 -0
- package/dist/data/traces/process-tree.d.ts.map +1 -0
- package/dist/data/traces/process-tree.js +85 -0
- package/dist/data/traces/process-tree.js.map +1 -0
- package/dist/data/traces/profile-aggregate.cjs +78 -0
- package/dist/data/traces/profile-aggregate.cjs.map +1 -0
- package/dist/data/traces/profile-aggregate.d.ts +41 -0
- package/dist/data/traces/profile-aggregate.d.ts.map +1 -0
- package/dist/data/traces/profile-aggregate.js +78 -0
- package/dist/data/traces/profile-aggregate.js.map +1 -0
- package/dist/data/traces/sql-trace.cjs +39 -0
- package/dist/data/traces/sql-trace.cjs.map +1 -0
- package/dist/data/traces/sql-trace.d.ts +31 -0
- package/dist/data/traces/sql-trace.d.ts.map +1 -0
- package/dist/data/traces/sql-trace.js +39 -0
- package/dist/data/traces/sql-trace.js.map +1 -0
- package/dist/data/traces/stack-checkpoints.cjs +22 -0
- package/dist/data/traces/stack-checkpoints.cjs.map +1 -0
- package/dist/data/traces/stack-checkpoints.d.ts +18 -0
- package/dist/data/traces/stack-checkpoints.d.ts.map +1 -0
- package/dist/data/traces/stack-checkpoints.js +22 -0
- package/dist/data/traces/stack-checkpoints.js.map +1 -0
- package/dist/data/traces/terminal-screen.cjs +270 -0
- package/dist/data/traces/terminal-screen.cjs.map +1 -0
- package/dist/data/traces/terminal-screen.js +270 -0
- package/dist/data/traces/terminal-screen.js.map +1 -0
- package/dist/data/traces/terminal-timeline.cjs +48 -0
- package/dist/data/traces/terminal-timeline.cjs.map +1 -0
- package/dist/data/traces/terminal-timeline.js +48 -0
- package/dist/data/traces/terminal-timeline.js.map +1 -0
- package/dist/data/traces/types.d.ts +121 -8
- package/dist/data/traces/types.d.ts.map +1 -1
- package/dist/data/verification/adapters.cjs +1 -0
- package/dist/data/verification/adapters.cjs.map +1 -1
- package/dist/data/verification/adapters.d.ts.map +1 -1
- package/dist/data/verification/adapters.js +1 -0
- package/dist/data/verification/adapters.js.map +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.cjs.map +1 -1
- package/dist/data/version-info.js +3 -3
- package/dist/data/version-info.js.map +1 -1
- package/dist/data.cjs +105 -5
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +5 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +101 -1
- package/dist/data.js.map +1 -1
- package/dist/index.cjs +107 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +101 -1
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- 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":"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"}
|
|
@@ -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;"}
|