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
@@ -90,30 +90,45 @@ export function getStatusBarMode(
90
90
  ): StatusBarMode {
91
91
  // Connection states take priority
92
92
  if (connectionState !== 'connected') {
93
- return StatusBarModes[connectionState] ?? StatusBarModes['disconnected']!;
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
- return StatusBarModes['scanning']!;
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.icon,
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.backgroundColor) {
119
+ if (warningMode?.backgroundColor) {
110
120
  result.backgroundColor = warningMode.backgroundColor;
111
121
  }
112
- if (warningMode.command) {
122
+ if (warningMode?.command) {
113
123
  result.command = warningMode.command;
114
124
  }
115
125
  return result;
116
126
  }
117
127
 
118
- return StatusBarModes['healthy']!;
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 categories = Object.entries(response.data.byCategory || {})
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 languages = Object.entries(response.data.byLanguage || {})
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 || []).map((secret) =>
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 || []).map((inc) =>
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 || []).map((dead) =>
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 [];