@domainlang/language 0.5.2 → 0.7.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 (116) hide show
  1. package/README.md +1 -1
  2. package/out/domain-lang-module.js +5 -1
  3. package/out/domain-lang-module.js.map +1 -1
  4. package/out/generated/ast.d.ts +24 -0
  5. package/out/generated/ast.js.map +1 -1
  6. package/out/generated/grammar.js +22 -32
  7. package/out/generated/grammar.js.map +1 -1
  8. package/out/index.d.ts +2 -5
  9. package/out/index.js +10 -6
  10. package/out/index.js.map +1 -1
  11. package/out/lsp/domain-lang-code-actions.js +14 -8
  12. package/out/lsp/domain-lang-code-actions.js.map +1 -1
  13. package/out/lsp/domain-lang-completion.d.ts +3 -0
  14. package/out/lsp/domain-lang-completion.js +41 -13
  15. package/out/lsp/domain-lang-completion.js.map +1 -1
  16. package/out/lsp/domain-lang-formatter.js +24 -18
  17. package/out/lsp/domain-lang-formatter.js.map +1 -1
  18. package/out/lsp/domain-lang-index-manager.d.ts +170 -0
  19. package/out/lsp/domain-lang-index-manager.js +389 -0
  20. package/out/lsp/domain-lang-index-manager.js.map +1 -0
  21. package/out/lsp/domain-lang-scope-provider.d.ts +67 -0
  22. package/out/lsp/domain-lang-scope-provider.js +95 -0
  23. package/out/lsp/domain-lang-scope-provider.js.map +1 -0
  24. package/out/lsp/domain-lang-scope.js +31 -17
  25. package/out/lsp/domain-lang-scope.js.map +1 -1
  26. package/out/lsp/domain-lang-workspace-manager.d.ts +76 -9
  27. package/out/lsp/domain-lang-workspace-manager.js +176 -54
  28. package/out/lsp/domain-lang-workspace-manager.js.map +1 -1
  29. package/out/lsp/hover/domain-lang-hover.d.ts +45 -1
  30. package/out/lsp/hover/domain-lang-hover.js +308 -232
  31. package/out/lsp/hover/domain-lang-hover.js.map +1 -1
  32. package/out/lsp/hover/domain-lang-keywords.d.ts +3 -7
  33. package/out/lsp/hover/domain-lang-keywords.js +115 -38
  34. package/out/lsp/hover/domain-lang-keywords.js.map +1 -1
  35. package/out/lsp/manifest-diagnostics.js +95 -50
  36. package/out/lsp/manifest-diagnostics.js.map +1 -1
  37. package/out/main.js +204 -17
  38. package/out/main.js.map +1 -1
  39. package/out/services/import-resolver.d.ts +39 -2
  40. package/out/services/import-resolver.js +77 -12
  41. package/out/services/import-resolver.js.map +1 -1
  42. package/out/services/types.d.ts +2 -2
  43. package/out/services/workspace-manager.d.ts +33 -31
  44. package/out/services/workspace-manager.js +92 -148
  45. package/out/services/workspace-manager.js.map +1 -1
  46. package/out/utils/document-utils.d.ts +41 -0
  47. package/out/utils/document-utils.js +64 -0
  48. package/out/utils/document-utils.js.map +1 -0
  49. package/out/utils/import-utils.d.ts +0 -17
  50. package/out/utils/import-utils.js +2 -32
  51. package/out/utils/import-utils.js.map +1 -1
  52. package/out/utils/manifest-utils.d.ts +56 -0
  53. package/out/utils/manifest-utils.js +119 -0
  54. package/out/utils/manifest-utils.js.map +1 -0
  55. package/out/validation/constants.d.ts +13 -0
  56. package/out/validation/constants.js +18 -0
  57. package/out/validation/constants.js.map +1 -1
  58. package/out/validation/import.d.ts +12 -2
  59. package/out/validation/import.js +95 -22
  60. package/out/validation/import.js.map +1 -1
  61. package/out/validation/maps.js +51 -2
  62. package/out/validation/maps.js.map +1 -1
  63. package/package.json +1 -1
  64. package/src/domain-lang-module.ts +6 -1
  65. package/src/domain-lang.langium +37 -13
  66. package/src/generated/ast.ts +24 -0
  67. package/src/generated/grammar.ts +22 -32
  68. package/src/index.ts +12 -6
  69. package/src/lsp/domain-lang-code-actions.ts +13 -8
  70. package/src/lsp/domain-lang-completion.ts +61 -13
  71. package/src/lsp/domain-lang-formatter.ts +28 -23
  72. package/src/lsp/domain-lang-index-manager.ts +447 -0
  73. package/src/lsp/domain-lang-scope-provider.ts +134 -0
  74. package/src/lsp/domain-lang-scope.ts +29 -17
  75. package/src/lsp/domain-lang-workspace-manager.ts +201 -53
  76. package/src/lsp/hover/domain-lang-hover.ts +332 -226
  77. package/src/lsp/hover/domain-lang-keywords.ts +129 -43
  78. package/src/lsp/manifest-diagnostics.ts +100 -59
  79. package/src/main.ts +258 -16
  80. package/src/services/import-resolver.ts +91 -12
  81. package/src/services/types.ts +2 -2
  82. package/src/services/workspace-manager.ts +101 -175
  83. package/src/utils/document-utils.ts +80 -0
  84. package/src/utils/import-utils.ts +2 -40
  85. package/src/utils/manifest-utils.ts +132 -0
  86. package/src/validation/constants.ts +24 -0
  87. package/src/validation/import.ts +107 -24
  88. package/src/validation/maps.ts +59 -2
  89. package/out/lsp/hover/ddd-pattern-explanations.d.ts +0 -50
  90. package/out/lsp/hover/ddd-pattern-explanations.js +0 -196
  91. package/out/lsp/hover/ddd-pattern-explanations.js.map +0 -1
  92. package/out/services/dependency-analyzer.d.ts +0 -58
  93. package/out/services/dependency-analyzer.js +0 -254
  94. package/out/services/dependency-analyzer.js.map +0 -1
  95. package/out/services/dependency-resolver.d.ts +0 -146
  96. package/out/services/dependency-resolver.js +0 -452
  97. package/out/services/dependency-resolver.js.map +0 -1
  98. package/out/services/git-url-resolver.browser.d.ts +0 -10
  99. package/out/services/git-url-resolver.browser.js +0 -19
  100. package/out/services/git-url-resolver.browser.js.map +0 -1
  101. package/out/services/git-url-resolver.d.ts +0 -158
  102. package/out/services/git-url-resolver.js +0 -416
  103. package/out/services/git-url-resolver.js.map +0 -1
  104. package/out/services/governance-validator.d.ts +0 -44
  105. package/out/services/governance-validator.js +0 -153
  106. package/out/services/governance-validator.js.map +0 -1
  107. package/out/services/semver.d.ts +0 -98
  108. package/out/services/semver.js +0 -195
  109. package/out/services/semver.js.map +0 -1
  110. package/src/lsp/hover/ddd-pattern-explanations.ts +0 -237
  111. package/src/services/dependency-analyzer.ts +0 -321
  112. package/src/services/dependency-resolver.ts +0 -551
  113. package/src/services/git-url-resolver.browser.ts +0 -26
  114. package/src/services/git-url-resolver.ts +0 -517
  115. package/src/services/governance-validator.ts +0 -177
  116. package/src/services/semver.ts +0 -213
@@ -1,10 +1,13 @@
1
- import { CstUtils, isAstNodeWithComment, isJSDoc, isReference, parseJSDoc } from 'langium';
1
+ import { 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
5
  import { effectiveClassification, effectiveTeam } from '../../sdk/resolution.js';
6
6
  /**
7
7
  * Provides hover information for DomainLang elements.
8
+ *
9
+ * Extends Langium's AstNodeHoverProvider with DDD-specific hover content
10
+ * for domains, bounded contexts, relationships, and other DSL constructs.
8
11
  */
9
12
  export class DomainLangHoverProvider extends AstNodeHoverProvider {
10
13
  constructor(services) {
@@ -13,6 +16,24 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
13
16
  this.commentProvider = services.documentation.CommentProvider;
14
17
  const domainServices = services;
15
18
  this.qualifiedNameProvider = domainServices.references.QualifiedNameProvider;
19
+ // Register type-specific generators
20
+ 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),
36
+ ];
16
37
  }
17
38
  async getHoverContent(document, params) {
18
39
  try {
@@ -25,33 +46,53 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
25
46
  if (!cstNode || cstNode.offset + cstNode.length <= offset) {
26
47
  return undefined;
27
48
  }
28
- const targetNodes = this.references.findDeclarations(cstNode);
29
- const targetNode = targetNodes?.[0];
30
- if (targetNode) {
31
- const content = await this.getAstNodeHoverContent(targetNode);
32
- if (content) {
33
- return { contents: { kind: 'markdown', value: content } };
34
- }
35
- }
36
- if (cstNode.astNode && ast.isThisRef(cstNode.astNode)) {
37
- const content = await this.getAstNodeHoverContent(cstNode.astNode);
38
- if (content) {
39
- return { contents: { kind: 'markdown', value: content } };
40
- }
41
- }
42
- if (cstNode.grammarSource?.$type === 'Keyword') {
43
- const keywordHover = this.getKeywordHoverContent(cstNode.grammarSource);
44
- if (keywordHover) {
45
- return keywordHover;
46
- }
47
- const explanation = keywordExplanations[cstNode.text.toLowerCase()];
48
- if (explanation) {
49
- return { contents: { kind: 'markdown', value: `💡 ${explanation}` } };
50
- }
49
+ // Try declaration hover first
50
+ const declarationHover = await this.tryGetDeclarationHover(cstNode);
51
+ if (declarationHover) {
52
+ return declarationHover;
51
53
  }
54
+ // Then try keyword hover
55
+ return await this.tryGetKeywordHover(cstNode);
52
56
  }
53
57
  catch (error) {
54
58
  console.error('Error in getHoverContent:', error);
59
+ return undefined;
60
+ }
61
+ }
62
+ /**
63
+ * Try to get hover for a declaration node (AST node).
64
+ */
65
+ async tryGetDeclarationHover(cstNode) {
66
+ if (!cstNode)
67
+ return undefined;
68
+ const targetNodes = this.references.findDeclarations(cstNode);
69
+ const targetNode = targetNodes?.[0];
70
+ if (targetNode) {
71
+ const content = await this.getAstNodeHoverContent(targetNode);
72
+ if (content) {
73
+ return { contents: { kind: 'markdown', value: content } };
74
+ }
75
+ }
76
+ if (cstNode.astNode && ast.isThisRef(cstNode.astNode)) {
77
+ const content = await this.getAstNodeHoverContent(cstNode.astNode);
78
+ if (content) {
79
+ return { contents: { kind: 'markdown', value: content } };
80
+ }
81
+ }
82
+ return undefined;
83
+ }
84
+ /**
85
+ * Try to get hover for a keyword node.
86
+ * Uses the keyword dictionary for all keywords.
87
+ */
88
+ async tryGetKeywordHover(cstNode) {
89
+ if (!cstNode || cstNode.grammarSource?.$type !== 'Keyword') {
90
+ return undefined;
91
+ }
92
+ // Use the keyword dictionary for hover content
93
+ const explanation = keywordExplanations[cstNode.text.toLowerCase()];
94
+ if (explanation) {
95
+ return { contents: { kind: 'markdown', value: `💡 ${explanation}` } };
55
96
  }
56
97
  return undefined;
57
98
  }
@@ -59,207 +100,255 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
59
100
  try {
60
101
  const content = this.documentationProvider.getDocumentation(node);
61
102
  const commentBlock = content ? `*${content}*\n\n` : '';
62
- if (ast.isDomain(node)) {
63
- const description = node.description ?? '';
64
- const vision = node.vision ?? '';
65
- const typeRef = node.type?.ref;
66
- const type = this.getRefName(typeRef);
67
- const signatureParts = ['Domain', node.name];
68
- if (node.parent?.ref?.name)
69
- signatureParts.push('in', node.parent.ref.name);
70
- const signature = `\`\`\`domain-lang\n${signatureParts.join(' ')}\n\`\`\``;
71
- const fields = [signature];
72
- if (description)
73
- fields.push(description);
74
- if (vision || type || node.parent)
75
- fields.push('---');
76
- if (vision)
77
- fields.push(`**Vision:** ${vision}`);
78
- if (type)
79
- fields.push(`**Type:** ${this.refLink(typeRef, type)}`);
80
- if (node.parent)
81
- fields.push(`**Parent:** ${this.refLink(node.parent)}`);
82
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
83
- `📁 **\`(domain)\` ${node.name}**\n\n` +
84
- fields.join('\n\n');
85
- }
86
- if (ast.isThisRef(node)) {
87
- let parent = node.$container;
88
- while (parent) {
89
- if (ast.isDomain(parent) ||
90
- ast.isBoundedContext(parent) ||
91
- ast.isNamespaceDeclaration(parent) ||
92
- ast.isContextMap(parent) ||
93
- ast.isDomainMap(parent) ||
94
- ast.isModel(parent)) {
95
- return this.getAstNodeHoverContent(parent);
96
- }
97
- parent = parent.$container;
98
- }
99
- return '*this* refers to the current context';
100
- }
101
- if (ast.isBoundedContext(node)) {
102
- const description = node.description ?? '';
103
- const classification = effectiveClassification(node);
104
- const team = effectiveTeam(node);
105
- const businessModel = node.businessModel?.ref;
106
- const evolution = node.evolution?.ref;
107
- const relationships = node.relationships ?? [];
108
- const terminology = node.terminology ?? [];
109
- const decisions = node.decisions ?? [];
110
- const classificationName = classification?.name;
111
- const teamName = team?.name;
112
- const signatureParts = ['boundedcontext', node.name];
113
- if (node.domain?.ref?.name)
114
- signatureParts.push('for', node.domain.ref.name);
115
- if (classificationName)
116
- signatureParts.push('as', classificationName);
117
- if (teamName)
118
- signatureParts.push('by', teamName);
119
- const signature = `\`\`\`domain-lang\n${signatureParts.join(' ')}\n\`\`\``;
120
- const fields = [signature];
121
- if (description)
122
- fields.push(description);
123
- if (classification || team || businessModel || evolution)
124
- fields.push('---');
125
- if (classification)
126
- fields.push(`🔖 **Classification:** ${this.refLink(classification)}`);
127
- if (team)
128
- fields.push(`đŸ‘Ĩ **Team:** ${this.refLink(team)}`);
129
- if (businessModel)
130
- fields.push(`đŸ’ŧ **Business Model:** ${this.refLink(businessModel)}`);
131
- if (evolution)
132
- fields.push(`🔄 **Evolution:** ${this.refLink(evolution)}`);
133
- if (relationships.length) {
134
- const relationshipLines = relationships.map(rel => `- ${this.refLink(rel.left?.link)} ${rel.arrow} ${this.refLink(rel.right?.link)}${rel.type ? ` \`${rel.type}\`` : ''}`);
135
- fields.push(`**Relationships:**\n${relationshipLines.join('\n')}`);
136
- }
137
- if (terminology.length) {
138
- const termLines = terminology.map(t => `- \`${t.name}\`: ${t.meaning ?? ''}`);
139
- fields.push(`**Terminology:**\n${termLines.join('\n')}`);
103
+ // Try each type-specific generator
104
+ for (const generator of this.hoverGenerators) {
105
+ const result = generator(node, commentBlock);
106
+ if (result !== undefined) {
107
+ return result;
140
108
  }
141
- if (decisions.length) {
142
- const decisionLines = decisions.map(d => `- \`${d.name}\`: ${d.value ?? ''}`);
143
- fields.push(`**Decisions:**\n${decisionLines.join('\n')}`);
144
- }
145
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
146
- `📕 **\`(boundedcontext)\` ${node.name}**\n\n` +
147
- fields.join('\n\n');
148
- }
149
- if (ast.isNamespaceDeclaration && ast.isNamespaceDeclaration(node)) {
150
- const fields = [`Contains ${node.children.length} elements.`];
151
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
152
- `🧭 **\`(namespace)\` ${node.name}**\n\n` +
153
- fields.join('\n\n');
154
- }
155
- if (ast.isContextMap && ast.isContextMap(node)) {
156
- const fields = [];
157
- if (node.boundedContexts.length) {
158
- fields.push('---');
159
- fields.push(`**📕 Bounded Contexts**\n${node.boundedContexts.flatMap(bc => bc.items.map(item => `- ${this.refLink(item.ref)}`)).join('\n')}`);
160
- }
161
- if (node.relationships.length) {
162
- fields.push('---');
163
- fields.push(`**🔗 Relationships**\n${node.relationships.map(r => `- ${this.refLink(r.left?.link)} ${r.arrow} ${this.refLink(r.right?.link)}${r.type ? ` \`${r.type}\`` : ''}`).join('\n')}`);
164
- }
165
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
166
- `đŸ—ēī¸ **\`(contextmap)\` ${node.name}**\n\n` +
167
- fields.join('\n\n');
168
- }
169
- if (ast.isDomainMap && ast.isDomainMap(node)) {
170
- const fields = [];
171
- if (node.domains.length) {
172
- fields.push('---');
173
- fields.push(`**📁 Domains**\n${node.domains.flatMap(d => d.items.map(item => `- ${this.refLink(item.ref)}`)).join('\n')}`);
174
- }
175
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
176
- `đŸ—ēī¸ **\`(domainmap)\` ${node.name}**\n\n` +
177
- fields.join('\n\n');
178
- }
179
- if (ast.isDecision && ast.isDecision(node)) {
180
- const fields = [];
181
- if (node.value) {
182
- fields.push('---');
183
- fields.push(`*Definition:* ${node.value}`);
184
- }
185
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
186
- `âš–ī¸ **\`(decision)\` ${node.name}**\n\n` +
187
- fields.join('\n\n');
188
- }
189
- if (ast.isPolicy && ast.isPolicy(node)) {
190
- const fields = [];
191
- if (node.value) {
192
- fields.push('---');
193
- fields.push(`*Definition:* ${node.value}`);
194
- }
195
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
196
- `📜 **\`(policy)\` ${node.name}**\n\n` +
197
- fields.join('\n\n');
198
- }
199
- if (ast.isBusinessRule && ast.isBusinessRule(node)) {
200
- const fields = [];
201
- if (node.value) {
202
- fields.push('---');
203
- fields.push(`*Definition:* ${node.value}`);
204
- }
205
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
206
- `âš–ī¸ **\`(rule)\` ${node.name}**\n\n` +
207
- fields.join('\n\n');
208
- }
209
- if (ast.isDomainTerm && ast.isDomainTerm(node)) {
210
- const fields = [];
211
- if (node.meaning) {
212
- fields.push('---');
213
- fields.push(`*${node.meaning}*`);
214
- }
215
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
216
- `đŸ—ī¸ **\`(term)\` ${node.name}**\n\n` +
217
- fields.join('\n\n');
218
- }
219
- if (ast.isTeam && ast.isTeam(node)) {
220
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
221
- `đŸ‘Ĩ **\`(team)\` ${node.name}**`;
222
- }
223
- if (ast.isClassification && ast.isClassification(node)) {
224
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
225
- `đŸˇī¸ **\`(classification)\` ${node.name}**`;
226
- }
227
- if (ast.isMetadata && ast.isMetadata(node)) {
228
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
229
- `🔖 **\`(metadata)\` ${node.name}**`;
230
- }
231
- if (ast.isRelationship && ast.isRelationship(node)) {
232
- const leftPatterns = node.leftPatterns.join(', ');
233
- const rightPatterns = node.rightPatterns.join(', ');
234
- const fields = [];
235
- fields.push(`${this.refLink(node.left.link)} ${node.arrow} ${this.refLink(node.right.link)}`);
236
- if (node.type)
237
- fields.push(`**Type:** \`${node.type}\``);
238
- if (leftPatterns)
239
- fields.push(`**Left patterns:** ${leftPatterns}`);
240
- if (rightPatterns)
241
- fields.push(`**Right patterns:** ${rightPatterns}`);
242
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
243
- `🔗 **\`(relationship)\`**\n\n` +
244
- fields.join('\n\n');
245
109
  }
246
- if (ast.isImportStatement && ast.isImportStatement(node)) {
247
- const fields = [];
248
- fields.push(`**URI:** \`${node.uri}\``);
249
- if (node.alias)
250
- fields.push(`**Alias:** \`${node.alias}\``);
251
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
252
- `đŸ“Ļ **\`(import)\`**\n\n` +
253
- fields.join('\n\n');
254
- }
255
- const title = ast.isType(node) ? node.name : node.$type.toLowerCase();
256
- return (commentBlock ? `${commentBlock}\n\n---\n\n` : '') +
257
- `â„šī¸ **\`(${node.$type.toLowerCase()})\`${ast.isType(node) ? ` ${title}` : ''}**`;
110
+ // Default fallback for unknown types
111
+ return this.getDefaultHover(node, commentBlock);
258
112
  }
259
113
  catch (error) {
260
114
  console.error('Error in getAstNodeHoverContent:', error);
261
- return 'Unable to display complete information.';
115
+ return undefined;
116
+ }
117
+ }
118
+ // ============================================================
119
+ // Type-specific hover generators
120
+ // ============================================================
121
+ getDomainHover(node, commentBlock) {
122
+ if (!ast.isDomain(node))
123
+ 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);
144
+ }
145
+ getThisRefHover(node, _commentBlock) {
146
+ if (!ast.isThisRef(node))
147
+ return undefined;
148
+ let parent = node.$container;
149
+ while (parent) {
150
+ if (ast.isDomain(parent) ||
151
+ ast.isBoundedContext(parent) ||
152
+ ast.isNamespaceDeclaration(parent) ||
153
+ ast.isContextMap(parent) ||
154
+ ast.isDomainMap(parent) ||
155
+ ast.isModel(parent)) {
156
+ return this.getAstNodeHoverContent(parent);
157
+ }
158
+ parent = parent.$container;
159
+ }
160
+ return '*this* refers to the current context';
161
+ }
162
+ getBoundedContextHover(node, commentBlock) {
163
+ if (!ast.isBoundedContext(node))
164
+ 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
+ }
210
+ getNamespaceHover(node, commentBlock) {
211
+ if (!ast.isNamespaceDeclaration(node))
212
+ return undefined;
213
+ const fields = [`Contains ${node.children.length} elements.`];
214
+ return this.formatHover(commentBlock, '🧭', 'namespace', node.name, fields);
215
+ }
216
+ getContextMapHover(node, commentBlock) {
217
+ if (!ast.isContextMap(node))
218
+ return undefined;
219
+ const fields = [];
220
+ if (node.boundedContexts.length > 0) {
221
+ fields.push('---');
222
+ const items = node.boundedContexts.flatMap(bc => bc.items.map(item => `- ${this.refLink(item.ref)}`));
223
+ fields.push(`**📕 Bounded Contexts**\n${items.join('\n')}`);
224
+ }
225
+ if (node.relationships.length > 0) {
226
+ fields.push('---');
227
+ const lines = node.relationships.map(r => this.formatRelationshipLine(r));
228
+ fields.push(`**🔗 Relationships**\n${lines.join('\n')}`);
229
+ }
230
+ return this.formatHover(commentBlock, 'đŸ—ēī¸', 'contextmap', node.name, fields);
231
+ }
232
+ getDomainMapHover(node, commentBlock) {
233
+ if (!ast.isDomainMap(node))
234
+ return undefined;
235
+ const fields = [];
236
+ if (node.domains.length > 0) {
237
+ fields.push('---');
238
+ const items = node.domains.flatMap(d => d.items.map(item => `- ${this.refLink(item.ref)}`));
239
+ fields.push(`**📁 Domains**\n${items.join('\n')}`);
240
+ }
241
+ return this.formatHover(commentBlock, 'đŸ—ēī¸', 'domainmap', node.name, fields);
242
+ }
243
+ getDecisionHover(node, commentBlock) {
244
+ if (!ast.isDecision(node))
245
+ return undefined;
246
+ const fields = [];
247
+ if (node.value) {
248
+ fields.push('---', `*Definition:* ${node.value}`);
249
+ }
250
+ return this.formatHover(commentBlock, 'âš–ī¸', 'decision', node.name, fields);
251
+ }
252
+ getPolicyHover(node, commentBlock) {
253
+ if (!ast.isPolicy(node))
254
+ return undefined;
255
+ const fields = [];
256
+ if (node.value) {
257
+ fields.push('---', `*Definition:* ${node.value}`);
262
258
  }
259
+ return this.formatHover(commentBlock, '📜', 'policy', node.name, fields);
260
+ }
261
+ getBusinessRuleHover(node, commentBlock) {
262
+ if (!ast.isBusinessRule(node))
263
+ return undefined;
264
+ const fields = [];
265
+ if (node.value) {
266
+ fields.push('---', `*Definition:* ${node.value}`);
267
+ }
268
+ return this.formatHover(commentBlock, 'âš–ī¸', 'rule', node.name, fields);
269
+ }
270
+ getDomainTermHover(node, commentBlock) {
271
+ if (!ast.isDomainTerm(node))
272
+ return undefined;
273
+ const fields = [];
274
+ if (node.meaning) {
275
+ fields.push('---', `*${node.meaning}*`);
276
+ }
277
+ return this.formatHover(commentBlock, 'đŸ—ī¸', 'term', node.name, fields);
278
+ }
279
+ getTeamHover(node, commentBlock) {
280
+ if (!ast.isTeam(node))
281
+ return undefined;
282
+ return this.formatHover(commentBlock, 'đŸ‘Ĩ', 'team', node.name, []);
283
+ }
284
+ getClassificationHover(node, commentBlock) {
285
+ if (!ast.isClassification(node))
286
+ return undefined;
287
+ return this.formatHover(commentBlock, 'đŸˇī¸', 'classification', node.name, []);
288
+ }
289
+ getMetadataHover(node, commentBlock) {
290
+ if (!ast.isMetadata(node))
291
+ return undefined;
292
+ return this.formatHover(commentBlock, '🔖', 'metadata', node.name, []);
293
+ }
294
+ getRelationshipHover(node, commentBlock) {
295
+ if (!ast.isRelationship(node))
296
+ return undefined;
297
+ const leftPatterns = node.leftPatterns.join(', ');
298
+ const rightPatterns = node.rightPatterns.join(', ');
299
+ const fields = [
300
+ `${this.refLink(node.left.link)} ${node.arrow} ${this.refLink(node.right.link)}`
301
+ ];
302
+ if (node.type)
303
+ fields.push(`**Type:** \`${node.type}\``);
304
+ if (leftPatterns)
305
+ fields.push(`**Left patterns:** ${leftPatterns}`);
306
+ if (rightPatterns)
307
+ fields.push(`**Right patterns:** ${rightPatterns}`);
308
+ return this.formatHover(commentBlock, '🔗', 'relationship', undefined, fields);
309
+ }
310
+ getImportHover(node, commentBlock) {
311
+ if (!ast.isImportStatement(node))
312
+ return undefined;
313
+ const fields = [`**URI:** \`${node.uri}\``];
314
+ if (node.alias)
315
+ fields.push(`**Alias:** \`${node.alias}\``);
316
+ return this.formatHover(commentBlock, 'đŸ“Ļ', 'import', undefined, fields);
317
+ }
318
+ getDefaultHover(node, commentBlock) {
319
+ const title = ast.isType(node) ? node.name : node.$type.toLowerCase();
320
+ const typeName = node.$type.toLowerCase();
321
+ const name = ast.isType(node) ? ` ${title}` : '';
322
+ const separator = commentBlock ? `${commentBlock}\n\n---\n\n` : '';
323
+ return `${separator}â„šī¸ **\`(${typeName})\`${name}**`;
324
+ }
325
+ // ============================================================
326
+ // Helper methods
327
+ // ============================================================
328
+ /**
329
+ * Formats a relationship line for hover display.
330
+ */
331
+ formatRelationshipLine(rel) {
332
+ const left = this.refLink(rel.left?.link);
333
+ const right = this.refLink(rel.right?.link);
334
+ const type = rel.type ? ` \`${rel.type}\`` : '';
335
+ return `- ${left} ${rel.arrow} ${right}${type}`;
336
+ }
337
+ /**
338
+ * Wraps text in a domain-lang code block.
339
+ */
340
+ codeBlock(text) {
341
+ return `\`\`\`domain-lang\n${text}\n\`\`\``;
342
+ }
343
+ /**
344
+ * Formats the final hover content with consistent structure.
345
+ */
346
+ 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}`;
263
352
  }
264
353
  getRefName(ref) {
265
354
  const node = isReference(ref) ? ref.ref : ref;
@@ -285,18 +374,5 @@ export class DomainLangHoverProvider extends AstNodeHoverProvider {
285
374
  }
286
375
  return '';
287
376
  }
288
- getKeywordHoverContent(node) {
289
- let comment = isAstNodeWithComment(node) ? node.$comment : undefined;
290
- if (!comment) {
291
- comment = CstUtils.findCommentNode(node.$cstNode, ['ML_COMMENT'])?.text;
292
- }
293
- if (comment && isJSDoc(comment)) {
294
- const markdown = parseJSDoc(comment).toMarkdown();
295
- if (markdown) {
296
- return { contents: { kind: 'markdown', value: markdown } };
297
- }
298
- }
299
- return undefined;
300
- }
301
377
  }
302
378
  //# 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":"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"}