@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.
Files changed (88) 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 +31 -11
  31. package/out/sdk/index.js +30 -11
  32. package/out/sdk/index.js.map +1 -1
  33. package/out/sdk/loader-node.d.ts +2 -0
  34. package/out/sdk/loader-node.js +3 -1
  35. package/out/sdk/loader-node.js.map +1 -1
  36. package/out/sdk/loader.d.ts +55 -2
  37. package/out/sdk/loader.js +87 -28
  38. package/out/sdk/loader.js.map +1 -1
  39. package/out/sdk/query.js +14 -11
  40. package/out/sdk/query.js.map +1 -1
  41. package/out/sdk/validator.d.ts +134 -0
  42. package/out/sdk/validator.js +249 -0
  43. package/out/sdk/validator.js.map +1 -0
  44. package/out/services/package-boundary-detector.d.ts +101 -0
  45. package/out/services/package-boundary-detector.js +211 -0
  46. package/out/services/package-boundary-detector.js.map +1 -0
  47. package/out/services/performance-optimizer.js +6 -2
  48. package/out/services/performance-optimizer.js.map +1 -1
  49. package/out/services/types.d.ts +24 -0
  50. package/out/services/types.js.map +1 -1
  51. package/out/services/workspace-manager.d.ts +73 -6
  52. package/out/services/workspace-manager.js +210 -57
  53. package/out/services/workspace-manager.js.map +1 -1
  54. package/out/utils/import-utils.d.ts +9 -6
  55. package/out/utils/import-utils.js +26 -15
  56. package/out/utils/import-utils.js.map +1 -1
  57. package/out/validation/constants.d.ts +7 -0
  58. package/out/validation/constants.js +21 -3
  59. package/out/validation/constants.js.map +1 -1
  60. package/out/validation/import.d.ts +11 -1
  61. package/out/validation/import.js +42 -14
  62. package/out/validation/import.js.map +1 -1
  63. package/out/validation/maps.js +50 -1
  64. package/out/validation/maps.js.map +1 -1
  65. package/package.json +8 -9
  66. package/src/domain-lang-module.ts +24 -3
  67. package/src/lsp/domain-lang-completion.ts +736 -27
  68. package/src/lsp/domain-lang-document-symbol-provider.ts +254 -0
  69. package/src/lsp/domain-lang-index-manager.ts +79 -27
  70. package/src/lsp/domain-lang-node-kind-provider.ts +119 -0
  71. package/src/lsp/domain-lang-scope-provider.ts +171 -55
  72. package/src/lsp/domain-lang-workspace-manager.ts +64 -6
  73. package/src/lsp/hover/domain-lang-hover.ts +189 -131
  74. package/src/lsp/hover/hover-builders.ts +208 -0
  75. package/src/main.ts +3 -1
  76. package/src/sdk/index.ts +33 -11
  77. package/src/sdk/loader-node.ts +6 -1
  78. package/src/sdk/loader.ts +125 -34
  79. package/src/sdk/query.ts +15 -11
  80. package/src/sdk/validator.ts +358 -0
  81. package/src/services/package-boundary-detector.ts +238 -0
  82. package/src/services/performance-optimizer.ts +6 -2
  83. package/src/services/types.ts +25 -0
  84. package/src/services/workspace-manager.ts +259 -62
  85. package/src/utils/import-utils.ts +27 -15
  86. package/src/validation/constants.ts +23 -6
  87. package/src/validation/import.ts +49 -14
  88. package/src/validation/maps.ts +59 -2
@@ -35,12 +35,12 @@ export class DomainLangIndexManager extends DefaultIndexManager {
35
35
  */
36
36
  this.importDependencies = new Map();
37
37
  /**
38
- * Maps document URI to its import specifiers and their resolved URIs.
39
- * Used to detect when file moves could affect import resolution.
38
+ * Maps document URI to its import information (specifier, alias, resolved URI).
39
+ * Used for scope resolution with aliases and detecting when file moves affect imports.
40
40
  * Key: importing document URI
41
- * Value: Map of import specifier → resolved URI
41
+ * Value: Array of ImportInfo objects
42
42
  */
43
- this.documentImportSpecifiers = new Map();
43
+ this.documentImportInfo = new Map();
44
44
  /**
45
45
  * Tracks documents that have had their imports loaded to avoid redundant work.
46
46
  * Cleared on workspace config changes.
@@ -48,6 +48,27 @@ export class DomainLangIndexManager extends DefaultIndexManager {
48
48
  this.importsLoaded = new Set();
49
49
  this.sharedServices = services;
50
50
  }
51
+ /**
52
+ * Late-binds the language-specific services after DI initialization.
53
+ * Called from `createDomainLangServices()` after the language module is created.
54
+ *
55
+ * This is necessary because the IndexManager lives in the shared module,
56
+ * which is created before the language module that provides ImportResolver.
57
+ */
58
+ setLanguageServices(services) {
59
+ this.importResolver = services.imports.ImportResolver;
60
+ }
61
+ /**
62
+ * Resolves an import path using the DI-injected ImportResolver when available,
63
+ * falling back to the standalone resolver for backwards compatibility.
64
+ */
65
+ async resolveImport(document, specifier) {
66
+ if (this.importResolver) {
67
+ return this.importResolver.resolveForDocument(document, specifier);
68
+ }
69
+ // Fallback for contexts where language services aren't wired (e.g., tests)
70
+ return resolveImportPath(document, specifier);
71
+ }
51
72
  /**
52
73
  * Extends the default content update to:
53
74
  * 1. Ensure all imported documents are loaded
@@ -107,14 +128,14 @@ export class DomainLangIndexManager extends DefaultIndexManager {
107
128
  * Tracks import dependencies for a document.
108
129
  * For each import in the document, records:
109
130
  * 1. That the imported URI is depended upon (for direct change detection)
110
- * 2. The import specifier used (for file move detection)
131
+ * 2. The import specifier and alias (for scope resolution)
111
132
  */
112
133
  async trackImportDependencies(document) {
113
134
  const importingUri = document.uri.toString();
114
135
  // First, remove old dependencies from this document
115
136
  // (in case imports changed)
116
137
  this.removeDocumentFromDependencies(importingUri);
117
- this.documentImportSpecifiers.delete(importingUri);
138
+ this.documentImportInfo.delete(importingUri);
118
139
  // Skip if document isn't ready (no parse result)
119
140
  if (document.state < DocumentState.Parsed) {
120
141
  return;
@@ -123,15 +144,19 @@ export class DomainLangIndexManager extends DefaultIndexManager {
123
144
  if (!model.imports) {
124
145
  return;
125
146
  }
126
- const specifierMap = new Map();
147
+ const importInfoList = [];
127
148
  for (const imp of model.imports) {
128
149
  if (!imp.uri)
129
150
  continue;
130
151
  try {
131
- const resolvedUri = await resolveImportPath(document, imp.uri);
152
+ const resolvedUri = await this.resolveImport(document, imp.uri);
132
153
  const importedUri = resolvedUri.toString();
133
- // Track the specifier resolved URI mapping
134
- specifierMap.set(imp.uri, importedUri);
154
+ // Track the full import info (specifier, alias, resolved URI)
155
+ importInfoList.push({
156
+ specifier: imp.uri,
157
+ alias: imp.alias,
158
+ resolvedUri: importedUri
159
+ });
135
160
  // Add to reverse dependency graph: importedUri → importingUri
136
161
  let dependents = this.importDependencies.get(importedUri);
137
162
  if (!dependents) {
@@ -142,11 +167,15 @@ export class DomainLangIndexManager extends DefaultIndexManager {
142
167
  }
143
168
  catch {
144
169
  // Import resolution failed - still track the specifier with empty resolution
145
- specifierMap.set(imp.uri, '');
170
+ importInfoList.push({
171
+ specifier: imp.uri,
172
+ alias: imp.alias,
173
+ resolvedUri: ''
174
+ });
146
175
  }
147
176
  }
148
- if (specifierMap.size > 0) {
149
- this.documentImportSpecifiers.set(importingUri, specifierMap);
177
+ if (importInfoList.length > 0) {
178
+ this.documentImportInfo.set(importingUri, importInfoList);
150
179
  }
151
180
  }
152
181
  /**
@@ -178,7 +207,7 @@ export class DomainLangIndexManager extends DefaultIndexManager {
178
207
  if (!imp.uri)
179
208
  continue;
180
209
  try {
181
- const resolvedUri = await resolveImportPath(document, imp.uri);
210
+ const resolvedUri = await this.resolveImport(document, imp.uri);
182
211
  const importedUriString = resolvedUri.toString();
183
212
  // Skip if already loaded
184
213
  if (this.importsLoaded.has(importedUriString)) {
@@ -228,7 +257,7 @@ export class DomainLangIndexManager extends DefaultIndexManager {
228
257
  */
229
258
  clearImportDependencies() {
230
259
  this.importDependencies.clear();
231
- this.documentImportSpecifiers.clear();
260
+ this.documentImportInfo.clear();
232
261
  this.importsLoaded.clear();
233
262
  }
234
263
  /**
@@ -256,19 +285,29 @@ export class DomainLangIndexManager extends DefaultIndexManager {
256
285
  * @returns Set of resolved import URIs, or empty set if none
257
286
  */
258
287
  getResolvedImports(documentUri) {
259
- const specifierMap = this.documentImportSpecifiers.get(documentUri);
260
- if (!specifierMap) {
288
+ const importInfoList = this.documentImportInfo.get(documentUri);
289
+ if (!importInfoList) {
261
290
  return new Set();
262
291
  }
263
292
  const resolved = new Set();
264
- for (const resolvedUri of specifierMap.values()) {
293
+ for (const info of importInfoList) {
265
294
  // Only include successfully resolved imports (non-empty string)
266
- if (resolvedUri) {
267
- resolved.add(resolvedUri);
295
+ if (info.resolvedUri) {
296
+ resolved.add(info.resolvedUri);
268
297
  }
269
298
  }
270
299
  return resolved;
271
300
  }
301
+ /**
302
+ * Gets the full import information (including aliases) for a document.
303
+ * Used by the scope provider to implement alias-prefixed name resolution.
304
+ *
305
+ * @param documentUri - The URI of the document
306
+ * @returns Array of ImportInfo objects, or empty array if none
307
+ */
308
+ getImportInfo(documentUri) {
309
+ return this.documentImportInfo.get(documentUri) ?? [];
310
+ }
272
311
  /**
273
312
  * Gets all documents that would be affected by changes to the given URIs.
274
313
  * This includes direct dependents and transitive dependents.
@@ -351,8 +390,8 @@ export class DomainLangIndexManager extends DefaultIndexManager {
351
390
  */
352
391
  findDocumentsMatchingPaths(changedPaths) {
353
392
  const affected = new Set();
354
- for (const [docUri, specifierMap] of this.documentImportSpecifiers) {
355
- if (this.hasMatchingSpecifierOrResolvedUri(specifierMap, changedPaths)) {
393
+ for (const [docUri, importInfoList] of this.documentImportInfo) {
394
+ if (this.hasMatchingSpecifierOrResolvedUri(importInfoList, changedPaths)) {
356
395
  affected.add(docUri);
357
396
  }
358
397
  }
@@ -368,17 +407,17 @@ export class DomainLangIndexManager extends DefaultIndexManager {
368
407
  *
369
408
  * We check both to ensure moves of aliased imports trigger revalidation.
370
409
  */
371
- hasMatchingSpecifierOrResolvedUri(specifierMap, changedPaths) {
372
- for (const [specifier, resolvedUri] of specifierMap.entries()) {
373
- const normalizedSpecifier = specifier.replace(/^[.@/]+/, '');
410
+ hasMatchingSpecifierOrResolvedUri(importInfoList, changedPaths) {
411
+ for (const info of importInfoList) {
412
+ const normalizedSpecifier = info.specifier.replace(/^[.@/]+/, '');
374
413
  for (const changedPath of changedPaths) {
375
414
  // Check the raw specifier (handles relative imports)
376
- if (specifier.includes(changedPath) || changedPath.endsWith(normalizedSpecifier)) {
415
+ if (info.specifier.includes(changedPath) || changedPath.endsWith(normalizedSpecifier)) {
377
416
  return true;
378
417
  }
379
418
  // Check the resolved URI (handles path aliases like @domains/...)
380
419
  // The resolved URI contains the full file path which matches moved files
381
- if (resolvedUri?.includes(changedPath)) {
420
+ if (info.resolvedUri?.includes(changedPath)) {
382
421
  return true;
383
422
  }
384
423
  }
@@ -1 +1 @@
1
- {"version":3,"file":"domain-lang-index-manager.js","sourceRoot":"","sources":["../../src/lsp/domain-lang-index-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domain-lang-index-manager.js","sourceRoot":"","sources":["../../src/lsp/domain-lang-index-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Custom NodeKindProvider — maps DomainLang AST types to VS Code SymbolKinds.
3
+ *
4
+ * Langium's DefaultNodeKindProvider returns `SymbolKind.Field` for everything.
5
+ * This override provides semantically meaningful icons for the Outline view,
6
+ * breadcrumbs, Go to Symbol, and completion items.
7
+ *
8
+ * @module lsp/domain-lang-node-kind-provider
9
+ */
10
+ import { DefaultNodeKindProvider } from 'langium/lsp';
11
+ import { CompletionItemKind, SymbolKind } from 'vscode-languageserver';
12
+ import type { AstNode, AstNodeDescription } from 'langium';
13
+ /**
14
+ * Maps DomainLang AST types to semantically appropriate SymbolKind values.
15
+ *
16
+ * Used by the DocumentSymbolProvider (outline/breadcrumbs), WorkspaceSymbolProvider,
17
+ * and the CompletionProvider.
18
+ */
19
+ export declare class DomainLangNodeKindProvider extends DefaultNodeKindProvider {
20
+ getSymbolKind(node: AstNode | AstNodeDescription): SymbolKind;
21
+ getCompletionItemKind(node: AstNode | AstNodeDescription): CompletionItemKind;
22
+ /**
23
+ * Resolves an AstNode from an AstNodeDescription (which may only have a reference).
24
+ * Returns the node directly if it's already an AstNode.
25
+ */
26
+ private resolveNode;
27
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Custom NodeKindProvider — maps DomainLang AST types to VS Code SymbolKinds.
3
+ *
4
+ * Langium's DefaultNodeKindProvider returns `SymbolKind.Field` for everything.
5
+ * This override provides semantically meaningful icons for the Outline view,
6
+ * breadcrumbs, Go to Symbol, and completion items.
7
+ *
8
+ * @module lsp/domain-lang-node-kind-provider
9
+ */
10
+ import { DefaultNodeKindProvider } from 'langium/lsp';
11
+ import { CompletionItemKind, SymbolKind } from 'vscode-languageserver';
12
+ import { isDomain, isBoundedContext, isTeam, isClassification, isMetadata, isContextMap, isDomainMap, isNamespaceDeclaration, isRelationship, isDomainTerm, isDecision, isPolicy, isBusinessRule, isMetadataEntry, } from '../generated/ast.js';
13
+ const KIND_MAPPINGS = [
14
+ // Strategic design
15
+ [isDomain, SymbolKind.Namespace, CompletionItemKind.Folder],
16
+ [isBoundedContext, SymbolKind.Package, CompletionItemKind.Module],
17
+ // Tactical design
18
+ [isTeam, SymbolKind.Interface, CompletionItemKind.Interface],
19
+ [isClassification, SymbolKind.Enum, CompletionItemKind.Enum],
20
+ [isMetadata, SymbolKind.Enum, CompletionItemKind.Enum],
21
+ // Architecture mapping
22
+ [isContextMap, SymbolKind.Package, CompletionItemKind.Module],
23
+ [isDomainMap, SymbolKind.Package, CompletionItemKind.Module],
24
+ // Module system
25
+ [isNamespaceDeclaration, SymbolKind.Namespace, CompletionItemKind.Module],
26
+ // Relationships
27
+ [isRelationship, SymbolKind.Interface, CompletionItemKind.Interface],
28
+ // Documentation & governance
29
+ [isDomainTerm, SymbolKind.Field, CompletionItemKind.Field],
30
+ [isDecision, SymbolKind.Field, CompletionItemKind.Field],
31
+ [isPolicy, SymbolKind.Field, CompletionItemKind.Field],
32
+ [isBusinessRule, SymbolKind.Field, CompletionItemKind.Field],
33
+ // Metadata entries
34
+ [isMetadataEntry, SymbolKind.Field, CompletionItemKind.Field],
35
+ ];
36
+ /**
37
+ * Maps DomainLang AST types to semantically appropriate SymbolKind values.
38
+ *
39
+ * Used by the DocumentSymbolProvider (outline/breadcrumbs), WorkspaceSymbolProvider,
40
+ * and the CompletionProvider.
41
+ */
42
+ export class DomainLangNodeKindProvider extends DefaultNodeKindProvider {
43
+ getSymbolKind(node) {
44
+ try {
45
+ const astNode = this.resolveNode(node);
46
+ if (!astNode)
47
+ return super.getSymbolKind(node);
48
+ for (const [guard, symbolKind] of KIND_MAPPINGS) {
49
+ if (guard(astNode))
50
+ return symbolKind;
51
+ }
52
+ return super.getSymbolKind(node);
53
+ }
54
+ catch (error) {
55
+ console.error('Error in getSymbolKind:', error);
56
+ return super.getSymbolKind(node);
57
+ }
58
+ }
59
+ getCompletionItemKind(node) {
60
+ try {
61
+ const astNode = this.resolveNode(node);
62
+ if (!astNode)
63
+ return super.getCompletionItemKind(node);
64
+ for (const [guard, , completionKind] of KIND_MAPPINGS) {
65
+ if (guard(astNode))
66
+ return completionKind;
67
+ }
68
+ return super.getCompletionItemKind(node);
69
+ }
70
+ catch (error) {
71
+ console.error('Error in getCompletionItemKind:', error);
72
+ return super.getCompletionItemKind(node);
73
+ }
74
+ }
75
+ /**
76
+ * Resolves an AstNode from an AstNodeDescription (which may only have a reference).
77
+ * Returns the node directly if it's already an AstNode.
78
+ */
79
+ resolveNode(node) {
80
+ if ('$type' in node) {
81
+ return node;
82
+ }
83
+ // AstNodeDescription — resolve if possible
84
+ return node.node;
85
+ }
86
+ }
87
+ //# sourceMappingURL=domain-lang-node-kind-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-lang-node-kind-provider.js","sourceRoot":"","sources":["../../src/lsp/domain-lang-node-kind-provider.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  /**
2
2
  * DomainLang Scope Provider
3
3
  *
4
- * Implements import-based scoping for the DomainLang DSL.
4
+ * Implements import-based scoping with alias support and package-boundary transitive imports.
5
5
  *
6
- * **Key Concept:**
7
- * Unlike languages with global namespaces, DomainLang enforces strict import-based scoping:
8
- * - Elements are only visible if they are defined in the current document OR explicitly imported
9
- * - The global scope is restricted to imported documents only
10
- * - Transitive imports do NOT provide scope (only direct imports)
6
+ * **Key Concepts (per ADR-003):**
7
+ * - Elements are only visible if defined in current document OR explicitly imported
8
+ * - Import aliases control visibility: `import "pkg" as ddd` makes types visible as `ddd.*` only
9
+ * - Package-boundary transitive imports: External packages (.dlang/packages/) can re-export
10
+ * - Local file imports remain non-transitive (explicit dependencies only)
11
11
  *
12
12
  * **Why this matters:**
13
13
  * Without this, Langium's DefaultScopeProvider would make ALL indexed documents visible
@@ -17,6 +17,7 @@
17
17
  * 3. Create confusion about dependencies between files
18
18
  *
19
19
  * @see https://langium.org/docs/recipes/scoping/ for Langium scoping patterns
20
+ * @see ADR-003 for alias and package-boundary design decisions
20
21
  */
21
22
  import type { ReferenceInfo, Scope } from 'langium';
22
23
  import { DefaultScopeProvider } from 'langium';
@@ -28,17 +29,22 @@ import type { DomainLangServices } from '../domain-lang-module.js';
28
29
  */
29
30
  export declare class DomainLangScopeProvider extends DefaultScopeProvider {
30
31
  /**
31
- * Reference to IndexManager for getting resolved imports.
32
+ * Reference to IndexManager for getting resolved imports with aliases.
32
33
  */
33
34
  private readonly domainLangIndexManager;
35
+ /**
36
+ * Detects package boundaries for transitive import resolution.
37
+ */
38
+ private readonly packageBoundaryDetector;
34
39
  constructor(services: DomainLangServices);
35
40
  /**
36
- * Override getGlobalScope to restrict it to imported documents only.
41
+ * Override getGlobalScope to implement alias-scoped and package-boundary transitive imports.
37
42
  *
38
43
  * The default Langium behavior includes ALL documents in the workspace.
39
- * We restrict this to:
44
+ * We restrict and transform scope to:
40
45
  * 1. The current document's own exported symbols
41
- * 2. Exported symbols from directly imported documents
46
+ * 2. Symbols from directly imported documents (with alias prefixing)
47
+ * 3. Symbols from package-boundary transitive imports (external packages only)
42
48
  *
43
49
  * @param referenceType - The AST type being referenced
44
50
  * @param context - Information about the reference
@@ -46,22 +52,49 @@ export declare class DomainLangScopeProvider extends DefaultScopeProvider {
46
52
  */
47
53
  protected getGlobalScope(referenceType: string, context: ReferenceInfo): Scope;
48
54
  /**
49
- * Gets the set of document URIs that are directly imported by the given document.
55
+ * Computes all visible descriptions for a document, including:
56
+ * - Current document's own symbols
57
+ * - Direct imports (with alias prefixing)
58
+ * - Package-boundary transitive imports
50
59
  *
51
- * Uses the resolved imports tracked by DomainLangIndexManager during indexing.
52
- * This ensures accurate resolution including path aliases.
60
+ * @param referenceType - The AST type being referenced
61
+ * @param document - The document making the reference
62
+ * @returns Stream of visible descriptions
63
+ */
64
+ private computeVisibleDescriptions;
65
+ /**
66
+ * Adds descriptions from a single import, applying alias prefixing if needed.
53
67
  *
54
- * @param document - The document to get imports for
55
- * @returns Set of imported document URIs (as strings)
68
+ * @param imp - Import information (specifier, alias, resolved URI)
69
+ * @param referenceType - The AST type being referenced
70
+ * @param processedUris - Set of already-processed URIs to avoid duplicates
71
+ * @param output - Array to append visible descriptions to
56
72
  */
57
- private getImportedDocumentUris;
73
+ private addDescriptionsFromImport;
58
74
  /**
59
- * Filters the global index to only include descriptions from imported documents.
75
+ * Adds package-boundary transitive imports for external packages.
60
76
  *
77
+ * When document A imports package document B (e.g., index.dlang),
78
+ * and B imports internal package files C, D, etc. (same package root),
79
+ * then A can see types from C, D, etc. (package re-exports).
80
+ *
81
+ * Local file imports remain non-transitive.
82
+ *
83
+ * @param imp - Import information for the direct import
61
84
  * @param referenceType - The AST type being referenced
62
85
  * @param currentDocument - The document making the reference
63
- * @param importedUris - Set of URIs that are in scope
64
- * @returns Stream of filtered descriptions
86
+ * @param processedUris - Set of already-processed URIs to avoid duplicates
87
+ * @param output - Array to append visible descriptions to
88
+ */
89
+ private addPackageBoundaryTransitiveImports;
90
+ /**
91
+ * Creates an alias-prefixed version of a description.
92
+ *
93
+ * Example: CoreDomain with alias "ddd" → ddd.CoreDomain
94
+ *
95
+ * @param original - Original description
96
+ * @param alias - Import alias to prefix with
97
+ * @returns New description with prefixed name
65
98
  */
66
- private filterDescriptionsByImports;
99
+ private createAliasedDescription;
67
100
  }