@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.
- package/out/domain-lang-module.d.ts +0 -2
- package/out/domain-lang-module.js +3 -11
- package/out/domain-lang-module.js.map +1 -1
- package/out/generated/ast.d.ts +19 -8
- package/out/generated/ast.js +10 -1
- package/out/generated/ast.js.map +1 -1
- package/out/generated/grammar.d.ts +1 -1
- package/out/generated/grammar.js +123 -28
- package/out/generated/grammar.js.map +1 -1
- package/out/generated/module.d.ts +1 -1
- package/out/generated/module.js +1 -1
- package/out/index.d.ts +0 -3
- package/out/index.js +0 -5
- package/out/index.js.map +1 -1
- package/out/lsp/hover/domain-lang-hover.js +4 -0
- package/out/lsp/hover/domain-lang-hover.js.map +1 -1
- package/out/sdk/index.d.ts +1 -1
- package/out/sdk/loader-node.d.ts +3 -7
- package/out/sdk/loader-node.js +9 -24
- package/out/sdk/loader-node.js.map +1 -1
- package/out/sdk/types.d.ts +21 -0
- package/out/services/dependency-analyzer.d.ts +39 -3
- package/out/services/dependency-analyzer.js +47 -22
- package/out/services/dependency-analyzer.js.map +1 -1
- package/out/services/dependency-resolver.d.ts +45 -68
- package/out/services/dependency-resolver.js +43 -243
- package/out/services/dependency-resolver.js.map +1 -1
- package/out/services/git-url-resolver.browser.d.ts +12 -4
- package/out/services/git-url-resolver.browser.js +1 -5
- package/out/services/git-url-resolver.browser.js.map +1 -1
- package/out/services/git-url-resolver.d.ts +56 -22
- package/out/services/git-url-resolver.js +36 -70
- package/out/services/git-url-resolver.js.map +1 -1
- package/out/services/governance-validator.d.ts +37 -1
- package/out/services/governance-validator.js +10 -4
- package/out/services/governance-validator.js.map +1 -1
- package/out/services/import-resolver.d.ts +6 -65
- package/out/services/import-resolver.js +5 -223
- package/out/services/import-resolver.js.map +1 -1
- package/out/services/performance-optimizer.d.ts +1 -1
- package/out/services/workspace-manager.d.ts +10 -57
- package/out/services/workspace-manager.js +21 -187
- package/out/services/workspace-manager.js.map +1 -1
- package/out/syntaxes/domain-lang.monarch.js +1 -1
- package/out/syntaxes/domain-lang.monarch.js.map +1 -1
- package/out/utils/import-utils.d.ts +12 -4
- package/out/utils/import-utils.js +135 -35
- package/out/utils/import-utils.js.map +1 -1
- package/out/validation/constants.d.ts +0 -103
- package/out/validation/constants.js +1 -140
- package/out/validation/constants.js.map +1 -1
- package/out/validation/domain.js +1 -46
- package/out/validation/domain.js.map +1 -1
- package/out/validation/import.d.ts +22 -46
- package/out/validation/import.js +85 -187
- package/out/validation/import.js.map +1 -1
- package/out/validation/maps.js +6 -10
- package/out/validation/maps.js.map +1 -1
- package/out/validation/metadata.js +1 -5
- package/out/validation/metadata.js.map +1 -1
- package/package.json +6 -8
- package/src/domain-lang-module.ts +6 -18
- package/src/domain-lang.langium +12 -7
- package/src/generated/ast.ts +20 -7
- package/src/generated/grammar.ts +123 -28
- package/src/generated/module.ts +1 -1
- package/src/index.ts +0 -7
- package/src/lsp/hover/domain-lang-hover.ts +2 -0
- package/src/sdk/index.ts +2 -0
- package/src/sdk/loader-node.ts +9 -29
- package/src/sdk/types.ts +23 -0
- package/src/services/dependency-analyzer.ts +84 -24
- package/src/services/dependency-resolver.ts +84 -301
- package/src/services/git-url-resolver.browser.ts +14 -9
- package/src/services/git-url-resolver.ts +93 -86
- package/src/services/governance-validator.ts +47 -5
- package/src/services/import-resolver.ts +8 -270
- package/src/services/performance-optimizer.ts +1 -1
- package/src/services/workspace-manager.ts +46 -237
- package/src/syntaxes/domain-lang.monarch.ts +1 -1
- package/src/utils/import-utils.ts +160 -38
- package/src/validation/constants.ts +1 -181
- package/src/validation/domain.ts +1 -54
- package/src/validation/import.ts +104 -228
- package/src/validation/maps.ts +6 -10
- package/src/validation/metadata.ts +1 -5
- package/out/lsp/domain-lang-code-actions.d.ts +0 -55
- package/out/lsp/domain-lang-code-actions.js +0 -143
- package/out/lsp/domain-lang-code-actions.js.map +0 -1
- package/out/lsp/domain-lang-workspace-manager.d.ts +0 -21
- package/out/lsp/domain-lang-workspace-manager.js +0 -93
- package/out/lsp/domain-lang-workspace-manager.js.map +0 -1
- package/out/lsp/manifest-diagnostics.d.ts +0 -82
- package/out/lsp/manifest-diagnostics.js +0 -230
- package/out/lsp/manifest-diagnostics.js.map +0 -1
- package/out/services/semver.d.ts +0 -98
- package/out/services/semver.js +0 -195
- package/out/services/semver.js.map +0 -1
- package/out/services/types.d.ts +0 -340
- package/out/services/types.js +0 -46
- package/out/services/types.js.map +0 -1
- package/out/validation/manifest.d.ts +0 -144
- package/out/validation/manifest.js +0 -327
- package/out/validation/manifest.js.map +0 -1
- package/src/lsp/domain-lang-code-actions.ts +0 -189
- package/src/lsp/domain-lang-workspace-manager.ts +0 -104
- package/src/lsp/manifest-diagnostics.ts +0 -290
- package/src/services/semver.ts +0 -213
- package/src/services/types.ts +0 -415
- package/src/validation/manifest.ts +0 -439
|
@@ -8,12 +8,42 @@
|
|
|
8
8
|
* - Version policy enforcement
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type { LockFile
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
181
|
-
? `${node.
|
|
182
|
-
: node.
|
|
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}@${
|
|
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
|
|
276
|
+
* Resolves version policies (latest, stable) to concrete versions.
|
|
247
277
|
*/
|
|
248
278
|
async resolveVersionPolicy(
|
|
249
|
-
|
|
279
|
+
packageKey: string,
|
|
250
280
|
policy: string,
|
|
251
|
-
|
|
281
|
+
availableVersions: string[]
|
|
252
282
|
): Promise<VersionPolicy> {
|
|
253
283
|
if (policy === 'latest') {
|
|
254
|
-
// Return the most recent
|
|
255
|
-
const sorted =
|
|
284
|
+
// Return the most recent version
|
|
285
|
+
const sorted = this.sortVersions(availableVersions);
|
|
256
286
|
return {
|
|
257
287
|
policy: 'latest',
|
|
258
|
-
|
|
259
|
-
|
|
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
|
|
265
|
-
const stable =
|
|
266
|
-
const sorted =
|
|
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
|
-
|
|
270
|
-
|
|
299
|
+
version: sorted[0] || 'main',
|
|
300
|
+
availableVersions: sorted,
|
|
271
301
|
};
|
|
272
302
|
}
|
|
273
303
|
|
|
274
|
-
// Pinned
|
|
304
|
+
// Pinned version
|
|
275
305
|
return {
|
|
276
306
|
policy: 'pinned',
|
|
277
|
-
|
|
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
|
}
|