@domainlang/language 0.7.0 → 0.9.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/out/domain-lang-module.d.ts +2 -0
- package/out/domain-lang-module.js +21 -2
- package/out/domain-lang-module.js.map +1 -1
- package/out/lsp/domain-lang-completion.d.ts +142 -1
- package/out/lsp/domain-lang-completion.js +620 -22
- package/out/lsp/domain-lang-completion.js.map +1 -1
- package/out/lsp/domain-lang-document-symbol-provider.d.ts +79 -0
- package/out/lsp/domain-lang-document-symbol-provider.js +210 -0
- package/out/lsp/domain-lang-document-symbol-provider.js.map +1 -0
- package/out/lsp/domain-lang-index-manager.d.ts +34 -5
- package/out/lsp/domain-lang-index-manager.js +66 -27
- package/out/lsp/domain-lang-index-manager.js.map +1 -1
- package/out/lsp/domain-lang-node-kind-provider.d.ts +27 -0
- package/out/lsp/domain-lang-node-kind-provider.js +87 -0
- package/out/lsp/domain-lang-node-kind-provider.js.map +1 -0
- package/out/lsp/domain-lang-scope-provider.d.ts +53 -20
- package/out/lsp/domain-lang-scope-provider.js +119 -44
- package/out/lsp/domain-lang-scope-provider.js.map +1 -1
- package/out/lsp/domain-lang-workspace-manager.d.ts +23 -2
- package/out/lsp/domain-lang-workspace-manager.js +51 -6
- package/out/lsp/domain-lang-workspace-manager.js.map +1 -1
- package/out/lsp/hover/domain-lang-hover.d.ts +16 -6
- package/out/lsp/hover/domain-lang-hover.js +160 -134
- package/out/lsp/hover/domain-lang-hover.js.map +1 -1
- package/out/lsp/hover/hover-builders.d.ts +57 -0
- package/out/lsp/hover/hover-builders.js +171 -0
- package/out/lsp/hover/hover-builders.js.map +1 -0
- package/out/main.js +2 -1
- package/out/main.js.map +1 -1
- package/out/sdk/index.d.ts +31 -11
- package/out/sdk/index.js +30 -11
- package/out/sdk/index.js.map +1 -1
- package/out/sdk/loader-node.d.ts +2 -0
- package/out/sdk/loader-node.js +3 -1
- package/out/sdk/loader-node.js.map +1 -1
- package/out/sdk/loader.d.ts +55 -2
- package/out/sdk/loader.js +87 -28
- package/out/sdk/loader.js.map +1 -1
- package/out/sdk/query.js +14 -11
- package/out/sdk/query.js.map +1 -1
- package/out/sdk/validator.d.ts +134 -0
- package/out/sdk/validator.js +249 -0
- package/out/sdk/validator.js.map +1 -0
- package/out/services/package-boundary-detector.d.ts +101 -0
- package/out/services/package-boundary-detector.js +211 -0
- package/out/services/package-boundary-detector.js.map +1 -0
- package/out/services/performance-optimizer.js +6 -2
- package/out/services/performance-optimizer.js.map +1 -1
- package/out/services/types.d.ts +24 -0
- package/out/services/types.js.map +1 -1
- package/out/services/workspace-manager.d.ts +73 -6
- package/out/services/workspace-manager.js +210 -57
- package/out/services/workspace-manager.js.map +1 -1
- package/out/utils/import-utils.d.ts +9 -6
- package/out/utils/import-utils.js +26 -15
- package/out/utils/import-utils.js.map +1 -1
- package/out/validation/constants.d.ts +7 -0
- package/out/validation/constants.js +21 -3
- package/out/validation/constants.js.map +1 -1
- package/out/validation/import.d.ts +11 -1
- package/out/validation/import.js +42 -14
- package/out/validation/import.js.map +1 -1
- package/out/validation/maps.js +50 -1
- package/out/validation/maps.js.map +1 -1
- package/package.json +8 -9
- package/src/domain-lang-module.ts +24 -3
- package/src/lsp/domain-lang-completion.ts +736 -27
- package/src/lsp/domain-lang-document-symbol-provider.ts +254 -0
- package/src/lsp/domain-lang-index-manager.ts +79 -27
- package/src/lsp/domain-lang-node-kind-provider.ts +119 -0
- package/src/lsp/domain-lang-scope-provider.ts +171 -55
- package/src/lsp/domain-lang-workspace-manager.ts +64 -6
- package/src/lsp/hover/domain-lang-hover.ts +189 -131
- package/src/lsp/hover/hover-builders.ts +208 -0
- package/src/main.ts +3 -1
- package/src/sdk/index.ts +33 -11
- package/src/sdk/loader-node.ts +6 -1
- package/src/sdk/loader.ts +125 -34
- package/src/sdk/query.ts +15 -11
- package/src/sdk/validator.ts +358 -0
- package/src/services/package-boundary-detector.ts +238 -0
- package/src/services/performance-optimizer.ts +6 -2
- package/src/services/types.ts +25 -0
- package/src/services/workspace-manager.ts +259 -62
- package/src/utils/import-utils.ts +27 -15
- package/src/validation/constants.ts +23 -6
- package/src/validation/import.ts +49 -14
- package/src/validation/maps.ts +59 -2
|
@@ -2,6 +2,11 @@ import type { LockFile, ModelManifest, DependencySpec, ExtendedDependencySpec, P
|
|
|
2
2
|
/**
|
|
3
3
|
* Coordinates workspace discovery and manifest/lock file reading.
|
|
4
4
|
*
|
|
5
|
+
* **Multi-Root Support:**
|
|
6
|
+
* Maintains separate contexts for each workspace root (directory with model.yaml).
|
|
7
|
+
* This enables correct resolution in multi-project setups where sub-projects
|
|
8
|
+
* have their own model.yaml files.
|
|
9
|
+
*
|
|
5
10
|
* This is a read-only service for the LSP - it does NOT:
|
|
6
11
|
* - Generate lock files (use CLI: `dlang install`)
|
|
7
12
|
* - Download packages (use CLI: `dlang install`)
|
|
@@ -15,16 +20,41 @@ import type { LockFile, ModelManifest, DependencySpec, ExtendedDependencySpec, P
|
|
|
15
20
|
export declare class WorkspaceManager {
|
|
16
21
|
private readonly manifestFiles;
|
|
17
22
|
private readonly lockFiles;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Cache of workspace contexts by resolved workspace root path.
|
|
25
|
+
* Supports multiple independent workspaces in a single session.
|
|
26
|
+
*/
|
|
27
|
+
private readonly workspaceContexts;
|
|
28
|
+
/**
|
|
29
|
+
* Cache mapping start paths to their resolved workspace roots.
|
|
30
|
+
* Avoids repeated directory tree walking for the same paths.
|
|
31
|
+
*/
|
|
32
|
+
private readonly pathToRootCache;
|
|
33
|
+
/**
|
|
34
|
+
* The currently active workspace root (set by last initialize() call).
|
|
35
|
+
* Used by methods like getWorkspaceRoot(), getManifest(), etc.
|
|
36
|
+
*/
|
|
37
|
+
private activeRoot;
|
|
22
38
|
constructor(options?: WorkspaceManagerOptions);
|
|
39
|
+
/**
|
|
40
|
+
* Returns the active workspace context, or undefined if not initialized.
|
|
41
|
+
* All methods that need context should call this after ensureInitialized().
|
|
42
|
+
*/
|
|
43
|
+
private getActiveContext;
|
|
23
44
|
/**
|
|
24
45
|
* Finds the workspace root and loads any existing lock file.
|
|
25
|
-
*
|
|
46
|
+
*
|
|
47
|
+
* **Multi-Root Support:**
|
|
48
|
+
* Each call may switch to a different workspace context based on the startPath.
|
|
49
|
+
* The workspace root is the nearest ancestor directory containing model.yaml.
|
|
50
|
+
*
|
|
51
|
+
* @param startPath - Directory to start searching from (usually document directory)
|
|
26
52
|
*/
|
|
27
53
|
initialize(startPath: string): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Initializes a workspace context by loading its lock file.
|
|
56
|
+
*/
|
|
57
|
+
private initializeContext;
|
|
28
58
|
/**
|
|
29
59
|
* Returns the absolute path of the workspace root.
|
|
30
60
|
* @throws Error if {@link initialize} has not completed successfully.
|
|
@@ -33,8 +63,19 @@ export declare class WorkspaceManager {
|
|
|
33
63
|
/**
|
|
34
64
|
* Returns the project-local package cache directory.
|
|
35
65
|
* Per PRS-010: .dlang/packages/
|
|
66
|
+
*
|
|
67
|
+
* If the current workspace root is inside a cached package,
|
|
68
|
+
* walks up to find the actual project root's cache directory.
|
|
36
69
|
*/
|
|
37
70
|
getCacheDir(): string;
|
|
71
|
+
/**
|
|
72
|
+
* Finds the actual project root when inside a cached package.
|
|
73
|
+
*
|
|
74
|
+
* Cached packages are stored in: <project>/.dlang/packages/<owner>/<repo>/<commit>/
|
|
75
|
+
* If workspaceRoot is inside this structure, returns <project>
|
|
76
|
+
* Otherwise returns workspaceRoot unchanged.
|
|
77
|
+
*/
|
|
78
|
+
private findProjectRootFromCache;
|
|
38
79
|
/**
|
|
39
80
|
* Resolves the manifest file path within the workspace, if present.
|
|
40
81
|
*/
|
|
@@ -44,6 +85,20 @@ export declare class WorkspaceManager {
|
|
|
44
85
|
* Uses cached contents when unchanged on disk.
|
|
45
86
|
*/
|
|
46
87
|
getManifest(): Promise<ModelManifest | undefined>;
|
|
88
|
+
/**
|
|
89
|
+
* Returns the cached manifest synchronously (if available).
|
|
90
|
+
* Used by LSP features that need synchronous access (like completion).
|
|
91
|
+
* Returns undefined if manifest hasn't been loaded yet.
|
|
92
|
+
*/
|
|
93
|
+
getCachedManifest(): ModelManifest | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* Ensures the manifest is loaded and returns it.
|
|
96
|
+
* Use this over getCachedManifest() when you need to guarantee the manifest
|
|
97
|
+
* is available (e.g., in async LSP operations like completions).
|
|
98
|
+
*
|
|
99
|
+
* @returns The manifest or undefined if no model.yaml exists
|
|
100
|
+
*/
|
|
101
|
+
ensureManifestLoaded(): Promise<ModelManifest | undefined>;
|
|
47
102
|
/**
|
|
48
103
|
* Gets the currently cached lock file.
|
|
49
104
|
* Returns undefined if no lock file exists (run `dlang install` to create one).
|
|
@@ -94,11 +149,23 @@ export declare class WorkspaceManager {
|
|
|
94
149
|
* Reads the entry point from a cached package's model.yaml.
|
|
95
150
|
*/
|
|
96
151
|
private readPackageEntry;
|
|
97
|
-
private performInitialization;
|
|
98
152
|
private ensureInitialized;
|
|
99
153
|
private loadLockFileFromDisk;
|
|
100
154
|
private tryReadLockFile;
|
|
101
155
|
private loadManifest;
|
|
156
|
+
/**
|
|
157
|
+
* Reads, validates, and caches a manifest file.
|
|
158
|
+
*/
|
|
159
|
+
private readAndCacheManifest;
|
|
160
|
+
/**
|
|
161
|
+
* Handles errors from manifest loading, distinguishing recoverable
|
|
162
|
+
* errors (missing file, parse errors) from unexpected ones.
|
|
163
|
+
*/
|
|
164
|
+
private handleManifestError;
|
|
165
|
+
/**
|
|
166
|
+
* Clears the manifest cache on the given context, if available.
|
|
167
|
+
*/
|
|
168
|
+
private clearManifestCache;
|
|
102
169
|
/**
|
|
103
170
|
* Validates manifest structure and dependency configurations.
|
|
104
171
|
* Throws detailed errors for invalid manifests.
|
|
@@ -12,6 +12,11 @@ const DEFAULT_LOCK_FILES = [
|
|
|
12
12
|
/**
|
|
13
13
|
* Coordinates workspace discovery and manifest/lock file reading.
|
|
14
14
|
*
|
|
15
|
+
* **Multi-Root Support:**
|
|
16
|
+
* Maintains separate contexts for each workspace root (directory with model.yaml).
|
|
17
|
+
* This enables correct resolution in multi-project setups where sub-projects
|
|
18
|
+
* have their own model.yaml files.
|
|
19
|
+
*
|
|
15
20
|
* This is a read-only service for the LSP - it does NOT:
|
|
16
21
|
* - Generate lock files (use CLI: `dlang install`)
|
|
17
22
|
* - Download packages (use CLI: `dlang install`)
|
|
@@ -24,43 +29,125 @@ const DEFAULT_LOCK_FILES = [
|
|
|
24
29
|
*/
|
|
25
30
|
export class WorkspaceManager {
|
|
26
31
|
constructor(options = {}) {
|
|
32
|
+
/**
|
|
33
|
+
* Cache of workspace contexts by resolved workspace root path.
|
|
34
|
+
* Supports multiple independent workspaces in a single session.
|
|
35
|
+
*/
|
|
36
|
+
this.workspaceContexts = new Map();
|
|
37
|
+
/**
|
|
38
|
+
* Cache mapping start paths to their resolved workspace roots.
|
|
39
|
+
* Avoids repeated directory tree walking for the same paths.
|
|
40
|
+
*/
|
|
41
|
+
this.pathToRootCache = new Map();
|
|
27
42
|
this.manifestFiles = options.manifestFiles ?? [...DEFAULT_MANIFEST_FILES];
|
|
28
43
|
this.lockFiles = options.lockFiles ?? [...DEFAULT_LOCK_FILES];
|
|
29
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Returns the active workspace context, or undefined if not initialized.
|
|
47
|
+
* All methods that need context should call this after ensureInitialized().
|
|
48
|
+
*/
|
|
49
|
+
getActiveContext() {
|
|
50
|
+
if (!this.activeRoot)
|
|
51
|
+
return undefined;
|
|
52
|
+
return this.workspaceContexts.get(this.activeRoot);
|
|
53
|
+
}
|
|
30
54
|
/**
|
|
31
55
|
* Finds the workspace root and loads any existing lock file.
|
|
32
|
-
*
|
|
56
|
+
*
|
|
57
|
+
* **Multi-Root Support:**
|
|
58
|
+
* Each call may switch to a different workspace context based on the startPath.
|
|
59
|
+
* The workspace root is the nearest ancestor directory containing model.yaml.
|
|
60
|
+
*
|
|
61
|
+
* @param startPath - Directory to start searching from (usually document directory)
|
|
33
62
|
*/
|
|
34
63
|
async initialize(startPath) {
|
|
35
|
-
|
|
36
|
-
|
|
64
|
+
const normalizedStart = path.resolve(startPath);
|
|
65
|
+
// Fast path: check if we've already resolved this path
|
|
66
|
+
let workspaceRoot = this.pathToRootCache.get(normalizedStart);
|
|
67
|
+
if (!workspaceRoot) {
|
|
68
|
+
// Find workspace root by walking up directory tree
|
|
69
|
+
workspaceRoot = await this.findWorkspaceRoot(normalizedStart) ?? normalizedStart;
|
|
70
|
+
this.pathToRootCache.set(normalizedStart, workspaceRoot);
|
|
71
|
+
}
|
|
72
|
+
// Switch to this workspace's context
|
|
73
|
+
this.activeRoot = workspaceRoot;
|
|
74
|
+
// Get or create context for this workspace
|
|
75
|
+
let context = this.workspaceContexts.get(workspaceRoot);
|
|
76
|
+
if (!context) {
|
|
77
|
+
context = {
|
|
78
|
+
root: workspaceRoot,
|
|
79
|
+
lockFile: undefined,
|
|
80
|
+
manifestCache: undefined,
|
|
81
|
+
initPromise: undefined
|
|
82
|
+
};
|
|
83
|
+
this.workspaceContexts.set(workspaceRoot, context);
|
|
84
|
+
}
|
|
85
|
+
// Initialize this context (lazy, once per context)
|
|
86
|
+
context.initPromise ?? (context.initPromise = this.initializeContext(context));
|
|
87
|
+
await context.initPromise;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Initializes a workspace context by loading its lock file.
|
|
91
|
+
*/
|
|
92
|
+
async initializeContext(context) {
|
|
93
|
+
const loaded = await this.loadLockFileFromDisk(context.root);
|
|
94
|
+
if (loaded) {
|
|
95
|
+
context.lockFile = loaded.lockFile;
|
|
96
|
+
}
|
|
37
97
|
}
|
|
38
98
|
/**
|
|
39
99
|
* Returns the absolute path of the workspace root.
|
|
40
100
|
* @throws Error if {@link initialize} has not completed successfully.
|
|
41
101
|
*/
|
|
42
102
|
getWorkspaceRoot() {
|
|
43
|
-
if (!this.
|
|
103
|
+
if (!this.activeRoot) {
|
|
44
104
|
throw new Error('WorkspaceManager not initialized. Call initialize() first.');
|
|
45
105
|
}
|
|
46
|
-
return this.
|
|
106
|
+
return this.activeRoot;
|
|
47
107
|
}
|
|
48
108
|
/**
|
|
49
109
|
* Returns the project-local package cache directory.
|
|
50
110
|
* Per PRS-010: .dlang/packages/
|
|
111
|
+
*
|
|
112
|
+
* If the current workspace root is inside a cached package,
|
|
113
|
+
* walks up to find the actual project root's cache directory.
|
|
51
114
|
*/
|
|
52
115
|
getCacheDir() {
|
|
53
|
-
if (!this.
|
|
116
|
+
if (!this.activeRoot) {
|
|
54
117
|
throw new Error('WorkspaceManager not initialized. Call initialize() first.');
|
|
55
118
|
}
|
|
56
|
-
|
|
119
|
+
// If workspace root is inside .dlang/packages, find the project root
|
|
120
|
+
const projectRoot = this.findProjectRootFromCache(this.activeRoot);
|
|
121
|
+
return path.join(projectRoot, '.dlang', 'packages');
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Finds the actual project root when inside a cached package.
|
|
125
|
+
*
|
|
126
|
+
* Cached packages are stored in: <project>/.dlang/packages/<owner>/<repo>/<commit>/
|
|
127
|
+
* If workspaceRoot is inside this structure, returns <project>
|
|
128
|
+
* Otherwise returns workspaceRoot unchanged.
|
|
129
|
+
*/
|
|
130
|
+
findProjectRootFromCache(currentRoot) {
|
|
131
|
+
// Normalize path for cross-platform compatibility
|
|
132
|
+
const normalized = currentRoot.split(path.sep);
|
|
133
|
+
// Find last occurrence of .dlang in the path
|
|
134
|
+
const dlangIndex = normalized.lastIndexOf('.dlang');
|
|
135
|
+
// Check if we're inside .dlang/packages/...
|
|
136
|
+
if (dlangIndex !== -1 &&
|
|
137
|
+
dlangIndex + 1 < normalized.length &&
|
|
138
|
+
normalized[dlangIndex + 1] === 'packages') {
|
|
139
|
+
// Return the directory containing .dlang (the project root)
|
|
140
|
+
return normalized.slice(0, dlangIndex).join(path.sep);
|
|
141
|
+
}
|
|
142
|
+
// Not in a cached package, return as-is
|
|
143
|
+
return currentRoot;
|
|
57
144
|
}
|
|
58
145
|
/**
|
|
59
146
|
* Resolves the manifest file path within the workspace, if present.
|
|
60
147
|
*/
|
|
61
148
|
async getManifestPath() {
|
|
62
149
|
await this.ensureInitialized();
|
|
63
|
-
const root = this.
|
|
150
|
+
const root = this.activeRoot;
|
|
64
151
|
if (!root) {
|
|
65
152
|
return undefined;
|
|
66
153
|
}
|
|
@@ -80,27 +167,49 @@ export class WorkspaceManager {
|
|
|
80
167
|
await this.ensureInitialized();
|
|
81
168
|
return this.loadManifest();
|
|
82
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Returns the cached manifest synchronously (if available).
|
|
172
|
+
* Used by LSP features that need synchronous access (like completion).
|
|
173
|
+
* Returns undefined if manifest hasn't been loaded yet.
|
|
174
|
+
*/
|
|
175
|
+
getCachedManifest() {
|
|
176
|
+
return this.getActiveContext()?.manifestCache?.manifest;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Ensures the manifest is loaded and returns it.
|
|
180
|
+
* Use this over getCachedManifest() when you need to guarantee the manifest
|
|
181
|
+
* is available (e.g., in async LSP operations like completions).
|
|
182
|
+
*
|
|
183
|
+
* @returns The manifest or undefined if no model.yaml exists
|
|
184
|
+
*/
|
|
185
|
+
async ensureManifestLoaded() {
|
|
186
|
+
// If we already have a cached manifest, return it immediately
|
|
187
|
+
const context = this.getActiveContext();
|
|
188
|
+
if (context?.manifestCache?.manifest) {
|
|
189
|
+
return context.manifestCache.manifest;
|
|
190
|
+
}
|
|
191
|
+
// Otherwise load it (this also populates the cache)
|
|
192
|
+
return this.getManifest();
|
|
193
|
+
}
|
|
83
194
|
/**
|
|
84
195
|
* Gets the currently cached lock file.
|
|
85
196
|
* Returns undefined if no lock file exists (run `dlang install` to create one).
|
|
86
197
|
*/
|
|
87
198
|
async getLockFile() {
|
|
88
199
|
await this.ensureInitialized();
|
|
89
|
-
return this.lockFile;
|
|
200
|
+
return this.getActiveContext()?.lockFile;
|
|
90
201
|
}
|
|
91
202
|
/**
|
|
92
203
|
* Reloads the lock file from disk.
|
|
93
204
|
*/
|
|
94
205
|
async refreshLockFile() {
|
|
95
206
|
await this.ensureInitialized();
|
|
207
|
+
const context = this.getActiveContext();
|
|
96
208
|
const loaded = await this.loadLockFileFromDisk();
|
|
97
|
-
if (
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
this.lockFile = undefined;
|
|
209
|
+
if (context) {
|
|
210
|
+
context.lockFile = loaded?.lockFile;
|
|
102
211
|
}
|
|
103
|
-
return
|
|
212
|
+
return loaded?.lockFile;
|
|
104
213
|
}
|
|
105
214
|
/**
|
|
106
215
|
* Invalidates all cached data (manifest and lock file).
|
|
@@ -110,22 +219,31 @@ export class WorkspaceManager {
|
|
|
110
219
|
* will re-read from disk.
|
|
111
220
|
*/
|
|
112
221
|
invalidateCache() {
|
|
113
|
-
|
|
114
|
-
|
|
222
|
+
const context = this.getActiveContext();
|
|
223
|
+
if (context) {
|
|
224
|
+
context.manifestCache = undefined;
|
|
225
|
+
context.lockFile = undefined;
|
|
226
|
+
}
|
|
115
227
|
}
|
|
116
228
|
/**
|
|
117
229
|
* Invalidates only the manifest cache.
|
|
118
230
|
* Call this when model.yaml changes.
|
|
119
231
|
*/
|
|
120
232
|
invalidateManifestCache() {
|
|
121
|
-
|
|
233
|
+
const context = this.getActiveContext();
|
|
234
|
+
if (context) {
|
|
235
|
+
context.manifestCache = undefined;
|
|
236
|
+
}
|
|
122
237
|
}
|
|
123
238
|
/**
|
|
124
239
|
* Invalidates only the lock file cache.
|
|
125
240
|
* Call this when model.lock changes.
|
|
126
241
|
*/
|
|
127
242
|
invalidateLockCache() {
|
|
128
|
-
|
|
243
|
+
const context = this.getActiveContext();
|
|
244
|
+
if (context) {
|
|
245
|
+
context.lockFile = undefined;
|
|
246
|
+
}
|
|
129
247
|
}
|
|
130
248
|
/**
|
|
131
249
|
* Returns the path aliases from the manifest, if present.
|
|
@@ -164,7 +282,8 @@ export class WorkspaceManager {
|
|
|
164
282
|
*/
|
|
165
283
|
async resolveDependencyPath(specifier) {
|
|
166
284
|
await this.ensureInitialized();
|
|
167
|
-
|
|
285
|
+
const context = this.getActiveContext();
|
|
286
|
+
if (!context?.lockFile) {
|
|
168
287
|
return undefined;
|
|
169
288
|
}
|
|
170
289
|
const manifest = await this.loadManifest();
|
|
@@ -185,7 +304,7 @@ export class WorkspaceManager {
|
|
|
185
304
|
// Match if specifier equals key or starts with key/
|
|
186
305
|
if (specifier === key || specifier.startsWith(`${key}/`)) {
|
|
187
306
|
// Find in lock file
|
|
188
|
-
const locked =
|
|
307
|
+
const locked = context.lockFile.dependencies[normalized.source];
|
|
189
308
|
if (!locked) {
|
|
190
309
|
return undefined;
|
|
191
310
|
}
|
|
@@ -219,33 +338,30 @@ export class WorkspaceManager {
|
|
|
219
338
|
return 'index.dlang';
|
|
220
339
|
}
|
|
221
340
|
}
|
|
222
|
-
async performInitialization(startPath) {
|
|
223
|
-
this.workspaceRoot = await this.findWorkspaceRoot(startPath) ?? path.resolve(startPath);
|
|
224
|
-
const loaded = await this.loadLockFileFromDisk();
|
|
225
|
-
if (loaded) {
|
|
226
|
-
this.lockFile = loaded.lockFile;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
341
|
async ensureInitialized() {
|
|
230
|
-
if
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
342
|
+
// Check if we have an active workspace context
|
|
343
|
+
if (this.activeRoot) {
|
|
344
|
+
const context = this.workspaceContexts.get(this.activeRoot);
|
|
345
|
+
if (context?.initPromise) {
|
|
346
|
+
await context.initPromise;
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
235
349
|
}
|
|
350
|
+
throw new Error('WorkspaceManager not initialized. Call initialize() first.');
|
|
236
351
|
}
|
|
237
|
-
async loadLockFileFromDisk() {
|
|
238
|
-
|
|
352
|
+
async loadLockFileFromDisk(root) {
|
|
353
|
+
const workspaceRoot = root ?? this.activeRoot;
|
|
354
|
+
if (!workspaceRoot) {
|
|
239
355
|
return undefined;
|
|
240
356
|
}
|
|
241
357
|
// Try performance optimizer cache first
|
|
242
358
|
const optimizer = getGlobalOptimizer();
|
|
243
|
-
const cached = await optimizer.getCachedLockFile(
|
|
359
|
+
const cached = await optimizer.getCachedLockFile(workspaceRoot);
|
|
244
360
|
if (cached) {
|
|
245
|
-
return { lockFile: cached, filePath: path.join(
|
|
361
|
+
return { lockFile: cached, filePath: path.join(workspaceRoot, 'model.lock') };
|
|
246
362
|
}
|
|
247
363
|
for (const filename of this.lockFiles) {
|
|
248
|
-
const filePath = path.join(
|
|
364
|
+
const filePath = path.join(workspaceRoot, filename);
|
|
249
365
|
const lockFile = await this.tryReadLockFile(filePath);
|
|
250
366
|
if (lockFile) {
|
|
251
367
|
return { lockFile, filePath };
|
|
@@ -266,34 +382,71 @@ export class WorkspaceManager {
|
|
|
266
382
|
}
|
|
267
383
|
}
|
|
268
384
|
async loadManifest() {
|
|
385
|
+
const context = this.getActiveContext();
|
|
269
386
|
const manifestPath = await this.getManifestPath();
|
|
270
387
|
if (!manifestPath) {
|
|
271
|
-
this.
|
|
388
|
+
this.clearManifestCache(context);
|
|
272
389
|
return undefined;
|
|
273
390
|
}
|
|
274
391
|
try {
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
392
|
+
return await this.readAndCacheManifest(manifestPath, context);
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
return this.handleManifestError(error, manifestPath, context);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Reads, validates, and caches a manifest file.
|
|
400
|
+
*/
|
|
401
|
+
async readAndCacheManifest(manifestPath, context) {
|
|
402
|
+
const stat = await fs.stat(manifestPath);
|
|
403
|
+
if (context?.manifestCache?.path === manifestPath &&
|
|
404
|
+
context.manifestCache.mtimeMs === stat.mtimeMs) {
|
|
405
|
+
return context.manifestCache.manifest;
|
|
406
|
+
}
|
|
407
|
+
const content = await fs.readFile(manifestPath, 'utf-8');
|
|
408
|
+
const manifest = (YAML.parse(content) ?? {});
|
|
409
|
+
// Validate manifest structure
|
|
410
|
+
this.validateManifest(manifest, manifestPath);
|
|
411
|
+
if (context) {
|
|
412
|
+
context.manifestCache = {
|
|
285
413
|
manifest,
|
|
286
414
|
path: manifestPath,
|
|
287
415
|
mtimeMs: stat.mtimeMs,
|
|
288
416
|
};
|
|
289
|
-
return manifest;
|
|
290
417
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
418
|
+
return manifest;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Handles errors from manifest loading, distinguishing recoverable
|
|
422
|
+
* errors (missing file, parse errors) from unexpected ones.
|
|
423
|
+
*/
|
|
424
|
+
handleManifestError(error, manifestPath, context) {
|
|
425
|
+
if (error?.code === 'ENOENT') {
|
|
426
|
+
this.clearManifestCache(context);
|
|
427
|
+
return undefined;
|
|
428
|
+
}
|
|
429
|
+
// YAML parse errors should not crash the LSP
|
|
430
|
+
if (error instanceof Error &&
|
|
431
|
+
(error.name === 'YAMLParseError' || error.name === 'YAMLSyntaxError')) {
|
|
432
|
+
console.error(`Invalid model.yaml at ${manifestPath}: ${error.message}`);
|
|
433
|
+
this.clearManifestCache(context);
|
|
434
|
+
return undefined;
|
|
435
|
+
}
|
|
436
|
+
// Validation errors from validateManifest should not crash the LSP
|
|
437
|
+
if (error instanceof Error) {
|
|
438
|
+
console.error(`Manifest validation error at ${manifestPath}: ${error.message}`);
|
|
439
|
+
this.clearManifestCache(context);
|
|
440
|
+
return undefined;
|
|
441
|
+
}
|
|
442
|
+
throw error;
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Clears the manifest cache on the given context, if available.
|
|
446
|
+
*/
|
|
447
|
+
clearManifestCache(context) {
|
|
448
|
+
if (context) {
|
|
449
|
+
context.manifestCache = undefined;
|
|
297
450
|
}
|
|
298
451
|
}
|
|
299
452
|
/**
|
|
@@ -366,7 +519,7 @@ export class WorkspaceManager {
|
|
|
366
519
|
// Resolve path relative to manifest directory
|
|
367
520
|
const manifestDir = path.dirname(manifestPath);
|
|
368
521
|
const resolvedPath = path.resolve(manifestDir, localPath);
|
|
369
|
-
const workspaceRoot = this.
|
|
522
|
+
const workspaceRoot = this.activeRoot || manifestDir;
|
|
370
523
|
// Check if resolved path is within workspace
|
|
371
524
|
const relativePath = path.relative(workspaceRoot, resolvedPath);
|
|
372
525
|
if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-manager.js","sourceRoot":"","sources":["../../src/services/workspace-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace-manager.js","sourceRoot":"","sources":["../../src/services/workspace-manager.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAWvH,MAAM,sBAAsB,GAAG;IAC3B,YAAY;CACN,CAAC;AAEX,MAAM,kBAAkB,GAAG;IACvB,YAAY;CACN,CAAC;AA4BX;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,gBAAgB;IAsBzB,YAAY,UAAmC,EAAE;QAlBjD;;;WAGG;QACc,sBAAiB,GAAG,IAAI,GAAG,EAA4B,CAAC;QAEzE;;;WAGG;QACc,oBAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QASzD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACK,gBAAgB;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhD,uDAAuD;QACvD,IAAI,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAE9D,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,mDAAmD;YACnD,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC;YACjF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAC7D,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;QAEhC,2CAA2C;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,GAAG;gBACN,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,SAAS;gBACnB,aAAa,EAAE,SAAS;gBACxB,WAAW,EAAE,SAAS;aACzB,CAAC;YACF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;QAED,mDAAmD;QACnD,OAAO,CAAC,WAAW,KAAnB,OAAO,CAAC,WAAW,GAAK,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAC;QACxD,MAAM,OAAO,CAAC,WAAW,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,OAAyB;QACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACvC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAClF,CAAC;QAED,qEAAqE;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;OAMG;IACK,wBAAwB,CAAC,WAAmB;QAChD,kDAAkD;QAClD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/C,6CAA6C;QAC7C,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEpD,4CAA4C;QAC5C,IAAI,UAAU,KAAK,CAAC,CAAC;YACjB,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM;YAClC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YAC5C,4DAA4D;YAC5D,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,wCAAwC;QACxC,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACjB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC5C,IAAI,MAAM,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,OAAO,SAAS,CAAC;YACrB,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACb,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACb,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB;QACtB,8DAA8D;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;YACnC,OAAO,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC1C,CAAC;QACD,oDAAoD;QACpD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACb,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,QAAQ,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACjB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACjD,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,CAAC;QACxC,CAAC;QACD,OAAO,MAAM,EAAE,QAAQ,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,eAAe;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,uBAAuB;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;QACtC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,mBAAmB;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAChB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO,QAAQ,EAAE,KAAK,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,GAAW,EAAE,GAAmB;QAChD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,kDAAkD;YAClD,2CAA2C;YAC3C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACrC,CAAC;QACD,iBAAiB;QACjB,6BAA6B;QAC7B,oDAAoD;QACpD,sEAAsE;QACtE,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC;QACf,CAAC;QACD,OAAO,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,qBAAqB,CAAC,SAAiB;QACzC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,QAAQ,EAAE,YAAY,CAAC;QAE5C,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,2BAA2B;QAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAEtD,yDAAyD;YACzD,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBAClB,SAAS;YACb,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBACrB,SAAS;YACb,CAAC;YAED,oDAAoD;YACpD,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;gBACvD,oBAAoB;gBACpB,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAChE,IAAI,CAAC,MAAM,EAAE,CAAC;oBACV,OAAO,SAAS,CAAC;gBACrB,CAAC;gBAED,qBAAqB;gBACrB,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAE7E,kBAAkB;gBAClB,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,MAAM,EAAE,CAAC;oBACT,6CAA6C;oBAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACzC,CAAC;gBAED,6CAA6C;gBAC7C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACzD,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAmC,CAAC;YACvE,OAAO,QAAQ,EAAE,KAAK,EAAE,KAAK,IAAI,aAAa,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,aAAa,CAAC;QACzB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC3B,+CAA+C;QAC/C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5D,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;gBACvB,MAAM,OAAO,CAAC,WAAW,CAAC;gBAC1B,OAAO;YACX,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAClF,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,IAAa;QAC5C,MAAM,aAAa,GAAG,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC;QAC9C,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,wCAAwC;QACxC,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC;QAClF,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAClC,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,QAAgB;QAC1C,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAK,KAA+B,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtD,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,YAAY;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAC9B,YAAoB,EACpB,OAAqC;QAErC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE,aAAa,EAAE,IAAI,KAAK,YAAY;YAC7C,OAAO,CAAC,aAAa,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YACjD,OAAO,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC1C,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAkB,CAAC;QAE9D,8BAA8B;QAC9B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAE9C,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,aAAa,GAAG;gBACpB,QAAQ;gBACR,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC;QACN,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;OAGG;IACK,mBAAmB,CACvB,KAAc,EACd,YAAoB,EACpB,OAAqC;QAErC,IAAK,KAA+B,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,6CAA6C;QAC7C,IAAI,KAAK,YAAY,KAAK;YACtB,CAAC,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,EAAE,CAAC;YACxE,OAAO,CAAC,KAAK,CAAC,yBAAyB,YAAY,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,mEAAmE;QACnE,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,gCAAgC,YAAY,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChF,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,OAAqC;QAC5D,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;QACtC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACK,gBAAgB,CAAC,QAAuB,EAAE,YAAoB;QAClE,wBAAwB;QACxB,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO,CAAC,8BAA8B;QAC1C,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAEtD,8CAA8C;YAC9C,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACX,uBAAuB,GAAG,QAAQ,YAAY,KAAK;oBACnD,4CAA4C;oBAC5C,qFAAqF,CACxF,CAAC;YACN,CAAC;YAED,+DAA+D;YAC/D,oDAAoD;YACpD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CACX,uBAAuB,GAAG,QAAQ,YAAY,KAAK;oBACnD,2CAA2C;oBAC3C,kGAAkG,CACrG,CAAC;YACN,CAAC;YAED,iDAAiD;YACjD,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBAClB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;YAC/D,CAAC;YAED,yCAAyC;YACzC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACX,uBAAuB,GAAG,QAAQ,YAAY,KAAK;oBACnD,0DAA0D;oBAC1D,uEAAuE,CAC1E,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,KAAkB,EAAE,YAAoB;QAChE,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,+BAA+B;YAC/B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACX,uBAAuB,KAAK,QAAQ,YAAY,KAAK;oBACrD,qCAAqC;oBACrC,qBAAqB,KAAK,qCAAqC,CAClE,CAAC;YACN,CAAC;YAED,gDAAgD;YAChD,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,SAAiB,EAAE,KAAa,EAAE,YAAoB;QAC5E,wBAAwB;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACX,uBAAuB,KAAK,QAAQ,YAAY,KAAK;gBACrD,6BAA6B,SAAS,MAAM;gBAC5C,+EAA+E,CAClF,CAAC;QACN,CAAC;QAED,8CAA8C;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC;QAErD,6CAA6C;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAChE,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CACX,uBAAuB,KAAK,QAAQ,YAAY,KAAK;gBACrD,SAAS,SAAS,0CAA0C;gBAC5D,aAAa,YAAY,IAAI;gBAC7B,cAAc,aAAa,IAAI;gBAC/B,oHAAoH,CACvH,CAAC;QACN,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,OAAe;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAEhC,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1E,MAAM,YAAY,GAAqC,EAAE,CAAC;QAE1D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACpH,SAAS;YACb,CAAC;YACD,YAAY,CAAC,GAAG,CAAC,GAAG;gBAChB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,QAAQ,EAAE,gDAAgD;gBACpF,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;aAC7B,CAAC;QACN,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IACrC,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QAC7C,6DAA6D;QAC7D,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;YAC5E,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;QAED,0DAA0D;QAC1D,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAErC,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,OAAO,OAAO,CAAC;YACnB,CAAC;YAED,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACnB,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACrB,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,OAAO,GAAG,MAAM,CAAC;QACrB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,GAAW;QACtC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { URI, type LangiumDocument, type LangiumDocuments } from 'langium';
|
|
2
|
+
import { ImportResolver } from '../services/import-resolver.js';
|
|
2
3
|
/**
|
|
3
4
|
* Resolves an import path to an absolute file URI.
|
|
4
5
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* - Module imports (no extension): Requires model.yaml in directory
|
|
8
|
-
* - External dependencies: Resolved via manifest and lock file
|
|
6
|
+
* @deprecated Prefer using ImportResolver.resolveForDocument() from the DI container.
|
|
7
|
+
* This function creates standalone instances outside the DI system.
|
|
9
8
|
*
|
|
10
9
|
* @param importingDoc - The document containing the import statement
|
|
11
10
|
* @param rawImportPath - The raw import path from the import statement
|
|
@@ -18,15 +17,19 @@ export declare function resolveImportPath(importingDoc: LangiumDocument, rawImpo
|
|
|
18
17
|
*
|
|
19
18
|
* @param entryFilePath - Absolute or workspace-relative path to entry file
|
|
20
19
|
* @param langiumDocuments - The Langium documents manager
|
|
20
|
+
* @param importResolver - Optional DI-injected ImportResolver. When provided,
|
|
21
|
+
* uses it instead of creating standalone instances. Recommended for LSP contexts.
|
|
21
22
|
* @returns Set of URIs (as strings) for all documents in the import graph
|
|
22
23
|
* @throws {Error} If entry file cannot be resolved or loaded
|
|
23
24
|
*/
|
|
24
|
-
export declare function ensureImportGraphFromEntryFile(entryFilePath: string, langiumDocuments: LangiumDocuments): Promise<Set<string>>;
|
|
25
|
+
export declare function ensureImportGraphFromEntryFile(entryFilePath: string, langiumDocuments: LangiumDocuments, importResolver?: ImportResolver): Promise<Set<string>>;
|
|
25
26
|
/**
|
|
26
27
|
* Recursively builds the import graph from a document.
|
|
27
28
|
*
|
|
28
29
|
* @param document - The starting document
|
|
29
30
|
* @param langiumDocuments - The Langium documents manager
|
|
31
|
+
* @param importResolver - Optional DI-injected ImportResolver. When provided,
|
|
32
|
+
* uses it instead of creating standalone instances. Recommended for LSP contexts.
|
|
30
33
|
* @returns Set of URIs (as strings) for all documents in the import graph
|
|
31
34
|
*/
|
|
32
|
-
export declare function ensureImportGraphFromDocument(document: LangiumDocument, langiumDocuments: LangiumDocuments): Promise<Set<string>>;
|
|
35
|
+
export declare function ensureImportGraphFromDocument(document: LangiumDocument, langiumDocuments: LangiumDocuments, importResolver?: ImportResolver): Promise<Set<string>>;
|