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.
Files changed (241) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/.turbo/turbo-test.log +138 -0
  3. package/LICENSE +121 -0
  4. package/dist/activation/activation-controller.d.ts +61 -0
  5. package/dist/activation/activation-controller.d.ts.map +1 -0
  6. package/dist/activation/activation-controller.js +235 -0
  7. package/dist/activation/activation-controller.js.map +1 -0
  8. package/dist/activation/activation-phases.d.ts +28 -0
  9. package/dist/activation/activation-phases.d.ts.map +1 -0
  10. package/dist/activation/activation-phases.js +80 -0
  11. package/dist/activation/activation-phases.js.map +1 -0
  12. package/dist/activation/index.d.ts +6 -0
  13. package/dist/activation/index.d.ts.map +1 -0
  14. package/dist/activation/index.js +6 -0
  15. package/dist/activation/index.js.map +1 -0
  16. package/dist/client/connection-config.d.ts +50 -0
  17. package/dist/client/connection-config.d.ts.map +1 -0
  18. package/dist/client/connection-config.js +56 -0
  19. package/dist/client/connection-config.js.map +1 -0
  20. package/dist/client/connection-manager.d.ts +70 -0
  21. package/dist/client/connection-manager.d.ts.map +1 -0
  22. package/dist/client/connection-manager.js +214 -0
  23. package/dist/client/connection-manager.js.map +1 -0
  24. package/dist/client/index.d.ts +8 -0
  25. package/dist/client/index.d.ts.map +1 -0
  26. package/dist/client/index.js +8 -0
  27. package/dist/client/index.js.map +1 -0
  28. package/dist/client/language-client-factory.d.ts +29 -0
  29. package/dist/client/language-client-factory.d.ts.map +1 -0
  30. package/dist/client/language-client-factory.js +76 -0
  31. package/dist/client/language-client-factory.js.map +1 -0
  32. package/dist/client/request-middleware.d.ts +38 -0
  33. package/dist/client/request-middleware.d.ts.map +1 -0
  34. package/dist/client/request-middleware.js +85 -0
  35. package/dist/client/request-middleware.js.map +1 -0
  36. package/dist/commands/command-definitions.d.ts +53 -0
  37. package/dist/commands/command-definitions.d.ts.map +1 -0
  38. package/dist/commands/command-definitions.js +212 -0
  39. package/dist/commands/command-definitions.js.map +1 -0
  40. package/dist/commands/command-router.d.ts +80 -0
  41. package/dist/commands/command-router.d.ts.map +1 -0
  42. package/dist/commands/command-router.js +127 -0
  43. package/dist/commands/command-router.js.map +1 -0
  44. package/dist/commands/handlers/connection-handlers.d.ts +14 -0
  45. package/dist/commands/handlers/connection-handlers.d.ts.map +1 -0
  46. package/dist/commands/handlers/connection-handlers.js +57 -0
  47. package/dist/commands/handlers/connection-handlers.js.map +1 -0
  48. package/dist/commands/handlers/constants-handlers.d.ts +11 -0
  49. package/dist/commands/handlers/constants-handlers.d.ts.map +1 -0
  50. package/dist/commands/handlers/constants-handlers.js +84 -0
  51. package/dist/commands/handlers/constants-handlers.js.map +1 -0
  52. package/dist/commands/handlers/index.d.ts +10 -0
  53. package/dist/commands/handlers/index.d.ts.map +1 -0
  54. package/dist/commands/handlers/index.js +10 -0
  55. package/dist/commands/handlers/index.js.map +1 -0
  56. package/dist/commands/handlers/pattern-handlers.d.ts +13 -0
  57. package/dist/commands/handlers/pattern-handlers.d.ts.map +1 -0
  58. package/dist/commands/handlers/pattern-handlers.js +127 -0
  59. package/dist/commands/handlers/pattern-handlers.js.map +1 -0
  60. package/dist/commands/handlers/scan-handlers.d.ts +15 -0
  61. package/dist/commands/handlers/scan-handlers.d.ts.map +1 -0
  62. package/dist/commands/handlers/scan-handlers.js +74 -0
  63. package/dist/commands/handlers/scan-handlers.js.map +1 -0
  64. package/dist/commands/handlers/ui-handlers.d.ts +12 -0
  65. package/dist/commands/handlers/ui-handlers.d.ts.map +1 -0
  66. package/dist/commands/handlers/ui-handlers.js +74 -0
  67. package/dist/commands/handlers/ui-handlers.js.map +1 -0
  68. package/dist/commands/handlers/violation-handlers.d.ts +13 -0
  69. package/dist/commands/handlers/violation-handlers.d.ts.map +1 -0
  70. package/dist/commands/handlers/violation-handlers.js +76 -0
  71. package/dist/commands/handlers/violation-handlers.js.map +1 -0
  72. package/dist/commands/index.d.ts +7 -0
  73. package/dist/commands/index.d.ts.map +1 -0
  74. package/dist/commands/index.js +7 -0
  75. package/dist/commands/index.js.map +1 -0
  76. package/dist/commands/middleware/connection-check-middleware.d.ts +12 -0
  77. package/dist/commands/middleware/connection-check-middleware.d.ts.map +1 -0
  78. package/dist/commands/middleware/connection-check-middleware.js +34 -0
  79. package/dist/commands/middleware/connection-check-middleware.js.map +1 -0
  80. package/dist/commands/middleware/index.d.ts +7 -0
  81. package/dist/commands/middleware/index.d.ts.map +1 -0
  82. package/dist/commands/middleware/index.js +7 -0
  83. package/dist/commands/middleware/index.js.map +1 -0
  84. package/dist/commands/middleware/logging-middleware.d.ts +12 -0
  85. package/dist/commands/middleware/logging-middleware.d.ts.map +1 -0
  86. package/dist/commands/middleware/logging-middleware.js +24 -0
  87. package/dist/commands/middleware/logging-middleware.js.map +1 -0
  88. package/dist/commands/middleware/telemetry-middleware.d.ts +22 -0
  89. package/dist/commands/middleware/telemetry-middleware.d.ts.map +1 -0
  90. package/dist/commands/middleware/telemetry-middleware.js +30 -0
  91. package/dist/commands/middleware/telemetry-middleware.js.map +1 -0
  92. package/dist/config/config-manager.d.ts +53 -0
  93. package/dist/config/config-manager.d.ts.map +1 -0
  94. package/dist/config/config-manager.js +178 -0
  95. package/dist/config/config-manager.js.map +1 -0
  96. package/dist/config/defaults.d.ts +11 -0
  97. package/dist/config/defaults.d.ts.map +1 -0
  98. package/dist/config/defaults.js +43 -0
  99. package/dist/config/defaults.js.map +1 -0
  100. package/dist/config/index.d.ts +7 -0
  101. package/dist/config/index.d.ts.map +1 -0
  102. package/dist/config/index.js +7 -0
  103. package/dist/config/index.js.map +1 -0
  104. package/dist/config/validator.d.ts +22 -0
  105. package/dist/config/validator.d.ts.map +1 -0
  106. package/dist/config/validator.js +93 -0
  107. package/dist/config/validator.js.map +1 -0
  108. package/dist/extension.d.ts +32 -0
  109. package/dist/extension.d.ts.map +1 -0
  110. package/dist/extension.js +50 -0
  111. package/dist/extension.js.map +1 -0
  112. package/dist/infrastructure/disposable-manager.d.ts +43 -0
  113. package/dist/infrastructure/disposable-manager.d.ts.map +1 -0
  114. package/dist/infrastructure/disposable-manager.js +75 -0
  115. package/dist/infrastructure/disposable-manager.js.map +1 -0
  116. package/dist/infrastructure/event-bus.d.ts +85 -0
  117. package/dist/infrastructure/event-bus.d.ts.map +1 -0
  118. package/dist/infrastructure/event-bus.js +74 -0
  119. package/dist/infrastructure/event-bus.js.map +1 -0
  120. package/dist/infrastructure/index.d.ts +10 -0
  121. package/dist/infrastructure/index.d.ts.map +1 -0
  122. package/dist/infrastructure/index.js +10 -0
  123. package/dist/infrastructure/index.js.map +1 -0
  124. package/dist/infrastructure/logger.d.ts +37 -0
  125. package/dist/infrastructure/logger.d.ts.map +1 -0
  126. package/dist/infrastructure/logger.js +86 -0
  127. package/dist/infrastructure/logger.js.map +1 -0
  128. package/dist/infrastructure/service-container.d.ts +68 -0
  129. package/dist/infrastructure/service-container.d.ts.map +1 -0
  130. package/dist/infrastructure/service-container.js +94 -0
  131. package/dist/infrastructure/service-container.js.map +1 -0
  132. package/dist/state/index.d.ts +7 -0
  133. package/dist/state/index.d.ts.map +1 -0
  134. package/dist/state/index.js +7 -0
  135. package/dist/state/index.js.map +1 -0
  136. package/dist/state/initial-state.d.ts +11 -0
  137. package/dist/state/initial-state.d.ts.map +1 -0
  138. package/dist/state/initial-state.js +58 -0
  139. package/dist/state/initial-state.js.map +1 -0
  140. package/dist/state/selectors.d.ts +41 -0
  141. package/dist/state/selectors.d.ts.map +1 -0
  142. package/dist/state/selectors.js +61 -0
  143. package/dist/state/selectors.js.map +1 -0
  144. package/dist/state/state-manager.d.ts +54 -0
  145. package/dist/state/state-manager.d.ts.map +1 -0
  146. package/dist/state/state-manager.js +166 -0
  147. package/dist/state/state-manager.js.map +1 -0
  148. package/dist/types/config-types.d.ts +69 -0
  149. package/dist/types/config-types.d.ts.map +1 -0
  150. package/dist/types/config-types.js +5 -0
  151. package/dist/types/config-types.js.map +1 -0
  152. package/dist/types/extension-types.d.ts +45 -0
  153. package/dist/types/extension-types.d.ts.map +1 -0
  154. package/dist/types/extension-types.js +5 -0
  155. package/dist/types/extension-types.js.map +1 -0
  156. package/dist/types/index.d.ts +12 -0
  157. package/dist/types/index.d.ts.map +1 -0
  158. package/dist/types/index.js +12 -0
  159. package/dist/types/index.js.map +1 -0
  160. package/dist/types/lsp-types.d.ts +70 -0
  161. package/dist/types/lsp-types.d.ts.map +1 -0
  162. package/dist/types/lsp-types.js +5 -0
  163. package/dist/types/lsp-types.js.map +1 -0
  164. package/dist/types/state-types.d.ts +82 -0
  165. package/dist/types/state-types.d.ts.map +1 -0
  166. package/dist/types/state-types.js +5 -0
  167. package/dist/types/state-types.js.map +1 -0
  168. package/dist/types/vscode-types.d.ts +36 -0
  169. package/dist/types/vscode-types.d.ts.map +1 -0
  170. package/dist/types/vscode-types.js +7 -0
  171. package/dist/types/vscode-types.js.map +1 -0
  172. package/dist/ui/decorations/decoration-controller.d.ts +45 -0
  173. package/dist/ui/decorations/decoration-controller.d.ts.map +1 -0
  174. package/dist/ui/decorations/decoration-controller.js +198 -0
  175. package/dist/ui/decorations/decoration-controller.js.map +1 -0
  176. package/dist/ui/decorations/decoration-types.d.ts +28 -0
  177. package/dist/ui/decorations/decoration-types.d.ts.map +1 -0
  178. package/dist/ui/decorations/decoration-types.js +98 -0
  179. package/dist/ui/decorations/decoration-types.js.map +1 -0
  180. package/dist/ui/decorations/index.d.ts +7 -0
  181. package/dist/ui/decorations/index.d.ts.map +1 -0
  182. package/dist/ui/decorations/index.js +6 -0
  183. package/dist/ui/decorations/index.js.map +1 -0
  184. package/dist/ui/index.d.ts +7 -0
  185. package/dist/ui/index.d.ts.map +1 -0
  186. package/dist/ui/index.js +7 -0
  187. package/dist/ui/index.js.map +1 -0
  188. package/dist/ui/notifications/index.d.ts +5 -0
  189. package/dist/ui/notifications/index.d.ts.map +1 -0
  190. package/dist/ui/notifications/index.js +5 -0
  191. package/dist/ui/notifications/index.js.map +1 -0
  192. package/dist/ui/notifications/notification-service.d.ts +66 -0
  193. package/dist/ui/notifications/notification-service.d.ts.map +1 -0
  194. package/dist/ui/notifications/notification-service.js +103 -0
  195. package/dist/ui/notifications/notification-service.js.map +1 -0
  196. package/dist/ui/status-bar/index.d.ts +6 -0
  197. package/dist/ui/status-bar/index.d.ts.map +1 -0
  198. package/dist/ui/status-bar/index.js +6 -0
  199. package/dist/ui/status-bar/index.js.map +1 -0
  200. package/dist/ui/status-bar/status-bar-controller.d.ts +37 -0
  201. package/dist/ui/status-bar/status-bar-controller.d.ts.map +1 -0
  202. package/dist/ui/status-bar/status-bar-controller.js +111 -0
  203. package/dist/ui/status-bar/status-bar-controller.js.map +1 -0
  204. package/dist/ui/status-bar/status-bar-modes.d.ts +26 -0
  205. package/dist/ui/status-bar/status-bar-modes.d.ts.map +1 -0
  206. package/dist/ui/status-bar/status-bar-modes.js +97 -0
  207. package/dist/ui/status-bar/status-bar-modes.js.map +1 -0
  208. package/dist/views/base-tree-provider.d.ts +74 -0
  209. package/dist/views/base-tree-provider.d.ts.map +1 -0
  210. package/dist/views/base-tree-provider.js +95 -0
  211. package/dist/views/base-tree-provider.js.map +1 -0
  212. package/dist/views/constants-tree-provider.d.ts +112 -0
  213. package/dist/views/constants-tree-provider.d.ts.map +1 -0
  214. package/dist/views/constants-tree-provider.js +344 -0
  215. package/dist/views/constants-tree-provider.js.map +1 -0
  216. package/dist/views/files-tree-provider.d.ts +37 -0
  217. package/dist/views/files-tree-provider.d.ts.map +1 -0
  218. package/dist/views/files-tree-provider.js +98 -0
  219. package/dist/views/files-tree-provider.js.map +1 -0
  220. package/dist/views/index.d.ts +10 -0
  221. package/dist/views/index.d.ts.map +1 -0
  222. package/dist/views/index.js +10 -0
  223. package/dist/views/index.js.map +1 -0
  224. package/dist/views/patterns-tree-provider.d.ts +39 -0
  225. package/dist/views/patterns-tree-provider.d.ts.map +1 -0
  226. package/dist/views/patterns-tree-provider.js +139 -0
  227. package/dist/views/patterns-tree-provider.js.map +1 -0
  228. package/dist/views/violations-tree-provider.d.ts +46 -0
  229. package/dist/views/violations-tree-provider.d.ts.map +1 -0
  230. package/dist/views/violations-tree-provider.js +158 -0
  231. package/dist/views/violations-tree-provider.js.map +1 -0
  232. package/dist/webview/index.d.ts +7 -0
  233. package/dist/webview/index.d.ts.map +1 -0
  234. package/dist/webview/index.js +7 -0
  235. package/dist/webview/index.js.map +1 -0
  236. package/dist/webview/webview-manager.d.ts +57 -0
  237. package/dist/webview/webview-manager.d.ts.map +1 -0
  238. package/dist/webview/webview-manager.js +167 -0
  239. package/dist/webview/webview-manager.js.map +1 -0
  240. package/package.json +46 -21
  241. 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":"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"}
@@ -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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"}