driftdetect-vscode 0.9.3 → 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,86 @@
1
+ /**
2
+ * Logger - Centralized logging with output channel integration
3
+ *
4
+ * Single responsibility: Provide structured logging to VS Code output channel.
5
+ */
6
+ import * as vscode from 'vscode';
7
+ const LOG_LEVEL_PRIORITY = {
8
+ error: 0,
9
+ warn: 1,
10
+ info: 2,
11
+ debug: 3,
12
+ };
13
+ /**
14
+ * Logger implementation with VS Code output channel
15
+ */
16
+ export class Logger {
17
+ channel;
18
+ minLevel;
19
+ constructor(channelName, minLevel = 'info') {
20
+ this.channel = vscode.window.createOutputChannel(channelName);
21
+ this.minLevel = minLevel;
22
+ }
23
+ error(message, ...args) {
24
+ this.log('error', message, args);
25
+ }
26
+ warn(message, ...args) {
27
+ this.log('warn', message, args);
28
+ }
29
+ info(message, ...args) {
30
+ this.log('info', message, args);
31
+ }
32
+ debug(message, ...args) {
33
+ this.log('debug', message, args);
34
+ }
35
+ /**
36
+ * Show the output channel
37
+ */
38
+ show() {
39
+ this.channel.show();
40
+ }
41
+ /**
42
+ * Dispose the output channel
43
+ */
44
+ dispose() {
45
+ this.channel.dispose();
46
+ }
47
+ log(level, message, args) {
48
+ if (LOG_LEVEL_PRIORITY[level] > LOG_LEVEL_PRIORITY[this.minLevel]) {
49
+ return;
50
+ }
51
+ const timestamp = new Date().toISOString();
52
+ const prefix = `[${timestamp}] [${level.toUpperCase()}]`;
53
+ let formattedMessage = `${prefix} ${message}`;
54
+ if (args.length > 0) {
55
+ const argsStr = args
56
+ .map(arg => {
57
+ if (arg instanceof Error) {
58
+ return `${arg.message}\n${arg.stack}`;
59
+ }
60
+ if (typeof arg === 'object') {
61
+ try {
62
+ return JSON.stringify(arg, null, 2);
63
+ }
64
+ catch {
65
+ return String(arg);
66
+ }
67
+ }
68
+ return String(arg);
69
+ })
70
+ .join(' ');
71
+ formattedMessage += ` ${argsStr}`;
72
+ }
73
+ this.channel.appendLine(formattedMessage);
74
+ // Also log errors to console for debugging
75
+ if (level === 'error') {
76
+ console.error(`[Drift] ${message}`, ...args);
77
+ }
78
+ }
79
+ }
80
+ /**
81
+ * Factory function for creating loggers
82
+ */
83
+ export function createLogger(channelName = 'Drift', minLevel = 'info') {
84
+ return new Logger(channelName, minLevel);
85
+ }
86
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/infrastructure/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * ServiceContainer - Dependency injection container
3
+ *
4
+ * Single responsibility: Manage service instances and dependencies.
5
+ */
6
+ import type { ServiceContainer as IServiceContainer } from '../types/index.js';
7
+ /**
8
+ * Service registration options
9
+ */
10
+ interface ServiceOptions {
11
+ singleton?: boolean;
12
+ }
13
+ /**
14
+ * Service factory function type
15
+ */
16
+ type ServiceFactory<T> = (container: ServiceContainer) => T;
17
+ /**
18
+ * Simple dependency injection container
19
+ */
20
+ export declare class ServiceContainer implements IServiceContainer {
21
+ private readonly instances;
22
+ private readonly factories;
23
+ private readonly options;
24
+ /**
25
+ * Register a service instance directly
26
+ */
27
+ register<T>(key: string, instance: T): void;
28
+ /**
29
+ * Register a service factory for lazy instantiation
30
+ */
31
+ registerFactory<T>(key: string, factory: ServiceFactory<T>, options?: ServiceOptions): void;
32
+ /**
33
+ * Get a service instance
34
+ */
35
+ get<T>(key: string): T;
36
+ /**
37
+ * Check if a service is registered
38
+ */
39
+ has(key: string): boolean;
40
+ /**
41
+ * Try to get a service, returning undefined if not found
42
+ */
43
+ tryGet<T>(key: string): T | undefined;
44
+ /**
45
+ * Clear all registered services
46
+ */
47
+ clear(): void;
48
+ }
49
+ /**
50
+ * Service keys for type-safe access
51
+ */
52
+ export declare const ServiceKeys: {
53
+ readonly Logger: "logger";
54
+ readonly StateManager: "stateManager";
55
+ readonly ConfigManager: "configManager";
56
+ readonly ConnectionManager: "connectionManager";
57
+ readonly LanguageClient: "languageClient";
58
+ readonly CommandRouter: "commandRouter";
59
+ readonly TelemetryService: "telemetryService";
60
+ readonly StatusBar: "statusBar";
61
+ readonly DecorationController: "decorationController";
62
+ };
63
+ /**
64
+ * Factory function for creating service containers
65
+ */
66
+ export declare function createServiceContainer(): ServiceContainer;
67
+ export {};
68
+ //# sourceMappingURL=service-container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-container.d.ts","sourceRoot":"","sources":["../../src/infrastructure/service-container.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE/E;;GAEG;AACH,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,KAAK,CAAC,CAAC;AAE5D;;GAEG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;IACxE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAE7D;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI;IAI3C;;OAEG;IACH,eAAe,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE,cAAoC,GAC5C,IAAI;IAKP;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;IAwBtB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAQrC;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;CAUd,CAAC;AAEX;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * ServiceContainer - Dependency injection container
3
+ *
4
+ * Single responsibility: Manage service instances and dependencies.
5
+ */
6
+ /**
7
+ * Simple dependency injection container
8
+ */
9
+ export class ServiceContainer {
10
+ instances = new Map();
11
+ factories = new Map();
12
+ options = new Map();
13
+ /**
14
+ * Register a service instance directly
15
+ */
16
+ register(key, instance) {
17
+ this.instances.set(key, instance);
18
+ }
19
+ /**
20
+ * Register a service factory for lazy instantiation
21
+ */
22
+ registerFactory(key, factory, options = { singleton: true }) {
23
+ this.factories.set(key, factory);
24
+ this.options.set(key, options);
25
+ }
26
+ /**
27
+ * Get a service instance
28
+ */
29
+ get(key) {
30
+ // Check for existing instance
31
+ if (this.instances.has(key)) {
32
+ return this.instances.get(key);
33
+ }
34
+ // Check for factory
35
+ const factory = this.factories.get(key);
36
+ if (!factory) {
37
+ throw new Error(`Service not registered: ${key}`);
38
+ }
39
+ // Create instance
40
+ const instance = factory(this);
41
+ // Cache if singleton
42
+ const opts = this.options.get(key);
43
+ if (opts?.singleton !== false) {
44
+ this.instances.set(key, instance);
45
+ }
46
+ return instance;
47
+ }
48
+ /**
49
+ * Check if a service is registered
50
+ */
51
+ has(key) {
52
+ return this.instances.has(key) || this.factories.has(key);
53
+ }
54
+ /**
55
+ * Try to get a service, returning undefined if not found
56
+ */
57
+ tryGet(key) {
58
+ try {
59
+ return this.get(key);
60
+ }
61
+ catch {
62
+ return undefined;
63
+ }
64
+ }
65
+ /**
66
+ * Clear all registered services
67
+ */
68
+ clear() {
69
+ this.instances.clear();
70
+ this.factories.clear();
71
+ this.options.clear();
72
+ }
73
+ }
74
+ /**
75
+ * Service keys for type-safe access
76
+ */
77
+ export const ServiceKeys = {
78
+ Logger: 'logger',
79
+ StateManager: 'stateManager',
80
+ ConfigManager: 'configManager',
81
+ ConnectionManager: 'connectionManager',
82
+ LanguageClient: 'languageClient',
83
+ CommandRouter: 'commandRouter',
84
+ TelemetryService: 'telemetryService',
85
+ StatusBar: 'statusBar',
86
+ DecorationController: 'decorationController',
87
+ };
88
+ /**
89
+ * Factory function for creating service containers
90
+ */
91
+ export function createServiceContainer() {
92
+ return new ServiceContainer();
93
+ }
94
+ //# sourceMappingURL=service-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-container.js","sourceRoot":"","sources":["../../src/infrastructure/service-container.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACV,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IACvC,SAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IACvD,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE7D;;OAEG;IACH,QAAQ,CAAI,GAAW,EAAE,QAAW;QAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,eAAe,CACb,GAAW,EACX,OAA0B,EAC1B,UAA0B,EAAE,SAAS,EAAE,IAAI,EAAE;QAE7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAkC,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,GAAW;QAChB,8BAA8B;QAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;QACtC,CAAC;QAED,oBAAoB;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,kBAAkB;QAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAM,CAAC;QAEpC,qBAAqB;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,IAAI,EAAE,SAAS,KAAK,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,MAAM,CAAI,GAAW;QACnB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,SAAS,EAAE,WAAW;IACtB,oBAAoB,EAAE,sBAAsB;CACpC,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,gBAAgB,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * State management module exports
3
+ */
4
+ export { StateManager, createStateManager } from './state-manager.js';
5
+ export { createInitialState } from './initial-state.js';
6
+ export * from './selectors.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * State management module exports
3
+ */
4
+ export { StateManager, createStateManager } from './state-manager.js';
5
+ export { createInitialState } from './initial-state.js';
6
+ export * from './selectors.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Initial state factory
3
+ *
4
+ * Single responsibility: Provide default state values.
5
+ */
6
+ import type { ExtensionState } from '../types/index.js';
7
+ /**
8
+ * Create the initial extension state
9
+ */
10
+ export declare function createInitialState(): ExtensionState;
11
+ //# sourceMappingURL=initial-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initial-state.d.ts","sourceRoot":"","sources":["../../src/state/initial-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAgDnD"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Initial state factory
3
+ *
4
+ * Single responsibility: Provide default state values.
5
+ */
6
+ /**
7
+ * Create the initial extension state
8
+ */
9
+ export function createInitialState() {
10
+ return {
11
+ connection: {
12
+ status: 'disconnected',
13
+ serverVersion: null,
14
+ lastError: null,
15
+ restartCount: 0,
16
+ },
17
+ workspace: {
18
+ initialized: false,
19
+ projectRoot: null,
20
+ configPath: null,
21
+ lastScanTime: null,
22
+ scanning: false,
23
+ },
24
+ patterns: {
25
+ total: 0,
26
+ byCategory: {},
27
+ byStatus: {
28
+ discovered: 0,
29
+ approved: 0,
30
+ ignored: 0,
31
+ },
32
+ lastUpdated: null,
33
+ },
34
+ violations: {
35
+ total: 0,
36
+ bySeverity: {
37
+ error: 0,
38
+ warning: 0,
39
+ info: 0,
40
+ hint: 0,
41
+ },
42
+ activeFile: null,
43
+ activeFileCount: 0,
44
+ },
45
+ ui: {
46
+ statusBarVisible: true,
47
+ sidebarExpanded: false,
48
+ activePanel: null,
49
+ },
50
+ preferences: {
51
+ autoScan: true,
52
+ showInlineHints: true,
53
+ severityFilter: ['error', 'warning'],
54
+ categoryFilter: [],
55
+ },
56
+ };
57
+ }
58
+ //# sourceMappingURL=initial-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initial-state.js","sourceRoot":"","sources":["../../src/state/initial-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,UAAU,EAAE;YACV,MAAM,EAAE,cAAc;YACtB,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,CAAC;SAChB;QACD,SAAS,EAAE;YACT,WAAW,EAAE,KAAK;YAClB,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,KAAK;SAChB;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,CAAC;YACR,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE;gBACR,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,CAAC;aACX;YACD,WAAW,EAAE,IAAI;SAClB;QACD,UAAU,EAAE;YACV,KAAK,EAAE,CAAC;YACR,UAAU,EAAE;gBACV,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,CAAC;aACR;YACD,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC;SACnB;QACD,EAAE,EAAE;YACF,gBAAgB,EAAE,IAAI;YACtB,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,IAAI;SAClB;QACD,WAAW,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;YACpC,cAAc,EAAE,EAAE;SACnB;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * State selectors - Reusable state accessors
3
+ *
4
+ * Single responsibility: Provide typed access to state slices.
5
+ */
6
+ import type { StateSelector } from '../types/index.js';
7
+ export declare const selectConnectionStatus: StateSelector<string>;
8
+ export declare const selectIsConnected: StateSelector<boolean>;
9
+ export declare const selectConnectionError: StateSelector<string | null>;
10
+ export declare const selectServerVersion: StateSelector<string | null>;
11
+ export declare const selectIsInitialized: StateSelector<boolean>;
12
+ export declare const selectProjectRoot: StateSelector<string | null>;
13
+ export declare const selectIsScanning: StateSelector<boolean>;
14
+ export declare const selectLastScanTime: StateSelector<number | null>;
15
+ export declare const selectPatternTotal: StateSelector<number>;
16
+ export declare const selectPatternsByCategory: StateSelector<Record<string, number>>;
17
+ export declare const selectPatternsByStatus: StateSelector<Record<string, number>>;
18
+ export declare const selectPatternsLastUpdated: StateSelector<number | null>;
19
+ export declare const selectViolationTotal: StateSelector<number>;
20
+ export declare const selectViolationsBySeverity: StateSelector<Record<string, number>>;
21
+ export declare const selectActiveFileViolations: StateSelector<number>;
22
+ export declare const selectActiveFile: StateSelector<string | null>;
23
+ export declare const selectStatusBarVisible: StateSelector<boolean>;
24
+ export declare const selectSidebarExpanded: StateSelector<boolean>;
25
+ export declare const selectActivePanel: StateSelector<string | null>;
26
+ export declare const selectAutoScan: StateSelector<boolean>;
27
+ export declare const selectShowInlineHints: StateSelector<boolean>;
28
+ export declare const selectSeverityFilter: StateSelector<string[]>;
29
+ export declare const selectCategoryFilter: StateSelector<string[]>;
30
+ export declare const selectStatusBarData: StateSelector<{
31
+ status: string;
32
+ violations: number;
33
+ scanning: boolean;
34
+ }>;
35
+ export declare const selectHealthSummary: StateSelector<{
36
+ connected: boolean;
37
+ patterns: number;
38
+ violations: number;
39
+ lastScan: number | null;
40
+ }>;
41
+ //# sourceMappingURL=selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../src/state/selectors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAMvD,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,MAAM,CACrB,CAAC;AAErC,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,OAAO,CACD,CAAC;AAErD,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CACxB,CAAC;AAExC,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAClB,CAAC;AAM5C,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,OAAO,CACf,CAAC;AAEzC,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CACnB,CAAC;AAEzC,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,OAAO,CACf,CAAC;AAEtC,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CACnB,CAAC;AAM1C,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,MAAM,CACpB,CAAC;AAElC,eAAO,MAAM,wBAAwB,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACrC,CAAC;AAEvC,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACrC,CAAC;AAErC,eAAO,MAAM,yBAAyB,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAC5B,CAAC;AAMxC,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,MAAM,CACpB,CAAC;AAEpC,eAAO,MAAM,0BAA0B,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACrC,CAAC;AAEzC,eAAO,MAAM,0BAA0B,EAAE,aAAa,CAAC,MAAM,CAChB,CAAC;AAE9C,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAClB,CAAC;AAMzC,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,OAAO,CACpB,CAAC;AAEvC,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,OAAO,CACpB,CAAC;AAEtC,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAC1B,CAAC;AAMlC,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,OAAO,CACX,CAAC;AAExC,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,OAAO,CACX,CAAC;AAE/C,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,MAAM,EAAE,CACZ,CAAC;AAE9C,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,MAAM,EAAE,CACZ,CAAC;AAM9C,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAIC,CAAC;AAEH,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAKC,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * State selectors - Reusable state accessors
3
+ *
4
+ * Single responsibility: Provide typed access to state slices.
5
+ */
6
+ // ============================================================================
7
+ // Connection Selectors
8
+ // ============================================================================
9
+ export const selectConnectionStatus = (state) => state.connection.status;
10
+ export const selectIsConnected = (state) => state.connection.status === 'connected';
11
+ export const selectConnectionError = (state) => state.connection.lastError;
12
+ export const selectServerVersion = (state) => state.connection.serverVersion;
13
+ // ============================================================================
14
+ // Workspace Selectors
15
+ // ============================================================================
16
+ export const selectIsInitialized = (state) => state.workspace.initialized;
17
+ export const selectProjectRoot = (state) => state.workspace.projectRoot;
18
+ export const selectIsScanning = (state) => state.workspace.scanning;
19
+ export const selectLastScanTime = (state) => state.workspace.lastScanTime;
20
+ // ============================================================================
21
+ // Pattern Selectors
22
+ // ============================================================================
23
+ export const selectPatternTotal = (state) => state.patterns.total;
24
+ export const selectPatternsByCategory = (state) => state.patterns.byCategory;
25
+ export const selectPatternsByStatus = (state) => state.patterns.byStatus;
26
+ export const selectPatternsLastUpdated = (state) => state.patterns.lastUpdated;
27
+ // ============================================================================
28
+ // Violation Selectors
29
+ // ============================================================================
30
+ export const selectViolationTotal = (state) => state.violations.total;
31
+ export const selectViolationsBySeverity = (state) => state.violations.bySeverity;
32
+ export const selectActiveFileViolations = (state) => state.violations.activeFileCount;
33
+ export const selectActiveFile = (state) => state.violations.activeFile;
34
+ // ============================================================================
35
+ // UI Selectors
36
+ // ============================================================================
37
+ export const selectStatusBarVisible = (state) => state.ui.statusBarVisible;
38
+ export const selectSidebarExpanded = (state) => state.ui.sidebarExpanded;
39
+ export const selectActivePanel = (state) => state.ui.activePanel;
40
+ // ============================================================================
41
+ // Preferences Selectors
42
+ // ============================================================================
43
+ export const selectAutoScan = (state) => state.preferences.autoScan;
44
+ export const selectShowInlineHints = (state) => state.preferences.showInlineHints;
45
+ export const selectSeverityFilter = (state) => state.preferences.severityFilter;
46
+ export const selectCategoryFilter = (state) => state.preferences.categoryFilter;
47
+ // ============================================================================
48
+ // Composite Selectors
49
+ // ============================================================================
50
+ export const selectStatusBarData = (state) => ({
51
+ status: state.connection.status,
52
+ violations: state.violations.total,
53
+ scanning: state.workspace.scanning,
54
+ });
55
+ export const selectHealthSummary = (state) => ({
56
+ connected: state.connection.status === 'connected',
57
+ patterns: state.patterns.total,
58
+ violations: state.violations.total,
59
+ lastScan: state.workspace.lastScanTime,
60
+ });
61
+ //# sourceMappingURL=selectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../src/state/selectors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * StateManager - Centralized reactive state management
3
+ *
4
+ * Single responsibility: Manage extension state with subscriptions.
5
+ */
6
+ import * as vscode from 'vscode';
7
+ import type { ExtensionState, StateUpdater, StateSelector, StateSubscriber } from '../types/index.js';
8
+ /**
9
+ * State manager with selector-based subscriptions
10
+ */
11
+ export declare class StateManager implements vscode.Disposable {
12
+ private state;
13
+ private readonly listeners;
14
+ private readonly context;
15
+ constructor(context: vscode.ExtensionContext);
16
+ /**
17
+ * Get current state (readonly)
18
+ */
19
+ getState(): Readonly<ExtensionState>;
20
+ /**
21
+ * Update state with an updater function
22
+ */
23
+ update(updater: StateUpdater): void;
24
+ /**
25
+ * Batch multiple updates
26
+ */
27
+ batch(updaters: StateUpdater[]): void;
28
+ /**
29
+ * Subscribe to state changes with a selector
30
+ */
31
+ subscribe<T>(selector: StateSelector<T>, callback: StateSubscriber<T>): vscode.Disposable;
32
+ /**
33
+ * Subscribe to all state changes
34
+ */
35
+ subscribeAll(callback: (state: ExtensionState) => void): vscode.Disposable;
36
+ /**
37
+ * Reset state to initial values
38
+ */
39
+ reset(): void;
40
+ /**
41
+ * Dispose the state manager
42
+ */
43
+ dispose(): void;
44
+ private createDraft;
45
+ private notifyListeners;
46
+ private loadState;
47
+ private persistState;
48
+ private shallowEqual;
49
+ }
50
+ /**
51
+ * Factory function for creating state manager
52
+ */
53
+ export declare function createStateManager(context: vscode.ExtensionContext): StateManager;
54
+ //# sourceMappingURL=state-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../../src/state/state-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAIjC,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAO3B;;GAEG;AACH,qBAAa,YAAa,YAAW,MAAM,CAAC,UAAU;IACpD,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;IACxE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,OAAO,EAAE,MAAM,CAAC,gBAAgB;IAK5C;;OAEG;IACH,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC;IAIpC;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAWnC;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAUrC;;OAEG;IACH,SAAS,CAAC,CAAC,EACT,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC1B,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,MAAM,CAAC,UAAU;IAoBpB;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,CAAC,UAAU;IAS1E;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,YAAY;CAkBrB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,GAAG,YAAY,CAEjF"}