@domainlang/language 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/domain-lang-module.d.ts +2 -0
- package/out/domain-lang-module.js +21 -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 +34 -5
- package/out/lsp/domain-lang-index-manager.js +66 -27
- 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 +53 -20
- package/out/lsp/domain-lang-scope-provider.js +119 -44
- package/out/lsp/domain-lang-scope-provider.js.map +1 -1
- package/out/lsp/domain-lang-workspace-manager.d.ts +23 -2
- package/out/lsp/domain-lang-workspace-manager.js +51 -6
- 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 +2 -1
- package/out/main.js.map +1 -1
- package/out/sdk/index.d.ts +31 -11
- package/out/sdk/index.js +30 -11
- package/out/sdk/index.js.map +1 -1
- package/out/sdk/loader-node.d.ts +2 -0
- package/out/sdk/loader-node.js +3 -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/sdk/validator.d.ts +134 -0
- package/out/sdk/validator.js +249 -0
- package/out/sdk/validator.js.map +1 -0
- 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 +7 -0
- package/out/validation/constants.js +21 -3
- package/out/validation/constants.js.map +1 -1
- package/out/validation/import.d.ts +11 -1
- package/out/validation/import.js +42 -14
- package/out/validation/import.js.map +1 -1
- package/out/validation/maps.js +50 -1
- package/out/validation/maps.js.map +1 -1
- package/package.json +8 -9
- package/src/domain-lang-module.ts +24 -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 +79 -27
- package/src/lsp/domain-lang-node-kind-provider.ts +119 -0
- package/src/lsp/domain-lang-scope-provider.ts +171 -55
- package/src/lsp/domain-lang-workspace-manager.ts +64 -6
- package/src/lsp/hover/domain-lang-hover.ts +189 -131
- package/src/lsp/hover/hover-builders.ts +208 -0
- package/src/main.ts +3 -1
- package/src/sdk/index.ts +33 -11
- package/src/sdk/loader-node.ts +6 -1
- package/src/sdk/loader.ts +125 -34
- package/src/sdk/query.ts +15 -11
- package/src/sdk/validator.ts +358 -0
- 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 +23 -6
- package/src/validation/import.ts +49 -14
- package/src/validation/maps.ts +59 -2
|
@@ -0,0 +1,171 @@
|
|
|
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 { effectiveClassification, effectiveTeam } from '../../sdk/resolution.js';
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Shared formatting utilities
|
|
15
|
+
// ============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Wraps text in a domain-lang fenced code block.
|
|
18
|
+
*/
|
|
19
|
+
export function codeBlock(text) {
|
|
20
|
+
return `\`\`\`domain-lang\n${text}\n\`\`\``;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Formats hover output with a consistent header/body structure.
|
|
24
|
+
*
|
|
25
|
+
* @param commentBlock - Documentation comment prefix (or empty)
|
|
26
|
+
* @param emoji - Emoji icon for the type
|
|
27
|
+
* @param typeName - Lowercase type name
|
|
28
|
+
* @param name - Element name (optional)
|
|
29
|
+
* @param fields - Body content fields
|
|
30
|
+
*/
|
|
31
|
+
export function formatHoverContent(commentBlock, emoji, typeName, name, fields) {
|
|
32
|
+
const separator = commentBlock ? `${commentBlock}\n\n---\n\n` : '';
|
|
33
|
+
const nameDisplay = name ? ` ${name}` : '';
|
|
34
|
+
const header = `${emoji} **\`(${typeName})\`${nameDisplay}**`;
|
|
35
|
+
const body = fields.length > 0 ? `\n\n${fields.join('\n\n')}` : '';
|
|
36
|
+
return `${separator}${header}${body}`;
|
|
37
|
+
}
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// Domain hover builder
|
|
40
|
+
// ============================================================================
|
|
41
|
+
/**
|
|
42
|
+
* Builds a signature string for a domain (e.g., "Domain Sales in Commerce").
|
|
43
|
+
*/
|
|
44
|
+
export function buildDomainSignature(domain) {
|
|
45
|
+
const parts = ['Domain', domain.name];
|
|
46
|
+
if (domain.parent?.ref?.name) {
|
|
47
|
+
parts.push('in', domain.parent.ref.name);
|
|
48
|
+
}
|
|
49
|
+
return parts.join(' ');
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Builds hover fields for a Domain node.
|
|
53
|
+
*
|
|
54
|
+
* @param domain - The domain AST node
|
|
55
|
+
* @param refLink - Function to create reference links
|
|
56
|
+
* @returns Array of formatted field strings
|
|
57
|
+
*/
|
|
58
|
+
export function buildDomainFields(domain, refLink) {
|
|
59
|
+
const description = domain.description ?? '';
|
|
60
|
+
const vision = domain.vision ?? '';
|
|
61
|
+
const typeRef = domain.type?.ref;
|
|
62
|
+
const signature = codeBlock(buildDomainSignature(domain));
|
|
63
|
+
const fields = [signature];
|
|
64
|
+
if (description)
|
|
65
|
+
fields.push(description);
|
|
66
|
+
if (vision || typeRef || domain.parent)
|
|
67
|
+
fields.push('---');
|
|
68
|
+
if (vision)
|
|
69
|
+
fields.push(`**Vision:** ${vision}`);
|
|
70
|
+
if (typeRef)
|
|
71
|
+
fields.push(`**Type:** ${refLink(typeRef)}`);
|
|
72
|
+
if (domain.parent?.ref)
|
|
73
|
+
fields.push(`**Parent:** ${refLink(domain.parent.ref)}`);
|
|
74
|
+
return fields;
|
|
75
|
+
}
|
|
76
|
+
// ============================================================================
|
|
77
|
+
// Bounded context hover builder
|
|
78
|
+
// ============================================================================
|
|
79
|
+
/**
|
|
80
|
+
* Builds a signature string for a bounded context
|
|
81
|
+
* (e.g., "boundedcontext OrderManagement for Sales as Core by SalesTeam").
|
|
82
|
+
*/
|
|
83
|
+
export function buildBcSignature(bc) {
|
|
84
|
+
const classification = effectiveClassification(bc);
|
|
85
|
+
const team = effectiveTeam(bc);
|
|
86
|
+
const parts = ['BoundedContext', bc.name];
|
|
87
|
+
if (bc.domain?.ref?.name)
|
|
88
|
+
parts.push('for', bc.domain.ref.name);
|
|
89
|
+
if (classification?.name)
|
|
90
|
+
parts.push('as', classification.name);
|
|
91
|
+
if (team?.name)
|
|
92
|
+
parts.push('by', team.name);
|
|
93
|
+
return parts.join(' ');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Builds the properties section (domain, classification, team, businessModel, evolution).
|
|
97
|
+
*/
|
|
98
|
+
function buildBcPropertyFields(bc, classification, team, refLink) {
|
|
99
|
+
const fields = [];
|
|
100
|
+
const domain = bc.domain?.ref;
|
|
101
|
+
const businessModel = bc.businessModel?.ref;
|
|
102
|
+
const evolution = bc.evolution?.ref;
|
|
103
|
+
if (domain || classification || team || businessModel || evolution)
|
|
104
|
+
fields.push('---');
|
|
105
|
+
if (domain)
|
|
106
|
+
fields.push(`📁 **Domain:** ${refLink(domain)}`);
|
|
107
|
+
if (classification)
|
|
108
|
+
fields.push(`🔖 **Classification:** ${refLink(classification)}`);
|
|
109
|
+
if (team)
|
|
110
|
+
fields.push(`👥 **Team:** ${refLink(team)}`);
|
|
111
|
+
if (businessModel)
|
|
112
|
+
fields.push(`💼 **Business Model:** ${refLink(businessModel)}`);
|
|
113
|
+
if (evolution)
|
|
114
|
+
fields.push(`🔄 **Evolution:** ${refLink(evolution)}`);
|
|
115
|
+
return fields;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Builds the relationships section for a bounded context hover.
|
|
119
|
+
*/
|
|
120
|
+
function buildBcRelationshipsSection(relationships, formatRelationshipLine) {
|
|
121
|
+
if (relationships.length === 0)
|
|
122
|
+
return [];
|
|
123
|
+
const lines = relationships.map(formatRelationshipLine);
|
|
124
|
+
return [`**Relationships:**\n${lines.join('\n')}`];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Builds the terminology section for a bounded context hover.
|
|
128
|
+
*/
|
|
129
|
+
function buildBcTerminologySection(bc) {
|
|
130
|
+
const terminology = bc.terminology ?? [];
|
|
131
|
+
if (terminology.length === 0)
|
|
132
|
+
return [];
|
|
133
|
+
const lines = terminology.map(t => `- \`${t.name}\`: ${t.meaning ?? ''}`);
|
|
134
|
+
return [`**Terminology:**\n${lines.join('\n')}`];
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Builds the decisions section for a bounded context hover.
|
|
138
|
+
*/
|
|
139
|
+
function buildBcDecisionsSection(bc) {
|
|
140
|
+
const decisions = bc.decisions ?? [];
|
|
141
|
+
if (decisions.length === 0)
|
|
142
|
+
return [];
|
|
143
|
+
const lines = decisions.map(d => `- \`${d.name}\`: ${d.value ?? ''}`);
|
|
144
|
+
return [`**Decisions:**\n${lines.join('\n')}`];
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Builds hover fields for a BoundedContext node.
|
|
148
|
+
*
|
|
149
|
+
* @param bc - The bounded context AST node
|
|
150
|
+
* @param refLink - Function to create reference links
|
|
151
|
+
* @param formatRelationshipLine - Function to format a relationship line
|
|
152
|
+
* @returns Array of formatted field strings
|
|
153
|
+
*/
|
|
154
|
+
export function buildBcFields(bc, refLink, formatRelationshipLine) {
|
|
155
|
+
const description = bc.description ?? '';
|
|
156
|
+
const classification = effectiveClassification(bc);
|
|
157
|
+
const team = effectiveTeam(bc);
|
|
158
|
+
const signature = codeBlock(buildBcSignature(bc));
|
|
159
|
+
const fields = [signature];
|
|
160
|
+
if (description)
|
|
161
|
+
fields.push(description);
|
|
162
|
+
const sections = [
|
|
163
|
+
...buildBcPropertyFields(bc, classification, team, refLink),
|
|
164
|
+
...buildBcRelationshipsSection(bc.relationships ?? [], formatRelationshipLine),
|
|
165
|
+
...buildBcTerminologySection(bc),
|
|
166
|
+
...buildBcDecisionsSection(bc),
|
|
167
|
+
];
|
|
168
|
+
fields.push(...sections);
|
|
169
|
+
return fields;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=hover-builders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-builders.js","sourceRoot":"","sources":["../../../src/lsp/hover/hover-builders.ts"],"names":[],"mappings":"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"}
|
package/out/main.js
CHANGED
|
@@ -67,6 +67,7 @@ function categorizeChanges(params, workspaceManager, langServices, indexManager)
|
|
|
67
67
|
else if (fileName === 'model.lock') {
|
|
68
68
|
console.warn(`model.lock changed: ${uriString}`);
|
|
69
69
|
langServices.imports.ImportResolver.clearCache();
|
|
70
|
+
indexManager.clearImportDependencies();
|
|
70
71
|
result.lockFileChanged = true;
|
|
71
72
|
}
|
|
72
73
|
else if (fileName.endsWith('.dlang')) {
|
|
@@ -227,7 +228,7 @@ if (entryFile) {
|
|
|
227
228
|
*/
|
|
228
229
|
const reloadFromEntry = async () => {
|
|
229
230
|
try {
|
|
230
|
-
currentGraph = await ensureImportGraphFromEntryFile(entryFile, shared.workspace.LangiumDocuments);
|
|
231
|
+
currentGraph = await ensureImportGraphFromEntryFile(entryFile, shared.workspace.LangiumDocuments, DomainLang.imports.ImportResolver);
|
|
231
232
|
console.warn(`Successfully loaded import graph from ${entryFile}`);
|
|
232
233
|
}
|
|
233
234
|
catch (error) {
|
package/out/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/out/sdk/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* - Fluent query chains with lazy iteration
|
|
17
17
|
* - O(1) indexed lookups by FQN/name
|
|
18
18
|
* - Resolution rules (which block wins for 0..1 properties)
|
|
19
|
+
* - File validation (Node.js only, via `validateFile()`)
|
|
19
20
|
*
|
|
20
21
|
* **Entry points for different deployment targets:**
|
|
21
22
|
*
|
|
@@ -23,27 +24,24 @@
|
|
|
23
24
|
* |--------|-------------|--------------|-------|
|
|
24
25
|
* | VS Code Extension | `fromDocument()` | ✅ | Zero-copy LSP integration |
|
|
25
26
|
* | Web Editor | `fromDocument()`, `loadModelFromText()` | ✅ | Browser-compatible |
|
|
26
|
-
* | CLI (Node.js) | `loadModel()
|
|
27
|
+
* | CLI (Node.js) | `loadModel()`, `validateFile()` | ❌ | File system access |
|
|
27
28
|
* | Hosted LSP | `fromDocument()`, `fromServices()` | ✅ | Server-side only |
|
|
28
29
|
* | Testing | `loadModelFromText()` | ✅ | In-memory parsing |
|
|
29
30
|
*
|
|
30
31
|
* ## Browser vs Node.js
|
|
31
32
|
*
|
|
32
|
-
*
|
|
33
|
-
* - `
|
|
34
|
-
* - `
|
|
33
|
+
* Most of this module is **browser-safe**, but Node.js-specific functions are exported as well:
|
|
34
|
+
* - `loadModel()` - requires Node.js file system (uses NodeFileSystem)
|
|
35
|
+
* - `validateFile()` - requires Node.js file system (uses NodeFileSystem)
|
|
35
36
|
*
|
|
36
|
-
*
|
|
37
|
-
* ```typescript
|
|
38
|
-
* import { loadModel } from 'domain-lang-language/sdk/loader-node';
|
|
39
|
-
* ```
|
|
37
|
+
* These will fail at runtime in browser environments.
|
|
40
38
|
*
|
|
41
39
|
* @packageDocumentation
|
|
42
40
|
*
|
|
43
41
|
* @example
|
|
44
42
|
* ```typescript
|
|
45
|
-
* // Node.js CLI: Load from file
|
|
46
|
-
* import { loadModel } from '
|
|
43
|
+
* // Node.js CLI: Load from file
|
|
44
|
+
* import { loadModel } from '@domainlang/language/sdk';
|
|
47
45
|
*
|
|
48
46
|
* const { query } = await loadModel('./domains.dlang', {
|
|
49
47
|
* workspaceDir: process.cwd()
|
|
@@ -60,6 +58,24 @@
|
|
|
60
58
|
*
|
|
61
59
|
* @example
|
|
62
60
|
* ```typescript
|
|
61
|
+
* // Node.js CLI: Validate a model (requires sdk/loader-node)
|
|
62
|
+
* import { validateFile } from '@domainlang/language/sdk';
|
|
63
|
+
*
|
|
64
|
+
* const result = await validateFile('./domains.dlang');
|
|
65
|
+
*
|
|
66
|
+
* if (!result.valid) {
|
|
67
|
+
* for (const error of result.errors) {
|
|
68
|
+
* console.error(`${error.file}:${error.line}: ${error.message}`);
|
|
69
|
+
* }
|
|
70
|
+
* process.exit(1);
|
|
71
|
+
* }
|
|
72
|
+
*
|
|
73
|
+
* console.log(`✓ Validated ${result.fileCount} files`);
|
|
74
|
+
* console.log(` ${result.domainCount} domains, ${result.bcCount} bounded contexts`);
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
63
79
|
* // Browser/Testing: Load from text (browser-safe)
|
|
64
80
|
* import { loadModelFromText } from '@domainlang/language/sdk';
|
|
65
81
|
*
|
|
@@ -87,8 +103,12 @@
|
|
|
87
103
|
* }
|
|
88
104
|
* ```
|
|
89
105
|
*/
|
|
90
|
-
export { loadModelFromText } from './loader.js';
|
|
106
|
+
export { loadModelFromText, createModelLoader } from './loader.js';
|
|
107
|
+
export type { ModelLoader } from './loader.js';
|
|
91
108
|
export { fromModel, fromDocument, fromServices, augmentModel } from './query.js';
|
|
92
109
|
export { Pattern, PatternFullName, PatternAliases, matchesPattern, isUpstreamPattern, isDownstreamPattern, isMutualPattern, UpstreamPatterns, DownstreamPatterns, MutualPatterns, } from './patterns.js';
|
|
93
110
|
export type { IntegrationPattern } from './patterns.js';
|
|
94
111
|
export type { Query, QueryBuilder, QueryContext, LoadOptions, BcQueryBuilder, RelationshipView, } from './types.js';
|
|
112
|
+
export { loadModel } from './loader-node.js';
|
|
113
|
+
export { validateFile, validateWorkspace } from './validator.js';
|
|
114
|
+
export type { ValidationResult, ValidationDiagnostic, ValidationOptions, WorkspaceValidationResult } from './validator.js';
|
package/out/sdk/index.js
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* - Fluent query chains with lazy iteration
|
|
17
17
|
* - O(1) indexed lookups by FQN/name
|
|
18
18
|
* - Resolution rules (which block wins for 0..1 properties)
|
|
19
|
+
* - File validation (Node.js only, via `validateFile()`)
|
|
19
20
|
*
|
|
20
21
|
* **Entry points for different deployment targets:**
|
|
21
22
|
*
|
|
@@ -23,27 +24,24 @@
|
|
|
23
24
|
* |--------|-------------|--------------|-------|
|
|
24
25
|
* | VS Code Extension | `fromDocument()` | ✅ | Zero-copy LSP integration |
|
|
25
26
|
* | Web Editor | `fromDocument()`, `loadModelFromText()` | ✅ | Browser-compatible |
|
|
26
|
-
* | CLI (Node.js) | `loadModel()
|
|
27
|
+
* | CLI (Node.js) | `loadModel()`, `validateFile()` | ❌ | File system access |
|
|
27
28
|
* | Hosted LSP | `fromDocument()`, `fromServices()` | ✅ | Server-side only |
|
|
28
29
|
* | Testing | `loadModelFromText()` | ✅ | In-memory parsing |
|
|
29
30
|
*
|
|
30
31
|
* ## Browser vs Node.js
|
|
31
32
|
*
|
|
32
|
-
*
|
|
33
|
-
* - `
|
|
34
|
-
* - `
|
|
33
|
+
* Most of this module is **browser-safe**, but Node.js-specific functions are exported as well:
|
|
34
|
+
* - `loadModel()` - requires Node.js file system (uses NodeFileSystem)
|
|
35
|
+
* - `validateFile()` - requires Node.js file system (uses NodeFileSystem)
|
|
35
36
|
*
|
|
36
|
-
*
|
|
37
|
-
* ```typescript
|
|
38
|
-
* import { loadModel } from 'domain-lang-language/sdk/loader-node';
|
|
39
|
-
* ```
|
|
37
|
+
* These will fail at runtime in browser environments.
|
|
40
38
|
*
|
|
41
39
|
* @packageDocumentation
|
|
42
40
|
*
|
|
43
41
|
* @example
|
|
44
42
|
* ```typescript
|
|
45
|
-
* // Node.js CLI: Load from file
|
|
46
|
-
* import { loadModel } from '
|
|
43
|
+
* // Node.js CLI: Load from file
|
|
44
|
+
* import { loadModel } from '@domainlang/language/sdk';
|
|
47
45
|
*
|
|
48
46
|
* const { query } = await loadModel('./domains.dlang', {
|
|
49
47
|
* workspaceDir: process.cwd()
|
|
@@ -60,6 +58,24 @@
|
|
|
60
58
|
*
|
|
61
59
|
* @example
|
|
62
60
|
* ```typescript
|
|
61
|
+
* // Node.js CLI: Validate a model (requires sdk/loader-node)
|
|
62
|
+
* import { validateFile } from '@domainlang/language/sdk';
|
|
63
|
+
*
|
|
64
|
+
* const result = await validateFile('./domains.dlang');
|
|
65
|
+
*
|
|
66
|
+
* if (!result.valid) {
|
|
67
|
+
* for (const error of result.errors) {
|
|
68
|
+
* console.error(`${error.file}:${error.line}: ${error.message}`);
|
|
69
|
+
* }
|
|
70
|
+
* process.exit(1);
|
|
71
|
+
* }
|
|
72
|
+
*
|
|
73
|
+
* console.log(`✓ Validated ${result.fileCount} files`);
|
|
74
|
+
* console.log(` ${result.domainCount} domains, ${result.bcCount} bounded contexts`);
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
63
79
|
* // Browser/Testing: Load from text (browser-safe)
|
|
64
80
|
* import { loadModelFromText } from '@domainlang/language/sdk';
|
|
65
81
|
*
|
|
@@ -88,10 +104,13 @@
|
|
|
88
104
|
* ```
|
|
89
105
|
*/
|
|
90
106
|
// Browser-safe entry points
|
|
91
|
-
export { loadModelFromText } from './loader.js';
|
|
107
|
+
export { loadModelFromText, createModelLoader } from './loader.js';
|
|
92
108
|
export { fromModel, fromDocument, fromServices, augmentModel } from './query.js';
|
|
93
109
|
// Note: loadModel() is NOT exported here - it requires Node.js filesystem
|
|
94
110
|
// For CLI/Node.js usage: import { loadModel } from '@domainlang/language/sdk/loader-node';
|
|
95
111
|
// Integration patterns for type-safe pattern matching (no magic strings)
|
|
96
112
|
export { Pattern, PatternFullName, PatternAliases, matchesPattern, isUpstreamPattern, isDownstreamPattern, isMutualPattern, UpstreamPatterns, DownstreamPatterns, MutualPatterns, } from './patterns.js';
|
|
113
|
+
// Node.js-specific exports (will fail in browser environments)
|
|
114
|
+
export { loadModel } from './loader-node.js';
|
|
115
|
+
export { validateFile, validateWorkspace } from './validator.js';
|
|
97
116
|
//# sourceMappingURL=index.js.map
|
package/out/sdk/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwGG;AAEH,4BAA4B;AAC5B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjF,0EAA0E;AAC1E,2FAA2F;AAE3F,yEAAyE;AACzE,OAAO,EACH,OAAO,EACP,eAAe,EACf,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACjB,MAAM,eAAe,CAAC;AAkBvB,+DAA+D;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/out/sdk/loader-node.d.ts
CHANGED
|
@@ -49,3 +49,5 @@ import type { LoadOptions, QueryContext } from './types.js';
|
|
|
49
49
|
* ```
|
|
50
50
|
*/
|
|
51
51
|
export declare function loadModel(entryFile: string, options?: LoadOptions): Promise<QueryContext>;
|
|
52
|
+
export { validateFile } from './validator.js';
|
|
53
|
+
export type { ValidationResult, ValidationDiagnostic, ValidationOptions } from './validator.js';
|
package/out/sdk/loader-node.js
CHANGED
|
@@ -80,7 +80,7 @@ export async function loadModel(entryFile, options) {
|
|
|
80
80
|
shared.workspace.LangiumDocuments.addDocument(document);
|
|
81
81
|
await shared.workspace.DocumentBuilder.build([document], { validation: false });
|
|
82
82
|
// Traverse import graph to load all imported files
|
|
83
|
-
const importedUris = await ensureImportGraphFromDocument(document, shared.workspace.LangiumDocuments);
|
|
83
|
+
const importedUris = await ensureImportGraphFromDocument(document, shared.workspace.LangiumDocuments, services.imports.ImportResolver);
|
|
84
84
|
// Build all imported documents with validation
|
|
85
85
|
const allDocuments = Array.from(shared.workspace.LangiumDocuments.all);
|
|
86
86
|
await shared.workspace.DocumentBuilder.build(allDocuments, { validation: true });
|
|
@@ -116,4 +116,6 @@ export async function loadModel(entryFile, options) {
|
|
|
116
116
|
query: fromModel(model),
|
|
117
117
|
};
|
|
118
118
|
}
|
|
119
|
+
// Re-export validation utilities
|
|
120
|
+
export { validateFile } from './validator.js';
|
|
119
121
|
//# sourceMappingURL=loader-node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-node.js","sourceRoot":"","sources":["../../src/sdk/loader-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,SAAiB,EACjB,OAAqB;IAErB,wBAAwB;IACxB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC3C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAEtE,2BAA2B;IAC3B,MAAM,WAAW,GAAG,OAAO,EAAE,QAAQ;QACjC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE;QACnE,CAAC,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC;IACxC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAElC,6CAA6C;IAC7C,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;QACxB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC3D,MAAM,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC;IAED,wCAAwC;IACxC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEnC,uCAAuC;IACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAC/D,WAAW,EACX,GAAG,CACN,CAAC;IAEF,iCAAiC;IACjC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAEhF,mDAAmD;IACnD,MAAM,YAAY,GAAG,MAAM,6BAA6B,CACpD,QAAQ,EACR,MAAM,CAAC,SAAS,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"loader-node.js","sourceRoot":"","sources":["../../src/sdk/loader-node.ts"],"names":[],"mappings":"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"}
|
package/out/sdk/loader.d.ts
CHANGED
|
@@ -4,6 +4,14 @@
|
|
|
4
4
|
* This module provides `loadModelFromText()` which works in both
|
|
5
5
|
* browser and Node.js environments by using Langium's EmptyFileSystem.
|
|
6
6
|
*
|
|
7
|
+
* For repeated parsing (e.g., web playgrounds, REPLs), use `createModelLoader()`
|
|
8
|
+
* to reuse Langium services across multiple parse calls:
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const loader = createModelLoader();
|
|
11
|
+
* const result1 = await loader.loadFromText('Domain A {}');
|
|
12
|
+
* const result2 = await loader.loadFromText('Domain B {}');
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
7
15
|
* For file-based loading in Node.js CLI tools, use:
|
|
8
16
|
* ```typescript
|
|
9
17
|
* import { loadModel } from '@domainlang/language/sdk/loader-node';
|
|
@@ -16,16 +24,61 @@
|
|
|
16
24
|
*
|
|
17
25
|
* @module sdk/loader
|
|
18
26
|
*/
|
|
27
|
+
import type { DomainLangServices } from '../domain-lang-module.js';
|
|
19
28
|
import type { LoadOptions, QueryContext } from './types.js';
|
|
29
|
+
/**
|
|
30
|
+
* A reusable model loader that maintains Langium services across multiple parse calls.
|
|
31
|
+
*
|
|
32
|
+
* Use this when calling `loadFromText()` repeatedly (e.g., web playgrounds, REPLs,
|
|
33
|
+
* batch processing) to avoid the overhead of recreating Langium services each time.
|
|
34
|
+
*/
|
|
35
|
+
export interface ModelLoader {
|
|
36
|
+
/**
|
|
37
|
+
* Loads a DomainLang model from a text string, reusing internal services.
|
|
38
|
+
*
|
|
39
|
+
* Each call creates a fresh document but shares the underlying parser,
|
|
40
|
+
* linker, and validator infrastructure.
|
|
41
|
+
*
|
|
42
|
+
* @param text - DomainLang source code
|
|
43
|
+
* @returns QueryContext with model and query API
|
|
44
|
+
* @throws Error if parsing fails
|
|
45
|
+
*/
|
|
46
|
+
loadFromText(text: string): Promise<QueryContext>;
|
|
47
|
+
/** The underlying DomainLang services (for advanced use). */
|
|
48
|
+
readonly services: DomainLangServices;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Creates a reusable model loader that shares Langium services across parse calls.
|
|
52
|
+
*
|
|
53
|
+
* **Browser-safe** - uses in-memory file system (EmptyFileSystem).
|
|
54
|
+
*
|
|
55
|
+
* For applications that parse multiple texts (web playgrounds, REPLs, batch tools),
|
|
56
|
+
* this avoids the overhead of creating new Langium services for each parse call.
|
|
57
|
+
*
|
|
58
|
+
* @returns A ModelLoader instance that can be used repeatedly
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* import { createModelLoader } from '@domainlang/language/sdk';
|
|
63
|
+
*
|
|
64
|
+
* const loader = createModelLoader();
|
|
65
|
+
*
|
|
66
|
+
* // Parse multiple texts efficiently - services are reused
|
|
67
|
+
* const result1 = await loader.loadFromText('Domain Sales { vision: "Sales" }');
|
|
68
|
+
* const result2 = await loader.loadFromText('Domain Billing { vision: "Billing" }');
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare function createModelLoader(): ModelLoader;
|
|
20
72
|
/**
|
|
21
73
|
* Loads a DomainLang model from a text string.
|
|
22
74
|
*
|
|
23
75
|
* **Browser-safe** - uses in-memory file system (EmptyFileSystem).
|
|
24
76
|
*
|
|
77
|
+
* For repeated parsing, prefer {@link createModelLoader} to reuse services.
|
|
78
|
+
*
|
|
25
79
|
* Useful for:
|
|
26
80
|
* - Testing
|
|
27
|
-
* -
|
|
28
|
-
* - Web-based editors
|
|
81
|
+
* - One-off parsing
|
|
29
82
|
* - Any environment without file system access
|
|
30
83
|
*
|
|
31
84
|
* @param text - DomainLang source code
|