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.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-lint.log +44 -1
- package/.turbo/turbo-test.log +0 -34
- package/dist/activation/activation-controller.d.ts.map +1 -0
- package/dist/activation/activation-controller.js +235 -0
- package/dist/activation/activation-controller.js.map +1 -0
- package/dist/activation/activation-phases.d.ts.map +1 -0
- package/dist/activation/index.d.ts.map +1 -0
- package/dist/client/connection-manager.d.ts.map +1 -0
- package/dist/client/connection-manager.js +216 -0
- package/dist/client/connection-manager.js.map +1 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/language-client-factory.d.ts.map +1 -0
- package/dist/client/request-middleware.d.ts.map +1 -0
- package/dist/client/request-middleware.js +85 -0
- package/dist/client/request-middleware.js.map +1 -0
- package/dist/commands/command-router.d.ts.map +1 -0
- package/dist/commands/command-router.js +129 -0
- package/dist/commands/command-router.js.map +1 -0
- package/dist/commands/handlers/connection-handlers.d.ts.map +1 -0
- package/dist/commands/handlers/connection-handlers.js +57 -0
- package/dist/commands/handlers/connection-handlers.js.map +1 -0
- package/dist/commands/handlers/constants-handlers.d.ts.map +1 -0
- package/dist/commands/handlers/constants-handlers.js +85 -0
- package/dist/commands/handlers/constants-handlers.js.map +1 -0
- package/dist/commands/handlers/index.d.ts.map +1 -0
- package/dist/commands/handlers/pattern-handlers.d.ts.map +1 -0
- package/dist/commands/handlers/pattern-handlers.js +127 -0
- package/dist/commands/handlers/pattern-handlers.js.map +1 -0
- package/dist/commands/handlers/scan-handlers.d.ts.map +1 -0
- package/dist/commands/handlers/scan-handlers.js +74 -0
- package/dist/commands/handlers/scan-handlers.js.map +1 -0
- package/dist/commands/handlers/ui-handlers.d.ts.map +1 -0
- package/dist/commands/handlers/violation-handlers.d.ts.map +1 -0
- package/dist/commands/handlers/violation-handlers.js +75 -0
- package/dist/commands/handlers/violation-handlers.js.map +1 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/middleware/connection-check-middleware.d.ts.map +1 -0
- package/dist/commands/middleware/index.d.ts.map +1 -0
- package/dist/commands/middleware/logging-middleware.d.ts.map +1 -0
- package/dist/commands/middleware/telemetry-middleware.d.ts.map +1 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +182 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/validator.d.ts.map +1 -0
- package/dist/config/validator.js +89 -0
- package/dist/config/validator.js.map +1 -0
- package/dist/extension.d.ts.map +1 -0
- package/dist/extension.js +51 -0
- package/dist/extension.js.map +1 -0
- package/dist/infrastructure/disposable-manager.d.ts.map +1 -0
- package/dist/infrastructure/disposable-manager.js +76 -0
- package/dist/infrastructure/disposable-manager.js.map +1 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/logger.d.ts.map +1 -0
- package/dist/infrastructure/logger.js +82 -0
- package/dist/infrastructure/logger.js.map +1 -0
- package/dist/infrastructure/service-container.d.ts +68 -0
- package/dist/infrastructure/service-container.d.ts.map +1 -0
- package/dist/infrastructure/service-container.js +92 -0
- package/dist/infrastructure/service-container.js.map +1 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/initial-state.d.ts.map +1 -0
- package/dist/state/selectors.d.ts.map +1 -0
- package/dist/state/state-manager.d.ts.map +1 -0
- package/dist/state/state-manager.js +166 -0
- package/dist/state/state-manager.js.map +1 -0
- package/dist/types/config-types.d.ts.map +1 -0
- package/dist/types/extension-types.d.ts +45 -0
- package/dist/types/extension-types.d.ts.map +1 -0
- package/dist/types/extension-types.js +5 -0
- package/dist/types/extension-types.js.map +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lsp-types.d.ts.map +1 -0
- package/dist/types/state-types.d.ts.map +1 -0
- package/dist/ui/decorations/decoration-controller.d.ts.map +1 -0
- package/dist/ui/decorations/decoration-controller.js +196 -0
- package/dist/ui/decorations/decoration-controller.js.map +1 -0
- package/dist/ui/decorations/decoration-types.d.ts.map +1 -0
- package/dist/ui/decorations/index.d.ts.map +1 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/notifications/index.d.ts.map +1 -0
- package/dist/ui/notifications/notification-service.d.ts.map +1 -0
- package/dist/ui/notifications/notification-service.js +103 -0
- package/dist/ui/notifications/notification-service.js.map +1 -0
- package/dist/ui/status-bar/index.d.ts.map +1 -0
- package/dist/ui/status-bar/status-bar-controller.d.ts.map +1 -0
- package/dist/ui/status-bar/status-bar-controller.js +111 -0
- package/dist/ui/status-bar/status-bar-controller.js.map +1 -0
- package/dist/ui/status-bar/status-bar-modes.d.ts.map +1 -0
- package/dist/ui/status-bar/status-bar-modes.js +112 -0
- package/dist/ui/status-bar/status-bar-modes.js.map +1 -0
- package/dist/views/constants-tree-provider.d.ts +111 -0
- package/dist/views/constants-tree-provider.d.ts.map +1 -0
- package/dist/views/constants-tree-provider.js +343 -0
- package/dist/views/constants-tree-provider.js.map +1 -0
- package/dist/views/files-tree-provider.d.ts +36 -0
- package/dist/views/files-tree-provider.d.ts.map +1 -0
- package/dist/views/files-tree-provider.js +95 -0
- package/dist/views/files-tree-provider.js.map +1 -0
- package/dist/views/index.d.ts.map +1 -0
- package/dist/views/patterns-tree-provider.d.ts.map +1 -0
- package/dist/views/violations-tree-provider.d.ts.map +1 -0
- package/dist/webview/index.d.ts.map +1 -0
- package/dist/webview/webview-manager.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/activation/activation-controller.ts +13 -13
- package/src/client/connection-manager.ts +11 -9
- package/src/client/request-middleware.ts +6 -6
- package/src/commands/command-router.ts +7 -5
- package/src/commands/handlers/connection-handlers.ts +5 -5
- package/src/commands/handlers/constants-handlers.ts +13 -12
- package/src/commands/handlers/pattern-handlers.ts +3 -3
- package/src/commands/handlers/scan-handlers.ts +1 -1
- package/src/commands/handlers/violation-handlers.ts +6 -3
- package/src/config/config-manager.ts +11 -2
- package/src/config/validator.ts +13 -17
- package/src/extension.ts +2 -1
- package/src/infrastructure/disposable-manager.ts +2 -1
- package/src/infrastructure/logger.ts +3 -8
- package/src/infrastructure/service-container.ts +6 -7
- package/src/state/state-manager.ts +8 -11
- package/src/types/extension-types.ts +1 -1
- package/src/ui/decorations/decoration-controller.ts +4 -5
- package/src/ui/notifications/notification-service.ts +5 -5
- package/src/ui/status-bar/status-bar-controller.ts +3 -3
- package/src/ui/status-bar/status-bar-modes.ts +24 -9
- package/src/views/constants-tree-provider.ts +17 -19
- package/src/views/files-tree-provider.ts +0 -4
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -90,30 +90,45 @@ export function getStatusBarMode(
|
|
|
90
90
|
): StatusBarMode {
|
|
91
91
|
// Connection states take priority
|
|
92
92
|
if (connectionState !== 'connected') {
|
|
93
|
-
|
|
93
|
+
const mode = StatusBarModes[connectionState];
|
|
94
|
+
return mode ?? StatusBarModes['disconnected'] ?? {
|
|
95
|
+
icon: '$(circle-slash)',
|
|
96
|
+
text: 'Drift: Disconnected',
|
|
97
|
+
tooltip: 'Drift is not connected.',
|
|
98
|
+
};
|
|
94
99
|
}
|
|
95
100
|
|
|
96
101
|
// Scanning state
|
|
97
102
|
if (scanning) {
|
|
98
|
-
|
|
103
|
+
const scanningMode = StatusBarModes['scanning'];
|
|
104
|
+
return scanningMode ?? {
|
|
105
|
+
icon: '$(sync~spin)',
|
|
106
|
+
text: 'Drift: Scanning...',
|
|
107
|
+
tooltip: 'Scanning workspace for patterns...',
|
|
108
|
+
};
|
|
99
109
|
}
|
|
100
110
|
|
|
101
111
|
// Violation-based states
|
|
102
112
|
if (violations > 0) {
|
|
103
|
-
const warningMode = StatusBarModes['warning']
|
|
113
|
+
const warningMode = StatusBarModes['warning'];
|
|
104
114
|
const result: StatusBarMode = {
|
|
105
|
-
icon: warningMode
|
|
106
|
-
text: `Drift: ${violations}`,
|
|
107
|
-
tooltip: `${violations} violation${violations === 1 ? '' : 's'} found. Click to view.`,
|
|
115
|
+
icon: warningMode?.icon ?? '$(warning)',
|
|
116
|
+
text: `Drift: ${String(violations)}`,
|
|
117
|
+
tooltip: `${String(violations)} violation${violations === 1 ? '' : 's'} found. Click to view.`,
|
|
108
118
|
};
|
|
109
|
-
if (warningMode
|
|
119
|
+
if (warningMode?.backgroundColor) {
|
|
110
120
|
result.backgroundColor = warningMode.backgroundColor;
|
|
111
121
|
}
|
|
112
|
-
if (warningMode
|
|
122
|
+
if (warningMode?.command) {
|
|
113
123
|
result.command = warningMode.command;
|
|
114
124
|
}
|
|
115
125
|
return result;
|
|
116
126
|
}
|
|
117
127
|
|
|
118
|
-
|
|
128
|
+
const healthyMode = StatusBarModes['healthy'];
|
|
129
|
+
return healthyMode ?? {
|
|
130
|
+
icon: '$(pass)',
|
|
131
|
+
text: 'Drift',
|
|
132
|
+
tooltip: 'No violations found.',
|
|
133
|
+
};
|
|
119
134
|
}
|
|
@@ -102,10 +102,6 @@ export interface ConstantTreeItem extends BaseTreeItem {
|
|
|
102
102
|
export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
103
103
|
private viewMode: 'category' | 'language' | 'issues' = 'category';
|
|
104
104
|
|
|
105
|
-
constructor(client: LanguageClient | null) {
|
|
106
|
-
super(client);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
105
|
/**
|
|
110
106
|
* Set the view mode
|
|
111
107
|
*/
|
|
@@ -162,7 +158,8 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
162
158
|
data: { byCategory: Record<string, number> };
|
|
163
159
|
}>('drift/constants', { action: 'status' });
|
|
164
160
|
|
|
165
|
-
const
|
|
161
|
+
const byCategory = response.data.byCategory ?? {};
|
|
162
|
+
const categories = Object.entries(byCategory)
|
|
166
163
|
.filter(([, count]) => count > 0)
|
|
167
164
|
.sort(([, a], [, b]) => b - a);
|
|
168
165
|
|
|
@@ -180,7 +177,8 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
180
177
|
data: { byLanguage: Record<string, number> };
|
|
181
178
|
}>('drift/constants', { action: 'status' });
|
|
182
179
|
|
|
183
|
-
const
|
|
180
|
+
const byLanguage = response.data.byLanguage ?? {};
|
|
181
|
+
const languages = Object.entries(byLanguage)
|
|
184
182
|
.filter(([, count]) => count > 0)
|
|
185
183
|
.sort(([, a], [, b]) => b - a);
|
|
186
184
|
|
|
@@ -204,7 +202,7 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
204
202
|
};
|
|
205
203
|
}>('drift/constants', { action: 'status' });
|
|
206
204
|
|
|
207
|
-
const issues = response.data.issues
|
|
205
|
+
const issues = response.data.issues ?? {
|
|
208
206
|
potentialSecrets: 0,
|
|
209
207
|
inconsistentValues: 0,
|
|
210
208
|
deadConstants: 0,
|
|
@@ -246,11 +244,11 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
246
244
|
|
|
247
245
|
const items: ConstantTreeItem[] = [];
|
|
248
246
|
|
|
249
|
-
for (const constant of response.data.constants
|
|
247
|
+
for (const constant of response.data.constants ?? []) {
|
|
250
248
|
items.push(this.createConstantItem(constant));
|
|
251
249
|
}
|
|
252
250
|
|
|
253
|
-
for (const enumDef of response.data.enums
|
|
251
|
+
for (const enumDef of response.data.enums ?? []) {
|
|
254
252
|
items.push(this.createEnumItem(enumDef));
|
|
255
253
|
}
|
|
256
254
|
|
|
@@ -268,11 +266,11 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
268
266
|
|
|
269
267
|
const items: ConstantTreeItem[] = [];
|
|
270
268
|
|
|
271
|
-
for (const constant of response.data.constants
|
|
269
|
+
for (const constant of response.data.constants ?? []) {
|
|
272
270
|
items.push(this.createConstantItem(constant));
|
|
273
271
|
}
|
|
274
272
|
|
|
275
|
-
for (const enumDef of response.data.enums
|
|
273
|
+
for (const enumDef of response.data.enums ?? []) {
|
|
276
274
|
items.push(this.createEnumItem(enumDef));
|
|
277
275
|
}
|
|
278
276
|
|
|
@@ -289,7 +287,7 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
289
287
|
data: { potentialSecrets: SecretIssue[] };
|
|
290
288
|
}>('drift/constants', { action: 'secrets', limit: 50 });
|
|
291
289
|
|
|
292
|
-
return (response.data.potentialSecrets
|
|
290
|
+
return (response.data.potentialSecrets ?? []).map((secret) =>
|
|
293
291
|
this.createSecretItem(secret)
|
|
294
292
|
);
|
|
295
293
|
}
|
|
@@ -299,7 +297,7 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
299
297
|
data: { inconsistencies: InconsistentIssue[] };
|
|
300
298
|
}>('drift/constants', { action: 'inconsistent', limit: 50 });
|
|
301
299
|
|
|
302
|
-
return (response.data.inconsistencies
|
|
300
|
+
return (response.data.inconsistencies ?? []).map((inc) =>
|
|
303
301
|
this.createInconsistentItem(inc)
|
|
304
302
|
);
|
|
305
303
|
}
|
|
@@ -309,7 +307,7 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
309
307
|
data: { deadConstants: Array<{ id: string; name: string; file: string; line: number }> };
|
|
310
308
|
}>('drift/constants', { action: 'dead', limit: 50 });
|
|
311
309
|
|
|
312
|
-
return (response.data.deadConstants
|
|
310
|
+
return (response.data.deadConstants ?? []).map((dead) =>
|
|
313
311
|
this.createDeadItem(dead)
|
|
314
312
|
);
|
|
315
313
|
}
|
|
@@ -324,7 +322,7 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
324
322
|
return {
|
|
325
323
|
type: 'category',
|
|
326
324
|
label: category.name,
|
|
327
|
-
description: `${category.count} constants`,
|
|
325
|
+
description: `${String(category.count)} constants`,
|
|
328
326
|
iconPath: this.getCategoryIcon(category.name),
|
|
329
327
|
collapsibleState: vscode.TreeItemCollapsibleState.Collapsed,
|
|
330
328
|
contextValue: 'constant-category',
|
|
@@ -336,7 +334,7 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
336
334
|
return {
|
|
337
335
|
type: 'language',
|
|
338
336
|
label: language.name,
|
|
339
|
-
description: `${language.count} constants`,
|
|
337
|
+
description: `${String(language.count)} constants`,
|
|
340
338
|
iconPath: this.getLanguageIcon(language.name),
|
|
341
339
|
collapsibleState: vscode.TreeItemCollapsibleState.Collapsed,
|
|
342
340
|
contextValue: 'constant-language',
|
|
@@ -359,7 +357,7 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
359
357
|
return {
|
|
360
358
|
type: 'issue-group',
|
|
361
359
|
label: name,
|
|
362
|
-
description: `${count} issues`,
|
|
360
|
+
description: `${String(count)} issues`,
|
|
363
361
|
iconPath: new vscode.ThemeIcon(icon, new vscode.ThemeColor(color)),
|
|
364
362
|
collapsibleState: vscode.TreeItemCollapsibleState.Collapsed,
|
|
365
363
|
contextValue: 'constant-issue-group',
|
|
@@ -433,7 +431,7 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
433
431
|
return {
|
|
434
432
|
type: 'inconsistent',
|
|
435
433
|
label: inc.name,
|
|
436
|
-
description: `${inc.instanceCount} different values`,
|
|
434
|
+
description: `${String(inc.instanceCount)} different values`,
|
|
437
435
|
iconPath: new vscode.ThemeIcon('warning', new vscode.ThemeColor('charts.yellow')),
|
|
438
436
|
collapsibleState: vscode.TreeItemCollapsibleState.None,
|
|
439
437
|
contextValue: 'constant-inconsistent',
|
|
@@ -501,7 +499,7 @@ export class ConstantsTreeProvider extends BaseTreeProvider<ConstantTreeItem> {
|
|
|
501
499
|
|
|
502
500
|
md.appendMarkdown(`### ${constant.name}\n\n`);
|
|
503
501
|
md.appendMarkdown(`**Qualified Name:** \`${constant.qualifiedName}\`\n\n`);
|
|
504
|
-
md.appendMarkdown(`**File:** ${constant.file}:${constant.line}\n\n`);
|
|
502
|
+
md.appendMarkdown(`**File:** ${constant.file}:${String(constant.line)}\n\n`);
|
|
505
503
|
md.appendMarkdown(`**Language:** ${constant.language}\n\n`);
|
|
506
504
|
md.appendMarkdown(`**Kind:** ${constant.kind}\n\n`);
|
|
507
505
|
md.appendMarkdown(`**Category:** ${constant.category}\n\n`);
|
|
@@ -29,10 +29,6 @@ export interface FileTreeItem extends BaseTreeItem {
|
|
|
29
29
|
* Files tree provider
|
|
30
30
|
*/
|
|
31
31
|
export class FilesTreeProvider extends BaseTreeProvider<FileTreeItem> {
|
|
32
|
-
constructor(client: LanguageClient | null) {
|
|
33
|
-
super(client);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
32
|
async getChildren(element?: FileTreeItem): Promise<FileTreeItem[]> {
|
|
37
33
|
if (!this.client) {
|
|
38
34
|
return [];
|