driftdetect-vscode 0.9.32 → 0.9.33

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 (132) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-lint.log +44 -1
  3. package/.turbo/turbo-test.log +0 -34
  4. package/dist/activation/activation-controller.d.ts.map +1 -0
  5. package/dist/activation/activation-controller.js +235 -0
  6. package/dist/activation/activation-controller.js.map +1 -0
  7. package/dist/activation/activation-phases.d.ts.map +1 -0
  8. package/dist/activation/index.d.ts.map +1 -0
  9. package/dist/client/connection-manager.d.ts.map +1 -0
  10. package/dist/client/connection-manager.js +216 -0
  11. package/dist/client/connection-manager.js.map +1 -0
  12. package/dist/client/index.d.ts.map +1 -0
  13. package/dist/client/language-client-factory.d.ts.map +1 -0
  14. package/dist/client/request-middleware.d.ts.map +1 -0
  15. package/dist/client/request-middleware.js +85 -0
  16. package/dist/client/request-middleware.js.map +1 -0
  17. package/dist/commands/command-router.d.ts.map +1 -0
  18. package/dist/commands/command-router.js +129 -0
  19. package/dist/commands/command-router.js.map +1 -0
  20. package/dist/commands/handlers/connection-handlers.d.ts.map +1 -0
  21. package/dist/commands/handlers/connection-handlers.js +57 -0
  22. package/dist/commands/handlers/connection-handlers.js.map +1 -0
  23. package/dist/commands/handlers/constants-handlers.d.ts.map +1 -0
  24. package/dist/commands/handlers/constants-handlers.js +85 -0
  25. package/dist/commands/handlers/constants-handlers.js.map +1 -0
  26. package/dist/commands/handlers/index.d.ts.map +1 -0
  27. package/dist/commands/handlers/pattern-handlers.d.ts.map +1 -0
  28. package/dist/commands/handlers/pattern-handlers.js +127 -0
  29. package/dist/commands/handlers/pattern-handlers.js.map +1 -0
  30. package/dist/commands/handlers/scan-handlers.d.ts.map +1 -0
  31. package/dist/commands/handlers/scan-handlers.js +74 -0
  32. package/dist/commands/handlers/scan-handlers.js.map +1 -0
  33. package/dist/commands/handlers/ui-handlers.d.ts.map +1 -0
  34. package/dist/commands/handlers/violation-handlers.d.ts.map +1 -0
  35. package/dist/commands/handlers/violation-handlers.js +75 -0
  36. package/dist/commands/handlers/violation-handlers.js.map +1 -0
  37. package/dist/commands/index.d.ts.map +1 -0
  38. package/dist/commands/middleware/connection-check-middleware.d.ts.map +1 -0
  39. package/dist/commands/middleware/index.d.ts.map +1 -0
  40. package/dist/commands/middleware/logging-middleware.d.ts.map +1 -0
  41. package/dist/commands/middleware/telemetry-middleware.d.ts.map +1 -0
  42. package/dist/config/config-manager.d.ts.map +1 -0
  43. package/dist/config/config-manager.js +182 -0
  44. package/dist/config/config-manager.js.map +1 -0
  45. package/dist/config/defaults.d.ts.map +1 -0
  46. package/dist/config/index.d.ts.map +1 -0
  47. package/dist/config/validator.d.ts.map +1 -0
  48. package/dist/config/validator.js +89 -0
  49. package/dist/config/validator.js.map +1 -0
  50. package/dist/extension.d.ts.map +1 -0
  51. package/dist/extension.js +51 -0
  52. package/dist/extension.js.map +1 -0
  53. package/dist/infrastructure/disposable-manager.d.ts.map +1 -0
  54. package/dist/infrastructure/disposable-manager.js +76 -0
  55. package/dist/infrastructure/disposable-manager.js.map +1 -0
  56. package/dist/infrastructure/index.d.ts.map +1 -0
  57. package/dist/infrastructure/logger.d.ts.map +1 -0
  58. package/dist/infrastructure/logger.js +82 -0
  59. package/dist/infrastructure/logger.js.map +1 -0
  60. package/dist/infrastructure/service-container.d.ts +68 -0
  61. package/dist/infrastructure/service-container.d.ts.map +1 -0
  62. package/dist/infrastructure/service-container.js +92 -0
  63. package/dist/infrastructure/service-container.js.map +1 -0
  64. package/dist/state/index.d.ts.map +1 -0
  65. package/dist/state/initial-state.d.ts.map +1 -0
  66. package/dist/state/selectors.d.ts.map +1 -0
  67. package/dist/state/state-manager.d.ts.map +1 -0
  68. package/dist/state/state-manager.js +166 -0
  69. package/dist/state/state-manager.js.map +1 -0
  70. package/dist/types/config-types.d.ts.map +1 -0
  71. package/dist/types/extension-types.d.ts +45 -0
  72. package/dist/types/extension-types.d.ts.map +1 -0
  73. package/dist/types/extension-types.js +5 -0
  74. package/dist/types/extension-types.js.map +1 -0
  75. package/dist/types/index.d.ts.map +1 -0
  76. package/dist/types/lsp-types.d.ts.map +1 -0
  77. package/dist/types/state-types.d.ts.map +1 -0
  78. package/dist/ui/decorations/decoration-controller.d.ts.map +1 -0
  79. package/dist/ui/decorations/decoration-controller.js +196 -0
  80. package/dist/ui/decorations/decoration-controller.js.map +1 -0
  81. package/dist/ui/decorations/decoration-types.d.ts.map +1 -0
  82. package/dist/ui/decorations/index.d.ts.map +1 -0
  83. package/dist/ui/index.d.ts.map +1 -0
  84. package/dist/ui/notifications/index.d.ts.map +1 -0
  85. package/dist/ui/notifications/notification-service.d.ts.map +1 -0
  86. package/dist/ui/notifications/notification-service.js +103 -0
  87. package/dist/ui/notifications/notification-service.js.map +1 -0
  88. package/dist/ui/status-bar/index.d.ts.map +1 -0
  89. package/dist/ui/status-bar/status-bar-controller.d.ts.map +1 -0
  90. package/dist/ui/status-bar/status-bar-controller.js +111 -0
  91. package/dist/ui/status-bar/status-bar-controller.js.map +1 -0
  92. package/dist/ui/status-bar/status-bar-modes.d.ts.map +1 -0
  93. package/dist/ui/status-bar/status-bar-modes.js +112 -0
  94. package/dist/ui/status-bar/status-bar-modes.js.map +1 -0
  95. package/dist/views/constants-tree-provider.d.ts +111 -0
  96. package/dist/views/constants-tree-provider.d.ts.map +1 -0
  97. package/dist/views/constants-tree-provider.js +343 -0
  98. package/dist/views/constants-tree-provider.js.map +1 -0
  99. package/dist/views/files-tree-provider.d.ts +36 -0
  100. package/dist/views/files-tree-provider.d.ts.map +1 -0
  101. package/dist/views/files-tree-provider.js +95 -0
  102. package/dist/views/files-tree-provider.js.map +1 -0
  103. package/dist/views/index.d.ts.map +1 -0
  104. package/dist/views/patterns-tree-provider.d.ts.map +1 -0
  105. package/dist/views/violations-tree-provider.d.ts.map +1 -0
  106. package/dist/webview/index.d.ts.map +1 -0
  107. package/dist/webview/webview-manager.d.ts.map +1 -0
  108. package/package.json +1 -1
  109. package/src/activation/activation-controller.ts +13 -13
  110. package/src/client/connection-manager.ts +11 -9
  111. package/src/client/request-middleware.ts +6 -6
  112. package/src/commands/command-router.ts +7 -5
  113. package/src/commands/handlers/connection-handlers.ts +5 -5
  114. package/src/commands/handlers/constants-handlers.ts +13 -12
  115. package/src/commands/handlers/pattern-handlers.ts +3 -3
  116. package/src/commands/handlers/scan-handlers.ts +1 -1
  117. package/src/commands/handlers/violation-handlers.ts +6 -3
  118. package/src/config/config-manager.ts +11 -2
  119. package/src/config/validator.ts +13 -17
  120. package/src/extension.ts +2 -1
  121. package/src/infrastructure/disposable-manager.ts +2 -1
  122. package/src/infrastructure/logger.ts +3 -8
  123. package/src/infrastructure/service-container.ts +6 -7
  124. package/src/state/state-manager.ts +8 -11
  125. package/src/types/extension-types.ts +1 -1
  126. package/src/ui/decorations/decoration-controller.ts +4 -5
  127. package/src/ui/notifications/notification-service.ts +5 -5
  128. package/src/ui/status-bar/status-bar-controller.ts +3 -3
  129. package/src/ui/status-bar/status-bar-modes.ts +24 -9
  130. package/src/views/constants-tree-provider.ts +17 -19
  131. package/src/views/files-tree-provider.ts +0 -4
  132. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Violation command handlers
3
+ *
4
+ * Single responsibility: Handle violation-related commands.
5
+ */
6
+ import * as vscode from 'vscode';
7
+ import { DRIFT_COMMANDS } from '../command-definitions.js';
8
+ /**
9
+ * Create violation command handlers
10
+ */
11
+ export function createViolationHandlers(router, connectionManager, notifications) {
12
+ // Show violations command
13
+ router.register({
14
+ id: DRIFT_COMMANDS.showViolations,
15
+ handler: async (_ctx) => {
16
+ // Focus the violations tree view
17
+ await vscode.commands.executeCommand('drift.violations.focus');
18
+ },
19
+ });
20
+ // Ignore once command
21
+ router.register({
22
+ id: DRIFT_COMMANDS.ignoreOnce,
23
+ handler: async (ctx) => {
24
+ const client = connectionManager.getClient();
25
+ if (!client) {
26
+ throw new Error('Not connected to server');
27
+ }
28
+ const violationId = ctx.args[0];
29
+ const uri = ctx.args[1];
30
+ const line = ctx.args[2];
31
+ if (violationId === null || violationId === '' || uri === null || uri === '' || line === undefined) {
32
+ // Try to get from current editor position
33
+ const editor = vscode.window.activeTextEditor;
34
+ if (!editor) {
35
+ await notifications.warning('No violation selected.');
36
+ return;
37
+ }
38
+ const position = editor.selection.active;
39
+ const diagnostics = vscode.languages.getDiagnostics(editor.document.uri);
40
+ const driftDiagnostic = diagnostics.find(d => d.source === 'drift' && d.range.contains(position));
41
+ if (!driftDiagnostic) {
42
+ await notifications.warning('No Drift violation at cursor position.');
43
+ return;
44
+ }
45
+ const data = driftDiagnostic.data;
46
+ if (data?.violationId === null || data?.violationId === undefined) {
47
+ await notifications.warning('Cannot identify violation.');
48
+ return;
49
+ }
50
+ await client.sendRequest('drift/violations/ignoreOnce', {
51
+ violationId: data.violationId,
52
+ uri: editor.document.uri.toString(),
53
+ line: driftDiagnostic.range.start.line,
54
+ });
55
+ }
56
+ else {
57
+ await client.sendRequest('drift/violations/ignoreOnce', {
58
+ violationId,
59
+ uri,
60
+ line,
61
+ });
62
+ }
63
+ await notifications.info('Violation ignored for this occurrence.');
64
+ },
65
+ });
66
+ // Quick fix command
67
+ router.register({
68
+ id: DRIFT_COMMANDS.quickFix,
69
+ handler: async (_ctx) => {
70
+ // Trigger VS Code's built-in quick fix
71
+ await vscode.commands.executeCommand('editor.action.quickFix');
72
+ },
73
+ });
74
+ }
75
+ //# sourceMappingURL=violation-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"violation-handlers.js","sourceRoot":"","sources":["../../../src/commands/handlers/violation-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC9E,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-check-middleware.d.ts","sourceRoot":"","sources":["../../../src/commands/middleware/connection-check-middleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AAa9E;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,YAAY,GACzB,iBAAiB,CAkBnB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/middleware/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging-middleware.d.ts","sourceRoot":"","sources":["../../../src/commands/middleware/logging-middleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AAE9E;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAezE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-middleware.d.ts","sourceRoot":"","sources":["../../../src/commands/middleware/telemetry-middleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,IAAI,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI,CAAC;CACV;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gBAAgB,GACxB,iBAAiB,CAoBnB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAKjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAc,MAAM,mBAAmB,CAAC;AAEpF;;GAEG;AACH,qBAAa,aAAc,YAAW,MAAM,CAAC,UAAU;IAOzC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;IAE9E,QAAQ,CAAC,cAAc,kCAA4B;gBAEtB,MAAM,EAAE,MAAM;IAK3C;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAI5D;;OAEG;IACH,MAAM,IAAI,QAAQ,CAAC,WAAW,CAAC;IAI/B;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,MAAM,WAAW,EACtC,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAC9B,MAAM,GAAE,MAAM,CAAC,mBAA0D,GACxE,OAAO,CAAC,IAAI,CAAC;IAehB;;OAEG;IACG,KAAK,CAAC,MAAM,GAAE,MAAM,CAAC,mBAA0D,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrG;;OAEG;IACH,MAAM,IAAI,IAAI;IAMd;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,UAAU;IA8BlB,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,WAAW;CAapB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAEjE"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * ConfigManager - Configuration management with change detection
3
+ *
4
+ * Single responsibility: Load, validate, and watch configuration.
5
+ */
6
+ import * as fs from 'node:fs';
7
+ import * as path from 'node:path';
8
+ import * as vscode from 'vscode';
9
+ import { DEFAULT_CONFIG } from './defaults.js';
10
+ import { validateConfig } from './validator.js';
11
+ /**
12
+ * Configuration manager with reactive updates
13
+ */
14
+ export class ConfigManager {
15
+ logger;
16
+ config;
17
+ disposables = [];
18
+ changeEmitter = new vscode.EventEmitter();
19
+ onConfigChange = this.changeEmitter.event;
20
+ constructor(logger) {
21
+ this.logger = logger;
22
+ this.config = this.loadConfig();
23
+ this.watchConfig();
24
+ }
25
+ /**
26
+ * Get a configuration section
27
+ */
28
+ get(section) {
29
+ return this.config[section];
30
+ }
31
+ /**
32
+ * Get the full configuration
33
+ */
34
+ getAll() {
35
+ return this.config;
36
+ }
37
+ /**
38
+ * Update a configuration section
39
+ */
40
+ async update(section, value, target = vscode.ConfigurationTarget.Workspace) {
41
+ const vsConfig = vscode.workspace.getConfiguration('drift');
42
+ const current = vsConfig.get(section);
43
+ const merged = { ...current, ...value };
44
+ // Validate before updating
45
+ const validation = validateConfig({ [section]: merged });
46
+ if (!validation.valid) {
47
+ this.logger.error('Invalid configuration:', validation.errors);
48
+ throw new Error(`Invalid configuration: ${validation.errors.join(', ')}`);
49
+ }
50
+ await vsConfig.update(section, merged, target);
51
+ }
52
+ /**
53
+ * Reset configuration to defaults
54
+ */
55
+ async reset(target = vscode.ConfigurationTarget.Workspace) {
56
+ const vsConfig = vscode.workspace.getConfiguration('drift');
57
+ for (const [section, value] of Object.entries(DEFAULT_CONFIG)) {
58
+ if (section !== 'team') {
59
+ await vsConfig.update(section, value, target);
60
+ }
61
+ }
62
+ }
63
+ /**
64
+ * Reload configuration from VS Code settings
65
+ */
66
+ reload() {
67
+ const oldConfig = this.config;
68
+ this.config = this.loadConfig();
69
+ this.emitChanges(oldConfig, this.config);
70
+ }
71
+ /**
72
+ * Dispose resources
73
+ */
74
+ dispose() {
75
+ this.changeEmitter.dispose();
76
+ for (const d of this.disposables) {
77
+ d.dispose();
78
+ }
79
+ }
80
+ loadConfig() {
81
+ const vsConfig = vscode.workspace.getConfiguration('drift');
82
+ return {
83
+ server: {
84
+ path: vsConfig.get('server.path', DEFAULT_CONFIG.server.path),
85
+ args: vsConfig.get('server.args', DEFAULT_CONFIG.server.args),
86
+ trace: vsConfig.get('server.trace', DEFAULT_CONFIG.server.trace),
87
+ },
88
+ scan: {
89
+ onSave: vsConfig.get('scan.onSave', DEFAULT_CONFIG.scan.onSave),
90
+ onOpen: vsConfig.get('scan.onOpen', DEFAULT_CONFIG.scan.onOpen),
91
+ debounceMs: vsConfig.get('scan.debounceMs', DEFAULT_CONFIG.scan.debounceMs),
92
+ excludePatterns: vsConfig.get('scan.excludePatterns', DEFAULT_CONFIG.scan.excludePatterns),
93
+ },
94
+ display: {
95
+ showStatusBar: vsConfig.get('display.showStatusBar', DEFAULT_CONFIG.display.showStatusBar),
96
+ showInlineHints: vsConfig.get('display.showInlineHints', DEFAULT_CONFIG.display.showInlineHints),
97
+ showGutterIcons: vsConfig.get('display.showGutterIcons', DEFAULT_CONFIG.display.showGutterIcons),
98
+ severityFilter: vsConfig.get('display.severityFilter', DEFAULT_CONFIG.display.severityFilter),
99
+ },
100
+ ai: {
101
+ enabled: vsConfig.get('ai.enabled', DEFAULT_CONFIG.ai.enabled),
102
+ provider: vsConfig.get('ai.provider', DEFAULT_CONFIG.ai.provider),
103
+ model: vsConfig.get('ai.model', DEFAULT_CONFIG.ai.model),
104
+ },
105
+ team: this.loadTeamConfig(),
106
+ };
107
+ }
108
+ loadTeamConfig() {
109
+ const workspaceFolder = vscode.workspace.workspaceFolders?.[0];
110
+ if (!workspaceFolder) {
111
+ return DEFAULT_CONFIG.team;
112
+ }
113
+ const configPath = path.join(workspaceFolder.uri.fsPath, '.drift', 'config.json');
114
+ try {
115
+ if (fs.existsSync(configPath)) {
116
+ const content = fs.readFileSync(configPath, 'utf-8');
117
+ const parsed = JSON.parse(content);
118
+ // Map customRules objects to just their IDs if they're objects
119
+ const customRules = parsed.customRules
120
+ ? parsed.customRules.map((rule) => (typeof rule === 'string' ? rule : rule.id))
121
+ : DEFAULT_CONFIG.team.customRules;
122
+ return {
123
+ enforceApproved: parsed.enforceApproved ?? DEFAULT_CONFIG.team.enforceApproved,
124
+ requiredCategories: parsed.requiredCategories ?? DEFAULT_CONFIG.team.requiredCategories,
125
+ customRules,
126
+ };
127
+ }
128
+ }
129
+ catch (error) {
130
+ this.logger.warn('Failed to load team config:', error);
131
+ }
132
+ return DEFAULT_CONFIG.team;
133
+ }
134
+ watchConfig() {
135
+ // Watch VS Code settings
136
+ this.disposables.push(vscode.workspace.onDidChangeConfiguration((event) => {
137
+ if (event.affectsConfiguration('drift')) {
138
+ this.reload();
139
+ }
140
+ }));
141
+ // Watch .drift/config.json
142
+ const workspaceFolder = vscode.workspace.workspaceFolders?.[0];
143
+ if (workspaceFolder) {
144
+ const pattern = new vscode.RelativePattern(workspaceFolder, '.drift/config.json');
145
+ const watcher = vscode.workspace.createFileSystemWatcher(pattern);
146
+ watcher.onDidChange(() => { this.reloadTeamConfig(); });
147
+ watcher.onDidCreate(() => { this.reloadTeamConfig(); });
148
+ watcher.onDidDelete(() => { this.reloadTeamConfig(); });
149
+ this.disposables.push(watcher);
150
+ }
151
+ }
152
+ reloadTeamConfig() {
153
+ const oldTeam = this.config.team;
154
+ this.config = { ...this.config, team: this.loadTeamConfig() };
155
+ if (JSON.stringify(oldTeam) !== JSON.stringify(this.config.team)) {
156
+ this.changeEmitter.fire({
157
+ section: 'team',
158
+ oldValue: oldTeam,
159
+ newValue: this.config.team,
160
+ });
161
+ }
162
+ }
163
+ emitChanges(oldConfig, newConfig) {
164
+ const sections = ['server', 'scan', 'display', 'ai', 'team'];
165
+ for (const section of sections) {
166
+ if (JSON.stringify(oldConfig[section]) !== JSON.stringify(newConfig[section])) {
167
+ this.changeEmitter.fire({
168
+ section,
169
+ oldValue: oldConfig[section],
170
+ newValue: newConfig[section],
171
+ });
172
+ }
173
+ }
174
+ }
175
+ }
176
+ /**
177
+ * Factory function for creating config manager
178
+ */
179
+ export function createConfigManager(logger) {
180
+ return new ConfigManager(logger);
181
+ }
182
+ //# sourceMappingURL=config-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,WAiC5B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
@@ -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,CAyC7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,WAAW,EAC1B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,gBAAgB,CA6BlB"}
@@ -0,0 +1,89 @@
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?.trace !== undefined && !VALID_TRACE_LEVELS.includes(config.server.trace)) {
25
+ errors.push(`Invalid trace level: ${config.server.trace}`);
26
+ }
27
+ // Validate scan config
28
+ if (config.scan !== undefined) {
29
+ if (typeof config.scan.debounceMs === 'number' && config.scan.debounceMs < 0) {
30
+ errors.push('debounceMs must be non-negative');
31
+ }
32
+ if (config.scan.excludePatterns !== undefined && !Array.isArray(config.scan.excludePatterns)) {
33
+ errors.push('excludePatterns must be an array');
34
+ }
35
+ }
36
+ // Validate display config
37
+ if (config.display?.severityFilter !== undefined) {
38
+ for (const severity of config.display.severityFilter) {
39
+ if (!VALID_SEVERITIES.includes(severity)) {
40
+ errors.push(`Invalid severity: ${severity}`);
41
+ }
42
+ }
43
+ }
44
+ // Validate AI config
45
+ if (config.ai !== undefined) {
46
+ if (config.ai.provider !== undefined && !VALID_PROVIDERS.includes(config.ai.provider)) {
47
+ errors.push(`Invalid AI provider: ${config.ai.provider}`);
48
+ }
49
+ if (config.ai.enabled === true && config.ai.provider === 'none') {
50
+ errors.push('AI enabled but provider is "none"');
51
+ }
52
+ }
53
+ return {
54
+ valid: errors.length === 0,
55
+ errors,
56
+ };
57
+ }
58
+ /**
59
+ * Validate a single config value
60
+ */
61
+ export function validateConfigValue(section, key, value) {
62
+ const errors = [];
63
+ switch (section) {
64
+ case 'scan':
65
+ if (key === 'debounceMs' && (typeof value !== 'number' || value < 0)) {
66
+ errors.push('debounceMs must be a non-negative number');
67
+ }
68
+ break;
69
+ case 'display':
70
+ if (key === 'severityFilter' && Array.isArray(value)) {
71
+ for (const v of value) {
72
+ if (!VALID_SEVERITIES.includes(v)) {
73
+ errors.push(`Invalid severity: ${String(v)}`);
74
+ }
75
+ }
76
+ }
77
+ break;
78
+ case 'ai':
79
+ if (key === 'provider' && !VALID_PROVIDERS.includes(value)) {
80
+ errors.push(`Invalid AI provider: ${String(value)}`);
81
+ }
82
+ break;
83
+ }
84
+ return {
85
+ valid: errors.length === 0,
86
+ errors,
87
+ };
88
+ }
89
+ //# 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 @@
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,CAInC;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,51 @@
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
+ const packageJSON = extension?.packageJSON;
16
+ return packageJSON?.version ?? '0.0.0';
17
+ }
18
+ // For backwards compatibility
19
+ export const VERSION = '0.4.4';
20
+ /**
21
+ * Activation controller instance
22
+ */
23
+ let controller = null;
24
+ /**
25
+ * Activates the Drift extension
26
+ *
27
+ * This function is called by VS Code when the extension is activated.
28
+ * Activation is phased for optimal startup performance:
29
+ *
30
+ * 1. Immediate phase (<100ms): Infrastructure, state, config, status bar
31
+ * 2. Deferred phase: LSP connection, commands, decorations
32
+ * 3. Lazy phase: Tree views, webviews (on-demand)
33
+ */
34
+ export async function activate(context) {
35
+ controller = createActivationController(context);
36
+ context.subscriptions.push(controller);
37
+ await controller.activate();
38
+ }
39
+ /**
40
+ * Deactivates the Drift extension
41
+ *
42
+ * This function is called by VS Code when the extension is deactivated.
43
+ * It ensures proper cleanup of all resources.
44
+ */
45
+ export async function deactivate() {
46
+ if (controller) {
47
+ await controller.deactivate();
48
+ controller = null;
49
+ }
50
+ }
51
+ //# 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,MAAM,WAAW,GAAG,SAAS,EAAE,WAA+C,CAAC;IAC/E,OAAO,WAAW,EAAE,OAAO,IAAI,OAAO,CAAC;AACzC,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 @@
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;IAmBf;;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,76 @@
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
+ // Log error but continue disposing other resources
53
+ void error;
54
+ }
55
+ }
56
+ }
57
+ /**
58
+ * Check if already disposed
59
+ */
60
+ isDisposed() {
61
+ return this.disposed;
62
+ }
63
+ /**
64
+ * Get count of managed disposables
65
+ */
66
+ get count() {
67
+ return this.disposables.length;
68
+ }
69
+ }
70
+ /**
71
+ * Factory function for creating disposable managers
72
+ */
73
+ export function createDisposableManager() {
74
+ return new DisposableManager();
75
+ }
76
+ //# 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,mDAAmD;gBACnD,KAAK,KAAK,CAAC;YACb,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 @@
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 @@
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;CA+BZ;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,GAAE,MAAgB,EAAE,QAAQ,GAAE,QAAiB,GAAG,MAAM,CAE/F"}
@@ -0,0 +1,82 @@
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' && arg !== null) {
61
+ try {
62
+ return JSON.stringify(arg, null, 2);
63
+ }
64
+ catch {
65
+ return '[Object]';
66
+ }
67
+ }
68
+ return String(arg);
69
+ })
70
+ .join(' ');
71
+ formattedMessage += ` ${argsStr}`;
72
+ }
73
+ this.channel.appendLine(formattedMessage);
74
+ }
75
+ }
76
+ /**
77
+ * Factory function for creating loggers
78
+ */
79
+ export function createLogger(channelName = 'Drift', minLevel = 'info') {
80
+ return new Logger(channelName, minLevel);
81
+ }
82
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/infrastructure/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AASjC,MAAM,kBAAkB,GAA6B;IACnD,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,MAAM;IACA,OAAO,CAAuB;IAC9B,QAAQ,CAAW;IAEpC,YAAY,WAAmB,EAAE,WAAqB,MAAM;QAC1D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,IAAe;QAC3D,IAAI,kBAAkB,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClE,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,SAAS,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAEzD,IAAI,gBAAgB,GAAG,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;QAE9C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,IAAI;iBACjB,GAAG,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;oBACzB,OAAO,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBAC9C,CAAC;gBACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBAC5C,IAAI,CAAC;wBACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBACtC,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,UAAU,CAAC;oBACpB,CAAC;gBACH,CAAC;gBACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,gBAAgB,IAAI,IAAI,OAAO,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,cAAsB,OAAO,EAAE,WAAqB,MAAM;IACrF,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC"}