@domainlang/language 0.6.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.
- package/README.md +1 -1
- package/out/domain-lang-module.d.ts +2 -0
- package/out/domain-lang-module.js +23 -2
- package/out/domain-lang-module.js.map +1 -1
- package/out/lsp/domain-lang-completion.d.ts +142 -1
- package/out/lsp/domain-lang-completion.js +620 -22
- package/out/lsp/domain-lang-completion.js.map +1 -1
- package/out/lsp/domain-lang-document-symbol-provider.d.ts +79 -0
- package/out/lsp/domain-lang-document-symbol-provider.js +210 -0
- package/out/lsp/domain-lang-document-symbol-provider.js.map +1 -0
- package/out/lsp/domain-lang-index-manager.d.ts +98 -1
- package/out/lsp/domain-lang-index-manager.js +214 -7
- package/out/lsp/domain-lang-index-manager.js.map +1 -1
- package/out/lsp/domain-lang-node-kind-provider.d.ts +27 -0
- package/out/lsp/domain-lang-node-kind-provider.js +87 -0
- package/out/lsp/domain-lang-node-kind-provider.js.map +1 -0
- package/out/lsp/domain-lang-scope-provider.d.ts +100 -0
- package/out/lsp/domain-lang-scope-provider.js +170 -0
- package/out/lsp/domain-lang-scope-provider.js.map +1 -0
- package/out/lsp/domain-lang-workspace-manager.d.ts +46 -0
- package/out/lsp/domain-lang-workspace-manager.js +148 -4
- package/out/lsp/domain-lang-workspace-manager.js.map +1 -1
- package/out/lsp/hover/domain-lang-hover.d.ts +16 -6
- package/out/lsp/hover/domain-lang-hover.js +160 -134
- package/out/lsp/hover/domain-lang-hover.js.map +1 -1
- package/out/lsp/hover/hover-builders.d.ts +57 -0
- package/out/lsp/hover/hover-builders.js +171 -0
- package/out/lsp/hover/hover-builders.js.map +1 -0
- package/out/main.js +116 -20
- package/out/main.js.map +1 -1
- package/out/sdk/index.d.ts +2 -1
- package/out/sdk/index.js +1 -1
- package/out/sdk/index.js.map +1 -1
- package/out/sdk/loader-node.js +1 -1
- package/out/sdk/loader-node.js.map +1 -1
- package/out/sdk/loader.d.ts +55 -2
- package/out/sdk/loader.js +87 -28
- package/out/sdk/loader.js.map +1 -1
- package/out/sdk/query.js +14 -11
- package/out/sdk/query.js.map +1 -1
- package/out/services/import-resolver.d.ts +29 -6
- package/out/services/import-resolver.js +48 -9
- package/out/services/import-resolver.js.map +1 -1
- package/out/services/package-boundary-detector.d.ts +101 -0
- package/out/services/package-boundary-detector.js +211 -0
- package/out/services/package-boundary-detector.js.map +1 -0
- package/out/services/performance-optimizer.js +6 -2
- package/out/services/performance-optimizer.js.map +1 -1
- package/out/services/types.d.ts +24 -0
- package/out/services/types.js.map +1 -1
- package/out/services/workspace-manager.d.ts +73 -6
- package/out/services/workspace-manager.js +210 -57
- package/out/services/workspace-manager.js.map +1 -1
- package/out/utils/import-utils.d.ts +9 -6
- package/out/utils/import-utils.js +26 -15
- package/out/utils/import-utils.js.map +1 -1
- package/out/validation/constants.d.ts +20 -0
- package/out/validation/constants.js +39 -3
- package/out/validation/constants.js.map +1 -1
- package/out/validation/import.d.ts +22 -1
- package/out/validation/import.js +104 -16
- package/out/validation/import.js.map +1 -1
- package/out/validation/maps.js +101 -3
- package/out/validation/maps.js.map +1 -1
- package/package.json +5 -5
- package/src/domain-lang-module.ts +26 -3
- package/src/lsp/domain-lang-completion.ts +736 -27
- package/src/lsp/domain-lang-document-symbol-provider.ts +254 -0
- package/src/lsp/domain-lang-index-manager.ts +250 -7
- package/src/lsp/domain-lang-node-kind-provider.ts +119 -0
- package/src/lsp/domain-lang-scope-provider.ts +250 -0
- package/src/lsp/domain-lang-workspace-manager.ts +187 -4
- package/src/lsp/hover/domain-lang-hover.ts +189 -131
- package/src/lsp/hover/hover-builders.ts +208 -0
- package/src/main.ts +156 -23
- package/src/sdk/index.ts +2 -1
- package/src/sdk/loader-node.ts +2 -1
- package/src/sdk/loader.ts +125 -34
- package/src/sdk/query.ts +15 -11
- package/src/services/import-resolver.ts +60 -9
- package/src/services/package-boundary-detector.ts +238 -0
- package/src/services/performance-optimizer.ts +6 -2
- package/src/services/types.ts +25 -0
- package/src/services/workspace-manager.ts +259 -62
- package/src/utils/import-utils.ts +27 -15
- package/src/validation/constants.ts +47 -6
- package/src/validation/import.ts +124 -16
- package/src/validation/maps.ts +118 -4
|
@@ -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 {
|
|
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
|
|
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
|
-
|
|
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
|
|
125
|
-
const
|
|
126
|
-
const
|
|
127
|
-
|
|
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
|
-
|
|
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
|
|
166
|
-
const
|
|
167
|
-
const
|
|
168
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
366
|
+
refLink(ref, label) {
|
|
354
367
|
const node = isReference(ref) ? ref.ref : ref;
|
|
355
|
-
if (node
|
|
356
|
-
return
|
|
368
|
+
if (!node || !ast.isType(node)) {
|
|
369
|
+
return label ? `\`${label}\`` : '';
|
|
357
370
|
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
refLink(ref, label) {
|
|
371
|
+
// Get display name (use label if provided, otherwise qualified name)
|
|
372
|
+
let linkLabel;
|
|
361
373
|
if (label) {
|
|
362
|
-
|
|
374
|
+
linkLabel = label;
|
|
363
375
|
}
|
|
364
|
-
|
|
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
|
-
|
|
381
|
+
linkLabel = node.name;
|
|
372
382
|
}
|
|
373
|
-
return `[${linkLabel}](#${encodeURIComponent(linkLabel)})`;
|
|
374
383
|
}
|
|
375
|
-
|
|
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":"AAQA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,GAAG,MAAM,wBAAwB,CAAC;AAG9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAQjF;;;;;GAKG;AACH,MAAM,OAAO,uBAAwB,SAAQ,oBAAoB;IAW7D,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;QAE7E,oCAAoC;QACpC,IAAI,CAAC,eAAe,GAAG;YACnB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC;YACrD,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;YACtD,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC;YAC7D,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC;YACxD,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC;YACzD,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC;YACxD,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC;YACvD,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC;YACrD,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC;YAC3D,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC;YACzD,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;YACnD,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC;YAC7D,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC;YACvD,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC;YAC3D,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC;SACxD,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,CAAC,CAAC;YACpE,IAAI,gBAAgB,EAAE,CAAC;gBACnB,OAAO,gBAAgB,CAAC;YAC5B,CAAC;YAED,yBAAyB;YACzB,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAClD,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;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAAC,OAAgE;QACjG,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAE/B,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,CAAC,CAAC;YAC9D,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,CAAC,CAAC;YACnE,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,KAAK,CAAC,kBAAkB,CAAC,OAAgE;QAC7F,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;QAC1C,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,mCAAmC;YACnC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAC7C,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,CAAC,CAAC;QACpD,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,+DAA+D;IAC/D,iCAAiC;IACjC,+DAA+D;IAEvD,cAAc,CAAC,IAAa,EAAE,YAAoB;QACtD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAE1C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEtC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI;YAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAa,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;QACjD,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEzE,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;IAEO,eAAe,CAAC,IAAa,EAAE,aAAqB;QACxD,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,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAuB,CAAC;YACrE,CAAC;YACD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,CAAC;QAED,OAAO,sCAAsC,CAAC;IAClD,CAAC;IAEO,sBAAsB,CAAC,IAAa,EAAE,YAAoB;QAC9D,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAElD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QACvC,MAAM,kBAAkB,GAAG,cAAc,EAAE,IAAI,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,EAAE,IAAI,CAAC;QAE5B,MAAM,cAAc,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI;YAAE,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7E,IAAI,kBAAkB;YAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACtE,IAAI,QAAQ;YAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAa,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,cAAc,IAAI,IAAI,IAAI,aAAa,IAAI,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7E,IAAI,cAAc;YAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,aAAa;YAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACxF,IAAI,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE3E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;YACzE,MAAM,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC;IAEO,iBAAiB,CAAC,IAAa,EAAE,YAAoB;QACzD,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;QAC1D,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;QACzD,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;QACxD,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;QACtD,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;QAC5D,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;QAC1D,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;QACpD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QACxC,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IAEO,sBAAsB,CAAC,IAAa,EAAE,YAAoB;QAC9D,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAClD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAClF,CAAC;IAEO,gBAAgB,CAAC,IAAa,EAAE,YAAoB;QACxD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEO,oBAAoB,CAAC,IAAa,EAAE,YAAoB;QAC5D,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;QACtD,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;QACvD,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;;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;;OAEG;IACK,SAAS,CAAC,IAAY;QAC1B,OAAO,sBAAsB,IAAI,UAAU,CAAC;IAChD,CAAC;IAED;;OAEG;IACK,WAAW,CACf,YAAoB,EACpB,KAAa,EACb,QAAgB,EAChB,IAAwB,EACxB,MAAgB;QAEhB,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,GAAG,KAAK,SAAS,QAAQ,MAAM,WAAW,IAAI,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;IAC1C,CAAC;IAEO,UAAU,CAAC,GAA+C;QAC9D,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAEO,OAAO,CAAC,GAA+C,EAAE,KAAc;QAC3E,IAAI,KAAK,EAAE,CAAC;YACR,OAAO,IAAI,KAAK,MAAM,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAE9C,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;YAC1B,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,mBAAmB;YACvB,CAAC;YACD,OAAO,IAAI,SAAS,MAAM,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC;QAC/D,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CAEJ"}
|
|
1
|
+
{"version":3,"file":"domain-lang-hover.js","sourceRoot":"","sources":["../../../src/lsp/hover/domain-lang-hover.ts"],"names":[],"mappings":"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"}
|
|
@@ -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[];
|