driftdetect-vscode 0.9.4 → 0.9.5
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/.turbo/turbo-build.log +4 -0
- package/.turbo/turbo-test.log +138 -0
- package/LICENSE +121 -0
- package/dist/activation/activation-controller.d.ts +61 -0
- package/dist/activation/activation-controller.d.ts.map +1 -0
- package/dist/activation/activation-controller.js +235 -0
- package/dist/activation/activation-controller.js.map +1 -0
- package/dist/activation/activation-phases.d.ts +28 -0
- package/dist/activation/activation-phases.d.ts.map +1 -0
- package/dist/activation/activation-phases.js +80 -0
- package/dist/activation/activation-phases.js.map +1 -0
- package/dist/activation/index.d.ts +6 -0
- package/dist/activation/index.d.ts.map +1 -0
- package/dist/activation/index.js +6 -0
- package/dist/activation/index.js.map +1 -0
- package/dist/client/connection-config.d.ts +50 -0
- package/dist/client/connection-config.d.ts.map +1 -0
- package/dist/client/connection-config.js +56 -0
- package/dist/client/connection-config.js.map +1 -0
- package/dist/client/connection-manager.d.ts +70 -0
- package/dist/client/connection-manager.d.ts.map +1 -0
- package/dist/client/connection-manager.js +214 -0
- package/dist/client/connection-manager.js.map +1 -0
- package/dist/client/index.d.ts +8 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +8 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/language-client-factory.d.ts +29 -0
- package/dist/client/language-client-factory.d.ts.map +1 -0
- package/dist/client/language-client-factory.js +76 -0
- package/dist/client/language-client-factory.js.map +1 -0
- package/dist/client/request-middleware.d.ts +38 -0
- package/dist/client/request-middleware.d.ts.map +1 -0
- package/dist/client/request-middleware.js +85 -0
- package/dist/client/request-middleware.js.map +1 -0
- package/dist/commands/command-definitions.d.ts +53 -0
- package/dist/commands/command-definitions.d.ts.map +1 -0
- package/dist/commands/command-definitions.js +212 -0
- package/dist/commands/command-definitions.js.map +1 -0
- package/dist/commands/command-router.d.ts +80 -0
- package/dist/commands/command-router.d.ts.map +1 -0
- package/dist/commands/command-router.js +127 -0
- package/dist/commands/command-router.js.map +1 -0
- package/dist/commands/handlers/connection-handlers.d.ts +14 -0
- package/dist/commands/handlers/connection-handlers.d.ts.map +1 -0
- package/dist/commands/handlers/connection-handlers.js +57 -0
- package/dist/commands/handlers/connection-handlers.js.map +1 -0
- package/dist/commands/handlers/constants-handlers.d.ts +11 -0
- package/dist/commands/handlers/constants-handlers.d.ts.map +1 -0
- package/dist/commands/handlers/constants-handlers.js +84 -0
- package/dist/commands/handlers/constants-handlers.js.map +1 -0
- package/dist/commands/handlers/index.d.ts +10 -0
- package/dist/commands/handlers/index.d.ts.map +1 -0
- package/dist/commands/handlers/index.js +10 -0
- package/dist/commands/handlers/index.js.map +1 -0
- package/dist/commands/handlers/pattern-handlers.d.ts +13 -0
- package/dist/commands/handlers/pattern-handlers.d.ts.map +1 -0
- package/dist/commands/handlers/pattern-handlers.js +127 -0
- package/dist/commands/handlers/pattern-handlers.js.map +1 -0
- package/dist/commands/handlers/scan-handlers.d.ts +15 -0
- package/dist/commands/handlers/scan-handlers.d.ts.map +1 -0
- package/dist/commands/handlers/scan-handlers.js +74 -0
- package/dist/commands/handlers/scan-handlers.js.map +1 -0
- package/dist/commands/handlers/ui-handlers.d.ts +12 -0
- package/dist/commands/handlers/ui-handlers.d.ts.map +1 -0
- package/dist/commands/handlers/ui-handlers.js +74 -0
- package/dist/commands/handlers/ui-handlers.js.map +1 -0
- package/dist/commands/handlers/violation-handlers.d.ts +13 -0
- package/dist/commands/handlers/violation-handlers.d.ts.map +1 -0
- package/dist/commands/handlers/violation-handlers.js +76 -0
- package/dist/commands/handlers/violation-handlers.js.map +1 -0
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +7 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/middleware/connection-check-middleware.d.ts +12 -0
- package/dist/commands/middleware/connection-check-middleware.d.ts.map +1 -0
- package/dist/commands/middleware/connection-check-middleware.js +34 -0
- package/dist/commands/middleware/connection-check-middleware.js.map +1 -0
- package/dist/commands/middleware/index.d.ts +7 -0
- package/dist/commands/middleware/index.d.ts.map +1 -0
- package/dist/commands/middleware/index.js +7 -0
- package/dist/commands/middleware/index.js.map +1 -0
- package/dist/commands/middleware/logging-middleware.d.ts +12 -0
- package/dist/commands/middleware/logging-middleware.d.ts.map +1 -0
- package/dist/commands/middleware/logging-middleware.js +24 -0
- package/dist/commands/middleware/logging-middleware.js.map +1 -0
- package/dist/commands/middleware/telemetry-middleware.d.ts +22 -0
- package/dist/commands/middleware/telemetry-middleware.d.ts.map +1 -0
- package/dist/commands/middleware/telemetry-middleware.js +30 -0
- package/dist/commands/middleware/telemetry-middleware.js.map +1 -0
- package/dist/config/config-manager.d.ts +53 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +178 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/defaults.d.ts +11 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +43 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/validator.d.ts +22 -0
- package/dist/config/validator.d.ts.map +1 -0
- package/dist/config/validator.js +93 -0
- package/dist/config/validator.js.map +1 -0
- package/dist/extension.d.ts +32 -0
- package/dist/extension.d.ts.map +1 -0
- package/dist/extension.js +50 -0
- package/dist/extension.js.map +1 -0
- package/dist/infrastructure/disposable-manager.d.ts +43 -0
- package/dist/infrastructure/disposable-manager.d.ts.map +1 -0
- package/dist/infrastructure/disposable-manager.js +75 -0
- package/dist/infrastructure/disposable-manager.js.map +1 -0
- package/dist/infrastructure/event-bus.d.ts +85 -0
- package/dist/infrastructure/event-bus.d.ts.map +1 -0
- package/dist/infrastructure/event-bus.js +74 -0
- package/dist/infrastructure/event-bus.js.map +1 -0
- package/dist/infrastructure/index.d.ts +10 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +10 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/infrastructure/logger.d.ts +37 -0
- package/dist/infrastructure/logger.d.ts.map +1 -0
- package/dist/infrastructure/logger.js +86 -0
- package/dist/infrastructure/logger.js.map +1 -0
- package/dist/infrastructure/service-container.d.ts +68 -0
- package/dist/infrastructure/service-container.d.ts.map +1 -0
- package/dist/infrastructure/service-container.js +94 -0
- package/dist/infrastructure/service-container.js.map +1 -0
- package/dist/state/index.d.ts +7 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +7 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/initial-state.d.ts +11 -0
- package/dist/state/initial-state.d.ts.map +1 -0
- package/dist/state/initial-state.js +58 -0
- package/dist/state/initial-state.js.map +1 -0
- package/dist/state/selectors.d.ts +41 -0
- package/dist/state/selectors.d.ts.map +1 -0
- package/dist/state/selectors.js +61 -0
- package/dist/state/selectors.js.map +1 -0
- package/dist/state/state-manager.d.ts +54 -0
- package/dist/state/state-manager.d.ts.map +1 -0
- package/dist/state/state-manager.js +166 -0
- package/dist/state/state-manager.js.map +1 -0
- package/dist/types/config-types.d.ts +69 -0
- package/dist/types/config-types.d.ts.map +1 -0
- package/dist/types/config-types.js +5 -0
- package/dist/types/config-types.js.map +1 -0
- package/dist/types/extension-types.d.ts +45 -0
- package/dist/types/extension-types.d.ts.map +1 -0
- package/dist/types/extension-types.js +5 -0
- package/dist/types/extension-types.js.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/lsp-types.d.ts +70 -0
- package/dist/types/lsp-types.d.ts.map +1 -0
- package/dist/types/lsp-types.js +5 -0
- package/dist/types/lsp-types.js.map +1 -0
- package/dist/types/state-types.d.ts +82 -0
- package/dist/types/state-types.d.ts.map +1 -0
- package/dist/types/state-types.js +5 -0
- package/dist/types/state-types.js.map +1 -0
- package/dist/types/vscode-types.d.ts +36 -0
- package/dist/types/vscode-types.d.ts.map +1 -0
- package/dist/types/vscode-types.js +7 -0
- package/dist/types/vscode-types.js.map +1 -0
- package/dist/ui/decorations/decoration-controller.d.ts +45 -0
- package/dist/ui/decorations/decoration-controller.d.ts.map +1 -0
- package/dist/ui/decorations/decoration-controller.js +198 -0
- package/dist/ui/decorations/decoration-controller.js.map +1 -0
- package/dist/ui/decorations/decoration-types.d.ts +28 -0
- package/dist/ui/decorations/decoration-types.d.ts.map +1 -0
- package/dist/ui/decorations/decoration-types.js +98 -0
- package/dist/ui/decorations/decoration-types.js.map +1 -0
- package/dist/ui/decorations/index.d.ts +7 -0
- package/dist/ui/decorations/index.d.ts.map +1 -0
- package/dist/ui/decorations/index.js +6 -0
- package/dist/ui/decorations/index.js.map +1 -0
- package/dist/ui/index.d.ts +7 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +7 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/notifications/index.d.ts +5 -0
- package/dist/ui/notifications/index.d.ts.map +1 -0
- package/dist/ui/notifications/index.js +5 -0
- package/dist/ui/notifications/index.js.map +1 -0
- package/dist/ui/notifications/notification-service.d.ts +66 -0
- package/dist/ui/notifications/notification-service.d.ts.map +1 -0
- package/dist/ui/notifications/notification-service.js +103 -0
- package/dist/ui/notifications/notification-service.js.map +1 -0
- package/dist/ui/status-bar/index.d.ts +6 -0
- package/dist/ui/status-bar/index.d.ts.map +1 -0
- package/dist/ui/status-bar/index.js +6 -0
- package/dist/ui/status-bar/index.js.map +1 -0
- package/dist/ui/status-bar/status-bar-controller.d.ts +37 -0
- package/dist/ui/status-bar/status-bar-controller.d.ts.map +1 -0
- package/dist/ui/status-bar/status-bar-controller.js +111 -0
- package/dist/ui/status-bar/status-bar-controller.js.map +1 -0
- package/dist/ui/status-bar/status-bar-modes.d.ts +26 -0
- package/dist/ui/status-bar/status-bar-modes.d.ts.map +1 -0
- package/dist/ui/status-bar/status-bar-modes.js +97 -0
- package/dist/ui/status-bar/status-bar-modes.js.map +1 -0
- package/dist/views/base-tree-provider.d.ts +74 -0
- package/dist/views/base-tree-provider.d.ts.map +1 -0
- package/dist/views/base-tree-provider.js +95 -0
- package/dist/views/base-tree-provider.js.map +1 -0
- package/dist/views/constants-tree-provider.d.ts +112 -0
- package/dist/views/constants-tree-provider.d.ts.map +1 -0
- package/dist/views/constants-tree-provider.js +344 -0
- package/dist/views/constants-tree-provider.js.map +1 -0
- package/dist/views/files-tree-provider.d.ts +37 -0
- package/dist/views/files-tree-provider.d.ts.map +1 -0
- package/dist/views/files-tree-provider.js +98 -0
- package/dist/views/files-tree-provider.js.map +1 -0
- package/dist/views/index.d.ts +10 -0
- package/dist/views/index.d.ts.map +1 -0
- package/dist/views/index.js +10 -0
- package/dist/views/index.js.map +1 -0
- package/dist/views/patterns-tree-provider.d.ts +39 -0
- package/dist/views/patterns-tree-provider.d.ts.map +1 -0
- package/dist/views/patterns-tree-provider.js +139 -0
- package/dist/views/patterns-tree-provider.js.map +1 -0
- package/dist/views/violations-tree-provider.d.ts +46 -0
- package/dist/views/violations-tree-provider.d.ts.map +1 -0
- package/dist/views/violations-tree-provider.js +158 -0
- package/dist/views/violations-tree-provider.js.map +1 -0
- package/dist/webview/index.d.ts +7 -0
- package/dist/webview/index.d.ts.map +1 -0
- package/dist/webview/index.js +7 -0
- package/dist/webview/index.js.map +1 -0
- package/dist/webview/webview-manager.d.ts +57 -0
- package/dist/webview/webview-manager.d.ts.map +1 -0
- package/dist/webview/webview-manager.js +167 -0
- package/dist/webview/webview-manager.js.map +1 -0
- package/package.json +46 -21
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-bar-controller.d.ts","sourceRoot":"","sources":["../../../src/ui/status-bar/status-bar-controller.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAKjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;GAEG;AACH,qBAAa,mBAAoB,YAAW,MAAM,CAAC,UAAU;IAI/C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAHzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;gBAE1B,YAAY,EAAE,YAAY;IAWvD;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,YAAY;IAiCpB,OAAO,CAAC,eAAe;CAcxB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,mBAAmB,CAE/E"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StatusBarController - Status bar management
|
|
3
|
+
*
|
|
4
|
+
* Single responsibility: Display extension status in VS Code status bar.
|
|
5
|
+
*/
|
|
6
|
+
import * as vscode from 'vscode';
|
|
7
|
+
import { getStatusBarMode } from './status-bar-modes.js';
|
|
8
|
+
import { selectStatusBarData } from '../../state/selectors.js';
|
|
9
|
+
/**
|
|
10
|
+
* Status bar controller
|
|
11
|
+
*/
|
|
12
|
+
export class StatusBarController {
|
|
13
|
+
stateManager;
|
|
14
|
+
item;
|
|
15
|
+
disposables = [];
|
|
16
|
+
constructor(stateManager) {
|
|
17
|
+
this.stateManager = stateManager;
|
|
18
|
+
this.item = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100);
|
|
19
|
+
this.setupSubscriptions();
|
|
20
|
+
this.updateDisplay();
|
|
21
|
+
this.item.show();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Show the status bar item
|
|
25
|
+
*/
|
|
26
|
+
show() {
|
|
27
|
+
this.item.show();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Hide the status bar item
|
|
31
|
+
*/
|
|
32
|
+
hide() {
|
|
33
|
+
this.item.hide();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Dispose resources
|
|
37
|
+
*/
|
|
38
|
+
dispose() {
|
|
39
|
+
this.item.dispose();
|
|
40
|
+
for (const d of this.disposables) {
|
|
41
|
+
d.dispose();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
setupSubscriptions() {
|
|
45
|
+
// Subscribe to relevant state changes
|
|
46
|
+
this.disposables.push(this.stateManager.subscribe(selectStatusBarData, () => {
|
|
47
|
+
this.updateDisplay();
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
updateDisplay() {
|
|
51
|
+
const state = this.stateManager.getState();
|
|
52
|
+
const { status, violations, scanning } = {
|
|
53
|
+
status: state.connection.status,
|
|
54
|
+
violations: state.violations.total,
|
|
55
|
+
scanning: state.workspace.scanning,
|
|
56
|
+
};
|
|
57
|
+
const mode = getStatusBarMode(status, violations, scanning);
|
|
58
|
+
this.item.text = `${mode.icon} ${mode.text}`;
|
|
59
|
+
this.item.tooltip = this.buildTooltip(mode.tooltip, state);
|
|
60
|
+
this.item.backgroundColor = mode.backgroundColor;
|
|
61
|
+
this.item.command = mode.command;
|
|
62
|
+
}
|
|
63
|
+
buildTooltip(baseTooltip, state) {
|
|
64
|
+
const md = new vscode.MarkdownString();
|
|
65
|
+
md.isTrusted = true;
|
|
66
|
+
md.supportThemeIcons = true;
|
|
67
|
+
md.appendMarkdown(`### $(drift-logo) Drift\n\n`);
|
|
68
|
+
md.appendMarkdown(`${baseTooltip}\n\n`);
|
|
69
|
+
// Add stats if connected
|
|
70
|
+
if (state.connection.status === 'connected') {
|
|
71
|
+
md.appendMarkdown(`---\n\n`);
|
|
72
|
+
md.appendMarkdown(`**Patterns:** ${state.patterns.total}\n\n`);
|
|
73
|
+
md.appendMarkdown(`**Violations:** ${state.violations.total}\n\n`);
|
|
74
|
+
if (state.violations.total > 0) {
|
|
75
|
+
md.appendMarkdown(`\n`);
|
|
76
|
+
for (const [severity, count] of Object.entries(state.violations.bySeverity)) {
|
|
77
|
+
if (count > 0) {
|
|
78
|
+
const icon = this.getSeverityIcon(severity);
|
|
79
|
+
md.appendMarkdown(`- ${icon} ${severity}: ${count}\n`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
md.appendMarkdown(`\n---\n\n`);
|
|
84
|
+
md.appendMarkdown(`[View Violations](command:drift.showViolations) | `);
|
|
85
|
+
md.appendMarkdown(`[View Patterns](command:drift.showPatterns) | `);
|
|
86
|
+
md.appendMarkdown(`[Rescan](command:drift.rescan)\n`);
|
|
87
|
+
}
|
|
88
|
+
return md;
|
|
89
|
+
}
|
|
90
|
+
getSeverityIcon(severity) {
|
|
91
|
+
switch (severity) {
|
|
92
|
+
case 'error':
|
|
93
|
+
return '$(error)';
|
|
94
|
+
case 'warning':
|
|
95
|
+
return '$(warning)';
|
|
96
|
+
case 'info':
|
|
97
|
+
return '$(info)';
|
|
98
|
+
case 'hint':
|
|
99
|
+
return '$(lightbulb)';
|
|
100
|
+
default:
|
|
101
|
+
return '$(circle)';
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Factory function for creating status bar controller
|
|
107
|
+
*/
|
|
108
|
+
export function createStatusBar(stateManager) {
|
|
109
|
+
return new StatusBarController(stateManager);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=status-bar-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-bar-controller.js","sourceRoot":"","sources":["../../../src/ui/status-bar/status-bar-controller.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAID;IAHZ,IAAI,CAAuB;IAC3B,WAAW,GAAwB,EAAE,CAAC;IAEvD,YAA6B,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;QACrD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAC3C,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAC/B,GAAG,CACJ,CAAC;QAEF,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAEO,kBAAkB;QACxB,sCAAsC;QACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,mBAAmB,EAAE,GAAG,EAAE;YACpD,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG;YACvC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;YAC/B,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK;YAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;SACnC,CAAC;QAEF,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE5D,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACnC,CAAC;IAEO,YAAY,CAAC,WAAmB,EAAE,KAA2C;QACnF,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QACvC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE5B,EAAE,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC;QACjD,EAAE,CAAC,cAAc,CAAC,GAAG,WAAW,MAAM,CAAC,CAAC;QAExC,yBAAyB;QACzB,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC5C,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAC7B,EAAE,CAAC,cAAc,CAAC,iBAAiB,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,CAAC;YAC/D,EAAE,CAAC,cAAc,CAAC,mBAAmB,KAAK,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,CAAC;YAEnE,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC/B,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACxB,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5E,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;wBACd,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;wBAC5C,EAAE,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC/B,EAAE,CAAC,cAAc,CAAC,oDAAoD,CAAC,CAAC;YACxE,EAAE,CAAC,cAAc,CAAC,gDAAgD,CAAC,CAAC;YACpE,EAAE,CAAC,cAAc,CAAC,kCAAkC,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,eAAe,CAAC,QAAgB;QACtC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,OAAO;gBACV,OAAO,UAAU,CAAC;YACpB,KAAK,SAAS;gBACZ,OAAO,YAAY,CAAC;YACtB,KAAK,MAAM;gBACT,OAAO,SAAS,CAAC;YACnB,KAAK,MAAM;gBACT,OAAO,cAAc,CAAC;YACxB;gBACE,OAAO,WAAW,CAAC;QACvB,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,YAA0B;IACxD,OAAO,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status bar display modes
|
|
3
|
+
*
|
|
4
|
+
* Single responsibility: Define status bar visual states.
|
|
5
|
+
*/
|
|
6
|
+
import * as vscode from 'vscode';
|
|
7
|
+
import type { ConnectionState } from '../../types/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Status bar mode configuration
|
|
10
|
+
*/
|
|
11
|
+
export interface StatusBarMode {
|
|
12
|
+
icon: string;
|
|
13
|
+
text: string;
|
|
14
|
+
tooltip: string;
|
|
15
|
+
backgroundColor?: vscode.ThemeColor;
|
|
16
|
+
command?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Status bar modes for different states
|
|
20
|
+
*/
|
|
21
|
+
export declare const StatusBarModes: Record<string, StatusBarMode>;
|
|
22
|
+
/**
|
|
23
|
+
* Get status bar mode based on state
|
|
24
|
+
*/
|
|
25
|
+
export declare function getStatusBarMode(connectionState: ConnectionState, violations: number, scanning: boolean): StatusBarMode;
|
|
26
|
+
//# sourceMappingURL=status-bar-modes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-bar-modes.d.ts","sourceRoot":"","sources":["../../../src/ui/status-bar/status-bar-modes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAwDxD,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,OAAO,GAChB,aAAa,CA6Bf"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status bar display modes
|
|
3
|
+
*
|
|
4
|
+
* Single responsibility: Define status bar visual states.
|
|
5
|
+
*/
|
|
6
|
+
import * as vscode from 'vscode';
|
|
7
|
+
/**
|
|
8
|
+
* Status bar modes for different states
|
|
9
|
+
*/
|
|
10
|
+
export const StatusBarModes = {
|
|
11
|
+
disconnected: {
|
|
12
|
+
icon: '$(circle-slash)',
|
|
13
|
+
text: 'Drift: Disconnected',
|
|
14
|
+
tooltip: 'Drift is not connected. Click to reconnect.',
|
|
15
|
+
backgroundColor: new vscode.ThemeColor('statusBarItem.errorBackground'),
|
|
16
|
+
command: 'drift.reconnect',
|
|
17
|
+
},
|
|
18
|
+
connecting: {
|
|
19
|
+
icon: '$(sync~spin)',
|
|
20
|
+
text: 'Drift: Connecting...',
|
|
21
|
+
tooltip: 'Connecting to Drift server...',
|
|
22
|
+
},
|
|
23
|
+
connected: {
|
|
24
|
+
icon: '$(check)',
|
|
25
|
+
text: 'Drift: Ready',
|
|
26
|
+
tooltip: 'Drift is connected and ready.',
|
|
27
|
+
command: 'drift.showStatus',
|
|
28
|
+
},
|
|
29
|
+
reconnecting: {
|
|
30
|
+
icon: '$(sync~spin)',
|
|
31
|
+
text: 'Drift: Reconnecting...',
|
|
32
|
+
tooltip: 'Reconnecting to Drift server...',
|
|
33
|
+
},
|
|
34
|
+
error: {
|
|
35
|
+
icon: '$(error)',
|
|
36
|
+
text: 'Drift: Error',
|
|
37
|
+
tooltip: 'Drift encountered an error. Click for details.',
|
|
38
|
+
backgroundColor: new vscode.ThemeColor('statusBarItem.errorBackground'),
|
|
39
|
+
command: 'drift.showError',
|
|
40
|
+
},
|
|
41
|
+
failed: {
|
|
42
|
+
icon: '$(error)',
|
|
43
|
+
text: 'Drift: Failed',
|
|
44
|
+
tooltip: 'Drift failed to connect. Click to retry.',
|
|
45
|
+
backgroundColor: new vscode.ThemeColor('statusBarItem.errorBackground'),
|
|
46
|
+
command: 'drift.reconnect',
|
|
47
|
+
},
|
|
48
|
+
scanning: {
|
|
49
|
+
icon: '$(sync~spin)',
|
|
50
|
+
text: 'Drift: Scanning...',
|
|
51
|
+
tooltip: 'Scanning workspace for patterns...',
|
|
52
|
+
},
|
|
53
|
+
healthy: {
|
|
54
|
+
icon: '$(pass)',
|
|
55
|
+
text: 'Drift',
|
|
56
|
+
tooltip: 'No violations found.',
|
|
57
|
+
command: 'drift.showStatus',
|
|
58
|
+
},
|
|
59
|
+
warning: {
|
|
60
|
+
icon: '$(warning)',
|
|
61
|
+
text: 'Drift',
|
|
62
|
+
tooltip: 'Violations found. Click to view.',
|
|
63
|
+
backgroundColor: new vscode.ThemeColor('statusBarItem.warningBackground'),
|
|
64
|
+
command: 'drift.showViolations',
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Get status bar mode based on state
|
|
69
|
+
*/
|
|
70
|
+
export function getStatusBarMode(connectionState, violations, scanning) {
|
|
71
|
+
// Connection states take priority
|
|
72
|
+
if (connectionState !== 'connected') {
|
|
73
|
+
return StatusBarModes[connectionState] ?? StatusBarModes['disconnected'];
|
|
74
|
+
}
|
|
75
|
+
// Scanning state
|
|
76
|
+
if (scanning) {
|
|
77
|
+
return StatusBarModes['scanning'];
|
|
78
|
+
}
|
|
79
|
+
// Violation-based states
|
|
80
|
+
if (violations > 0) {
|
|
81
|
+
const warningMode = StatusBarModes['warning'];
|
|
82
|
+
const result = {
|
|
83
|
+
icon: warningMode.icon,
|
|
84
|
+
text: `Drift: ${violations}`,
|
|
85
|
+
tooltip: `${violations} violation${violations === 1 ? '' : 's'} found. Click to view.`,
|
|
86
|
+
};
|
|
87
|
+
if (warningMode.backgroundColor) {
|
|
88
|
+
result.backgroundColor = warningMode.backgroundColor;
|
|
89
|
+
}
|
|
90
|
+
if (warningMode.command) {
|
|
91
|
+
result.command = warningMode.command;
|
|
92
|
+
}
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
return StatusBarModes['healthy'];
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=status-bar-modes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-bar-modes.js","sourceRoot":"","sources":["../../../src/ui/status-bar/status-bar-modes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BaseTreeProvider - Abstract base for tree view providers
|
|
3
|
+
*
|
|
4
|
+
* Single responsibility: Provide common tree view functionality.
|
|
5
|
+
*/
|
|
6
|
+
import * as vscode from 'vscode';
|
|
7
|
+
import type { LanguageClient } from 'vscode-languageclient/node';
|
|
8
|
+
/**
|
|
9
|
+
* Base tree item with common properties
|
|
10
|
+
*/
|
|
11
|
+
export interface BaseTreeItem extends vscode.TreeItem {
|
|
12
|
+
contextValue: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Cache entry with expiry
|
|
16
|
+
*/
|
|
17
|
+
interface CacheEntry<T> {
|
|
18
|
+
data: T;
|
|
19
|
+
expiry: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Abstract base class for tree providers
|
|
23
|
+
*/
|
|
24
|
+
export declare abstract class BaseTreeProvider<T extends BaseTreeItem> implements vscode.TreeDataProvider<T>, vscode.Disposable {
|
|
25
|
+
protected readonly client: LanguageClient | null;
|
|
26
|
+
protected readonly cache: Map<string, CacheEntry<T[]>>;
|
|
27
|
+
protected readonly disposables: vscode.Disposable[];
|
|
28
|
+
protected readonly cacheTTL = 30000;
|
|
29
|
+
protected readonly _onDidChangeTreeData: vscode.EventEmitter<T | undefined>;
|
|
30
|
+
readonly onDidChangeTreeData: vscode.Event<T | undefined>;
|
|
31
|
+
constructor(client: LanguageClient | null);
|
|
32
|
+
/**
|
|
33
|
+
* Refresh the tree view
|
|
34
|
+
*/
|
|
35
|
+
refresh(item?: T): void;
|
|
36
|
+
/**
|
|
37
|
+
* Get tree item representation
|
|
38
|
+
*/
|
|
39
|
+
getTreeItem(element: T): vscode.TreeItem;
|
|
40
|
+
/**
|
|
41
|
+
* Get children of an element
|
|
42
|
+
*/
|
|
43
|
+
abstract getChildren(element?: T): Promise<T[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Dispose resources
|
|
46
|
+
*/
|
|
47
|
+
dispose(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Get cache key for an item
|
|
50
|
+
*/
|
|
51
|
+
protected getCacheKey(item?: T): string;
|
|
52
|
+
/**
|
|
53
|
+
* Get cached data if valid
|
|
54
|
+
*/
|
|
55
|
+
protected getCached(key: string): T[] | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Set cache data
|
|
58
|
+
*/
|
|
59
|
+
protected setCache(key: string, data: T[]): void;
|
|
60
|
+
/**
|
|
61
|
+
* Invalidate specific cache entry
|
|
62
|
+
*/
|
|
63
|
+
protected invalidateCache(key: string): void;
|
|
64
|
+
/**
|
|
65
|
+
* Invalidate all cache entries
|
|
66
|
+
*/
|
|
67
|
+
protected invalidateAllCache(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Send request to LSP server
|
|
70
|
+
*/
|
|
71
|
+
protected sendRequest<R>(method: string, params?: unknown): Promise<R>;
|
|
72
|
+
}
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=base-tree-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-tree-provider.d.ts","sourceRoot":"","sources":["../../src/views/base-tree-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,QAAQ;IACnD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,UAAU,UAAU,CAAC,CAAC;IACpB,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,8BAAsB,gBAAgB,CAAC,CAAC,SAAS,YAAY,CAC3D,YAAW,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU;IAS5C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAP5D,SAAS,CAAC,QAAQ,CAAC,KAAK,+BAAsC;IAC9D,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,CAAM;IACzD,SAAS,CAAC,QAAQ,CAAC,QAAQ,SAAS;IAEpC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,qCAA4C;IACnF,QAAQ,CAAC,mBAAmB,8BAAmC;gBAEhC,MAAM,EAAE,cAAc,GAAG,IAAI;IAE5D;;OAEG;IACH,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;IASvB;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ;IAIxC;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAE/C;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM;IAIvC;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,SAAS;IAQjD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI;IAOhD;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAIpC;;OAEG;cACa,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAM7E"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BaseTreeProvider - Abstract base for tree view providers
|
|
3
|
+
*
|
|
4
|
+
* Single responsibility: Provide common tree view functionality.
|
|
5
|
+
*/
|
|
6
|
+
import * as vscode from 'vscode';
|
|
7
|
+
/**
|
|
8
|
+
* Abstract base class for tree providers
|
|
9
|
+
*/
|
|
10
|
+
export class BaseTreeProvider {
|
|
11
|
+
client;
|
|
12
|
+
cache = new Map();
|
|
13
|
+
disposables = [];
|
|
14
|
+
cacheTTL = 30000; // 30 seconds
|
|
15
|
+
_onDidChangeTreeData = new vscode.EventEmitter();
|
|
16
|
+
onDidChangeTreeData = this._onDidChangeTreeData.event;
|
|
17
|
+
constructor(client) {
|
|
18
|
+
this.client = client;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Refresh the tree view
|
|
22
|
+
*/
|
|
23
|
+
refresh(item) {
|
|
24
|
+
if (item) {
|
|
25
|
+
this.invalidateCache(this.getCacheKey(item));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.invalidateAllCache();
|
|
29
|
+
}
|
|
30
|
+
this._onDidChangeTreeData.fire(item);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get tree item representation
|
|
34
|
+
*/
|
|
35
|
+
getTreeItem(element) {
|
|
36
|
+
return element;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Dispose resources
|
|
40
|
+
*/
|
|
41
|
+
dispose() {
|
|
42
|
+
this._onDidChangeTreeData.dispose();
|
|
43
|
+
this.cache.clear();
|
|
44
|
+
for (const d of this.disposables) {
|
|
45
|
+
d.dispose();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get cache key for an item
|
|
50
|
+
*/
|
|
51
|
+
getCacheKey(item) {
|
|
52
|
+
return item?.id?.toString() ?? 'root';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get cached data if valid
|
|
56
|
+
*/
|
|
57
|
+
getCached(key) {
|
|
58
|
+
const entry = this.cache.get(key);
|
|
59
|
+
if (entry && entry.expiry > Date.now()) {
|
|
60
|
+
return entry.data;
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Set cache data
|
|
66
|
+
*/
|
|
67
|
+
setCache(key, data) {
|
|
68
|
+
this.cache.set(key, {
|
|
69
|
+
data,
|
|
70
|
+
expiry: Date.now() + this.cacheTTL,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Invalidate specific cache entry
|
|
75
|
+
*/
|
|
76
|
+
invalidateCache(key) {
|
|
77
|
+
this.cache.delete(key);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Invalidate all cache entries
|
|
81
|
+
*/
|
|
82
|
+
invalidateAllCache() {
|
|
83
|
+
this.cache.clear();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Send request to LSP server
|
|
87
|
+
*/
|
|
88
|
+
async sendRequest(method, params) {
|
|
89
|
+
if (!this.client) {
|
|
90
|
+
throw new Error('Not connected to server');
|
|
91
|
+
}
|
|
92
|
+
return this.client.sendRequest(method, params);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=base-tree-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-tree-provider.js","sourceRoot":"","sources":["../../src/views/base-tree-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAmBjC;;GAEG;AACH,MAAM,OAAgB,gBAAgB;IAUL;IAPZ,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC3C,WAAW,GAAwB,EAAE,CAAC;IACtC,QAAQ,GAAG,KAAK,CAAC,CAAC,aAAa;IAE/B,oBAAoB,GAAG,IAAI,MAAM,CAAC,YAAY,EAAiB,CAAC;IAC1E,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;IAE/D,YAA+B,MAA6B;QAA7B,WAAM,GAAN,MAAM,CAAuB;IAAG,CAAC;IAEhE;;OAEG;IACH,OAAO,CAAC,IAAQ;QACd,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAU;QACpB,OAAO,OAAO,CAAC;IACjB,CAAC;IAOD;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,IAAQ;QAC5B,OAAO,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC;IACxC,CAAC;IAED;;OAEG;IACO,SAAS,CAAC,GAAW;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACO,QAAQ,CAAC,GAAW,EAAE,IAAS;QACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ;SACnC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACO,eAAe,CAAC,GAAW;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACO,kBAAkB;QAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,WAAW,CAAI,MAAc,EAAE,MAAgB;QAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAI,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConstantsTreeProvider - Constants and Enums tree view
|
|
3
|
+
*
|
|
4
|
+
* Single responsibility: Display constants, enums, and related issues in a tree view.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseTreeProvider, type BaseTreeItem } from './base-tree-provider.js';
|
|
7
|
+
import type { LanguageClient } from 'vscode-languageclient/node';
|
|
8
|
+
/**
|
|
9
|
+
* Tree item types
|
|
10
|
+
*/
|
|
11
|
+
type ConstantTreeItemType = 'category' | 'language' | 'constant' | 'enum' | 'issue-group' | 'secret' | 'inconsistent' | 'dead';
|
|
12
|
+
/**
|
|
13
|
+
* Constant data from server
|
|
14
|
+
*/
|
|
15
|
+
export interface ConstantData {
|
|
16
|
+
id: string;
|
|
17
|
+
name: string;
|
|
18
|
+
qualifiedName: string;
|
|
19
|
+
file: string;
|
|
20
|
+
line: number;
|
|
21
|
+
language: string;
|
|
22
|
+
kind: string;
|
|
23
|
+
category: string;
|
|
24
|
+
value?: string | number | boolean | null;
|
|
25
|
+
isExported: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Enum data from server
|
|
29
|
+
*/
|
|
30
|
+
export interface EnumData {
|
|
31
|
+
id: string;
|
|
32
|
+
name: string;
|
|
33
|
+
file: string;
|
|
34
|
+
line: number;
|
|
35
|
+
memberCount: number;
|
|
36
|
+
language: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Category summary
|
|
40
|
+
*/
|
|
41
|
+
export interface CategorySummary {
|
|
42
|
+
name: string;
|
|
43
|
+
count: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Language summary
|
|
47
|
+
*/
|
|
48
|
+
export interface LanguageSummary {
|
|
49
|
+
name: string;
|
|
50
|
+
count: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Secret issue
|
|
54
|
+
*/
|
|
55
|
+
export interface SecretIssue {
|
|
56
|
+
name: string;
|
|
57
|
+
file: string;
|
|
58
|
+
line: number;
|
|
59
|
+
severity: string;
|
|
60
|
+
secretType: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Inconsistent constant issue
|
|
64
|
+
*/
|
|
65
|
+
export interface InconsistentIssue {
|
|
66
|
+
name: string;
|
|
67
|
+
instanceCount: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Constants tree item
|
|
71
|
+
*/
|
|
72
|
+
export interface ConstantTreeItem extends BaseTreeItem {
|
|
73
|
+
type: ConstantTreeItemType;
|
|
74
|
+
data?: ConstantData | EnumData | CategorySummary | LanguageSummary | SecretIssue | InconsistentIssue;
|
|
75
|
+
category?: string;
|
|
76
|
+
language?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Constants tree provider
|
|
80
|
+
*/
|
|
81
|
+
export declare class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
82
|
+
private viewMode;
|
|
83
|
+
constructor(client: LanguageClient | null);
|
|
84
|
+
/**
|
|
85
|
+
* Set the view mode
|
|
86
|
+
*/
|
|
87
|
+
setViewMode(mode: 'category' | 'language' | 'issues'): void;
|
|
88
|
+
getChildren(element?: ConstantTreeItem): Promise<ConstantTreeItem[]>;
|
|
89
|
+
private getCategories;
|
|
90
|
+
private getLanguages;
|
|
91
|
+
private getIssueGroups;
|
|
92
|
+
private getConstantsByCategory;
|
|
93
|
+
private getConstantsByLanguage;
|
|
94
|
+
private getIssuesByType;
|
|
95
|
+
private createCategoryItem;
|
|
96
|
+
private createLanguageItem;
|
|
97
|
+
private createIssueGroupItem;
|
|
98
|
+
private createConstantItem;
|
|
99
|
+
private createEnumItem;
|
|
100
|
+
private createSecretItem;
|
|
101
|
+
private createInconsistentItem;
|
|
102
|
+
private createDeadItem;
|
|
103
|
+
private getCategoryIcon;
|
|
104
|
+
private getLanguageIcon;
|
|
105
|
+
private createConstantTooltip;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Factory function for creating constants tree provider
|
|
109
|
+
*/
|
|
110
|
+
export declare function createConstantsTreeProvider(client: LanguageClient | null): ConstantsTreeProvider;
|
|
111
|
+
export {};
|
|
112
|
+
//# sourceMappingURL=constants-tree-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants-tree-provider.d.ts","sourceRoot":"","sources":["../../src/views/constants-tree-provider.ts"],"names":[],"mappings":"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"}
|