@domainlang/language 0.1.20
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 +163 -0
- package/out/ast-augmentation.d.ts +6 -0
- package/out/ast-augmentation.js +2 -0
- package/out/ast-augmentation.js.map +1 -0
- package/out/domain-lang-module.d.ts +57 -0
- package/out/domain-lang-module.js +67 -0
- package/out/domain-lang-module.js.map +1 -0
- package/out/generated/ast.d.ts +759 -0
- package/out/generated/ast.js +556 -0
- package/out/generated/ast.js.map +1 -0
- package/out/generated/grammar.d.ts +6 -0
- package/out/generated/grammar.js +2407 -0
- package/out/generated/grammar.js.map +1 -0
- package/out/generated/module.d.ts +13 -0
- package/out/generated/module.js +21 -0
- package/out/generated/module.js.map +1 -0
- package/out/index.d.ts +16 -0
- package/out/index.js +22 -0
- package/out/index.js.map +1 -0
- package/out/lsp/domain-lang-code-actions.d.ts +55 -0
- package/out/lsp/domain-lang-code-actions.js +143 -0
- package/out/lsp/domain-lang-code-actions.js.map +1 -0
- package/out/lsp/domain-lang-completion.d.ts +37 -0
- package/out/lsp/domain-lang-completion.js +452 -0
- package/out/lsp/domain-lang-completion.js.map +1 -0
- package/out/lsp/domain-lang-formatter.d.ts +15 -0
- package/out/lsp/domain-lang-formatter.js +43 -0
- package/out/lsp/domain-lang-formatter.js.map +1 -0
- package/out/lsp/domain-lang-naming.d.ts +34 -0
- package/out/lsp/domain-lang-naming.js +49 -0
- package/out/lsp/domain-lang-naming.js.map +1 -0
- package/out/lsp/domain-lang-scope.d.ts +59 -0
- package/out/lsp/domain-lang-scope.js +102 -0
- package/out/lsp/domain-lang-scope.js.map +1 -0
- package/out/lsp/domain-lang-workspace-manager.d.ts +21 -0
- package/out/lsp/domain-lang-workspace-manager.js +93 -0
- package/out/lsp/domain-lang-workspace-manager.js.map +1 -0
- package/out/lsp/hover/ddd-pattern-explanations.d.ts +50 -0
- package/out/lsp/hover/ddd-pattern-explanations.js +196 -0
- package/out/lsp/hover/ddd-pattern-explanations.js.map +1 -0
- package/out/lsp/hover/domain-lang-hover.d.ts +19 -0
- package/out/lsp/hover/domain-lang-hover.js +302 -0
- package/out/lsp/hover/domain-lang-hover.js.map +1 -0
- package/out/lsp/hover/domain-lang-keywords.d.ts +13 -0
- package/out/lsp/hover/domain-lang-keywords.js +47 -0
- package/out/lsp/hover/domain-lang-keywords.js.map +1 -0
- package/out/lsp/manifest-diagnostics.d.ts +82 -0
- package/out/lsp/manifest-diagnostics.js +230 -0
- package/out/lsp/manifest-diagnostics.js.map +1 -0
- package/out/main-browser.d.ts +1 -0
- package/out/main-browser.js +11 -0
- package/out/main-browser.js.map +1 -0
- package/out/main.d.ts +1 -0
- package/out/main.js +74 -0
- package/out/main.js.map +1 -0
- package/out/sdk/ast-augmentation.d.ts +136 -0
- package/out/sdk/ast-augmentation.js +62 -0
- package/out/sdk/ast-augmentation.js.map +1 -0
- package/out/sdk/index.d.ts +94 -0
- package/out/sdk/index.js +97 -0
- package/out/sdk/index.js.map +1 -0
- package/out/sdk/indexes.d.ts +16 -0
- package/out/sdk/indexes.js +97 -0
- package/out/sdk/indexes.js.map +1 -0
- package/out/sdk/loader-node.d.ts +51 -0
- package/out/sdk/loader-node.js +119 -0
- package/out/sdk/loader-node.js.map +1 -0
- package/out/sdk/loader.d.ts +49 -0
- package/out/sdk/loader.js +85 -0
- package/out/sdk/loader.js.map +1 -0
- package/out/sdk/patterns.d.ts +93 -0
- package/out/sdk/patterns.js +123 -0
- package/out/sdk/patterns.js.map +1 -0
- package/out/sdk/query.d.ts +90 -0
- package/out/sdk/query.js +679 -0
- package/out/sdk/query.js.map +1 -0
- package/out/sdk/resolution.d.ts +52 -0
- package/out/sdk/resolution.js +68 -0
- package/out/sdk/resolution.js.map +1 -0
- package/out/sdk/types.d.ts +280 -0
- package/out/sdk/types.js +8 -0
- package/out/sdk/types.js.map +1 -0
- package/out/services/dependency-analyzer.d.ts +58 -0
- package/out/services/dependency-analyzer.js +254 -0
- package/out/services/dependency-analyzer.js.map +1 -0
- package/out/services/dependency-resolver.d.ts +146 -0
- package/out/services/dependency-resolver.js +452 -0
- package/out/services/dependency-resolver.js.map +1 -0
- package/out/services/git-url-resolver.browser.d.ts +10 -0
- package/out/services/git-url-resolver.browser.js +19 -0
- package/out/services/git-url-resolver.browser.js.map +1 -0
- package/out/services/git-url-resolver.d.ts +158 -0
- package/out/services/git-url-resolver.js +416 -0
- package/out/services/git-url-resolver.js.map +1 -0
- package/out/services/governance-validator.d.ts +44 -0
- package/out/services/governance-validator.js +153 -0
- package/out/services/governance-validator.js.map +1 -0
- package/out/services/import-resolver.d.ts +77 -0
- package/out/services/import-resolver.js +240 -0
- package/out/services/import-resolver.js.map +1 -0
- package/out/services/performance-optimizer.d.ts +60 -0
- package/out/services/performance-optimizer.js +140 -0
- package/out/services/performance-optimizer.js.map +1 -0
- package/out/services/relationship-inference.d.ts +11 -0
- package/out/services/relationship-inference.js +98 -0
- package/out/services/relationship-inference.js.map +1 -0
- package/out/services/semver.d.ts +98 -0
- package/out/services/semver.js +195 -0
- package/out/services/semver.js.map +1 -0
- package/out/services/types.d.ts +340 -0
- package/out/services/types.js +46 -0
- package/out/services/types.js.map +1 -0
- package/out/services/workspace-manager.d.ts +123 -0
- package/out/services/workspace-manager.js +489 -0
- package/out/services/workspace-manager.js.map +1 -0
- package/out/syntaxes/domain-lang.monarch.d.ts +76 -0
- package/out/syntaxes/domain-lang.monarch.js +29 -0
- package/out/syntaxes/domain-lang.monarch.js.map +1 -0
- package/out/utils/import-utils.d.ts +49 -0
- package/out/utils/import-utils.js +128 -0
- package/out/utils/import-utils.js.map +1 -0
- package/out/validation/bounded-context.d.ts +11 -0
- package/out/validation/bounded-context.js +79 -0
- package/out/validation/bounded-context.js.map +1 -0
- package/out/validation/classification.d.ts +3 -0
- package/out/validation/classification.js +3 -0
- package/out/validation/classification.js.map +1 -0
- package/out/validation/constants.d.ts +180 -0
- package/out/validation/constants.js +235 -0
- package/out/validation/constants.js.map +1 -0
- package/out/validation/domain-lang-validator.d.ts +2 -0
- package/out/validation/domain-lang-validator.js +27 -0
- package/out/validation/domain-lang-validator.js.map +1 -0
- package/out/validation/domain.d.ts +11 -0
- package/out/validation/domain.js +63 -0
- package/out/validation/domain.js.map +1 -0
- package/out/validation/import.d.ts +68 -0
- package/out/validation/import.js +237 -0
- package/out/validation/import.js.map +1 -0
- package/out/validation/manifest.d.ts +144 -0
- package/out/validation/manifest.js +327 -0
- package/out/validation/manifest.js.map +1 -0
- package/out/validation/maps.d.ts +21 -0
- package/out/validation/maps.js +60 -0
- package/out/validation/maps.js.map +1 -0
- package/out/validation/metadata.d.ts +7 -0
- package/out/validation/metadata.js +16 -0
- package/out/validation/metadata.js.map +1 -0
- package/out/validation/model.d.ts +12 -0
- package/out/validation/model.js +29 -0
- package/out/validation/model.js.map +1 -0
- package/out/validation/relationships.d.ts +12 -0
- package/out/validation/relationships.js +94 -0
- package/out/validation/relationships.js.map +1 -0
- package/out/validation/shared.d.ts +6 -0
- package/out/validation/shared.js +12 -0
- package/out/validation/shared.js.map +1 -0
- package/package.json +110 -0
- package/src/ast-augmentation.ts +5 -0
- package/src/domain-lang-module.ts +112 -0
- package/src/domain-lang.langium +351 -0
- package/src/generated/ast.ts +986 -0
- package/src/generated/grammar.ts +2409 -0
- package/src/generated/module.ts +25 -0
- package/src/index.ts +24 -0
- package/src/lsp/domain-lang-code-actions.ts +189 -0
- package/src/lsp/domain-lang-completion.ts +514 -0
- package/src/lsp/domain-lang-formatter.ts +51 -0
- package/src/lsp/domain-lang-naming.ts +56 -0
- package/src/lsp/domain-lang-scope.ts +137 -0
- package/src/lsp/domain-lang-workspace-manager.ts +104 -0
- package/src/lsp/hover/ddd-pattern-explanations.ts +237 -0
- package/src/lsp/hover/domain-lang-hover.ts +338 -0
- package/src/lsp/hover/domain-lang-keywords.ts +50 -0
- package/src/lsp/manifest-diagnostics.ts +290 -0
- package/src/main-browser.ts +15 -0
- package/src/main.ts +85 -0
- package/src/sdk/README.md +297 -0
- package/src/sdk/ast-augmentation.ts +157 -0
- package/src/sdk/index.ts +126 -0
- package/src/sdk/indexes.ts +155 -0
- package/src/sdk/loader-node.ts +146 -0
- package/src/sdk/loader.ts +99 -0
- package/src/sdk/patterns.ts +147 -0
- package/src/sdk/query.ts +802 -0
- package/src/sdk/resolution.ts +78 -0
- package/src/sdk/types.ts +323 -0
- package/src/services/dependency-analyzer.ts +321 -0
- package/src/services/dependency-resolver.ts +551 -0
- package/src/services/git-url-resolver.browser.ts +26 -0
- package/src/services/git-url-resolver.ts +517 -0
- package/src/services/governance-validator.ts +177 -0
- package/src/services/import-resolver.ts +292 -0
- package/src/services/performance-optimizer.ts +170 -0
- package/src/services/relationship-inference.ts +121 -0
- package/src/services/semver.ts +213 -0
- package/src/services/types.ts +415 -0
- package/src/services/workspace-manager.ts +607 -0
- package/src/syntaxes/domain-lang.monarch.ts +29 -0
- package/src/utils/import-utils.ts +152 -0
- package/src/validation/bounded-context.ts +99 -0
- package/src/validation/classification.ts +5 -0
- package/src/validation/constants.ts +304 -0
- package/src/validation/domain-lang-validator.ts +33 -0
- package/src/validation/domain.ts +77 -0
- package/src/validation/import.ts +295 -0
- package/src/validation/manifest.ts +439 -0
- package/src/validation/maps.ts +76 -0
- package/src/validation/metadata.ts +18 -0
- package/src/validation/model.ts +37 -0
- package/src/validation/relationships.ts +154 -0
- package/src/validation/shared.ts +14 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { CstUtils, isAstNodeWithComment, isJSDoc, isReference, parseJSDoc } from 'langium';
|
|
2
|
+
import { AstNodeHoverProvider } from 'langium/lsp';
|
|
3
|
+
import * as ast from '../../generated/ast.js';
|
|
4
|
+
import { keywordExplanations } from './domain-lang-keywords.js';
|
|
5
|
+
import { effectiveClassification, effectiveTeam } from '../../sdk/resolution.js';
|
|
6
|
+
/**
|
|
7
|
+
* Provides hover information for DomainLang elements.
|
|
8
|
+
*/
|
|
9
|
+
export class DomainLangHoverProvider extends AstNodeHoverProvider {
|
|
10
|
+
constructor(services) {
|
|
11
|
+
super(services);
|
|
12
|
+
this.documentationProvider = services.documentation.DocumentationProvider;
|
|
13
|
+
this.commentProvider = services.documentation.CommentProvider;
|
|
14
|
+
const domainServices = services;
|
|
15
|
+
this.qualifiedNameProvider = domainServices.references.QualifiedNameProvider;
|
|
16
|
+
}
|
|
17
|
+
async getHoverContent(document, params) {
|
|
18
|
+
try {
|
|
19
|
+
const rootNode = document.parseResult?.value?.$cstNode;
|
|
20
|
+
if (!rootNode) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
const offset = document.textDocument.offsetAt(params.position);
|
|
24
|
+
const cstNode = CstUtils.findDeclarationNodeAtOffset(rootNode, offset, this.grammarConfig.nameRegexp);
|
|
25
|
+
if (!cstNode || cstNode.offset + cstNode.length <= offset) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
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
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error('Error in getHoverContent:', error);
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
getAstNodeHoverContent(node) {
|
|
59
|
+
try {
|
|
60
|
+
const content = this.documentationProvider.getDocumentation(node);
|
|
61
|
+
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')}`);
|
|
140
|
+
}
|
|
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
|
+
}
|
|
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}` : ''}**`;
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
console.error('Error in getAstNodeHoverContent:', error);
|
|
261
|
+
return 'Unable to display complete information.';
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
getRefName(ref) {
|
|
265
|
+
const node = isReference(ref) ? ref.ref : ref;
|
|
266
|
+
if (node && ast.isType(node)) {
|
|
267
|
+
return node.name;
|
|
268
|
+
}
|
|
269
|
+
return '';
|
|
270
|
+
}
|
|
271
|
+
refLink(ref, label) {
|
|
272
|
+
if (label) {
|
|
273
|
+
return `[${label}](#${encodeURIComponent(label)})`;
|
|
274
|
+
}
|
|
275
|
+
const node = isReference(ref) ? ref.ref : ref;
|
|
276
|
+
if (node && ast.isType(node)) {
|
|
277
|
+
let linkLabel = node.name;
|
|
278
|
+
try {
|
|
279
|
+
linkLabel = this.qualifiedNameProvider.getQualifiedName(node.$container, node.name);
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
// fallback to name
|
|
283
|
+
}
|
|
284
|
+
return `[${linkLabel}](#${encodeURIComponent(linkLabel)})`;
|
|
285
|
+
}
|
|
286
|
+
return '';
|
|
287
|
+
}
|
|
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
|
+
}
|
|
302
|
+
//# sourceMappingURL=domain-lang-hover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyword explanations for DomainLang hover documentation.
|
|
3
|
+
*
|
|
4
|
+
* This dictionary provides fallback hover content for keywords that don't have
|
|
5
|
+
* JSDoc comments in the grammar file, or for providing richer DDD pattern explanations.
|
|
6
|
+
*
|
|
7
|
+
* Basic keyword documentation (domain, boundedcontext, etc.) is now in the grammar file
|
|
8
|
+
* as JSDoc comments. This dictionary focuses on DDD integration patterns and advanced concepts.
|
|
9
|
+
*
|
|
10
|
+
* @see src/language/domain-lang.langium for basic keyword JSDoc
|
|
11
|
+
* @see ddd-pattern-explanations.ts for role patterns and relationship types
|
|
12
|
+
*/
|
|
13
|
+
export declare const keywordExplanations: Record<string, string>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyword explanations for DomainLang hover documentation.
|
|
3
|
+
*
|
|
4
|
+
* This dictionary provides fallback hover content for keywords that don't have
|
|
5
|
+
* JSDoc comments in the grammar file, or for providing richer DDD pattern explanations.
|
|
6
|
+
*
|
|
7
|
+
* Basic keyword documentation (domain, boundedcontext, etc.) is now in the grammar file
|
|
8
|
+
* as JSDoc comments. This dictionary focuses on DDD integration patterns and advanced concepts.
|
|
9
|
+
*
|
|
10
|
+
* @see src/language/domain-lang.langium for basic keyword JSDoc
|
|
11
|
+
* @see ddd-pattern-explanations.ts for role patterns and relationship types
|
|
12
|
+
*/
|
|
13
|
+
export const keywordExplanations = {
|
|
14
|
+
// Advanced syntax keywords
|
|
15
|
+
implements: "**implements** - Declares that a Bounded Context or type implements a Domain or interface.",
|
|
16
|
+
as: "**as** - Used for aliasing or renaming imports or types.",
|
|
17
|
+
from: "**from** - Specifies the source module or file for an import statement.",
|
|
18
|
+
type: "**type** - Declares a new type or alias in the model.",
|
|
19
|
+
map: "**map** - Defines a mapping or transformation between elements.",
|
|
20
|
+
this: "**this** - Refers to the current context or object.",
|
|
21
|
+
// DDD Classifiers
|
|
22
|
+
entity: "**Entity** - Domain object with distinct identity that runs through time.",
|
|
23
|
+
valueobject: "**Value Object** - Immutable object that describes a characteristic.",
|
|
24
|
+
aggregate: "**Aggregate** - Cluster of domain objects with a root and boundary.",
|
|
25
|
+
service: "**Service** - Stateless domain operation.",
|
|
26
|
+
event: "**Event** - Significant domain occurrence or state change.",
|
|
27
|
+
businessrule: "**Business Rule** - Rule that constrains business behavior.",
|
|
28
|
+
// DDD Integration Patterns
|
|
29
|
+
acl: "**ACL (Anti-Corruption Layer)** - Translation layer protecting downstream context from upstream changes.",
|
|
30
|
+
ohs: "**OHS (Open Host Service)** - Well-defined protocol providing access to a subsystem.",
|
|
31
|
+
pl: "**PL (Published Language)** - Documented shared language for context communication.",
|
|
32
|
+
cf: "**CF (Conformist)** - Downstream adopts upstream model without translation.",
|
|
33
|
+
bbom: "**BBoM (Big Ball of Mud)** - System with tangled architecture and no clear boundaries.",
|
|
34
|
+
sk: "**SK (Shared Kernel)** - Shared domain model subset requiring coordination.",
|
|
35
|
+
p: "**P (Partnership)** - Teams collaborate closely with shared success/failure.",
|
|
36
|
+
// DDD Relationship Types
|
|
37
|
+
separateways: "**Separate Ways** - No connection between contexts, each solves problems independently.",
|
|
38
|
+
partnership: "**Partnership** - Teams share risks and rewards with close collaboration.",
|
|
39
|
+
sharedkernel: "**Shared Kernel** - Shared domain model subset requiring coordination.",
|
|
40
|
+
customersupplier: "**Customer-Supplier** - Upstream prioritizes downstream needs.",
|
|
41
|
+
upstreamdownstream: "**Upstream-Downstream** - Upstream changes affect downstream.",
|
|
42
|
+
// Relationship arrows
|
|
43
|
+
'<->': "**Bidirectional** - Two contexts connected in both directions.",
|
|
44
|
+
'->': "**Upstream → Downstream** - Left depends on right.",
|
|
45
|
+
'<-': "**Downstream ← Upstream** - Right depends on left.",
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=domain-lang-keywords.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-lang-keywords.js","sourceRoot":"","sources":["../../../src/lsp/hover/domain-lang-keywords.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACvD,2BAA2B;IAC3B,UAAU,EAAE,4FAA4F;IACxG,EAAE,EAAE,0DAA0D;IAC9D,IAAI,EAAE,yEAAyE;IAC/E,IAAI,EAAE,uDAAuD;IAC7D,GAAG,EAAE,iEAAiE;IACtE,IAAI,EAAE,qDAAqD;IAE3D,kBAAkB;IAClB,MAAM,EAAE,2EAA2E;IACnF,WAAW,EAAE,sEAAsE;IACnF,SAAS,EAAE,qEAAqE;IAChF,OAAO,EAAE,2CAA2C;IACpD,KAAK,EAAE,4DAA4D;IACnE,YAAY,EAAE,6DAA6D;IAE3E,2BAA2B;IAC3B,GAAG,EAAE,0GAA0G;IAC/G,GAAG,EAAE,sFAAsF;IAC3F,EAAE,EAAE,qFAAqF;IACzF,EAAE,EAAE,6EAA6E;IACjF,IAAI,EAAE,wFAAwF;IAC9F,EAAE,EAAE,6EAA6E;IACjF,CAAC,EAAE,8EAA8E;IAEjF,yBAAyB;IACzB,YAAY,EAAE,yFAAyF;IACvG,WAAW,EAAE,2EAA2E;IACxF,YAAY,EAAE,wEAAwE;IACtF,gBAAgB,EAAE,gEAAgE;IAClF,kBAAkB,EAAE,+DAA+D;IAEnF,sBAAsB;IACtB,KAAK,EAAE,gEAAgE;IACvE,IAAI,EAAE,oDAAoD;IAC1D,IAAI,EAAE,oDAAoD;CAC7D,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest Diagnostics Service for DomainLang.
|
|
3
|
+
*
|
|
4
|
+
* Provides LSP diagnostics for model.yaml files by integrating the ManifestValidator
|
|
5
|
+
* with the VS Code language server protocol.
|
|
6
|
+
*
|
|
7
|
+
* This service:
|
|
8
|
+
* - Validates model.yaml files using ManifestValidator
|
|
9
|
+
* - Converts ManifestDiagnostic to LSP Diagnostic format
|
|
10
|
+
* - Sends diagnostics to the LSP connection
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
import type { Connection } from 'vscode-languageserver';
|
|
15
|
+
import { Diagnostic } from 'vscode-languageserver-types';
|
|
16
|
+
/**
|
|
17
|
+
* Service for validating model.yaml and sending diagnostics via LSP.
|
|
18
|
+
*/
|
|
19
|
+
export declare class ManifestDiagnosticsService {
|
|
20
|
+
private readonly validator;
|
|
21
|
+
private connection;
|
|
22
|
+
/**
|
|
23
|
+
* Sets the LSP connection for sending diagnostics.
|
|
24
|
+
* Must be called before validateAndSendDiagnostics.
|
|
25
|
+
*/
|
|
26
|
+
setConnection(connection: Connection): void;
|
|
27
|
+
/**
|
|
28
|
+
* Validates a model.yaml file and sends diagnostics to the LSP connection.
|
|
29
|
+
*
|
|
30
|
+
* @param manifestUri - URI of the model.yaml file
|
|
31
|
+
* @param content - Raw YAML content of the file
|
|
32
|
+
* @param options - Validation options
|
|
33
|
+
*/
|
|
34
|
+
validateAndSendDiagnostics(manifestUri: string, content: string, options?: {
|
|
35
|
+
requirePublishable?: boolean;
|
|
36
|
+
}): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Validates manifest content and returns LSP diagnostics.
|
|
39
|
+
*
|
|
40
|
+
* @param content - Raw YAML content
|
|
41
|
+
* @param options - Validation options
|
|
42
|
+
* @returns Array of LSP diagnostics
|
|
43
|
+
*/
|
|
44
|
+
validate(content: string, options?: {
|
|
45
|
+
requirePublishable?: boolean;
|
|
46
|
+
}): Diagnostic[];
|
|
47
|
+
/**
|
|
48
|
+
* Converts a YAML error to an LSP Range.
|
|
49
|
+
*/
|
|
50
|
+
private yamlErrorToRange;
|
|
51
|
+
/**
|
|
52
|
+
* Clears diagnostics for a manifest file.
|
|
53
|
+
* Call this when the file is closed or deleted.
|
|
54
|
+
*/
|
|
55
|
+
clearDiagnostics(manifestUri: string): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Converts a ManifestDiagnostic to an LSP Diagnostic.
|
|
58
|
+
*/
|
|
59
|
+
private toVSCodeDiagnostic;
|
|
60
|
+
/**
|
|
61
|
+
* Converts ManifestSeverity to LSP DiagnosticSeverity.
|
|
62
|
+
*/
|
|
63
|
+
private toVSCodeSeverity;
|
|
64
|
+
/**
|
|
65
|
+
* Finds the source range for a YAML path like "dependencies.core.version".
|
|
66
|
+
* Returns a fallback range at start of file if path not found.
|
|
67
|
+
*/
|
|
68
|
+
private findRangeForPath;
|
|
69
|
+
/**
|
|
70
|
+
* Converts byte offsets to a VS Code Range using line/column calculation.
|
|
71
|
+
*/
|
|
72
|
+
private offsetsToRange;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Gets or creates the manifest diagnostics service singleton.
|
|
76
|
+
*/
|
|
77
|
+
export declare function getManifestDiagnosticsService(): ManifestDiagnosticsService;
|
|
78
|
+
/**
|
|
79
|
+
* Helper to validate a manifest URI with the given content.
|
|
80
|
+
* Convenience function for use in file watchers.
|
|
81
|
+
*/
|
|
82
|
+
export declare function validateManifestFile(connection: Connection, manifestUri: string, content: string): Promise<void>;
|