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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAGL,aAAa,EAEd,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAGL,aAAa,EAEd,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAYlE,OAAO,KAAK,EACV,UAAU,EAIX,MAAM,uBAAuB,CAAC;AAM/B;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,WAAW,EAAE,OAAO,CAAC;IACrB,wBAAwB;IACxB,gBAAgB,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,0BAA0B;IAC1B,0BAA0B,EAAE,OAAO,CAAC;IACpC,4BAA4B,EAAE,OAAO,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,KAAK,IAAI,IAAI,CAAC;IACd,sBAAsB;IACtB,IAAI,IAAI,IAAI,CAAC;IACb,6BAA6B;IAC7B,aAAa,IAAI,UAAU,CAAC;IAC5B,+BAA+B;IAC/B,YAAY,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;IAC5C,iCAAiC;IACjC,SAAS,IAAI,OAAO,CAAC;CACtB;AA8BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,WAAW,CAkN1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,aAAkB,GAAG,WAAW,CAIzE"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drift LSP Server
|
|
3
|
+
*
|
|
4
|
+
* Main entry point for the Language Server Protocol implementation.
|
|
5
|
+
* Creates and manages the LSP connection, registers handlers, and
|
|
6
|
+
* coordinates between the editor and Drift core engine.
|
|
7
|
+
*
|
|
8
|
+
* @requirements 27.1 - THE LSP_Server SHALL implement the Language Server Protocol specification
|
|
9
|
+
* @requirements 27.7 - THE LSP_Server SHALL respond to diagnostics within 200ms of file change
|
|
10
|
+
*/
|
|
11
|
+
import { createConnection, ProposedFeatures, TextDocuments, DidChangeConfigurationNotification, } from 'vscode-languageserver/node.js';
|
|
12
|
+
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
13
|
+
import { buildInitializeResult, clientSupportsConfiguration, clientSupportsWorkspaceFolders } from './capabilities.js';
|
|
14
|
+
import { createCodeActionsHandler } from './handlers/code-actions.js';
|
|
15
|
+
import { createCodeLensHandler } from './handlers/code-lens.js';
|
|
16
|
+
import { createCommandsHandler } from './handlers/commands.js';
|
|
17
|
+
import { createDiagnosticsHandler } from './handlers/diagnostics.js';
|
|
18
|
+
import { createDocumentSyncHandler } from './handlers/document-sync.js';
|
|
19
|
+
import { createHoverHandler } from './handlers/hover.js';
|
|
20
|
+
import { createInitializeHandler } from './handlers/initialize.js';
|
|
21
|
+
function createLogger(connection, debug) {
|
|
22
|
+
return {
|
|
23
|
+
error: (msg) => connection.console.error(`[drift-lsp] ${msg}`),
|
|
24
|
+
warn: (msg) => connection.console.warn(`[drift-lsp] ${msg}`),
|
|
25
|
+
info: (msg) => connection.console.info(`[drift-lsp] ${msg}`),
|
|
26
|
+
debug: (msg) => {
|
|
27
|
+
if (debug) {
|
|
28
|
+
connection.console.log(`[drift-lsp] DEBUG: ${msg}`);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// Server Factory
|
|
35
|
+
// ============================================================================
|
|
36
|
+
/**
|
|
37
|
+
* Create a new Drift LSP server instance
|
|
38
|
+
*/
|
|
39
|
+
export function createDriftServer(options = {}) {
|
|
40
|
+
// Create connection
|
|
41
|
+
const connection = options.connection ?? createConnection(ProposedFeatures.all);
|
|
42
|
+
// Create document manager
|
|
43
|
+
const documents = new TextDocuments(TextDocument);
|
|
44
|
+
// Create logger
|
|
45
|
+
const logger = createLogger(connection, options.debug ?? false);
|
|
46
|
+
// Server state
|
|
47
|
+
const state = {
|
|
48
|
+
initialized: false,
|
|
49
|
+
workspaceFolders: [],
|
|
50
|
+
hasConfigurationCapability: false,
|
|
51
|
+
hasWorkspaceFolderCapability: false,
|
|
52
|
+
};
|
|
53
|
+
// Track running state
|
|
54
|
+
let isServerRunning = false;
|
|
55
|
+
// Diagnostic timers for debouncing
|
|
56
|
+
const diagnosticTimers = new Map();
|
|
57
|
+
// ============================================================================
|
|
58
|
+
// Initialize Handler
|
|
59
|
+
// ============================================================================
|
|
60
|
+
connection.onInitialize((params) => {
|
|
61
|
+
logger.info('Initializing Drift LSP server...');
|
|
62
|
+
// Check client capabilities
|
|
63
|
+
state.hasConfigurationCapability = clientSupportsConfiguration(params.capabilities);
|
|
64
|
+
state.hasWorkspaceFolderCapability = clientSupportsWorkspaceFolders(params.capabilities);
|
|
65
|
+
// Store workspace folders
|
|
66
|
+
if (params.workspaceFolders) {
|
|
67
|
+
state.workspaceFolders = params.workspaceFolders.map((f) => ({
|
|
68
|
+
uri: f.uri,
|
|
69
|
+
name: f.name,
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
else if (params.rootUri) {
|
|
73
|
+
state.workspaceFolders = [{ uri: params.rootUri, name: 'workspace' }];
|
|
74
|
+
}
|
|
75
|
+
logger.info(`Workspace folders: ${state.workspaceFolders.map((f) => f.name).join(', ')}`);
|
|
76
|
+
return buildInitializeResult();
|
|
77
|
+
});
|
|
78
|
+
connection.onInitialized(() => {
|
|
79
|
+
logger.info('Drift LSP server initialized');
|
|
80
|
+
state.initialized = true;
|
|
81
|
+
// Register for configuration changes
|
|
82
|
+
if (state.hasConfigurationCapability) {
|
|
83
|
+
connection.client.register(DidChangeConfigurationNotification.type, undefined);
|
|
84
|
+
}
|
|
85
|
+
// Register for workspace folder changes
|
|
86
|
+
if (state.hasWorkspaceFolderCapability) {
|
|
87
|
+
connection.workspace.onDidChangeWorkspaceFolders((event) => {
|
|
88
|
+
for (const removed of event.removed) {
|
|
89
|
+
const idx = state.workspaceFolders.findIndex((f) => f.uri === removed.uri);
|
|
90
|
+
if (idx !== -1) {
|
|
91
|
+
state.workspaceFolders.splice(idx, 1);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
for (const added of event.added) {
|
|
95
|
+
state.workspaceFolders.push({ uri: added.uri, name: added.name });
|
|
96
|
+
}
|
|
97
|
+
logger.info(`Workspace folders changed: +${event.added.length}, -${event.removed.length}`);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
// ============================================================================
|
|
102
|
+
// Shutdown Handlers
|
|
103
|
+
// ============================================================================
|
|
104
|
+
connection.onShutdown(() => {
|
|
105
|
+
logger.info('Drift LSP server shutting down...');
|
|
106
|
+
state.initialized = false;
|
|
107
|
+
// Clear all diagnostic timers
|
|
108
|
+
for (const timer of diagnosticTimers.values()) {
|
|
109
|
+
clearTimeout(timer);
|
|
110
|
+
}
|
|
111
|
+
diagnosticTimers.clear();
|
|
112
|
+
});
|
|
113
|
+
connection.onExit(() => {
|
|
114
|
+
logger.info('Drift LSP server exiting');
|
|
115
|
+
isServerRunning = false;
|
|
116
|
+
});
|
|
117
|
+
// ============================================================================
|
|
118
|
+
// Create Handlers
|
|
119
|
+
// ============================================================================
|
|
120
|
+
// Note: Initialize handler is created for potential future use but initialization
|
|
121
|
+
// is currently handled inline in connection.onInitialize and connection.onInitialized
|
|
122
|
+
createInitializeHandler(connection, state, logger);
|
|
123
|
+
const diagnosticsHandler = createDiagnosticsHandler(connection, documents, state, logger);
|
|
124
|
+
const documentSyncHandler = createDocumentSyncHandler(connection, documents, diagnosticsHandler, logger);
|
|
125
|
+
const codeActionsHandler = createCodeActionsHandler(connection, documents, diagnosticsHandler, logger);
|
|
126
|
+
const hoverHandler = createHoverHandler(connection, documents, diagnosticsHandler, logger);
|
|
127
|
+
const codeLensHandler = createCodeLensHandler(connection, documents, diagnosticsHandler, logger);
|
|
128
|
+
const commandsHandler = createCommandsHandler(connection, documents, diagnosticsHandler, logger);
|
|
129
|
+
// ============================================================================
|
|
130
|
+
// Register Handlers
|
|
131
|
+
// ============================================================================
|
|
132
|
+
function registerHandlers() {
|
|
133
|
+
logger.debug('Registering LSP handlers...');
|
|
134
|
+
// Document sync events
|
|
135
|
+
documents.onDidChangeContent((event) => {
|
|
136
|
+
documentSyncHandler.onDidChangeContent(event);
|
|
137
|
+
});
|
|
138
|
+
documents.onDidOpen((event) => {
|
|
139
|
+
documentSyncHandler.onDidOpen(event.document);
|
|
140
|
+
});
|
|
141
|
+
documents.onDidSave((event) => {
|
|
142
|
+
documentSyncHandler.onDidSave(event.document);
|
|
143
|
+
});
|
|
144
|
+
documents.onDidClose((event) => {
|
|
145
|
+
documentSyncHandler.onDidClose(event.document);
|
|
146
|
+
});
|
|
147
|
+
// Code actions
|
|
148
|
+
connection.onCodeAction(codeActionsHandler.onCodeAction);
|
|
149
|
+
connection.onCodeActionResolve(codeActionsHandler.onCodeActionResolve);
|
|
150
|
+
// Hover
|
|
151
|
+
connection.onHover(hoverHandler.onHover);
|
|
152
|
+
// Code lens
|
|
153
|
+
connection.onCodeLens(codeLensHandler.onCodeLens);
|
|
154
|
+
connection.onCodeLensResolve(codeLensHandler.onCodeLensResolve);
|
|
155
|
+
// Commands
|
|
156
|
+
connection.onExecuteCommand(commandsHandler.onExecuteCommand);
|
|
157
|
+
// Start listening on documents
|
|
158
|
+
documents.listen(connection);
|
|
159
|
+
logger.debug('LSP handlers registered');
|
|
160
|
+
}
|
|
161
|
+
// ============================================================================
|
|
162
|
+
// Server Interface
|
|
163
|
+
// ============================================================================
|
|
164
|
+
return {
|
|
165
|
+
start() {
|
|
166
|
+
if (isServerRunning) {
|
|
167
|
+
logger.warn('Server already running');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
logger.info('Starting Drift LSP server...');
|
|
171
|
+
registerHandlers();
|
|
172
|
+
connection.listen();
|
|
173
|
+
isServerRunning = true;
|
|
174
|
+
},
|
|
175
|
+
stop() {
|
|
176
|
+
if (!isServerRunning) {
|
|
177
|
+
logger.warn('Server not running');
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
logger.info('Stopping Drift LSP server...');
|
|
181
|
+
// Clear diagnostic timers
|
|
182
|
+
for (const timer of diagnosticTimers.values()) {
|
|
183
|
+
clearTimeout(timer);
|
|
184
|
+
}
|
|
185
|
+
diagnosticTimers.clear();
|
|
186
|
+
connection.dispose();
|
|
187
|
+
isServerRunning = false;
|
|
188
|
+
},
|
|
189
|
+
getConnection() {
|
|
190
|
+
return connection;
|
|
191
|
+
},
|
|
192
|
+
getDocuments() {
|
|
193
|
+
return documents;
|
|
194
|
+
},
|
|
195
|
+
isRunning() {
|
|
196
|
+
return isServerRunning;
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Create and start a Drift LSP server
|
|
202
|
+
*/
|
|
203
|
+
export function startDriftServer(options = {}) {
|
|
204
|
+
const server = createDriftServer(options);
|
|
205
|
+
server.start();
|
|
206
|
+
return server;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diagnostic Utilities - Diagnostic helpers
|
|
3
|
+
* @requirements 27.3
|
|
4
|
+
*/
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Diagnostic Creation
|
|
7
|
+
// ============================================================================
|
|
8
|
+
/**
|
|
9
|
+
* Create a drift diagnostic
|
|
10
|
+
*/
|
|
11
|
+
export function createDiagnostic(violationId, patternId, message, range, severity = 'warning') {
|
|
12
|
+
return {
|
|
13
|
+
violationId,
|
|
14
|
+
patternId,
|
|
15
|
+
severity,
|
|
16
|
+
message,
|
|
17
|
+
range,
|
|
18
|
+
source: 'drift',
|
|
19
|
+
code: patternId,
|
|
20
|
+
quickFixes: [],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create an error diagnostic
|
|
25
|
+
*/
|
|
26
|
+
export function createErrorDiagnostic(violationId, patternId, message, range) {
|
|
27
|
+
return createDiagnostic(violationId, patternId, message, range, 'error');
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a warning diagnostic
|
|
31
|
+
*/
|
|
32
|
+
export function createWarningDiagnostic(violationId, patternId, message, range) {
|
|
33
|
+
return createDiagnostic(violationId, patternId, message, range, 'warning');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create an info diagnostic
|
|
37
|
+
*/
|
|
38
|
+
export function createInfoDiagnostic(violationId, patternId, message, range) {
|
|
39
|
+
return createDiagnostic(violationId, patternId, message, range, 'info');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a hint diagnostic
|
|
43
|
+
*/
|
|
44
|
+
export function createHintDiagnostic(violationId, patternId, message, range) {
|
|
45
|
+
return createDiagnostic(violationId, patternId, message, range, 'hint');
|
|
46
|
+
}
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// Diagnostic Filtering
|
|
49
|
+
// ============================================================================
|
|
50
|
+
/**
|
|
51
|
+
* Filter diagnostics by severity
|
|
52
|
+
*/
|
|
53
|
+
export function filterBySeverity(diagnostics, severities) {
|
|
54
|
+
return diagnostics.filter((d) => severities.includes(d.severity));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Filter diagnostics by pattern
|
|
58
|
+
*/
|
|
59
|
+
export function filterByPattern(diagnostics, patternIds) {
|
|
60
|
+
return diagnostics.filter((d) => patternIds.includes(d.patternId));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Filter diagnostics by range
|
|
64
|
+
*/
|
|
65
|
+
export function filterByRange(diagnostics, range) {
|
|
66
|
+
return diagnostics.filter((d) => rangesOverlap(d.range, range));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Filter diagnostics by line
|
|
70
|
+
*/
|
|
71
|
+
export function filterByLine(diagnostics, line) {
|
|
72
|
+
return diagnostics.filter((d) => d.range.start.line <= line && d.range.end.line >= line);
|
|
73
|
+
}
|
|
74
|
+
// ============================================================================
|
|
75
|
+
// Diagnostic Sorting
|
|
76
|
+
// ============================================================================
|
|
77
|
+
/**
|
|
78
|
+
* Sort diagnostics by position
|
|
79
|
+
*/
|
|
80
|
+
export function sortByPosition(diagnostics) {
|
|
81
|
+
return [...diagnostics].sort((a, b) => {
|
|
82
|
+
const lineDiff = a.range.start.line - b.range.start.line;
|
|
83
|
+
if (lineDiff !== 0) {
|
|
84
|
+
return lineDiff;
|
|
85
|
+
}
|
|
86
|
+
return a.range.start.character - b.range.start.character;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Sort diagnostics by severity
|
|
91
|
+
*/
|
|
92
|
+
export function sortBySeverity(diagnostics) {
|
|
93
|
+
const severityOrder = {
|
|
94
|
+
error: 0,
|
|
95
|
+
warning: 1,
|
|
96
|
+
info: 2,
|
|
97
|
+
hint: 3,
|
|
98
|
+
};
|
|
99
|
+
return [...diagnostics].sort((a, b) => severityOrder[a.severity] - severityOrder[b.severity]);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Sort diagnostics by pattern
|
|
103
|
+
*/
|
|
104
|
+
export function sortByPattern(diagnostics) {
|
|
105
|
+
return [...diagnostics].sort((a, b) => a.patternId.localeCompare(b.patternId));
|
|
106
|
+
}
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// Diagnostic Grouping
|
|
109
|
+
// ============================================================================
|
|
110
|
+
/**
|
|
111
|
+
* Group diagnostics by severity
|
|
112
|
+
*/
|
|
113
|
+
export function groupBySeverity(diagnostics) {
|
|
114
|
+
const groups = new Map();
|
|
115
|
+
for (const diagnostic of diagnostics) {
|
|
116
|
+
const group = groups.get(diagnostic.severity) ?? [];
|
|
117
|
+
group.push(diagnostic);
|
|
118
|
+
groups.set(diagnostic.severity, group);
|
|
119
|
+
}
|
|
120
|
+
return groups;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Group diagnostics by pattern
|
|
124
|
+
*/
|
|
125
|
+
export function groupByPattern(diagnostics) {
|
|
126
|
+
const groups = new Map();
|
|
127
|
+
for (const diagnostic of diagnostics) {
|
|
128
|
+
const group = groups.get(diagnostic.patternId) ?? [];
|
|
129
|
+
group.push(diagnostic);
|
|
130
|
+
groups.set(diagnostic.patternId, group);
|
|
131
|
+
}
|
|
132
|
+
return groups;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Group diagnostics by line
|
|
136
|
+
*/
|
|
137
|
+
export function groupByLine(diagnostics) {
|
|
138
|
+
const groups = new Map();
|
|
139
|
+
for (const diagnostic of diagnostics) {
|
|
140
|
+
const line = diagnostic.range.start.line;
|
|
141
|
+
const group = groups.get(line) ?? [];
|
|
142
|
+
group.push(diagnostic);
|
|
143
|
+
groups.set(line, group);
|
|
144
|
+
}
|
|
145
|
+
return groups;
|
|
146
|
+
}
|
|
147
|
+
// ============================================================================
|
|
148
|
+
// Diagnostic Statistics
|
|
149
|
+
// ============================================================================
|
|
150
|
+
/**
|
|
151
|
+
* Get diagnostic statistics
|
|
152
|
+
*/
|
|
153
|
+
export function getDiagnosticStats(diagnostics) {
|
|
154
|
+
const bySeverity = {
|
|
155
|
+
error: 0,
|
|
156
|
+
warning: 0,
|
|
157
|
+
info: 0,
|
|
158
|
+
hint: 0,
|
|
159
|
+
};
|
|
160
|
+
const byPattern = {};
|
|
161
|
+
const affectedLines = new Set();
|
|
162
|
+
for (const diagnostic of diagnostics) {
|
|
163
|
+
bySeverity[diagnostic.severity]++;
|
|
164
|
+
byPattern[diagnostic.patternId] = (byPattern[diagnostic.patternId] ?? 0) + 1;
|
|
165
|
+
for (let line = diagnostic.range.start.line; line <= diagnostic.range.end.line; line++) {
|
|
166
|
+
affectedLines.add(line);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
total: diagnostics.length,
|
|
171
|
+
bySeverity,
|
|
172
|
+
byPattern,
|
|
173
|
+
uniquePatterns: Object.keys(byPattern).length,
|
|
174
|
+
affectedLines: affectedLines.size,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
// ============================================================================
|
|
178
|
+
// Helper Functions
|
|
179
|
+
// ============================================================================
|
|
180
|
+
/**
|
|
181
|
+
* Check if two ranges overlap
|
|
182
|
+
*/
|
|
183
|
+
function rangesOverlap(a, b) {
|
|
184
|
+
// a ends before b starts
|
|
185
|
+
if (a.end.line < b.start.line) {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
if (a.end.line === b.start.line && a.end.character < b.start.character) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
// b ends before a starts
|
|
192
|
+
if (b.end.line < a.start.line) {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
if (b.end.line === a.start.line && b.end.character < a.start.character) {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Merge overlapping diagnostics
|
|
202
|
+
*/
|
|
203
|
+
export function mergeOverlapping(diagnostics) {
|
|
204
|
+
if (diagnostics.length <= 1) {
|
|
205
|
+
return diagnostics;
|
|
206
|
+
}
|
|
207
|
+
const sorted = sortByPosition(diagnostics);
|
|
208
|
+
const first = sorted[0];
|
|
209
|
+
if (!first) {
|
|
210
|
+
return diagnostics;
|
|
211
|
+
}
|
|
212
|
+
const merged = [first];
|
|
213
|
+
for (let i = 1; i < sorted.length; i++) {
|
|
214
|
+
const current = sorted[i];
|
|
215
|
+
const last = merged[merged.length - 1];
|
|
216
|
+
if (!current || !last) {
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
if (rangesOverlap(last.range, current.range) && last.patternId === current.patternId) {
|
|
220
|
+
// Merge ranges
|
|
221
|
+
last.range = {
|
|
222
|
+
start: {
|
|
223
|
+
line: Math.min(last.range.start.line, current.range.start.line),
|
|
224
|
+
character: last.range.start.line < current.range.start.line
|
|
225
|
+
? last.range.start.character
|
|
226
|
+
: current.range.start.line < last.range.start.line
|
|
227
|
+
? current.range.start.character
|
|
228
|
+
: Math.min(last.range.start.character, current.range.start.character),
|
|
229
|
+
},
|
|
230
|
+
end: {
|
|
231
|
+
line: Math.max(last.range.end.line, current.range.end.line),
|
|
232
|
+
character: last.range.end.line > current.range.end.line
|
|
233
|
+
? last.range.end.character
|
|
234
|
+
: current.range.end.line > last.range.end.line
|
|
235
|
+
? current.range.end.character
|
|
236
|
+
: Math.max(last.range.end.character, current.range.end.character),
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
// Merge quick fixes
|
|
240
|
+
last.quickFixes = [...last.quickFixes, ...current.quickFixes];
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
merged.push(current);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return merged;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Deduplicate diagnostics
|
|
250
|
+
*/
|
|
251
|
+
export function deduplicate(diagnostics) {
|
|
252
|
+
const seen = new Set();
|
|
253
|
+
const result = [];
|
|
254
|
+
for (const diagnostic of diagnostics) {
|
|
255
|
+
const key = `${diagnostic.patternId}:${diagnostic.range.start.line}:${diagnostic.range.start.character}`;
|
|
256
|
+
if (!seen.has(key)) {
|
|
257
|
+
seen.add(key);
|
|
258
|
+
result.push(diagnostic);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return result;
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=diagnostic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../../src/utils/diagnostic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAmB,EACnB,SAAiB,EACjB,OAAe,EACf,KAAY,EACZ,WAA+B,SAAS;IAExC,OAAO;QACL,WAAW;QACX,SAAS;QACT,QAAQ;QACR,OAAO;QACP,KAAK;QACL,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,SAAiB,EACjB,OAAe,EACf,KAAY;IAEZ,OAAO,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAmB,EACnB,SAAiB,EACjB,OAAe,EACf,KAAY;IAEZ,OAAO,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,SAAiB,EACjB,OAAe,EACf,KAAY;IAEZ,OAAO,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,SAAiB,EACjB,OAAe,EACf,KAAY;IAEZ,OAAO,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAA8B,EAC9B,UAAgC;IAEhC,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,WAA8B,EAC9B,UAAoB;IAEpB,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,WAA8B,EAC9B,KAAY;IAEZ,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,WAA8B,EAC9B,IAAY;IAEZ,OAAO,WAAW,CAAC,MAAM,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAC9D,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,WAA8B;IAC3D,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACzD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAAA,OAAO,QAAQ,CAAC;QAAA,CAAC;QACtC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,WAA8B;IAC3D,MAAM,aAAa,GAAuC;QACxD,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;KACR,CAAC;IAEF,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAChE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,WAA8B;IAC1D,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,WAA8B;IAE9B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyC,CAAC;IAEhE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,WAA8B;IAE9B,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEpD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,WAA8B;IAE9B,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEpD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAA8B;IAO/D,MAAM,UAAU,GAAuC;QACrD,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;KACR,CAAC;IAEF,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAE7E,KAAK,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YACvF,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,MAAM;QACzB,UAAU;QACV,SAAS;QACT,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM;QAC7C,aAAa,EAAE,aAAa,CAAC,IAAI;KAClC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,aAAa,CAAC,CAAQ,EAAE,CAAQ;IACvC,yBAAyB;IACzB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAAA,OAAO,KAAK,CAAC;IAAA,CAAC;IAC9C,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAAA,OAAO,KAAK,CAAC;IAAA,CAAC;IAEvF,yBAAyB;IACzB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAAA,OAAO,KAAK,CAAC;IAAA,CAAC;IAC9C,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAAA,OAAO,KAAK,CAAC;IAAA,CAAC;IAEvF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAA8B;IAC7D,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAAA,OAAO,WAAW,CAAC;IAAA,CAAC;IAElD,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK,EAAE,CAAC;QAAA,OAAO,WAAW,CAAC;IAAA,CAAC;IAEjC,MAAM,MAAM,GAAsB,CAAC,KAAK,CAAC,CAAC;IAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEvC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QAED,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;YACrF,eAAe;YACf,IAAI,CAAC,KAAK,GAAG;gBACX,KAAK,EAAE;oBACL,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC/D,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;wBACzD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS;wBAC5B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;4BAChD,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS;4BAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;iBAC1E;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC3D,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI;wBACrD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS;wBAC1B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI;4BAC5C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS;4BAC7B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;iBACtE;aACF,CAAC;YAEF,oBAAoB;YACpB,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,WAA8B;IACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACzG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for working with LSP text documents.
|
|
5
|
+
*/
|
|
6
|
+
import type { Position, Range } from 'vscode-languageserver';
|
|
7
|
+
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
8
|
+
/**
|
|
9
|
+
* Get the text at a specific range in a document
|
|
10
|
+
*/
|
|
11
|
+
export declare function getTextAtRange(document: TextDocument, range: Range): string;
|
|
12
|
+
/**
|
|
13
|
+
* Get the line text at a specific line number
|
|
14
|
+
*/
|
|
15
|
+
export declare function getLineText(document: TextDocument, line: number): string;
|
|
16
|
+
/**
|
|
17
|
+
* Get the word at a specific position
|
|
18
|
+
*/
|
|
19
|
+
export declare function getWordAtPosition(document: TextDocument, position: Position): string | null;
|
|
20
|
+
/**
|
|
21
|
+
* Get the file name from a URI
|
|
22
|
+
*/
|
|
23
|
+
export declare function getFileName(uri: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Get the file extension from a URI
|
|
26
|
+
*/
|
|
27
|
+
export declare function getFileExtension(uri: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Check if a URI matches a glob pattern (simple implementation)
|
|
30
|
+
*/
|
|
31
|
+
export declare function matchesGlob(uri: string, pattern: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Get the language ID for a file based on extension
|
|
34
|
+
*/
|
|
35
|
+
export declare function getLanguageId(uri: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Check if a document is a supported language
|
|
38
|
+
*/
|
|
39
|
+
export declare function isSupportedLanguage(document: TextDocument): boolean;
|
|
40
|
+
//# sourceMappingURL=document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/utils/document.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAE3E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,GACjB,MAAM,GAAG,IAAI,CA+Bf;AASD;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAUjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAyBjD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAmBnE"}
|