@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
@@ -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 using "Latest Wins" strategy
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
- // Per PRS-010: Project-local cache at .dlang/packages/
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, refConstraint] of Object.entries(rootConfig.dependencies || {})) {
60
+ for (const [depName, versionConstraint] of Object.entries(rootConfig.dependencies || {})) {
111
61
  queue.push({
112
62
  packageKey: depName,
113
- refConstraint,
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, refConstraint, parent } = entry;
73
+ const { packageKey, versionConstraint, parent } = entry;
124
74
  // Skip if already processed
125
75
  if (visited.has(packageKey)) {
126
- // Update dependents list and record constraint
127
- const existing = graph.nodes[packageKey];
128
- if (!existing.dependents.includes(parent)) {
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 model.yaml
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
- refConstraint,
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, transRefConstraint] of Object.entries(packageConfig.dependencies || {})) {
99
+ for (const [transDepName, transVersionConstraint] of Object.entries(packageConfig.dependencies || {})) {
155
100
  queue.push({
156
101
  packageKey: transDepName,
157
- refConstraint: transRefConstraint,
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 ref constraints to specific commits.
110
+ * Resolves version constraints to specific versions.
166
111
  *
167
- * Simple algorithm: Use the ref specified in the constraint.
168
- * Detects refType (tag, branch, or commit) based on format.
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
- // Extract ref from constraint
175
- const ref = this.extractRefFromConstraint(node.refConstraint);
176
- // Detect ref type based on format
177
- const refType = detectRefType(ref);
178
- // Resolve ref to commit hash
179
- const commitHash = await this.resolveCommitHash(gitInfo.repoUrl, ref);
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 ref from a constraint string.
129
+ * Extracts a version from a constraint string.
187
130
  *
188
131
  * Examples:
189
- * - "^1.0.0" → "1.0.0" (treated as tag)
190
- * - "~2.3.0" → "2.3.0" (treated as tag)
191
- * - "1.5.0" → "1.5.0" (treated as tag)
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
- extractRefFromConstraint(constraint) {
197
- // Remove semver operators (legacy support)
198
- let ref = constraint.replace(/^[\^~>=<]/, '');
199
- // Extract ref from full import URL if present
200
- if (ref.includes('@')) {
201
- ref = ref.split('@')[1];
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 ref || 'main';
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
- // Per PRS-010: Project-local cache at .dlang/packages/{owner}/{repo}/{commit}/
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.resolvedRef || !node.commitHash) {
226
- throw new Error(`Failed to resolve ref for '${packageKey}'.\n` +
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
- ref: node.resolvedRef,
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
- * ref: v1.0.0
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.entry = parsed.model.entry;
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 refConstraint = depInfo.ref || 'main';
283
- // Store as "source@ref" for consistency with import resolution
284
- config.dependencies[depInfo.source] = refConstraint;
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":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG3E,MAAM,OAAO,kBAAkB;IAI3B,YAAY,aAAqB,EAAE,WAA4B;QAwE/D,uCAAuC;QAC/B,qBAAgB,GAAa,EAAE,CAAC;QAyXxC,6DAA6D;QACrD,uBAAkB,GAAa,EAAE,CAAC;QAlctC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,uDAAuD;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,mBAAmB;QACrB,2BAA2B;QAC3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEpE,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChF,kBAAkB;YAClB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,yBAAyB;QACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAE1D,4CAA4C;QAC5C,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QAEjD,qEAAqE;QACrE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEhC,8BAA8B;QAC9B,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAElC,wDAAwD;QACxD,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;;;;;OAUG;IACK,cAAc,CAAC,KAAsB,EAAE,SAAkC;QAC7E,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,IAAI,EAAE,CAAC;gBACP,iEAAiE;gBACjE,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC1C,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;gBAEjC,gDAAgD;gBAChD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,GAAG,IAAI,WAAW,EAAE,CAAC,CAAC;YAC1E,CAAC;QACL,CAAC;IACL,CAAC;IAKD;;OAEG;IACH,mBAAmB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,UAA4B;QAC3D,MAAM,KAAK,GAAoB;YAC3B,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,MAAM;SAClC,CAAC;QAEF,4BAA4B;QAC5B,MAAM,KAAK,GAAyE,EAAE,CAAC;QAEvF,KAAK,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;YACnF,KAAK,CAAC,IAAI,CAAC;gBACP,UAAU,EAAE,OAAO;gBACnB,aAAa;gBACb,MAAM,EAAE,KAAK,CAAC,IAAI;aACrB,CAAC,CAAC;QACP,CAAC;QAED,8CAA8C;QAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK;gBAAE,MAAM;YAClB,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;YAEpD,4BAA4B;YAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1B,+CAA+C;gBAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrC,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,WAAW;oBAAE,QAAQ,CAAC,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;gBACpE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACxC,SAAS;YACb,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAExB,2BAA2B;YAC3B,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE/C,yCAAyC;YACzC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEnD,sBAAsB;YACtB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAE/D,eAAe;YACf,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG;gBACtB,UAAU;gBACV,aAAa;gBACb,WAAW,EAAE,IAAI,GAAG,CAAS,CAAC,aAAa,CAAC,CAAC;gBAC7C,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,aAAa,CAAC,YAAY,IAAI,EAAE;gBAC9C,UAAU,EAAE,CAAC,MAAM,CAAC;aACvB,CAAC;YAEF,gCAAgC;YAChC,KAAK,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;gBAChG,KAAK,CAAC,IAAI,CAAC;oBACP,UAAU,EAAE,YAAY;oBACxB,aAAa,EAAE,kBAAkB;oBACjC,MAAM,EAAE,UAAU;iBACrB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,eAAe,CAAC,KAAsB;QAChD,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,iCAAiC;YACjC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE/C,8BAA8B;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE9D,kCAAkC;YAClC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YAEnC,6BAA6B;YAC7B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAEtE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;;;;;;;;;OAUG;IACK,wBAAwB,CAAC,UAAkB;QAC/C,2CAA2C;QAC3C,IAAI,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAE9C,8CAA8C;QAC9C,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,GAAG,IAAI,MAAM,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,OAAe,EAAE,OAAe;QAC5D,yEAAyE;QACzE,6CAA6C;QAC7C,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE7D,sCAAsC;QACtC,+EAA+E;QAC/E,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,yBAAyB;QACvE,OAAO,SAAS,CAAC,eAAe,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAsB;QAC3C,MAAM,YAAY,GAAqC,EAAE,CAAC;QAE1D,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CACX,8BAA8B,UAAU,MAAM;oBAC9C,2DAA2D,CAC9D,CAAC;YACN,CAAC;YAED,YAAY,CAAC,UAAU,CAAC,GAAG;gBACvB,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ;gBACjC,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;gBAC5B,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,mCAAmC;aACtC,CAAC;QACN,CAAC;QAED,OAAO;YACH,OAAO,EAAE,GAAG;YACZ,YAAY;SACf,CAAC;IACN,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,UAAkB;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAErD,IAAI,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACL,sBAAsB;YACtB,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,SAAS,CAAC,OAAe;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAQhC,CAAC;QAEF,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAChC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;YACtC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACtC,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC;YACzB,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC5D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACjB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC;oBAC5C,+DAA+D;oBAC/D,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;gBACxD,CAAC;YACL,CAAC;QACL,CAAC;QAED,mDAAmD;QACnD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACxC,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,sBAAsB,CAAC,KAAsB;QACjD,MAAM,kBAAkB,GAAa,EAAE,CAAC;QAExC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAE9E,IAAI,WAAW,CAAC,IAAI,IAAI,CAAC;gBAAE,SAAS,CAAC,cAAc;YAEnD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9B,GAAG;gBACH,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC;gBACxB,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC;aAC3B,CAAC,CAAC,CAAC;YAEJ,kDAAkD;YAClD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjD,4CAA4C;YAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAC9C,0DAA0D;oBAC1D,oCAAoC;oBACpC,gBAAgB;oBAChB,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAC;YACN,CAAC;YAED,uDAAuD;YACvD,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAC9C,mDAAmD;oBACnD,4DAA4D;oBAC5D,gBAAgB;oBAChB,OAAO,GAAG,SAAS,CACtB,CAAC;YACN,CAAC;YAED,6CAA6C;YAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAC9C,2DAA2D;wBAC3D,oCAAoC;wBACpC,gBAAgB;wBAChB,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAC;gBACN,CAAC;gBACD,sCAAsC;gBACtC,SAAS;YACb,CAAC;YAED,gDAAgD;YAChD,MAAM,OAAO,GAAG,QAAQ;iBACnB,MAAM,CAAC,CAAC,CAAC,EAAsC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;iBACzE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAExB,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjC,uDAAuD;gBACvD,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAC9C,uCAAuC;oBACvC,oCAAoC;oBACpC,gBAAgB;oBAChB,OAAO,GAAG,SAAS,CACtB,CAAC;YACN,CAAC;YAED,oCAAoC;YACpC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAClD,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAClB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzD,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAC9C,4BAA4B,SAAS,0CAA0C;oBAC/E,mEAAmE;oBACnE,gBAAgB;oBAChB,OAAO,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CACzC,CAAC;YACN,CAAC;YAED,sDAAsD;YACtD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC1C,0CAA0C;gBAC1C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;gBAE5B,uCAAuC;gBACvC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5D,kBAAkB,CAAC,IAAI,CACnB,YAAY,GAAG,WAAW,MAAM,eAAe,SAAS,GAAG,CAC9D,CAAC;YACN,CAAC;QACL,CAAC;QAED,6CAA6C;QAC7C,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QACjD,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kBAAkB,CACtB,GAAW,EACX,IAAc,EACd,UAAoB,EACpB,IAAY;QAEZ,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACrC,QAAQ,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CACpD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,IAAI,KAAK,CACX,gCAAgC,GAAG,KAAK;YACxC,QAAQ,GAAG,MAAM;YACjB,IAAI,CACP,CAAC;IACN,CAAC;IAKD;;;OAGG;IACH,qBAAqB;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,KAAsB;QAC9C,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;QAC1B,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,MAAM,KAAK,GAAG,CAAC,GAAW,EAAQ,EAAE;YAChC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC;YAC/D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;oBAAE,SAAS,CAAC,iCAAiC;gBAClE,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;oBACtB,2BAA2B;oBAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACtC,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAChE,MAAM,IAAI,KAAK,CACX,uCAAuC;wBACvC,KAAK,SAAS,MAAM;wBACpB,6EAA6E,CAChF,CAAC;gBACN,CAAC;gBACD,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK;oBAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,CAAC;YACD,KAAK,CAAC,GAAG,EAAE,CAAC;YACZ,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,aAAqB;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAExD,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAa,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACL,eAAe;YACf,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAe;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAa,CAAC;IAC3C,CAAC;CACJ"}
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
- import type { GitImportInfo } from './types.js';
2
- export type { GitImportInfo } from './types.js';
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(_importStr: string): GitImportInfo;
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(_importStr) {
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;AAClC,8DAA8D;AAO9D,MAAM,OAAO,cAAc;IACvB;QACI,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACvE,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,KAAK,CAAC,UAAkB;QACpB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACrE,CAAC;IACD,QAAQ,CAAC,UAAkB;QACvB,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"}
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
- import type { GitImportInfo, LockFile } from './types.js';
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: .dlang/packages/ (project-local, per PRS-010)
60
- * - Cache key: {owner}/{repo}/{commit-hash}
107
+ * - Cache location: ~/.dlang/cache/
108
+ * - Cache key: platform/owner/repo/commit-hash
61
109
  * - Downloads entire repository on first use
62
- * - Reads model.yaml to find entry point
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 model.yaml to find entry point
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, options?: {
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: .dlang/packages/{owner}/{repo}/{version}/
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;