driftdetect-vscode 0.8.2

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 (309) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/.turbo/turbo-test.log +138 -0
  3. package/.vscode/launch.json +17 -0
  4. package/.vscode/tasks.json +15 -0
  5. package/LICENSE +121 -0
  6. package/dist/activation/activation-controller.d.ts +61 -0
  7. package/dist/activation/activation-controller.d.ts.map +1 -0
  8. package/dist/activation/activation-controller.js +235 -0
  9. package/dist/activation/activation-controller.js.map +1 -0
  10. package/dist/activation/activation-phases.d.ts +28 -0
  11. package/dist/activation/activation-phases.d.ts.map +1 -0
  12. package/dist/activation/activation-phases.js +80 -0
  13. package/dist/activation/activation-phases.js.map +1 -0
  14. package/dist/activation/index.d.ts +6 -0
  15. package/dist/activation/index.d.ts.map +1 -0
  16. package/dist/activation/index.js +6 -0
  17. package/dist/activation/index.js.map +1 -0
  18. package/dist/client/connection-config.d.ts +50 -0
  19. package/dist/client/connection-config.d.ts.map +1 -0
  20. package/dist/client/connection-config.js +56 -0
  21. package/dist/client/connection-config.js.map +1 -0
  22. package/dist/client/connection-manager.d.ts +70 -0
  23. package/dist/client/connection-manager.d.ts.map +1 -0
  24. package/dist/client/connection-manager.js +214 -0
  25. package/dist/client/connection-manager.js.map +1 -0
  26. package/dist/client/index.d.ts +8 -0
  27. package/dist/client/index.d.ts.map +1 -0
  28. package/dist/client/index.js +8 -0
  29. package/dist/client/index.js.map +1 -0
  30. package/dist/client/language-client-factory.d.ts +29 -0
  31. package/dist/client/language-client-factory.d.ts.map +1 -0
  32. package/dist/client/language-client-factory.js +76 -0
  33. package/dist/client/language-client-factory.js.map +1 -0
  34. package/dist/client/request-middleware.d.ts +38 -0
  35. package/dist/client/request-middleware.d.ts.map +1 -0
  36. package/dist/client/request-middleware.js +85 -0
  37. package/dist/client/request-middleware.js.map +1 -0
  38. package/dist/commands/command-definitions.d.ts +53 -0
  39. package/dist/commands/command-definitions.d.ts.map +1 -0
  40. package/dist/commands/command-definitions.js +212 -0
  41. package/dist/commands/command-definitions.js.map +1 -0
  42. package/dist/commands/command-router.d.ts +80 -0
  43. package/dist/commands/command-router.d.ts.map +1 -0
  44. package/dist/commands/command-router.js +127 -0
  45. package/dist/commands/command-router.js.map +1 -0
  46. package/dist/commands/handlers/connection-handlers.d.ts +14 -0
  47. package/dist/commands/handlers/connection-handlers.d.ts.map +1 -0
  48. package/dist/commands/handlers/connection-handlers.js +57 -0
  49. package/dist/commands/handlers/connection-handlers.js.map +1 -0
  50. package/dist/commands/handlers/constants-handlers.d.ts +11 -0
  51. package/dist/commands/handlers/constants-handlers.d.ts.map +1 -0
  52. package/dist/commands/handlers/constants-handlers.js +84 -0
  53. package/dist/commands/handlers/constants-handlers.js.map +1 -0
  54. package/dist/commands/handlers/index.d.ts +10 -0
  55. package/dist/commands/handlers/index.d.ts.map +1 -0
  56. package/dist/commands/handlers/index.js +10 -0
  57. package/dist/commands/handlers/index.js.map +1 -0
  58. package/dist/commands/handlers/pattern-handlers.d.ts +13 -0
  59. package/dist/commands/handlers/pattern-handlers.d.ts.map +1 -0
  60. package/dist/commands/handlers/pattern-handlers.js +127 -0
  61. package/dist/commands/handlers/pattern-handlers.js.map +1 -0
  62. package/dist/commands/handlers/scan-handlers.d.ts +15 -0
  63. package/dist/commands/handlers/scan-handlers.d.ts.map +1 -0
  64. package/dist/commands/handlers/scan-handlers.js +74 -0
  65. package/dist/commands/handlers/scan-handlers.js.map +1 -0
  66. package/dist/commands/handlers/ui-handlers.d.ts +12 -0
  67. package/dist/commands/handlers/ui-handlers.d.ts.map +1 -0
  68. package/dist/commands/handlers/ui-handlers.js +74 -0
  69. package/dist/commands/handlers/ui-handlers.js.map +1 -0
  70. package/dist/commands/handlers/violation-handlers.d.ts +13 -0
  71. package/dist/commands/handlers/violation-handlers.d.ts.map +1 -0
  72. package/dist/commands/handlers/violation-handlers.js +76 -0
  73. package/dist/commands/handlers/violation-handlers.js.map +1 -0
  74. package/dist/commands/index.d.ts +7 -0
  75. package/dist/commands/index.d.ts.map +1 -0
  76. package/dist/commands/index.js +7 -0
  77. package/dist/commands/index.js.map +1 -0
  78. package/dist/commands/middleware/connection-check-middleware.d.ts +12 -0
  79. package/dist/commands/middleware/connection-check-middleware.d.ts.map +1 -0
  80. package/dist/commands/middleware/connection-check-middleware.js +34 -0
  81. package/dist/commands/middleware/connection-check-middleware.js.map +1 -0
  82. package/dist/commands/middleware/index.d.ts +7 -0
  83. package/dist/commands/middleware/index.d.ts.map +1 -0
  84. package/dist/commands/middleware/index.js +7 -0
  85. package/dist/commands/middleware/index.js.map +1 -0
  86. package/dist/commands/middleware/logging-middleware.d.ts +12 -0
  87. package/dist/commands/middleware/logging-middleware.d.ts.map +1 -0
  88. package/dist/commands/middleware/logging-middleware.js +24 -0
  89. package/dist/commands/middleware/logging-middleware.js.map +1 -0
  90. package/dist/commands/middleware/telemetry-middleware.d.ts +22 -0
  91. package/dist/commands/middleware/telemetry-middleware.d.ts.map +1 -0
  92. package/dist/commands/middleware/telemetry-middleware.js +30 -0
  93. package/dist/commands/middleware/telemetry-middleware.js.map +1 -0
  94. package/dist/config/config-manager.d.ts +53 -0
  95. package/dist/config/config-manager.d.ts.map +1 -0
  96. package/dist/config/config-manager.js +178 -0
  97. package/dist/config/config-manager.js.map +1 -0
  98. package/dist/config/defaults.d.ts +11 -0
  99. package/dist/config/defaults.d.ts.map +1 -0
  100. package/dist/config/defaults.js +43 -0
  101. package/dist/config/defaults.js.map +1 -0
  102. package/dist/config/index.d.ts +7 -0
  103. package/dist/config/index.d.ts.map +1 -0
  104. package/dist/config/index.js +7 -0
  105. package/dist/config/index.js.map +1 -0
  106. package/dist/config/validator.d.ts +22 -0
  107. package/dist/config/validator.d.ts.map +1 -0
  108. package/dist/config/validator.js +93 -0
  109. package/dist/config/validator.js.map +1 -0
  110. package/dist/extension.d.ts +32 -0
  111. package/dist/extension.d.ts.map +1 -0
  112. package/dist/extension.js +50 -0
  113. package/dist/extension.js.map +1 -0
  114. package/dist/infrastructure/disposable-manager.d.ts +43 -0
  115. package/dist/infrastructure/disposable-manager.d.ts.map +1 -0
  116. package/dist/infrastructure/disposable-manager.js +75 -0
  117. package/dist/infrastructure/disposable-manager.js.map +1 -0
  118. package/dist/infrastructure/event-bus.d.ts +85 -0
  119. package/dist/infrastructure/event-bus.d.ts.map +1 -0
  120. package/dist/infrastructure/event-bus.js +74 -0
  121. package/dist/infrastructure/event-bus.js.map +1 -0
  122. package/dist/infrastructure/index.d.ts +10 -0
  123. package/dist/infrastructure/index.d.ts.map +1 -0
  124. package/dist/infrastructure/index.js +10 -0
  125. package/dist/infrastructure/index.js.map +1 -0
  126. package/dist/infrastructure/logger.d.ts +37 -0
  127. package/dist/infrastructure/logger.d.ts.map +1 -0
  128. package/dist/infrastructure/logger.js +86 -0
  129. package/dist/infrastructure/logger.js.map +1 -0
  130. package/dist/infrastructure/service-container.d.ts +68 -0
  131. package/dist/infrastructure/service-container.d.ts.map +1 -0
  132. package/dist/infrastructure/service-container.js +94 -0
  133. package/dist/infrastructure/service-container.js.map +1 -0
  134. package/dist/state/index.d.ts +7 -0
  135. package/dist/state/index.d.ts.map +1 -0
  136. package/dist/state/index.js +7 -0
  137. package/dist/state/index.js.map +1 -0
  138. package/dist/state/initial-state.d.ts +11 -0
  139. package/dist/state/initial-state.d.ts.map +1 -0
  140. package/dist/state/initial-state.js +58 -0
  141. package/dist/state/initial-state.js.map +1 -0
  142. package/dist/state/selectors.d.ts +41 -0
  143. package/dist/state/selectors.d.ts.map +1 -0
  144. package/dist/state/selectors.js +61 -0
  145. package/dist/state/selectors.js.map +1 -0
  146. package/dist/state/state-manager.d.ts +54 -0
  147. package/dist/state/state-manager.d.ts.map +1 -0
  148. package/dist/state/state-manager.js +166 -0
  149. package/dist/state/state-manager.js.map +1 -0
  150. package/dist/types/config-types.d.ts +69 -0
  151. package/dist/types/config-types.d.ts.map +1 -0
  152. package/dist/types/config-types.js +5 -0
  153. package/dist/types/config-types.js.map +1 -0
  154. package/dist/types/extension-types.d.ts +45 -0
  155. package/dist/types/extension-types.d.ts.map +1 -0
  156. package/dist/types/extension-types.js +5 -0
  157. package/dist/types/extension-types.js.map +1 -0
  158. package/dist/types/index.d.ts +12 -0
  159. package/dist/types/index.d.ts.map +1 -0
  160. package/dist/types/index.js +12 -0
  161. package/dist/types/index.js.map +1 -0
  162. package/dist/types/lsp-types.d.ts +70 -0
  163. package/dist/types/lsp-types.d.ts.map +1 -0
  164. package/dist/types/lsp-types.js +5 -0
  165. package/dist/types/lsp-types.js.map +1 -0
  166. package/dist/types/state-types.d.ts +82 -0
  167. package/dist/types/state-types.d.ts.map +1 -0
  168. package/dist/types/state-types.js +5 -0
  169. package/dist/types/state-types.js.map +1 -0
  170. package/dist/types/vscode-types.d.ts +36 -0
  171. package/dist/types/vscode-types.d.ts.map +1 -0
  172. package/dist/types/vscode-types.js +7 -0
  173. package/dist/types/vscode-types.js.map +1 -0
  174. package/dist/ui/decorations/decoration-controller.d.ts +45 -0
  175. package/dist/ui/decorations/decoration-controller.d.ts.map +1 -0
  176. package/dist/ui/decorations/decoration-controller.js +198 -0
  177. package/dist/ui/decorations/decoration-controller.js.map +1 -0
  178. package/dist/ui/decorations/decoration-types.d.ts +28 -0
  179. package/dist/ui/decorations/decoration-types.d.ts.map +1 -0
  180. package/dist/ui/decorations/decoration-types.js +98 -0
  181. package/dist/ui/decorations/decoration-types.js.map +1 -0
  182. package/dist/ui/decorations/index.d.ts +7 -0
  183. package/dist/ui/decorations/index.d.ts.map +1 -0
  184. package/dist/ui/decorations/index.js +6 -0
  185. package/dist/ui/decorations/index.js.map +1 -0
  186. package/dist/ui/index.d.ts +7 -0
  187. package/dist/ui/index.d.ts.map +1 -0
  188. package/dist/ui/index.js +7 -0
  189. package/dist/ui/index.js.map +1 -0
  190. package/dist/ui/notifications/index.d.ts +5 -0
  191. package/dist/ui/notifications/index.d.ts.map +1 -0
  192. package/dist/ui/notifications/index.js +5 -0
  193. package/dist/ui/notifications/index.js.map +1 -0
  194. package/dist/ui/notifications/notification-service.d.ts +66 -0
  195. package/dist/ui/notifications/notification-service.d.ts.map +1 -0
  196. package/dist/ui/notifications/notification-service.js +103 -0
  197. package/dist/ui/notifications/notification-service.js.map +1 -0
  198. package/dist/ui/status-bar/index.d.ts +6 -0
  199. package/dist/ui/status-bar/index.d.ts.map +1 -0
  200. package/dist/ui/status-bar/index.js +6 -0
  201. package/dist/ui/status-bar/index.js.map +1 -0
  202. package/dist/ui/status-bar/status-bar-controller.d.ts +37 -0
  203. package/dist/ui/status-bar/status-bar-controller.d.ts.map +1 -0
  204. package/dist/ui/status-bar/status-bar-controller.js +111 -0
  205. package/dist/ui/status-bar/status-bar-controller.js.map +1 -0
  206. package/dist/ui/status-bar/status-bar-modes.d.ts +26 -0
  207. package/dist/ui/status-bar/status-bar-modes.d.ts.map +1 -0
  208. package/dist/ui/status-bar/status-bar-modes.js +97 -0
  209. package/dist/ui/status-bar/status-bar-modes.js.map +1 -0
  210. package/dist/views/base-tree-provider.d.ts +74 -0
  211. package/dist/views/base-tree-provider.d.ts.map +1 -0
  212. package/dist/views/base-tree-provider.js +95 -0
  213. package/dist/views/base-tree-provider.js.map +1 -0
  214. package/dist/views/constants-tree-provider.d.ts +112 -0
  215. package/dist/views/constants-tree-provider.d.ts.map +1 -0
  216. package/dist/views/constants-tree-provider.js +344 -0
  217. package/dist/views/constants-tree-provider.js.map +1 -0
  218. package/dist/views/files-tree-provider.d.ts +37 -0
  219. package/dist/views/files-tree-provider.d.ts.map +1 -0
  220. package/dist/views/files-tree-provider.js +98 -0
  221. package/dist/views/files-tree-provider.js.map +1 -0
  222. package/dist/views/index.d.ts +10 -0
  223. package/dist/views/index.d.ts.map +1 -0
  224. package/dist/views/index.js +10 -0
  225. package/dist/views/index.js.map +1 -0
  226. package/dist/views/patterns-tree-provider.d.ts +39 -0
  227. package/dist/views/patterns-tree-provider.d.ts.map +1 -0
  228. package/dist/views/patterns-tree-provider.js +139 -0
  229. package/dist/views/patterns-tree-provider.js.map +1 -0
  230. package/dist/views/violations-tree-provider.d.ts +46 -0
  231. package/dist/views/violations-tree-provider.d.ts.map +1 -0
  232. package/dist/views/violations-tree-provider.js +158 -0
  233. package/dist/views/violations-tree-provider.js.map +1 -0
  234. package/dist/webview/index.d.ts +7 -0
  235. package/dist/webview/index.d.ts.map +1 -0
  236. package/dist/webview/index.js +7 -0
  237. package/dist/webview/index.js.map +1 -0
  238. package/dist/webview/webview-manager.d.ts +57 -0
  239. package/dist/webview/webview-manager.d.ts.map +1 -0
  240. package/dist/webview/webview-manager.js +167 -0
  241. package/dist/webview/webview-manager.js.map +1 -0
  242. package/package.json +405 -0
  243. package/resources/drift-icon.png +0 -0
  244. package/resources/drift-icon.svg +5 -0
  245. package/resources/icons/error.svg +4 -0
  246. package/resources/icons/info.svg +4 -0
  247. package/resources/icons/lightbulb.svg +4 -0
  248. package/resources/icons/warning.svg +4 -0
  249. package/src/activation/activation-controller.ts +320 -0
  250. package/src/activation/activation-phases.ts +96 -0
  251. package/src/activation/index.ts +6 -0
  252. package/src/client/connection-config.ts +64 -0
  253. package/src/client/connection-manager.ts +263 -0
  254. package/src/client/index.ts +8 -0
  255. package/src/client/language-client-factory.ts +111 -0
  256. package/src/client/request-middleware.ts +117 -0
  257. package/src/commands/command-definitions.ts +243 -0
  258. package/src/commands/command-router.ts +194 -0
  259. package/src/commands/handlers/connection-handlers.ts +74 -0
  260. package/src/commands/handlers/constants-handlers.ts +99 -0
  261. package/src/commands/handlers/index.ts +10 -0
  262. package/src/commands/handlers/pattern-handlers.ts +167 -0
  263. package/src/commands/handlers/scan-handlers.ts +107 -0
  264. package/src/commands/handlers/ui-handlers.ts +88 -0
  265. package/src/commands/handlers/violation-handlers.ts +97 -0
  266. package/src/commands/index.ts +7 -0
  267. package/src/commands/middleware/connection-check-middleware.ts +46 -0
  268. package/src/commands/middleware/index.ts +7 -0
  269. package/src/commands/middleware/logging-middleware.ts +28 -0
  270. package/src/commands/middleware/telemetry-middleware.ts +46 -0
  271. package/src/config/config-manager.ts +213 -0
  272. package/src/config/defaults.ts +45 -0
  273. package/src/config/index.ts +7 -0
  274. package/src/config/validator.ts +118 -0
  275. package/src/extension.ts +57 -0
  276. package/src/infrastructure/disposable-manager.ts +87 -0
  277. package/src/infrastructure/event-bus.ts +121 -0
  278. package/src/infrastructure/index.ts +10 -0
  279. package/src/infrastructure/logger.ts +108 -0
  280. package/src/infrastructure/service-container.ts +123 -0
  281. package/src/state/index.ts +7 -0
  282. package/src/state/initial-state.ts +60 -0
  283. package/src/state/selectors.ts +126 -0
  284. package/src/state/state-manager.ts +198 -0
  285. package/src/types/config-types.ts +77 -0
  286. package/src/types/extension-types.ts +58 -0
  287. package/src/types/index.ts +12 -0
  288. package/src/types/lsp-types.ts +77 -0
  289. package/src/types/state-types.ts +92 -0
  290. package/src/types/vscode-types.ts +40 -0
  291. package/src/ui/decorations/decoration-controller.ts +252 -0
  292. package/src/ui/decorations/decoration-types.ts +129 -0
  293. package/src/ui/decorations/index.ts +7 -0
  294. package/src/ui/index.ts +7 -0
  295. package/src/ui/notifications/index.ts +5 -0
  296. package/src/ui/notifications/notification-service.ts +167 -0
  297. package/src/ui/status-bar/index.ts +6 -0
  298. package/src/ui/status-bar/status-bar-controller.ts +135 -0
  299. package/src/ui/status-bar/status-bar-modes.ts +119 -0
  300. package/src/views/base-tree-provider.ts +127 -0
  301. package/src/views/constants-tree-provider.ts +525 -0
  302. package/src/views/files-tree-provider.ts +140 -0
  303. package/src/views/index.ts +10 -0
  304. package/src/views/patterns-tree-provider.ts +179 -0
  305. package/src/views/violations-tree-provider.ts +210 -0
  306. package/src/webview/index.ts +7 -0
  307. package/src/webview/webview-manager.ts +238 -0
  308. package/tsconfig.json +22 -0
  309. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Configuration validator
3
+ *
4
+ * Single responsibility: Validate configuration values.
5
+ */
6
+ import type { DriftConfig } from '../types/index.js';
7
+ /**
8
+ * Validation result
9
+ */
10
+ export interface ValidationResult {
11
+ valid: boolean;
12
+ errors: string[];
13
+ }
14
+ /**
15
+ * Validate configuration
16
+ */
17
+ export declare function validateConfig(config: Partial<DriftConfig>): ValidationResult;
18
+ /**
19
+ * Validate a single config value
20
+ */
21
+ export declare function validateConfigValue(section: keyof DriftConfig, key: string, value: unknown): ValidationResult;
22
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/config/validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAiBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,gBAAgB,CA6C7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,WAAW,EAC1B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,gBAAgB,CA6BlB"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Configuration validator
3
+ *
4
+ * Single responsibility: Validate configuration values.
5
+ */
6
+ /**
7
+ * Valid severity values
8
+ */
9
+ const VALID_SEVERITIES = ['error', 'warning', 'info', 'hint'];
10
+ /**
11
+ * Valid AI providers
12
+ */
13
+ const VALID_PROVIDERS = ['openai', 'anthropic', 'ollama', 'none'];
14
+ /**
15
+ * Valid trace levels
16
+ */
17
+ const VALID_TRACE_LEVELS = ['off', 'messages', 'verbose'];
18
+ /**
19
+ * Validate configuration
20
+ */
21
+ export function validateConfig(config) {
22
+ const errors = [];
23
+ // Validate server config
24
+ if (config.server) {
25
+ if (config.server.trace && !VALID_TRACE_LEVELS.includes(config.server.trace)) {
26
+ errors.push(`Invalid trace level: ${config.server.trace}`);
27
+ }
28
+ }
29
+ // Validate scan config
30
+ if (config.scan) {
31
+ if (typeof config.scan.debounceMs === 'number' && config.scan.debounceMs < 0) {
32
+ errors.push('debounceMs must be non-negative');
33
+ }
34
+ if (config.scan.excludePatterns && !Array.isArray(config.scan.excludePatterns)) {
35
+ errors.push('excludePatterns must be an array');
36
+ }
37
+ }
38
+ // Validate display config
39
+ if (config.display) {
40
+ if (config.display.severityFilter) {
41
+ for (const severity of config.display.severityFilter) {
42
+ if (!VALID_SEVERITIES.includes(severity)) {
43
+ errors.push(`Invalid severity: ${severity}`);
44
+ }
45
+ }
46
+ }
47
+ }
48
+ // Validate AI config
49
+ if (config.ai) {
50
+ if (config.ai.provider && !VALID_PROVIDERS.includes(config.ai.provider)) {
51
+ errors.push(`Invalid AI provider: ${config.ai.provider}`);
52
+ }
53
+ if (config.ai.enabled && config.ai.provider === 'none') {
54
+ errors.push('AI enabled but provider is "none"');
55
+ }
56
+ }
57
+ return {
58
+ valid: errors.length === 0,
59
+ errors,
60
+ };
61
+ }
62
+ /**
63
+ * Validate a single config value
64
+ */
65
+ export function validateConfigValue(section, key, value) {
66
+ const errors = [];
67
+ switch (section) {
68
+ case 'scan':
69
+ if (key === 'debounceMs' && (typeof value !== 'number' || value < 0)) {
70
+ errors.push('debounceMs must be a non-negative number');
71
+ }
72
+ break;
73
+ case 'display':
74
+ if (key === 'severityFilter' && Array.isArray(value)) {
75
+ for (const v of value) {
76
+ if (!VALID_SEVERITIES.includes(v)) {
77
+ errors.push(`Invalid severity: ${v}`);
78
+ }
79
+ }
80
+ }
81
+ break;
82
+ case 'ai':
83
+ if (key === 'provider' && !VALID_PROVIDERS.includes(value)) {
84
+ errors.push(`Invalid AI provider: ${value}`);
85
+ }
86
+ break;
87
+ }
88
+ return {
89
+ valid: errors.length === 0,
90
+ errors,
91
+ };
92
+ }
93
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/config/validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @drift/vscode - VS Code Extension Entry Point
3
+ *
4
+ * This is the main entry point for the Drift VS Code extension.
5
+ * It delegates all work to the ActivationController for proper
6
+ * lifecycle management and phased activation.
7
+ */
8
+ import * as vscode from 'vscode';
9
+ /**
10
+ * Extension version - read from package.json at runtime
11
+ */
12
+ export declare function getVersion(): string;
13
+ export declare const VERSION = "0.4.4";
14
+ /**
15
+ * Activates the Drift extension
16
+ *
17
+ * This function is called by VS Code when the extension is activated.
18
+ * Activation is phased for optimal startup performance:
19
+ *
20
+ * 1. Immediate phase (<100ms): Infrastructure, state, config, status bar
21
+ * 2. Deferred phase: LSP connection, commands, decorations
22
+ * 3. Lazy phase: Tree views, webviews (on-demand)
23
+ */
24
+ export declare function activate(context: vscode.ExtensionContext): Promise<void>;
25
+ /**
26
+ * Deactivates the Drift extension
27
+ *
28
+ * This function is called by VS Code when the extension is deactivated.
29
+ * It ensures proper cleanup of all resources.
30
+ */
31
+ export declare function deactivate(): Promise<void>;
32
+ //# sourceMappingURL=extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAIjC;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAGD,eAAO,MAAM,OAAO,UAAU,CAAC;AAO/B;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAK9E;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAKhD"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @drift/vscode - VS Code Extension Entry Point
3
+ *
4
+ * This is the main entry point for the Drift VS Code extension.
5
+ * It delegates all work to the ActivationController for proper
6
+ * lifecycle management and phased activation.
7
+ */
8
+ import * as vscode from 'vscode';
9
+ import { createActivationController } from './activation/index.js';
10
+ /**
11
+ * Extension version - read from package.json at runtime
12
+ */
13
+ export function getVersion() {
14
+ const extension = vscode.extensions.getExtension('driftdetect.driftdetect-vscode');
15
+ return extension?.packageJSON?.version ?? '0.0.0';
16
+ }
17
+ // For backwards compatibility
18
+ export const VERSION = '0.4.4';
19
+ /**
20
+ * Activation controller instance
21
+ */
22
+ let controller = null;
23
+ /**
24
+ * Activates the Drift extension
25
+ *
26
+ * This function is called by VS Code when the extension is activated.
27
+ * Activation is phased for optimal startup performance:
28
+ *
29
+ * 1. Immediate phase (<100ms): Infrastructure, state, config, status bar
30
+ * 2. Deferred phase: LSP connection, commands, decorations
31
+ * 3. Lazy phase: Tree views, webviews (on-demand)
32
+ */
33
+ export async function activate(context) {
34
+ controller = createActivationController(context);
35
+ context.subscriptions.push(controller);
36
+ await controller.activate();
37
+ }
38
+ /**
39
+ * Deactivates the Drift extension
40
+ *
41
+ * This function is called by VS Code when the extension is deactivated.
42
+ * It ensures proper cleanup of all resources.
43
+ */
44
+ export async function deactivate() {
45
+ if (controller) {
46
+ await controller.deactivate();
47
+ controller = null;
48
+ }
49
+ }
50
+ //# sourceMappingURL=extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,0BAA0B,EAA6B,MAAM,uBAAuB,CAAC;AAE9F;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;IACnF,OAAO,SAAS,EAAE,WAAW,EAAE,OAAO,IAAI,OAAO,CAAC;AACpD,CAAC;AAED,8BAA8B;AAC9B,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B;;GAEG;AACH,IAAI,UAAU,GAAgC,IAAI,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAgC;IAC7D,UAAU,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEvC,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9B,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * DisposableManager - Centralized resource cleanup
3
+ *
4
+ * Single responsibility: Track and dispose VS Code disposables.
5
+ */
6
+ import * as vscode from 'vscode';
7
+ import type { DisposableManager as IDisposableManager } from '../types/index.js';
8
+ /**
9
+ * Manages disposable resources for proper cleanup
10
+ */
11
+ export declare class DisposableManager implements IDisposableManager, vscode.Disposable {
12
+ private readonly disposables;
13
+ private disposed;
14
+ /**
15
+ * Add a disposable to be managed
16
+ */
17
+ add(disposable: vscode.Disposable): void;
18
+ /**
19
+ * Add multiple disposables
20
+ */
21
+ addAll(...disposables: vscode.Disposable[]): void;
22
+ /**
23
+ * Create a disposable from a cleanup function
24
+ */
25
+ addCallback(cleanup: () => void): void;
26
+ /**
27
+ * Dispose all managed resources
28
+ */
29
+ dispose(): void;
30
+ /**
31
+ * Check if already disposed
32
+ */
33
+ isDisposed(): boolean;
34
+ /**
35
+ * Get count of managed disposables
36
+ */
37
+ get count(): number;
38
+ }
39
+ /**
40
+ * Factory function for creating disposable managers
41
+ */
42
+ export declare function createDisposableManager(): DisposableManager;
43
+ //# sourceMappingURL=disposable-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disposable-manager.d.ts","sourceRoot":"","sources":["../../src/infrastructure/disposable-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,KAAK,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEjF;;GAEG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB,EAAE,MAAM,CAAC,UAAU;IAC7E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAS;IAEzB;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI;IASxC;;OAEG;IACH,MAAM,CAAC,GAAG,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI;IAMjD;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAItC;;OAEG;IACH,OAAO,IAAI,IAAI;IAkBf;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;CACF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * DisposableManager - Centralized resource cleanup
3
+ *
4
+ * Single responsibility: Track and dispose VS Code disposables.
5
+ */
6
+ /**
7
+ * Manages disposable resources for proper cleanup
8
+ */
9
+ export class DisposableManager {
10
+ disposables = [];
11
+ disposed = false;
12
+ /**
13
+ * Add a disposable to be managed
14
+ */
15
+ add(disposable) {
16
+ if (this.disposed) {
17
+ // If already disposed, dispose the new item immediately
18
+ disposable.dispose();
19
+ return;
20
+ }
21
+ this.disposables.push(disposable);
22
+ }
23
+ /**
24
+ * Add multiple disposables
25
+ */
26
+ addAll(...disposables) {
27
+ for (const d of disposables) {
28
+ this.add(d);
29
+ }
30
+ }
31
+ /**
32
+ * Create a disposable from a cleanup function
33
+ */
34
+ addCallback(cleanup) {
35
+ this.add({ dispose: cleanup });
36
+ }
37
+ /**
38
+ * Dispose all managed resources
39
+ */
40
+ dispose() {
41
+ if (this.disposed) {
42
+ return;
43
+ }
44
+ this.disposed = true;
45
+ // Dispose in reverse order (LIFO)
46
+ while (this.disposables.length > 0) {
47
+ const disposable = this.disposables.pop();
48
+ try {
49
+ disposable?.dispose();
50
+ }
51
+ catch (error) {
52
+ console.error('[Drift] Error disposing resource:', error);
53
+ }
54
+ }
55
+ }
56
+ /**
57
+ * Check if already disposed
58
+ */
59
+ isDisposed() {
60
+ return this.disposed;
61
+ }
62
+ /**
63
+ * Get count of managed disposables
64
+ */
65
+ get count() {
66
+ return this.disposables.length;
67
+ }
68
+ }
69
+ /**
70
+ * Factory function for creating disposable managers
71
+ */
72
+ export function createDisposableManager() {
73
+ return new DisposableManager();
74
+ }
75
+ //# sourceMappingURL=disposable-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disposable-manager.js","sourceRoot":"","sources":["../../src/infrastructure/disposable-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACX,WAAW,GAAwB,EAAE,CAAC;IAC/C,QAAQ,GAAG,KAAK,CAAC;IAEzB;;OAEG;IACH,GAAG,CAAC,UAA6B;QAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,wDAAwD;YACxD,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,WAAgC;QACxC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAmB;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,kCAAkC;QAClC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,UAAU,EAAE,OAAO,EAAE,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACjC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,iBAAiB,EAAE,CAAC;AACjC,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * EventBus - Decoupled event communication
3
+ *
4
+ * Single responsibility: Enable pub/sub communication between components.
5
+ */
6
+ import * as vscode from 'vscode';
7
+ /**
8
+ * Event types for the extension
9
+ */
10
+ export type ExtensionEventType = 'connection:changed' | 'connection:error' | 'patterns:updated' | 'violations:updated' | 'scan:started' | 'scan:completed' | 'config:changed' | 'workspace:changed';
11
+ /**
12
+ * Event payload types
13
+ */
14
+ export interface ExtensionEvents {
15
+ 'connection:changed': {
16
+ status: string;
17
+ previousStatus: string;
18
+ };
19
+ 'connection:error': {
20
+ error: Error;
21
+ recoverable: boolean;
22
+ };
23
+ 'patterns:updated': {
24
+ total: number;
25
+ categories: string[];
26
+ };
27
+ 'violations:updated': {
28
+ total: number;
29
+ file?: string;
30
+ };
31
+ 'scan:started': {
32
+ files: number;
33
+ };
34
+ 'scan:completed': {
35
+ duration: number;
36
+ patterns: number;
37
+ violations: number;
38
+ };
39
+ 'config:changed': {
40
+ section: string;
41
+ oldValue: unknown;
42
+ newValue: unknown;
43
+ };
44
+ 'workspace:changed': {
45
+ folders: string[];
46
+ };
47
+ }
48
+ /**
49
+ * Event listener type
50
+ */
51
+ type EventListener<T> = (data: T) => void;
52
+ /**
53
+ * Type-safe event bus for extension-wide communication
54
+ */
55
+ export declare class EventBus implements vscode.Disposable {
56
+ private readonly emitters;
57
+ private readonly disposables;
58
+ /**
59
+ * Subscribe to an event
60
+ */
61
+ on<K extends ExtensionEventType>(event: K, listener: EventListener<ExtensionEvents[K]>): vscode.Disposable;
62
+ /**
63
+ * Subscribe to an event once
64
+ */
65
+ once<K extends ExtensionEventType>(event: K, listener: EventListener<ExtensionEvents[K]>): vscode.Disposable;
66
+ /**
67
+ * Emit an event
68
+ */
69
+ emit<K extends ExtensionEventType>(event: K, data: ExtensionEvents[K]): void;
70
+ /**
71
+ * Check if event has listeners
72
+ */
73
+ hasListeners(event: ExtensionEventType): boolean;
74
+ /**
75
+ * Dispose all emitters
76
+ */
77
+ dispose(): void;
78
+ private getOrCreateEmitter;
79
+ }
80
+ /**
81
+ * Factory function for creating event bus
82
+ */
83
+ export declare function createEventBus(): EventBus;
84
+ export {};
85
+ //# sourceMappingURL=event-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/infrastructure/event-bus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,cAAc,GACd,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,kBAAkB,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3D,kBAAkB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC5D,oBAAoB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,cAAc,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,gBAAgB,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7E,gBAAgB,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5E,mBAAmB,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC5C;AAED;;GAEG;AACH,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAE1C;;GAEG;AACH,qBAAa,QAAS,YAAW,MAAM,CAAC,UAAU;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmD;IAC5E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IAEvD;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,kBAAkB,EAC7B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAC1C,MAAM,CAAC,UAAU;IAKpB;;OAEG;IACH,IAAI,CAAC,CAAC,SAAS,kBAAkB,EAC/B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAC1C,MAAM,CAAC,UAAU;IAQpB;;OAEG;IACH,IAAI,CAAC,CAAC,SAAS,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IAO5E;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO;IAIhD;;OAEG;IACH,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,kBAAkB;CAS3B;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAEzC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * EventBus - Decoupled event communication
3
+ *
4
+ * Single responsibility: Enable pub/sub communication between components.
5
+ */
6
+ import * as vscode from 'vscode';
7
+ /**
8
+ * Type-safe event bus for extension-wide communication
9
+ */
10
+ export class EventBus {
11
+ emitters = new Map();
12
+ disposables = [];
13
+ /**
14
+ * Subscribe to an event
15
+ */
16
+ on(event, listener) {
17
+ const emitter = this.getOrCreateEmitter(event);
18
+ return emitter.event(listener);
19
+ }
20
+ /**
21
+ * Subscribe to an event once
22
+ */
23
+ once(event, listener) {
24
+ const disposable = this.on(event, (data) => {
25
+ disposable.dispose();
26
+ listener(data);
27
+ });
28
+ return disposable;
29
+ }
30
+ /**
31
+ * Emit an event
32
+ */
33
+ emit(event, data) {
34
+ const emitter = this.emitters.get(event);
35
+ if (emitter) {
36
+ emitter.fire(data);
37
+ }
38
+ }
39
+ /**
40
+ * Check if event has listeners
41
+ */
42
+ hasListeners(event) {
43
+ return this.emitters.has(event);
44
+ }
45
+ /**
46
+ * Dispose all emitters
47
+ */
48
+ dispose() {
49
+ for (const emitter of this.emitters.values()) {
50
+ emitter.dispose();
51
+ }
52
+ this.emitters.clear();
53
+ for (const d of this.disposables) {
54
+ d.dispose();
55
+ }
56
+ this.disposables.length = 0;
57
+ }
58
+ getOrCreateEmitter(event) {
59
+ let emitter = this.emitters.get(event);
60
+ if (!emitter) {
61
+ emitter = new vscode.EventEmitter();
62
+ this.emitters.set(event, emitter);
63
+ this.disposables.push(emitter);
64
+ }
65
+ return emitter;
66
+ }
67
+ }
68
+ /**
69
+ * Factory function for creating event bus
70
+ */
71
+ export function createEventBus() {
72
+ return new EventBus();
73
+ }
74
+ //# sourceMappingURL=event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/infrastructure/event-bus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAkCjC;;GAEG;AACH,MAAM,OAAO,QAAQ;IACF,QAAQ,GAAG,IAAI,GAAG,EAAwC,CAAC;IAC3D,WAAW,GAAwB,EAAE,CAAC;IAEvD;;OAEG;IACH,EAAE,CACA,KAAQ,EACR,QAA2C;QAE3C,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,KAAK,CAAC,QAAkC,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,IAAI,CACF,KAAQ,EACR,QAA2C;QAE3C,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACzC,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAI,CAA+B,KAAQ,EAAE,IAAwB;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,KAAyB;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEtB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEO,kBAAkB,CAAC,KAAa;QACtC,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,MAAM,CAAC,YAAY,EAAW,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,QAAQ,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Infrastructure module exports
3
+ *
4
+ * Core utilities and services used across the extension.
5
+ */
6
+ export { Logger, createLogger } from './logger.js';
7
+ export { DisposableManager, createDisposableManager } from './disposable-manager.js';
8
+ export { ServiceContainer, ServiceKeys, createServiceContainer } from './service-container.js';
9
+ export { EventBus, createEventBus } from './event-bus.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Infrastructure module exports
3
+ *
4
+ * Core utilities and services used across the extension.
5
+ */
6
+ export { Logger, createLogger } from './logger.js';
7
+ export { DisposableManager, createDisposableManager } from './disposable-manager.js';
8
+ export { ServiceContainer, ServiceKeys, createServiceContainer } from './service-container.js';
9
+ export { EventBus, createEventBus } from './event-bus.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Logger - Centralized logging with output channel integration
3
+ *
4
+ * Single responsibility: Provide structured logging to VS Code output channel.
5
+ */
6
+ import type { Logger as ILogger } from '../types/index.js';
7
+ /**
8
+ * Log levels for filtering
9
+ */
10
+ type LogLevel = 'error' | 'warn' | 'info' | 'debug';
11
+ /**
12
+ * Logger implementation with VS Code output channel
13
+ */
14
+ export declare class Logger implements ILogger {
15
+ private readonly channel;
16
+ private readonly minLevel;
17
+ constructor(channelName: string, minLevel?: LogLevel);
18
+ error(message: string, ...args: unknown[]): void;
19
+ warn(message: string, ...args: unknown[]): void;
20
+ info(message: string, ...args: unknown[]): void;
21
+ debug(message: string, ...args: unknown[]): void;
22
+ /**
23
+ * Show the output channel
24
+ */
25
+ show(): void;
26
+ /**
27
+ * Dispose the output channel
28
+ */
29
+ dispose(): void;
30
+ private log;
31
+ }
32
+ /**
33
+ * Factory function for creating loggers
34
+ */
35
+ export declare function createLogger(channelName?: string, minLevel?: LogLevel): Logger;
36
+ export {};
37
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/infrastructure/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE3D;;GAEG;AACH,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AASpD;;GAEG;AACH,qBAAa,MAAO,YAAW,OAAO;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB;IAK5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,GAAG;CAoCZ;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,GAAE,MAAgB,EAAE,QAAQ,GAAE,QAAiB,GAAG,MAAM,CAE/F"}