@domainlang/language 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/out/domain-lang-module.d.ts +2 -0
  2. package/out/domain-lang-module.js +21 -2
  3. package/out/domain-lang-module.js.map +1 -1
  4. package/out/lsp/domain-lang-completion.d.ts +142 -1
  5. package/out/lsp/domain-lang-completion.js +620 -22
  6. package/out/lsp/domain-lang-completion.js.map +1 -1
  7. package/out/lsp/domain-lang-document-symbol-provider.d.ts +79 -0
  8. package/out/lsp/domain-lang-document-symbol-provider.js +210 -0
  9. package/out/lsp/domain-lang-document-symbol-provider.js.map +1 -0
  10. package/out/lsp/domain-lang-index-manager.d.ts +34 -5
  11. package/out/lsp/domain-lang-index-manager.js +66 -27
  12. package/out/lsp/domain-lang-index-manager.js.map +1 -1
  13. package/out/lsp/domain-lang-node-kind-provider.d.ts +27 -0
  14. package/out/lsp/domain-lang-node-kind-provider.js +87 -0
  15. package/out/lsp/domain-lang-node-kind-provider.js.map +1 -0
  16. package/out/lsp/domain-lang-scope-provider.d.ts +53 -20
  17. package/out/lsp/domain-lang-scope-provider.js +119 -44
  18. package/out/lsp/domain-lang-scope-provider.js.map +1 -1
  19. package/out/lsp/domain-lang-workspace-manager.d.ts +23 -2
  20. package/out/lsp/domain-lang-workspace-manager.js +51 -6
  21. package/out/lsp/domain-lang-workspace-manager.js.map +1 -1
  22. package/out/lsp/hover/domain-lang-hover.d.ts +16 -6
  23. package/out/lsp/hover/domain-lang-hover.js +160 -134
  24. package/out/lsp/hover/domain-lang-hover.js.map +1 -1
  25. package/out/lsp/hover/hover-builders.d.ts +57 -0
  26. package/out/lsp/hover/hover-builders.js +171 -0
  27. package/out/lsp/hover/hover-builders.js.map +1 -0
  28. package/out/main.js +2 -1
  29. package/out/main.js.map +1 -1
  30. package/out/sdk/index.d.ts +2 -1
  31. package/out/sdk/index.js +1 -1
  32. package/out/sdk/index.js.map +1 -1
  33. package/out/sdk/loader-node.js +1 -1
  34. package/out/sdk/loader-node.js.map +1 -1
  35. package/out/sdk/loader.d.ts +55 -2
  36. package/out/sdk/loader.js +87 -28
  37. package/out/sdk/loader.js.map +1 -1
  38. package/out/sdk/query.js +14 -11
  39. package/out/sdk/query.js.map +1 -1
  40. package/out/services/package-boundary-detector.d.ts +101 -0
  41. package/out/services/package-boundary-detector.js +211 -0
  42. package/out/services/package-boundary-detector.js.map +1 -0
  43. package/out/services/performance-optimizer.js +6 -2
  44. package/out/services/performance-optimizer.js.map +1 -1
  45. package/out/services/types.d.ts +24 -0
  46. package/out/services/types.js.map +1 -1
  47. package/out/services/workspace-manager.d.ts +73 -6
  48. package/out/services/workspace-manager.js +210 -57
  49. package/out/services/workspace-manager.js.map +1 -1
  50. package/out/utils/import-utils.d.ts +9 -6
  51. package/out/utils/import-utils.js +26 -15
  52. package/out/utils/import-utils.js.map +1 -1
  53. package/out/validation/constants.d.ts +7 -0
  54. package/out/validation/constants.js +21 -3
  55. package/out/validation/constants.js.map +1 -1
  56. package/out/validation/import.d.ts +11 -1
  57. package/out/validation/import.js +42 -14
  58. package/out/validation/import.js.map +1 -1
  59. package/out/validation/maps.js +50 -1
  60. package/out/validation/maps.js.map +1 -1
  61. package/package.json +5 -5
  62. package/src/domain-lang-module.ts +24 -3
  63. package/src/lsp/domain-lang-completion.ts +736 -27
  64. package/src/lsp/domain-lang-document-symbol-provider.ts +254 -0
  65. package/src/lsp/domain-lang-index-manager.ts +79 -27
  66. package/src/lsp/domain-lang-node-kind-provider.ts +119 -0
  67. package/src/lsp/domain-lang-scope-provider.ts +171 -55
  68. package/src/lsp/domain-lang-workspace-manager.ts +64 -6
  69. package/src/lsp/hover/domain-lang-hover.ts +189 -131
  70. package/src/lsp/hover/hover-builders.ts +208 -0
  71. package/src/main.ts +3 -1
  72. package/src/sdk/index.ts +2 -1
  73. package/src/sdk/loader-node.ts +2 -1
  74. package/src/sdk/loader.ts +125 -34
  75. package/src/sdk/query.ts +15 -11
  76. package/src/services/package-boundary-detector.ts +238 -0
  77. package/src/services/performance-optimizer.ts +6 -2
  78. package/src/services/types.ts +25 -0
  79. package/src/services/workspace-manager.ts +259 -62
  80. package/src/utils/import-utils.ts +27 -15
  81. package/src/validation/constants.ts +23 -6
  82. package/src/validation/import.ts +49 -14
  83. package/src/validation/maps.ts +59 -2
@@ -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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"}
@@ -87,7 +87,8 @@
87
87
  * }
88
88
  * ```
89
89
  */
90
- export { loadModelFromText } from './loader.js';
90
+ export { loadModelFromText, createModelLoader } from './loader.js';
91
+ export type { ModelLoader } from './loader.js';
91
92
  export { fromModel, fromDocument, fromServices, augmentModel } from './query.js';
92
93
  export { Pattern, PatternFullName, PatternAliases, matchesPattern, isUpstreamPattern, isDownstreamPattern, isMutualPattern, UpstreamPatterns, DownstreamPatterns, MutualPatterns, } from './patterns.js';
93
94
  export type { IntegrationPattern } from './patterns.js';
package/out/sdk/index.js CHANGED
@@ -88,7 +88,7 @@
88
88
  * ```
89
89
  */
90
90
  // Browser-safe entry points
91
- export { loadModelFromText } from './loader.js';
91
+ export { loadModelFromText, createModelLoader } from './loader.js';
92
92
  export { fromModel, fromDocument, fromServices, augmentModel } from './query.js';
93
93
  // Note: loadModel() is NOT exported here - it requires Node.js filesystem
94
94
  // For CLI/Node.js usage: import { loadModel } from '@domainlang/language/sdk/loader-node';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFG;AAEH,4BAA4B;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFG;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"}
@@ -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 });
@@ -1 +1 @@
1
- {"version":3,"file":"loader-node.js","sourceRoot":"","sources":["../../src/sdk/loader-node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader-node.js","sourceRoot":"","sources":["../../src/sdk/loader-node.ts"],"names":[],"mappings":"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"}
@@ -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
- * - REPL environments
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
package/out/sdk/loader.js 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';
@@ -20,15 +28,90 @@ import { EmptyFileSystem, URI } from 'langium';
20
28
  import { isModel } from '../generated/ast.js';
21
29
  import { createDomainLangServices } from '../domain-lang-module.js';
22
30
  import { augmentModel, fromModel } from './query.js';
31
+ /** Internal counter for unique document URIs within a loader. */
32
+ let documentCounter = 0;
33
+ /**
34
+ * Parses text into a QueryContext using the provided services.
35
+ * Shared implementation for both `loadModelFromText` and `ModelLoader.loadFromText`.
36
+ */
37
+ async function parseTextToContext(text, langServices, shared) {
38
+ // Use unique URI per parse to avoid document conflicts
39
+ const uri = URI.parse(`memory:///model-${documentCounter++}.dlang`);
40
+ const document = shared.workspace.LangiumDocumentFactory.fromString(text, uri);
41
+ // Register and build document
42
+ shared.workspace.LangiumDocuments.addDocument(document);
43
+ try {
44
+ await shared.workspace.DocumentBuilder.build([document], { validation: true });
45
+ // Check for parsing errors
46
+ if (document.parseResult.lexerErrors.length > 0) {
47
+ const errors = document.parseResult.lexerErrors.map(e => e.message).join('\n ');
48
+ throw new Error(`Lexer errors:\n ${errors}`);
49
+ }
50
+ if (document.parseResult.parserErrors.length > 0) {
51
+ const errors = document.parseResult.parserErrors.map(e => e.message).join('\n ');
52
+ throw new Error(`Parser errors:\n ${errors}`);
53
+ }
54
+ const model = document.parseResult.value;
55
+ if (!isModel(model)) {
56
+ throw new Error(`Document root is not a Model`);
57
+ }
58
+ // Augment AST nodes with SDK properties
59
+ augmentModel(model);
60
+ return {
61
+ model,
62
+ documents: [document.uri],
63
+ query: fromModel(model),
64
+ };
65
+ }
66
+ finally {
67
+ // Clean up the document to prevent memory leaks across repeated calls
68
+ shared.workspace.LangiumDocuments.deleteDocument(uri);
69
+ }
70
+ }
71
+ /**
72
+ * Creates a reusable model loader that shares Langium services across parse calls.
73
+ *
74
+ * **Browser-safe** - uses in-memory file system (EmptyFileSystem).
75
+ *
76
+ * For applications that parse multiple texts (web playgrounds, REPLs, batch tools),
77
+ * this avoids the overhead of creating new Langium services for each parse call.
78
+ *
79
+ * @returns A ModelLoader instance that can be used repeatedly
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * import { createModelLoader } from '@domainlang/language/sdk';
84
+ *
85
+ * const loader = createModelLoader();
86
+ *
87
+ * // Parse multiple texts efficiently - services are reused
88
+ * const result1 = await loader.loadFromText('Domain Sales { vision: "Sales" }');
89
+ * const result2 = await loader.loadFromText('Domain Billing { vision: "Billing" }');
90
+ * ```
91
+ */
92
+ export function createModelLoader() {
93
+ const servicesObj = createDomainLangServices(EmptyFileSystem);
94
+ const shared = servicesObj.shared;
95
+ const langServices = servicesObj.DomainLang;
96
+ return {
97
+ async loadFromText(text) {
98
+ return parseTextToContext(text, langServices, shared);
99
+ },
100
+ get services() {
101
+ return langServices;
102
+ }
103
+ };
104
+ }
23
105
  /**
24
106
  * Loads a DomainLang model from a text string.
25
107
  *
26
108
  * **Browser-safe** - uses in-memory file system (EmptyFileSystem).
27
109
  *
110
+ * For repeated parsing, prefer {@link createModelLoader} to reuse services.
111
+ *
28
112
  * Useful for:
29
113
  * - Testing
30
- * - REPL environments
31
- * - Web-based editors
114
+ * - One-off parsing
32
115
  * - Any environment without file system access
33
116
  *
34
117
  * @param text - DomainLang source code
@@ -55,31 +138,7 @@ export async function loadModelFromText(text, options) {
55
138
  ? { shared: options.services.shared, DomainLang: options.services }
56
139
  : createDomainLangServices(EmptyFileSystem);
57
140
  const shared = servicesObj.shared;
58
- // Create document from text with a virtual URI
59
- const uri = URI.parse('memory:///model.dlang');
60
- const document = shared.workspace.LangiumDocumentFactory.fromString(text, uri);
61
- // Register and build document
62
- shared.workspace.LangiumDocuments.addDocument(document);
63
- await shared.workspace.DocumentBuilder.build([document], { validation: true });
64
- // Check for parsing errors
65
- if (document.parseResult.lexerErrors.length > 0) {
66
- const errors = document.parseResult.lexerErrors.map(e => e.message).join('\n ');
67
- throw new Error(`Lexer errors:\n ${errors}`);
68
- }
69
- if (document.parseResult.parserErrors.length > 0) {
70
- const errors = document.parseResult.parserErrors.map(e => e.message).join('\n ');
71
- throw new Error(`Parser errors:\n ${errors}`);
72
- }
73
- const model = document.parseResult.value;
74
- if (!isModel(model)) {
75
- throw new Error(`Document root is not a Model`);
76
- }
77
- // Augment AST nodes with SDK properties
78
- augmentModel(model);
79
- return {
80
- model,
81
- documents: [document.uri],
82
- query: fromModel(model),
83
- };
141
+ const langServices = servicesObj.DomainLang;
142
+ return parseTextToContext(text, langServices, shared);
84
143
  }
85
144
  //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/sdk/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,IAAY,EACZ,OAAqB;IAErB,uEAAuE;IACvE,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,eAAe,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAElC,+CAA+C;IAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAAQ,IAAI,EAAE,GAAG,CAAC,CAAC;IAEtF,8BAA8B;IAC9B,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,IAAI,EAAE,CAAC,CAAC;IAE/E,2BAA2B;IAC3B,IAAI,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;IACzC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IAED,wCAAwC;IACxC,YAAY,CAAC,KAAK,CAAC,CAAC;IAEpB,OAAO;QACH,KAAK;QACL,SAAS,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;QACzB,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;KAC1B,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/sdk/loader.ts"],"names":[],"mappings":"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"}
package/out/sdk/query.js CHANGED
@@ -88,9 +88,7 @@ class QueryImpl {
88
88
  * Lazily builds and caches indexes on first access.
89
89
  */
90
90
  getIndexes() {
91
- if (!this.indexes) {
92
- this.indexes = buildIndexes(this.model);
93
- }
91
+ this.indexes ?? (this.indexes = buildIndexes(this.model));
94
92
  return this.indexes;
95
93
  }
96
94
  domains() {
@@ -147,7 +145,11 @@ class QueryImpl {
147
145
  }
148
146
  /** @internal Generator for relationship iteration */
149
147
  *iterateRelationships() {
150
- // Collect relationships defined on bounded contexts
148
+ yield* this.collectBoundedContextRelationships();
149
+ yield* this.collectContextMapRelationships();
150
+ }
151
+ /** @internal Collects relationships from bounded contexts */
152
+ *collectBoundedContextRelationships() {
151
153
  for (const node of AstUtils.streamAllContents(this.model)) {
152
154
  if (isBoundedContext(node)) {
153
155
  for (const rel of node.relationships) {
@@ -158,7 +160,9 @@ class QueryImpl {
158
160
  }
159
161
  }
160
162
  }
161
- // Collect from ContextMap.relationships
163
+ }
164
+ /** @internal Collects relationships from context maps */
165
+ *collectContextMapRelationships() {
162
166
  for (const node of AstUtils.streamAllContents(this.model)) {
163
167
  if (isContextMap(node)) {
164
168
  for (const rel of node.relationships) {
@@ -342,10 +346,9 @@ class QueryBuilderImpl {
342
346
  });
343
347
  }
344
348
  first() {
345
- for (const item of this) {
346
- return item;
347
- }
348
- return undefined;
349
+ const iterator = this[Symbol.iterator]();
350
+ const result = iterator.next();
351
+ return result.done ? undefined : result.value;
349
352
  }
350
353
  toArray() {
351
354
  return Array.from(this);
@@ -428,7 +431,7 @@ class BcQueryBuilderImpl extends QueryBuilderImpl {
428
431
  * Escapes special regex characters in a string.
429
432
  */
430
433
  function escapeRegex(str) {
431
- return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
434
+ return str.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw `\$&`);
432
435
  }
433
436
  /**
434
437
  * Augments BoundedContext instances with SDK-resolved properties.
@@ -657,7 +660,7 @@ function augmentModelInternal(model) {
657
660
  else if (isContextMap(node)) {
658
661
  // Augment relationships in context maps (no containing BC)
659
662
  for (const rel of node.relationships) {
660
- augmentRelationship(rel, undefined);
663
+ augmentRelationship(rel);
661
664
  }
662
665
  }
663
666
  }