@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
@@ -1,8 +1,8 @@
1
- import { CstUtils, isReference } from 'langium';
1
+ import { AstUtils, CstUtils, isReference } from 'langium';
2
2
  import { AstNodeHoverProvider } from 'langium/lsp';
3
3
  import * as ast from '../../generated/ast.js';
4
4
  import { keywordExplanations } from './domain-lang-keywords.js';
5
- import { effectiveClassification, effectiveTeam } from '../../sdk/resolution.js';
5
+ import { buildDomainFields, buildBcFields, formatHoverContent, } from './hover-builders.js';
6
6
  /**
7
7
  * Provides hover information for DomainLang elements.
8
8
  *
@@ -16,23 +16,24 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
16
16
  this.commentProvider = services.documentation.CommentProvider;
17
17
  const domainServices = services;
18
18
  this.qualifiedNameProvider = domainServices.references.QualifiedNameProvider;
19
+ this.indexManager = services.shared.workspace.IndexManager;
19
20
  // Register type-specific generators
20
21
  this.hoverGenerators = [
21
- (node, comment) => this.getDomainHover(node, comment),
22
- (node, comment) => this.getThisRefHover(node, comment),
23
- (node, comment) => this.getBoundedContextHover(node, comment),
24
- (node, comment) => this.getNamespaceHover(node, comment),
25
- (node, comment) => this.getContextMapHover(node, comment),
26
- (node, comment) => this.getDomainMapHover(node, comment),
27
- (node, comment) => this.getDecisionHover(node, comment),
28
- (node, comment) => this.getPolicyHover(node, comment),
29
- (node, comment) => this.getBusinessRuleHover(node, comment),
30
- (node, comment) => this.getDomainTermHover(node, comment),
31
- (node, comment) => this.getTeamHover(node, comment),
32
- (node, comment) => this.getClassificationHover(node, comment),
33
- (node, comment) => this.getMetadataHover(node, comment),
34
- (node, comment) => this.getRelationshipHover(node, comment),
35
- (node, comment) => this.getImportHover(node, comment),
22
+ (node, comment, alias) => this.getDomainHover(node, comment, alias),
23
+ (node, comment, alias) => this.getThisRefHover(node, comment, alias),
24
+ (node, comment, alias) => this.getBoundedContextHover(node, comment, alias),
25
+ (node, comment, alias) => this.getNamespaceHover(node, comment, alias),
26
+ (node, comment, alias) => this.getContextMapHover(node, comment, alias),
27
+ (node, comment, alias) => this.getDomainMapHover(node, comment, alias),
28
+ (node, comment, alias) => this.getDecisionHover(node, comment, alias),
29
+ (node, comment, alias) => this.getPolicyHover(node, comment, alias),
30
+ (node, comment, alias) => this.getBusinessRuleHover(node, comment, alias),
31
+ (node, comment, alias) => this.getDomainTermHover(node, comment, alias),
32
+ (node, comment, alias) => this.getTeamHover(node, comment, alias),
33
+ (node, comment, alias) => this.getClassificationHover(node, comment, alias),
34
+ (node, comment, alias) => this.getMetadataHover(node, comment, alias),
35
+ (node, comment, alias) => this.getRelationshipHover(node, comment, alias),
36
+ (node, comment, alias) => this.getImportHover(node, comment, alias),
36
37
  ];
37
38
  }
38
39
  async getHoverContent(document, params) {
@@ -47,12 +48,12 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
47
48
  return undefined;
48
49
  }
49
50
  // Try declaration hover first
50
- const declarationHover = await this.tryGetDeclarationHover(cstNode);
51
+ const declarationHover = await this.tryGetDeclarationHover(cstNode, document);
51
52
  if (declarationHover) {
52
53
  return declarationHover;
53
54
  }
54
55
  // Then try keyword hover
55
- return await this.tryGetKeywordHover(cstNode);
56
+ return this.tryGetKeywordHover(cstNode);
56
57
  }
57
58
  catch (error) {
58
59
  console.error('Error in getHoverContent:', error);
@@ -61,20 +62,39 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
61
62
  }
62
63
  /**
63
64
  * Try to get hover for a declaration node (AST node).
65
+ * For qualified name references, only shows hover when hovering over the last segment.
66
+ * For qualified name declarations (like namespace names), shows hover on any segment.
64
67
  */
65
- async tryGetDeclarationHover(cstNode) {
68
+ async tryGetDeclarationHover(cstNode, document) {
66
69
  if (!cstNode)
67
70
  return undefined;
71
+ // For qualified name REFERENCES (e.g., "Core.Baunwalls.Jannie" in a BC classification),
72
+ // only show hover on the last segment. But for qualified name DECLARATIONS (like namespace names),
73
+ // show hover on any segment.
74
+ const isNamespaceDeclaration = ast.isNamespaceDeclaration(cstNode.astNode);
75
+ if (!isNamespaceDeclaration) {
76
+ // This is a reference context - check if there's a dot immediately after this node
77
+ const fullText = document.textDocument.getText();
78
+ const nodeEndOffset = cstNode.offset + cstNode.length;
79
+ // If the next non-whitespace character is a dot, this is not the last segment
80
+ if (nodeEndOffset < fullText.length) {
81
+ const nextChar = fullText.charAt(nodeEndOffset);
82
+ if (nextChar === '.') {
83
+ // This node is followed by a dot, so it's not the last segment
84
+ return undefined;
85
+ }
86
+ }
87
+ }
68
88
  const targetNodes = this.references.findDeclarations(cstNode);
69
89
  const targetNode = targetNodes?.[0];
70
90
  if (targetNode) {
71
- const content = await this.getAstNodeHoverContent(targetNode);
91
+ const content = await this.getAstNodeHoverContent(targetNode, document);
72
92
  if (content) {
73
93
  return { contents: { kind: 'markdown', value: content } };
74
94
  }
75
95
  }
76
96
  if (cstNode.astNode && ast.isThisRef(cstNode.astNode)) {
77
- const content = await this.getAstNodeHoverContent(cstNode.astNode);
97
+ const content = await this.getAstNodeHoverContent(cstNode.astNode, document);
78
98
  if (content) {
79
99
  return { contents: { kind: 'markdown', value: content } };
80
100
  }
@@ -85,7 +105,7 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
85
105
  * Try to get hover for a keyword node.
86
106
  * Uses the keyword dictionary for all keywords.
87
107
  */
88
- async tryGetKeywordHover(cstNode) {
108
+ tryGetKeywordHover(cstNode) {
89
109
  if (!cstNode || cstNode.grammarSource?.$type !== 'Keyword') {
90
110
  return undefined;
91
111
  }
@@ -96,53 +116,67 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
96
116
  }
97
117
  return undefined;
98
118
  }
99
- getAstNodeHoverContent(node) {
119
+ getAstNodeHoverContent(node, currentDocument) {
100
120
  try {
101
121
  const content = this.documentationProvider.getDocumentation(node);
102
122
  const commentBlock = content ? `*${content}*\n\n` : '';
123
+ // Get import alias if the node is from an imported document
124
+ const importAlias = currentDocument ? this.getImportAliasForNode(node, currentDocument) : undefined;
103
125
  // Try each type-specific generator
104
126
  for (const generator of this.hoverGenerators) {
105
- const result = generator(node, commentBlock);
127
+ const result = generator(node, commentBlock, importAlias);
106
128
  if (result !== undefined) {
107
129
  return result;
108
130
  }
109
131
  }
110
132
  // Default fallback for unknown types
111
- return this.getDefaultHover(node, commentBlock);
133
+ return this.getDefaultHover(node, commentBlock, importAlias);
112
134
  }
113
135
  catch (error) {
114
136
  console.error('Error in getAstNodeHoverContent:', error);
115
137
  return undefined;
116
138
  }
117
139
  }
140
+ /**
141
+ * Gets the import alias for a node if it's from an imported document.
142
+ * Returns undefined if the node is in the same document or not imported with an alias.
143
+ */
144
+ getImportAliasForNode(targetNode, currentDocument) {
145
+ try {
146
+ const targetDoc = AstUtils.getDocument(targetNode);
147
+ const currentDocUri = currentDocument.uri.toString();
148
+ const targetDocUri = targetDoc.uri.toString();
149
+ // If same document, no alias needed
150
+ if (currentDocUri === targetDocUri) {
151
+ return undefined;
152
+ }
153
+ // Look up import info for the current document
154
+ const importInfo = this.indexManager.getImportInfo(currentDocUri);
155
+ // Find the import that brings in the target document
156
+ for (const imp of importInfo) {
157
+ if (imp.resolvedUri === targetDocUri && imp.alias) {
158
+ return imp.alias;
159
+ }
160
+ }
161
+ return undefined;
162
+ }
163
+ catch (error) {
164
+ console.error('Error getting import alias for node:', error);
165
+ return undefined;
166
+ }
167
+ }
118
168
  // ============================================================
119
169
  // Type-specific hover generators
120
170
  // ============================================================
121
- getDomainHover(node, commentBlock) {
171
+ getDomainHover(node, commentBlock, importAlias) {
122
172
  if (!ast.isDomain(node))
123
173
  return undefined;
124
- const description = node.description ?? '';
125
- const vision = node.vision ?? '';
126
- const typeRef = node.type?.ref;
127
- const type = this.getRefName(typeRef);
128
- const signatureParts = ['Domain', node.name];
129
- if (node.parent?.ref?.name)
130
- signatureParts.push('in', node.parent.ref.name);
131
- const signature = this.codeBlock(signatureParts.join(' '));
132
- const fields = [signature];
133
- if (description)
134
- fields.push(description);
135
- if (vision || type || node.parent)
136
- fields.push('---');
137
- if (vision)
138
- fields.push(`**Vision:** ${vision}`);
139
- if (type)
140
- fields.push(`**Type:** ${this.refLink(typeRef, type)}`);
141
- if (node.parent)
142
- fields.push(`**Parent:** ${this.refLink(node.parent)}`);
143
- return this.formatHover(commentBlock, '📁', 'domain', node.name, fields);
174
+ const displayName = this.getDisplayNameForHover(node, importAlias);
175
+ const refLink = (ref, label) => this.refLink(ref, label);
176
+ const fields = buildDomainFields(node, refLink);
177
+ return formatHoverContent(commentBlock, '📁', 'domain', displayName, fields);
144
178
  }
145
- getThisRefHover(node, _commentBlock) {
179
+ getThisRefHover(node, _commentBlock, _importAlias) {
146
180
  if (!ast.isThisRef(node))
147
181
  return undefined;
148
182
  let parent = node.$container;
@@ -153,67 +187,37 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
153
187
  ast.isContextMap(parent) ||
154
188
  ast.isDomainMap(parent) ||
155
189
  ast.isModel(parent)) {
156
- return this.getAstNodeHoverContent(parent);
190
+ const result = this.getAstNodeHoverContent(parent);
191
+ // getAstNodeHoverContent returns MaybePromise<string | undefined>.
192
+ // All registered hover generators are synchronous, so the result
193
+ // should always be a plain string. Guard defensively in case a
194
+ // future generator becomes async.
195
+ if (typeof result === 'string' || result === undefined) {
196
+ return result;
197
+ }
198
+ // If somehow a Promise is returned, we cannot await in a sync
199
+ // context - fall through to the default message.
200
+ return undefined;
157
201
  }
158
202
  parent = parent.$container;
159
203
  }
160
204
  return '*this* refers to the current context';
161
205
  }
162
- getBoundedContextHover(node, commentBlock) {
206
+ getBoundedContextHover(node, commentBlock, importAlias) {
163
207
  if (!ast.isBoundedContext(node))
164
208
  return undefined;
165
- const description = node.description ?? '';
166
- const classification = effectiveClassification(node);
167
- const team = effectiveTeam(node);
168
- const businessModel = node.businessModel?.ref;
169
- const evolution = node.evolution?.ref;
170
- const relationships = node.relationships ?? [];
171
- const terminology = node.terminology ?? [];
172
- const decisions = node.decisions ?? [];
173
- const classificationName = classification?.name;
174
- const teamName = team?.name;
175
- const signatureParts = ['boundedcontext', node.name];
176
- if (node.domain?.ref?.name)
177
- signatureParts.push('for', node.domain.ref.name);
178
- if (classificationName)
179
- signatureParts.push('as', classificationName);
180
- if (teamName)
181
- signatureParts.push('by', teamName);
182
- const signature = this.codeBlock(signatureParts.join(' '));
183
- const fields = [signature];
184
- if (description)
185
- fields.push(description);
186
- if (classification || team || businessModel || evolution)
187
- fields.push('---');
188
- if (classification)
189
- fields.push(`🔖 **Classification:** ${this.refLink(classification)}`);
190
- if (team)
191
- fields.push(`👥 **Team:** ${this.refLink(team)}`);
192
- if (businessModel)
193
- fields.push(`💼 **Business Model:** ${this.refLink(businessModel)}`);
194
- if (evolution)
195
- fields.push(`🔄 **Evolution:** ${this.refLink(evolution)}`);
196
- if (relationships.length > 0) {
197
- const lines = relationships.map(rel => this.formatRelationshipLine(rel));
198
- fields.push(`**Relationships:**\n${lines.join('\n')}`);
199
- }
200
- if (terminology.length > 0) {
201
- const lines = terminology.map(t => `- \`${t.name}\`: ${t.meaning ?? ''}`);
202
- fields.push(`**Terminology:**\n${lines.join('\n')}`);
203
- }
204
- if (decisions.length > 0) {
205
- const lines = decisions.map(d => `- \`${d.name}\`: ${d.value ?? ''}`);
206
- fields.push(`**Decisions:**\n${lines.join('\n')}`);
207
- }
208
- return this.formatHover(commentBlock, '📕', 'boundedcontext', node.name, fields);
209
+ const displayName = this.getDisplayNameForHover(node, importAlias);
210
+ const refLink = (ref, label) => this.refLink(ref, label);
211
+ const fields = buildBcFields(node, refLink, (rel) => this.formatRelationshipLine(rel));
212
+ return formatHoverContent(commentBlock, '🎯', 'bounded context', displayName, fields);
209
213
  }
210
- getNamespaceHover(node, commentBlock) {
214
+ getNamespaceHover(node, commentBlock, _importAlias) {
211
215
  if (!ast.isNamespaceDeclaration(node))
212
216
  return undefined;
213
217
  const fields = [`Contains ${node.children.length} elements.`];
214
218
  return this.formatHover(commentBlock, '🧭', 'namespace', node.name, fields);
215
219
  }
216
- getContextMapHover(node, commentBlock) {
220
+ getContextMapHover(node, commentBlock, _importAlias) {
217
221
  if (!ast.isContextMap(node))
218
222
  return undefined;
219
223
  const fields = [];
@@ -229,7 +233,7 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
229
233
  }
230
234
  return this.formatHover(commentBlock, '🗺️', 'contextmap', node.name, fields);
231
235
  }
232
- getDomainMapHover(node, commentBlock) {
236
+ getDomainMapHover(node, commentBlock, _importAlias) {
233
237
  if (!ast.isDomainMap(node))
234
238
  return undefined;
235
239
  const fields = [];
@@ -240,7 +244,7 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
240
244
  }
241
245
  return this.formatHover(commentBlock, '🗺️', 'domainmap', node.name, fields);
242
246
  }
243
- getDecisionHover(node, commentBlock) {
247
+ getDecisionHover(node, commentBlock, _importAlias) {
244
248
  if (!ast.isDecision(node))
245
249
  return undefined;
246
250
  const fields = [];
@@ -249,7 +253,7 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
249
253
  }
250
254
  return this.formatHover(commentBlock, '⚖️', 'decision', node.name, fields);
251
255
  }
252
- getPolicyHover(node, commentBlock) {
256
+ getPolicyHover(node, commentBlock, _importAlias) {
253
257
  if (!ast.isPolicy(node))
254
258
  return undefined;
255
259
  const fields = [];
@@ -258,7 +262,7 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
258
262
  }
259
263
  return this.formatHover(commentBlock, '📜', 'policy', node.name, fields);
260
264
  }
261
- getBusinessRuleHover(node, commentBlock) {
265
+ getBusinessRuleHover(node, commentBlock, _importAlias) {
262
266
  if (!ast.isBusinessRule(node))
263
267
  return undefined;
264
268
  const fields = [];
@@ -267,7 +271,7 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
267
271
  }
268
272
  return this.formatHover(commentBlock, '⚖️', 'rule', node.name, fields);
269
273
  }
270
- getDomainTermHover(node, commentBlock) {
274
+ getDomainTermHover(node, commentBlock, _importAlias) {
271
275
  if (!ast.isDomainTerm(node))
272
276
  return undefined;
273
277
  const fields = [];
@@ -276,22 +280,25 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
276
280
  }
277
281
  return this.formatHover(commentBlock, '🗝️', 'term', node.name, fields);
278
282
  }
279
- getTeamHover(node, commentBlock) {
283
+ getTeamHover(node, commentBlock, importAlias) {
280
284
  if (!ast.isTeam(node))
281
285
  return undefined;
282
- return this.formatHover(commentBlock, '👥', 'team', node.name, []);
286
+ const displayName = this.getDisplayNameForHover(node, importAlias);
287
+ return this.formatHover(commentBlock, '👥', 'team', displayName, []);
283
288
  }
284
- getClassificationHover(node, commentBlock) {
289
+ getClassificationHover(node, commentBlock, importAlias) {
285
290
  if (!ast.isClassification(node))
286
291
  return undefined;
287
- return this.formatHover(commentBlock, '🏷️', 'classification', node.name, []);
292
+ const displayName = this.getDisplayNameForHover(node, importAlias);
293
+ return this.formatHover(commentBlock, '🏷️', 'classification', displayName, []);
288
294
  }
289
- getMetadataHover(node, commentBlock) {
295
+ getMetadataHover(node, commentBlock, importAlias) {
290
296
  if (!ast.isMetadata(node))
291
297
  return undefined;
292
- return this.formatHover(commentBlock, '🔖', 'metadata', node.name, []);
298
+ const displayName = this.getDisplayNameForHover(node, importAlias);
299
+ return this.formatHover(commentBlock, '🔖', 'metadata', displayName, []);
293
300
  }
294
- getRelationshipHover(node, commentBlock) {
301
+ getRelationshipHover(node, commentBlock, _importAlias) {
295
302
  if (!ast.isRelationship(node))
296
303
  return undefined;
297
304
  const leftPatterns = node.leftPatterns.join(', ');
@@ -307,7 +314,7 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
307
314
  fields.push(`**Right patterns:** ${rightPatterns}`);
308
315
  return this.formatHover(commentBlock, '🔗', 'relationship', undefined, fields);
309
316
  }
310
- getImportHover(node, commentBlock) {
317
+ getImportHover(node, commentBlock, _importAlias) {
311
318
  if (!ast.isImportStatement(node))
312
319
  return undefined;
313
320
  const fields = [`**URI:** \`${node.uri}\``];
@@ -315,7 +322,7 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
315
322
  fields.push(`**Alias:** \`${node.alias}\``);
316
323
  return this.formatHover(commentBlock, '📦', 'import', undefined, fields);
317
324
  }
318
- getDefaultHover(node, commentBlock) {
325
+ getDefaultHover(node, commentBlock, _importAlias) {
319
326
  const title = ast.isType(node) ? node.name : node.$type.toLowerCase();
320
327
  const typeName = node.$type.toLowerCase();
321
328
  const name = ast.isType(node) ? ` ${title}` : '';
@@ -325,6 +332,21 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
325
332
  // ============================================================
326
333
  // Helper methods
327
334
  // ============================================================
335
+ /**
336
+ * Computes the display name for a node in hover, considering import aliases.
337
+ * If node is imported with an alias, shows `alias.name`, otherwise shows full qualified name.
338
+ */
339
+ getDisplayNameForHover(node, importAlias) {
340
+ if (importAlias) {
341
+ return `${importAlias}.${node.name}`;
342
+ }
343
+ try {
344
+ return this.qualifiedNameProvider.getQualifiedName(node.$container, node.name);
345
+ }
346
+ catch {
347
+ return node.name;
348
+ }
349
+ }
328
350
  /**
329
351
  * Formats a relationship line for hover display.
330
352
  */
@@ -334,45 +356,49 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
334
356
  const type = rel.type ? ` \`${rel.type}\`` : '';
335
357
  return `- ${left} ${rel.arrow} ${right}${type}`;
336
358
  }
337
- /**
338
- * Wraps text in a domain-lang code block.
339
- */
340
- codeBlock(text) {
341
- return `\`\`\`domain-lang\n${text}\n\`\`\``;
342
- }
343
359
  /**
344
360
  * Formats the final hover content with consistent structure.
361
+ * Delegates to the shared hover-builders utility.
345
362
  */
346
363
  formatHover(commentBlock, emoji, typeName, name, fields) {
347
- const separator = commentBlock ? `${commentBlock}\n\n---\n\n` : '';
348
- const nameDisplay = name ? ` ${name}` : '';
349
- const header = `${emoji} **\`(${typeName})\`${nameDisplay}**`;
350
- const body = fields.length > 0 ? `\n\n${fields.join('\n\n')}` : '';
351
- return `${separator}${header}${body}`;
364
+ return formatHoverContent(commentBlock, emoji, typeName, name, fields);
352
365
  }
353
- getRefName(ref) {
366
+ refLink(ref, label) {
354
367
  const node = isReference(ref) ? ref.ref : ref;
355
- if (node && ast.isType(node)) {
356
- return node.name;
368
+ if (!node || !ast.isType(node)) {
369
+ return label ? `\`${label}\`` : '';
357
370
  }
358
- return '';
359
- }
360
- refLink(ref, label) {
371
+ // Get display name (use label if provided, otherwise qualified name)
372
+ let linkLabel;
361
373
  if (label) {
362
- return `[${label}](#${encodeURIComponent(label)})`;
374
+ linkLabel = label;
363
375
  }
364
- const node = isReference(ref) ? ref.ref : ref;
365
- if (node && ast.isType(node)) {
366
- let linkLabel = node.name;
376
+ else {
367
377
  try {
368
378
  linkLabel = this.qualifiedNameProvider.getQualifiedName(node.$container, node.name);
369
379
  }
370
380
  catch {
371
- // fallback to name
381
+ linkLabel = node.name;
372
382
  }
373
- return `[${linkLabel}](#${encodeURIComponent(linkLabel)})`;
374
383
  }
375
- return '';
384
+ // Try to create clickable go-to-definition link
385
+ try {
386
+ const doc = AstUtils.getDocument(node);
387
+ const cstNode = node.$cstNode;
388
+ if (doc && cstNode) {
389
+ const range = CstUtils.toDocumentSegment(cstNode).range;
390
+ const line = range.start.line + 1; // LSP lines are 0-indexed, file links use 1-indexed
391
+ const col = range.start.character + 1;
392
+ const uri = doc.uri.toString();
393
+ // VS Code recognizes file:// URIs with #Lline,col for go-to-definition
394
+ return `[${linkLabel}](${uri}#L${line},${col})`;
395
+ }
396
+ }
397
+ catch (error) {
398
+ console.error('Error creating hover link:', error);
399
+ }
400
+ // Fallback to plain text if we can't create a link
401
+ return `\`${linkLabel}\``;
376
402
  }
377
403
  }
378
404
  //# sourceMappingURL=domain-lang-hover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain-lang-hover.js","sourceRoot":"","sources":["../../../src/lsp/hover/domain-lang-hover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domain-lang-hover.js","sourceRoot":"","sources":["../../../src/lsp/hover/domain-lang-hover.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,GAAG,MAAM,wBAAwB,CAAC;AAI9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,kBAAkB,GACrB,MAAM,qBAAqB,CAAC;AAW7B;;;;;GAKG;AACH,MAAM,OAAO,uBAAwB,SAAQ,oBAAoB;IAY7D,YAAY,QAAyB;QACjC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC;QAC1E,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC;QAC9D,MAAM,cAAc,GAAG,QAA8B,CAAC;QACtD,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC,UAAU,CAAC,qBAAqB,CAAC;QAC7E,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,YAAsC,CAAC;QAErF,oCAAoC;QACpC,IAAI,CAAC,eAAe,GAAG;YACnB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YACnE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YACpE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YAC3E,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YACtE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YACvE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YACtE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YACrE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YACnE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YACzE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YACvE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YACjE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YAC3E,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YACrE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;YACzE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;SACtE,CAAC;IACN,CAAC;IAEQ,KAAK,CAAC,eAAe,CAAC,QAAyB,EAAE,MAAmB;QACzE,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACtG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;gBACxD,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,8BAA8B;YAC9B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9E,IAAI,gBAAgB,EAAE,CAAC;gBACnB,OAAO,gBAAgB,CAAC;YAC5B,CAAC;YAED,yBAAyB;YACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,sBAAsB,CAChC,OAAgE,EAChE,QAAyB;QAEzB,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAE/B,wFAAwF;QACxF,mGAAmG;QACnG,6BAA6B;QAC7B,MAAM,sBAAsB,GAAG,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE3E,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC1B,mFAAmF;YACnF,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACjD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAEtD,8EAA8E;YAC9E,IAAI,aAAa,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAChD,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;oBACnB,+DAA+D;oBAC/D,OAAO,SAAS,CAAC;gBACrB,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACxE,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9D,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC7E,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9D,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,OAAgE;QACvF,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,+CAA+C;QAC/C,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACpE,IAAI,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,WAAW,EAAE,EAAE,EAAE,CAAC;QAC1E,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAES,sBAAsB,CAAC,IAAa,EAAE,eAAiC;QAC7E,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAClE,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAEvD,4DAA4D;YAC5D,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEpG,mCAAmC;YACnC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;gBAC1D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,MAAM,CAAC;gBAClB,CAAC;YACL,CAAC;YAED,qCAAqC;YACrC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YACzD,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,UAAmB,EAAE,eAAgC;QAC/E,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACrD,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAE9C,oCAAoC;YACpC,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;gBACjC,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,+CAA+C;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YAElE,qDAAqD;YACrD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC3B,IAAI,GAAG,CAAC,WAAW,KAAK,YAAY,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBAChD,OAAO,GAAG,CAAC,KAAK,CAAC;gBACrB,CAAC;YACL,CAAC;YAED,OAAO,SAAS,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YAC7D,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED,+DAA+D;IAC/D,iCAAiC;IACjC,+DAA+D;IAEvD,cAAc,CAAC,IAAa,EAAE,YAAoB,EAAE,WAAoB;QAC5E,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAE1C,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,CAAC,GAAyB,EAAE,KAAc,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,kBAAkB,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACjF,CAAC;IAEO,eAAe,CAAC,IAAa,EAAE,aAAqB,EAAE,YAAqB;QAC/E,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAE3C,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,OAAO,MAAM,EAAE,CAAC;YACZ,IACI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACpB,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC;gBAC5B,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC;gBAClC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC;gBACxB,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;gBACvB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EACrB,CAAC;gBACC,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBACnD,mEAAmE;gBACnE,iEAAiE;gBACjE,+DAA+D;gBAC/D,kCAAkC;gBAClC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACrD,OAAO,MAAM,CAAC;gBAClB,CAAC;gBACD,8DAA8D;gBAC9D,iDAAiD;gBACjD,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,CAAC;QAED,OAAO,sCAAsC,CAAC;IAClD,CAAC;IAEO,sBAAsB,CAAC,IAAa,EAAE,YAAoB,EAAE,WAAoB;QACpF,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAElD,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,CAAC,GAAyB,EAAE,KAAc,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,aAAa,CACxB,IAAI,EACJ,OAAO,EACP,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAC5C,CAAC;QACF,OAAO,kBAAkB,CAAC,YAAY,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1F,CAAC;IAEO,iBAAiB,CAAC,IAAa,EAAE,YAAoB,EAAE,YAAqB;QAChF,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAExD,MAAM,MAAM,GAAa,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;IAEO,kBAAkB,CAAC,IAAa,EAAE,YAAoB,EAAE,YAAqB;QACjF,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAE9C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAC5C,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CACtD,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,4BAA4B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAEO,iBAAiB,CAAC,IAAa,EAAE,YAAoB,EAAE,YAAqB;QAChF,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAE7C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CACnC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CACrD,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjF,CAAC;IAEO,gBAAgB,CAAC,IAAa,EAAE,YAAoB,EAAE,YAAqB;QAC/E,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAE5C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAEO,cAAc,CAAC,IAAa,EAAE,YAAoB,EAAE,YAAqB;QAC7E,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAE1C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;IAEO,oBAAoB,CAAC,IAAa,EAAE,YAAoB,EAAE,YAAqB;QACnF,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAEhD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAEO,kBAAkB,CAAC,IAAa,EAAE,YAAoB,EAAE,YAAqB;QACjF,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAE9C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;IAEO,YAAY,CAAC,IAAa,EAAE,YAAoB,EAAE,WAAoB;QAC1E,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAEO,sBAAsB,CAAC,IAAa,EAAE,YAAoB,EAAE,WAAoB;QACpF,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC;IAEO,gBAAgB,CAAC,IAAa,EAAE,YAAoB,EAAE,WAAoB;QAC9E,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IAEO,oBAAoB,CAAC,IAAa,EAAE,YAAoB,EAAE,YAAqB;QACnF,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAEhD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,MAAM,GAAa;YACrB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;SACnF,CAAC;QACF,IAAI,IAAI,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACzD,IAAI,YAAY;YAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,YAAY,EAAE,CAAC,CAAC;QACpE,IAAI,aAAa;YAAE,MAAM,CAAC,IAAI,CAAC,uBAAuB,aAAa,EAAE,CAAC,CAAC;QAEvE,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAEO,cAAc,CAAC,IAAa,EAAE,YAAoB,EAAE,YAAqB;QAC7E,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAEnD,MAAM,MAAM,GAAa,CAAC,cAAc,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;IAEO,eAAe,CAAC,IAAa,EAAE,YAAoB,EAAE,YAAqB;QAC9E,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,OAAO,GAAG,SAAS,WAAW,QAAQ,MAAM,IAAI,IAAI,CAAC;IACzD,CAAC;IAED,+DAA+D;IAC/D,iBAAiB;IACjB,+DAA+D;IAE/D;;;OAGG;IACK,sBAAsB,CAAC,IAAc,EAAE,WAAoB;QAC/D,IAAI,WAAW,EAAE,CAAC;YACd,OAAO,GAAG,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnF,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,GAAqB;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;IACpD,CAAC;IAED;;;OAGG;IACK,WAAW,CACf,YAAoB,EACpB,KAAa,EACb,QAAgB,EAChB,IAAwB,EACxB,MAAgB;QAEhB,OAAO,kBAAkB,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAEO,OAAO,CAAC,GAA+C,EAAE,KAAc;QAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAE9C,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,CAAC;QAED,qEAAqE;QACrE,IAAI,SAAiB,CAAC;QACtB,IAAI,KAAK,EAAE,CAAC;YACR,SAAS,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC;gBACD,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACxF,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;YAC1B,CAAC;QACL,CAAC;QAED,gDAAgD;QAChD,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAE9B,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;gBACxD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,oDAAoD;gBACvF,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;gBACtC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAE/B,uEAAuE;gBACvE,OAAO,IAAI,SAAS,KAAK,GAAG,KAAK,IAAI,IAAI,GAAG,GAAG,CAAC;YACpD,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,mDAAmD;QACnD,OAAO,KAAK,SAAS,IAAI,CAAC;IAC9B,CAAC;CAEJ"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Standalone hover content builder functions.
3
+ *
4
+ * Extracted from DomainLangHoverProvider to reduce class complexity
5
+ * and enable independent testing of hover content generation.
6
+ *
7
+ * Each builder takes typed AST nodes (not generic AstNode) and the helper
8
+ * functions needed for formatting, keeping them pure and testable.
9
+ *
10
+ * @module lsp/hover/hover-builders
11
+ */
12
+ import type { BoundedContext, Domain, Relationship, Type } from '../../generated/ast.js';
13
+ /**
14
+ * Wraps text in a domain-lang fenced code block.
15
+ */
16
+ export declare function codeBlock(text: string): string;
17
+ /**
18
+ * Formats hover output with a consistent header/body structure.
19
+ *
20
+ * @param commentBlock - Documentation comment prefix (or empty)
21
+ * @param emoji - Emoji icon for the type
22
+ * @param typeName - Lowercase type name
23
+ * @param name - Element name (optional)
24
+ * @param fields - Body content fields
25
+ */
26
+ export declare function formatHoverContent(commentBlock: string, emoji: string, typeName: string, name: string | undefined, fields: string[]): string;
27
+ /**
28
+ * Callback for creating reference links.
29
+ * Provided by the hover provider which has access to the qualified name provider.
30
+ */
31
+ export type RefLinkFn = (ref: Type | undefined, label?: string) => string;
32
+ /**
33
+ * Builds a signature string for a domain (e.g., "Domain Sales in Commerce").
34
+ */
35
+ export declare function buildDomainSignature(domain: Domain): string;
36
+ /**
37
+ * Builds hover fields for a Domain node.
38
+ *
39
+ * @param domain - The domain AST node
40
+ * @param refLink - Function to create reference links
41
+ * @returns Array of formatted field strings
42
+ */
43
+ export declare function buildDomainFields(domain: Domain, refLink: RefLinkFn): string[];
44
+ /**
45
+ * Builds a signature string for a bounded context
46
+ * (e.g., "boundedcontext OrderManagement for Sales as Core by SalesTeam").
47
+ */
48
+ export declare function buildBcSignature(bc: BoundedContext): string;
49
+ /**
50
+ * Builds hover fields for a BoundedContext node.
51
+ *
52
+ * @param bc - The bounded context AST node
53
+ * @param refLink - Function to create reference links
54
+ * @param formatRelationshipLine - Function to format a relationship line
55
+ * @returns Array of formatted field strings
56
+ */
57
+ export declare function buildBcFields(bc: BoundedContext, refLink: RefLinkFn, formatRelationshipLine: (rel: Relationship) => string): string[];