@teambit/pnpm 1.0.993 → 1.0.995
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 +50 -1
- package/dist/lockfile-deps-graph-converter.js.map +1 -1
- package/dist/lockfile-deps-graph-converter.spec.js +129 -0
- package/dist/lockfile-deps-graph-converter.spec.js.map +1 -1
- package/dist/{preview-1777325174526.js → preview-1777475960386.js} +2 -2
- package/package.json +8 -8
|
@@ -146,7 +146,7 @@ function _convertLockfileToGraph(lockfile, {
|
|
|
146
146
|
componentIdByPkgName,
|
|
147
147
|
directDependencies
|
|
148
148
|
}) {
|
|
149
|
-
|
|
149
|
+
const graph = new (_objects().DependenciesGraph)({
|
|
150
150
|
edges: buildEdges(lockfile, {
|
|
151
151
|
directDependencies,
|
|
152
152
|
componentIdByPkgName
|
|
@@ -155,6 +155,8 @@ function _convertLockfileToGraph(lockfile, {
|
|
|
155
155
|
componentIdByPkgName
|
|
156
156
|
})
|
|
157
157
|
});
|
|
158
|
+
dropOrphanFilePkgs(graph);
|
|
159
|
+
return graph;
|
|
158
160
|
}
|
|
159
161
|
function buildEdges(lockfile, {
|
|
160
162
|
directDependencies,
|
|
@@ -266,6 +268,7 @@ async function convertGraphToLockfile(_graph, {
|
|
|
266
268
|
}) {
|
|
267
269
|
const graphString = _graph.serialize();
|
|
268
270
|
const graph = _objects().DependenciesGraph.deserialize(graphString);
|
|
271
|
+
dropOrphanFilePkgs(graph);
|
|
269
272
|
const packages = {};
|
|
270
273
|
const snapshots = {};
|
|
271
274
|
const allEdgeIds = new Set(graph.edges.map(({
|
|
@@ -414,6 +417,52 @@ function getPkgsToResolve(lockfile, manifests) {
|
|
|
414
417
|
function depPathToRef(depPath) {
|
|
415
418
|
return `${depPath.version}${depPath.patchHash ?? ''}${depPath.peerDepGraphHash ?? ''}`;
|
|
416
419
|
}
|
|
420
|
+
function isFilePkgId(pkgId) {
|
|
421
|
+
return dp().parse(pkgId).nonSemverVersion?.startsWith('file:') ?? false;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* Strip orphan "@file:" entries from the graph (mutates in place).
|
|
426
|
+
*
|
|
427
|
+
* The "@file:" pkgIds in pnpm's lockfile are workspace components linked as
|
|
428
|
+
* directory deps. buildPackages is supposed to rewrite them to
|
|
429
|
+
* "name@<semverVersion>" via componentIdByPkgName, but if a name is missing
|
|
430
|
+
* from that map (older bit, partial isolation, a component renamed/removed
|
|
431
|
+
* between install and tag) the orphan leaks through with its resolution
|
|
432
|
+
* stripped (directory type). We can't recover an integrity for it later —
|
|
433
|
+
* getPkgsToResolve won't try because dp.parse shoves "file:..." into
|
|
434
|
+
* nonSemverVersion, leaving parsed.version undefined, and at install time
|
|
435
|
+
* the component is either a workspace project pnpm wires through importers
|
|
436
|
+
* (so it doesn't belong in the packages map) or no longer in the workspace
|
|
437
|
+
* at all. Either way the orphan entry is unusable, so drop it both at graph
|
|
438
|
+
* creation (don't persist broken graphs) and at lockfile generation
|
|
439
|
+
* (recover graphs already saved in the model).
|
|
440
|
+
*/
|
|
441
|
+
function dropOrphanFilePkgs(graph) {
|
|
442
|
+
const orphanPkgIds = new Set();
|
|
443
|
+
for (const pkgId of graph.packages.keys()) {
|
|
444
|
+
if (isFilePkgId(pkgId)) {
|
|
445
|
+
orphanPkgIds.add(pkgId);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
for (const edge of graph.edges) {
|
|
449
|
+
const pkgId = edge.attr?.pkgId ?? edge.id;
|
|
450
|
+
if (isFilePkgId(pkgId) || isFilePkgId(edge.id)) {
|
|
451
|
+
orphanPkgIds.add(pkgId);
|
|
452
|
+
orphanPkgIds.add(edge.id);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
if (orphanPkgIds.size === 0) return;
|
|
456
|
+
for (const id of orphanPkgIds) {
|
|
457
|
+
graph.packages.delete(id);
|
|
458
|
+
}
|
|
459
|
+
graph.edges = graph.edges.filter(edge => !orphanPkgIds.has(edge.id) && !orphanPkgIds.has(edge.attr?.pkgId ?? edge.id)).map(edge => {
|
|
460
|
+
if (!edge.neighbours.some(n => orphanPkgIds.has(n.id))) return edge;
|
|
461
|
+
return _objectSpread(_objectSpread({}, edge), {}, {
|
|
462
|
+
neighbours: edge.neighbours.filter(n => !orphanPkgIds.has(n.id))
|
|
463
|
+
});
|
|
464
|
+
});
|
|
465
|
+
}
|
|
417
466
|
function convertGraphPackageToLockfilePackage(pkgAttr) {
|
|
418
467
|
return (0, _lodash().pick)(pkgAttr, ['bundledDependencies', 'cpu', 'deprecated', 'engines', 'hasBin', 'libc', 'name', 'os', 'peerDependencies', 'peerDependenciesMeta', 'resolution', 'version']);
|
|
419
468
|
}
|
|
@@ -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","DependenciesGraph","edges","buildEdges","buildPackages","replaceFileVersion","createFileVersionReplacer","depPath","snapshot","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","graph","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","deps","pkgsInTheWorkspaces","values","patchHash","peerDepGraphHash","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 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 return new DependenciesGraph({\n edges: buildEdges(lockfile, { directDependencies, componentIdByPkgName }),\n packages: buildPackages(lockfile, { componentIdByPkgName }),\n });\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 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 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","graph","DependenciesGraph","edges","buildEdges","buildPackages","dropOrphanFilePkgs","replaceFileVersion","createFileVersionReplacer","depPath","snapshot","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","deps","pkgsInTheWorkspaces","values","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 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":[]}
|
|
@@ -351,6 +351,72 @@ describe('convertLockfileToGraph simple case', () => {
|
|
|
351
351
|
});
|
|
352
352
|
});
|
|
353
353
|
});
|
|
354
|
+
describe('convertLockfileToGraph with directory packages missing from componentIdByPkgName', () => {
|
|
355
|
+
it('should not persist orphan @file: pkgIds in the produced graph', () => {
|
|
356
|
+
// Reproduces how the broken graphs end up in the model: a directory-type
|
|
357
|
+
// package in the lockfile whose name is absent from componentIdByPkgName.
|
|
358
|
+
// buildPackages strips the directory resolution but leaves the "@file:"
|
|
359
|
+
// pkgId untouched, which downstream cannot resolve. The graph creator
|
|
360
|
+
// must drop these so the model never stores entries that future
|
|
361
|
+
// installs can't generate a valid lockfile from.
|
|
362
|
+
const lockfile = {
|
|
363
|
+
bit: {
|
|
364
|
+
depsRequiringBuild: []
|
|
365
|
+
},
|
|
366
|
+
importers: {
|
|
367
|
+
'.': {},
|
|
368
|
+
'comps/comp1': {
|
|
369
|
+
dependencies: {
|
|
370
|
+
foo: {
|
|
371
|
+
version: '1.0.0',
|
|
372
|
+
specifier: '^1.0.0'
|
|
373
|
+
},
|
|
374
|
+
'orphan-comp': {
|
|
375
|
+
version: 'file:packages/orphan-comp',
|
|
376
|
+
specifier: '*'
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
lockfileVersion: '9.0',
|
|
382
|
+
snapshots: {
|
|
383
|
+
'foo@1.0.0': {},
|
|
384
|
+
'orphan-comp@file:packages/orphan-comp': {
|
|
385
|
+
dependencies: {
|
|
386
|
+
foo: '1.0.0'
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
packages: {
|
|
391
|
+
'foo@1.0.0': {
|
|
392
|
+
resolution: {
|
|
393
|
+
integrity: 'sha512-aaa'
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
'orphan-comp@file:packages/orphan-comp': {
|
|
397
|
+
resolution: {
|
|
398
|
+
directory: 'packages/orphan-comp',
|
|
399
|
+
type: 'directory'
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
};
|
|
404
|
+
const graph = (0, _lockfileDepsGraphConverter().convertLockfileToGraph)(lockfile, {
|
|
405
|
+
pkgName: undefined,
|
|
406
|
+
componentRelativeDir: 'comps/comp1',
|
|
407
|
+
componentRootDir: undefined,
|
|
408
|
+
// Intentionally empty: simulates the bug where the workspace map
|
|
409
|
+
// didn't include the directory dep.
|
|
410
|
+
componentIdByPkgName: new Map()
|
|
411
|
+
});
|
|
412
|
+
(0, _chai().expect)([...graph.packages.keys()]).to.eql(['foo@1.0.0']);
|
|
413
|
+
const rootEdge = graph.findRootEdge();
|
|
414
|
+
(0, _chai().expect)(rootEdge?.neighbours.map(n => n.id)).to.eql(['foo@1.0.0']);
|
|
415
|
+
(0, _chai().expect)(graph.edges.find(({
|
|
416
|
+
id
|
|
417
|
+
}) => id.includes('@file:'))).to.equal(undefined);
|
|
418
|
+
});
|
|
419
|
+
});
|
|
354
420
|
describe('convertLockfileToGraph benchmark', () => {
|
|
355
421
|
function generateLargeLockfile(numPackages, numComponents) {
|
|
356
422
|
const snapshots = {};
|
|
@@ -523,6 +589,69 @@ describe('convertLockfileToGraph benchmark', () => {
|
|
|
523
589
|
});
|
|
524
590
|
});
|
|
525
591
|
describe('convertGraphToLockfile on invalid graph', () => {
|
|
592
|
+
// Reproduces the CI failure where a saved deps graph leaks "@file:" entries
|
|
593
|
+
// because buildPackages couldn't map them to a workspace component. The
|
|
594
|
+
// directory resolution was deleted and getPkgsToResolve can't recover an
|
|
595
|
+
// integrity for "file:" versions (dp.parse puts them in nonSemverVersion,
|
|
596
|
+
// not version), so validation throws "doesn't have a 'resolution' field".
|
|
597
|
+
// At install time the orphan can't be salvaged: if its name matches a
|
|
598
|
+
// workspace project pnpm wires it through importers/link entries (so the
|
|
599
|
+
// packages entry would be wrong), and otherwise we have no published
|
|
600
|
+
// version to recover. Dropping it is the only safe outcome.
|
|
601
|
+
it('should drop orphan @file: packages when generating a lockfile', async () => {
|
|
602
|
+
const packages = new Map([['@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app', {}], ['foo@1.0.0', {
|
|
603
|
+
resolution: {
|
|
604
|
+
integrity: 'sha512-aaa'
|
|
605
|
+
}
|
|
606
|
+
}]]);
|
|
607
|
+
const edges = [{
|
|
608
|
+
id: _objects().DependenciesGraph.ROOT_EDGE_ID,
|
|
609
|
+
neighbours: [{
|
|
610
|
+
id: 'foo@1.0.0',
|
|
611
|
+
name: 'foo',
|
|
612
|
+
specifier: '1.0.0',
|
|
613
|
+
lifecycle: 'runtime'
|
|
614
|
+
}, {
|
|
615
|
+
id: '@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app',
|
|
616
|
+
name: '@teambit/dot-launch.apps.whats-new-app',
|
|
617
|
+
specifier: '*',
|
|
618
|
+
lifecycle: 'runtime'
|
|
619
|
+
}]
|
|
620
|
+
}, {
|
|
621
|
+
id: 'foo@1.0.0',
|
|
622
|
+
neighbours: [{
|
|
623
|
+
id: '@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app',
|
|
624
|
+
optional: false
|
|
625
|
+
}]
|
|
626
|
+
}, {
|
|
627
|
+
id: '@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app',
|
|
628
|
+
neighbours: []
|
|
629
|
+
}];
|
|
630
|
+
const graph = new (_objects().DependenciesGraph)({
|
|
631
|
+
packages,
|
|
632
|
+
edges
|
|
633
|
+
});
|
|
634
|
+
const lockfile = await (0, _lockfileDepsGraphConverter().convertGraphToLockfile)(new (_objects().DependenciesGraph)(graph), {
|
|
635
|
+
manifests: {
|
|
636
|
+
[_path().default.resolve('comps/comp1')]: {
|
|
637
|
+
dependencies: {
|
|
638
|
+
foo: '1.0.0'
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
},
|
|
642
|
+
rootDir: process.cwd(),
|
|
643
|
+
resolve: () => ({
|
|
644
|
+
resolution: {
|
|
645
|
+
integrity: '0000'
|
|
646
|
+
}
|
|
647
|
+
})
|
|
648
|
+
});
|
|
649
|
+
(0, _chai().expect)(Object.keys(lockfile.packages)).to.eql(['foo@1.0.0']);
|
|
650
|
+
(0, _chai().expect)(Object.keys(lockfile.snapshots)).to.eql(['foo@1.0.0']);
|
|
651
|
+
// The dangling snapshot neighbour pointing at the orphan must also be
|
|
652
|
+
// filtered out so pnpm doesn't try to resolve a dep that no longer exists.
|
|
653
|
+
(0, _chai().expect)(lockfile.snapshots['foo@1.0.0']).to.eql({});
|
|
654
|
+
});
|
|
526
655
|
it('should throw an error if resolution is missing', async () => {
|
|
527
656
|
const packages = new Map([['foo@1.0.0', {}]]);
|
|
528
657
|
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","generateLargeLockfile","numPackages","numComponents","importerDeps","deps","compName","compPath","fileDepPath","set","Array","from","_","start","performance","now","elapsed","be","greaterThan","size","lessThan","lockfileCount","lockfiles","graphs","map","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 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 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","undefined","rootEdge","findRootEdge","map","n","find","includes","equal","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 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 [\n '@teambit/dot-launch.apps.whats-new-app@file:dot-launch/apps/whats-new-app',\n {} 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: [\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\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.995/dist/pnpm.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_pnpm@1.0.995/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.995",
|
|
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.995"
|
|
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.968",
|
|
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.475",
|
|
43
45
|
"@teambit/logger": "0.0.1413",
|
|
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.1320",
|
|
52
|
+
"@teambit/cloud": "0.0.1260",
|
|
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.1259",
|
|
56
|
-
"@teambit/component": "1.0.967",
|
|
57
|
-
"@teambit/ui": "1.0.967"
|
|
55
|
+
"@teambit/component": "1.0.968",
|
|
56
|
+
"@teambit/ui": "1.0.968",
|
|
57
|
+
"@teambit/ui-foundation.ui.use-box.menu": "1.0.16"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@types/lodash": "4.14.165",
|