@teambit/pnpm 1.0.1019 → 1.0.1021
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/dist/lockfile-deps-graph-converter.js +102 -8
- package/dist/lockfile-deps-graph-converter.js.map +1 -1
- package/dist/lockfile-deps-graph-converter.spec.js +269 -0
- package/dist/lockfile-deps-graph-converter.spec.js.map +1 -1
- package/dist/{preview-1779129522483.js → preview-1779149950902.js} +2 -2
- package/package.json +8 -8
|
@@ -286,6 +286,7 @@ async function convertGraphToLockfile(_graph, {
|
|
|
286
286
|
const graphString = _graph.serialize();
|
|
287
287
|
const graph = _objects().DependenciesGraph.deserialize(graphString);
|
|
288
288
|
dropOrphanFilePkgs(graph);
|
|
289
|
+
dropOrphanNeighbours(graph);
|
|
289
290
|
const packages = {};
|
|
290
291
|
const snapshots = {};
|
|
291
292
|
const allEdgeIds = new Set(graph.edges.map(({
|
|
@@ -365,18 +366,37 @@ async function convertGraphToLockfile(_graph, {
|
|
|
365
366
|
}
|
|
366
367
|
}
|
|
367
368
|
const pkgsToResolve = getPkgsToResolve(lockfile, manifests);
|
|
369
|
+
const failedWorkspaceComponentPkgs = new Set();
|
|
368
370
|
await Promise.all(pkgsToResolve.map(async pkgToResolve => {
|
|
369
371
|
if (lockfile.packages[pkgToResolve.pkgId].resolution == null) {
|
|
372
|
+
let resolveResult;
|
|
373
|
+
try {
|
|
374
|
+
resolveResult = await resolve({
|
|
375
|
+
alias: pkgToResolve.name,
|
|
376
|
+
bareSpecifier: pkgToResolve.version
|
|
377
|
+
}, {
|
|
378
|
+
lockfileDir: '',
|
|
379
|
+
projectDir: '',
|
|
380
|
+
preferredVersions: {}
|
|
381
|
+
});
|
|
382
|
+
} catch (err) {
|
|
383
|
+
// A workspace-component package with a missing resolution whose
|
|
384
|
+
// snap-version was never published surfaces here as pnpm's
|
|
385
|
+
// ERR_PNPM_NO_MATCHING_VERSION. The graph itself is unusable for
|
|
386
|
+
// this pkgId, but pnpm can re-resolve the dep from the installing
|
|
387
|
+
// manifest's specifier — so scrub the pkgId from the generated
|
|
388
|
+
// lockfile and continue. Re-throw every other error code (network,
|
|
389
|
+
// auth, 5xx, even FETCH_404 since some registries return 404 on
|
|
390
|
+
// auth failures) so real install failures aren't silently masked.
|
|
391
|
+
if (err.code === 'ERR_PNPM_NO_MATCHING_VERSION' && graph.packages.get(pkgToResolve.pkgId)?.component != null) {
|
|
392
|
+
failedWorkspaceComponentPkgs.add(pkgToResolve.pkgId);
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
throw err;
|
|
396
|
+
}
|
|
370
397
|
const {
|
|
371
398
|
resolution
|
|
372
|
-
} =
|
|
373
|
-
alias: pkgToResolve.name,
|
|
374
|
-
bareSpecifier: pkgToResolve.version
|
|
375
|
-
}, {
|
|
376
|
-
lockfileDir: '',
|
|
377
|
-
projectDir: '',
|
|
378
|
-
preferredVersions: {}
|
|
379
|
-
});
|
|
399
|
+
} = resolveResult;
|
|
380
400
|
if ('integrity' in resolution && resolution.integrity) {
|
|
381
401
|
lockfile.packages[pkgToResolve.pkgId].resolution = {
|
|
382
402
|
integrity: resolution.integrity
|
|
@@ -384,6 +404,9 @@ async function convertGraphToLockfile(_graph, {
|
|
|
384
404
|
}
|
|
385
405
|
}
|
|
386
406
|
}));
|
|
407
|
+
if (failedWorkspaceComponentPkgs.size > 0) {
|
|
408
|
+
scrubPkgsFromLockfile(lockfile, failedWorkspaceComponentPkgs);
|
|
409
|
+
}
|
|
387
410
|
// Validate the generated lockfile
|
|
388
411
|
for (const [depPath, pkg] of Object.entries(lockfile.packages)) {
|
|
389
412
|
if (pkg.resolution == null || Object.keys(pkg.resolution).length === 0) {
|
|
@@ -480,6 +503,77 @@ function dropOrphanFilePkgs(graph) {
|
|
|
480
503
|
});
|
|
481
504
|
});
|
|
482
505
|
}
|
|
506
|
+
|
|
507
|
+
/**
|
|
508
|
+
* Drop neighbours that reference a pkgId with no edge AND no packages entry.
|
|
509
|
+
*
|
|
510
|
+
* Recovers graphs saved by bits older than #10361 (the back-edge fix). Those
|
|
511
|
+
* older bits, when snapping a component with a circular workspace dep, deleted
|
|
512
|
+
* the component's own snapshot/package entry but left back-references to it on
|
|
513
|
+
* other snapshots intact. The orphan neighbour now has no edge (its snapshot
|
|
514
|
+
* was removed) and no packages entry (its package was removed), so the loop
|
|
515
|
+
* below would synthesise an empty packages entry and getPkgsToResolve would
|
|
516
|
+
* ask the registry for a workspace snap-version that was never published —
|
|
517
|
+
* surfacing as ERR_PNPM_NO_MATCHING_VERSION at install time. Scrubbing the
|
|
518
|
+
* dangling neighbour here means already-saved broken graphs install cleanly
|
|
519
|
+
* without requiring the affected component to be re-snapped on a newer client.
|
|
520
|
+
*/
|
|
521
|
+
function dropOrphanNeighbours(graph) {
|
|
522
|
+
const edgeIds = new Set(graph.edges.map(edge => edge.id));
|
|
523
|
+
const isOrphan = n => !edgeIds.has(n.id) && !graph.packages.has(dp().removeSuffix(n.id));
|
|
524
|
+
graph.edges = graph.edges.map(edge => {
|
|
525
|
+
if (!edge.neighbours.some(isOrphan)) return edge;
|
|
526
|
+
return _objectSpread(_objectSpread({}, edge), {}, {
|
|
527
|
+
neighbours: edge.neighbours.filter(n => !isOrphan(n))
|
|
528
|
+
});
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Remove the given pkgIds (and everything that references them) from a
|
|
534
|
+
* lockfile in place. Used when a workspace-component snap-version baked into
|
|
535
|
+
* the graph turns out to be unpublishable at install time — leaving it in the
|
|
536
|
+
* lockfile would fail validation and abort the whole install. Stripping it
|
|
537
|
+
* means pnpm falls back to resolving the dep from the installing manifest's
|
|
538
|
+
* specifier, which is the same path as a graph-less install for that one dep.
|
|
539
|
+
*/
|
|
540
|
+
function scrubPkgsFromLockfile(lockfile, pkgIds) {
|
|
541
|
+
const matches = depPath => pkgIds.has(dp().removeSuffix(depPath));
|
|
542
|
+
for (const pkgId of pkgIds) {
|
|
543
|
+
delete lockfile.packages[pkgId];
|
|
544
|
+
}
|
|
545
|
+
for (const depPath of Object.keys(lockfile.snapshots ?? {})) {
|
|
546
|
+
if (matches(depPath)) {
|
|
547
|
+
delete lockfile.snapshots[depPath];
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
for (const snapshot of Object.values(lockfile.snapshots ?? {})) {
|
|
551
|
+
for (const depType of ['dependencies', 'optionalDependencies']) {
|
|
552
|
+
const deps = snapshot[depType];
|
|
553
|
+
if (!deps) continue;
|
|
554
|
+
for (const [name, ref] of Object.entries(deps)) {
|
|
555
|
+
if (matches(`${name}@${ref}`)) {
|
|
556
|
+
delete deps[name];
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
if (Object.keys(deps).length === 0) delete snapshot[depType];
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
for (const importer of Object.values(lockfile.importers ?? {})) {
|
|
563
|
+
for (const depType of ['dependencies', 'devDependencies', 'optionalDependencies']) {
|
|
564
|
+
const deps = importer[depType];
|
|
565
|
+
if (!deps) continue;
|
|
566
|
+
for (const [name, {
|
|
567
|
+
version
|
|
568
|
+
}] of Object.entries(deps)) {
|
|
569
|
+
if (version.startsWith('link:') || version.startsWith('file:')) continue;
|
|
570
|
+
if (matches(`${name}@${version}`)) {
|
|
571
|
+
delete deps[name];
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
483
577
|
function convertGraphPackageToLockfilePackage(pkgAttr) {
|
|
484
578
|
return (0, _lodash().pick)(pkgAttr, ['bundledDependencies', 'cpu', 'deprecated', 'engines', 'hasBin', 'libc', 'name', 'os', 'peerDependencies', 'peerDependenciesMeta', 'resolution', 'version']);
|
|
485
579
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_path","data","_interopRequireDefault","require","dp","_interopRequireWildcard","_lodash","_bitError","_componentPackageVersion","_objects","_lockfile","_normalizePath","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","convertLockfileToGraphFromCapsule","lockfile","componentRelativeDir","componentIdByPkgName","componentImporter","importers","directDependencies","depType","lifecycle","optional","importerDepsToNeighbours","_convertLockfileToGraph","importerDependencies","neighbours","name","version","specifier","entries","id","refToRelative","convertLockfileToGraph","pkgName","componentRootDir","componentDevImporter","devDependencies","lockedPkgDepPath","dependencies","lockedPkg","snapshots","packages","removeSuffix","lockedFileVersion","snapshot","values","deps","graph","DependenciesGraph","edges","buildEdges","buildPackages","dropOrphanFilePkgs","replaceFileVersion","createFileVersionReplacer","depPath","extractDependenciesFromSnapshot","replacedDepPath","edge","pkgId","attr","transitivePeerDependencies","dep","ROOT_EDGE_ID","depTypeField","ref","subDepPath","depsRequiringBuild","bit","depsRequiringBuildSet","Set","undefined","Map","pkg","graphPkg","pick","resolution","type","replacedPkgId","parsed","parse","compId","component","fullName","scope","requiresBuild","size","s","replacements","escapedNames","componentId","snapToSemver","replace","pattern","RegExp","join","includes","_","convertGraphToLockfile","_graph","manifests","rootDir","resolve","graphString","serialize","deserialize","allEdgeIds","map","optionalDeps","prodDeps","partition","convertToDeps","optionalDependencies","assign","convertGraphPackageToLockfilePackage","sort","lockfileVersion","rootEdge","findRootEdge","projectDir","manifest","projectId","getLockfileImporterId","startsWith","normalizePath","path","relative","substring","edgeId","find","directDep","depPathToRef","pkgsToResolve","getPkgsToResolve","Promise","all","pkgToResolve","alias","bareSpecifier","lockfileDir","preferredVersions","integrity","BitError","pkgsInTheWorkspaces","patchHash","peerDepGraphHash","isFilePkgId","nonSemverVersion","orphanPkgIds","add","delete","some","pkgAttr"],"sources":["lockfile-deps-graph-converter.ts"],"sourcesContent":["import path from 'path';\nimport { type ProjectManifest } from '@pnpm/types';\nimport { type LockfileFileProjectResolvedDependencies } from '@pnpm/lockfile.types';\nimport { type ResolveFunction } from '@pnpm/client';\nimport * as dp from '@pnpm/dependency-path';\nimport { pick, partition } from 'lodash';\nimport { BitError } from '@teambit/bit-error';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport {\n DependenciesGraph,\n type PackagesMap,\n type PackageAttributes,\n type DependencyEdge,\n type DependencyNeighbour,\n} from '@teambit/objects';\nimport {\n type CalcDepsGraphOptions,\n type CalcDepsGraphForComponentOptions,\n type ComponentIdByPkgName,\n} from '@teambit/dependency-resolver';\nimport { getLockfileImporterId } from '@pnpm/lockfile.fs';\nimport normalizePath from 'normalize-path';\nimport { type BitLockfileFile } from './lynx';\n\nfunction convertLockfileToGraphFromCapsule(\n lockfile: BitLockfileFile,\n {\n componentRelativeDir,\n componentIdByPkgName,\n }: Pick<CalcDepsGraphOptions & CalcDepsGraphForComponentOptions, 'componentRelativeDir' | 'componentIdByPkgName'>\n): DependenciesGraph {\n const componentImporter = lockfile.importers![componentRelativeDir];\n const directDependencies: DependencyNeighbour[] = [];\n for (const depType of ['dependencies' as const, 'optionalDependencies' as const, 'devDependencies' as const]) {\n if (componentImporter[depType] != null) {\n const lifecycle = depType === 'devDependencies' ? 'dev' : 'runtime';\n const optional = depType === 'optionalDependencies';\n directDependencies.push(...importerDepsToNeighbours(componentImporter[depType]!, lifecycle, optional));\n }\n }\n return _convertLockfileToGraph(lockfile, { componentIdByPkgName, directDependencies });\n}\n\nfunction importerDepsToNeighbours(\n importerDependencies: LockfileFileProjectResolvedDependencies,\n lifecycle: 'dev' | 'runtime',\n optional: boolean\n): DependencyNeighbour[] {\n const neighbours: DependencyNeighbour[] = [];\n for (const [name, { version, specifier }] of Object.entries(importerDependencies) as any) {\n const id = dp.refToRelative(version, name)!;\n neighbours.push({ name, specifier, id, lifecycle, optional });\n }\n return neighbours;\n}\n\nexport function convertLockfileToGraph(\n lockfile: BitLockfileFile,\n {\n pkgName,\n componentRootDir,\n componentRelativeDir,\n componentIdByPkgName,\n }: Omit<CalcDepsGraphOptions & CalcDepsGraphForComponentOptions, 'rootDir' | 'components' | 'component'>\n): DependenciesGraph {\n if (componentRootDir == null || pkgName == null) {\n return convertLockfileToGraphFromCapsule(lockfile, { componentRelativeDir, componentIdByPkgName });\n }\n const componentDevImporter = lockfile.importers![componentRelativeDir];\n const directDependencies: DependencyNeighbour[] = [];\n if (componentDevImporter.devDependencies != null) {\n directDependencies.push(...importerDepsToNeighbours(componentDevImporter.devDependencies, 'dev', false));\n }\n const lockedPkgDepPath = `${pkgName}@${lockfile.importers![componentRootDir].dependencies![pkgName].version}`;\n const lockedPkg = lockfile.snapshots![lockedPkgDepPath];\n for (const depType of ['dependencies' as const, 'optionalDependencies' as const]) {\n const optional = depType === 'optionalDependencies';\n for (const [name, version] of Object.entries(lockedPkg[depType] ?? {})) {\n const id = dp.refToRelative(version, name)!;\n directDependencies.push({\n name,\n specifier: componentDevImporter[depType]?.[name]?.specifier ?? '*',\n id,\n lifecycle: 'runtime',\n optional,\n });\n }\n }\n delete lockfile.snapshots![lockedPkgDepPath];\n delete lockfile.packages![dp.removeSuffix(lockedPkgDepPath)];\n // Scrub back-edges from a circular workspace dep (another workspace\n // component depending on the one we're processing). Otherwise the\n // back-edge survives buildEdges but its target — the just-deleted\n // pkgId — has no entry in buildPackages, leaving a dangling neighbour.\n // convertGraphToLockfile would later materialise that neighbour as an\n // empty packages entry and ask the registry for the workspace\n // snap-version, which may never have been published.\n const lockedFileVersion = lockfile.importers![componentRootDir].dependencies![pkgName].version;\n for (const snapshot of Object.values(lockfile.snapshots ?? {})) {\n for (const depType of ['dependencies', 'optionalDependencies'] as const) {\n const deps = snapshot[depType];\n if (deps?.[pkgName] === lockedFileVersion) {\n delete deps[pkgName];\n if (Object.keys(deps).length === 0) delete snapshot[depType];\n }\n }\n }\n return _convertLockfileToGraph(lockfile, { componentIdByPkgName, directDependencies });\n}\n\nfunction _convertLockfileToGraph(\n lockfile: BitLockfileFile,\n {\n componentIdByPkgName,\n directDependencies,\n }: {\n componentIdByPkgName: ComponentIdByPkgName;\n directDependencies: DependencyNeighbour[];\n }\n): DependenciesGraph {\n const graph = new DependenciesGraph({\n edges: buildEdges(lockfile, { directDependencies, componentIdByPkgName }),\n packages: buildPackages(lockfile, { componentIdByPkgName }),\n });\n dropOrphanFilePkgs(graph);\n return graph;\n}\n\nfunction buildEdges(\n lockfile: BitLockfileFile,\n {\n directDependencies,\n componentIdByPkgName,\n }: {\n directDependencies: DependencyNeighbour[];\n componentIdByPkgName: ComponentIdByPkgName;\n }\n): DependencyEdge[] {\n const replaceFileVersion = createFileVersionReplacer(componentIdByPkgName);\n const edges: DependencyEdge[] = [];\n for (const [depPath, snapshot] of Object.entries(lockfile.snapshots ?? {})) {\n const neighbours = extractDependenciesFromSnapshot(snapshot, replaceFileVersion);\n const replacedDepPath = replaceFileVersion(depPath);\n const edge: DependencyEdge = {\n id: replacedDepPath,\n neighbours,\n };\n const pkgId = dp.removeSuffix(replacedDepPath);\n if (pkgId !== replacedDepPath) {\n edge.attr = { pkgId };\n }\n if (snapshot.transitivePeerDependencies) {\n edge.attr = {\n ...edge.attr,\n transitivePeerDependencies: snapshot.transitivePeerDependencies,\n };\n }\n if (edge.neighbours.length > 0 || edge.id !== pkgId) {\n edges.push(edge);\n }\n }\n for (const dep of directDependencies) {\n dep.id = replaceFileVersion(dep.id);\n }\n edges.push({\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: directDependencies,\n });\n return edges;\n}\n\nfunction extractDependenciesFromSnapshot(\n snapshot: any,\n replaceFileVersion: (s: string) => string\n): DependencyNeighbour[] {\n const dependencies: DependencyNeighbour[] = [];\n\n for (const { depTypeField, optional } of [\n { depTypeField: 'dependencies', optional: false },\n { depTypeField: 'optionalDependencies', optional: true },\n ]) {\n for (const [name, ref] of Object.entries((snapshot[depTypeField] ?? {}) as Record<string, string>)) {\n const subDepPath = dp.refToRelative(ref, name);\n if (subDepPath != null) {\n dependencies.push({ id: replaceFileVersion(subDepPath), optional });\n }\n }\n }\n\n return dependencies;\n}\n\nfunction buildPackages(\n lockfile: BitLockfileFile,\n { componentIdByPkgName }: { componentIdByPkgName: ComponentIdByPkgName }\n): PackagesMap {\n const replaceFileVersion = createFileVersionReplacer(componentIdByPkgName);\n const depsRequiringBuild = lockfile.bit?.depsRequiringBuild;\n const depsRequiringBuildSet = depsRequiringBuild ? new Set(depsRequiringBuild) : undefined;\n const packages: PackagesMap = new Map();\n for (const [pkgId, pkg] of Object.entries(lockfile.packages ?? {})) {\n const graphPkg = pick(pkg, [\n 'bundledDependencies',\n 'cpu',\n 'deprecated',\n 'engines',\n 'hasBin',\n 'libc',\n 'name',\n 'os',\n 'peerDependencies',\n 'peerDependenciesMeta',\n 'resolution',\n 'version',\n ]) as any;\n if (graphPkg.resolution.type === 'directory') {\n delete graphPkg.resolution;\n }\n const replacedPkgId = replaceFileVersion(pkgId);\n const parsed = dp.parse(replacedPkgId);\n if (parsed.name && componentIdByPkgName.has(parsed.name)) {\n const compId = componentIdByPkgName.get(parsed.name)!;\n graphPkg.component = {\n name: compId.fullName,\n scope: compId.scope,\n };\n }\n if (depsRequiringBuildSet?.has(pkgId)) {\n graphPkg.requiresBuild = true;\n }\n packages.set(replacedPkgId, graphPkg);\n }\n return packages;\n}\n\nfunction createFileVersionReplacer(componentIdByPkgName: ComponentIdByPkgName): (s: string) => string {\n if (componentIdByPkgName.size === 0) return (s) => s;\n\n const replacements = new Map<string, string>();\n const escapedNames: string[] = [];\n for (const [pkgName, componentId] of componentIdByPkgName.entries()) {\n replacements.set(pkgName, `${pkgName}@${snapToSemver(componentId.version)}`);\n escapedNames.push(pkgName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'));\n }\n const pattern = new RegExp(`(${escapedNames.join('|')})@file:[^'\"(]+`, 'g');\n\n return (s: string) => {\n if (!s.includes('@file:')) return s;\n return s.replace(pattern, (_, name) => replacements.get(name)!);\n };\n}\n\nexport async function convertGraphToLockfile(\n _graph: DependenciesGraph,\n {\n manifests,\n rootDir,\n resolve,\n }: {\n manifests: Record<string, ProjectManifest>;\n rootDir: string;\n resolve: ResolveFunction;\n }\n): Promise<BitLockfileFile> {\n const graphString = _graph.serialize();\n const graph = DependenciesGraph.deserialize(graphString)!;\n dropOrphanFilePkgs(graph);\n const packages = {};\n const snapshots = {};\n const allEdgeIds = new Set(graph.edges.map(({ id }) => id));\n\n for (const edge of graph.edges) {\n if (edge.id === DependenciesGraph.ROOT_EDGE_ID) continue;\n const pkgId = edge.attr?.pkgId ?? edge.id;\n snapshots[edge.id] = {};\n packages[pkgId] = {};\n const [optionalDeps, prodDeps] = partition(edge.neighbours, (dep) => dep.optional);\n if (prodDeps.length) {\n snapshots[edge.id].dependencies = convertToDeps(prodDeps);\n }\n if (optionalDeps.length) {\n snapshots[edge.id].optionalDependencies = convertToDeps(optionalDeps);\n }\n const graphPkg = graph.packages.get(pkgId);\n if (graphPkg != null) {\n Object.assign(packages[pkgId], convertGraphPackageToLockfilePackage(graphPkg));\n }\n }\n for (const [pkgId, graphPkg] of graph.packages.entries()) {\n if (packages[pkgId] == null) {\n packages[pkgId] = convertGraphPackageToLockfilePackage(graphPkg);\n snapshots[pkgId] = {};\n }\n }\n const depsRequiringBuild: string[] = [];\n for (const [pkgId, { requiresBuild }] of graph.packages.entries()) {\n if (requiresBuild) {\n depsRequiringBuild.push(pkgId);\n }\n }\n depsRequiringBuild.sort();\n const lockfile: BitLockfileFile & Required<Pick<BitLockfileFile, 'packages'>> = {\n lockfileVersion: '9.0',\n packages,\n snapshots,\n importers: {},\n bit: { depsRequiringBuild },\n };\n const rootEdge = graph.findRootEdge();\n if (rootEdge) {\n for (const [projectDir, manifest] of Object.entries(manifests)) {\n const projectId = getLockfileImporterId(rootDir, projectDir);\n lockfile.importers![projectId] = {\n dependencies: {},\n devDependencies: {},\n optionalDependencies: {},\n };\n for (const depType of ['dependencies', 'devDependencies', 'optionalDependencies']) {\n for (const [name, specifier] of Object.entries(manifest[depType] ?? {}) as Array<[string, string]>) {\n if (specifier.startsWith('link:')) {\n const version = `link:${normalizePath(path.relative(projectDir, specifier.substring(5)))}`;\n lockfile.importers![projectId][depType][name] = { version, specifier };\n } else {\n const edgeId = rootEdge.neighbours.find(\n (directDep) =>\n directDep.name === name &&\n (directDep.specifier === specifier || dp.removeSuffix(directDep.id) === `${name}@${specifier}`)\n )?.id;\n if (edgeId) {\n const parsed = dp.parse(edgeId);\n const ref = depPathToRef(parsed);\n lockfile.importers![projectId][depType][name] = { version: ref, specifier };\n }\n }\n }\n }\n }\n }\n const pkgsToResolve = getPkgsToResolve(lockfile, manifests);\n await Promise.all(\n pkgsToResolve.map(async (pkgToResolve) => {\n if (lockfile.packages[pkgToResolve.pkgId].resolution == null) {\n const { resolution } = await resolve(\n {\n alias: pkgToResolve.name,\n bareSpecifier: pkgToResolve.version,\n },\n {\n lockfileDir: '',\n projectDir: '',\n preferredVersions: {},\n }\n );\n if ('integrity' in resolution && resolution.integrity) {\n lockfile.packages[pkgToResolve.pkgId].resolution = {\n integrity: resolution.integrity,\n };\n }\n }\n })\n );\n // Validate the generated lockfile\n for (const [depPath, pkg] of Object.entries(lockfile.packages)) {\n if (pkg.resolution == null || Object.keys(pkg.resolution).length === 0) {\n throw new BitError(\n `Failed to generate a valid lockfile. The \"packages['${depPath}'] entry doesn't have a \"resolution\" field.`\n );\n }\n }\n return lockfile;\n\n function convertToDeps(neighbours: DependencyNeighbour[]) {\n const deps = {};\n for (const { id } of neighbours) {\n const parsed = dp.parse(id);\n deps[parsed.name!] = depPathToRef(parsed);\n if (!allEdgeIds.has(id)) {\n snapshots[id] = {};\n packages[id] = convertGraphPackageToLockfilePackage(graph.packages.get(id)!);\n }\n }\n return deps;\n }\n}\n\ninterface PkgToResolve {\n name: string;\n version: string;\n pkgId: string;\n}\n\nfunction getPkgsToResolve(lockfile: BitLockfileFile, manifests: Record<string, ProjectManifest>): PkgToResolve[] {\n const pkgsToResolve: PkgToResolve[] = [];\n const pkgsInTheWorkspaces = new Map<string, string>();\n for (const { name, version } of Object.values(manifests)) {\n if (name && version) {\n pkgsInTheWorkspaces.set(name, version);\n }\n }\n for (const [pkgId, pkg] of Object.entries(lockfile.packages ?? {})) {\n if (pkg.resolution == null || ('type' in pkg.resolution && pkg.resolution.type === 'directory')) {\n const parsed = dp.parse(pkgId);\n if (\n parsed.name &&\n parsed.version &&\n (!pkgsInTheWorkspaces.has(parsed.name) || pkgsInTheWorkspaces.get(parsed.name) !== parsed.version)\n ) {\n pkgsToResolve.push({\n name: parsed.name,\n version: parsed.version,\n pkgId,\n });\n }\n }\n }\n return pkgsToResolve;\n}\n\nfunction depPathToRef(depPath: dp.DependencyPath): string {\n return `${depPath.version}${depPath.patchHash ?? ''}${depPath.peerDepGraphHash ?? ''}`;\n}\n\nfunction isFilePkgId(pkgId: string): boolean {\n return dp.parse(pkgId).nonSemverVersion?.startsWith('file:') ?? false;\n}\n\n/**\n * Strip orphan \"@file:\" entries from the graph (mutates in place).\n *\n * The \"@file:\" pkgIds in pnpm's lockfile are workspace components linked as\n * directory deps. buildPackages is supposed to rewrite them to\n * \"name@<semverVersion>\" via componentIdByPkgName, but if a name is missing\n * from that map (older bit, partial isolation, a component renamed/removed\n * between install and tag) the orphan leaks through with its resolution\n * stripped (directory type). We can't recover an integrity for it later —\n * getPkgsToResolve won't try because dp.parse shoves \"file:...\" into\n * nonSemverVersion, leaving parsed.version undefined, and at install time\n * the component is either a workspace project pnpm wires through importers\n * (so it doesn't belong in the packages map) or no longer in the workspace\n * at all. Either way the orphan entry is unusable, so drop it both at graph\n * creation (don't persist broken graphs) and at lockfile generation\n * (recover graphs already saved in the model).\n */\nfunction dropOrphanFilePkgs(graph: DependenciesGraph): void {\n const orphanPkgIds = new Set<string>();\n for (const pkgId of graph.packages.keys()) {\n if (isFilePkgId(pkgId)) {\n orphanPkgIds.add(pkgId);\n }\n }\n for (const edge of graph.edges) {\n const pkgId = edge.attr?.pkgId ?? edge.id;\n if (isFilePkgId(pkgId) || isFilePkgId(edge.id)) {\n orphanPkgIds.add(pkgId);\n orphanPkgIds.add(edge.id);\n }\n }\n if (orphanPkgIds.size === 0) return;\n for (const id of orphanPkgIds) {\n graph.packages.delete(id);\n }\n graph.edges = graph.edges\n .filter((edge) => !orphanPkgIds.has(edge.id) && !orphanPkgIds.has(edge.attr?.pkgId ?? edge.id))\n .map((edge) => {\n if (!edge.neighbours.some((n) => orphanPkgIds.has(n.id))) return edge;\n return {\n ...edge,\n neighbours: edge.neighbours.filter((n) => !orphanPkgIds.has(n.id)),\n };\n });\n}\n\nfunction convertGraphPackageToLockfilePackage(pkgAttr: PackageAttributes) {\n return pick(pkgAttr, [\n 'bundledDependencies',\n 'cpu',\n 'deprecated',\n 'engines',\n 'hasBin',\n 'libc',\n 'name',\n 'os',\n 'peerDependencies',\n 'peerDependenciesMeta',\n 'resolution',\n 'version',\n ]);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_path","data","_interopRequireDefault","require","dp","_interopRequireWildcard","_lodash","_bitError","_componentPackageVersion","_objects","_lockfile","_normalizePath","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","convertLockfileToGraphFromCapsule","lockfile","componentRelativeDir","componentIdByPkgName","componentImporter","importers","directDependencies","depType","lifecycle","optional","importerDepsToNeighbours","_convertLockfileToGraph","importerDependencies","neighbours","name","version","specifier","entries","id","refToRelative","convertLockfileToGraph","pkgName","componentRootDir","componentDevImporter","devDependencies","lockedPkgDepPath","dependencies","lockedPkg","snapshots","packages","removeSuffix","lockedFileVersion","snapshot","values","deps","graph","DependenciesGraph","edges","buildEdges","buildPackages","dropOrphanFilePkgs","replaceFileVersion","createFileVersionReplacer","depPath","extractDependenciesFromSnapshot","replacedDepPath","edge","pkgId","attr","transitivePeerDependencies","dep","ROOT_EDGE_ID","depTypeField","ref","subDepPath","depsRequiringBuild","bit","depsRequiringBuildSet","Set","undefined","Map","pkg","graphPkg","pick","resolution","type","replacedPkgId","parsed","parse","compId","component","fullName","scope","requiresBuild","size","s","replacements","escapedNames","componentId","snapToSemver","replace","pattern","RegExp","join","includes","_","convertGraphToLockfile","_graph","manifests","rootDir","resolve","graphString","serialize","deserialize","dropOrphanNeighbours","allEdgeIds","map","optionalDeps","prodDeps","partition","convertToDeps","optionalDependencies","assign","convertGraphPackageToLockfilePackage","sort","lockfileVersion","rootEdge","findRootEdge","projectDir","manifest","projectId","getLockfileImporterId","startsWith","normalizePath","path","relative","substring","edgeId","find","directDep","depPathToRef","pkgsToResolve","getPkgsToResolve","failedWorkspaceComponentPkgs","Promise","all","pkgToResolve","resolveResult","alias","bareSpecifier","lockfileDir","preferredVersions","err","code","add","integrity","scrubPkgsFromLockfile","BitError","pkgsInTheWorkspaces","patchHash","peerDepGraphHash","isFilePkgId","nonSemverVersion","orphanPkgIds","delete","some","edgeIds","isOrphan","pkgIds","matches","importer","pkgAttr"],"sources":["lockfile-deps-graph-converter.ts"],"sourcesContent":["import path from 'path';\nimport { type ProjectManifest } from '@pnpm/types';\nimport { type LockfileFileProjectResolvedDependencies } from '@pnpm/lockfile.types';\nimport { type ResolveFunction } from '@pnpm/client';\nimport * as dp from '@pnpm/dependency-path';\nimport { pick, partition } from 'lodash';\nimport { BitError } from '@teambit/bit-error';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport {\n DependenciesGraph,\n type PackagesMap,\n type PackageAttributes,\n type DependencyEdge,\n type DependencyNeighbour,\n} from '@teambit/objects';\nimport {\n type CalcDepsGraphOptions,\n type CalcDepsGraphForComponentOptions,\n type ComponentIdByPkgName,\n} from '@teambit/dependency-resolver';\nimport { getLockfileImporterId } from '@pnpm/lockfile.fs';\nimport normalizePath from 'normalize-path';\nimport { type BitLockfileFile } from './lynx';\n\nfunction convertLockfileToGraphFromCapsule(\n lockfile: BitLockfileFile,\n {\n componentRelativeDir,\n componentIdByPkgName,\n }: Pick<CalcDepsGraphOptions & CalcDepsGraphForComponentOptions, 'componentRelativeDir' | 'componentIdByPkgName'>\n): DependenciesGraph {\n const componentImporter = lockfile.importers![componentRelativeDir];\n const directDependencies: DependencyNeighbour[] = [];\n for (const depType of ['dependencies' as const, 'optionalDependencies' as const, 'devDependencies' as const]) {\n if (componentImporter[depType] != null) {\n const lifecycle = depType === 'devDependencies' ? 'dev' : 'runtime';\n const optional = depType === 'optionalDependencies';\n directDependencies.push(...importerDepsToNeighbours(componentImporter[depType]!, lifecycle, optional));\n }\n }\n return _convertLockfileToGraph(lockfile, { componentIdByPkgName, directDependencies });\n}\n\nfunction importerDepsToNeighbours(\n importerDependencies: LockfileFileProjectResolvedDependencies,\n lifecycle: 'dev' | 'runtime',\n optional: boolean\n): DependencyNeighbour[] {\n const neighbours: DependencyNeighbour[] = [];\n for (const [name, { version, specifier }] of Object.entries(importerDependencies) as any) {\n const id = dp.refToRelative(version, name)!;\n neighbours.push({ name, specifier, id, lifecycle, optional });\n }\n return neighbours;\n}\n\nexport function convertLockfileToGraph(\n lockfile: BitLockfileFile,\n {\n pkgName,\n componentRootDir,\n componentRelativeDir,\n componentIdByPkgName,\n }: Omit<CalcDepsGraphOptions & CalcDepsGraphForComponentOptions, 'rootDir' | 'components' | 'component'>\n): DependenciesGraph {\n if (componentRootDir == null || pkgName == null) {\n return convertLockfileToGraphFromCapsule(lockfile, { componentRelativeDir, componentIdByPkgName });\n }\n const componentDevImporter = lockfile.importers![componentRelativeDir];\n const directDependencies: DependencyNeighbour[] = [];\n if (componentDevImporter.devDependencies != null) {\n directDependencies.push(...importerDepsToNeighbours(componentDevImporter.devDependencies, 'dev', false));\n }\n const lockedPkgDepPath = `${pkgName}@${lockfile.importers![componentRootDir].dependencies![pkgName].version}`;\n const lockedPkg = lockfile.snapshots![lockedPkgDepPath];\n for (const depType of ['dependencies' as const, 'optionalDependencies' as const]) {\n const optional = depType === 'optionalDependencies';\n for (const [name, version] of Object.entries(lockedPkg[depType] ?? {})) {\n const id = dp.refToRelative(version, name)!;\n directDependencies.push({\n name,\n specifier: componentDevImporter[depType]?.[name]?.specifier ?? '*',\n id,\n lifecycle: 'runtime',\n optional,\n });\n }\n }\n delete lockfile.snapshots![lockedPkgDepPath];\n delete lockfile.packages![dp.removeSuffix(lockedPkgDepPath)];\n // Scrub back-edges from a circular workspace dep (another workspace\n // component depending on the one we're processing). Otherwise the\n // back-edge survives buildEdges but its target — the just-deleted\n // pkgId — has no entry in buildPackages, leaving a dangling neighbour.\n // convertGraphToLockfile would later materialise that neighbour as an\n // empty packages entry and ask the registry for the workspace\n // snap-version, which may never have been published.\n const lockedFileVersion = lockfile.importers![componentRootDir].dependencies![pkgName].version;\n for (const snapshot of Object.values(lockfile.snapshots ?? {})) {\n for (const depType of ['dependencies', 'optionalDependencies'] as const) {\n const deps = snapshot[depType];\n if (deps?.[pkgName] === lockedFileVersion) {\n delete deps[pkgName];\n if (Object.keys(deps).length === 0) delete snapshot[depType];\n }\n }\n }\n return _convertLockfileToGraph(lockfile, { componentIdByPkgName, directDependencies });\n}\n\nfunction _convertLockfileToGraph(\n lockfile: BitLockfileFile,\n {\n componentIdByPkgName,\n directDependencies,\n }: {\n componentIdByPkgName: ComponentIdByPkgName;\n directDependencies: DependencyNeighbour[];\n }\n): DependenciesGraph {\n const graph = new DependenciesGraph({\n edges: buildEdges(lockfile, { directDependencies, componentIdByPkgName }),\n packages: buildPackages(lockfile, { componentIdByPkgName }),\n });\n dropOrphanFilePkgs(graph);\n return graph;\n}\n\nfunction buildEdges(\n lockfile: BitLockfileFile,\n {\n directDependencies,\n componentIdByPkgName,\n }: {\n directDependencies: DependencyNeighbour[];\n componentIdByPkgName: ComponentIdByPkgName;\n }\n): DependencyEdge[] {\n const replaceFileVersion = createFileVersionReplacer(componentIdByPkgName);\n const edges: DependencyEdge[] = [];\n for (const [depPath, snapshot] of Object.entries(lockfile.snapshots ?? {})) {\n const neighbours = extractDependenciesFromSnapshot(snapshot, replaceFileVersion);\n const replacedDepPath = replaceFileVersion(depPath);\n const edge: DependencyEdge = {\n id: replacedDepPath,\n neighbours,\n };\n const pkgId = dp.removeSuffix(replacedDepPath);\n if (pkgId !== replacedDepPath) {\n edge.attr = { pkgId };\n }\n if (snapshot.transitivePeerDependencies) {\n edge.attr = {\n ...edge.attr,\n transitivePeerDependencies: snapshot.transitivePeerDependencies,\n };\n }\n if (edge.neighbours.length > 0 || edge.id !== pkgId) {\n edges.push(edge);\n }\n }\n for (const dep of directDependencies) {\n dep.id = replaceFileVersion(dep.id);\n }\n edges.push({\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: directDependencies,\n });\n return edges;\n}\n\nfunction extractDependenciesFromSnapshot(\n snapshot: any,\n replaceFileVersion: (s: string) => string\n): DependencyNeighbour[] {\n const dependencies: DependencyNeighbour[] = [];\n\n for (const { depTypeField, optional } of [\n { depTypeField: 'dependencies', optional: false },\n { depTypeField: 'optionalDependencies', optional: true },\n ]) {\n for (const [name, ref] of Object.entries((snapshot[depTypeField] ?? {}) as Record<string, string>)) {\n const subDepPath = dp.refToRelative(ref, name);\n if (subDepPath != null) {\n dependencies.push({ id: replaceFileVersion(subDepPath), optional });\n }\n }\n }\n\n return dependencies;\n}\n\nfunction buildPackages(\n lockfile: BitLockfileFile,\n { componentIdByPkgName }: { componentIdByPkgName: ComponentIdByPkgName }\n): PackagesMap {\n const replaceFileVersion = createFileVersionReplacer(componentIdByPkgName);\n const depsRequiringBuild = lockfile.bit?.depsRequiringBuild;\n const depsRequiringBuildSet = depsRequiringBuild ? new Set(depsRequiringBuild) : undefined;\n const packages: PackagesMap = new Map();\n for (const [pkgId, pkg] of Object.entries(lockfile.packages ?? {})) {\n const graphPkg = pick(pkg, [\n 'bundledDependencies',\n 'cpu',\n 'deprecated',\n 'engines',\n 'hasBin',\n 'libc',\n 'name',\n 'os',\n 'peerDependencies',\n 'peerDependenciesMeta',\n 'resolution',\n 'version',\n ]) as any;\n if (graphPkg.resolution.type === 'directory') {\n delete graphPkg.resolution;\n }\n const replacedPkgId = replaceFileVersion(pkgId);\n const parsed = dp.parse(replacedPkgId);\n if (parsed.name && componentIdByPkgName.has(parsed.name)) {\n const compId = componentIdByPkgName.get(parsed.name)!;\n graphPkg.component = {\n name: compId.fullName,\n scope: compId.scope,\n };\n }\n if (depsRequiringBuildSet?.has(pkgId)) {\n graphPkg.requiresBuild = true;\n }\n packages.set(replacedPkgId, graphPkg);\n }\n return packages;\n}\n\nfunction createFileVersionReplacer(componentIdByPkgName: ComponentIdByPkgName): (s: string) => string {\n if (componentIdByPkgName.size === 0) return (s) => s;\n\n const replacements = new Map<string, string>();\n const escapedNames: string[] = [];\n for (const [pkgName, componentId] of componentIdByPkgName.entries()) {\n replacements.set(pkgName, `${pkgName}@${snapToSemver(componentId.version)}`);\n escapedNames.push(pkgName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'));\n }\n const pattern = new RegExp(`(${escapedNames.join('|')})@file:[^'\"(]+`, 'g');\n\n return (s: string) => {\n if (!s.includes('@file:')) return s;\n return s.replace(pattern, (_, name) => replacements.get(name)!);\n };\n}\n\nexport async function convertGraphToLockfile(\n _graph: DependenciesGraph,\n {\n manifests,\n rootDir,\n resolve,\n }: {\n manifests: Record<string, ProjectManifest>;\n rootDir: string;\n resolve: ResolveFunction;\n }\n): Promise<BitLockfileFile> {\n const graphString = _graph.serialize();\n const graph = DependenciesGraph.deserialize(graphString)!;\n dropOrphanFilePkgs(graph);\n dropOrphanNeighbours(graph);\n const packages = {};\n const snapshots = {};\n const allEdgeIds = new Set(graph.edges.map(({ id }) => id));\n\n for (const edge of graph.edges) {\n if (edge.id === DependenciesGraph.ROOT_EDGE_ID) continue;\n const pkgId = edge.attr?.pkgId ?? edge.id;\n snapshots[edge.id] = {};\n packages[pkgId] = {};\n const [optionalDeps, prodDeps] = partition(edge.neighbours, (dep) => dep.optional);\n if (prodDeps.length) {\n snapshots[edge.id].dependencies = convertToDeps(prodDeps);\n }\n if (optionalDeps.length) {\n snapshots[edge.id].optionalDependencies = convertToDeps(optionalDeps);\n }\n const graphPkg = graph.packages.get(pkgId);\n if (graphPkg != null) {\n Object.assign(packages[pkgId], convertGraphPackageToLockfilePackage(graphPkg));\n }\n }\n for (const [pkgId, graphPkg] of graph.packages.entries()) {\n if (packages[pkgId] == null) {\n packages[pkgId] = convertGraphPackageToLockfilePackage(graphPkg);\n snapshots[pkgId] = {};\n }\n }\n const depsRequiringBuild: string[] = [];\n for (const [pkgId, { requiresBuild }] of graph.packages.entries()) {\n if (requiresBuild) {\n depsRequiringBuild.push(pkgId);\n }\n }\n depsRequiringBuild.sort();\n const lockfile: BitLockfileFile & Required<Pick<BitLockfileFile, 'packages'>> = {\n lockfileVersion: '9.0',\n packages,\n snapshots,\n importers: {},\n bit: { depsRequiringBuild },\n };\n const rootEdge = graph.findRootEdge();\n if (rootEdge) {\n for (const [projectDir, manifest] of Object.entries(manifests)) {\n const projectId = getLockfileImporterId(rootDir, projectDir);\n lockfile.importers![projectId] = {\n dependencies: {},\n devDependencies: {},\n optionalDependencies: {},\n };\n for (const depType of ['dependencies', 'devDependencies', 'optionalDependencies']) {\n for (const [name, specifier] of Object.entries(manifest[depType] ?? {}) as Array<[string, string]>) {\n if (specifier.startsWith('link:')) {\n const version = `link:${normalizePath(path.relative(projectDir, specifier.substring(5)))}`;\n lockfile.importers![projectId][depType][name] = { version, specifier };\n } else {\n const edgeId = rootEdge.neighbours.find(\n (directDep) =>\n directDep.name === name &&\n (directDep.specifier === specifier || dp.removeSuffix(directDep.id) === `${name}@${specifier}`)\n )?.id;\n if (edgeId) {\n const parsed = dp.parse(edgeId);\n const ref = depPathToRef(parsed);\n lockfile.importers![projectId][depType][name] = { version: ref, specifier };\n }\n }\n }\n }\n }\n }\n const pkgsToResolve = getPkgsToResolve(lockfile, manifests);\n const failedWorkspaceComponentPkgs = new Set<string>();\n await Promise.all(\n pkgsToResolve.map(async (pkgToResolve) => {\n if (lockfile.packages[pkgToResolve.pkgId].resolution == null) {\n let resolveResult;\n try {\n resolveResult = await resolve(\n {\n alias: pkgToResolve.name,\n bareSpecifier: pkgToResolve.version,\n },\n {\n lockfileDir: '',\n projectDir: '',\n preferredVersions: {},\n }\n );\n } catch (err) {\n // A workspace-component package with a missing resolution whose\n // snap-version was never published surfaces here as pnpm's\n // ERR_PNPM_NO_MATCHING_VERSION. The graph itself is unusable for\n // this pkgId, but pnpm can re-resolve the dep from the installing\n // manifest's specifier — so scrub the pkgId from the generated\n // lockfile and continue. Re-throw every other error code (network,\n // auth, 5xx, even FETCH_404 since some registries return 404 on\n // auth failures) so real install failures aren't silently masked.\n if (\n (err as { code?: string }).code === 'ERR_PNPM_NO_MATCHING_VERSION' &&\n graph.packages.get(pkgToResolve.pkgId)?.component != null\n ) {\n failedWorkspaceComponentPkgs.add(pkgToResolve.pkgId);\n return;\n }\n throw err;\n }\n const { resolution } = resolveResult;\n if ('integrity' in resolution && resolution.integrity) {\n lockfile.packages[pkgToResolve.pkgId].resolution = {\n integrity: resolution.integrity,\n };\n }\n }\n })\n );\n if (failedWorkspaceComponentPkgs.size > 0) {\n scrubPkgsFromLockfile(lockfile, failedWorkspaceComponentPkgs);\n }\n // Validate the generated lockfile\n for (const [depPath, pkg] of Object.entries(lockfile.packages)) {\n if (pkg.resolution == null || Object.keys(pkg.resolution).length === 0) {\n throw new BitError(\n `Failed to generate a valid lockfile. The \"packages['${depPath}'] entry doesn't have a \"resolution\" field.`\n );\n }\n }\n return lockfile;\n\n function convertToDeps(neighbours: DependencyNeighbour[]) {\n const deps = {};\n for (const { id } of neighbours) {\n const parsed = dp.parse(id);\n deps[parsed.name!] = depPathToRef(parsed);\n if (!allEdgeIds.has(id)) {\n snapshots[id] = {};\n packages[id] = convertGraphPackageToLockfilePackage(graph.packages.get(id)!);\n }\n }\n return deps;\n }\n}\n\ninterface PkgToResolve {\n name: string;\n version: string;\n pkgId: string;\n}\n\nfunction getPkgsToResolve(lockfile: BitLockfileFile, manifests: Record<string, ProjectManifest>): PkgToResolve[] {\n const pkgsToResolve: PkgToResolve[] = [];\n const pkgsInTheWorkspaces = new Map<string, string>();\n for (const { name, version } of Object.values(manifests)) {\n if (name && version) {\n pkgsInTheWorkspaces.set(name, version);\n }\n }\n for (const [pkgId, pkg] of Object.entries(lockfile.packages ?? {})) {\n if (pkg.resolution == null || ('type' in pkg.resolution && pkg.resolution.type === 'directory')) {\n const parsed = dp.parse(pkgId);\n if (\n parsed.name &&\n parsed.version &&\n (!pkgsInTheWorkspaces.has(parsed.name) || pkgsInTheWorkspaces.get(parsed.name) !== parsed.version)\n ) {\n pkgsToResolve.push({\n name: parsed.name,\n version: parsed.version,\n pkgId,\n });\n }\n }\n }\n return pkgsToResolve;\n}\n\nfunction depPathToRef(depPath: dp.DependencyPath): string {\n return `${depPath.version}${depPath.patchHash ?? ''}${depPath.peerDepGraphHash ?? ''}`;\n}\n\nfunction isFilePkgId(pkgId: string): boolean {\n return dp.parse(pkgId).nonSemverVersion?.startsWith('file:') ?? false;\n}\n\n/**\n * Strip orphan \"@file:\" entries from the graph (mutates in place).\n *\n * The \"@file:\" pkgIds in pnpm's lockfile are workspace components linked as\n * directory deps. buildPackages is supposed to rewrite them to\n * \"name@<semverVersion>\" via componentIdByPkgName, but if a name is missing\n * from that map (older bit, partial isolation, a component renamed/removed\n * between install and tag) the orphan leaks through with its resolution\n * stripped (directory type). We can't recover an integrity for it later —\n * getPkgsToResolve won't try because dp.parse shoves \"file:...\" into\n * nonSemverVersion, leaving parsed.version undefined, and at install time\n * the component is either a workspace project pnpm wires through importers\n * (so it doesn't belong in the packages map) or no longer in the workspace\n * at all. Either way the orphan entry is unusable, so drop it both at graph\n * creation (don't persist broken graphs) and at lockfile generation\n * (recover graphs already saved in the model).\n */\nfunction dropOrphanFilePkgs(graph: DependenciesGraph): void {\n const orphanPkgIds = new Set<string>();\n for (const pkgId of graph.packages.keys()) {\n if (isFilePkgId(pkgId)) {\n orphanPkgIds.add(pkgId);\n }\n }\n for (const edge of graph.edges) {\n const pkgId = edge.attr?.pkgId ?? edge.id;\n if (isFilePkgId(pkgId) || isFilePkgId(edge.id)) {\n orphanPkgIds.add(pkgId);\n orphanPkgIds.add(edge.id);\n }\n }\n if (orphanPkgIds.size === 0) return;\n for (const id of orphanPkgIds) {\n graph.packages.delete(id);\n }\n graph.edges = graph.edges\n .filter((edge) => !orphanPkgIds.has(edge.id) && !orphanPkgIds.has(edge.attr?.pkgId ?? edge.id))\n .map((edge) => {\n if (!edge.neighbours.some((n) => orphanPkgIds.has(n.id))) return edge;\n return {\n ...edge,\n neighbours: edge.neighbours.filter((n) => !orphanPkgIds.has(n.id)),\n };\n });\n}\n\n/**\n * Drop neighbours that reference a pkgId with no edge AND no packages entry.\n *\n * Recovers graphs saved by bits older than #10361 (the back-edge fix). Those\n * older bits, when snapping a component with a circular workspace dep, deleted\n * the component's own snapshot/package entry but left back-references to it on\n * other snapshots intact. The orphan neighbour now has no edge (its snapshot\n * was removed) and no packages entry (its package was removed), so the loop\n * below would synthesise an empty packages entry and getPkgsToResolve would\n * ask the registry for a workspace snap-version that was never published —\n * surfacing as ERR_PNPM_NO_MATCHING_VERSION at install time. Scrubbing the\n * dangling neighbour here means already-saved broken graphs install cleanly\n * without requiring the affected component to be re-snapped on a newer client.\n */\nfunction dropOrphanNeighbours(graph: DependenciesGraph): void {\n const edgeIds = new Set(graph.edges.map((edge) => edge.id));\n const isOrphan = (n: DependencyNeighbour): boolean =>\n !edgeIds.has(n.id) && !graph.packages.has(dp.removeSuffix(n.id));\n graph.edges = graph.edges.map((edge) => {\n if (!edge.neighbours.some(isOrphan)) return edge;\n return {\n ...edge,\n neighbours: edge.neighbours.filter((n) => !isOrphan(n)),\n };\n });\n}\n\n/**\n * Remove the given pkgIds (and everything that references them) from a\n * lockfile in place. Used when a workspace-component snap-version baked into\n * the graph turns out to be unpublishable at install time — leaving it in the\n * lockfile would fail validation and abort the whole install. Stripping it\n * means pnpm falls back to resolving the dep from the installing manifest's\n * specifier, which is the same path as a graph-less install for that one dep.\n */\nfunction scrubPkgsFromLockfile(lockfile: BitLockfileFile, pkgIds: Set<string>): void {\n const matches = (depPath: string): boolean => pkgIds.has(dp.removeSuffix(depPath));\n for (const pkgId of pkgIds) {\n delete lockfile.packages![pkgId];\n }\n for (const depPath of Object.keys(lockfile.snapshots ?? {})) {\n if (matches(depPath)) {\n delete lockfile.snapshots![depPath];\n }\n }\n for (const snapshot of Object.values(lockfile.snapshots ?? {})) {\n for (const depType of ['dependencies', 'optionalDependencies'] as const) {\n const deps = snapshot[depType];\n if (!deps) continue;\n for (const [name, ref] of Object.entries(deps)) {\n if (matches(`${name}@${ref}`)) {\n delete deps[name];\n }\n }\n if (Object.keys(deps).length === 0) delete snapshot[depType];\n }\n }\n for (const importer of Object.values(lockfile.importers ?? {})) {\n for (const depType of ['dependencies', 'devDependencies', 'optionalDependencies'] as const) {\n const deps = importer[depType];\n if (!deps) continue;\n for (const [name, { version }] of Object.entries(deps)) {\n if (version.startsWith('link:') || version.startsWith('file:')) continue;\n if (matches(`${name}@${version}`)) {\n delete deps[name];\n }\n }\n }\n }\n}\n\nfunction convertGraphPackageToLockfilePackage(pkgAttr: PackageAttributes) {\n return pick(pkgAttr, [\n 'bundledDependencies',\n 'cpu',\n 'deprecated',\n 'engines',\n 'hasBin',\n 'libc',\n 'name',\n 'os',\n 'peerDependencies',\n 'peerDependenciesMeta',\n 'resolution',\n 'version',\n ]);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -829,6 +829,275 @@ describe('convertGraphToLockfile on invalid graph', () => {
|
|
|
829
829
|
// filtered out so pnpm doesn't try to resolve a dep that no longer exists.
|
|
830
830
|
(0, _chai().expect)(lockfile.snapshots['foo@1.0.0']).to.eql({});
|
|
831
831
|
});
|
|
832
|
+
|
|
833
|
+
// Saved by bits older than #10361: when a workspace component with a
|
|
834
|
+
// circular dep was snapped, the component's own snapshot/package was
|
|
835
|
+
// deleted but back-references on other snapshots survived. The neighbour
|
|
836
|
+
// now points at a snap-version pkgId that exists nowhere else in the
|
|
837
|
+
// graph. Without the scrub, convertGraphToLockfile would materialise an
|
|
838
|
+
// empty packages entry and getPkgsToResolve would ask the registry for
|
|
839
|
+
// that unpublished snap version (surfacing as ERR_PNPM_NO_MATCHING_VERSION
|
|
840
|
+
// on ripple at install time).
|
|
841
|
+
it('should drop orphan neighbours that have no edge and no packages entry', async () => {
|
|
842
|
+
const packages = new Map([['foo@1.0.0', {
|
|
843
|
+
resolution: {
|
|
844
|
+
integrity: 'sha512-aaa'
|
|
845
|
+
}
|
|
846
|
+
}]]);
|
|
847
|
+
const edges = [{
|
|
848
|
+
id: _objects().DependenciesGraph.ROOT_EDGE_ID,
|
|
849
|
+
neighbours: [{
|
|
850
|
+
id: 'foo@1.0.0',
|
|
851
|
+
name: 'foo',
|
|
852
|
+
specifier: '1.0.0',
|
|
853
|
+
lifecycle: 'runtime'
|
|
854
|
+
}]
|
|
855
|
+
}, {
|
|
856
|
+
id: 'foo@1.0.0',
|
|
857
|
+
neighbours: [{
|
|
858
|
+
id: '@bitdev/react.app-types.vite-react@0.0.0-df1917dc0fcd7c894001404a162a48aca0219d43',
|
|
859
|
+
optional: false
|
|
860
|
+
}]
|
|
861
|
+
}];
|
|
862
|
+
const graph = new (_objects().DependenciesGraph)({
|
|
863
|
+
packages,
|
|
864
|
+
edges
|
|
865
|
+
});
|
|
866
|
+
let resolverCalled = false;
|
|
867
|
+
const lockfile = await (0, _lockfileDepsGraphConverter().convertGraphToLockfile)(new (_objects().DependenciesGraph)(graph), {
|
|
868
|
+
manifests: {
|
|
869
|
+
[_path().default.resolve('comps/comp1')]: {
|
|
870
|
+
dependencies: {
|
|
871
|
+
foo: '1.0.0'
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
},
|
|
875
|
+
rootDir: process.cwd(),
|
|
876
|
+
resolve: () => {
|
|
877
|
+
resolverCalled = true;
|
|
878
|
+
return {
|
|
879
|
+
resolution: {
|
|
880
|
+
integrity: '0000'
|
|
881
|
+
}
|
|
882
|
+
};
|
|
883
|
+
}
|
|
884
|
+
});
|
|
885
|
+
(0, _chai().expect)(resolverCalled).to.equal(false);
|
|
886
|
+
(0, _chai().expect)(Object.keys(lockfile.packages)).to.eql(['foo@1.0.0']);
|
|
887
|
+
(0, _chai().expect)(lockfile.snapshots['foo@1.0.0']).to.eql({});
|
|
888
|
+
});
|
|
889
|
+
it('should leave legitimate neighbours intact when scrubbing orphans', async () => {
|
|
890
|
+
const packages = new Map([['foo@1.0.0', {
|
|
891
|
+
resolution: {
|
|
892
|
+
integrity: 'sha512-aaa'
|
|
893
|
+
}
|
|
894
|
+
}], ['bar@2.0.0', {
|
|
895
|
+
resolution: {
|
|
896
|
+
integrity: 'sha512-bbb'
|
|
897
|
+
}
|
|
898
|
+
}]]);
|
|
899
|
+
const edges = [{
|
|
900
|
+
id: _objects().DependenciesGraph.ROOT_EDGE_ID,
|
|
901
|
+
neighbours: [{
|
|
902
|
+
id: 'foo@1.0.0',
|
|
903
|
+
name: 'foo',
|
|
904
|
+
specifier: '1.0.0',
|
|
905
|
+
lifecycle: 'runtime'
|
|
906
|
+
}]
|
|
907
|
+
}, {
|
|
908
|
+
id: 'foo@1.0.0',
|
|
909
|
+
neighbours: [{
|
|
910
|
+
id: 'bar@2.0.0',
|
|
911
|
+
optional: false
|
|
912
|
+
}, {
|
|
913
|
+
id: 'orphan-pkg@0.0.0-deadbeef',
|
|
914
|
+
optional: false
|
|
915
|
+
}]
|
|
916
|
+
}];
|
|
917
|
+
const lockfile = await (0, _lockfileDepsGraphConverter().convertGraphToLockfile)(new (_objects().DependenciesGraph)(new (_objects().DependenciesGraph)({
|
|
918
|
+
packages,
|
|
919
|
+
edges
|
|
920
|
+
})), {
|
|
921
|
+
manifests: {
|
|
922
|
+
[_path().default.resolve('comps/comp1')]: {
|
|
923
|
+
dependencies: {
|
|
924
|
+
foo: '1.0.0'
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
},
|
|
928
|
+
rootDir: process.cwd(),
|
|
929
|
+
resolve: () => ({
|
|
930
|
+
resolution: {
|
|
931
|
+
integrity: '0000'
|
|
932
|
+
}
|
|
933
|
+
})
|
|
934
|
+
});
|
|
935
|
+
(0, _chai().expect)(lockfile.snapshots['foo@1.0.0']).to.eql({
|
|
936
|
+
dependencies: {
|
|
937
|
+
bar: '2.0.0'
|
|
938
|
+
}
|
|
939
|
+
});
|
|
940
|
+
(0, _chai().expect)(Object.keys(lockfile.packages).sort()).to.eql(['bar@2.0.0', 'foo@1.0.0']);
|
|
941
|
+
});
|
|
942
|
+
|
|
943
|
+
// Saved by bits older than #10361: even when the workspace-component's snap
|
|
944
|
+
// entry survives in the graph (with no resolution, since the directory type
|
|
945
|
+
// was stripped at snap time), the registry lookup at install time fails
|
|
946
|
+
// because that snap-version was never published. Scrub the package, its
|
|
947
|
+
// snapshots and every reference to it so pnpm can re-resolve the dep from
|
|
948
|
+
// the installing manifest's specifier instead of aborting the install.
|
|
949
|
+
it('should drop workspace-component pkgs that fail to resolve from the registry', async () => {
|
|
950
|
+
const packages = new Map([['@bitdev/react.app-types.vite-react@0.0.0-df1917dc', {
|
|
951
|
+
component: {
|
|
952
|
+
scope: 'bitdev.react',
|
|
953
|
+
name: 'app-types/vite-react'
|
|
954
|
+
}
|
|
955
|
+
}], ['foo@1.0.0', {
|
|
956
|
+
resolution: {
|
|
957
|
+
integrity: 'sha512-aaa'
|
|
958
|
+
}
|
|
959
|
+
}]]);
|
|
960
|
+
const edges = [{
|
|
961
|
+
id: _objects().DependenciesGraph.ROOT_EDGE_ID,
|
|
962
|
+
neighbours: [{
|
|
963
|
+
id: 'foo@1.0.0',
|
|
964
|
+
name: 'foo',
|
|
965
|
+
specifier: '1.0.0',
|
|
966
|
+
lifecycle: 'runtime'
|
|
967
|
+
}]
|
|
968
|
+
}, {
|
|
969
|
+
id: 'foo@1.0.0',
|
|
970
|
+
neighbours: [{
|
|
971
|
+
id: '@bitdev/react.app-types.vite-react@0.0.0-df1917dc',
|
|
972
|
+
optional: false
|
|
973
|
+
}]
|
|
974
|
+
}, {
|
|
975
|
+
id: '@bitdev/react.app-types.vite-react@0.0.0-df1917dc',
|
|
976
|
+
neighbours: []
|
|
977
|
+
}];
|
|
978
|
+
const lockfile = await (0, _lockfileDepsGraphConverter().convertGraphToLockfile)(new (_objects().DependenciesGraph)(new (_objects().DependenciesGraph)({
|
|
979
|
+
packages,
|
|
980
|
+
edges
|
|
981
|
+
})), {
|
|
982
|
+
manifests: {
|
|
983
|
+
[_path().default.resolve('comps/comp1')]: {
|
|
984
|
+
dependencies: {
|
|
985
|
+
foo: '1.0.0'
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
},
|
|
989
|
+
rootDir: process.cwd(),
|
|
990
|
+
resolve: () => {
|
|
991
|
+
const err = new Error('No matching version found');
|
|
992
|
+
err.code = 'ERR_PNPM_NO_MATCHING_VERSION';
|
|
993
|
+
throw err;
|
|
994
|
+
}
|
|
995
|
+
});
|
|
996
|
+
(0, _chai().expect)(Object.keys(lockfile.packages).sort()).to.eql(['foo@1.0.0']);
|
|
997
|
+
(0, _chai().expect)(Object.keys(lockfile.snapshots).sort()).to.eql(['foo@1.0.0']);
|
|
998
|
+
(0, _chai().expect)(lockfile.snapshots['foo@1.0.0']).to.eql({});
|
|
999
|
+
});
|
|
1000
|
+
|
|
1001
|
+
// When the resolve failure is for a regular registry package (no component
|
|
1002
|
+
// attribute), we still want to surface the error rather than silently drop
|
|
1003
|
+
// it — that path means the graph itself is genuinely broken, not just
|
|
1004
|
+
// referencing an unpublished workspace snap.
|
|
1005
|
+
it('should re-throw resolver errors for non-component pkgs', async () => {
|
|
1006
|
+
const packages = new Map([['foo@1.0.0', {}]]);
|
|
1007
|
+
const edges = [{
|
|
1008
|
+
id: _objects().DependenciesGraph.ROOT_EDGE_ID,
|
|
1009
|
+
neighbours: [{
|
|
1010
|
+
id: 'foo@1.0.0',
|
|
1011
|
+
name: 'foo',
|
|
1012
|
+
specifier: '1.0.0',
|
|
1013
|
+
lifecycle: 'runtime'
|
|
1014
|
+
}]
|
|
1015
|
+
}, {
|
|
1016
|
+
id: 'foo@1.0.0',
|
|
1017
|
+
neighbours: []
|
|
1018
|
+
}];
|
|
1019
|
+
let caught;
|
|
1020
|
+
try {
|
|
1021
|
+
await (0, _lockfileDepsGraphConverter().convertGraphToLockfile)(new (_objects().DependenciesGraph)(new (_objects().DependenciesGraph)({
|
|
1022
|
+
packages,
|
|
1023
|
+
edges
|
|
1024
|
+
})), {
|
|
1025
|
+
manifests: {
|
|
1026
|
+
[_path().default.resolve('comps/comp1')]: {
|
|
1027
|
+
dependencies: {
|
|
1028
|
+
foo: '1.0.0'
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
1031
|
+
},
|
|
1032
|
+
rootDir: process.cwd(),
|
|
1033
|
+
resolve: () => {
|
|
1034
|
+
throw new Error('boom');
|
|
1035
|
+
}
|
|
1036
|
+
});
|
|
1037
|
+
} catch (err) {
|
|
1038
|
+
caught = err;
|
|
1039
|
+
}
|
|
1040
|
+
(0, _chai().expect)(caught?.message).to.equal('boom');
|
|
1041
|
+
});
|
|
1042
|
+
|
|
1043
|
+
// Narrowing guardrail: even for a component-flagged pkg, only
|
|
1044
|
+
// ERR_PNPM_NO_MATCHING_VERSION should be swallowed. A network/auth/5xx
|
|
1045
|
+
// failure must propagate so a real outage isn't silently masked as a
|
|
1046
|
+
// graph-recovery success.
|
|
1047
|
+
it('should re-throw non-NoMatchingVersion errors even for component pkgs', async () => {
|
|
1048
|
+
const packages = new Map([['@bitdev/react.app-types.vite-react@0.0.0-df1917dc', {
|
|
1049
|
+
component: {
|
|
1050
|
+
scope: 'bitdev.react',
|
|
1051
|
+
name: 'app-types/vite-react'
|
|
1052
|
+
}
|
|
1053
|
+
}], ['foo@1.0.0', {
|
|
1054
|
+
resolution: {
|
|
1055
|
+
integrity: 'sha512-aaa'
|
|
1056
|
+
}
|
|
1057
|
+
}]]);
|
|
1058
|
+
const edges = [{
|
|
1059
|
+
id: _objects().DependenciesGraph.ROOT_EDGE_ID,
|
|
1060
|
+
neighbours: [{
|
|
1061
|
+
id: 'foo@1.0.0',
|
|
1062
|
+
name: 'foo',
|
|
1063
|
+
specifier: '1.0.0',
|
|
1064
|
+
lifecycle: 'runtime'
|
|
1065
|
+
}]
|
|
1066
|
+
}, {
|
|
1067
|
+
id: 'foo@1.0.0',
|
|
1068
|
+
neighbours: [{
|
|
1069
|
+
id: '@bitdev/react.app-types.vite-react@0.0.0-df1917dc'
|
|
1070
|
+
}]
|
|
1071
|
+
}, {
|
|
1072
|
+
id: '@bitdev/react.app-types.vite-react@0.0.0-df1917dc',
|
|
1073
|
+
neighbours: []
|
|
1074
|
+
}];
|
|
1075
|
+
let caught;
|
|
1076
|
+
try {
|
|
1077
|
+
await (0, _lockfileDepsGraphConverter().convertGraphToLockfile)(new (_objects().DependenciesGraph)(new (_objects().DependenciesGraph)({
|
|
1078
|
+
packages,
|
|
1079
|
+
edges
|
|
1080
|
+
})), {
|
|
1081
|
+
manifests: {
|
|
1082
|
+
[_path().default.resolve('comps/comp1')]: {
|
|
1083
|
+
dependencies: {
|
|
1084
|
+
foo: '1.0.0'
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
},
|
|
1088
|
+
rootDir: process.cwd(),
|
|
1089
|
+
resolve: () => {
|
|
1090
|
+
const err = new Error('Connect ETIMEDOUT');
|
|
1091
|
+
err.code = 'ERR_PNPM_META_FETCH_FAIL';
|
|
1092
|
+
throw err;
|
|
1093
|
+
}
|
|
1094
|
+
});
|
|
1095
|
+
} catch (err) {
|
|
1096
|
+
caught = err;
|
|
1097
|
+
}
|
|
1098
|
+
(0, _chai().expect)(caught?.message).to.equal('Connect ETIMEDOUT');
|
|
1099
|
+
(0, _chai().expect)(caught.code).to.equal('ERR_PNPM_META_FETCH_FAIL');
|
|
1100
|
+
});
|
|
832
1101
|
it('should throw an error if resolution is missing', async () => {
|
|
833
1102
|
const packages = new Map([['foo@1.0.0', {}]]);
|
|
834
1103
|
const edges = [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_path","data","_interopRequireDefault","require","_component","_objects","_lockfileDepsGraphConverter","_chai","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","describe","lockfile","bit","depsRequiringBuild","importers","dependencies","comp1","version","specifier","foo","qar","zoo","lockfileVersion","snapshots","bar","comp2","packages","resolution","directory","type","engines","node","npm","hasBin","os","cpu","integrity","peerDependencies","graph","convertLockfileToGraph","pkgName","componentRelativeDir","componentRootDir","componentIdByPkgName","Map","ComponentID","fromString","expected","schemaVersion","edges","id","neighbours","optional","attr","pkgId","name","lifecycle","requiresBuild","component","scope","it","expect","fromEntries","entries","to","eql","convertGraphToLockfile","DependenciesGraph","manifests","path","resolve","rootDir","process","cwd","devDependencies","optionalDependencies","referencingComp1","edge","some","n","has","equal","comp3","undefined","rootEdge","findRootEdge","map","find","includes","generateLargeLockfile","numPackages","numComponents","importerDeps","deps","compName","compPath","fileDepPath","set","Array","from","_","start","performance","now","elapsed","be","greaterThan","size","lessThan","lockfileCount","lockfiles","graphs","ROOT_EDGE_ID","error","_error","message","eq"],"sources":["lockfile-deps-graph-converter.spec.ts"],"sourcesContent":["import path from 'path';\nimport { ComponentID } from '@teambit/component';\nimport { DependenciesGraph, type PackagesMap, type DependencyEdge } from '@teambit/objects';\nimport { convertLockfileToGraph, convertGraphToLockfile } from './lockfile-deps-graph-converter';\nimport { type BitLockfileFile } from './lynx';\nimport { expect } from 'chai';\n\ndescribe('convertLockfileToGraph simple case', () => {\n const lockfile: BitLockfileFile = {\n bit: {\n depsRequiringBuild: ['bar@1.0.0'],\n },\n importers: {\n '.': {},\n 'node_modules/.bit_roots/env': {\n dependencies: {\n comp1: {\n version: 'file:comps/comp1',\n specifier: '*',\n },\n },\n },\n 'comps/comp1': {\n dependencies: {\n foo: {\n version: '1.0.0(patch_hash=0000)',\n specifier: '^1.0.0',\n },\n qar: {\n version: '1.1.0',\n specifier: '^1.0.0',\n },\n zoo: {\n version: '1.1.0(qar@1.1.0)',\n specifier: '^1.1.0',\n },\n },\n },\n },\n lockfileVersion: '9.0',\n snapshots: {\n 'foo@1.0.0(patch_hash=0000)': {\n dependencies: {\n bar: '1.0.0',\n },\n },\n 'bar@1.0.0': {},\n 'qar@1.1.0': {},\n 'zoo@1.1.0(qar@1.1.0)': {\n dependencies: {\n qar: '1.1.0',\n },\n },\n 'comp1@file:comps/comp1': {\n dependencies: {\n foo: '1.0.0(patch_hash=0000)',\n qar: '1.1.0',\n zoo: '1.1.0(qar@1.1.0)',\n comp2: 'file:comps/comp2',\n },\n },\n 'comp2@file:comps/comp2': {\n dependencies: {},\n },\n },\n packages: {\n 'comp1@file:comps/comp1': {\n resolution: {\n directory: 'comps/comp1',\n type: 'directory',\n },\n },\n 'comp2@file:comps/comp2': {\n resolution: {\n directory: 'comps/comp2',\n type: 'directory',\n },\n },\n 'foo@1.0.0': {\n engines: {\n node: '>=8',\n npm: '>=6',\n },\n hasBin: true,\n os: ['darwin'],\n cpu: ['arm64'],\n resolution: {\n integrity: 'sha512-000',\n },\n },\n 'bar@1.0.0': {\n resolution: {\n integrity: 'sha512-111',\n },\n },\n 'qar@1.1.0': {\n resolution: {\n integrity: 'sha512-222',\n },\n },\n 'zoo@1.1.0': {\n peerDependencies: {\n qar: '*',\n },\n resolution: {\n integrity: 'sha512-333',\n },\n },\n },\n };\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: 'comp1',\n componentRelativeDir: 'comps/comp1',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName: new Map([\n ['comp1', ComponentID.fromString('my-scope/comp1@1.0.0')],\n ['comp2', ComponentID.fromString('my-scope/comp2@1.0.0')],\n ]),\n });\n const expected = {\n schemaVersion: '2.0',\n edges: [\n {\n id: 'foo@1.0.0(patch_hash=0000)',\n neighbours: [{ id: 'bar@1.0.0', optional: false }],\n attr: {\n pkgId: 'foo@1.0.0',\n },\n },\n {\n id: 'zoo@1.1.0(qar@1.1.0)',\n neighbours: [{ id: 'qar@1.1.0', optional: false }],\n attr: {\n pkgId: 'zoo@1.1.0',\n },\n },\n {\n id: '.',\n neighbours: [\n {\n id: 'foo@1.0.0(patch_hash=0000)',\n name: 'foo',\n specifier: '^1.0.0',\n lifecycle: 'runtime',\n optional: false,\n },\n {\n id: 'qar@1.1.0',\n name: 'qar',\n specifier: '^1.0.0',\n lifecycle: 'runtime',\n optional: false,\n },\n {\n id: 'zoo@1.1.0(qar@1.1.0)',\n name: 'zoo',\n specifier: '^1.1.0',\n lifecycle: 'runtime',\n optional: false,\n },\n {\n id: 'comp2@1.0.0',\n lifecycle: 'runtime',\n name: 'comp2',\n optional: false,\n specifier: '*',\n },\n ],\n },\n ],\n packages: {\n 'foo@1.0.0': {\n engines: {\n node: '>=8',\n npm: '>=6',\n },\n hasBin: true,\n os: ['darwin'],\n cpu: ['arm64'],\n resolution: {\n integrity: 'sha512-000',\n },\n },\n 'bar@1.0.0': {\n requiresBuild: true,\n resolution: {\n integrity: 'sha512-111',\n },\n },\n 'qar@1.1.0': {\n resolution: {\n integrity: 'sha512-222',\n },\n },\n 'zoo@1.1.0': {\n peerDependencies: {\n qar: '*',\n },\n resolution: {\n integrity: 'sha512-333',\n },\n },\n 'comp2@1.0.0': {\n component: {\n name: 'comp2',\n scope: 'my-scope',\n },\n },\n },\n };\n it('should convert the lockfile object to the graph object', () => {\n expect({\n ...graph,\n packages: Object.fromEntries(graph.packages.entries()),\n }).to.eql(expected);\n });\n it('should convert the graph object to the lockfile object', async () => {\n expect(\n await convertGraphToLockfile(new DependenciesGraph(graph), {\n manifests: {\n [path.resolve('comps/comp1')]: {\n dependencies: {\n foo: '^1.0.0',\n bar: `link:${path.resolve('comps/bar')}`, // Links from the manifests are added to the lockfile\n qar: '1.1.0',\n zoo: '1.1.0',\n comp2: '1.0.0',\n },\n },\n },\n rootDir: process.cwd(),\n resolve: () => ({ resolution: { integrity: '0000' } }) as any,\n })\n ).to.eql({\n bit: {\n depsRequiringBuild: ['bar@1.0.0'],\n },\n importers: {\n 'comps/comp1': {\n dependencies: {\n comp2: {\n version: '1.0.0',\n specifier: '1.0.0',\n },\n foo: {\n version: '1.0.0(patch_hash=0000)',\n specifier: '^1.0.0',\n },\n bar: {\n version: 'link:../bar',\n specifier: `link:${path.resolve('comps/bar')}`,\n },\n qar: {\n version: '1.1.0',\n specifier: '1.1.0',\n },\n zoo: {\n version: '1.1.0(qar@1.1.0)',\n specifier: '1.1.0',\n },\n },\n devDependencies: {},\n optionalDependencies: {},\n },\n },\n lockfileVersion: '9.0',\n snapshots: {\n 'foo@1.0.0(patch_hash=0000)': {\n dependencies: {\n bar: '1.0.0',\n },\n },\n 'bar@1.0.0': {},\n 'qar@1.1.0': {},\n 'comp2@1.0.0': {},\n 'zoo@1.1.0(qar@1.1.0)': {\n dependencies: {\n qar: '1.1.0',\n },\n },\n },\n packages: {\n 'comp2@1.0.0': {\n resolution: {\n integrity: '0000',\n },\n },\n 'foo@1.0.0': {\n engines: {\n node: '>=8',\n npm: '>=6',\n },\n hasBin: true,\n os: ['darwin'],\n cpu: ['arm64'],\n resolution: {\n integrity: 'sha512-000',\n },\n },\n 'bar@1.0.0': {\n resolution: {\n integrity: 'sha512-111',\n },\n },\n 'qar@1.1.0': {\n resolution: {\n integrity: 'sha512-222',\n },\n },\n 'zoo@1.1.0': {\n peerDependencies: {\n qar: '*',\n },\n resolution: {\n integrity: 'sha512-333',\n },\n },\n },\n });\n });\n});\n\ndescribe('convertLockfileToGraph with a circular workspace dependency back to the component being processed', () => {\n // Reproduces the \"No matching version found for <workspace-comp>@0.0.0-<hash>\"\n // failure: comp1 (the component being processed) is removed from snapshots\n // and packages, but a circular workspace dep (comp2 depends back on comp1)\n // leaves an edge whose neighbour references comp1@<version> with no\n // corresponding packages entry. When the graph is later converted back to a\n // lockfile, convertGraphToLockfile materialises that dangling neighbour as\n // an empty packages entry and getPkgsToResolve treats it as a missing\n // package, asking the registry for a snap-version that was never published.\n it('should drop edges that reference the component being processed', () => {\n const lockfile: BitLockfileFile = {\n bit: { depsRequiringBuild: [] },\n importers: {\n '.': {},\n 'node_modules/.bit_roots/env': {\n dependencies: {\n comp1: { version: 'file:comps/comp1', specifier: '*' },\n },\n },\n 'comps/comp1': {\n dependencies: {\n comp2: { version: 'file:comps/comp2', specifier: '*' },\n },\n },\n 'comps/comp2': {\n dependencies: {\n comp1: { version: 'file:comps/comp1', specifier: '*' },\n },\n },\n },\n lockfileVersion: '9.0',\n snapshots: {\n 'comp1@file:comps/comp1': {\n dependencies: {\n comp2: 'file:comps/comp2',\n },\n },\n 'comp2@file:comps/comp2': {\n dependencies: {\n comp1: 'file:comps/comp1',\n },\n },\n },\n packages: {\n 'comp1@file:comps/comp1': {\n resolution: { directory: 'comps/comp1', type: 'directory' },\n },\n 'comp2@file:comps/comp2': {\n resolution: { directory: 'comps/comp2', type: 'directory' },\n },\n },\n };\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: 'comp1',\n componentRelativeDir: 'comps/comp1',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName: new Map([\n ['comp1', ComponentID.fromString('my-scope/comp1@1.0.0')],\n ['comp2', ComponentID.fromString('my-scope/comp2@1.0.0')],\n ]),\n });\n // The graph must never reference comp1 — it is the component being\n // snapped, so it does not belong in its own deps graph.\n const referencingComp1 = graph.edges.filter((edge) => edge.neighbours.some((n) => n.id === 'comp1@1.0.0'));\n expect(referencingComp1).to.eql([]);\n expect(graph.packages.has('comp1@1.0.0')).to.equal(false);\n });\n\n // Same bug, but the cycle closes through an intermediate workspace\n // component (comp1 → comp2 → comp3 → comp1). The back-edge in the\n // lockfile lives on comp3's snapshot, not comp2's. Scrubbing only\n // direct dependents of comp1 would miss it; the fix iterates every\n // remaining snapshot so chain-length doesn't matter.\n it('should drop edges that reference the component via a multi-hop chain', () => {\n const lockfile: BitLockfileFile = {\n bit: { depsRequiringBuild: [] },\n importers: {\n '.': {},\n 'node_modules/.bit_roots/env': {\n dependencies: {\n comp1: { version: 'file:comps/comp1', specifier: '*' },\n },\n },\n 'comps/comp1': {\n dependencies: {\n comp2: { version: 'file:comps/comp2', specifier: '*' },\n },\n },\n 'comps/comp2': {\n dependencies: {\n comp3: { version: 'file:comps/comp3', specifier: '*' },\n },\n },\n 'comps/comp3': {\n dependencies: {\n comp1: { version: 'file:comps/comp1', specifier: '*' },\n },\n },\n },\n lockfileVersion: '9.0',\n snapshots: {\n 'comp1@file:comps/comp1': { dependencies: { comp2: 'file:comps/comp2' } },\n 'comp2@file:comps/comp2': { dependencies: { comp3: 'file:comps/comp3' } },\n 'comp3@file:comps/comp3': { dependencies: { comp1: 'file:comps/comp1' } },\n },\n packages: {\n 'comp1@file:comps/comp1': { resolution: { directory: 'comps/comp1', type: 'directory' } },\n 'comp2@file:comps/comp2': { resolution: { directory: 'comps/comp2', type: 'directory' } },\n 'comp3@file:comps/comp3': { resolution: { directory: 'comps/comp3', type: 'directory' } },\n },\n };\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: 'comp1',\n componentRelativeDir: 'comps/comp1',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName: new Map([\n ['comp1', ComponentID.fromString('my-scope/comp1@1.0.0')],\n ['comp2', ComponentID.fromString('my-scope/comp2@1.0.0')],\n ['comp3', ComponentID.fromString('my-scope/comp3@1.0.0')],\n ]),\n });\n const referencingComp1 = graph.edges.filter((edge) => edge.neighbours.some((n) => n.id === 'comp1@1.0.0'));\n expect(referencingComp1).to.eql([]);\n expect(graph.packages.has('comp1@1.0.0')).to.equal(false);\n });\n});\n\ndescribe('convertLockfileToGraph with directory packages missing from componentIdByPkgName', () => {\n it('should not persist orphan @file: pkgIds in the produced graph', () => {\n // Reproduces how the broken graphs end up in the model: a directory-type\n // package in the lockfile whose name is absent from componentIdByPkgName.\n // buildPackages strips the directory resolution but leaves the \"@file:\"\n // pkgId untouched, which downstream cannot resolve. The graph creator\n // must drop these so the model never stores entries that future\n // installs can't generate a valid lockfile from.\n const lockfile: BitLockfileFile = {\n bit: { depsRequiringBuild: [] },\n importers: {\n '.': {},\n 'comps/comp1': {\n dependencies: {\n foo: { version: '1.0.0', specifier: '^1.0.0' },\n 'orphan-comp': { version: 'file:packages/orphan-comp', specifier: '*' },\n },\n },\n },\n lockfileVersion: '9.0',\n snapshots: {\n 'foo@1.0.0': {},\n 'orphan-comp@file:packages/orphan-comp': {\n dependencies: { foo: '1.0.0' },\n },\n },\n packages: {\n 'foo@1.0.0': { resolution: { integrity: 'sha512-aaa' } },\n 'orphan-comp@file:packages/orphan-comp': {\n resolution: { directory: 'packages/orphan-comp', type: 'directory' },\n },\n },\n };\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: undefined,\n componentRelativeDir: 'comps/comp1',\n componentRootDir: undefined,\n // Intentionally empty: simulates the bug where the workspace map\n // didn't include the directory dep.\n componentIdByPkgName: new Map(),\n });\n expect([...graph.packages.keys()]).to.eql(['foo@1.0.0']);\n const rootEdge = graph.findRootEdge();\n expect(rootEdge?.neighbours.map((n) => n.id)).to.eql(['foo@1.0.0']);\n expect(graph.edges.find(({ id }) => id.includes('@file:'))).to.equal(undefined);\n });\n});\n\ndescribe('convertLockfileToGraph benchmark', () => {\n function generateLargeLockfile(\n numPackages: number,\n numComponents: number\n ): {\n lockfile: BitLockfileFile;\n componentIdByPkgName: Map<string, InstanceType<typeof ComponentID>>;\n } {\n const snapshots: Record<string, any> = {};\n const packages: Record<string, any> = {};\n const importerDeps: Record<string, any> = {};\n const componentIdByPkgName = new Map<string, InstanceType<typeof ComponentID>>();\n\n // Generate regular packages\n for (let i = 0; i < numPackages; i++) {\n const pkgId = `pkg-${i}@1.0.${i}`;\n packages[pkgId] = {\n resolution: { integrity: `sha512-${i}` },\n };\n // Each package depends on the next 2 packages (creating a graph)\n const deps: Record<string, string> = {};\n if (i + 1 < numPackages) deps[`pkg-${i + 1}`] = `1.0.${i + 1}`;\n if (i + 2 < numPackages) deps[`pkg-${i + 2}`] = `1.0.${i + 2}`;\n snapshots[pkgId] = Object.keys(deps).length > 0 ? { dependencies: deps } : {};\n if (i < 50) {\n importerDeps[`pkg-${i}`] = { version: `1.0.${i}`, specifier: `^1.0.${i}` };\n }\n }\n\n // Generate component packages (with file: protocol)\n for (let i = 0; i < numComponents; i++) {\n const compName = `@my-scope/comp-${i}`;\n const compPath = `comps/comp-${i}`;\n const fileDepPath = `${compName}@file:${compPath}`;\n\n packages[fileDepPath] = {\n resolution: { directory: compPath, type: 'directory' },\n };\n snapshots[fileDepPath] = {\n dependencies: {\n [`pkg-${i % numPackages}`]: `1.0.${i % numPackages}`,\n },\n };\n componentIdByPkgName.set(compName, ComponentID.fromString(`my-scope/comp-${i}@0.0.${i}`));\n }\n\n const lockfile: BitLockfileFile = {\n bit: { depsRequiringBuild: [] },\n importers: {\n '.': {},\n 'node_modules/.bit_roots/env': {\n dependencies: Object.fromEntries(\n Array.from({ length: numComponents }, (_, i) => [\n `@my-scope/comp-${i}`,\n { version: `file:comps/comp-${i}`, specifier: '*' },\n ])\n ),\n },\n 'comps/comp-0': {\n dependencies: importerDeps,\n },\n },\n lockfileVersion: '9.0',\n snapshots,\n packages,\n };\n\n return { lockfile, componentIdByPkgName };\n }\n\n it('should handle 1000 packages and 50 components within 500ms', () => {\n const { lockfile, componentIdByPkgName } = generateLargeLockfile(1000, 50);\n\n const start = performance.now();\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: '@my-scope/comp-0',\n componentRelativeDir: 'comps/comp-0',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName,\n });\n const elapsed = performance.now() - start;\n\n expect(graph.edges.length).to.be.greaterThan(0);\n expect(graph.packages.size).to.be.greaterThan(0);\n expect(elapsed).to.be.lessThan(500);\n });\n\n it('should handle 5000 packages and 200 components within 2000ms', () => {\n const { lockfile, componentIdByPkgName } = generateLargeLockfile(5000, 200);\n\n const start = performance.now();\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: '@my-scope/comp-0',\n componentRelativeDir: 'comps/comp-0',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName,\n });\n const elapsed = performance.now() - start;\n\n expect(graph.edges.length).to.be.greaterThan(0);\n expect(graph.packages.size).to.be.greaterThan(0);\n expect(elapsed).to.be.lessThan(2000);\n });\n\n it('should handle 10000 packages and 500 components within 5000ms', () => {\n const { lockfile, componentIdByPkgName } = generateLargeLockfile(10000, 500);\n\n const start = performance.now();\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: '@my-scope/comp-0',\n componentRelativeDir: 'comps/comp-0',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName,\n });\n const elapsed = performance.now() - start;\n\n expect(graph.edges.length).to.be.greaterThan(0);\n expect(graph.packages.size).to.be.greaterThan(0);\n expect(elapsed).to.be.lessThan(5000);\n });\n\n it('should handle converting 20 lockfiles (1000 pkgs, 100 comps each) within 3000ms', () => {\n const lockfileCount = 20;\n const lockfiles = Array.from({ length: lockfileCount }, () => generateLargeLockfile(1000, 100));\n\n const start = performance.now();\n const graphs = lockfiles.map(({ lockfile, componentIdByPkgName }) =>\n convertLockfileToGraph(lockfile, {\n pkgName: '@my-scope/comp-0',\n componentRelativeDir: 'comps/comp-0',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName,\n })\n );\n const elapsed = performance.now() - start;\n\n for (const graph of graphs) {\n expect(graph.edges.length).to.be.greaterThan(0);\n expect(graph.packages.size).to.be.greaterThan(0);\n }\n expect(elapsed).to.be.lessThan(3000);\n });\n\n it('should handle converting 50 lockfiles (500 pkgs, 50 comps each) within 3000ms', () => {\n const lockfileCount = 50;\n const lockfiles = Array.from({ length: lockfileCount }, () => generateLargeLockfile(500, 50));\n\n const start = performance.now();\n const graphs = lockfiles.map(({ lockfile, componentIdByPkgName }) =>\n convertLockfileToGraph(lockfile, {\n pkgName: '@my-scope/comp-0',\n componentRelativeDir: 'comps/comp-0',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName,\n })\n );\n const elapsed = performance.now() - start;\n\n for (const graph of graphs) {\n expect(graph.edges.length).to.be.greaterThan(0);\n expect(graph.packages.size).to.be.greaterThan(0);\n }\n expect(elapsed).to.be.lessThan(3000);\n });\n});\n\ndescribe('convertGraphToLockfile on invalid graph', () => {\n // Reproduces the CI failure where a saved deps graph leaks \"@file:\" entries\n // because buildPackages couldn't map them to a workspace component. The\n // directory resolution was deleted and getPkgsToResolve can't recover an\n // integrity for \"file:\" versions (dp.parse puts them in nonSemverVersion,\n // not version), so validation throws \"doesn't have a 'resolution' field\".\n // At install time the orphan can't be salvaged: if its name matches a\n // workspace project pnpm wires it through importers/link entries (so the\n // packages entry would be wrong), and otherwise we have no published\n // version to recover. Dropping it is the only safe outcome.\n it('should drop orphan @file: packages when generating a lockfile', async () => {\n const packages: PackagesMap = new Map([\n ['@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app', {} as any],\n ['foo@1.0.0', { resolution: { integrity: 'sha512-aaa' } } as any],\n ]);\n const edges: DependencyEdge[] = [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [\n { id: 'foo@1.0.0', name: 'foo', specifier: '1.0.0', lifecycle: 'runtime' },\n {\n id: '@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app',\n name: '@teambit/dot-launch.apps.whats-new-app',\n specifier: '*',\n lifecycle: 'runtime',\n },\n ],\n },\n {\n id: 'foo@1.0.0',\n neighbours: [\n {\n id: '@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app',\n optional: false,\n },\n ],\n },\n {\n id: '@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app',\n neighbours: [],\n },\n ];\n const graph = new DependenciesGraph({ packages, edges });\n const lockfile = await convertGraphToLockfile(new DependenciesGraph(graph), {\n manifests: {\n [path.resolve('comps/comp1')]: {\n dependencies: { foo: '1.0.0' },\n },\n },\n rootDir: process.cwd(),\n resolve: () => ({ resolution: { integrity: '0000' } }) as any,\n });\n expect(Object.keys(lockfile.packages!)).to.eql(['foo@1.0.0']);\n expect(Object.keys(lockfile.snapshots!)).to.eql(['foo@1.0.0']);\n // The dangling snapshot neighbour pointing at the orphan must also be\n // filtered out so pnpm doesn't try to resolve a dep that no longer exists.\n expect(lockfile.snapshots!['foo@1.0.0']).to.eql({});\n });\n\n it('should throw an error if resolution is missing', async () => {\n const packages: PackagesMap = new Map([['foo@1.0.0', {} as any]]);\n const edges: DependencyEdge[] = [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [\n {\n id: 'foo@1.0.0',\n name: 'foo',\n specifier: '1.0.0',\n lifecycle: 'runtime',\n },\n ],\n },\n {\n id: 'foo@1.0.0',\n neighbours: [],\n },\n ];\n const graph = new DependenciesGraph({\n packages,\n edges,\n });\n let error: Error | undefined;\n try {\n await convertGraphToLockfile(new DependenciesGraph(graph), {\n manifests: {\n [path.resolve('comps/comp1')]: {\n dependencies: {\n foo: '1.0.0',\n },\n },\n },\n rootDir: process.cwd(),\n resolve: () => ({ resolution: {} }) as any,\n });\n } catch (_error) {\n error = _error as Error;\n }\n expect(error?.message).eq(\n `Failed to generate a valid lockfile. The \"packages['foo@1.0.0'] entry doesn't have a \"resolution\" field.`\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_path","data","_interopRequireDefault","require","_component","_objects","_lockfileDepsGraphConverter","_chai","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","describe","lockfile","bit","depsRequiringBuild","importers","dependencies","comp1","version","specifier","foo","qar","zoo","lockfileVersion","snapshots","bar","comp2","packages","resolution","directory","type","engines","node","npm","hasBin","os","cpu","integrity","peerDependencies","graph","convertLockfileToGraph","pkgName","componentRelativeDir","componentRootDir","componentIdByPkgName","Map","ComponentID","fromString","expected","schemaVersion","edges","id","neighbours","optional","attr","pkgId","name","lifecycle","requiresBuild","component","scope","it","expect","fromEntries","entries","to","eql","convertGraphToLockfile","DependenciesGraph","manifests","path","resolve","rootDir","process","cwd","devDependencies","optionalDependencies","referencingComp1","edge","some","n","has","equal","comp3","undefined","rootEdge","findRootEdge","map","find","includes","generateLargeLockfile","numPackages","numComponents","importerDeps","deps","compName","compPath","fileDepPath","set","Array","from","_","start","performance","now","elapsed","be","greaterThan","size","lessThan","lockfileCount","lockfiles","graphs","ROOT_EDGE_ID","resolverCalled","sort","err","Error","code","caught","message","error","_error","eq"],"sources":["lockfile-deps-graph-converter.spec.ts"],"sourcesContent":["import path from 'path';\nimport { ComponentID } from '@teambit/component';\nimport { DependenciesGraph, type PackagesMap, type DependencyEdge } from '@teambit/objects';\nimport { convertLockfileToGraph, convertGraphToLockfile } from './lockfile-deps-graph-converter';\nimport { type BitLockfileFile } from './lynx';\nimport { expect } from 'chai';\n\ndescribe('convertLockfileToGraph simple case', () => {\n const lockfile: BitLockfileFile = {\n bit: {\n depsRequiringBuild: ['bar@1.0.0'],\n },\n importers: {\n '.': {},\n 'node_modules/.bit_roots/env': {\n dependencies: {\n comp1: {\n version: 'file:comps/comp1',\n specifier: '*',\n },\n },\n },\n 'comps/comp1': {\n dependencies: {\n foo: {\n version: '1.0.0(patch_hash=0000)',\n specifier: '^1.0.0',\n },\n qar: {\n version: '1.1.0',\n specifier: '^1.0.0',\n },\n zoo: {\n version: '1.1.0(qar@1.1.0)',\n specifier: '^1.1.0',\n },\n },\n },\n },\n lockfileVersion: '9.0',\n snapshots: {\n 'foo@1.0.0(patch_hash=0000)': {\n dependencies: {\n bar: '1.0.0',\n },\n },\n 'bar@1.0.0': {},\n 'qar@1.1.0': {},\n 'zoo@1.1.0(qar@1.1.0)': {\n dependencies: {\n qar: '1.1.0',\n },\n },\n 'comp1@file:comps/comp1': {\n dependencies: {\n foo: '1.0.0(patch_hash=0000)',\n qar: '1.1.0',\n zoo: '1.1.0(qar@1.1.0)',\n comp2: 'file:comps/comp2',\n },\n },\n 'comp2@file:comps/comp2': {\n dependencies: {},\n },\n },\n packages: {\n 'comp1@file:comps/comp1': {\n resolution: {\n directory: 'comps/comp1',\n type: 'directory',\n },\n },\n 'comp2@file:comps/comp2': {\n resolution: {\n directory: 'comps/comp2',\n type: 'directory',\n },\n },\n 'foo@1.0.0': {\n engines: {\n node: '>=8',\n npm: '>=6',\n },\n hasBin: true,\n os: ['darwin'],\n cpu: ['arm64'],\n resolution: {\n integrity: 'sha512-000',\n },\n },\n 'bar@1.0.0': {\n resolution: {\n integrity: 'sha512-111',\n },\n },\n 'qar@1.1.0': {\n resolution: {\n integrity: 'sha512-222',\n },\n },\n 'zoo@1.1.0': {\n peerDependencies: {\n qar: '*',\n },\n resolution: {\n integrity: 'sha512-333',\n },\n },\n },\n };\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: 'comp1',\n componentRelativeDir: 'comps/comp1',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName: new Map([\n ['comp1', ComponentID.fromString('my-scope/comp1@1.0.0')],\n ['comp2', ComponentID.fromString('my-scope/comp2@1.0.0')],\n ]),\n });\n const expected = {\n schemaVersion: '2.0',\n edges: [\n {\n id: 'foo@1.0.0(patch_hash=0000)',\n neighbours: [{ id: 'bar@1.0.0', optional: false }],\n attr: {\n pkgId: 'foo@1.0.0',\n },\n },\n {\n id: 'zoo@1.1.0(qar@1.1.0)',\n neighbours: [{ id: 'qar@1.1.0', optional: false }],\n attr: {\n pkgId: 'zoo@1.1.0',\n },\n },\n {\n id: '.',\n neighbours: [\n {\n id: 'foo@1.0.0(patch_hash=0000)',\n name: 'foo',\n specifier: '^1.0.0',\n lifecycle: 'runtime',\n optional: false,\n },\n {\n id: 'qar@1.1.0',\n name: 'qar',\n specifier: '^1.0.0',\n lifecycle: 'runtime',\n optional: false,\n },\n {\n id: 'zoo@1.1.0(qar@1.1.0)',\n name: 'zoo',\n specifier: '^1.1.0',\n lifecycle: 'runtime',\n optional: false,\n },\n {\n id: 'comp2@1.0.0',\n lifecycle: 'runtime',\n name: 'comp2',\n optional: false,\n specifier: '*',\n },\n ],\n },\n ],\n packages: {\n 'foo@1.0.0': {\n engines: {\n node: '>=8',\n npm: '>=6',\n },\n hasBin: true,\n os: ['darwin'],\n cpu: ['arm64'],\n resolution: {\n integrity: 'sha512-000',\n },\n },\n 'bar@1.0.0': {\n requiresBuild: true,\n resolution: {\n integrity: 'sha512-111',\n },\n },\n 'qar@1.1.0': {\n resolution: {\n integrity: 'sha512-222',\n },\n },\n 'zoo@1.1.0': {\n peerDependencies: {\n qar: '*',\n },\n resolution: {\n integrity: 'sha512-333',\n },\n },\n 'comp2@1.0.0': {\n component: {\n name: 'comp2',\n scope: 'my-scope',\n },\n },\n },\n };\n it('should convert the lockfile object to the graph object', () => {\n expect({\n ...graph,\n packages: Object.fromEntries(graph.packages.entries()),\n }).to.eql(expected);\n });\n it('should convert the graph object to the lockfile object', async () => {\n expect(\n await convertGraphToLockfile(new DependenciesGraph(graph), {\n manifests: {\n [path.resolve('comps/comp1')]: {\n dependencies: {\n foo: '^1.0.0',\n bar: `link:${path.resolve('comps/bar')}`, // Links from the manifests are added to the lockfile\n qar: '1.1.0',\n zoo: '1.1.0',\n comp2: '1.0.0',\n },\n },\n },\n rootDir: process.cwd(),\n resolve: () => ({ resolution: { integrity: '0000' } }) as any,\n })\n ).to.eql({\n bit: {\n depsRequiringBuild: ['bar@1.0.0'],\n },\n importers: {\n 'comps/comp1': {\n dependencies: {\n comp2: {\n version: '1.0.0',\n specifier: '1.0.0',\n },\n foo: {\n version: '1.0.0(patch_hash=0000)',\n specifier: '^1.0.0',\n },\n bar: {\n version: 'link:../bar',\n specifier: `link:${path.resolve('comps/bar')}`,\n },\n qar: {\n version: '1.1.0',\n specifier: '1.1.0',\n },\n zoo: {\n version: '1.1.0(qar@1.1.0)',\n specifier: '1.1.0',\n },\n },\n devDependencies: {},\n optionalDependencies: {},\n },\n },\n lockfileVersion: '9.0',\n snapshots: {\n 'foo@1.0.0(patch_hash=0000)': {\n dependencies: {\n bar: '1.0.0',\n },\n },\n 'bar@1.0.0': {},\n 'qar@1.1.0': {},\n 'comp2@1.0.0': {},\n 'zoo@1.1.0(qar@1.1.0)': {\n dependencies: {\n qar: '1.1.0',\n },\n },\n },\n packages: {\n 'comp2@1.0.0': {\n resolution: {\n integrity: '0000',\n },\n },\n 'foo@1.0.0': {\n engines: {\n node: '>=8',\n npm: '>=6',\n },\n hasBin: true,\n os: ['darwin'],\n cpu: ['arm64'],\n resolution: {\n integrity: 'sha512-000',\n },\n },\n 'bar@1.0.0': {\n resolution: {\n integrity: 'sha512-111',\n },\n },\n 'qar@1.1.0': {\n resolution: {\n integrity: 'sha512-222',\n },\n },\n 'zoo@1.1.0': {\n peerDependencies: {\n qar: '*',\n },\n resolution: {\n integrity: 'sha512-333',\n },\n },\n },\n });\n });\n});\n\ndescribe('convertLockfileToGraph with a circular workspace dependency back to the component being processed', () => {\n // Reproduces the \"No matching version found for <workspace-comp>@0.0.0-<hash>\"\n // failure: comp1 (the component being processed) is removed from snapshots\n // and packages, but a circular workspace dep (comp2 depends back on comp1)\n // leaves an edge whose neighbour references comp1@<version> with no\n // corresponding packages entry. When the graph is later converted back to a\n // lockfile, convertGraphToLockfile materialises that dangling neighbour as\n // an empty packages entry and getPkgsToResolve treats it as a missing\n // package, asking the registry for a snap-version that was never published.\n it('should drop edges that reference the component being processed', () => {\n const lockfile: BitLockfileFile = {\n bit: { depsRequiringBuild: [] },\n importers: {\n '.': {},\n 'node_modules/.bit_roots/env': {\n dependencies: {\n comp1: { version: 'file:comps/comp1', specifier: '*' },\n },\n },\n 'comps/comp1': {\n dependencies: {\n comp2: { version: 'file:comps/comp2', specifier: '*' },\n },\n },\n 'comps/comp2': {\n dependencies: {\n comp1: { version: 'file:comps/comp1', specifier: '*' },\n },\n },\n },\n lockfileVersion: '9.0',\n snapshots: {\n 'comp1@file:comps/comp1': {\n dependencies: {\n comp2: 'file:comps/comp2',\n },\n },\n 'comp2@file:comps/comp2': {\n dependencies: {\n comp1: 'file:comps/comp1',\n },\n },\n },\n packages: {\n 'comp1@file:comps/comp1': {\n resolution: { directory: 'comps/comp1', type: 'directory' },\n },\n 'comp2@file:comps/comp2': {\n resolution: { directory: 'comps/comp2', type: 'directory' },\n },\n },\n };\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: 'comp1',\n componentRelativeDir: 'comps/comp1',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName: new Map([\n ['comp1', ComponentID.fromString('my-scope/comp1@1.0.0')],\n ['comp2', ComponentID.fromString('my-scope/comp2@1.0.0')],\n ]),\n });\n // The graph must never reference comp1 — it is the component being\n // snapped, so it does not belong in its own deps graph.\n const referencingComp1 = graph.edges.filter((edge) => edge.neighbours.some((n) => n.id === 'comp1@1.0.0'));\n expect(referencingComp1).to.eql([]);\n expect(graph.packages.has('comp1@1.0.0')).to.equal(false);\n });\n\n // Same bug, but the cycle closes through an intermediate workspace\n // component (comp1 → comp2 → comp3 → comp1). The back-edge in the\n // lockfile lives on comp3's snapshot, not comp2's. Scrubbing only\n // direct dependents of comp1 would miss it; the fix iterates every\n // remaining snapshot so chain-length doesn't matter.\n it('should drop edges that reference the component via a multi-hop chain', () => {\n const lockfile: BitLockfileFile = {\n bit: { depsRequiringBuild: [] },\n importers: {\n '.': {},\n 'node_modules/.bit_roots/env': {\n dependencies: {\n comp1: { version: 'file:comps/comp1', specifier: '*' },\n },\n },\n 'comps/comp1': {\n dependencies: {\n comp2: { version: 'file:comps/comp2', specifier: '*' },\n },\n },\n 'comps/comp2': {\n dependencies: {\n comp3: { version: 'file:comps/comp3', specifier: '*' },\n },\n },\n 'comps/comp3': {\n dependencies: {\n comp1: { version: 'file:comps/comp1', specifier: '*' },\n },\n },\n },\n lockfileVersion: '9.0',\n snapshots: {\n 'comp1@file:comps/comp1': { dependencies: { comp2: 'file:comps/comp2' } },\n 'comp2@file:comps/comp2': { dependencies: { comp3: 'file:comps/comp3' } },\n 'comp3@file:comps/comp3': { dependencies: { comp1: 'file:comps/comp1' } },\n },\n packages: {\n 'comp1@file:comps/comp1': { resolution: { directory: 'comps/comp1', type: 'directory' } },\n 'comp2@file:comps/comp2': { resolution: { directory: 'comps/comp2', type: 'directory' } },\n 'comp3@file:comps/comp3': { resolution: { directory: 'comps/comp3', type: 'directory' } },\n },\n };\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: 'comp1',\n componentRelativeDir: 'comps/comp1',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName: new Map([\n ['comp1', ComponentID.fromString('my-scope/comp1@1.0.0')],\n ['comp2', ComponentID.fromString('my-scope/comp2@1.0.0')],\n ['comp3', ComponentID.fromString('my-scope/comp3@1.0.0')],\n ]),\n });\n const referencingComp1 = graph.edges.filter((edge) => edge.neighbours.some((n) => n.id === 'comp1@1.0.0'));\n expect(referencingComp1).to.eql([]);\n expect(graph.packages.has('comp1@1.0.0')).to.equal(false);\n });\n});\n\ndescribe('convertLockfileToGraph with directory packages missing from componentIdByPkgName', () => {\n it('should not persist orphan @file: pkgIds in the produced graph', () => {\n // Reproduces how the broken graphs end up in the model: a directory-type\n // package in the lockfile whose name is absent from componentIdByPkgName.\n // buildPackages strips the directory resolution but leaves the \"@file:\"\n // pkgId untouched, which downstream cannot resolve. The graph creator\n // must drop these so the model never stores entries that future\n // installs can't generate a valid lockfile from.\n const lockfile: BitLockfileFile = {\n bit: { depsRequiringBuild: [] },\n importers: {\n '.': {},\n 'comps/comp1': {\n dependencies: {\n foo: { version: '1.0.0', specifier: '^1.0.0' },\n 'orphan-comp': { version: 'file:packages/orphan-comp', specifier: '*' },\n },\n },\n },\n lockfileVersion: '9.0',\n snapshots: {\n 'foo@1.0.0': {},\n 'orphan-comp@file:packages/orphan-comp': {\n dependencies: { foo: '1.0.0' },\n },\n },\n packages: {\n 'foo@1.0.0': { resolution: { integrity: 'sha512-aaa' } },\n 'orphan-comp@file:packages/orphan-comp': {\n resolution: { directory: 'packages/orphan-comp', type: 'directory' },\n },\n },\n };\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: undefined,\n componentRelativeDir: 'comps/comp1',\n componentRootDir: undefined,\n // Intentionally empty: simulates the bug where the workspace map\n // didn't include the directory dep.\n componentIdByPkgName: new Map(),\n });\n expect([...graph.packages.keys()]).to.eql(['foo@1.0.0']);\n const rootEdge = graph.findRootEdge();\n expect(rootEdge?.neighbours.map((n) => n.id)).to.eql(['foo@1.0.0']);\n expect(graph.edges.find(({ id }) => id.includes('@file:'))).to.equal(undefined);\n });\n});\n\ndescribe('convertLockfileToGraph benchmark', () => {\n function generateLargeLockfile(\n numPackages: number,\n numComponents: number\n ): {\n lockfile: BitLockfileFile;\n componentIdByPkgName: Map<string, InstanceType<typeof ComponentID>>;\n } {\n const snapshots: Record<string, any> = {};\n const packages: Record<string, any> = {};\n const importerDeps: Record<string, any> = {};\n const componentIdByPkgName = new Map<string, InstanceType<typeof ComponentID>>();\n\n // Generate regular packages\n for (let i = 0; i < numPackages; i++) {\n const pkgId = `pkg-${i}@1.0.${i}`;\n packages[pkgId] = {\n resolution: { integrity: `sha512-${i}` },\n };\n // Each package depends on the next 2 packages (creating a graph)\n const deps: Record<string, string> = {};\n if (i + 1 < numPackages) deps[`pkg-${i + 1}`] = `1.0.${i + 1}`;\n if (i + 2 < numPackages) deps[`pkg-${i + 2}`] = `1.0.${i + 2}`;\n snapshots[pkgId] = Object.keys(deps).length > 0 ? { dependencies: deps } : {};\n if (i < 50) {\n importerDeps[`pkg-${i}`] = { version: `1.0.${i}`, specifier: `^1.0.${i}` };\n }\n }\n\n // Generate component packages (with file: protocol)\n for (let i = 0; i < numComponents; i++) {\n const compName = `@my-scope/comp-${i}`;\n const compPath = `comps/comp-${i}`;\n const fileDepPath = `${compName}@file:${compPath}`;\n\n packages[fileDepPath] = {\n resolution: { directory: compPath, type: 'directory' },\n };\n snapshots[fileDepPath] = {\n dependencies: {\n [`pkg-${i % numPackages}`]: `1.0.${i % numPackages}`,\n },\n };\n componentIdByPkgName.set(compName, ComponentID.fromString(`my-scope/comp-${i}@0.0.${i}`));\n }\n\n const lockfile: BitLockfileFile = {\n bit: { depsRequiringBuild: [] },\n importers: {\n '.': {},\n 'node_modules/.bit_roots/env': {\n dependencies: Object.fromEntries(\n Array.from({ length: numComponents }, (_, i) => [\n `@my-scope/comp-${i}`,\n { version: `file:comps/comp-${i}`, specifier: '*' },\n ])\n ),\n },\n 'comps/comp-0': {\n dependencies: importerDeps,\n },\n },\n lockfileVersion: '9.0',\n snapshots,\n packages,\n };\n\n return { lockfile, componentIdByPkgName };\n }\n\n it('should handle 1000 packages and 50 components within 500ms', () => {\n const { lockfile, componentIdByPkgName } = generateLargeLockfile(1000, 50);\n\n const start = performance.now();\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: '@my-scope/comp-0',\n componentRelativeDir: 'comps/comp-0',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName,\n });\n const elapsed = performance.now() - start;\n\n expect(graph.edges.length).to.be.greaterThan(0);\n expect(graph.packages.size).to.be.greaterThan(0);\n expect(elapsed).to.be.lessThan(500);\n });\n\n it('should handle 5000 packages and 200 components within 2000ms', () => {\n const { lockfile, componentIdByPkgName } = generateLargeLockfile(5000, 200);\n\n const start = performance.now();\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: '@my-scope/comp-0',\n componentRelativeDir: 'comps/comp-0',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName,\n });\n const elapsed = performance.now() - start;\n\n expect(graph.edges.length).to.be.greaterThan(0);\n expect(graph.packages.size).to.be.greaterThan(0);\n expect(elapsed).to.be.lessThan(2000);\n });\n\n it('should handle 10000 packages and 500 components within 5000ms', () => {\n const { lockfile, componentIdByPkgName } = generateLargeLockfile(10000, 500);\n\n const start = performance.now();\n const graph = convertLockfileToGraph(lockfile, {\n pkgName: '@my-scope/comp-0',\n componentRelativeDir: 'comps/comp-0',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName,\n });\n const elapsed = performance.now() - start;\n\n expect(graph.edges.length).to.be.greaterThan(0);\n expect(graph.packages.size).to.be.greaterThan(0);\n expect(elapsed).to.be.lessThan(5000);\n });\n\n it('should handle converting 20 lockfiles (1000 pkgs, 100 comps each) within 3000ms', () => {\n const lockfileCount = 20;\n const lockfiles = Array.from({ length: lockfileCount }, () => generateLargeLockfile(1000, 100));\n\n const start = performance.now();\n const graphs = lockfiles.map(({ lockfile, componentIdByPkgName }) =>\n convertLockfileToGraph(lockfile, {\n pkgName: '@my-scope/comp-0',\n componentRelativeDir: 'comps/comp-0',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName,\n })\n );\n const elapsed = performance.now() - start;\n\n for (const graph of graphs) {\n expect(graph.edges.length).to.be.greaterThan(0);\n expect(graph.packages.size).to.be.greaterThan(0);\n }\n expect(elapsed).to.be.lessThan(3000);\n });\n\n it('should handle converting 50 lockfiles (500 pkgs, 50 comps each) within 3000ms', () => {\n const lockfileCount = 50;\n const lockfiles = Array.from({ length: lockfileCount }, () => generateLargeLockfile(500, 50));\n\n const start = performance.now();\n const graphs = lockfiles.map(({ lockfile, componentIdByPkgName }) =>\n convertLockfileToGraph(lockfile, {\n pkgName: '@my-scope/comp-0',\n componentRelativeDir: 'comps/comp-0',\n componentRootDir: 'node_modules/.bit_roots/env',\n componentIdByPkgName,\n })\n );\n const elapsed = performance.now() - start;\n\n for (const graph of graphs) {\n expect(graph.edges.length).to.be.greaterThan(0);\n expect(graph.packages.size).to.be.greaterThan(0);\n }\n expect(elapsed).to.be.lessThan(3000);\n });\n});\n\ndescribe('convertGraphToLockfile on invalid graph', () => {\n // Reproduces the CI failure where a saved deps graph leaks \"@file:\" entries\n // because buildPackages couldn't map them to a workspace component. The\n // directory resolution was deleted and getPkgsToResolve can't recover an\n // integrity for \"file:\" versions (dp.parse puts them in nonSemverVersion,\n // not version), so validation throws \"doesn't have a 'resolution' field\".\n // At install time the orphan can't be salvaged: if its name matches a\n // workspace project pnpm wires it through importers/link entries (so the\n // packages entry would be wrong), and otherwise we have no published\n // version to recover. Dropping it is the only safe outcome.\n it('should drop orphan @file: packages when generating a lockfile', async () => {\n const packages: PackagesMap = new Map([\n ['@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app', {} as any],\n ['foo@1.0.0', { resolution: { integrity: 'sha512-aaa' } } as any],\n ]);\n const edges: DependencyEdge[] = [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [\n { id: 'foo@1.0.0', name: 'foo', specifier: '1.0.0', lifecycle: 'runtime' },\n {\n id: '@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app',\n name: '@teambit/dot-launch.apps.whats-new-app',\n specifier: '*',\n lifecycle: 'runtime',\n },\n ],\n },\n {\n id: 'foo@1.0.0',\n neighbours: [\n {\n id: '@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app',\n optional: false,\n },\n ],\n },\n {\n id: '@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app',\n neighbours: [],\n },\n ];\n const graph = new DependenciesGraph({ packages, edges });\n const lockfile = await convertGraphToLockfile(new DependenciesGraph(graph), {\n manifests: {\n [path.resolve('comps/comp1')]: {\n dependencies: { foo: '1.0.0' },\n },\n },\n rootDir: process.cwd(),\n resolve: () => ({ resolution: { integrity: '0000' } }) as any,\n });\n expect(Object.keys(lockfile.packages!)).to.eql(['foo@1.0.0']);\n expect(Object.keys(lockfile.snapshots!)).to.eql(['foo@1.0.0']);\n // The dangling snapshot neighbour pointing at the orphan must also be\n // filtered out so pnpm doesn't try to resolve a dep that no longer exists.\n expect(lockfile.snapshots!['foo@1.0.0']).to.eql({});\n });\n\n // Saved by bits older than #10361: when a workspace component with a\n // circular dep was snapped, the component's own snapshot/package was\n // deleted but back-references on other snapshots survived. The neighbour\n // now points at a snap-version pkgId that exists nowhere else in the\n // graph. Without the scrub, convertGraphToLockfile would materialise an\n // empty packages entry and getPkgsToResolve would ask the registry for\n // that unpublished snap version (surfacing as ERR_PNPM_NO_MATCHING_VERSION\n // on ripple at install time).\n it('should drop orphan neighbours that have no edge and no packages entry', async () => {\n const packages: PackagesMap = new Map([['foo@1.0.0', { resolution: { integrity: 'sha512-aaa' } } as any]]);\n const edges: DependencyEdge[] = [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [{ id: 'foo@1.0.0', name: 'foo', specifier: '1.0.0', lifecycle: 'runtime' }],\n },\n {\n id: 'foo@1.0.0',\n neighbours: [\n {\n id: '@bitdev/react.app-types.vite-react@0.0.0-df1917dc0fcd7c894001404a162a48aca0219d43',\n optional: false,\n },\n ],\n },\n ];\n const graph = new DependenciesGraph({ packages, edges });\n let resolverCalled = false;\n const lockfile = await convertGraphToLockfile(new DependenciesGraph(graph), {\n manifests: {\n [path.resolve('comps/comp1')]: {\n dependencies: { foo: '1.0.0' },\n },\n },\n rootDir: process.cwd(),\n resolve: () => {\n resolverCalled = true;\n return { resolution: { integrity: '0000' } } as any;\n },\n });\n expect(resolverCalled).to.equal(false);\n expect(Object.keys(lockfile.packages!)).to.eql(['foo@1.0.0']);\n expect(lockfile.snapshots!['foo@1.0.0']).to.eql({});\n });\n\n it('should leave legitimate neighbours intact when scrubbing orphans', async () => {\n const packages: PackagesMap = new Map([\n ['foo@1.0.0', { resolution: { integrity: 'sha512-aaa' } } as any],\n ['bar@2.0.0', { resolution: { integrity: 'sha512-bbb' } } as any],\n ]);\n const edges: DependencyEdge[] = [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [{ id: 'foo@1.0.0', name: 'foo', specifier: '1.0.0', lifecycle: 'runtime' }],\n },\n {\n id: 'foo@1.0.0',\n neighbours: [\n { id: 'bar@2.0.0', optional: false },\n { id: 'orphan-pkg@0.0.0-deadbeef', optional: false },\n ],\n },\n ];\n const lockfile = await convertGraphToLockfile(new DependenciesGraph(new DependenciesGraph({ packages, edges })), {\n manifests: {\n [path.resolve('comps/comp1')]: { dependencies: { foo: '1.0.0' } },\n },\n rootDir: process.cwd(),\n resolve: () => ({ resolution: { integrity: '0000' } }) as any,\n });\n expect(lockfile.snapshots!['foo@1.0.0']).to.eql({ dependencies: { bar: '2.0.0' } });\n expect(Object.keys(lockfile.packages!).sort()).to.eql(['bar@2.0.0', 'foo@1.0.0']);\n });\n\n // Saved by bits older than #10361: even when the workspace-component's snap\n // entry survives in the graph (with no resolution, since the directory type\n // was stripped at snap time), the registry lookup at install time fails\n // because that snap-version was never published. Scrub the package, its\n // snapshots and every reference to it so pnpm can re-resolve the dep from\n // the installing manifest's specifier instead of aborting the install.\n it('should drop workspace-component pkgs that fail to resolve from the registry', async () => {\n const packages: PackagesMap = new Map([\n [\n '@bitdev/react.app-types.vite-react@0.0.0-df1917dc',\n { component: { scope: 'bitdev.react', name: 'app-types/vite-react' } } as any,\n ],\n ['foo@1.0.0', { resolution: { integrity: 'sha512-aaa' } } as any],\n ]);\n const edges: DependencyEdge[] = [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [{ id: 'foo@1.0.0', name: 'foo', specifier: '1.0.0', lifecycle: 'runtime' }],\n },\n {\n id: 'foo@1.0.0',\n neighbours: [{ id: '@bitdev/react.app-types.vite-react@0.0.0-df1917dc', optional: false }],\n },\n {\n id: '@bitdev/react.app-types.vite-react@0.0.0-df1917dc',\n neighbours: [],\n },\n ];\n const lockfile = await convertGraphToLockfile(new DependenciesGraph(new DependenciesGraph({ packages, edges })), {\n manifests: {\n [path.resolve('comps/comp1')]: { dependencies: { foo: '1.0.0' } },\n },\n rootDir: process.cwd(),\n resolve: () => {\n const err = new Error('No matching version found');\n (err as Error & { code: string }).code = 'ERR_PNPM_NO_MATCHING_VERSION';\n throw err;\n },\n });\n expect(Object.keys(lockfile.packages!).sort()).to.eql(['foo@1.0.0']);\n expect(Object.keys(lockfile.snapshots!).sort()).to.eql(['foo@1.0.0']);\n expect(lockfile.snapshots!['foo@1.0.0']).to.eql({});\n });\n\n // When the resolve failure is for a regular registry package (no component\n // attribute), we still want to surface the error rather than silently drop\n // it — that path means the graph itself is genuinely broken, not just\n // referencing an unpublished workspace snap.\n it('should re-throw resolver errors for non-component pkgs', async () => {\n const packages: PackagesMap = new Map([['foo@1.0.0', {} as any]]);\n const edges: DependencyEdge[] = [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [{ id: 'foo@1.0.0', name: 'foo', specifier: '1.0.0', lifecycle: 'runtime' }],\n },\n { id: 'foo@1.0.0', neighbours: [] },\n ];\n let caught: Error | undefined;\n try {\n await convertGraphToLockfile(new DependenciesGraph(new DependenciesGraph({ packages, edges })), {\n manifests: {\n [path.resolve('comps/comp1')]: { dependencies: { foo: '1.0.0' } },\n },\n rootDir: process.cwd(),\n resolve: () => {\n throw new Error('boom');\n },\n });\n } catch (err) {\n caught = err as Error;\n }\n expect(caught?.message).to.equal('boom');\n });\n\n // Narrowing guardrail: even for a component-flagged pkg, only\n // ERR_PNPM_NO_MATCHING_VERSION should be swallowed. A network/auth/5xx\n // failure must propagate so a real outage isn't silently masked as a\n // graph-recovery success.\n it('should re-throw non-NoMatchingVersion errors even for component pkgs', async () => {\n const packages: PackagesMap = new Map([\n [\n '@bitdev/react.app-types.vite-react@0.0.0-df1917dc',\n { component: { scope: 'bitdev.react', name: 'app-types/vite-react' } } as any,\n ],\n ['foo@1.0.0', { resolution: { integrity: 'sha512-aaa' } } as any],\n ]);\n const edges: DependencyEdge[] = [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [{ id: 'foo@1.0.0', name: 'foo', specifier: '1.0.0', lifecycle: 'runtime' }],\n },\n { id: 'foo@1.0.0', neighbours: [{ id: '@bitdev/react.app-types.vite-react@0.0.0-df1917dc' }] },\n { id: '@bitdev/react.app-types.vite-react@0.0.0-df1917dc', neighbours: [] },\n ];\n let caught: Error | undefined;\n try {\n await convertGraphToLockfile(new DependenciesGraph(new DependenciesGraph({ packages, edges })), {\n manifests: {\n [path.resolve('comps/comp1')]: { dependencies: { foo: '1.0.0' } },\n },\n rootDir: process.cwd(),\n resolve: () => {\n const err = new Error('Connect ETIMEDOUT');\n (err as Error & { code: string }).code = 'ERR_PNPM_META_FETCH_FAIL';\n throw err;\n },\n });\n } catch (err) {\n caught = err as Error;\n }\n expect(caught?.message).to.equal('Connect ETIMEDOUT');\n expect((caught as Error & { code: string }).code).to.equal('ERR_PNPM_META_FETCH_FAIL');\n });\n\n it('should throw an error if resolution is missing', async () => {\n const packages: PackagesMap = new Map([['foo@1.0.0', {} as any]]);\n const edges: DependencyEdge[] = [\n {\n id: DependenciesGraph.ROOT_EDGE_ID,\n neighbours: [\n {\n id: 'foo@1.0.0',\n name: 'foo',\n specifier: '1.0.0',\n lifecycle: 'runtime',\n },\n ],\n },\n {\n id: 'foo@1.0.0',\n neighbours: [],\n },\n ];\n const graph = new DependenciesGraph({\n packages,\n edges,\n });\n let error: Error | undefined;\n try {\n await convertGraphToLockfile(new DependenciesGraph(graph), {\n manifests: {\n [path.resolve('comps/comp1')]: {\n dependencies: {\n foo: '1.0.0',\n },\n },\n },\n rootDir: process.cwd(),\n resolve: () => ({ resolution: {} }) as any,\n });\n } catch (_error) {\n error = _error as Error;\n }\n expect(error?.message).eq(\n `Failed to generate a valid lockfile. The \"packages['foo@1.0.0'] entry doesn't have a \"resolution\" field.`\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_pnpm@1.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_pnpm@1.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_pnpm@1.0.1021/dist/pnpm.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_pnpm@1.0.1021/dist/pnpm.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/pnpm",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1021",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/dependencies/pnpm",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.dependencies",
|
|
8
8
|
"name": "pnpm",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.1021"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@pnpm/config": "1004.11.0",
|
|
@@ -37,9 +37,11 @@
|
|
|
37
37
|
"@pnpm/lockfile.filtering": "^1001.0.31",
|
|
38
38
|
"@pnpm/modules-yaml": "1002.0.1",
|
|
39
39
|
"@pnpm/reviewing.dependencies-hierarchy": "^1001.3.4",
|
|
40
|
+
"@teambit/dependency-resolver": "1.0.991",
|
|
40
41
|
"@teambit/toolbox.string.strip-trailing-char": "0.0.508",
|
|
41
42
|
"@teambit/bit-error": "0.0.404",
|
|
42
43
|
"@teambit/component-package-version": "0.0.449",
|
|
44
|
+
"@teambit/objects": "0.0.498",
|
|
43
45
|
"@teambit/logger": "0.0.1418",
|
|
44
46
|
"@teambit/dependencies.pnpm.dep-path": "1.0.1",
|
|
45
47
|
"@teambit/legacy.constants": "0.0.26",
|
|
@@ -47,14 +49,12 @@
|
|
|
47
49
|
"@teambit/pkg.entities.registry": "0.0.4",
|
|
48
50
|
"@teambit/harmony": "0.4.7",
|
|
49
51
|
"@teambit/cli": "0.0.1325",
|
|
52
|
+
"@teambit/cloud": "0.0.1284",
|
|
50
53
|
"@teambit/harmony.modules.feature-toggle": "0.0.36",
|
|
51
54
|
"@teambit/legacy.logger": "0.0.38",
|
|
52
|
-
"@teambit/
|
|
53
|
-
"@teambit/
|
|
54
|
-
"@teambit/
|
|
55
|
-
"@teambit/cloud": "0.0.1283",
|
|
56
|
-
"@teambit/component": "1.0.990",
|
|
57
|
-
"@teambit/ui": "1.0.990"
|
|
55
|
+
"@teambit/component": "1.0.991",
|
|
56
|
+
"@teambit/ui": "1.0.991",
|
|
57
|
+
"@teambit/ui-foundation.ui.use-box.menu": "1.0.16"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@types/lodash": "4.14.165",
|