@domainlang/language 0.1.20 → 0.1.82

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 (110) hide show
  1. package/out/domain-lang-module.d.ts +0 -2
  2. package/out/domain-lang-module.js +3 -11
  3. package/out/domain-lang-module.js.map +1 -1
  4. package/out/generated/ast.d.ts +19 -8
  5. package/out/generated/ast.js +10 -1
  6. package/out/generated/ast.js.map +1 -1
  7. package/out/generated/grammar.d.ts +1 -1
  8. package/out/generated/grammar.js +123 -28
  9. package/out/generated/grammar.js.map +1 -1
  10. package/out/generated/module.d.ts +1 -1
  11. package/out/generated/module.js +1 -1
  12. package/out/index.d.ts +0 -3
  13. package/out/index.js +0 -5
  14. package/out/index.js.map +1 -1
  15. package/out/lsp/hover/domain-lang-hover.js +4 -0
  16. package/out/lsp/hover/domain-lang-hover.js.map +1 -1
  17. package/out/sdk/index.d.ts +1 -1
  18. package/out/sdk/loader-node.d.ts +3 -7
  19. package/out/sdk/loader-node.js +9 -24
  20. package/out/sdk/loader-node.js.map +1 -1
  21. package/out/sdk/types.d.ts +21 -0
  22. package/out/services/dependency-analyzer.d.ts +39 -3
  23. package/out/services/dependency-analyzer.js +47 -22
  24. package/out/services/dependency-analyzer.js.map +1 -1
  25. package/out/services/dependency-resolver.d.ts +45 -68
  26. package/out/services/dependency-resolver.js +43 -243
  27. package/out/services/dependency-resolver.js.map +1 -1
  28. package/out/services/git-url-resolver.browser.d.ts +12 -4
  29. package/out/services/git-url-resolver.browser.js +1 -5
  30. package/out/services/git-url-resolver.browser.js.map +1 -1
  31. package/out/services/git-url-resolver.d.ts +56 -22
  32. package/out/services/git-url-resolver.js +36 -70
  33. package/out/services/git-url-resolver.js.map +1 -1
  34. package/out/services/governance-validator.d.ts +37 -1
  35. package/out/services/governance-validator.js +10 -4
  36. package/out/services/governance-validator.js.map +1 -1
  37. package/out/services/import-resolver.d.ts +6 -65
  38. package/out/services/import-resolver.js +5 -223
  39. package/out/services/import-resolver.js.map +1 -1
  40. package/out/services/performance-optimizer.d.ts +1 -1
  41. package/out/services/workspace-manager.d.ts +10 -57
  42. package/out/services/workspace-manager.js +21 -187
  43. package/out/services/workspace-manager.js.map +1 -1
  44. package/out/syntaxes/domain-lang.monarch.js +1 -1
  45. package/out/syntaxes/domain-lang.monarch.js.map +1 -1
  46. package/out/utils/import-utils.d.ts +12 -4
  47. package/out/utils/import-utils.js +135 -35
  48. package/out/utils/import-utils.js.map +1 -1
  49. package/out/validation/constants.d.ts +0 -103
  50. package/out/validation/constants.js +1 -140
  51. package/out/validation/constants.js.map +1 -1
  52. package/out/validation/domain.js +1 -46
  53. package/out/validation/domain.js.map +1 -1
  54. package/out/validation/import.d.ts +22 -46
  55. package/out/validation/import.js +85 -187
  56. package/out/validation/import.js.map +1 -1
  57. package/out/validation/maps.js +6 -10
  58. package/out/validation/maps.js.map +1 -1
  59. package/out/validation/metadata.js +1 -5
  60. package/out/validation/metadata.js.map +1 -1
  61. package/package.json +6 -8
  62. package/src/domain-lang-module.ts +6 -18
  63. package/src/domain-lang.langium +12 -7
  64. package/src/generated/ast.ts +20 -7
  65. package/src/generated/grammar.ts +123 -28
  66. package/src/generated/module.ts +1 -1
  67. package/src/index.ts +0 -7
  68. package/src/lsp/hover/domain-lang-hover.ts +2 -0
  69. package/src/sdk/index.ts +2 -0
  70. package/src/sdk/loader-node.ts +9 -29
  71. package/src/sdk/types.ts +23 -0
  72. package/src/services/dependency-analyzer.ts +84 -24
  73. package/src/services/dependency-resolver.ts +84 -301
  74. package/src/services/git-url-resolver.browser.ts +14 -9
  75. package/src/services/git-url-resolver.ts +93 -86
  76. package/src/services/governance-validator.ts +47 -5
  77. package/src/services/import-resolver.ts +8 -270
  78. package/src/services/performance-optimizer.ts +1 -1
  79. package/src/services/workspace-manager.ts +46 -237
  80. package/src/syntaxes/domain-lang.monarch.ts +1 -1
  81. package/src/utils/import-utils.ts +160 -38
  82. package/src/validation/constants.ts +1 -181
  83. package/src/validation/domain.ts +1 -54
  84. package/src/validation/import.ts +104 -228
  85. package/src/validation/maps.ts +6 -10
  86. package/src/validation/metadata.ts +1 -5
  87. package/out/lsp/domain-lang-code-actions.d.ts +0 -55
  88. package/out/lsp/domain-lang-code-actions.js +0 -143
  89. package/out/lsp/domain-lang-code-actions.js.map +0 -1
  90. package/out/lsp/domain-lang-workspace-manager.d.ts +0 -21
  91. package/out/lsp/domain-lang-workspace-manager.js +0 -93
  92. package/out/lsp/domain-lang-workspace-manager.js.map +0 -1
  93. package/out/lsp/manifest-diagnostics.d.ts +0 -82
  94. package/out/lsp/manifest-diagnostics.js +0 -230
  95. package/out/lsp/manifest-diagnostics.js.map +0 -1
  96. package/out/services/semver.d.ts +0 -98
  97. package/out/services/semver.js +0 -195
  98. package/out/services/semver.js.map +0 -1
  99. package/out/services/types.d.ts +0 -340
  100. package/out/services/types.js +0 -46
  101. package/out/services/types.js.map +0 -1
  102. package/out/validation/manifest.d.ts +0 -144
  103. package/out/validation/manifest.js +0 -327
  104. package/out/validation/manifest.js.map +0 -1
  105. package/src/lsp/domain-lang-code-actions.ts +0 -189
  106. package/src/lsp/domain-lang-workspace-manager.ts +0 -104
  107. package/src/lsp/manifest-diagnostics.ts +0 -290
  108. package/src/services/semver.ts +0 -213
  109. package/src/services/types.ts +0 -415
  110. package/src/validation/manifest.ts +0 -439
@@ -8,12 +8,42 @@
8
8
  * - Version policy enforcement
9
9
  */
10
10
 
11
- import type { LockFile, DependencyTreeNode, ReverseDependency, VersionPolicy } from './types.js';
11
+ import type { LockFile } from './git-url-resolver.js';
12
12
  import path from 'node:path';
13
13
  import fs from 'node:fs/promises';
14
14
  import os from 'node:os';
15
15
  import YAML from 'yaml';
16
- import { sortVersionsDescending, isPreRelease } from './semver.js';
16
+
17
+ export interface DependencyTreeNode {
18
+ /** Package identifier */
19
+ packageKey: string;
20
+ /** Locked version */
21
+ version: string;
22
+ /** Commit hash */
23
+ commit: string;
24
+ /** Direct dependencies */
25
+ dependencies: DependencyTreeNode[];
26
+ /** Depth in tree (0 = root) */
27
+ depth: number;
28
+ }
29
+
30
+ export interface ReverseDependency {
31
+ /** Package that depends on the target */
32
+ dependentPackage: string;
33
+ /** Version of the dependent package */
34
+ version: string;
35
+ /** Type: direct or transitive */
36
+ type: 'direct' | 'transitive';
37
+ }
38
+
39
+ export interface VersionPolicy {
40
+ /** Policy name: latest, stable, or specific version */
41
+ policy: 'latest' | 'stable' | 'pinned';
42
+ /** Resolved version */
43
+ version: string;
44
+ /** Available versions for policy */
45
+ availableVersions?: string[];
46
+ }
17
47
 
18
48
  /**
19
49
  * Analyzes dependency relationships and provides visualization/analysis tools.
@@ -79,7 +109,7 @@ export class DependencyAnalyzer {
79
109
  if (visited.has(packageKey)) {
80
110
  return {
81
111
  packageKey,
82
- ref: locked.ref,
112
+ version: locked.version,
83
113
  commit: locked.commit,
84
114
  dependencies: [], // Don't recurse into already visited
85
115
  depth,
@@ -103,7 +133,7 @@ export class DependencyAnalyzer {
103
133
 
104
134
  return {
105
135
  packageKey,
106
- ref: locked.ref,
136
+ version: locked.version,
107
137
  commit: locked.commit,
108
138
  dependencies: children,
109
139
  depth,
@@ -138,7 +168,7 @@ export class DependencyAnalyzer {
138
168
  if (dep.source === targetPackage) {
139
169
  reverseDeps.push({
140
170
  dependentPackage: 'root',
141
- ref: 'workspace',
171
+ version: 'workspace',
142
172
  type: 'direct',
143
173
  });
144
174
  }
@@ -160,7 +190,7 @@ export class DependencyAnalyzer {
160
190
  if (packageDeps[targetPackage]) {
161
191
  reverseDeps.push({
162
192
  dependentPackage: packageKey,
163
- ref: locked.ref,
193
+ version: locked.version,
164
194
  type: 'direct',
165
195
  });
166
196
  }
@@ -177,11 +207,11 @@ export class DependencyAnalyzer {
177
207
 
178
208
  const formatNode = (node: DependencyTreeNode, prefix: string, isLast: boolean): void => {
179
209
  const branch = isLast ? '└── ' : '├── ';
180
- const refStr = options.showCommits
181
- ? `${node.ref} (${node.commit.substring(0, 7)})`
182
- : node.ref;
210
+ const versionStr = options.showCommits
211
+ ? `${node.version} (${node.commit.substring(0, 7)})`
212
+ : node.version;
183
213
 
184
- lines.push(`${prefix}${branch}${node.packageKey}@${refStr}`);
214
+ lines.push(`${prefix}${branch}${node.packageKey}@${versionStr}`);
185
215
 
186
216
  const childPrefix = prefix + (isLast ? ' ' : '│ ');
187
217
  node.dependencies.forEach((child, index) => {
@@ -243,38 +273,38 @@ export class DependencyAnalyzer {
243
273
  }
244
274
 
245
275
  /**
246
- * Resolves ref policies (latest, stable) to concrete refs.
276
+ * Resolves version policies (latest, stable) to concrete versions.
247
277
  */
248
278
  async resolveVersionPolicy(
249
- _packageKey: string,
279
+ packageKey: string,
250
280
  policy: string,
251
- availableRefs: string[]
281
+ availableVersions: string[]
252
282
  ): Promise<VersionPolicy> {
253
283
  if (policy === 'latest') {
254
- // Return the most recent ref
255
- const sorted = sortVersionsDescending(availableRefs);
284
+ // Return the most recent version
285
+ const sorted = this.sortVersions(availableVersions);
256
286
  return {
257
287
  policy: 'latest',
258
- ref: sorted[0] || 'main',
259
- availableRefs: sorted,
288
+ version: sorted[0] || 'main',
289
+ availableVersions: sorted,
260
290
  };
261
291
  }
262
292
 
263
293
  if (policy === 'stable') {
264
- // Return the most recent stable ref (exclude pre-release)
265
- const stable = availableRefs.filter(v => !isPreRelease(v));
266
- const sorted = sortVersionsDescending(stable);
294
+ // Return the most recent stable version (exclude pre-release)
295
+ const stable = availableVersions.filter(v => !this.isPreRelease(v));
296
+ const sorted = this.sortVersions(stable);
267
297
  return {
268
298
  policy: 'stable',
269
- ref: sorted[0] || 'main',
270
- availableRefs: sorted,
299
+ version: sorted[0] || 'main',
300
+ availableVersions: sorted,
271
301
  };
272
302
  }
273
303
 
274
- // Pinned ref
304
+ // Pinned version
275
305
  return {
276
306
  policy: 'pinned',
277
- ref: policy,
307
+ version: policy,
278
308
  };
279
309
  }
280
310
 
@@ -318,4 +348,34 @@ export class DependencyAnalyzer {
318
348
  return {};
319
349
  }
320
350
  }
351
+
352
+ /**
353
+ * Sorts versions in descending order (newest first).
354
+ */
355
+ private sortVersions(versions: string[]): string[] {
356
+ return versions.sort((a, b) => {
357
+ // Simple lexicographic sort (good enough for basic semver)
358
+ // Production: use semver library
359
+ const aParts = a.replace(/^v/, '').split('.').map(Number);
360
+ const bParts = b.replace(/^v/, '').split('.').map(Number);
361
+
362
+ for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
363
+ const aNum = aParts[i] || 0;
364
+ const bNum = bParts[i] || 0;
365
+ if (aNum !== bNum) {
366
+ return bNum - aNum; // Descending
367
+ }
368
+ }
369
+
370
+ return 0;
371
+ });
372
+ }
373
+
374
+ /**
375
+ * Checks if a version is a pre-release.
376
+ */
377
+ private isPreRelease(version: string): boolean {
378
+ const clean = version.replace(/^v/, '');
379
+ return /-(alpha|beta|rc|pre|dev)/.test(clean);
380
+ }
321
381
  }