driftdetect-vscode 0.9.31 → 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 +4 -4
  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,85 @@
1
+ /**
2
+ * RequestMiddleware - Request/response interceptors
3
+ *
4
+ * Single responsibility: Add retry, timeout, and logging to LSP requests.
5
+ */
6
+ import { CONNECTION_CONFIG } from './connection-config.js';
7
+ /**
8
+ * Default request options
9
+ */
10
+ const DEFAULT_OPTIONS = {
11
+ timeout: CONNECTION_CONFIG.requestTimeout,
12
+ retries: 2,
13
+ retryDelay: 500,
14
+ };
15
+ /**
16
+ * Middleware for LSP requests with retry and timeout
17
+ */
18
+ export class RequestMiddleware {
19
+ client;
20
+ logger;
21
+ constructor(client, logger) {
22
+ this.client = client;
23
+ this.logger = logger;
24
+ }
25
+ /**
26
+ * Send a request with retry and timeout
27
+ */
28
+ async request(method, params, options = {}) {
29
+ const opts = { ...DEFAULT_OPTIONS, ...options };
30
+ let lastError;
31
+ for (let attempt = 0; attempt <= opts.retries; attempt++) {
32
+ try {
33
+ const result = await this.sendWithTimeout(method, params, opts.timeout);
34
+ return result;
35
+ }
36
+ catch (error) {
37
+ lastError = error instanceof Error ? error : new Error(String(error));
38
+ if (attempt < opts.retries) {
39
+ this.logger.warn(`Request ${method} failed (attempt ${String(attempt + 1)}/${String(opts.retries + 1)}): ${lastError.message}`);
40
+ await this.delay(opts.retryDelay * (attempt + 1));
41
+ }
42
+ }
43
+ }
44
+ this.logger.error(`Request ${method} failed after ${String(opts.retries + 1)} attempts`);
45
+ throw lastError;
46
+ }
47
+ /**
48
+ * Send a notification (fire and forget)
49
+ */
50
+ notify(method, params) {
51
+ try {
52
+ void this.client.sendNotification(method, params);
53
+ }
54
+ catch (error) {
55
+ this.logger.error(`Notification ${method} failed:`, error);
56
+ }
57
+ }
58
+ async sendWithTimeout(method, params, timeout) {
59
+ return new Promise((resolve, reject) => {
60
+ const timer = setTimeout(() => {
61
+ reject(new Error(`Request ${method} timed out after ${String(timeout)}ms`));
62
+ }, timeout);
63
+ this.client
64
+ .sendRequest(method, params)
65
+ .then((result) => {
66
+ clearTimeout(timer);
67
+ resolve(result);
68
+ })
69
+ .catch((error) => {
70
+ clearTimeout(timer);
71
+ reject(error instanceof Error ? error : new Error(String(error)));
72
+ });
73
+ });
74
+ }
75
+ delay(ms) {
76
+ return new Promise((resolve) => setTimeout(resolve, ms));
77
+ }
78
+ }
79
+ /**
80
+ * Factory function for creating request middleware
81
+ */
82
+ export function createRequestMiddleware(client, logger) {
83
+ return new RequestMiddleware(client, logger);
84
+ }
85
+ //# sourceMappingURL=request-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-middleware.js","sourceRoot":"","sources":["../../src/client/request-middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-router.d.ts","sourceRoot":"","sources":["../../src/commands/command-router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;GAEG;AACH,UAAU,mBAAmB;IAC3B,EAAE,EAAE,YAAY,CAAC;IACjB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,MAAM,CAAC,UAAU;IAMnD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgD;IACzE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;gBAGpC,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAChC,MAAM,EAAE,MAAM,EAC/B,aAAa,EAAE,YAAY;IAG7B;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAKxC;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,mBAAmB,GAAG,MAAM,CAAC,UAAU;IAgB9D;;OAEG;IACH,WAAW,CAAC,aAAa,EAAE,mBAAmB,EAAE,GAAG,IAAI;IAMvD;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9E;;OAEG;IACH,OAAO,IAAI,IAAI;YAQD,OAAO;YAkBP,mBAAmB;YAkBnB,qBAAqB;IAoBnC,OAAO,CAAC,WAAW;CAcpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAChC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,GACzB,aAAa,CAEf"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * CommandRouter - Centralized command handling with middleware
3
+ *
4
+ * Single responsibility: Route commands through middleware chain.
5
+ */
6
+ import * as vscode from 'vscode';
7
+ /**
8
+ * Command router with middleware support
9
+ */
10
+ export class CommandRouter {
11
+ context;
12
+ logger;
13
+ handlers = new Map();
14
+ middleware = [];
15
+ disposables = [];
16
+ constructor(context, logger, _stateManager // Available for future use
17
+ ) {
18
+ this.context = context;
19
+ this.logger = logger;
20
+ }
21
+ /**
22
+ * Add middleware to the chain
23
+ */
24
+ use(middleware) {
25
+ this.middleware.push(middleware);
26
+ return this;
27
+ }
28
+ /**
29
+ * Register a command handler
30
+ */
31
+ register(registration) {
32
+ this.handlers.set(registration.id, registration);
33
+ const disposable = vscode.commands.registerCommand(registration.id, async (...args) => {
34
+ await this.execute(registration, args);
35
+ });
36
+ this.disposables.push(disposable);
37
+ this.context.subscriptions.push(disposable);
38
+ return disposable;
39
+ }
40
+ /**
41
+ * Register multiple command handlers
42
+ */
43
+ registerAll(registrations) {
44
+ for (const reg of registrations) {
45
+ this.register(reg);
46
+ }
47
+ }
48
+ /**
49
+ * Execute a command programmatically
50
+ */
51
+ async executeCommand(command, ...args) {
52
+ await vscode.commands.executeCommand(command, ...args);
53
+ }
54
+ /**
55
+ * Dispose all registered commands
56
+ */
57
+ dispose() {
58
+ for (const d of this.disposables) {
59
+ d.dispose();
60
+ }
61
+ this.handlers.clear();
62
+ this.middleware.length = 0;
63
+ }
64
+ async execute(registration, args) {
65
+ const ctx = {
66
+ command: registration.id,
67
+ args,
68
+ startTime: performance.now(),
69
+ };
70
+ try {
71
+ if (registration.showProgress) {
72
+ await this.executeWithProgress(registration, ctx);
73
+ }
74
+ else {
75
+ await this.executeWithMiddleware(registration.handler, ctx);
76
+ }
77
+ }
78
+ catch (error) {
79
+ this.handleError(registration.id, error);
80
+ }
81
+ }
82
+ async executeWithProgress(registration, ctx) {
83
+ await vscode.window.withProgress({
84
+ location: vscode.ProgressLocation.Notification,
85
+ title: registration.progressTitle || `Drift: ${registration.id}`,
86
+ cancellable: true,
87
+ }, async (progress, token) => {
88
+ ctx.progress = progress;
89
+ ctx.cancellationToken = token;
90
+ await this.executeWithMiddleware(registration.handler, ctx);
91
+ });
92
+ }
93
+ async executeWithMiddleware(handler, ctx) {
94
+ let index = 0;
95
+ const next = async () => {
96
+ if (index < this.middleware.length) {
97
+ const mw = this.middleware[index++];
98
+ if (mw) {
99
+ await mw(ctx, next);
100
+ }
101
+ }
102
+ else {
103
+ await handler(ctx);
104
+ }
105
+ };
106
+ await next();
107
+ }
108
+ handleError(command, error) {
109
+ const message = error instanceof Error ? error.message : String(error);
110
+ this.logger.error(`Command ${command} failed:`, message);
111
+ void vscode.window
112
+ .showErrorMessage(`Drift: ${message}`, 'Retry', 'Show Logs')
113
+ .then((action) => {
114
+ if (action === 'Retry') {
115
+ void vscode.commands.executeCommand(command);
116
+ }
117
+ else if (action === 'Show Logs') {
118
+ void vscode.commands.executeCommand('drift.showLogs');
119
+ }
120
+ });
121
+ }
122
+ }
123
+ /**
124
+ * Factory function for creating command router
125
+ */
126
+ export function createCommandRouter(context, logger, stateManager) {
127
+ return new CommandRouter(context, logger, stateManager);
128
+ }
129
+ //# sourceMappingURL=command-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-router.js","sourceRoot":"","sources":["../../src/commands/command-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-handlers.d.ts","sourceRoot":"","sources":["../../../src/commands/handlers/connection-handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,sBAAsB,CAAC;AAG1E;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,mBAAmB,GACjC,IAAI,CAmDN"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Connection command handlers
3
+ *
4
+ * Single responsibility: Handle connection-related commands.
5
+ */
6
+ import { DRIFT_COMMANDS } from '../command-definitions.js';
7
+ /**
8
+ * Create connection command handlers
9
+ */
10
+ export function createConnectionHandlers(router, connectionManager, stateManager, notifications) {
11
+ // Reconnect command
12
+ router.register({
13
+ id: DRIFT_COMMANDS.reconnect,
14
+ handler: async (_ctx) => {
15
+ await notifications.withProgress('Reconnecting...', async (progress) => {
16
+ progress.report({ message: 'Disconnecting...' });
17
+ await connectionManager.disconnect();
18
+ progress.report({ message: 'Connecting...' });
19
+ await connectionManager.connect();
20
+ });
21
+ },
22
+ });
23
+ // Show status command
24
+ router.register({
25
+ id: DRIFT_COMMANDS.showStatus,
26
+ handler: async (_ctx) => {
27
+ const state = stateManager.getState();
28
+ const { connection, patterns, violations, workspace } = state;
29
+ const items = [
30
+ `Connection: ${connection.status}`,
31
+ `Server Version: ${connection.serverVersion ?? 'Unknown'}`,
32
+ `Patterns: ${String(patterns.total)}`,
33
+ `Violations: ${String(violations.total)}`,
34
+ `Last Scan: ${workspace.lastScanTime !== null ? new Date(workspace.lastScanTime).toLocaleString() : 'Never'}`,
35
+ ];
36
+ await notifications.info(items.join('\n'), [], { detail: 'Drift Status' });
37
+ },
38
+ });
39
+ // Show error command
40
+ router.register({
41
+ id: DRIFT_COMMANDS.showError,
42
+ handler: async (_ctx) => {
43
+ const state = stateManager.getState();
44
+ const error = state.connection.lastError;
45
+ if (error !== null && error !== '') {
46
+ await notifications.error(error, [
47
+ { title: 'Retry', command: DRIFT_COMMANDS.reconnect },
48
+ { title: 'Show Logs', command: 'drift.showLogs' },
49
+ ]);
50
+ }
51
+ else {
52
+ await notifications.info('No errors to display.');
53
+ }
54
+ },
55
+ });
56
+ }
57
+ //# sourceMappingURL=connection-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-handlers.js","sourceRoot":"","sources":["../../../src/commands/handlers/connection-handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAQ3D;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAqB,EACrB,iBAAoC,EACpC,YAA0B,EAC1B,aAAkC;IAElC,oBAAoB;IACpB,MAAM,CAAC,QAAQ,CAAC;QACd,EAAE,EAAE,cAAc,CAAC,SAAS;QAC5B,OAAO,EAAE,KAAK,EAAE,IAAoB,EAAE,EAAE;YACtC,MAAM,aAAa,CAAC,YAAY,CAAC,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;gBACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBACjD,MAAM,iBAAiB,CAAC,UAAU,EAAE,CAAC;gBAErC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC9C,MAAM,iBAAiB,CAAC,OAAO,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,CAAC,QAAQ,CAAC;QACd,EAAE,EAAE,cAAc,CAAC,UAAU;QAC7B,OAAO,EAAE,KAAK,EAAE,IAAoB,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;YAE9D,MAAM,KAAK,GAAG;gBACZ,eAAe,UAAU,CAAC,MAAM,EAAE;gBAClC,mBAAmB,UAAU,CAAC,aAAa,IAAI,SAAS,EAAE;gBAC1D,aAAa,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACrC,eAAe,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBACzC,cAAc,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;aAC9G,CAAC;YAEF,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QAC7E,CAAC;KACF,CAAC,CAAC;IAEH,qBAAqB;IACrB,MAAM,CAAC,QAAQ,CAAC;QACd,EAAE,EAAE,cAAc,CAAC,SAAS;QAC5B,OAAO,EAAE,KAAK,EAAE,IAAoB,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;YAEzC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACnC,MAAM,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE;oBAC/B,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,SAAS,EAAE;oBACrD,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE;iBAClD,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants-handlers.d.ts","sourceRoot":"","sources":["../../../src/commands/handlers/constants-handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAEpF;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,iBAAiB,EAAE,qBAAqB,GACvC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAoFvD"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Constants command handlers
3
+ *
4
+ * Handlers for constants-related commands.
5
+ */
6
+ import * as vscode from 'vscode';
7
+ /**
8
+ * Create constants command handlers
9
+ */
10
+ export function createConstantsHandlers(constantsProvider) {
11
+ return {
12
+ /**
13
+ * Show constants view by category
14
+ */
15
+ 'drift.showConstantsByCategory': async () => {
16
+ constantsProvider.setViewMode('category');
17
+ await vscode.commands.executeCommand('drift.constantsView.focus');
18
+ },
19
+ /**
20
+ * Show constants view by language
21
+ */
22
+ 'drift.showConstantsByLanguage': async () => {
23
+ constantsProvider.setViewMode('language');
24
+ await vscode.commands.executeCommand('drift.constantsView.focus');
25
+ },
26
+ /**
27
+ * Show constant issues
28
+ */
29
+ 'drift.showConstantIssues': async () => {
30
+ constantsProvider.setViewMode('issues');
31
+ await vscode.commands.executeCommand('drift.constantsView.focus');
32
+ },
33
+ /**
34
+ * Go to constant definition
35
+ */
36
+ 'drift.goToConstant': async (file, line) => {
37
+ if (typeof file !== 'string' || typeof line !== 'number') {
38
+ return;
39
+ }
40
+ try {
41
+ const uri = vscode.Uri.file(file);
42
+ const document = await vscode.workspace.openTextDocument(uri);
43
+ const editor = await vscode.window.showTextDocument(document);
44
+ const position = new vscode.Position(Math.max(0, line - 1), 0);
45
+ editor.selection = new vscode.Selection(position, position);
46
+ editor.revealRange(new vscode.Range(position, position), vscode.TextEditorRevealType.InCenter);
47
+ }
48
+ catch {
49
+ void vscode.window.showErrorMessage(`Failed to open file: ${file}`);
50
+ }
51
+ },
52
+ /**
53
+ * Find constant usages
54
+ */
55
+ 'drift.findConstantUsages': async (constantName) => {
56
+ let searchName = constantName;
57
+ if (typeof searchName !== 'string' || searchName === '') {
58
+ // If no constant name provided, prompt for one
59
+ const input = await vscode.window.showInputBox({
60
+ prompt: 'Enter constant name to search for',
61
+ placeHolder: 'CONSTANT_NAME',
62
+ });
63
+ if (input === null || input === '') {
64
+ return;
65
+ }
66
+ searchName = input;
67
+ }
68
+ // Use VSCode's built-in search
69
+ await vscode.commands.executeCommand('workbench.action.findInFiles', {
70
+ query: searchName,
71
+ isRegex: false,
72
+ isCaseSensitive: true,
73
+ matchWholeWord: true,
74
+ });
75
+ },
76
+ /**
77
+ * Show constants overview
78
+ */
79
+ 'drift.showConstants': async () => {
80
+ constantsProvider.setViewMode('category');
81
+ await vscode.commands.executeCommand('drift.constantsView.focus');
82
+ },
83
+ };
84
+ }
85
+ //# sourceMappingURL=constants-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants-handlers.js","sourceRoot":"","sources":["../../../src/commands/handlers/constants-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/handlers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-handlers.d.ts","sourceRoot":"","sources":["../../../src/commands/handlers/pattern-handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,sBAAsB,CAAC;AAU1E;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,mBAAmB,GACjC,IAAI,CAyIN"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Pattern command handlers
3
+ *
4
+ * Single responsibility: Handle pattern-related commands.
5
+ */
6
+ import * as vscode from 'vscode';
7
+ import { DRIFT_COMMANDS } from '../command-definitions.js';
8
+ /**
9
+ * Create pattern command handlers
10
+ */
11
+ export function createPatternHandlers(router, connectionManager, notifications) {
12
+ // Show patterns command
13
+ router.register({
14
+ id: DRIFT_COMMANDS.showPatterns,
15
+ handler: async (_ctx) => {
16
+ // Focus the patterns tree view
17
+ await vscode.commands.executeCommand('drift.patterns.focus');
18
+ },
19
+ });
20
+ // Approve pattern command
21
+ router.register({
22
+ id: DRIFT_COMMANDS.approvePattern,
23
+ handler: async (ctx) => {
24
+ const client = connectionManager.getClient();
25
+ if (!client) {
26
+ throw new Error('Not connected to server');
27
+ }
28
+ const patternId = ctx.args[0];
29
+ if (patternId === null || patternId === '') {
30
+ // Show pattern picker
31
+ const patterns = await client.sendRequest('drift/patterns/list', { status: 'discovered' });
32
+ if (patterns.length === 0) {
33
+ await notifications.info('No patterns to approve.');
34
+ return;
35
+ }
36
+ const items = patterns.map((p) => ({
37
+ label: p.name,
38
+ description: p.id,
39
+ id: p.id,
40
+ }));
41
+ const selected = await notifications.quickPick(items, { title: 'Select Pattern to Approve' });
42
+ if (!selected) {
43
+ return;
44
+ }
45
+ await client.sendRequest('drift/patterns/approve', { id: selected.id });
46
+ await notifications.info(`Pattern "${selected.label}" approved.`);
47
+ }
48
+ else {
49
+ await client.sendRequest('drift/patterns/approve', { id: patternId });
50
+ await notifications.info(`Pattern approved.`);
51
+ }
52
+ },
53
+ });
54
+ // Ignore pattern command
55
+ router.register({
56
+ id: DRIFT_COMMANDS.ignorePattern,
57
+ handler: async (ctx) => {
58
+ const client = connectionManager.getClient();
59
+ if (!client) {
60
+ throw new Error('Not connected to server');
61
+ }
62
+ const patternId = ctx.args[0];
63
+ if (patternId === null || patternId === '') {
64
+ // Show pattern picker
65
+ const patterns = await client.sendRequest('drift/patterns/list', { status: 'discovered' });
66
+ if (patterns.length === 0) {
67
+ await notifications.info('No patterns to ignore.');
68
+ return;
69
+ }
70
+ const items = patterns.map((p) => ({
71
+ label: p.name,
72
+ description: p.id,
73
+ id: p.id,
74
+ }));
75
+ const selected = await notifications.quickPick(items, { title: 'Select Pattern to Ignore' });
76
+ if (!selected) {
77
+ return;
78
+ }
79
+ await client.sendRequest('drift/patterns/ignore', { id: selected.id });
80
+ await notifications.info(`Pattern "${selected.label}" ignored.`);
81
+ }
82
+ else {
83
+ await client.sendRequest('drift/patterns/ignore', { id: patternId });
84
+ await notifications.info(`Pattern ignored.`);
85
+ }
86
+ },
87
+ });
88
+ // Create variant command
89
+ router.register({
90
+ id: DRIFT_COMMANDS.createVariant,
91
+ handler: async (ctx) => {
92
+ const client = connectionManager.getClient();
93
+ if (!client) {
94
+ throw new Error('Not connected to server');
95
+ }
96
+ const patternId = ctx.args[0];
97
+ const violationId = ctx.args[1];
98
+ if (patternId === null || patternId === '') {
99
+ await notifications.warning('No pattern specified for variant creation.');
100
+ return;
101
+ }
102
+ // Get variant name from user
103
+ const name = await notifications.inputBox({
104
+ title: 'Create Variant',
105
+ prompt: 'Enter a name for this variant',
106
+ placeHolder: 'e.g., legacy-auth-pattern',
107
+ });
108
+ if (!name) {
109
+ return;
110
+ }
111
+ // Get variant description
112
+ const description = await notifications.inputBox({
113
+ title: 'Create Variant',
114
+ prompt: 'Enter a description (optional)',
115
+ placeHolder: 'e.g., Used in legacy authentication module',
116
+ });
117
+ await client.sendRequest('drift/patterns/createVariant', {
118
+ patternId,
119
+ violationId,
120
+ name,
121
+ description,
122
+ });
123
+ await notifications.info(`Variant "${name}" created.`);
124
+ },
125
+ });
126
+ }
127
+ //# sourceMappingURL=pattern-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-handlers.js","sourceRoot":"","sources":["../../../src/commands/handlers/pattern-handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAc3D;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAqB,EACrB,iBAAoC,EACpC,aAAkC;IAElC,wBAAwB;IACxB,MAAM,CAAC,QAAQ,CAAC;QACd,EAAE,EAAE,cAAc,CAAC,YAAY;QAC/B,OAAO,EAAE,KAAK,EAAE,IAAoB,EAAE,EAAE;YACtC,+BAA+B;YAC/B,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;QAC/D,CAAC;KACF,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,CAAC,QAAQ,CAAC;QACd,EAAE,EAAE,cAAc,CAAC,cAAc;QACjC,OAAO,EAAE,KAAK,EAAE,GAAmB,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAuB,CAAC;YAEpD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;gBAC3C,sBAAsB;gBACtB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CACvC,qBAAqB,EACrB,EAAE,MAAM,EAAE,YAAY,EAAE,CACzB,CAAC;gBAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBACpD,OAAO;gBACT,CAAC;gBAED,MAAM,KAAK,GAA2B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAA+B,EAAE,EAAE,CAAC,CAAC;oBACvF,KAAK,EAAE,CAAC,CAAC,IAAI;oBACb,WAAW,EAAE,CAAC,CAAC,EAAE;oBACjB,EAAE,EAAE,CAAC,CAAC,EAAE;iBACT,CAAC,CAAC,CAAC;gBAEJ,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;gBAE9F,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAAA,OAAO;gBAAA,CAAC;gBAExB,MAAM,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxE,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,KAAK,aAAa,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBACtE,MAAM,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,yBAAyB;IACzB,MAAM,CAAC,QAAQ,CAAC;QACd,EAAE,EAAE,cAAc,CAAC,aAAa;QAChC,OAAO,EAAE,KAAK,EAAE,GAAmB,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAuB,CAAC;YAEpD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;gBAC3C,sBAAsB;gBACtB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CACvC,qBAAqB,EACrB,EAAE,MAAM,EAAE,YAAY,EAAE,CACzB,CAAC;gBAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBACnD,OAAO;gBACT,CAAC;gBAED,MAAM,KAAK,GAA2B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAA+B,EAAE,EAAE,CAAC,CAAC;oBACvF,KAAK,EAAE,CAAC,CAAC,IAAI;oBACb,WAAW,EAAE,CAAC,CAAC,EAAE;oBACjB,EAAE,EAAE,CAAC,CAAC,EAAE;iBACT,CAAC,CAAC,CAAC;gBAEJ,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;gBAE7F,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAAA,OAAO;gBAAA,CAAC;gBAExB,MAAM,MAAM,CAAC,WAAW,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvE,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,KAAK,YAAY,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,CAAC,WAAW,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBACrE,MAAM,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,yBAAyB;IACzB,MAAM,CAAC,QAAQ,CAAC;QACd,EAAE,EAAE,cAAc,CAAC,aAAa;QAChC,OAAO,EAAE,KAAK,EAAE,GAAmB,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAuB,CAAC;YACpD,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAuB,CAAC;YAEtD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;gBAC3C,MAAM,aAAa,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YAED,6BAA6B;YAC7B,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC;gBACxC,KAAK,EAAE,gBAAgB;gBACvB,MAAM,EAAE,+BAA+B;gBACvC,WAAW,EAAE,2BAA2B;aACzC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAA,OAAO;YAAA,CAAC;YAEpB,0BAA0B;YAC1B,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC;gBAC/C,KAAK,EAAE,gBAAgB;gBACvB,MAAM,EAAE,gCAAgC;gBACxC,WAAW,EAAE,4CAA4C;aAC1D,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,WAAW,CAAC,8BAA8B,EAAE;gBACvD,SAAS;gBACT,WAAW;gBACX,IAAI;gBACJ,WAAW;aACZ,CAAC,CAAC;YAEH,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,CAAC;QACzD,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-handlers.d.ts","sourceRoot":"","sources":["../../../src/commands/handlers/scan-handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,sBAAsB,CAAC;AAG1E;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,mBAAmB,EAClC,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAgFN"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Scan command handlers
3
+ *
4
+ * Single responsibility: Handle scan-related commands.
5
+ */
6
+ import * as vscode from 'vscode';
7
+ import { DRIFT_COMMANDS } from '../command-definitions.js';
8
+ /**
9
+ * Create scan command handlers
10
+ */
11
+ export function createScanHandlers(router, connectionManager, stateManager, notifications, eventBus) {
12
+ // Rescan workspace command
13
+ router.register({
14
+ id: DRIFT_COMMANDS.rescan,
15
+ showProgress: true,
16
+ progressTitle: 'Scanning workspace...',
17
+ handler: async (ctx) => {
18
+ const client = connectionManager.getClient();
19
+ if (!client) {
20
+ throw new Error('Not connected to server');
21
+ }
22
+ // Update state to scanning
23
+ stateManager.update(draft => {
24
+ draft.workspace.scanning = true;
25
+ });
26
+ eventBus.emit('scan:started', { files: 0 });
27
+ try {
28
+ ctx.progress?.report({ message: 'Analyzing patterns...' });
29
+ const result = await client.sendRequest('drift/rescan');
30
+ // Update state with results
31
+ stateManager.update(draft => {
32
+ draft.workspace.scanning = false;
33
+ draft.workspace.lastScanTime = Date.now();
34
+ draft.patterns.total = result.patterns;
35
+ draft.violations.total = result.violations;
36
+ });
37
+ eventBus.emit('scan:completed', {
38
+ duration: result.duration,
39
+ patterns: result.patterns,
40
+ violations: result.violations,
41
+ });
42
+ await notifications.info(`Scan complete: ${String(result.patterns)} patterns, ${String(result.violations)} violations`);
43
+ }
44
+ catch (error) {
45
+ stateManager.update(draft => {
46
+ draft.workspace.scanning = false;
47
+ });
48
+ throw error;
49
+ }
50
+ },
51
+ });
52
+ // Scan current file command
53
+ router.register({
54
+ id: DRIFT_COMMANDS.scanFile,
55
+ handler: async (_ctx) => {
56
+ const editor = vscode.window.activeTextEditor;
57
+ if (!editor) {
58
+ await notifications.warning('No file is currently open.');
59
+ return;
60
+ }
61
+ const client = connectionManager.getClient();
62
+ if (!client) {
63
+ throw new Error('Not connected to server');
64
+ }
65
+ const uri = editor.document.uri.toString();
66
+ await notifications.withProgress('Scanning file...', async (progress) => {
67
+ progress.report({ message: editor.document.fileName });
68
+ await client.sendRequest('drift/scanFile', { uri });
69
+ await notifications.info('File scan complete.');
70
+ });
71
+ },
72
+ });
73
+ }
74
+ //# sourceMappingURL=scan-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-handlers.js","sourceRoot":"","sources":["../../../src/commands/handlers/scan-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-handlers.d.ts","sourceRoot":"","sources":["../../../src/commands/handlers/ui-handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,sBAAsB,CAAC;AAE1E;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,mBAAmB,GACjC,IAAI,CAoEN"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"violation-handlers.d.ts","sourceRoot":"","sources":["../../../src/commands/handlers/violation-handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,sBAAsB,CAAC;AAG1E;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,mBAAmB,GACjC,IAAI,CA6EN"}