@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
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { URI } from 'langium';
|
|
3
|
+
import { FileChangeType } from 'vscode-languageserver-protocol';
|
|
4
|
+
class RecentChangeDeduper {
|
|
5
|
+
constructor(dedupeWindowMs = 300) {
|
|
6
|
+
this.seen = new Map();
|
|
7
|
+
this.dedupeWindowMs = dedupeWindowMs;
|
|
8
|
+
}
|
|
9
|
+
dedupe(changes) {
|
|
10
|
+
const now = Date.now();
|
|
11
|
+
const filtered = [];
|
|
12
|
+
for (const [key, timestamp] of this.seen.entries()) {
|
|
13
|
+
if (now - timestamp > this.dedupeWindowMs * 4) {
|
|
14
|
+
this.seen.delete(key);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
for (const change of changes) {
|
|
18
|
+
const key = `${change.uri}|${change.type}`;
|
|
19
|
+
const previous = this.seen.get(key);
|
|
20
|
+
if (previous !== undefined && now - previous < this.dedupeWindowMs) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
this.seen.set(key, now);
|
|
24
|
+
filtered.push(change);
|
|
25
|
+
}
|
|
26
|
+
return filtered;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function registerDomainLangRefresh(shared, domainLang, hooks = {}, options = {}) {
|
|
30
|
+
const deduper = new RecentChangeDeduper(options.dedupeWindowMs);
|
|
31
|
+
return shared.lsp.DocumentUpdateHandler.onWatchedFilesChange(async (params) => {
|
|
32
|
+
try {
|
|
33
|
+
const dedupedChanges = deduper.dedupe(params.changes);
|
|
34
|
+
if (dedupedChanges.length === 0) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
await processWatchedFileChanges({ changes: dedupedChanges }, shared, domainLang, hooks);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
41
|
+
console.error(`Error handling watched file changes: ${message}`);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Processes watched file change events.
|
|
47
|
+
*
|
|
48
|
+
* **Architecture:**
|
|
49
|
+
* - `.dlang` changes are handled entirely by Langium's own `DocumentBuilder.update()`
|
|
50
|
+
* pipeline. `DomainLangIndexManager.isAffected()` provides transitive import
|
|
51
|
+
* dependency tracking and specifier-sensitive matching, so Langium's single
|
|
52
|
+
* `update()` call propagates changes correctly through the import graph.
|
|
53
|
+
*
|
|
54
|
+
* - Config changes (model.yaml, model.lock) need explicit handling because Langium
|
|
55
|
+
* ignores non-language files (they have no LangiumDocument). Config changes
|
|
56
|
+
* invalidate caches and trigger a full rebuild of all loaded documents, routed
|
|
57
|
+
* through the workspace lock to serialize with Langium's own updates.
|
|
58
|
+
*/
|
|
59
|
+
export async function processWatchedFileChanges(params, shared, domainLang, hooks = {}) {
|
|
60
|
+
const categorized = categorizeChanges(params);
|
|
61
|
+
const hasConfigChanges = categorized.manifestChanges.length > 0
|
|
62
|
+
|| categorized.lockFileChanges.length > 0;
|
|
63
|
+
if (!hasConfigChanges) {
|
|
64
|
+
// .dlang changes handled by Langium's update() → isAffected() pipeline.
|
|
65
|
+
// DomainLangIndexManager.isAffected() checks transitive import deps
|
|
66
|
+
// and specifier-sensitive matching — no second update() needed.
|
|
67
|
+
return { configChanged: false, fullRebuildTriggered: false };
|
|
68
|
+
}
|
|
69
|
+
// Config changes need explicit handling: invalidate caches, then rebuild.
|
|
70
|
+
// Route through the workspace lock to serialize with Langium's own updates.
|
|
71
|
+
const indexManager = shared.workspace.IndexManager;
|
|
72
|
+
await shared.workspace.WorkspaceLock.write(async (token) => {
|
|
73
|
+
// 1. Invalidate caches
|
|
74
|
+
await processManifestChanges(categorized.manifestChanges, domainLang, hooks);
|
|
75
|
+
await processLockFileChanges(categorized.lockFileChanges, domainLang);
|
|
76
|
+
domainLang.imports.ImportResolver.clearCache();
|
|
77
|
+
indexManager.clearImportDependencies();
|
|
78
|
+
// 2. Rebuild ALL loaded documents — config changes affect all imports
|
|
79
|
+
const allDocUris = shared.workspace.LangiumDocuments.all
|
|
80
|
+
.map(doc => doc.uri)
|
|
81
|
+
.toArray();
|
|
82
|
+
if (allDocUris.length > 0) {
|
|
83
|
+
await shared.workspace.DocumentBuilder.update(allDocUris, [], token);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
return { configChanged: true, fullRebuildTriggered: true };
|
|
87
|
+
}
|
|
88
|
+
function categorizeChanges(params) {
|
|
89
|
+
const manifestChanges = [];
|
|
90
|
+
const lockFileChanges = [];
|
|
91
|
+
for (const change of params.changes) {
|
|
92
|
+
const uri = URI.parse(change.uri);
|
|
93
|
+
const fileName = path.basename(uri.path).toLowerCase();
|
|
94
|
+
if (fileName === 'model.yaml') {
|
|
95
|
+
manifestChanges.push({ uri: change.uri, type: change.type });
|
|
96
|
+
}
|
|
97
|
+
else if (fileName === 'model.lock') {
|
|
98
|
+
lockFileChanges.push({ uri: change.uri, type: change.type });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return { manifestChanges, lockFileChanges };
|
|
102
|
+
}
|
|
103
|
+
async function processManifestChanges(manifestChanges, domainLang, hooks) {
|
|
104
|
+
for (const change of manifestChanges) {
|
|
105
|
+
domainLang.imports.ManifestManager.invalidateManifestCache();
|
|
106
|
+
// R11: Update workspace layout cache for the manifest's directory
|
|
107
|
+
const manifestDir = path.dirname(URI.parse(change.uri).fsPath);
|
|
108
|
+
domainLang.imports.ManifestManager.onManifestEvent(manifestDir, change.type !== FileChangeType.Deleted);
|
|
109
|
+
if (change.type === FileChangeType.Deleted) {
|
|
110
|
+
if (hooks.onManifestDeleted) {
|
|
111
|
+
await hooks.onManifestDeleted(change.uri);
|
|
112
|
+
}
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (hooks.onManifestChanged) {
|
|
116
|
+
await hooks.onManifestChanged(change);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async function processLockFileChanges(lockFileChanges, domainLang) {
|
|
121
|
+
for (const change of lockFileChanges) {
|
|
122
|
+
if (change.type === FileChangeType.Deleted) {
|
|
123
|
+
domainLang.imports.ManifestManager.invalidateLockCache();
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
await domainLang.imports.ManifestManager.refreshLockFile();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=domain-lang-refresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-lang-refresh.js","sourceRoot":"","sources":["../../src/lsp/domain-lang-refresh.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,11 @@ import type { DomainLangServices } from '../domain-lang-module.js';
|
|
|
49
49
|
*/
|
|
50
50
|
export declare class DomainLangWorkspaceManager extends DefaultWorkspaceManager {
|
|
51
51
|
private readonly sharedServices;
|
|
52
|
+
/**
|
|
53
|
+
* LSP connection for progress reporting (PRS-017 R7).
|
|
54
|
+
* Optional because the workspace manager can run in non-LSP contexts.
|
|
55
|
+
*/
|
|
56
|
+
private readonly connection;
|
|
52
57
|
/**
|
|
53
58
|
* DI-injected import resolver. Set via late-binding because
|
|
54
59
|
* WorkspaceManager (shared module) is created before ImportResolver (language module).
|
|
@@ -106,4 +111,9 @@ export declare class DomainLangWorkspaceManager extends DefaultWorkspaceManager
|
|
|
106
111
|
* @returns Set of URIs (as strings) for all documents in the import graph
|
|
107
112
|
*/
|
|
108
113
|
private loadImportGraph;
|
|
114
|
+
/**
|
|
115
|
+
* Creates an LSP work-done progress reporter.
|
|
116
|
+
* Returns undefined in non-LSP contexts (no connection).
|
|
117
|
+
*/
|
|
118
|
+
private createProgress;
|
|
109
119
|
}
|
|
@@ -53,6 +53,9 @@ export class DomainLangWorkspaceManager extends DefaultWorkspaceManager {
|
|
|
53
53
|
constructor(services) {
|
|
54
54
|
super(services);
|
|
55
55
|
this.sharedServices = services;
|
|
56
|
+
// Attempt to access connection from LSP services (cast to full shared services)
|
|
57
|
+
const lspServices = services;
|
|
58
|
+
this.connection = lspServices.lsp?.Connection;
|
|
56
59
|
}
|
|
57
60
|
/**
|
|
58
61
|
* Late-binds the language-specific services after DI initialization.
|
|
@@ -73,13 +76,18 @@ export class DomainLangWorkspaceManager extends DefaultWorkspaceManager {
|
|
|
73
76
|
await super.initializeWorkspace(folders, cancelToken);
|
|
74
77
|
}
|
|
75
78
|
async loadAdditionalDocuments(folders, collector) {
|
|
79
|
+
const progress = await this.createProgress('DomainLang: Indexing workspace');
|
|
76
80
|
// Find ALL model.yaml files in workspace (supports mixed mode)
|
|
77
81
|
const manifestInfos = await this.findAllManifestsInFolders(folders);
|
|
78
82
|
// Track directories covered by manifests to avoid loading their files as standalone
|
|
79
83
|
const moduleDirectories = new Set(manifestInfos.map(m => path.dirname(m.manifestPath)));
|
|
84
|
+
progress?.report(`Found ${manifestInfos.length} module(s)`);
|
|
80
85
|
// Mode A or Mode C: Load each module's entry + import graph
|
|
86
|
+
let moduleIdx = 0;
|
|
81
87
|
for (const manifestInfo of manifestInfos) {
|
|
88
|
+
moduleIdx++;
|
|
82
89
|
try {
|
|
90
|
+
progress?.report(`Loading module ${moduleIdx}/${manifestInfos.length}`);
|
|
83
91
|
const entryUri = URI.file(manifestInfo.entryPath);
|
|
84
92
|
const entryDoc = await this.langiumDocuments.getOrCreateDocument(entryUri);
|
|
85
93
|
collector(entryDoc);
|
|
@@ -110,7 +118,9 @@ export class DomainLangWorkspaceManager extends DefaultWorkspaceManager {
|
|
|
110
118
|
}
|
|
111
119
|
// Load standalone .dlang files in workspace root folders
|
|
112
120
|
// These are files NOT covered by any module's import graph
|
|
121
|
+
progress?.report('Loading standalone files');
|
|
113
122
|
await this.loadStandaloneFiles(folders, moduleDirectories, collector);
|
|
123
|
+
progress?.done();
|
|
114
124
|
}
|
|
115
125
|
/**
|
|
116
126
|
* Loads standalone .dlang files from workspace folders recursively.
|
|
@@ -256,5 +266,30 @@ export class DomainLangWorkspaceManager extends DefaultWorkspaceManager {
|
|
|
256
266
|
await visit(document);
|
|
257
267
|
return visited;
|
|
258
268
|
}
|
|
269
|
+
// --- PRS-017 R7: Progress reporting ---
|
|
270
|
+
/**
|
|
271
|
+
* Creates an LSP work-done progress reporter.
|
|
272
|
+
* Returns undefined in non-LSP contexts (no connection).
|
|
273
|
+
*/
|
|
274
|
+
async createProgress(title) {
|
|
275
|
+
if (!this.connection)
|
|
276
|
+
return undefined;
|
|
277
|
+
try {
|
|
278
|
+
const reporter = await this.connection.window.createWorkDoneProgress();
|
|
279
|
+
reporter.begin(title);
|
|
280
|
+
return {
|
|
281
|
+
report: (message) => {
|
|
282
|
+
reporter.report(message);
|
|
283
|
+
},
|
|
284
|
+
done: () => {
|
|
285
|
+
reporter.done();
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
// Client may not support progress — degrade gracefully
|
|
291
|
+
return undefined;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
259
294
|
}
|
|
260
295
|
//# sourceMappingURL=domain-lang-workspace-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-lang-workspace-manager.js","sourceRoot":"","sources":["../../src/lsp/domain-lang-workspace-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,GAAG,EAAE,QAAQ,EAAmG,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"domain-lang-workspace-manager.js","sourceRoot":"","sources":["../../src/lsp/domain-lang-workspace-manager.ts"],"names":[],"mappings":"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"}
|
package/out/main.js
CHANGED
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
import { startLanguageServer } from 'langium/lsp';
|
|
2
2
|
import { NodeFileSystem } from 'langium/node';
|
|
3
|
-
import { createConnection, ProposedFeatures
|
|
3
|
+
import { createConnection, ProposedFeatures } from 'vscode-languageserver/node.js';
|
|
4
4
|
import { createDomainLangServices } from './domain-lang-module.js';
|
|
5
5
|
import { ensureImportGraphFromEntryFile } from './utils/import-utils.js';
|
|
6
|
+
import { registerDomainLangRefresh } from './lsp/domain-lang-refresh.js';
|
|
6
7
|
import { registerToolHandlers } from './lsp/tool-handlers.js';
|
|
7
8
|
import { URI } from 'langium';
|
|
9
|
+
import { setLspRuntimeSettings } from './services/lsp-runtime-settings.js';
|
|
8
10
|
// Create a connection to the client
|
|
9
11
|
const connection = createConnection(ProposedFeatures.all);
|
|
10
12
|
// Inject the shared services and language-specific services
|
|
11
13
|
const { shared, DomainLang } = createDomainLangServices({ connection, ...NodeFileSystem });
|
|
12
14
|
// Register custom LSP request handlers for VS Code Language Model Tools (PRS-015)
|
|
13
15
|
registerToolHandlers(connection, shared);
|
|
16
|
+
shared.lsp.LanguageServer.onInitialize((params) => {
|
|
17
|
+
applyLspSettings(params.initializationOptions);
|
|
18
|
+
});
|
|
19
|
+
connection.onDidChangeConfiguration((params) => {
|
|
20
|
+
applyLspSettings(params.settings);
|
|
21
|
+
});
|
|
14
22
|
// Initialize workspace manager when language server initializes
|
|
15
23
|
// Uses Langium's LanguageServer.onInitialize hook (not raw connection handler)
|
|
16
24
|
// This integrates properly with Langium's initialization flow
|
|
@@ -23,7 +31,7 @@ shared.lsp.LanguageServer.onInitialize((params) => {
|
|
|
23
31
|
if (workspaceRoot) {
|
|
24
32
|
// Initialize workspace manager synchronously (just sets root path)
|
|
25
33
|
// Heavy work happens in initializeWorkspace() called by Langium later
|
|
26
|
-
const workspaceManager = DomainLang.imports.
|
|
34
|
+
const workspaceManager = DomainLang.imports.ManifestManager;
|
|
27
35
|
workspaceManager.initialize(workspaceRoot).catch(error => {
|
|
28
36
|
const message = error instanceof Error ? error.message : String(error);
|
|
29
37
|
console.warn(`Failed to initialize workspace: ${message}`);
|
|
@@ -32,194 +40,7 @@ shared.lsp.LanguageServer.onInitialize((params) => {
|
|
|
32
40
|
console.warn(`DomainLang workspace root: ${workspaceRoot}`);
|
|
33
41
|
}
|
|
34
42
|
});
|
|
35
|
-
|
|
36
|
-
// Uses Langium's built-in file watcher which already watches **/* in workspace
|
|
37
|
-
// This invalidates caches when config files change externally
|
|
38
|
-
shared.lsp.DocumentUpdateHandler?.onWatchedFilesChange(async (params) => {
|
|
39
|
-
try {
|
|
40
|
-
await handleFileChanges(params, DomainLang.imports.WorkspaceManager, shared, DomainLang);
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
44
|
-
console.error(`Error handling file change notification: ${message}`);
|
|
45
|
-
// Continue - don't crash the server
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
/**
|
|
49
|
-
* Categorizes file changes by type.
|
|
50
|
-
*/
|
|
51
|
-
function categorizeChanges(params, workspaceManager, langServices, indexManager) {
|
|
52
|
-
const result = {
|
|
53
|
-
manifestChanged: false,
|
|
54
|
-
lockFileChanged: false,
|
|
55
|
-
changedDlangUris: new Set(),
|
|
56
|
-
deletedDlangUris: new Set(),
|
|
57
|
-
createdDlangUris: new Set()
|
|
58
|
-
};
|
|
59
|
-
for (const change of params.changes) {
|
|
60
|
-
const uri = URI.parse(change.uri);
|
|
61
|
-
const fileName = uri.path.split('/').pop() ?? '';
|
|
62
|
-
const uriString = change.uri;
|
|
63
|
-
if (fileName === 'model.yaml') {
|
|
64
|
-
console.warn(`model.yaml changed: ${uriString}`);
|
|
65
|
-
workspaceManager.invalidateManifestCache();
|
|
66
|
-
langServices.imports.ImportResolver.clearCache();
|
|
67
|
-
indexManager.clearImportDependencies();
|
|
68
|
-
result.manifestChanged = true;
|
|
69
|
-
}
|
|
70
|
-
else if (fileName === 'model.lock') {
|
|
71
|
-
console.warn(`model.lock changed: ${uriString}`);
|
|
72
|
-
langServices.imports.ImportResolver.clearCache();
|
|
73
|
-
indexManager.clearImportDependencies();
|
|
74
|
-
result.lockFileChanged = true;
|
|
75
|
-
}
|
|
76
|
-
else if (fileName.endsWith('.dlang')) {
|
|
77
|
-
if (change.type === FileChangeType.Deleted) {
|
|
78
|
-
result.deletedDlangUris.add(uriString);
|
|
79
|
-
console.warn(`DomainLang file deleted: ${uriString}`);
|
|
80
|
-
}
|
|
81
|
-
else if (change.type === FileChangeType.Created) {
|
|
82
|
-
result.createdDlangUris.add(uriString);
|
|
83
|
-
console.warn(`DomainLang file created: ${uriString}`);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
result.changedDlangUris.add(uriString);
|
|
87
|
-
console.warn(`DomainLang file changed: ${uriString}`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
return result;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Rebuilds documents that depend on changed/deleted/created .dlang files.
|
|
95
|
-
*/
|
|
96
|
-
async function rebuildAffectedDocuments(changes, indexManager, sharedServices, langServices) {
|
|
97
|
-
const hasChanges = changes.changedDlangUris.size > 0 ||
|
|
98
|
-
changes.deletedDlangUris.size > 0 ||
|
|
99
|
-
changes.createdDlangUris.size > 0;
|
|
100
|
-
if (!hasChanges) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
// CRITICAL: Clear ImportResolver cache BEFORE rebuilding.
|
|
104
|
-
// The WorkspaceCache only clears AFTER linking, but resolution happens
|
|
105
|
-
// DURING linking. Without this, stale cached resolutions would be used.
|
|
106
|
-
langServices.imports.ImportResolver.clearCache();
|
|
107
|
-
const affectedUris = collectAffectedDocuments(changes, indexManager);
|
|
108
|
-
if (affectedUris.size === 0) {
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
console.warn(`Rebuilding ${affectedUris.size} documents affected by file changes`);
|
|
112
|
-
const langiumDocuments = sharedServices.workspace.LangiumDocuments;
|
|
113
|
-
const affectedDocs = [];
|
|
114
|
-
for (const uriString of affectedUris) {
|
|
115
|
-
const uri = URI.parse(uriString);
|
|
116
|
-
if (langiumDocuments.hasDocument(uri)) {
|
|
117
|
-
affectedDocs.push(uri);
|
|
118
|
-
indexManager.markForReprocessing(uriString);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
const deletedUriObjects = [...changes.deletedDlangUris].map(u => URI.parse(u));
|
|
122
|
-
if (affectedDocs.length > 0 || deletedUriObjects.length > 0) {
|
|
123
|
-
await sharedServices.workspace.DocumentBuilder.update(affectedDocs, deletedUriObjects);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Collects all document URIs that should be rebuilt based on the changes.
|
|
128
|
-
*
|
|
129
|
-
* Uses targeted matching to avoid expensive full rebuilds:
|
|
130
|
-
* - For edits: rebuild documents that import the changed file (by resolved URI)
|
|
131
|
-
* - For all changes: rebuild documents whose import specifiers match the path
|
|
132
|
-
*
|
|
133
|
-
* The specifier matching handles renamed/moved/created files by comparing
|
|
134
|
-
* import specifiers against path segments (filename, parent/filename, etc.).
|
|
135
|
-
*/
|
|
136
|
-
function collectAffectedDocuments(changes, indexManager) {
|
|
137
|
-
const allChangedUris = new Set([
|
|
138
|
-
...changes.changedDlangUris,
|
|
139
|
-
...changes.deletedDlangUris,
|
|
140
|
-
...changes.createdDlangUris
|
|
141
|
-
]);
|
|
142
|
-
// Get documents affected by resolved URI changes (edits to imported files)
|
|
143
|
-
const affectedByUri = indexManager.getAllAffectedDocuments(allChangedUris);
|
|
144
|
-
// Get documents with import specifiers that match changed paths
|
|
145
|
-
// This catches:
|
|
146
|
-
// - File moves/renames: specifiers that previously resolved but now won't
|
|
147
|
-
// - File creations: specifiers that previously failed but might now resolve
|
|
148
|
-
// Uses fuzzy matching on path segments rather than rebuilding all imports
|
|
149
|
-
const affectedBySpecifier = indexManager.getDocumentsWithPotentiallyAffectedImports(allChangedUris);
|
|
150
|
-
return new Set([...affectedByUri, ...affectedBySpecifier]);
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Handles all file changes including .dlang files, model.yaml, and model.lock.
|
|
154
|
-
*
|
|
155
|
-
* For .dlang files: rebuilds all documents that import the changed file.
|
|
156
|
-
* For config files: invalidates caches and rebuilds workspace as needed.
|
|
157
|
-
*/
|
|
158
|
-
async function handleFileChanges(params, workspaceManager, sharedServices, langServices) {
|
|
159
|
-
const indexManager = sharedServices.workspace.IndexManager;
|
|
160
|
-
// Categorize and process changes
|
|
161
|
-
const changes = categorizeChanges(params, workspaceManager, langServices, indexManager);
|
|
162
|
-
// Handle lock file changes
|
|
163
|
-
if (changes.lockFileChanged) {
|
|
164
|
-
const lockChange = params.changes.find(c => c.uri.endsWith('model.lock'));
|
|
165
|
-
if (lockChange) {
|
|
166
|
-
await handleLockFileChange(lockChange, workspaceManager);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
// Rebuild documents affected by .dlang file changes
|
|
170
|
-
await rebuildAffectedDocuments(changes, indexManager, sharedServices, langServices);
|
|
171
|
-
// Handle config file changes
|
|
172
|
-
if (changes.manifestChanged || changes.lockFileChanged) {
|
|
173
|
-
await rebuildWorkspace(sharedServices, workspaceManager, changes.manifestChanged);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Handles lock file creation, change, or deletion.
|
|
178
|
-
*/
|
|
179
|
-
async function handleLockFileChange(change, workspaceManager) {
|
|
180
|
-
if (change.type === FileChangeType.Changed || change.type === FileChangeType.Created) {
|
|
181
|
-
await workspaceManager.refreshLockFile();
|
|
182
|
-
}
|
|
183
|
-
else if (change.type === FileChangeType.Deleted) {
|
|
184
|
-
workspaceManager.invalidateLockCache();
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Rebuilds the workspace after config file changes.
|
|
189
|
-
* Uses incremental strategy: only full rebuild if dependencies changed.
|
|
190
|
-
*
|
|
191
|
-
* @param sharedServices - Shared Langium services
|
|
192
|
-
* @param workspaceManager - Workspace manager for manifest access
|
|
193
|
-
* @param manifestChanged - Whether model.yaml changed (vs just model.lock)
|
|
194
|
-
*/
|
|
195
|
-
async function rebuildWorkspace(sharedServices, workspaceManager, manifestChanged) {
|
|
196
|
-
try {
|
|
197
|
-
// If only lock file changed, caches are already invalidated - no rebuild needed
|
|
198
|
-
// Lock file changes mean resolved versions changed, but import resolver cache is cleared
|
|
199
|
-
// Documents will re-resolve imports on next access
|
|
200
|
-
if (!manifestChanged) {
|
|
201
|
-
console.warn('Lock file changed - caches invalidated, no rebuild needed');
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
// For manifest changes, check if dependencies section actually changed
|
|
205
|
-
// If only metadata changed (name, version, etc.), no rebuild needed
|
|
206
|
-
const manifest = await workspaceManager.getManifest();
|
|
207
|
-
const hasDependencies = manifest?.dependencies && Object.keys(manifest.dependencies).length > 0;
|
|
208
|
-
if (!hasDependencies) {
|
|
209
|
-
console.warn('Manifest changed but has no dependencies - skipping rebuild');
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
// Dependencies exist and manifest changed - do full rebuild
|
|
213
|
-
const documents = sharedServices.workspace.LangiumDocuments.all.toArray();
|
|
214
|
-
const uris = documents.map(doc => doc.uri);
|
|
215
|
-
await sharedServices.workspace.DocumentBuilder.update([], uris);
|
|
216
|
-
console.warn(`Workspace rebuilt: ${documents.length} documents revalidated`);
|
|
217
|
-
}
|
|
218
|
-
catch (error) {
|
|
219
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
220
|
-
console.error(`Failed to rebuild workspace: ${message}`);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
43
|
+
registerDomainLangRefresh(shared, DomainLang);
|
|
223
44
|
// Optionally start from a single entry file and follow imports.
|
|
224
45
|
// Configure via env DOMAINLANG_ENTRY (absolute or workspace-relative path)
|
|
225
46
|
const entryFile = process.env.DOMAINLANG_ENTRY;
|
|
@@ -262,4 +83,23 @@ else {
|
|
|
262
83
|
// No entry file configured: start normally
|
|
263
84
|
startLanguageServer(shared);
|
|
264
85
|
}
|
|
86
|
+
function applyLspSettings(settings) {
|
|
87
|
+
const lsp = extractLspSettings(settings);
|
|
88
|
+
setLspRuntimeSettings({
|
|
89
|
+
traceImports: lsp.traceImports,
|
|
90
|
+
infoLogs: lsp.infoLogs,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
function extractLspSettings(source) {
|
|
94
|
+
const root = isRecord(source) ? source : {};
|
|
95
|
+
const domainlang = isRecord(root.domainlang) ? root.domainlang : root;
|
|
96
|
+
const lsp = isRecord(domainlang.lsp) ? domainlang.lsp : {};
|
|
97
|
+
return {
|
|
98
|
+
traceImports: typeof lsp.traceImports === 'boolean' ? lsp.traceImports : false,
|
|
99
|
+
infoLogs: typeof lsp.infoLogs === 'boolean' ? lsp.infoLogs : false,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function isRecord(value) {
|
|
103
|
+
return typeof value === 'object' && value !== null;
|
|
104
|
+
}
|
|
265
105
|
//# sourceMappingURL=main.js.map
|
package/out/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/out/sdk/loader-node.js
CHANGED
|
@@ -67,7 +67,7 @@ export async function loadModel(entryFile, options) {
|
|
|
67
67
|
const shared = servicesObj.shared;
|
|
68
68
|
// Initialize workspace if directory provided
|
|
69
69
|
if (options?.workspaceDir) {
|
|
70
|
-
const workspaceManager = services.imports.
|
|
70
|
+
const workspaceManager = services.imports.ManifestManager;
|
|
71
71
|
await workspaceManager.initialize(options.workspaceDir);
|
|
72
72
|
}
|
|
73
73
|
// Read file content and create document
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-node.js","sourceRoot":"","sources":["../../src/sdk/loader-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,SAAiB,EACjB,OAAqB;IAErB,wBAAwB;IACxB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC3C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAEtE,2BAA2B;IAC3B,MAAM,WAAW,GAAG,OAAO,EAAE,QAAQ;QACjC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE;QACnE,CAAC,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC;IACxC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAElC,6CAA6C;IAC7C,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;QACxB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"loader-node.js","sourceRoot":"","sources":["../../src/sdk/loader-node.ts"],"names":[],"mappings":"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"}
|