@domainlang/language 0.7.0 → 0.8.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.
Files changed (83) hide show
  1. package/out/domain-lang-module.d.ts +2 -0
  2. package/out/domain-lang-module.js +21 -2
  3. package/out/domain-lang-module.js.map +1 -1
  4. package/out/lsp/domain-lang-completion.d.ts +142 -1
  5. package/out/lsp/domain-lang-completion.js +620 -22
  6. package/out/lsp/domain-lang-completion.js.map +1 -1
  7. package/out/lsp/domain-lang-document-symbol-provider.d.ts +79 -0
  8. package/out/lsp/domain-lang-document-symbol-provider.js +210 -0
  9. package/out/lsp/domain-lang-document-symbol-provider.js.map +1 -0
  10. package/out/lsp/domain-lang-index-manager.d.ts +34 -5
  11. package/out/lsp/domain-lang-index-manager.js +66 -27
  12. package/out/lsp/domain-lang-index-manager.js.map +1 -1
  13. package/out/lsp/domain-lang-node-kind-provider.d.ts +27 -0
  14. package/out/lsp/domain-lang-node-kind-provider.js +87 -0
  15. package/out/lsp/domain-lang-node-kind-provider.js.map +1 -0
  16. package/out/lsp/domain-lang-scope-provider.d.ts +53 -20
  17. package/out/lsp/domain-lang-scope-provider.js +119 -44
  18. package/out/lsp/domain-lang-scope-provider.js.map +1 -1
  19. package/out/lsp/domain-lang-workspace-manager.d.ts +23 -2
  20. package/out/lsp/domain-lang-workspace-manager.js +51 -6
  21. package/out/lsp/domain-lang-workspace-manager.js.map +1 -1
  22. package/out/lsp/hover/domain-lang-hover.d.ts +16 -6
  23. package/out/lsp/hover/domain-lang-hover.js +160 -134
  24. package/out/lsp/hover/domain-lang-hover.js.map +1 -1
  25. package/out/lsp/hover/hover-builders.d.ts +57 -0
  26. package/out/lsp/hover/hover-builders.js +171 -0
  27. package/out/lsp/hover/hover-builders.js.map +1 -0
  28. package/out/main.js +2 -1
  29. package/out/main.js.map +1 -1
  30. package/out/sdk/index.d.ts +2 -1
  31. package/out/sdk/index.js +1 -1
  32. package/out/sdk/index.js.map +1 -1
  33. package/out/sdk/loader-node.js +1 -1
  34. package/out/sdk/loader-node.js.map +1 -1
  35. package/out/sdk/loader.d.ts +55 -2
  36. package/out/sdk/loader.js +87 -28
  37. package/out/sdk/loader.js.map +1 -1
  38. package/out/sdk/query.js +14 -11
  39. package/out/sdk/query.js.map +1 -1
  40. package/out/services/package-boundary-detector.d.ts +101 -0
  41. package/out/services/package-boundary-detector.js +211 -0
  42. package/out/services/package-boundary-detector.js.map +1 -0
  43. package/out/services/performance-optimizer.js +6 -2
  44. package/out/services/performance-optimizer.js.map +1 -1
  45. package/out/services/types.d.ts +24 -0
  46. package/out/services/types.js.map +1 -1
  47. package/out/services/workspace-manager.d.ts +73 -6
  48. package/out/services/workspace-manager.js +210 -57
  49. package/out/services/workspace-manager.js.map +1 -1
  50. package/out/utils/import-utils.d.ts +9 -6
  51. package/out/utils/import-utils.js +26 -15
  52. package/out/utils/import-utils.js.map +1 -1
  53. package/out/validation/constants.d.ts +7 -0
  54. package/out/validation/constants.js +21 -3
  55. package/out/validation/constants.js.map +1 -1
  56. package/out/validation/import.d.ts +11 -1
  57. package/out/validation/import.js +42 -14
  58. package/out/validation/import.js.map +1 -1
  59. package/out/validation/maps.js +50 -1
  60. package/out/validation/maps.js.map +1 -1
  61. package/package.json +5 -5
  62. package/src/domain-lang-module.ts +24 -3
  63. package/src/lsp/domain-lang-completion.ts +736 -27
  64. package/src/lsp/domain-lang-document-symbol-provider.ts +254 -0
  65. package/src/lsp/domain-lang-index-manager.ts +79 -27
  66. package/src/lsp/domain-lang-node-kind-provider.ts +119 -0
  67. package/src/lsp/domain-lang-scope-provider.ts +171 -55
  68. package/src/lsp/domain-lang-workspace-manager.ts +64 -6
  69. package/src/lsp/hover/domain-lang-hover.ts +189 -131
  70. package/src/lsp/hover/hover-builders.ts +208 -0
  71. package/src/main.ts +3 -1
  72. package/src/sdk/index.ts +2 -1
  73. package/src/sdk/loader-node.ts +2 -1
  74. package/src/sdk/loader.ts +125 -34
  75. package/src/sdk/query.ts +15 -11
  76. package/src/services/package-boundary-detector.ts +238 -0
  77. package/src/services/performance-optimizer.ts +6 -2
  78. package/src/services/types.ts +25 -0
  79. package/src/services/workspace-manager.ts +259 -62
  80. package/src/utils/import-utils.ts +27 -15
  81. package/src/validation/constants.ts +23 -6
  82. package/src/validation/import.ts +49 -14
  83. package/src/validation/maps.ts +59 -2
@@ -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
- * Repeated calls await the same initialization work.
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
- this.initializePromise ?? (this.initializePromise = this.performInitialization(startPath));
36
- await this.initializePromise;
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.workspaceRoot) {
103
+ if (!this.activeRoot) {
44
104
  throw new Error('WorkspaceManager not initialized. Call initialize() first.');
45
105
  }
46
- return this.workspaceRoot;
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.workspaceRoot) {
116
+ if (!this.activeRoot) {
54
117
  throw new Error('WorkspaceManager not initialized. Call initialize() first.');
55
118
  }
56
- return path.join(this.workspaceRoot, '.dlang', 'packages');
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.workspaceRoot;
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 (loaded) {
98
- this.lockFile = loaded.lockFile;
99
- }
100
- else {
101
- this.lockFile = undefined;
209
+ if (context) {
210
+ context.lockFile = loaded?.lockFile;
102
211
  }
103
- return this.lockFile;
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
- this.manifestCache = undefined;
114
- this.lockFile = undefined;
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
- this.manifestCache = undefined;
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
- this.lockFile = undefined;
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
- if (!this.lockFile) {
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 = this.lockFile.dependencies[normalized.source];
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 (this.initializePromise) {
231
- await this.initializePromise;
232
- }
233
- else if (!this.workspaceRoot) {
234
- throw new Error('WorkspaceManager not initialized. Call initialize() first.');
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
- if (!this.workspaceRoot) {
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(this.workspaceRoot);
359
+ const cached = await optimizer.getCachedLockFile(workspaceRoot);
244
360
  if (cached) {
245
- return { lockFile: cached, filePath: path.join(this.workspaceRoot, 'model.lock') };
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(this.workspaceRoot, filename);
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.manifestCache = undefined;
388
+ this.clearManifestCache(context);
272
389
  return undefined;
273
390
  }
274
391
  try {
275
- const stat = await fs.stat(manifestPath);
276
- if (this.manifestCache?.path === manifestPath &&
277
- this.manifestCache.mtimeMs === stat.mtimeMs) {
278
- return this.manifestCache.manifest;
279
- }
280
- const content = await fs.readFile(manifestPath, 'utf-8');
281
- const manifest = (YAML.parse(content) ?? {});
282
- // Validate manifest structure
283
- this.validateManifest(manifest, manifestPath);
284
- this.manifestCache = {
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
- catch (error) {
292
- if (error?.code === 'ENOENT') {
293
- this.manifestCache = undefined;
294
- return undefined;
295
- }
296
- throw error;
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.workspaceRoot || manifestDir;
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":"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"}
@@ -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
- * Delegates to ImportResolver which implements PRS-010 semantics:
6
- * - File imports (with .dlang extension): Direct file access
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>>;
@@ -4,7 +4,11 @@ import { WorkspaceManager } from '../services/workspace-manager.js';
4
4
  import { ImportResolver } from '../services/import-resolver.js';
5
5
  /**
6
6
  * Lazily initialized workspace manager for standalone (non-LSP) usage.
7
- * Used by import graph building when services aren't available from DI.
7
+ * Used by import graph building when no DI-injected ImportResolver is available.
8
+ *
9
+ * @deprecated Prefer passing an ImportResolver from the DI container.
10
+ * These singletons exist only for backwards compatibility with callers
11
+ * that haven't been updated to pass through DI services.
8
12
  */
9
13
  let standaloneWorkspaceManager;
10
14
  let standaloneImportResolver;
@@ -13,9 +17,7 @@ let lastInitializedDir;
13
17
  * Gets or creates a standalone import resolver for non-LSP contexts.
14
18
  * Creates its own WorkspaceManager if not previously initialized for this directory.
15
19
  *
16
- * NOTE: In LSP contexts, prefer using services.imports.ImportResolver directly.
17
- * This function exists for utilities that don't have access to the service container.
18
- *
20
+ * @deprecated Prefer using services.imports.ImportResolver directly.
19
21
  * @param startDir - Directory to start workspace search from
20
22
  * @returns Promise resolving to the import resolver
21
23
  */
@@ -40,10 +42,8 @@ async function getStandaloneImportResolver(startDir) {
40
42
  /**
41
43
  * Resolves an import path to an absolute file URI.
42
44
  *
43
- * Delegates to ImportResolver which implements PRS-010 semantics:
44
- * - File imports (with .dlang extension): Direct file access
45
- * - Module imports (no extension): Requires model.yaml in directory
46
- * - External dependencies: Resolved via manifest and lock file
45
+ * @deprecated Prefer using ImportResolver.resolveForDocument() from the DI container.
46
+ * This function creates standalone instances outside the DI system.
47
47
  *
48
48
  * @param importingDoc - The document containing the import statement
49
49
  * @param rawImportPath - The raw import path from the import statement
@@ -60,22 +60,26 @@ export async function resolveImportPath(importingDoc, rawImportPath) {
60
60
  *
61
61
  * @param entryFilePath - Absolute or workspace-relative path to entry file
62
62
  * @param langiumDocuments - The Langium documents manager
63
+ * @param importResolver - Optional DI-injected ImportResolver. When provided,
64
+ * uses it instead of creating standalone instances. Recommended for LSP contexts.
63
65
  * @returns Set of URIs (as strings) for all documents in the import graph
64
66
  * @throws {Error} If entry file cannot be resolved or loaded
65
67
  */
66
- export async function ensureImportGraphFromEntryFile(entryFilePath, langiumDocuments) {
68
+ export async function ensureImportGraphFromEntryFile(entryFilePath, langiumDocuments, importResolver) {
67
69
  const entryUri = URI.file(path.resolve(entryFilePath));
68
70
  const entryDoc = await langiumDocuments.getOrCreateDocument(entryUri);
69
- return ensureImportGraphFromDocument(entryDoc, langiumDocuments);
71
+ return ensureImportGraphFromDocument(entryDoc, langiumDocuments, importResolver);
70
72
  }
71
73
  /**
72
74
  * Recursively builds the import graph from a document.
73
75
  *
74
76
  * @param document - The starting document
75
77
  * @param langiumDocuments - The Langium documents manager
78
+ * @param importResolver - Optional DI-injected ImportResolver. When provided,
79
+ * uses it instead of creating standalone instances. Recommended for LSP contexts.
76
80
  * @returns Set of URIs (as strings) for all documents in the import graph
77
81
  */
78
- export async function ensureImportGraphFromDocument(document, langiumDocuments) {
82
+ export async function ensureImportGraphFromDocument(document, langiumDocuments, importResolver) {
79
83
  const visited = new Set();
80
84
  async function visit(doc) {
81
85
  const uriString = doc.uri.toString();
@@ -86,10 +90,17 @@ export async function ensureImportGraphFromDocument(document, langiumDocuments)
86
90
  for (const imp of model.imports ?? []) {
87
91
  if (!imp.uri)
88
92
  continue;
89
- // Use new resolveImportPath that supports external dependencies
90
- const resolvedUri = await resolveImportPath(doc, imp.uri);
91
- const childDoc = await langiumDocuments.getOrCreateDocument(resolvedUri);
92
- await visit(childDoc);
93
+ try {
94
+ // Use DI-injected resolver when available, falling back to standalone
95
+ const resolvedUri = importResolver
96
+ ? await importResolver.resolveForDocument(doc, imp.uri)
97
+ : await resolveImportPath(doc, imp.uri);
98
+ const childDoc = await langiumDocuments.getOrCreateDocument(resolvedUri);
99
+ await visit(childDoc);
100
+ }
101
+ catch {
102
+ // Import resolution failed — validation will report the error
103
+ }
93
104
  }
94
105
  }
95
106
  await visit(document);
@@ -1 +1 @@
1
- {"version":3,"file":"import-utils.js","sourceRoot":"","sources":["../../src/utils/import-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import-utils.js","sourceRoot":"","sources":["../../src/utils/import-utils.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,7 @@ export declare const IssueCodes: {
40
40
  readonly TooManyPatterns: "too-many-patterns";
41
41
  readonly ContextMapNoContexts: "context-map-no-contexts";
42
42
  readonly ContextMapNoRelationships: "context-map-no-relationships";
43
+ readonly ContextMapDuplicateRelationship: "context-map-duplicate-relationship";
43
44
  readonly DomainMapNoDomains: "domain-map-no-domains";
44
45
  readonly UnresolvedReference: "unresolved-reference";
45
46
  readonly MetadataMissingName: "metadata-missing-name";
@@ -175,6 +176,12 @@ export declare const ValidationMessages: {
175
176
  * @param count - Number of contexts
176
177
  */
177
178
  readonly CONTEXT_MAP_NO_RELATIONSHIPS: (name: string, count: number) => string;
179
+ /**
180
+ * Warning when a context map contains duplicate relationships.
181
+ * @param leftContext - Name of the left context
182
+ * @param rightContext - Name of the right context
183
+ */
184
+ readonly CONTEXT_MAP_DUPLICATE_RELATIONSHIP: (leftContext: string, rightContext: string) => string;
178
185
  /**
179
186
  * Warning when domain map contains no domains.
180
187
  * @param name - The domain map name