driftdetect-lsp 0.9.32 → 0.9.34
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/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +183 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/commands/show-patterns.d.ts +30 -0
- package/dist/commands/show-patterns.d.ts.map +1 -1
- package/dist/commands/show-patterns.js +175 -0
- package/dist/commands/show-patterns.js.map +1 -0
- package/dist/handlers/code-actions.d.ts +32 -0
- package/dist/handlers/code-actions.d.ts.map +1 -1
- package/dist/handlers/code-actions.js +184 -0
- package/dist/handlers/code-actions.js.map +1 -0
- package/dist/handlers/code-lens.d.ts +32 -0
- package/dist/handlers/code-lens.d.ts.map +1 -1
- package/dist/handlers/code-lens.js +162 -0
- package/dist/handlers/code-lens.js.map +1 -0
- package/dist/handlers/commands.d.ts +48 -0
- package/dist/handlers/commands.d.ts.map +1 -1
- package/dist/handlers/commands.js +360 -0
- package/dist/handlers/commands.js.map +1 -0
- package/dist/handlers/diagnostics.d.ts +73 -0
- package/dist/handlers/diagnostics.d.ts.map +1 -1
- package/dist/handlers/diagnostics.js +259 -0
- package/dist/handlers/diagnostics.js.map +1 -0
- package/dist/handlers/document-sync.d.ts +37 -0
- package/dist/handlers/document-sync.d.ts.map +1 -1
- package/dist/handlers/document-sync.js +49 -0
- package/dist/handlers/document-sync.js.map +1 -0
- package/dist/handlers/hover.d.ts +30 -0
- package/dist/handlers/hover.d.ts.map +1 -1
- package/dist/handlers/hover.js +119 -0
- package/dist/handlers/hover.js.map +1 -0
- package/dist/integration/core-scanner.d.ts.map +1 -1
- package/dist/integration/core-scanner.js +309 -0
- package/dist/integration/core-scanner.js.map +1 -0
- package/dist/integration/pattern-store-adapter.d.ts +117 -0
- package/dist/integration/pattern-store-adapter.d.ts.map +1 -1
- package/dist/integration/pattern-store-adapter.js +349 -0
- package/dist/integration/pattern-store-adapter.js.map +1 -0
- package/dist/integration/types.d.ts +134 -0
- package/dist/integration/types.d.ts.map +1 -1
- package/dist/integration/types.js +39 -0
- package/dist/integration/types.js.map +1 -0
- package/dist/server/types.d.ts +139 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +8 -0
- package/dist/server/types.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +208 -0
- package/dist/server.js.map +1 -0
- package/dist/utils/diagnostic.js +263 -0
- package/dist/utils/diagnostic.js.map +1 -0
- package/dist/utils/document.d.ts +40 -0
- package/dist/utils/document.d.ts.map +1 -0
- package/dist/utils/document.js +138 -0
- package/dist/utils/document.js.map +1 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/workspace.d.ts.map +1 -1
- package/dist/utils/workspace.js +241 -0
- package/dist/utils/workspace.js.map +1 -0
- package/package.json +13 -13
- package/LICENSE +0 -121
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern Store Adapter
|
|
3
|
+
*
|
|
4
|
+
* Adapts driftdetect-core PatternStore and VariantManager for use in LSP commands.
|
|
5
|
+
* Provides approve, ignore, and variant operations that persist to disk.
|
|
6
|
+
*
|
|
7
|
+
* @requirements 28.1 - drift.approvePattern
|
|
8
|
+
* @requirements 28.2 - drift.ignorePattern
|
|
9
|
+
* @requirements 28.3 - drift.ignoreOnce
|
|
10
|
+
* @requirements 28.4 - drift.createVariant
|
|
11
|
+
*/
|
|
12
|
+
import { PatternStore, VariantManager, } from 'driftdetect-core';
|
|
13
|
+
import { DEFAULT_CORE_INTEGRATION_CONFIG, patternToInfo } from './types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Pattern Store Adapter
|
|
16
|
+
*
|
|
17
|
+
* Provides a simplified interface for LSP commands to interact with
|
|
18
|
+
* the driftdetect-core PatternStore and VariantManager.
|
|
19
|
+
*/
|
|
20
|
+
export class PatternStoreAdapter {
|
|
21
|
+
config;
|
|
22
|
+
logger;
|
|
23
|
+
patternStore = null;
|
|
24
|
+
variantManager = null;
|
|
25
|
+
initialized = false;
|
|
26
|
+
constructor(config = {}, logger) {
|
|
27
|
+
this.config = { ...DEFAULT_CORE_INTEGRATION_CONFIG, ...config };
|
|
28
|
+
this.logger = logger;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Initialize the adapter
|
|
32
|
+
*/
|
|
33
|
+
async initialize() {
|
|
34
|
+
if (this.initialized) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
this.logger.info('Initializing pattern store adapter...');
|
|
38
|
+
try {
|
|
39
|
+
// Initialize pattern store
|
|
40
|
+
const storeConfig = {
|
|
41
|
+
rootDir: this.config.rootDir,
|
|
42
|
+
validateSchema: this.config.validateSchema,
|
|
43
|
+
trackHistory: this.config.trackHistory,
|
|
44
|
+
autoSave: this.config.autoSave,
|
|
45
|
+
};
|
|
46
|
+
this.patternStore = new PatternStore(storeConfig);
|
|
47
|
+
await this.patternStore.initialize();
|
|
48
|
+
this.logger.info('Pattern store initialized');
|
|
49
|
+
// Initialize variant manager
|
|
50
|
+
const variantConfig = {
|
|
51
|
+
rootDir: this.config.rootDir,
|
|
52
|
+
autoSave: this.config.autoSave,
|
|
53
|
+
};
|
|
54
|
+
this.variantManager = new VariantManager(variantConfig);
|
|
55
|
+
await this.variantManager.initialize();
|
|
56
|
+
this.logger.info('Variant manager initialized');
|
|
57
|
+
this.initialized = true;
|
|
58
|
+
this.logger.info('Pattern store adapter initialization complete');
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
this.logger.error(`Failed to initialize pattern store adapter: ${error}`);
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if the adapter is initialized
|
|
67
|
+
*/
|
|
68
|
+
isInitialized() {
|
|
69
|
+
return this.initialized;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get the pattern store instance
|
|
73
|
+
*/
|
|
74
|
+
getPatternStore() {
|
|
75
|
+
return this.patternStore;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get the variant manager instance
|
|
79
|
+
*/
|
|
80
|
+
getVariantManager() {
|
|
81
|
+
return this.variantManager;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Approve a pattern
|
|
85
|
+
*
|
|
86
|
+
* Moves the pattern from discovered to approved status and persists the change.
|
|
87
|
+
*
|
|
88
|
+
* @requirements 28.1 - drift.approvePattern
|
|
89
|
+
*/
|
|
90
|
+
async approve(patternId, approvedBy) {
|
|
91
|
+
if (!this.initialized || !this.patternStore) {
|
|
92
|
+
return {
|
|
93
|
+
success: false,
|
|
94
|
+
patternId,
|
|
95
|
+
removedViolations: 0,
|
|
96
|
+
error: 'Pattern store not initialized',
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
this.logger.info(`Approving pattern: ${patternId}`);
|
|
101
|
+
// Check if pattern exists
|
|
102
|
+
const pattern = this.patternStore.get(patternId);
|
|
103
|
+
if (!pattern) {
|
|
104
|
+
return {
|
|
105
|
+
success: false,
|
|
106
|
+
patternId,
|
|
107
|
+
removedViolations: 0,
|
|
108
|
+
error: `Pattern not found: ${patternId}`,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
// Approve the pattern
|
|
112
|
+
this.patternStore.approve(patternId, approvedBy);
|
|
113
|
+
// Save changes
|
|
114
|
+
await this.patternStore.saveAll();
|
|
115
|
+
this.logger.info(`Pattern approved: ${patternId}`);
|
|
116
|
+
return {
|
|
117
|
+
success: true,
|
|
118
|
+
patternId,
|
|
119
|
+
removedViolations: pattern.outliers.length,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
124
|
+
this.logger.error(`Failed to approve pattern ${patternId}: ${errorMessage}`);
|
|
125
|
+
return {
|
|
126
|
+
success: false,
|
|
127
|
+
patternId,
|
|
128
|
+
removedViolations: 0,
|
|
129
|
+
error: errorMessage,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Ignore a pattern
|
|
135
|
+
*
|
|
136
|
+
* Moves the pattern to ignored status and persists the change.
|
|
137
|
+
*
|
|
138
|
+
* @requirements 28.2 - drift.ignorePattern
|
|
139
|
+
*/
|
|
140
|
+
async ignore(patternId) {
|
|
141
|
+
if (!this.initialized || !this.patternStore) {
|
|
142
|
+
return {
|
|
143
|
+
success: false,
|
|
144
|
+
patternId,
|
|
145
|
+
suppressedViolations: 0,
|
|
146
|
+
error: 'Pattern store not initialized',
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
this.logger.info(`Ignoring pattern: ${patternId}`);
|
|
151
|
+
// Check if pattern exists
|
|
152
|
+
const pattern = this.patternStore.get(patternId);
|
|
153
|
+
if (!pattern) {
|
|
154
|
+
return {
|
|
155
|
+
success: false,
|
|
156
|
+
patternId,
|
|
157
|
+
suppressedViolations: 0,
|
|
158
|
+
error: `Pattern not found: ${patternId}`,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
// Ignore the pattern
|
|
162
|
+
this.patternStore.ignore(patternId);
|
|
163
|
+
// Save changes
|
|
164
|
+
await this.patternStore.saveAll();
|
|
165
|
+
this.logger.info(`Pattern ignored: ${patternId}`);
|
|
166
|
+
return {
|
|
167
|
+
success: true,
|
|
168
|
+
patternId,
|
|
169
|
+
suppressedViolations: pattern.outliers.length,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
174
|
+
this.logger.error(`Failed to ignore pattern ${patternId}: ${errorMessage}`);
|
|
175
|
+
return {
|
|
176
|
+
success: false,
|
|
177
|
+
patternId,
|
|
178
|
+
suppressedViolations: 0,
|
|
179
|
+
error: errorMessage,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Create a variant for a pattern
|
|
185
|
+
*
|
|
186
|
+
* Creates an intentional deviation from a pattern and persists it.
|
|
187
|
+
*
|
|
188
|
+
* @requirements 28.4 - drift.createVariant
|
|
189
|
+
*/
|
|
190
|
+
async createVariant(input) {
|
|
191
|
+
if (!this.initialized || !this.variantManager) {
|
|
192
|
+
return {
|
|
193
|
+
success: false,
|
|
194
|
+
patternId: input.patternId,
|
|
195
|
+
suppressedViolations: 0,
|
|
196
|
+
error: 'Variant manager not initialized',
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
try {
|
|
200
|
+
this.logger.info(`Creating variant for pattern: ${input.patternId}`);
|
|
201
|
+
// Create the location
|
|
202
|
+
const location = {
|
|
203
|
+
file: input.file,
|
|
204
|
+
line: input.line,
|
|
205
|
+
column: input.column,
|
|
206
|
+
};
|
|
207
|
+
// Build the variant input, conditionally including scopeValue
|
|
208
|
+
const variantInput = {
|
|
209
|
+
patternId: input.patternId,
|
|
210
|
+
name: input.name,
|
|
211
|
+
reason: input.reason,
|
|
212
|
+
scope: input.scope,
|
|
213
|
+
locations: [location],
|
|
214
|
+
};
|
|
215
|
+
// Only add scopeValue if provided
|
|
216
|
+
if (input.scopeValue) {
|
|
217
|
+
variantInput.scopeValue = input.scopeValue;
|
|
218
|
+
}
|
|
219
|
+
// Create the variant
|
|
220
|
+
const variant = this.variantManager.create(variantInput);
|
|
221
|
+
// Save changes
|
|
222
|
+
await this.variantManager.saveAll();
|
|
223
|
+
this.logger.info(`Variant created: ${variant.id}`);
|
|
224
|
+
return {
|
|
225
|
+
success: true,
|
|
226
|
+
variantId: variant.id,
|
|
227
|
+
patternId: input.patternId,
|
|
228
|
+
suppressedViolations: 1,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
233
|
+
this.logger.error(`Failed to create variant for ${input.patternId}: ${errorMessage}`);
|
|
234
|
+
return {
|
|
235
|
+
success: false,
|
|
236
|
+
patternId: input.patternId,
|
|
237
|
+
suppressedViolations: 0,
|
|
238
|
+
error: errorMessage,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Check if a location is covered by a variant
|
|
244
|
+
*
|
|
245
|
+
* Used to filter out violations that are covered by variants.
|
|
246
|
+
*/
|
|
247
|
+
isLocationCovered(patternId, file, line, column) {
|
|
248
|
+
if (!this.initialized || !this.variantManager) {
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
const location = { file, line, column };
|
|
252
|
+
return this.variantManager.isLocationCovered(patternId, location);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Get all patterns
|
|
256
|
+
*/
|
|
257
|
+
getAllPatterns() {
|
|
258
|
+
if (!this.initialized || !this.patternStore) {
|
|
259
|
+
return [];
|
|
260
|
+
}
|
|
261
|
+
return this.patternStore.getAll().map(patternToInfo);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get approved patterns
|
|
265
|
+
*/
|
|
266
|
+
getApprovedPatterns() {
|
|
267
|
+
if (!this.initialized || !this.patternStore) {
|
|
268
|
+
return [];
|
|
269
|
+
}
|
|
270
|
+
return this.patternStore.getApproved().map(patternToInfo);
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Get discovered patterns
|
|
274
|
+
*/
|
|
275
|
+
getDiscoveredPatterns() {
|
|
276
|
+
if (!this.initialized || !this.patternStore) {
|
|
277
|
+
return [];
|
|
278
|
+
}
|
|
279
|
+
return this.patternStore.getDiscovered().map(patternToInfo);
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get ignored patterns
|
|
283
|
+
*/
|
|
284
|
+
getIgnoredPatterns() {
|
|
285
|
+
if (!this.initialized || !this.patternStore) {
|
|
286
|
+
return [];
|
|
287
|
+
}
|
|
288
|
+
return this.patternStore.getIgnored().map(patternToInfo);
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Get a pattern by ID
|
|
292
|
+
*/
|
|
293
|
+
getPattern(patternId) {
|
|
294
|
+
if (!this.initialized || !this.patternStore) {
|
|
295
|
+
return undefined;
|
|
296
|
+
}
|
|
297
|
+
const pattern = this.patternStore.get(patternId);
|
|
298
|
+
return pattern ? patternToInfo(pattern) : undefined;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Filter violations by removing those covered by variants
|
|
302
|
+
*/
|
|
303
|
+
filterViolationsByVariants(violations) {
|
|
304
|
+
if (!this.initialized || !this.variantManager) {
|
|
305
|
+
return violations;
|
|
306
|
+
}
|
|
307
|
+
return violations.filter((violation) => {
|
|
308
|
+
const location = {
|
|
309
|
+
file: violation.file,
|
|
310
|
+
line: violation.range.start.line + 1, // Convert to 1-indexed
|
|
311
|
+
column: violation.range.start.character + 1,
|
|
312
|
+
};
|
|
313
|
+
return !this.variantManager.isLocationCovered(violation.patternId, location);
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Shutdown the adapter
|
|
318
|
+
*/
|
|
319
|
+
async shutdown() {
|
|
320
|
+
this.logger.info('Shutting down pattern store adapter...');
|
|
321
|
+
// Save pattern store
|
|
322
|
+
if (this.patternStore && this.config.autoSave) {
|
|
323
|
+
try {
|
|
324
|
+
await this.patternStore.saveAll();
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
this.logger.error(`Error saving pattern store: ${error}`);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
// Save variant manager
|
|
331
|
+
if (this.variantManager && this.config.autoSave) {
|
|
332
|
+
try {
|
|
333
|
+
await this.variantManager.saveAll();
|
|
334
|
+
}
|
|
335
|
+
catch (error) {
|
|
336
|
+
this.logger.error(`Error saving variant manager: ${error}`);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
this.initialized = false;
|
|
340
|
+
this.logger.info('Pattern store adapter shutdown complete');
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Create a pattern store adapter instance
|
|
345
|
+
*/
|
|
346
|
+
export function createPatternStoreAdapter(config = {}, logger) {
|
|
347
|
+
return new PatternStoreAdapter(config, logger);
|
|
348
|
+
}
|
|
349
|
+
//# sourceMappingURL=pattern-store-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-store-adapter.js","sourceRoot":"","sources":["../../src/integration/pattern-store-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration Types
|
|
3
|
+
*
|
|
4
|
+
* Types for the integration between @drift/lsp and driftdetect-core.
|
|
5
|
+
*/
|
|
6
|
+
import type { ViolationInfo, PatternInfo } from '../types/lsp-types.js';
|
|
7
|
+
import type { Pattern, PatternCategory } from 'driftdetect-core';
|
|
8
|
+
/**
|
|
9
|
+
* Configuration for the core integration
|
|
10
|
+
*/
|
|
11
|
+
export interface CoreIntegrationConfig {
|
|
12
|
+
/** Root directory for .drift folder */
|
|
13
|
+
rootDir: string;
|
|
14
|
+
/** Whether to auto-save pattern changes */
|
|
15
|
+
autoSave: boolean;
|
|
16
|
+
/** Whether to validate schemas */
|
|
17
|
+
validateSchema: boolean;
|
|
18
|
+
/** Whether to track history */
|
|
19
|
+
trackHistory: boolean;
|
|
20
|
+
/** Minimum confidence threshold for violations */
|
|
21
|
+
minConfidence: number;
|
|
22
|
+
/** Whether AI features are available */
|
|
23
|
+
aiEnabled: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Default core integration configuration
|
|
27
|
+
*/
|
|
28
|
+
export declare const DEFAULT_CORE_INTEGRATION_CONFIG: CoreIntegrationConfig;
|
|
29
|
+
/**
|
|
30
|
+
* Result of scanning a document
|
|
31
|
+
*/
|
|
32
|
+
export interface ScanResult {
|
|
33
|
+
/** URI of the scanned document */
|
|
34
|
+
uri: string;
|
|
35
|
+
/** Violations found in the document */
|
|
36
|
+
violations: ViolationInfo[];
|
|
37
|
+
/** Patterns detected in the document */
|
|
38
|
+
patterns: PatternInfo[];
|
|
39
|
+
/** Scan duration in milliseconds */
|
|
40
|
+
duration: number;
|
|
41
|
+
/** Any errors encountered during scanning */
|
|
42
|
+
errors: ScanError[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Error encountered during scanning
|
|
46
|
+
*/
|
|
47
|
+
export interface ScanError {
|
|
48
|
+
/** Error message */
|
|
49
|
+
message: string;
|
|
50
|
+
/** Error code */
|
|
51
|
+
code?: string;
|
|
52
|
+
/** Whether scanning can continue */
|
|
53
|
+
recoverable: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Options for scanning a document
|
|
57
|
+
*/
|
|
58
|
+
export interface ScanOptions {
|
|
59
|
+
/** Force rescan even if cached */
|
|
60
|
+
force?: boolean;
|
|
61
|
+
/** Specific pattern categories to check */
|
|
62
|
+
categories?: PatternCategory[];
|
|
63
|
+
/** Specific pattern IDs to check */
|
|
64
|
+
patternIds?: string[];
|
|
65
|
+
/** Minimum confidence threshold */
|
|
66
|
+
minConfidence?: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Result of approving a pattern
|
|
70
|
+
*/
|
|
71
|
+
export interface ApproveResult {
|
|
72
|
+
/** Whether the operation succeeded */
|
|
73
|
+
success: boolean;
|
|
74
|
+
/** Pattern ID that was approved */
|
|
75
|
+
patternId: string;
|
|
76
|
+
/** Number of violations removed */
|
|
77
|
+
removedViolations: number;
|
|
78
|
+
/** Error message if failed */
|
|
79
|
+
error?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Result of ignoring a pattern
|
|
83
|
+
*/
|
|
84
|
+
export interface IgnoreResult {
|
|
85
|
+
/** Whether the operation succeeded */
|
|
86
|
+
success: boolean;
|
|
87
|
+
/** Pattern ID that was ignored */
|
|
88
|
+
patternId: string;
|
|
89
|
+
/** Number of violations suppressed */
|
|
90
|
+
suppressedViolations: number;
|
|
91
|
+
/** Error message if failed */
|
|
92
|
+
error?: string;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Result of creating a variant
|
|
96
|
+
*/
|
|
97
|
+
export interface CreateVariantResult {
|
|
98
|
+
/** Whether the operation succeeded */
|
|
99
|
+
success: boolean;
|
|
100
|
+
/** Variant ID that was created */
|
|
101
|
+
variantId?: string;
|
|
102
|
+
/** Pattern ID the variant applies to */
|
|
103
|
+
patternId: string;
|
|
104
|
+
/** Number of violations suppressed */
|
|
105
|
+
suppressedViolations: number;
|
|
106
|
+
/** Error message if failed */
|
|
107
|
+
error?: string;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Input for creating a variant
|
|
111
|
+
*/
|
|
112
|
+
export interface CreateVariantInput {
|
|
113
|
+
/** Pattern ID this variant applies to */
|
|
114
|
+
patternId: string;
|
|
115
|
+
/** Human-readable name for the variant */
|
|
116
|
+
name: string;
|
|
117
|
+
/** Reason explaining why this deviation is intentional */
|
|
118
|
+
reason: string;
|
|
119
|
+
/** Scope of the variant: 'global', 'directory', or 'file' */
|
|
120
|
+
scope: 'global' | 'directory' | 'file';
|
|
121
|
+
/** Scope value (directory path or file path, depending on scope) */
|
|
122
|
+
scopeValue?: string;
|
|
123
|
+
/** File path where the variant applies */
|
|
124
|
+
file: string;
|
|
125
|
+
/** Line number where the variant applies */
|
|
126
|
+
line: number;
|
|
127
|
+
/** Column number where the variant applies */
|
|
128
|
+
column: number;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Convert a driftdetect-core Pattern to LSP PatternInfo
|
|
132
|
+
*/
|
|
133
|
+
export declare function patternToInfo(pattern: Pattern): PatternInfo;
|
|
134
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/integration/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/integration/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAEhB,2CAA2C;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAElB,kCAAkC;IAClC,cAAc,EAAE,OAAO,CAAC;IAExB,+BAA+B;IAC/B,YAAY,EAAE,OAAO,CAAC;IAEtB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IAEtB,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,+BAA+B,EAAE,qBAO7C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IAEZ,uCAAuC;IACvC,UAAU,EAAE,aAAa,EAAE,CAAC;IAE5B,wCAAwC;IACxC,QAAQ,EAAE,WAAW,EAAE,CAAC;IAExB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IAEjB,6CAA6C;IAC7C,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAEhB,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,oCAAoC;IACpC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAE/B,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IAEjB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAElB,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAE1B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IAEjB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAElB,sCAAsC;IACtC,oBAAoB,EAAE,MAAM,CAAC;IAE7B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IAEjB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAElB,sCAAsC;IACtC,oBAAoB,EAAE,MAAM,CAAC;IAE7B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAElB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IAEb,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IAEf,6DAA6D;IAC7D,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IAEvC,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IAEb,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IAEb,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAoB3D"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration Types
|
|
3
|
+
*
|
|
4
|
+
* Types for the integration between @drift/lsp and driftdetect-core.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Default core integration configuration
|
|
8
|
+
*/
|
|
9
|
+
export const DEFAULT_CORE_INTEGRATION_CONFIG = {
|
|
10
|
+
rootDir: '.',
|
|
11
|
+
autoSave: true,
|
|
12
|
+
validateSchema: true,
|
|
13
|
+
trackHistory: true,
|
|
14
|
+
minConfidence: 0.5,
|
|
15
|
+
aiEnabled: false,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Convert a driftdetect-core Pattern to LSP PatternInfo
|
|
19
|
+
*/
|
|
20
|
+
export function patternToInfo(pattern) {
|
|
21
|
+
const info = {
|
|
22
|
+
id: pattern.id,
|
|
23
|
+
name: pattern.name,
|
|
24
|
+
description: pattern.description,
|
|
25
|
+
category: pattern.category,
|
|
26
|
+
subcategory: pattern.subcategory,
|
|
27
|
+
confidence: pattern.confidence.score,
|
|
28
|
+
frequency: pattern.confidence.frequency,
|
|
29
|
+
};
|
|
30
|
+
// Only set optional properties if they have values
|
|
31
|
+
if (pattern.severity !== undefined) {
|
|
32
|
+
info.severity = pattern.severity;
|
|
33
|
+
}
|
|
34
|
+
if (pattern.autoFixable !== undefined) {
|
|
35
|
+
info.autoFixable = pattern.autoFixable;
|
|
36
|
+
}
|
|
37
|
+
return info;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/integration/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4BH;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAA0B;IACpE,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,IAAI;IACd,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,GAAG;IAClB,SAAS,EAAE,KAAK;CACjB,CAAC;AAwIF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,MAAM,IAAI,GAAgB;QACxB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK;QACpC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;KACxC,CAAC;IAEF,mDAAmD;IACnD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server Types - Core types for the LSP server
|
|
3
|
+
*
|
|
4
|
+
* These types define the server context, state, and interfaces
|
|
5
|
+
* used throughout the LSP implementation.
|
|
6
|
+
*/
|
|
7
|
+
import type { DriftDiagnostic, ServerState, ServerConfiguration, PatternInfo, ViolationInfo, DocumentState } from '../types/lsp-types.js';
|
|
8
|
+
import type { Connection, TextDocuments } from 'vscode-languageserver';
|
|
9
|
+
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
10
|
+
/**
|
|
11
|
+
* Logger interface for server logging
|
|
12
|
+
*/
|
|
13
|
+
export interface Logger {
|
|
14
|
+
error(message: string): void;
|
|
15
|
+
warn(message: string): void;
|
|
16
|
+
info(message: string): void;
|
|
17
|
+
debug(message: string): void;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Server context passed to handlers and commands
|
|
21
|
+
*/
|
|
22
|
+
export interface ServerContext {
|
|
23
|
+
/** LSP connection */
|
|
24
|
+
connection: Connection;
|
|
25
|
+
/** Document manager */
|
|
26
|
+
documents: TextDocuments<TextDocument>;
|
|
27
|
+
/** Server state */
|
|
28
|
+
state: ServerState;
|
|
29
|
+
/** Logger instance */
|
|
30
|
+
logger: Logger;
|
|
31
|
+
/** Server configuration */
|
|
32
|
+
configuration: ServerConfiguration;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Document scanner interface for scanning documents for violations
|
|
36
|
+
*/
|
|
37
|
+
export interface DocumentScanner {
|
|
38
|
+
/** Scan a document for violations */
|
|
39
|
+
scan(uri: string): Promise<ViolationInfo[]>;
|
|
40
|
+
/** Invalidate cache for a document */
|
|
41
|
+
invalidate(uri: string): void;
|
|
42
|
+
/** Clear all cached scan results */
|
|
43
|
+
clearCache(): void;
|
|
44
|
+
/** Check if a document is cached */
|
|
45
|
+
isCached(uri: string): boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Diagnostic publisher interface for publishing diagnostics
|
|
49
|
+
*/
|
|
50
|
+
export interface DiagnosticPublisher {
|
|
51
|
+
/** Publish diagnostics for a document */
|
|
52
|
+
publish(uri: string): Promise<void>;
|
|
53
|
+
/** Clear diagnostics for a document */
|
|
54
|
+
clear(uri: string): void;
|
|
55
|
+
/** Clear all diagnostics */
|
|
56
|
+
clearAll(): void;
|
|
57
|
+
/** Get diagnostics for a document */
|
|
58
|
+
get(uri: string): DriftDiagnostic[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Pattern store interface for managing patterns
|
|
62
|
+
*/
|
|
63
|
+
export interface PatternStore {
|
|
64
|
+
/** Get a pattern by ID */
|
|
65
|
+
get(patternId: string): PatternInfo | undefined;
|
|
66
|
+
/** Get all patterns */
|
|
67
|
+
getAll(): PatternInfo[];
|
|
68
|
+
/** Add or update a pattern */
|
|
69
|
+
set(pattern: PatternInfo): void;
|
|
70
|
+
/** Remove a pattern */
|
|
71
|
+
delete(patternId: string): boolean;
|
|
72
|
+
/** Check if a pattern exists */
|
|
73
|
+
has(patternId: string): boolean;
|
|
74
|
+
/** Get patterns by category */
|
|
75
|
+
getByCategory(category: string): PatternInfo[];
|
|
76
|
+
/** Approve a pattern */
|
|
77
|
+
approve(patternId: string): Promise<void>;
|
|
78
|
+
/** Ignore a pattern */
|
|
79
|
+
ignore(patternId: string): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Violation store interface for managing violations
|
|
83
|
+
*/
|
|
84
|
+
export interface ViolationStore {
|
|
85
|
+
/** Get violations for a document */
|
|
86
|
+
get(uri: string): ViolationInfo[];
|
|
87
|
+
/** Set violations for a document */
|
|
88
|
+
set(uri: string, violations: ViolationInfo[]): void;
|
|
89
|
+
/** Add a violation */
|
|
90
|
+
add(uri: string, violation: ViolationInfo): void;
|
|
91
|
+
/** Remove a violation */
|
|
92
|
+
remove(uri: string, violationId: string): boolean;
|
|
93
|
+
/** Clear violations for a document */
|
|
94
|
+
clear(uri: string): void;
|
|
95
|
+
/** Clear all violations */
|
|
96
|
+
clearAll(): void;
|
|
97
|
+
/** Get all violations */
|
|
98
|
+
getAll(): Map<string, ViolationInfo[]>;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Initialize handler interface
|
|
102
|
+
*/
|
|
103
|
+
export interface InitializeHandler {
|
|
104
|
+
onInitialize(): void;
|
|
105
|
+
onInitialized(): void;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Document sync handler interface
|
|
109
|
+
*/
|
|
110
|
+
export interface DocumentSyncHandler {
|
|
111
|
+
onDidOpen(document: TextDocument): void;
|
|
112
|
+
onDidChangeContent(document: TextDocument): void;
|
|
113
|
+
onDidSave(document: TextDocument): void;
|
|
114
|
+
onDidClose(document: TextDocument): void;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Diagnostics handler interface
|
|
118
|
+
*/
|
|
119
|
+
export interface DiagnosticsHandler {
|
|
120
|
+
publishDiagnostics(uri: string): Promise<void>;
|
|
121
|
+
clearDiagnostics(uri: string): void;
|
|
122
|
+
clearAllDiagnostics(): void;
|
|
123
|
+
getDiagnostics(uri: string): DriftDiagnostic[];
|
|
124
|
+
getDiagnosticAtPosition(uri: string, line: number, character: number): DriftDiagnostic | undefined;
|
|
125
|
+
getViolations(uri: string): ViolationInfo[];
|
|
126
|
+
scheduleUpdate(uri: string, delayMs?: number): void;
|
|
127
|
+
cancelUpdate(uri: string): void;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Result of executing a command
|
|
131
|
+
*/
|
|
132
|
+
export interface CommandResult {
|
|
133
|
+
success: boolean;
|
|
134
|
+
message?: string;
|
|
135
|
+
data?: unknown;
|
|
136
|
+
error?: string;
|
|
137
|
+
}
|
|
138
|
+
export type { DriftDiagnostic, ServerState, ServerConfiguration, PatternInfo, ViolationInfo, DocumentState, };
|
|
139
|
+
//# sourceMappingURL=types.d.ts.map
|