@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
|
@@ -9,31 +9,17 @@
|
|
|
9
9
|
* 2. Download all direct dependencies
|
|
10
10
|
* 3. Parse each dependency's model.yaml
|
|
11
11
|
* 4. Recursively discover transitive dependencies
|
|
12
|
-
* 5. Resolve version constraints
|
|
12
|
+
* 5. Resolve version constraints (simple: use latest satisfying version)
|
|
13
13
|
* 6. Generate lock file with pinned commit hashes
|
|
14
|
-
*
|
|
15
|
-
* Resolution Strategy ("Latest Wins"):
|
|
16
|
-
* - SemVer tags (same major): Pick highest compatible version
|
|
17
|
-
* - Same branch: No conflict, resolve once
|
|
18
|
-
* - Commit pins: Error (explicit pins are intentional)
|
|
19
|
-
* - Major version mismatch: Error
|
|
20
|
-
* - Tag vs Branch: Error (incompatible intent)
|
|
21
14
|
*/
|
|
22
15
|
import path from 'node:path';
|
|
23
16
|
import fs from 'node:fs/promises';
|
|
24
17
|
import YAML from 'yaml';
|
|
25
18
|
import { GitUrlParser, GitUrlResolver } from './git-url-resolver.js';
|
|
26
|
-
import { parseSemVer, pickLatestSemVer, detectRefType } from './semver.js';
|
|
27
19
|
export class DependencyResolver {
|
|
28
20
|
constructor(workspaceRoot, gitResolver) {
|
|
29
|
-
/** Override messages for CLI output */
|
|
30
|
-
this.overrideMessages = [];
|
|
31
|
-
/** Resolution messages from "Latest Wins" auto-resolution */
|
|
32
|
-
this.resolutionMessages = [];
|
|
33
21
|
this.workspaceRoot = workspaceRoot;
|
|
34
|
-
|
|
35
|
-
const cacheDir = path.join(workspaceRoot, '.dlang', 'packages');
|
|
36
|
-
this.gitResolver = gitResolver || new GitUrlResolver(cacheDir);
|
|
22
|
+
this.gitResolver = gitResolver || new GitUrlResolver();
|
|
37
23
|
}
|
|
38
24
|
/**
|
|
39
25
|
* Resolves all dependencies for a workspace.
|
|
@@ -56,47 +42,11 @@ export class DependencyResolver {
|
|
|
56
42
|
}
|
|
57
43
|
// Build dependency graph
|
|
58
44
|
const graph = await this.buildDependencyGraph(rootConfig);
|
|
59
|
-
// Apply overrides before conflict detection
|
|
60
|
-
this.applyOverrides(graph, rootConfig.overrides);
|
|
61
|
-
// Detect version conflicts and package-level cycles before resolving
|
|
62
|
-
this.detectVersionConflicts(graph);
|
|
63
|
-
this.detectPackageCycles(graph);
|
|
64
45
|
// Resolve version constraints
|
|
65
46
|
await this.resolveVersions(graph);
|
|
66
47
|
// Generate and return lock file (caller writes to disk)
|
|
67
48
|
return this.generateLockFile(graph);
|
|
68
49
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Applies ref overrides from model.yaml to resolve conflicts explicitly.
|
|
71
|
-
*
|
|
72
|
-
* Overrides take precedence over all other constraints.
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
* ```yaml
|
|
76
|
-
* overrides:
|
|
77
|
-
* domainlang/core: v2.0.0
|
|
78
|
-
* ```
|
|
79
|
-
*/
|
|
80
|
-
applyOverrides(graph, overrides) {
|
|
81
|
-
if (!overrides)
|
|
82
|
-
return;
|
|
83
|
-
for (const [pkg, overrideRef] of Object.entries(overrides)) {
|
|
84
|
-
const node = graph.nodes[pkg];
|
|
85
|
-
if (node) {
|
|
86
|
-
// Override replaces all constraints with a single definitive ref
|
|
87
|
-
node.constraints = new Set([overrideRef]);
|
|
88
|
-
node.refConstraint = overrideRef;
|
|
89
|
-
// Track that this was an override for messaging
|
|
90
|
-
this.overrideMessages.push(`Override applied: ${pkg}@${overrideRef}`);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Returns any override messages from the last dependency resolution.
|
|
96
|
-
*/
|
|
97
|
-
getOverrideMessages() {
|
|
98
|
-
return this.overrideMessages;
|
|
99
|
-
}
|
|
100
50
|
/**
|
|
101
51
|
* Builds the complete dependency graph by recursively discovering transitive dependencies.
|
|
102
52
|
*/
|
|
@@ -107,10 +57,10 @@ export class DependencyResolver {
|
|
|
107
57
|
};
|
|
108
58
|
// Process root dependencies
|
|
109
59
|
const queue = [];
|
|
110
|
-
for (const [depName,
|
|
60
|
+
for (const [depName, versionConstraint] of Object.entries(rootConfig.dependencies || {})) {
|
|
111
61
|
queue.push({
|
|
112
62
|
packageKey: depName,
|
|
113
|
-
|
|
63
|
+
versionConstraint,
|
|
114
64
|
parent: graph.root
|
|
115
65
|
});
|
|
116
66
|
}
|
|
@@ -120,23 +70,19 @@ export class DependencyResolver {
|
|
|
120
70
|
const entry = queue.shift();
|
|
121
71
|
if (!entry)
|
|
122
72
|
break;
|
|
123
|
-
const { packageKey,
|
|
73
|
+
const { packageKey, versionConstraint, parent } = entry;
|
|
124
74
|
// Skip if already processed
|
|
125
75
|
if (visited.has(packageKey)) {
|
|
126
|
-
// Update dependents list
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
existing.dependents.push(parent);
|
|
76
|
+
// Update dependents list
|
|
77
|
+
if (!graph.nodes[packageKey].dependents.includes(parent)) {
|
|
78
|
+
graph.nodes[packageKey].dependents.push(parent);
|
|
130
79
|
}
|
|
131
|
-
if (!existing.constraints)
|
|
132
|
-
existing.constraints = new Set();
|
|
133
|
-
existing.constraints.add(refConstraint);
|
|
134
80
|
continue;
|
|
135
81
|
}
|
|
136
82
|
visited.add(packageKey);
|
|
137
83
|
// Parse package identifier
|
|
138
84
|
const gitInfo = GitUrlParser.parse(packageKey);
|
|
139
|
-
// Download package to get its
|
|
85
|
+
// Download package to get its dlang.toml
|
|
140
86
|
const packageUri = await this.gitResolver.resolve(packageKey);
|
|
141
87
|
const packageDir = path.dirname(packageUri.fsPath);
|
|
142
88
|
// Load package config
|
|
@@ -144,17 +90,16 @@ export class DependencyResolver {
|
|
|
144
90
|
// Add to graph
|
|
145
91
|
graph.nodes[packageKey] = {
|
|
146
92
|
packageKey,
|
|
147
|
-
|
|
148
|
-
constraints: new Set([refConstraint]),
|
|
93
|
+
versionConstraint,
|
|
149
94
|
repoUrl: gitInfo.repoUrl,
|
|
150
95
|
dependencies: packageConfig.dependencies || {},
|
|
151
96
|
dependents: [parent],
|
|
152
97
|
};
|
|
153
98
|
// Queue transitive dependencies
|
|
154
|
-
for (const [transDepName,
|
|
99
|
+
for (const [transDepName, transVersionConstraint] of Object.entries(packageConfig.dependencies || {})) {
|
|
155
100
|
queue.push({
|
|
156
101
|
packageKey: transDepName,
|
|
157
|
-
|
|
102
|
+
versionConstraint: transVersionConstraint,
|
|
158
103
|
parent: packageKey,
|
|
159
104
|
});
|
|
160
105
|
}
|
|
@@ -162,45 +107,43 @@ export class DependencyResolver {
|
|
|
162
107
|
return graph;
|
|
163
108
|
}
|
|
164
109
|
/**
|
|
165
|
-
* Resolves
|
|
110
|
+
* Resolves version constraints to specific versions.
|
|
166
111
|
*
|
|
167
|
-
* Simple algorithm: Use the
|
|
168
|
-
*
|
|
112
|
+
* Simple algorithm: Use the latest version that satisfies all constraints.
|
|
113
|
+
* Future: Implement proper semantic versioning resolution.
|
|
169
114
|
*/
|
|
170
115
|
async resolveVersions(graph) {
|
|
171
116
|
for (const [packageKey, node] of Object.entries(graph.nodes)) {
|
|
172
117
|
// Parse package to get repo info
|
|
173
118
|
const gitInfo = GitUrlParser.parse(packageKey);
|
|
174
|
-
//
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
node.resolvedRef = ref;
|
|
181
|
-
node.refType = refType;
|
|
119
|
+
// For now, resolve to the version specified in the constraint
|
|
120
|
+
// Future: Implement proper semver range resolution
|
|
121
|
+
const version = this.extractVersionFromConstraint(node.versionConstraint);
|
|
122
|
+
// Resolve version to commit hash
|
|
123
|
+
const commitHash = await this.resolveCommitHash(gitInfo.repoUrl, version);
|
|
124
|
+
node.resolvedVersion = version;
|
|
182
125
|
node.commitHash = commitHash;
|
|
183
126
|
}
|
|
184
127
|
}
|
|
185
128
|
/**
|
|
186
|
-
* Extracts a
|
|
129
|
+
* Extracts a version from a constraint string.
|
|
187
130
|
*
|
|
188
131
|
* Examples:
|
|
189
|
-
* - "^1.0.0" → "1.0.0"
|
|
190
|
-
* - "~2.3.0" → "2.3.0"
|
|
191
|
-
* - "1.5.0" → "1.5.0"
|
|
192
|
-
* - "main" → "main" (treated as branch)
|
|
193
|
-
* - "abc123def" → "abc123def" (treated as commit)
|
|
132
|
+
* - "^1.0.0" → "1.0.0"
|
|
133
|
+
* - "~2.3.0" → "2.3.0"
|
|
134
|
+
* - "1.5.0" → "1.5.0"
|
|
194
135
|
* - "owner/repo@1.0.0" → "1.0.0"
|
|
136
|
+
*
|
|
137
|
+
* Future: Implement proper semver range parsing and resolution.
|
|
195
138
|
*/
|
|
196
|
-
|
|
197
|
-
// Remove semver operators
|
|
198
|
-
let
|
|
199
|
-
// Extract
|
|
200
|
-
if (
|
|
201
|
-
|
|
139
|
+
extractVersionFromConstraint(constraint) {
|
|
140
|
+
// Remove semver operators
|
|
141
|
+
let version = constraint.replace(/^[\^~>=<]/, '');
|
|
142
|
+
// Extract version from full import URL if present
|
|
143
|
+
if (version.includes('@')) {
|
|
144
|
+
version = version.split('@')[1];
|
|
202
145
|
}
|
|
203
|
-
return
|
|
146
|
+
return version || 'main';
|
|
204
147
|
}
|
|
205
148
|
/**
|
|
206
149
|
* Resolves a version (tag/branch) to a commit hash using git ls-remote.
|
|
@@ -211,7 +154,7 @@ export class DependencyResolver {
|
|
|
211
154
|
const gitInfo = GitUrlParser.parse(`${repoUrl}@${version}`);
|
|
212
155
|
const uri = await this.gitResolver.resolve(gitInfo.original);
|
|
213
156
|
// Extract commit hash from cache path
|
|
214
|
-
//
|
|
157
|
+
// Cache format: ~/.dlang/cache/{platform}/{owner}/{repo}/{commit-hash}/
|
|
215
158
|
const pathParts = uri.fsPath.split(path.sep);
|
|
216
159
|
const commitHashIndex = pathParts.length - 2; // Second to last segment
|
|
217
160
|
return pathParts[commitHashIndex];
|
|
@@ -222,13 +165,11 @@ export class DependencyResolver {
|
|
|
222
165
|
generateLockFile(graph) {
|
|
223
166
|
const dependencies = {};
|
|
224
167
|
for (const [packageKey, node] of Object.entries(graph.nodes)) {
|
|
225
|
-
if (!node.
|
|
226
|
-
throw new Error(`Failed to resolve
|
|
227
|
-
`Hint: Check that the package exists and the ref is valid.`);
|
|
168
|
+
if (!node.resolvedVersion || !node.commitHash) {
|
|
169
|
+
throw new Error(`Failed to resolve version for ${packageKey}`);
|
|
228
170
|
}
|
|
229
171
|
dependencies[packageKey] = {
|
|
230
|
-
|
|
231
|
-
refType: node.refType ?? 'commit',
|
|
172
|
+
version: node.resolvedVersion,
|
|
232
173
|
resolved: node.repoUrl || '',
|
|
233
174
|
commit: node.commitHash,
|
|
234
175
|
// Future: Calculate integrity hash
|
|
@@ -265,7 +206,7 @@ export class DependencyResolver {
|
|
|
265
206
|
* dependencies:
|
|
266
207
|
* package-name:
|
|
267
208
|
* source: owner/repo
|
|
268
|
-
*
|
|
209
|
+
* version: ^1.0.0
|
|
269
210
|
*/
|
|
270
211
|
parseYaml(content) {
|
|
271
212
|
const parsed = YAML.parse(content);
|
|
@@ -273,161 +214,20 @@ export class DependencyResolver {
|
|
|
273
214
|
if (parsed.model) {
|
|
274
215
|
config.name = parsed.model.name;
|
|
275
216
|
config.version = parsed.model.version;
|
|
276
|
-
config.
|
|
217
|
+
config.main = parsed.model.entry;
|
|
277
218
|
}
|
|
278
219
|
if (parsed.dependencies) {
|
|
279
220
|
config.dependencies = {};
|
|
280
221
|
for (const [, depInfo] of Object.entries(parsed.dependencies)) {
|
|
281
222
|
if (depInfo.source) {
|
|
282
|
-
const
|
|
283
|
-
// Store as "source@
|
|
284
|
-
config.dependencies[depInfo.source] =
|
|
223
|
+
const versionConstraint = depInfo.version || 'main';
|
|
224
|
+
// Store as "source@version" for consistency with import resolution
|
|
225
|
+
config.dependencies[depInfo.source] = versionConstraint;
|
|
285
226
|
}
|
|
286
227
|
}
|
|
287
228
|
}
|
|
288
|
-
// Parse overrides section for explicit ref control
|
|
289
|
-
if (parsed.overrides) {
|
|
290
|
-
config.overrides = parsed.overrides;
|
|
291
|
-
}
|
|
292
229
|
return config;
|
|
293
230
|
}
|
|
294
|
-
/**
|
|
295
|
-
* Detects ref conflicts and applies "Latest Wins" resolution strategy.
|
|
296
|
-
*
|
|
297
|
-
* Resolution Rules:
|
|
298
|
-
* - SemVer tags (same major): Pick highest version automatically
|
|
299
|
-
* - Same branch refs: No conflict, use single resolution
|
|
300
|
-
* - Commit SHA conflicts: Error (explicit pins are intentional)
|
|
301
|
-
* - Major version mismatch: Error (breaking change)
|
|
302
|
-
* - Tag vs Branch: Error (incompatible intent)
|
|
303
|
-
*
|
|
304
|
-
* Modifies graph nodes in-place to set the resolved constraint.
|
|
305
|
-
* Throws an error only for unresolvable conflicts.
|
|
306
|
-
*/
|
|
307
|
-
detectVersionConflicts(graph) {
|
|
308
|
-
const resolutionMessages = [];
|
|
309
|
-
for (const [pkg, node] of Object.entries(graph.nodes)) {
|
|
310
|
-
const constraints = node.constraints ?? new Set([node.refConstraint]);
|
|
311
|
-
if (constraints.size <= 1)
|
|
312
|
-
continue; // No conflict
|
|
313
|
-
const refs = Array.from(constraints);
|
|
314
|
-
const refTypes = refs.map(ref => ({
|
|
315
|
-
ref,
|
|
316
|
-
type: detectRefType(ref),
|
|
317
|
-
semver: parseSemVer(ref),
|
|
318
|
-
}));
|
|
319
|
-
// Check for mixed types (tag vs branch vs commit)
|
|
320
|
-
const types = new Set(refTypes.map(r => r.type));
|
|
321
|
-
// Case 1: All commits - must be exact match
|
|
322
|
-
if (types.size === 1 && types.has('commit')) {
|
|
323
|
-
this.throwConflictError(pkg, refs, node.dependents, 'Explicit commit pins cannot be automatically resolved.\n' +
|
|
324
|
-
'Add an override in model.yaml:\n\n' +
|
|
325
|
-
' overrides:\n' +
|
|
326
|
-
` ${pkg}: ${refs[0]}`);
|
|
327
|
-
}
|
|
328
|
-
// Case 2: Mixed types (tag vs branch or tag vs commit)
|
|
329
|
-
if (types.size > 1) {
|
|
330
|
-
this.throwConflictError(pkg, refs, node.dependents, 'Cannot mix ref types (tags, branches, commits).\n' +
|
|
331
|
-
'Add an override in model.yaml to specify which to use:\n\n' +
|
|
332
|
-
' overrides:\n' +
|
|
333
|
-
` ${pkg}: <ref>`);
|
|
334
|
-
}
|
|
335
|
-
// Case 3: All branches - must be same branch
|
|
336
|
-
if (types.size === 1 && types.has('branch')) {
|
|
337
|
-
const uniqueBranches = new Set(refs);
|
|
338
|
-
if (uniqueBranches.size > 1) {
|
|
339
|
-
this.throwConflictError(pkg, refs, node.dependents, 'Different branch refs cannot be automatically resolved.\n' +
|
|
340
|
-
'Add an override in model.yaml:\n\n' +
|
|
341
|
-
' overrides:\n' +
|
|
342
|
-
` ${pkg}: ${refs[0]}`);
|
|
343
|
-
}
|
|
344
|
-
// Same branch - no conflict, continue
|
|
345
|
-
continue;
|
|
346
|
-
}
|
|
347
|
-
// Case 4: All SemVer tags - apply "Latest Wins"
|
|
348
|
-
const semvers = refTypes
|
|
349
|
-
.filter((r) => r.semver !== undefined)
|
|
350
|
-
.map(r => r.semver);
|
|
351
|
-
if (semvers.length !== refs.length) {
|
|
352
|
-
// Some refs don't parse as SemVer - can't auto-resolve
|
|
353
|
-
this.throwConflictError(pkg, refs, node.dependents, 'Not all refs are valid SemVer tags.\n' +
|
|
354
|
-
'Add an override in model.yaml:\n\n' +
|
|
355
|
-
' overrides:\n' +
|
|
356
|
-
` ${pkg}: <ref>`);
|
|
357
|
-
}
|
|
358
|
-
// Check major version compatibility
|
|
359
|
-
const majors = new Set(semvers.map(s => s.major));
|
|
360
|
-
if (majors.size > 1) {
|
|
361
|
-
const majorList = Array.from(majors).sort().join(' vs ');
|
|
362
|
-
this.throwConflictError(pkg, refs, node.dependents, `Major version mismatch (v${majorList}). This may indicate breaking changes.\n` +
|
|
363
|
-
'Add an override in model.yaml if you want to force a version:\n\n' +
|
|
364
|
-
' overrides:\n' +
|
|
365
|
-
` ${pkg}: ${refs[refs.length - 1]}`);
|
|
366
|
-
}
|
|
367
|
-
// All same major version - pick latest (Latest Wins!)
|
|
368
|
-
const latest = pickLatestSemVer(refs);
|
|
369
|
-
if (latest && latest !== node.refConstraint) {
|
|
370
|
-
// Update the node to use the resolved ref
|
|
371
|
-
node.refConstraint = latest;
|
|
372
|
-
// Log the resolution for user feedback
|
|
373
|
-
const otherRefs = refs.filter(r => r !== latest).join(', ');
|
|
374
|
-
resolutionMessages.push(`Resolved ${pkg}: using ${latest} (satisfies ${otherRefs})`);
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
// Store resolution messages for later output
|
|
378
|
-
if (resolutionMessages.length > 0) {
|
|
379
|
-
this.resolutionMessages = resolutionMessages;
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* Throws a formatted conflict error with actionable hints.
|
|
384
|
-
*/
|
|
385
|
-
throwConflictError(pkg, refs, dependents, hint) {
|
|
386
|
-
const depLines = dependents.map((d, i) => ` └─ ${d} requires ${pkg}@${refs[i] || refs[0]}`).join('\n');
|
|
387
|
-
throw new Error(`Dependency ref conflict for '${pkg}'\n` +
|
|
388
|
-
depLines + '\n\n' +
|
|
389
|
-
hint);
|
|
390
|
-
}
|
|
391
|
-
/**
|
|
392
|
-
* Returns any resolution messages from the last dependency resolution.
|
|
393
|
-
* Useful for CLI output to inform users about auto-resolved conflicts.
|
|
394
|
-
*/
|
|
395
|
-
getResolutionMessages() {
|
|
396
|
-
return this.resolutionMessages;
|
|
397
|
-
}
|
|
398
|
-
/**
|
|
399
|
-
* Detects package-level cycles in the dependency graph and throws a clear error.
|
|
400
|
-
*/
|
|
401
|
-
detectPackageCycles(graph) {
|
|
402
|
-
const GRAY = 1, BLACK = 2;
|
|
403
|
-
const color = {};
|
|
404
|
-
const stack = [];
|
|
405
|
-
const visit = (pkg) => {
|
|
406
|
-
color[pkg] = GRAY;
|
|
407
|
-
stack.push(pkg);
|
|
408
|
-
const deps = Object.keys(graph.nodes[pkg]?.dependencies ?? {});
|
|
409
|
-
for (const dep of deps) {
|
|
410
|
-
if (!graph.nodes[dep])
|
|
411
|
-
continue; // Unknown dep will resolve later
|
|
412
|
-
if (color[dep] === GRAY) {
|
|
413
|
-
// Found a back edge: cycle
|
|
414
|
-
const cycleStart = stack.indexOf(dep);
|
|
415
|
-
const cyclePath = [...stack.slice(cycleStart), dep].join(' → ');
|
|
416
|
-
throw new Error(`Cyclic package dependency detected:\n` +
|
|
417
|
-
` ${cyclePath}\n\n` +
|
|
418
|
-
`Hint: Extract shared types into a separate package that both can depend on.`);
|
|
419
|
-
}
|
|
420
|
-
if (color[dep] !== BLACK)
|
|
421
|
-
visit(dep);
|
|
422
|
-
}
|
|
423
|
-
stack.pop();
|
|
424
|
-
color[pkg] = BLACK;
|
|
425
|
-
};
|
|
426
|
-
for (const pkg of Object.keys(graph.nodes)) {
|
|
427
|
-
if (!color[pkg])
|
|
428
|
-
visit(pkg);
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
231
|
/**
|
|
432
232
|
* Loads an existing lock file from disk.
|
|
433
233
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../src/services/dependency-resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../src/services/dependency-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export interface GitImportInfo {
|
|
2
|
+
original: string;
|
|
3
|
+
platform: 'github' | 'gitlab' | 'bitbucket' | 'generic';
|
|
4
|
+
owner: string;
|
|
5
|
+
repo: string;
|
|
6
|
+
version: string;
|
|
7
|
+
repoUrl: string;
|
|
8
|
+
entryPoint: string;
|
|
9
|
+
}
|
|
3
10
|
export declare class GitUrlResolver {
|
|
4
11
|
constructor();
|
|
5
12
|
}
|
|
6
13
|
export declare const GitUrlParser: {
|
|
7
|
-
parse(
|
|
8
|
-
isGitUrl(_importStr: string): boolean;
|
|
14
|
+
parse(): never;
|
|
9
15
|
};
|
|
10
16
|
export declare function loadLockFile(): void;
|
|
17
|
+
export type LockFile = unknown;
|
|
18
|
+
export type LockedDependency = unknown;
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
// Browser stub for GitUrlResolver
|
|
2
|
-
// Git operations are not available in the browser environment
|
|
3
2
|
export class GitUrlResolver {
|
|
4
3
|
constructor() {
|
|
5
4
|
throw new Error('GitUrlResolver is not available in the browser.');
|
|
6
5
|
}
|
|
7
6
|
}
|
|
8
7
|
export const GitUrlParser = {
|
|
9
|
-
parse(
|
|
10
|
-
throw new Error('GitUrlParser is not available in the browser.');
|
|
11
|
-
},
|
|
12
|
-
isGitUrl(_importStr) {
|
|
8
|
+
parse() {
|
|
13
9
|
throw new Error('GitUrlParser is not available in the browser.');
|
|
14
10
|
}
|
|
15
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-url-resolver.browser.js","sourceRoot":"","sources":["../../src/services/git-url-resolver.browser.ts"],"names":[],"mappings":"AAAA,kCAAkC;
|
|
1
|
+
{"version":3,"file":"git-url-resolver.browser.js","sourceRoot":"","sources":["../../src/services/git-url-resolver.browser.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAYlC,MAAM,OAAO,cAAc;IACvB;QACI,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACvE,CAAC;CACJ;AAGD,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,KAAK;QACD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACrE,CAAC;CACJ,CAAC;AAEF,MAAM,UAAU,YAAY;IACxB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -10,7 +10,55 @@
|
|
|
10
10
|
* - Version pinning at repository level
|
|
11
11
|
*/
|
|
12
12
|
import { URI } from 'langium';
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Parsed git import with repository-level information.
|
|
15
|
+
*/
|
|
16
|
+
export interface GitImportInfo {
|
|
17
|
+
/** Original import string */
|
|
18
|
+
original: string;
|
|
19
|
+
/** Git platform (github, gitlab, bitbucket, or generic) */
|
|
20
|
+
platform: 'github' | 'gitlab' | 'bitbucket' | 'generic';
|
|
21
|
+
/** Repository owner/organization */
|
|
22
|
+
owner: string;
|
|
23
|
+
/** Repository name */
|
|
24
|
+
repo: string;
|
|
25
|
+
/** Version (tag, branch, or commit hash) */
|
|
26
|
+
version: string;
|
|
27
|
+
/** Full git repository URL */
|
|
28
|
+
repoUrl: string;
|
|
29
|
+
/** Package main entry point (from dlang.toml or default index.dlang) */
|
|
30
|
+
entryPoint: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Package metadata from model.yaml
|
|
34
|
+
*/
|
|
35
|
+
export interface PackageMetadata {
|
|
36
|
+
name?: string;
|
|
37
|
+
version?: string;
|
|
38
|
+
main?: string;
|
|
39
|
+
entry?: string;
|
|
40
|
+
exports?: Record<string, string>;
|
|
41
|
+
dependencies?: Record<string, string>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Lock file format (dlang.lock)
|
|
45
|
+
*
|
|
46
|
+
* Pins exact versions and commit hashes for all dependencies
|
|
47
|
+
* in the dependency tree. Ensures reproducible builds.
|
|
48
|
+
*/
|
|
49
|
+
export interface LockFile {
|
|
50
|
+
version: string;
|
|
51
|
+
dependencies: Record<string, LockedDependency>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A single locked dependency with pinned version and commit.
|
|
55
|
+
*/
|
|
56
|
+
export interface LockedDependency {
|
|
57
|
+
version: string;
|
|
58
|
+
resolved: string;
|
|
59
|
+
commit: string;
|
|
60
|
+
integrity?: string;
|
|
61
|
+
}
|
|
14
62
|
/**
|
|
15
63
|
* Parses import URLs into structured git import information.
|
|
16
64
|
*
|
|
@@ -56,23 +104,16 @@ export declare class GitUrlParser {
|
|
|
56
104
|
* Resolves git repository imports to local entry point files.
|
|
57
105
|
*
|
|
58
106
|
* Implements a content-addressable cache:
|
|
59
|
-
* - Cache location:
|
|
60
|
-
* - Cache key:
|
|
107
|
+
* - Cache location: ~/.dlang/cache/
|
|
108
|
+
* - Cache key: platform/owner/repo/commit-hash
|
|
61
109
|
* - Downloads entire repository on first use
|
|
62
|
-
* - Reads
|
|
110
|
+
* - Reads dlang.toml to find entry point
|
|
63
111
|
* - Returns URI to entry point file
|
|
64
112
|
*/
|
|
65
113
|
export declare class GitUrlResolver {
|
|
66
114
|
private cacheDir;
|
|
67
115
|
private lockFile?;
|
|
68
|
-
|
|
69
|
-
* Creates a GitUrlResolver with a project-local cache directory.
|
|
70
|
-
*
|
|
71
|
-
* @param cacheDir - The cache directory path. Per PRS-010, this should be
|
|
72
|
-
* the project's `.dlang/packages/` directory for isolation
|
|
73
|
-
* and reproducibility (like node_modules).
|
|
74
|
-
*/
|
|
75
|
-
constructor(cacheDir: string);
|
|
116
|
+
constructor(cacheDir?: string);
|
|
76
117
|
/**
|
|
77
118
|
* Sets the lock file for dependency resolution.
|
|
78
119
|
*
|
|
@@ -92,15 +133,13 @@ export declare class GitUrlResolver {
|
|
|
92
133
|
* 3. Resolve version to commit hash (if not locked)
|
|
93
134
|
* 4. Check cache
|
|
94
135
|
* 5. Download repository if not cached
|
|
95
|
-
* 6. Read
|
|
136
|
+
* 6. Read dlang.toml to find entry point
|
|
96
137
|
* 7. Return URI to entry point file
|
|
97
138
|
*
|
|
98
139
|
* @param importUrl - The git import URL
|
|
99
140
|
* @returns URI to the package's entry point file
|
|
100
141
|
*/
|
|
101
|
-
resolve(importUrl: string
|
|
102
|
-
allowNetwork?: boolean;
|
|
103
|
-
}): Promise<URI>;
|
|
142
|
+
resolve(importUrl: string): Promise<URI>;
|
|
104
143
|
/**
|
|
105
144
|
* Reads model.yaml to get the package entry point.
|
|
106
145
|
* Falls back to index.dlang if no model.yaml found.
|
|
@@ -121,10 +160,7 @@ export declare class GitUrlResolver {
|
|
|
121
160
|
/**
|
|
122
161
|
* Gets the local cache path for a git repository.
|
|
123
162
|
*
|
|
124
|
-
* Format:
|
|
125
|
-
*
|
|
126
|
-
* Per PRS-010: Project-local cache structure mirrors the Design Considerations
|
|
127
|
-
* section showing `.dlang/packages/{owner}/{repo}/{version}/` layout.
|
|
163
|
+
* Format: ~/.dlang/cache/{platform}/{owner}/{repo}/{commit-hash}/
|
|
128
164
|
*/
|
|
129
165
|
private getCachePath;
|
|
130
166
|
/**
|
|
@@ -143,8 +179,6 @@ export declare class GitUrlResolver {
|
|
|
143
179
|
clearCache(): Promise<void>;
|
|
144
180
|
/**
|
|
145
181
|
* Gets cache statistics (size, number of cached repos, etc.).
|
|
146
|
-
*
|
|
147
|
-
* Cache structure: .dlang/packages/{owner}/{repo}/{version}/
|
|
148
182
|
*/
|
|
149
183
|
getCacheStats(): Promise<{
|
|
150
184
|
totalSize: number;
|