@domainlang/language 0.10.0 → 0.11.0
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/README.md +44 -102
- package/out/domain-lang-module.d.ts +2 -2
- package/out/domain-lang-module.js +2 -2
- package/out/domain-lang-module.js.map +1 -1
- package/out/index.d.ts +3 -0
- package/out/index.js +3 -0
- package/out/index.js.map +1 -1
- package/out/lsp/domain-lang-completion.js +1 -1
- package/out/lsp/domain-lang-completion.js.map +1 -1
- package/out/lsp/domain-lang-index-manager.d.ts +149 -5
- package/out/lsp/domain-lang-index-manager.js +388 -52
- package/out/lsp/domain-lang-index-manager.js.map +1 -1
- package/out/lsp/domain-lang-refresh.d.ts +35 -0
- package/out/lsp/domain-lang-refresh.js +129 -0
- package/out/lsp/domain-lang-refresh.js.map +1 -0
- package/out/lsp/domain-lang-workspace-manager.d.ts +10 -0
- package/out/lsp/domain-lang-workspace-manager.js +35 -0
- package/out/lsp/domain-lang-workspace-manager.js.map +1 -1
- package/out/main.js +30 -190
- package/out/main.js.map +1 -1
- package/out/sdk/loader-node.js +1 -1
- package/out/sdk/loader-node.js.map +1 -1
- package/out/sdk/validator.js +17 -14
- package/out/sdk/validator.js.map +1 -1
- package/out/services/import-resolver.d.ts +67 -17
- package/out/services/import-resolver.js +146 -65
- package/out/services/import-resolver.js.map +1 -1
- package/out/services/lsp-logger.d.ts +42 -0
- package/out/services/lsp-logger.js +50 -0
- package/out/services/lsp-logger.js.map +1 -0
- package/out/services/lsp-runtime-settings.d.ts +20 -0
- package/out/services/lsp-runtime-settings.js +20 -0
- package/out/services/lsp-runtime-settings.js.map +1 -0
- package/out/services/performance-optimizer.d.ts +9 -9
- package/out/services/performance-optimizer.js +17 -41
- package/out/services/performance-optimizer.js.map +1 -1
- package/out/services/workspace-manager.d.ts +22 -1
- package/out/services/workspace-manager.js +57 -9
- package/out/services/workspace-manager.js.map +1 -1
- package/out/utils/import-utils.js +6 -6
- package/out/utils/import-utils.js.map +1 -1
- package/out/validation/constants.d.ts +6 -0
- package/out/validation/constants.js +7 -0
- package/out/validation/constants.js.map +1 -1
- package/out/validation/import.d.ts +13 -3
- package/out/validation/import.js +54 -10
- package/out/validation/import.js.map +1 -1
- package/package.json +1 -1
- package/src/domain-lang-module.ts +3 -3
- package/src/index.ts +3 -0
- package/src/lsp/domain-lang-completion.ts +3 -3
- package/src/lsp/domain-lang-index-manager.ts +438 -56
- package/src/lsp/domain-lang-refresh.ts +205 -0
- package/src/lsp/domain-lang-workspace-manager.ts +45 -0
- package/src/main.ts +36 -244
- package/src/sdk/loader-node.ts +1 -1
- package/src/sdk/validator.ts +17 -13
- package/src/services/import-resolver.ts +196 -89
- package/src/services/lsp-logger.ts +89 -0
- package/src/services/lsp-runtime-settings.ts +34 -0
- package/src/services/performance-optimizer.ts +18 -57
- package/src/services/workspace-manager.ts +62 -10
- package/src/utils/import-utils.ts +6 -6
- package/src/validation/constants.ts +9 -0
- package/src/validation/import.ts +67 -12
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { DefaultIndexManager, DocumentState } from 'langium';
|
|
2
2
|
import { CancellationToken } from 'vscode-jsonrpc';
|
|
3
3
|
import { resolveImportPath } from '../utils/import-utils.js';
|
|
4
|
+
import { createLogger } from '../services/lsp-logger.js';
|
|
5
|
+
const log = createLogger('IndexManager');
|
|
4
6
|
/**
|
|
5
7
|
* Custom IndexManager that extends Langium's default to:
|
|
6
8
|
* 1. Automatically load imported documents during indexing
|
|
7
9
|
* 2. Track import dependencies for cross-file revalidation
|
|
10
|
+
* 3. Export-signature diffing to prevent unnecessary cascading (PRS-017 R2)
|
|
11
|
+
* 4. Import cycle detection with diagnostics (PRS-017 R3)
|
|
12
|
+
* 5. Targeted ImportResolver cache invalidation (PRS-017 R1)
|
|
8
13
|
*
|
|
9
14
|
* **Why this exists:**
|
|
10
15
|
* Langium's `DefaultIndexManager.isAffected()` only checks cross-references
|
|
@@ -46,6 +51,24 @@ export class DomainLangIndexManager extends DefaultIndexManager {
|
|
|
46
51
|
* Cleared on workspace config changes.
|
|
47
52
|
*/
|
|
48
53
|
this.importsLoaded = new Set();
|
|
54
|
+
/**
|
|
55
|
+
* Export snapshot cache (PRS-017 R2): maps document URI to its exported symbol
|
|
56
|
+
* signatures. Used to detect whether a document's public interface actually
|
|
57
|
+
* changed, preventing cascading revalidation for implementation-only changes.
|
|
58
|
+
* Signature = "nodeType:qualifiedName" for each exported symbol.
|
|
59
|
+
*/
|
|
60
|
+
this.exportSnapshots = new Map();
|
|
61
|
+
/**
|
|
62
|
+
* Tracks which URIs had their exports actually change during the current
|
|
63
|
+
* update cycle. Reset before each updateContent() call. Used by isAffected()
|
|
64
|
+
* to skip transitive invalidation when exports are unchanged.
|
|
65
|
+
*/
|
|
66
|
+
this.changedExports = new Set();
|
|
67
|
+
/**
|
|
68
|
+
* Detected import cycles (PRS-017 R3): maps document URI to the cycle path.
|
|
69
|
+
* Populated during trackImportDependencies(). Consumed by ImportValidator.
|
|
70
|
+
*/
|
|
71
|
+
this.detectedCycles = new Map();
|
|
49
72
|
this.sharedServices = services;
|
|
50
73
|
}
|
|
51
74
|
/**
|
|
@@ -71,18 +94,43 @@ export class DomainLangIndexManager extends DefaultIndexManager {
|
|
|
71
94
|
}
|
|
72
95
|
/**
|
|
73
96
|
* Extends the default content update to:
|
|
74
|
-
* 1.
|
|
75
|
-
* 2.
|
|
97
|
+
* 1. Capture export snapshot before update (PRS-017 R2)
|
|
98
|
+
* 2. Ensure all imported documents are loaded
|
|
99
|
+
* 3. Track import dependencies for change propagation
|
|
100
|
+
* 4. Compare export snapshot to detect interface changes (PRS-017 R2)
|
|
101
|
+
* 5. Detect import cycles (PRS-017 R3)
|
|
102
|
+
* 6. Trigger targeted ImportResolver cache invalidation (PRS-017 R1)
|
|
76
103
|
*
|
|
77
104
|
* Called by Langium during the IndexedContent build phase.
|
|
78
105
|
* This is BEFORE linking/validation, so imports are available for resolution.
|
|
79
106
|
*/
|
|
80
107
|
async updateContent(document, cancelToken = CancellationToken.None) {
|
|
81
|
-
|
|
108
|
+
const uri = document.uri.toString();
|
|
109
|
+
// R2: Capture export snapshot BEFORE re-indexing
|
|
110
|
+
const oldExports = this.exportSnapshots.get(uri);
|
|
111
|
+
// Standard content indexing
|
|
82
112
|
await super.updateContent(document, cancelToken);
|
|
83
|
-
//
|
|
113
|
+
// R2: Capture new export snapshot and compare
|
|
114
|
+
const newExports = this.captureExportSnapshot(uri);
|
|
115
|
+
this.exportSnapshots.set(uri, newExports);
|
|
116
|
+
const exportsChanged = !oldExports || !this.setsEqual(oldExports, newExports);
|
|
117
|
+
if (exportsChanged) {
|
|
118
|
+
this.changedExports.add(uri);
|
|
119
|
+
log.info('exports changed', { uri });
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
// R2: Remove from changedExports when exports stabilize.
|
|
123
|
+
// Without this, the set accumulates indefinitely and the
|
|
124
|
+
// anyExportsChanged() gate stays permanently open.
|
|
125
|
+
this.changedExports.delete(uri);
|
|
126
|
+
}
|
|
127
|
+
// Ensure imports are loaded and track dependencies
|
|
84
128
|
await this.ensureImportsLoaded(document);
|
|
85
129
|
await this.trackImportDependencies(document);
|
|
130
|
+
// R3: Detect import cycles after tracking dependencies
|
|
131
|
+
this.detectAndStoreCycles(uri);
|
|
132
|
+
// R1: Targeted ImportResolver cache invalidation
|
|
133
|
+
this.invalidateImportResolverCache(uri);
|
|
86
134
|
}
|
|
87
135
|
/**
|
|
88
136
|
* Extends the default remove to also clean up import dependencies.
|
|
@@ -103,26 +151,97 @@ export class DomainLangIndexManager extends DefaultIndexManager {
|
|
|
103
151
|
this.importsLoaded.delete(uriString);
|
|
104
152
|
}
|
|
105
153
|
/**
|
|
106
|
-
* Extends `isAffected` to
|
|
154
|
+
* Extends `isAffected` to check import dependencies — direct, transitive,
|
|
155
|
+
* and specifier-sensitive.
|
|
107
156
|
*
|
|
108
157
|
* A document is affected if:
|
|
109
158
|
* 1. It has cross-references to any changed document (default Langium behavior)
|
|
110
|
-
* 2. It imports any
|
|
159
|
+
* 2. It directly or transitively imports any changed document whose exports
|
|
160
|
+
* actually changed (PRS-017 R2 — export-signature diffing)
|
|
161
|
+
* 3. Its import specifiers match changed file paths (handles renames/moves)
|
|
162
|
+
*
|
|
163
|
+
* The transitive affected set is computed once per `update()` cycle and cached
|
|
164
|
+
* using `changedUris` Set identity (Langium creates a fresh Set per cycle).
|
|
165
|
+
* This avoids redundant BFS walks when `isAffected()` is called for every
|
|
166
|
+
* loaded document in the workspace.
|
|
111
167
|
*/
|
|
112
168
|
isAffected(document, changedUris) {
|
|
113
169
|
// First check Langium's default: cross-references
|
|
114
170
|
if (super.isAffected(document, changedUris)) {
|
|
115
171
|
return true;
|
|
116
172
|
}
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
173
|
+
// R2: If no changed URIs had their exports change, skip transitive check.
|
|
174
|
+
// This prevents cascading revalidation for implementation-only changes
|
|
175
|
+
// (e.g., editing a domain's vision string).
|
|
176
|
+
const hasExportChanges = this.anyExportsChanged(changedUris);
|
|
177
|
+
if (!hasExportChanges) {
|
|
178
|
+
// Still check specifier matches for file renames/moves
|
|
179
|
+
const changedPaths = this.extractPathSegments(changedUris);
|
|
180
|
+
for (const changedPath of changedPaths) {
|
|
181
|
+
const infos = this.documentImportInfo.get(document.uri.toString());
|
|
182
|
+
if (infos && this.hasMatchingSpecifierOrResolvedUri(infos, new Set([changedPath]))) {
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
// Then check our import dependency graph (direct + transitive + specifier)
|
|
189
|
+
const affectedSet = this.computeAffectedSet(changedUris);
|
|
190
|
+
return affectedSet.has(document.uri.toString());
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Computes the full set of document URIs affected by changes.
|
|
194
|
+
* Cached per `changedUris` identity to avoid recomputation across multiple
|
|
195
|
+
* `isAffected()` calls within the same `DocumentBuilder.update()` cycle.
|
|
196
|
+
*
|
|
197
|
+
* Combines two dependency strategies:
|
|
198
|
+
* 1. **Reverse graph walk** — direct and transitive importers via `importDependencies`
|
|
199
|
+
* 2. **Specifier matching** — documents whose import specifiers match changed file
|
|
200
|
+
* paths (handles file renames/moves that change how imports resolve)
|
|
201
|
+
*/
|
|
202
|
+
computeAffectedSet(changedUris) {
|
|
203
|
+
// Cache hit: same changedUris Set reference means same update() cycle
|
|
204
|
+
if (this.transitiveAffectedCache?.key === changedUris) {
|
|
205
|
+
return this.transitiveAffectedCache.result;
|
|
206
|
+
}
|
|
207
|
+
const affected = new Set();
|
|
208
|
+
this.addTransitiveDependents(changedUris, affected);
|
|
209
|
+
this.addSpecifierMatches(changedUris, affected);
|
|
210
|
+
this.transitiveAffectedCache = { key: changedUris, result: affected };
|
|
211
|
+
return affected;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* BFS through the reverse dependency graph to find all transitive importers.
|
|
215
|
+
* If C changes and B imports C and A imports B, both A and B are added.
|
|
216
|
+
*/
|
|
217
|
+
addTransitiveDependents(changedUris, affected) {
|
|
218
|
+
const toProcess = [...changedUris];
|
|
219
|
+
let uri;
|
|
220
|
+
while ((uri = toProcess.pop()) !== undefined) {
|
|
221
|
+
const dependents = this.importDependencies.get(uri);
|
|
222
|
+
if (!dependents) {
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
for (const dep of dependents) {
|
|
226
|
+
if (!affected.has(dep) && !changedUris.has(dep)) {
|
|
227
|
+
affected.add(dep);
|
|
228
|
+
toProcess.push(dep);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Finds documents whose import specifiers fuzzy-match changed file paths.
|
|
235
|
+
* Handles file renames/moves where the resolved URI hasn't been updated yet.
|
|
236
|
+
*/
|
|
237
|
+
addSpecifierMatches(changedUris, affected) {
|
|
238
|
+
const changedPaths = this.extractPathSegments(changedUris);
|
|
239
|
+
for (const [docUri, importInfoList] of this.documentImportInfo) {
|
|
240
|
+
if (!affected.has(docUri) && !changedUris.has(docUri)
|
|
241
|
+
&& this.hasMatchingSpecifierOrResolvedUri(importInfoList, changedPaths)) {
|
|
242
|
+
affected.add(docUri);
|
|
123
243
|
}
|
|
124
244
|
}
|
|
125
|
-
return false;
|
|
126
245
|
}
|
|
127
246
|
/**
|
|
128
247
|
* Tracks import dependencies for a document.
|
|
@@ -148,36 +267,46 @@ export class DomainLangIndexManager extends DefaultIndexManager {
|
|
|
148
267
|
for (const imp of model.imports) {
|
|
149
268
|
if (!imp.uri)
|
|
150
269
|
continue;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
const importedUri = resolvedUri.toString();
|
|
154
|
-
// Track the full import info (specifier, alias, resolved URI)
|
|
155
|
-
importInfoList.push({
|
|
156
|
-
specifier: imp.uri,
|
|
157
|
-
alias: imp.alias,
|
|
158
|
-
resolvedUri: importedUri
|
|
159
|
-
});
|
|
160
|
-
// Add to reverse dependency graph: importedUri → importingUri
|
|
161
|
-
let dependents = this.importDependencies.get(importedUri);
|
|
162
|
-
if (!dependents) {
|
|
163
|
-
dependents = new Set();
|
|
164
|
-
this.importDependencies.set(importedUri, dependents);
|
|
165
|
-
}
|
|
166
|
-
dependents.add(importingUri);
|
|
167
|
-
}
|
|
168
|
-
catch {
|
|
169
|
-
// Import resolution failed - still track the specifier with empty resolution
|
|
170
|
-
importInfoList.push({
|
|
171
|
-
specifier: imp.uri,
|
|
172
|
-
alias: imp.alias,
|
|
173
|
-
resolvedUri: ''
|
|
174
|
-
});
|
|
175
|
-
}
|
|
270
|
+
const info = await this.resolveAndTrackImport(document, imp, importingUri);
|
|
271
|
+
importInfoList.push(info);
|
|
176
272
|
}
|
|
177
273
|
if (importInfoList.length > 0) {
|
|
178
274
|
this.documentImportInfo.set(importingUri, importInfoList);
|
|
179
275
|
}
|
|
180
276
|
}
|
|
277
|
+
/**
|
|
278
|
+
* Resolves a single import and registers it in the reverse dependency graph.
|
|
279
|
+
* Falls back to searching loaded documents when the filesystem resolver fails.
|
|
280
|
+
*/
|
|
281
|
+
async resolveAndTrackImport(document, imp, importingUri) {
|
|
282
|
+
const specifier = imp.uri ?? '';
|
|
283
|
+
try {
|
|
284
|
+
const resolvedUri = await this.resolveImport(document, specifier);
|
|
285
|
+
const importedUri = resolvedUri.toString();
|
|
286
|
+
this.addToDependencyGraph(importedUri, importingUri);
|
|
287
|
+
return { specifier, alias: imp.alias, resolvedUri: importedUri };
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
// Filesystem resolution failed (e.g., unsaved file, EmptyFileSystem).
|
|
291
|
+
// Try to find a loaded document whose URI path matches the specifier.
|
|
292
|
+
const matchedUri = this.findLoadedDocumentByPath(specifier, importingUri);
|
|
293
|
+
if (matchedUri) {
|
|
294
|
+
this.addToDependencyGraph(matchedUri, importingUri);
|
|
295
|
+
}
|
|
296
|
+
return { specifier, alias: imp.alias, resolvedUri: matchedUri };
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Adds an edge to the reverse dependency graph: importedUri → importingUri.
|
|
301
|
+
*/
|
|
302
|
+
addToDependencyGraph(importedUri, importingUri) {
|
|
303
|
+
let dependents = this.importDependencies.get(importedUri);
|
|
304
|
+
if (!dependents) {
|
|
305
|
+
dependents = new Set();
|
|
306
|
+
this.importDependencies.set(importedUri, dependents);
|
|
307
|
+
}
|
|
308
|
+
dependents.add(importingUri);
|
|
309
|
+
}
|
|
181
310
|
/**
|
|
182
311
|
* Ensures all imported documents are loaded and available.
|
|
183
312
|
* This is called during indexing, BEFORE linking/validation,
|
|
@@ -237,10 +366,18 @@ export class DomainLangIndexManager extends DefaultIndexManager {
|
|
|
237
366
|
* Called when a document is deleted.
|
|
238
367
|
*/
|
|
239
368
|
removeImportDependencies(uri) {
|
|
240
|
-
// Remove as an imported document
|
|
369
|
+
// Remove as an imported document (reverse graph entry)
|
|
241
370
|
this.importDependencies.delete(uri);
|
|
242
|
-
// Remove
|
|
371
|
+
// Remove import info for this document (forward graph entry)
|
|
372
|
+
this.documentImportInfo.delete(uri);
|
|
373
|
+
// Remove from all dependency sets (as an importer of other files)
|
|
243
374
|
this.removeDocumentFromDependencies(uri);
|
|
375
|
+
// Clean up PRS-017 caches
|
|
376
|
+
this.exportSnapshots.delete(uri);
|
|
377
|
+
this.changedExports.delete(uri);
|
|
378
|
+
this.detectedCycles.delete(uri);
|
|
379
|
+
// Invalidate the per-cycle cache since the graph changed
|
|
380
|
+
this.transitiveAffectedCache = undefined;
|
|
244
381
|
}
|
|
245
382
|
/**
|
|
246
383
|
* Removes a document from all dependency sets.
|
|
@@ -259,6 +396,28 @@ export class DomainLangIndexManager extends DefaultIndexManager {
|
|
|
259
396
|
this.importDependencies.clear();
|
|
260
397
|
this.documentImportInfo.clear();
|
|
261
398
|
this.importsLoaded.clear();
|
|
399
|
+
this.transitiveAffectedCache = undefined;
|
|
400
|
+
this.exportSnapshots.clear();
|
|
401
|
+
this.changedExports.clear();
|
|
402
|
+
this.detectedCycles.clear();
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Fallback for import resolution: searches loaded documents for one whose
|
|
406
|
+
* URI path matches the import specifier. Used when the filesystem-based
|
|
407
|
+
* resolver fails (e.g., unsaved files, EmptyFileSystem in tests).
|
|
408
|
+
*/
|
|
409
|
+
findLoadedDocumentByPath(specifier, excludeUri) {
|
|
410
|
+
const langiumDocuments = this.sharedServices.workspace.LangiumDocuments;
|
|
411
|
+
for (const doc of langiumDocuments.all) {
|
|
412
|
+
const docUri = doc.uri.toString();
|
|
413
|
+
if (docUri === excludeUri) {
|
|
414
|
+
continue;
|
|
415
|
+
}
|
|
416
|
+
if (doc.uri.path === specifier || doc.uri.path.endsWith(`/${specifier}`)) {
|
|
417
|
+
return docUri;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return '';
|
|
262
421
|
}
|
|
263
422
|
/**
|
|
264
423
|
* Marks a document as needing import re-loading.
|
|
@@ -398,7 +557,11 @@ export class DomainLangIndexManager extends DefaultIndexManager {
|
|
|
398
557
|
return affected;
|
|
399
558
|
}
|
|
400
559
|
/**
|
|
401
|
-
* Checks if any specifier OR its resolved URI matches the changed paths.
|
|
560
|
+
* Checks if any specifier OR its resolved URI matches the changed paths (PRS-017 R4).
|
|
561
|
+
*
|
|
562
|
+
* Uses exact filename matching instead of substring matching to prevent
|
|
563
|
+
* false positives (e.g., changing `sales.dlang` should NOT trigger
|
|
564
|
+
* revalidation of a file importing `pre-sales.dlang`).
|
|
402
565
|
*
|
|
403
566
|
* This handles both regular imports and path aliases:
|
|
404
567
|
* - Regular: `./domains/sales.dlang` matches path `sales.dlang`
|
|
@@ -409,20 +572,193 @@ export class DomainLangIndexManager extends DefaultIndexManager {
|
|
|
409
572
|
*/
|
|
410
573
|
hasMatchingSpecifierOrResolvedUri(importInfoList, changedPaths) {
|
|
411
574
|
for (const info of importInfoList) {
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
// Check the raw specifier (handles relative imports)
|
|
415
|
-
if (info.specifier.includes(changedPath) || changedPath.endsWith(normalizedSpecifier)) {
|
|
416
|
-
return true;
|
|
417
|
-
}
|
|
418
|
-
// Check the resolved URI (handles path aliases like @domains/...)
|
|
419
|
-
// The resolved URI contains the full file path which matches moved files
|
|
420
|
-
if (info.resolvedUri?.includes(changedPath)) {
|
|
421
|
-
return true;
|
|
422
|
-
}
|
|
575
|
+
if (this.matchesAnyChangedPath(info, changedPaths)) {
|
|
576
|
+
return true;
|
|
423
577
|
}
|
|
424
578
|
}
|
|
425
579
|
return false;
|
|
426
580
|
}
|
|
581
|
+
/**
|
|
582
|
+
* Checks if a single import info matches any of the changed paths.
|
|
583
|
+
* Extracted to reduce cognitive complexity of hasMatchingSpecifierOrResolvedUri.
|
|
584
|
+
*/
|
|
585
|
+
matchesAnyChangedPath(info, changedPaths) {
|
|
586
|
+
for (const changedPath of changedPaths) {
|
|
587
|
+
if (this.matchesChangedPath(info, changedPath)) {
|
|
588
|
+
return true;
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
return false;
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Checks if a single import info matches a single changed path.
|
|
595
|
+
*/
|
|
596
|
+
matchesChangedPath(info, changedPath) {
|
|
597
|
+
const changedFileName = this.extractFileName(changedPath);
|
|
598
|
+
if (!changedFileName)
|
|
599
|
+
return false;
|
|
600
|
+
// Check the resolved URI first (most reliable — already normalized)
|
|
601
|
+
if (info.resolvedUri && this.matchesResolvedUri(info.resolvedUri, changedFileName, changedPath)) {
|
|
602
|
+
return true;
|
|
603
|
+
}
|
|
604
|
+
// Check the specifier (handles relative imports)
|
|
605
|
+
return this.matchesSpecifier(info.specifier, changedFileName, changedPath);
|
|
606
|
+
}
|
|
607
|
+
/**
|
|
608
|
+
* Checks if a resolved URI matches a changed path by exact filename comparison.
|
|
609
|
+
*/
|
|
610
|
+
matchesResolvedUri(resolvedUri, changedFileName, changedPath) {
|
|
611
|
+
const resolvedFileName = this.extractFileName(resolvedUri);
|
|
612
|
+
if (resolvedFileName && changedFileName === resolvedFileName) {
|
|
613
|
+
return this.pathEndsWith(resolvedUri, changedPath);
|
|
614
|
+
}
|
|
615
|
+
return false;
|
|
616
|
+
}
|
|
617
|
+
/**
|
|
618
|
+
* Checks if an import specifier matches a changed path by exact filename comparison.
|
|
619
|
+
*/
|
|
620
|
+
matchesSpecifier(specifier, changedFileName, changedPath) {
|
|
621
|
+
const specifierFileName = this.extractFileName(specifier);
|
|
622
|
+
if (specifierFileName && changedFileName === specifierFileName) {
|
|
623
|
+
const normalizedSpecifier = specifier.replace(/^[.@/]+/, '');
|
|
624
|
+
return this.pathEndsWith(changedPath, normalizedSpecifier) ||
|
|
625
|
+
this.pathEndsWith(normalizedSpecifier, changedPath);
|
|
626
|
+
}
|
|
627
|
+
return false;
|
|
628
|
+
}
|
|
629
|
+
/**
|
|
630
|
+
* Extracts the filename (without extension) from a path or URI string.
|
|
631
|
+
*/
|
|
632
|
+
extractFileName(pathOrUri) {
|
|
633
|
+
// Handle URI paths and regular paths
|
|
634
|
+
const lastSlash = Math.max(pathOrUri.lastIndexOf('/'), pathOrUri.lastIndexOf('\\'));
|
|
635
|
+
const fileName = lastSlash >= 0 ? pathOrUri.slice(lastSlash + 1) : pathOrUri;
|
|
636
|
+
return fileName.replace(/\.dlang$/, '') || undefined;
|
|
637
|
+
}
|
|
638
|
+
/**
|
|
639
|
+
* Checks if longPath ends with shortPath, comparing path segments.
|
|
640
|
+
* Prevents substring false positives (e.g., "pre-sales" matching "sales").
|
|
641
|
+
*/
|
|
642
|
+
pathEndsWith(longPath, shortPath) {
|
|
643
|
+
const normalizedLong = longPath.replaceAll('\\', '/').replace(/\.dlang$/, '');
|
|
644
|
+
const normalizedShort = shortPath.replaceAll('\\', '/').replace(/\.dlang$/, '');
|
|
645
|
+
return normalizedLong === normalizedShort ||
|
|
646
|
+
normalizedLong.endsWith(`/${normalizedShort}`);
|
|
647
|
+
}
|
|
648
|
+
// --- PRS-017 R2: Export-signature diffing ---
|
|
649
|
+
/**
|
|
650
|
+
* Captures a snapshot of exported symbol signatures for a document.
|
|
651
|
+
* Signature = "nodeType:qualifiedName" for each exported symbol.
|
|
652
|
+
* Used to detect whether a document's public interface actually changed.
|
|
653
|
+
*/
|
|
654
|
+
captureExportSnapshot(uri) {
|
|
655
|
+
const descriptions = this.symbolIndex.get(uri) ?? [];
|
|
656
|
+
const signatures = new Set();
|
|
657
|
+
for (const desc of descriptions) {
|
|
658
|
+
signatures.add(`${desc.type}:${desc.name}`);
|
|
659
|
+
}
|
|
660
|
+
return signatures;
|
|
661
|
+
}
|
|
662
|
+
/**
|
|
663
|
+
* Checks if two sets of strings are equal (same size and same elements).
|
|
664
|
+
*/
|
|
665
|
+
setsEqual(a, b) {
|
|
666
|
+
if (a.size !== b.size)
|
|
667
|
+
return false;
|
|
668
|
+
for (const item of a) {
|
|
669
|
+
if (!b.has(item))
|
|
670
|
+
return false;
|
|
671
|
+
}
|
|
672
|
+
return true;
|
|
673
|
+
}
|
|
674
|
+
/**
|
|
675
|
+
* Returns true if any of the changed URIs had their exports actually change.
|
|
676
|
+
* Used by isAffected() to skip transitive invalidation when only
|
|
677
|
+
* implementation details changed (e.g., editing a vision string).
|
|
678
|
+
*/
|
|
679
|
+
anyExportsChanged(changedUris) {
|
|
680
|
+
for (const uri of changedUris) {
|
|
681
|
+
if (this.changedExports.has(uri)) {
|
|
682
|
+
return true;
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
return false;
|
|
686
|
+
}
|
|
687
|
+
// --- PRS-017 R3: Import cycle detection ---
|
|
688
|
+
/**
|
|
689
|
+
* Detects import cycles starting from a given document URI.
|
|
690
|
+
* Uses DFS with a recursion stack to find back-edges in the import graph.
|
|
691
|
+
* Stores detected cycles for reporting by ImportValidator.
|
|
692
|
+
*/
|
|
693
|
+
detectAndStoreCycles(startUri) {
|
|
694
|
+
// Clear any previous cycle for this document
|
|
695
|
+
this.detectedCycles.delete(startUri);
|
|
696
|
+
const cycle = this.findCycle(startUri);
|
|
697
|
+
if (cycle) {
|
|
698
|
+
// Store the cycle for each participant (skip last element which is the
|
|
699
|
+
// duplicate that closes the cycle, e.g. [A, B, C, A] → store for A, B, C)
|
|
700
|
+
for (let i = 0; i < cycle.length - 1; i++) {
|
|
701
|
+
this.detectedCycles.set(cycle[i], cycle);
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
/**
|
|
706
|
+
* DFS to find a cycle in the forward import graph starting from startUri.
|
|
707
|
+
* Returns the cycle path (e.g., [A, B, C, A]) if found, undefined otherwise.
|
|
708
|
+
*/
|
|
709
|
+
findCycle(startUri) {
|
|
710
|
+
const visited = new Set();
|
|
711
|
+
const stack = new Set();
|
|
712
|
+
const path = [];
|
|
713
|
+
const dfs = (uri) => {
|
|
714
|
+
if (stack.has(uri)) {
|
|
715
|
+
// Found cycle — extract the cycle path from the stack
|
|
716
|
+
const cycleStart = path.indexOf(uri);
|
|
717
|
+
return [...path.slice(cycleStart), uri];
|
|
718
|
+
}
|
|
719
|
+
if (visited.has(uri))
|
|
720
|
+
return undefined;
|
|
721
|
+
visited.add(uri);
|
|
722
|
+
stack.add(uri);
|
|
723
|
+
path.push(uri);
|
|
724
|
+
const imports = this.documentImportInfo.get(uri);
|
|
725
|
+
if (imports) {
|
|
726
|
+
for (const imp of imports) {
|
|
727
|
+
if (imp.resolvedUri) {
|
|
728
|
+
const cycle = dfs(imp.resolvedUri);
|
|
729
|
+
if (cycle)
|
|
730
|
+
return cycle;
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
stack.delete(uri);
|
|
735
|
+
path.pop();
|
|
736
|
+
return undefined;
|
|
737
|
+
};
|
|
738
|
+
return dfs(startUri);
|
|
739
|
+
}
|
|
740
|
+
/**
|
|
741
|
+
* Gets the detected import cycle for a document, if any.
|
|
742
|
+
* Returns the cycle path as an array of URIs, or undefined if no cycle.
|
|
743
|
+
* Used by ImportValidator to report cycle diagnostics (PRS-017 R3).
|
|
744
|
+
*/
|
|
745
|
+
getCycleForDocument(uri) {
|
|
746
|
+
return this.detectedCycles.get(uri);
|
|
747
|
+
}
|
|
748
|
+
// --- PRS-017 R1: Targeted ImportResolver cache invalidation ---
|
|
749
|
+
/**
|
|
750
|
+
* Invalidates the ImportResolver cache for the changed document and its dependents.
|
|
751
|
+
* This provides surgical cache invalidation instead of clearing the entire cache.
|
|
752
|
+
*/
|
|
753
|
+
invalidateImportResolverCache(changedUri) {
|
|
754
|
+
if (!this.importResolver)
|
|
755
|
+
return;
|
|
756
|
+
const affectedUris = [changedUri];
|
|
757
|
+
const dependents = this.importDependencies.get(changedUri);
|
|
758
|
+
if (dependents) {
|
|
759
|
+
affectedUris.push(...dependents);
|
|
760
|
+
}
|
|
761
|
+
this.importResolver.invalidateForDocuments(affectedUris);
|
|
762
|
+
}
|
|
427
763
|
}
|
|
428
764
|
//# sourceMappingURL=domain-lang-index-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-lang-index-manager.js","sourceRoot":"","sources":["../../src/lsp/domain-lang-index-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"domain-lang-index-manager.js","sourceRoot":"","sources":["../../src/lsp/domain-lang-index-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAK7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IA+D3D,YAAY,QAAmC;QAC3C,KAAK,CAAC,QAAQ,CAAC,CAAC;QA/DpB;;;;WAIG;QACc,uBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAC;QAErE;;;;;WAKG;QACc,uBAAkB,GAAG,IAAI,GAAG,EAAwB,CAAC;QAEtE;;;WAGG;QACc,kBAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QAUnD;;;;;WAKG;QACc,oBAAe,GAAG,IAAI,GAAG,EAAuB,CAAC;QAElE;;;;WAIG;QACc,mBAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpD;;;WAGG;QACc,mBAAc,GAAG,IAAI,GAAG,EAAoB,CAAC;QAgB1D,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,QAA4B;QAC5C,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,aAAa,CAAC,QAAyB,EAAE,SAAiB;QACpE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACvE,CAAC;QACD,2EAA2E;QAC3E,OAAO,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;;;;;OAWG;IACM,KAAK,CAAC,aAAa,CAAC,QAAyB,EAAE,WAAW,GAAG,iBAAiB,CAAC,IAAI;QACxF,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEpC,iDAAiD;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjD,4BAA4B;QAC5B,MAAM,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAEjD,8CAA8C;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC1C,MAAM,cAAc,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC9E,IAAI,cAAc,EAAE,CAAC;YACjB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACJ,yDAAyD;YACzD,yDAAyD;YACzD,mDAAmD;YACnD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,mDAAmD;QACnD,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAE7C,uDAAuD;QACvD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAE/B,iDAAiD;QACjD,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACM,MAAM,CAAC,GAAQ;QACpB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACM,aAAa,CAAC,GAAQ;QAC3B,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACM,UAAU,CAAC,QAAyB,EAAE,WAAwB;QACnE,kDAAkD;QAClD,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,0EAA0E;QAC1E,uEAAuE;QACvE,4CAA4C;QAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC7D,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpB,uDAAuD;YACvD,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAC3D,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnE,IAAI,KAAK,IAAI,IAAI,CAAC,iCAAiC,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjF,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,2EAA2E;QAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACzD,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;;OASG;IACK,kBAAkB,CAAC,WAAwB;QAC/C,sEAAsE;QACtE,IAAI,IAAI,CAAC,uBAAuB,EAAE,GAAG,KAAK,WAAW,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;QAC/C,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEhD,IAAI,CAAC,uBAAuB,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACtE,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAAC,WAAwB,EAAE,QAAqB;QAC3E,MAAM,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QACnC,IAAI,GAAuB,CAAC;QAC5B,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,SAAS;YACb,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9C,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAClB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,WAAwB,EAAE,QAAqB;QACvE,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC3D,KAAK,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;mBAC9C,IAAI,CAAC,iCAAiC,CAAC,cAAc,EAAE,YAAY,CAAC,EAAE,CAAC;gBAC1E,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,uBAAuB,CAAC,QAAyB;QAC3D,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE7C,oDAAoD;QACpD,4BAA4B;QAC5B,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE7C,iDAAiD;QACjD,IAAI,QAAQ,CAAC,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO;QACX,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAyB,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACX,CAAC;QAED,MAAM,cAAc,GAAiB,EAAE,CAAC;QAExC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,GAAG;gBAAE,SAAS;YACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;YAC3E,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,qBAAqB,CAC/B,QAAyB,EACzB,GAAqC,EACrC,YAAoB;QAEpB,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QAEhC,IAAI,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAClE,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YACrD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACL,sEAAsE;YACtE,sEAAsE;YACtE,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAC1E,IAAI,UAAU,EAAE,CAAC;gBACb,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QACpE,CAAC;IACL,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,WAAmB,EAAE,YAAoB;QAClE,IAAI,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACzD,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,mBAAmB,CAAC,QAAyB;QACvD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE1C,sEAAsE;QACtE,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,OAAO;QACX,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAElC,iDAAiD;QACjD,IAAI,QAAQ,CAAC,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO;QACX,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAyB,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO;QACX,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC;QACxE,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,eAAe,CAAC;QACtE,MAAM,OAAO,GAAsB,EAAE,CAAC;QAEtC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,GAAG;gBAAE,SAAS;YAEvB,IAAI,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,iBAAiB,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;gBAEjD,yBAAyB;gBACzB,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC5C,SAAS;gBACb,CAAC;gBAED,uCAAuC;gBACvC,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBAE5E,8DAA8D;gBAC9D,6DAA6D;gBAC7D,2DAA2D;gBAC3D,IAAI,WAAW,CAAC,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;oBAC9C,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,8DAA8D;YAClE,CAAC;QACL,CAAC;QAED,0DAA0D;QAC1D,mEAAmE;QACnE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,wBAAwB,CAAC,GAAW;QACxC,uDAAuD;QACvD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEpC,6DAA6D;QAC7D,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEpC,kEAAkE;QAClE,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC;QAEzC,0BAA0B;QAC1B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEhC,yDAAyD;QACzD,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACK,8BAA8B,CAAC,GAAW;QAC9C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,uBAAuB;QACnB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACK,wBAAwB,CAAC,SAAiB,EAAE,UAAkB;QAClE,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC;QACxE,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBACxB,SAAS;YACb,CAAC;YACD,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,CAAC;gBACvE,OAAO,MAAM,CAAC;YAClB,CAAC;QACL,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,GAAW;QAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,qBAAqB,CAAC,GAAW;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;IACzD,CAAC;IAED;;;;;;OAMG;IACH,kBAAkB,CAAC,WAAmB;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,OAAO,IAAI,GAAG,EAAE,CAAC;QACrB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAChC,gEAAgE;YAChE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,WAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,uBAAuB,CAAC,WAA6B;QACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,MAAM,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QAEnC,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,SAAS;YACb,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,UAAU,EAAE,CAAC;gBACb,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;oBAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAClB,mCAAmC;wBACnC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;;;;OASG;IACH,0CAA0C,CAAC,WAA6B;QACpE,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,IAAsB;QAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAEhC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,GAAW,EAAE,KAAkB;QAC1D,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEpE,eAAe;YACf,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,QAAQ,EAAE,CAAC;gBACX,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;YAED,kCAAkC;YAClC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC;YAED,8CAA8C;YAC9C,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,oBAAoB;QACxB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,0BAA0B,CAAC,YAAyB;QACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QAEnC,KAAK,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7D,IAAI,IAAI,CAAC,iCAAiC,CAAC,cAAc,EAAE,YAAY,CAAC,EAAE,CAAC;gBACvE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,iCAAiC,CAAC,cAA4B,EAAE,YAAyB;QAC7F,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;gBACjD,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,IAAgB,EAAE,YAAyB;QACrE,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAgB,EAAE,WAAmB;QAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QAEnC,oEAAoE;QACpE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,CAAC;YAC9F,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,iDAAiD;QACjD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,WAAmB,EAAE,eAAuB,EAAE,WAAmB;QACxF,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,gBAAgB,IAAI,eAAe,KAAK,gBAAgB,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,SAAiB,EAAE,eAAuB,EAAE,WAAmB;QACpF,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,iBAAiB,IAAI,eAAe,KAAK,iBAAiB,EAAE,CAAC;YAC7D,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,mBAAmB,CAAC;gBACtD,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,SAAiB;QACrC,qCAAqC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;IACzD,CAAC;IAED;;;OAGG;IACK,YAAY,CAAC,QAAgB,EAAE,SAAiB;QACpD,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAChF,OAAO,cAAc,KAAK,eAAe;YACrC,cAAc,CAAC,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,+CAA+C;IAE/C;;;;OAIG;IACK,qBAAqB,CAAC,GAAW;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAC9B,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,CAAc,EAAE,CAAc;QAC5C,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,WAAwB;QAC9C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,6CAA6C;IAE7C;;;;OAIG;IACK,oBAAoB,CAAC,QAAgB;QACzC,6CAA6C;QAC7C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAErC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,KAAK,EAAE,CAAC;YACR,uEAAuE;YACvE,0EAA0E;YAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,SAAS,CAAC,QAAgB;QAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,MAAM,GAAG,GAAG,CAAC,GAAW,EAAwB,EAAE;YAC9C,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjB,sDAAsD;gBACtD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,SAAS,CAAC;YAEvC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEf,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,OAAO,EAAE,CAAC;gBACV,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBACxB,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;wBAClB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;wBACnC,IAAI,KAAK;4BAAE,OAAO,KAAK,CAAC;oBAC5B,CAAC;gBACL,CAAC;YACL,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACrB,CAAC,CAAC;QAEF,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,GAAW;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,iEAAiE;IAEjE;;;OAGG;IACK,6BAA6B,CAAC,UAAkB;QACpD,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QAEjC,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,UAAU,EAAE,CAAC;YACb,YAAY,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC7D,CAAC;CACJ"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { LangiumSharedServices } from 'langium/lsp';
|
|
2
|
+
import { FileChangeType, type DidChangeWatchedFilesParams } from 'vscode-languageserver-protocol';
|
|
3
|
+
import type { DomainLangServices } from '../domain-lang-module.js';
|
|
4
|
+
export interface DomainLangRefreshHooks {
|
|
5
|
+
onManifestChanged?: (change: {
|
|
6
|
+
uri: string;
|
|
7
|
+
type: FileChangeType;
|
|
8
|
+
}) => Promise<void> | void;
|
|
9
|
+
onManifestDeleted?: (uri: string) => Promise<void> | void;
|
|
10
|
+
}
|
|
11
|
+
export interface DomainLangRefreshOptions {
|
|
12
|
+
dedupeWindowMs?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface RefreshOutcome {
|
|
15
|
+
readonly configChanged: boolean;
|
|
16
|
+
readonly fullRebuildTriggered: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function registerDomainLangRefresh(shared: LangiumSharedServices, domainLang: DomainLangServices, hooks?: DomainLangRefreshHooks, options?: DomainLangRefreshOptions): {
|
|
19
|
+
dispose(): void;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Processes watched file change events.
|
|
23
|
+
*
|
|
24
|
+
* **Architecture:**
|
|
25
|
+
* - `.dlang` changes are handled entirely by Langium's own `DocumentBuilder.update()`
|
|
26
|
+
* pipeline. `DomainLangIndexManager.isAffected()` provides transitive import
|
|
27
|
+
* dependency tracking and specifier-sensitive matching, so Langium's single
|
|
28
|
+
* `update()` call propagates changes correctly through the import graph.
|
|
29
|
+
*
|
|
30
|
+
* - Config changes (model.yaml, model.lock) need explicit handling because Langium
|
|
31
|
+
* ignores non-language files (they have no LangiumDocument). Config changes
|
|
32
|
+
* invalidate caches and trigger a full rebuild of all loaded documents, routed
|
|
33
|
+
* through the workspace lock to serialize with Langium's own updates.
|
|
34
|
+
*/
|
|
35
|
+
export declare function processWatchedFileChanges(params: DidChangeWatchedFilesParams, shared: LangiumSharedServices, domainLang: DomainLangServices, hooks?: DomainLangRefreshHooks): Promise<RefreshOutcome>;
|