@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.
@@ -146,7 +146,7 @@ function _convertLockfileToGraph(lockfile, {
146
146
  componentIdByPkgName,
147
147
  directDependencies
148
148
  }) {
149
- return new (_objects().DependenciesGraph)({
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":";;;;;;;AAAA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAG,GAAA;EAAA,MAAAH,IAAA,GAAAI,uBAAA,CAAAF,OAAA;EAAAC,EAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,QAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,OAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,UAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,SAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,yBAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,wBAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,SAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,QAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAYA,SAAAS,UAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,SAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,eAAA;EAAA,MAAAV,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAQ,cAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA2C,SAAAI,wBAAAO,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAT,uBAAA,YAAAA,CAAAO,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAX,uBAAAU,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAK,UAAA,GAAAL,CAAA,KAAAU,OAAA,EAAAV,CAAA;AAAA,SAAAmB,QAAAnB,CAAA,EAAAG,CAAA,QAAAF,CAAA,GAAAe,MAAA,CAAAI,IAAA,CAAApB,CAAA,OAAAgB,MAAA,CAAAK,qBAAA,QAAAf,CAAA,GAAAU,MAAA,CAAAK,qBAAA,CAAArB,CAAA,GAAAG,CAAA,KAAAG,CAAA,GAAAA,CAAA,CAAAgB,MAAA,WAAAnB,CAAA,WAAAa,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,EAAAoB,UAAA,OAAAtB,CAAA,CAAAuB,IAAA,CAAAC,KAAA,CAAAxB,CAAA,EAAAK,CAAA,YAAAL,CAAA;AAAA,SAAAyB,cAAA1B,CAAA,aAAAG,CAAA,MAAAA,CAAA,GAAAwB,SAAA,CAAAC,MAAA,EAAAzB,CAAA,UAAAF,CAAA,WAAA0B,SAAA,CAAAxB,CAAA,IAAAwB,SAAA,CAAAxB,CAAA,QAAAA,CAAA,OAAAgB,OAAA,CAAAH,MAAA,CAAAf,CAAA,OAAA4B,OAAA,WAAA1B,CAAA,IAAA2B,eAAA,CAAA9B,CAAA,EAAAG,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAAa,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAhC,CAAA,EAAAgB,MAAA,CAAAe,yBAAA,CAAA9B,CAAA,KAAAkB,OAAA,CAAAH,MAAA,CAAAf,CAAA,GAAA4B,OAAA,WAAA1B,CAAA,IAAAa,MAAA,CAAAC,cAAA,CAAAjB,CAAA,EAAAG,CAAA,EAAAa,MAAA,CAAAE,wBAAA,CAAAjB,CAAA,EAAAE,CAAA,iBAAAH,CAAA;AAAA,SAAA8B,gBAAA9B,CAAA,EAAAG,CAAA,EAAAF,CAAA,YAAAE,CAAA,GAAA8B,cAAA,CAAA9B,CAAA,MAAAH,CAAA,GAAAgB,MAAA,CAAAC,cAAA,CAAAjB,CAAA,EAAAG,CAAA,IAAA+B,KAAA,EAAAjC,CAAA,EAAAsB,UAAA,MAAAY,YAAA,MAAAC,QAAA,UAAApC,CAAA,CAAAG,CAAA,IAAAF,CAAA,EAAAD,CAAA;AAAA,SAAAiC,eAAAhC,CAAA,QAAAM,CAAA,GAAA8B,YAAA,CAAApC,CAAA,uCAAAM,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAA8B,aAAApC,CAAA,EAAAE,CAAA,2BAAAF,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAD,CAAA,GAAAC,CAAA,CAAAqC,MAAA,CAAAC,WAAA,kBAAAvC,CAAA,QAAAO,CAAA,GAAAP,CAAA,CAAAe,IAAA,CAAAd,CAAA,EAAAE,CAAA,uCAAAI,CAAA,SAAAA,CAAA,YAAAiC,SAAA,yEAAArC,CAAA,GAAAsC,MAAA,GAAAC,MAAA,EAAAzC,CAAA;AAG3C,SAAS0C,iCAAiCA,CACxCC,QAAyB,EACzB;EACEC,oBAAoB;EACpBC;AAC8G,CAAC,EAC9F;EACnB,MAAMC,iBAAiB,GAAGH,QAAQ,CAACI,SAAS,CAAEH,oBAAoB,CAAC;EACnE,MAAMI,kBAAyC,GAAG,EAAE;EACpD,KAAK,MAAMC,OAAO,IAAI,CAAC,cAAc,EAAW,sBAAsB,EAAW,iBAAiB,CAAU,EAAE;IAC5G,IAAIH,iBAAiB,CAACG,OAAO,CAAC,IAAI,IAAI,EAAE;MACtC,MAAMC,SAAS,GAAGD,OAAO,KAAK,iBAAiB,GAAG,KAAK,GAAG,SAAS;MACnE,MAAME,QAAQ,GAAGF,OAAO,KAAK,sBAAsB;MACnDD,kBAAkB,CAACzB,IAAI,CAAC,GAAG6B,wBAAwB,CAACN,iBAAiB,CAACG,OAAO,CAAC,EAAGC,SAAS,EAAEC,QAAQ,CAAC,CAAC;IACxG;EACF;EACA,OAAOE,uBAAuB,CAACV,QAAQ,EAAE;IAAEE,oBAAoB;IAAEG;EAAmB,CAAC,CAAC;AACxF;AAEA,SAASI,wBAAwBA,CAC/BE,oBAA6D,EAC7DJ,SAA4B,EAC5BC,QAAiB,EACM;EACvB,MAAMI,UAAiC,GAAG,EAAE;EAC5C,KAAK,MAAM,CAACC,IAAI,EAAE;IAAEC,OAAO;IAAEC;EAAU,CAAC,CAAC,IAAI3C,MAAM,CAAC4C,OAAO,CAACL,oBAAoB,CAAC,EAAS;IACxF,MAAMM,EAAE,GAAGrE,EAAE,CAAD,CAAC,CAACsE,aAAa,CAACJ,OAAO,EAAED,IAAI,CAAE;IAC3CD,UAAU,CAAChC,IAAI,CAAC;MAAEiC,IAAI;MAAEE,SAAS;MAAEE,EAAE;MAAEV,SAAS;MAAEC;IAAS,CAAC,CAAC;EAC/D;EACA,OAAOI,UAAU;AACnB;AAEO,SAASO,sBAAsBA,CACpCnB,QAAyB,EACzB;EACEoB,OAAO;EACPC,gBAAgB;EAChBpB,oBAAoB;EACpBC;AACqG,CAAC,EACrF;EACnB,IAAImB,gBAAgB,IAAI,IAAI,IAAID,OAAO,IAAI,IAAI,EAAE;IAC/C,OAAOrB,iCAAiC,CAACC,QAAQ,EAAE;MAAEC,oBAAoB;MAAEC;IAAqB,CAAC,CAAC;EACpG;EACA,MAAMoB,oBAAoB,GAAGtB,QAAQ,CAACI,SAAS,CAAEH,oBAAoB,CAAC;EACtE,MAAMI,kBAAyC,GAAG,EAAE;EACpD,IAAIiB,oBAAoB,CAACC,eAAe,IAAI,IAAI,EAAE;IAChDlB,kBAAkB,CAACzB,IAAI,CAAC,GAAG6B,wBAAwB,CAACa,oBAAoB,CAACC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;EAC1G;EACA,MAAMC,gBAAgB,GAAG,GAAGJ,OAAO,IAAIpB,QAAQ,CAACI,SAAS,CAAEiB,gBAAgB,CAAC,CAACI,YAAY,CAAEL,OAAO,CAAC,CAACN,OAAO,EAAE;EAC7G,MAAMY,SAAS,GAAG1B,QAAQ,CAAC2B,SAAS,CAAEH,gBAAgB,CAAC;EACvD,KAAK,MAAMlB,OAAO,IAAI,CAAC,cAAc,EAAW,sBAAsB,CAAU,EAAE;IAChF,MAAME,QAAQ,GAAGF,OAAO,KAAK,sBAAsB;IACnD,KAAK,MAAM,CAACO,IAAI,EAAEC,OAAO,CAAC,IAAI1C,MAAM,CAAC4C,OAAO,CAACU,SAAS,CAACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;MACtE,MAAMW,EAAE,GAAGrE,EAAE,CAAD,CAAC,CAACsE,aAAa,CAACJ,OAAO,EAAED,IAAI,CAAE;MAC3CR,kBAAkB,CAACzB,IAAI,CAAC;QACtBiC,IAAI;QACJE,SAAS,EAAEO,oBAAoB,CAAChB,OAAO,CAAC,GAAGO,IAAI,CAAC,EAAEE,SAAS,IAAI,GAAG;QAClEE,EAAE;QACFV,SAAS,EAAE,SAAS;QACpBC;MACF,CAAC,CAAC;IACJ;EACF;EACA,OAAOR,QAAQ,CAAC2B,SAAS,CAAEH,gBAAgB,CAAC;EAC5C,OAAOxB,QAAQ,CAAC4B,QAAQ,CAAEhF,EAAE,CAAD,CAAC,CAACiF,YAAY,CAACL,gBAAgB,CAAC,CAAC;EAC5D,OAAOd,uBAAuB,CAACV,QAAQ,EAAE;IAAEE,oBAAoB;IAAEG;EAAmB,CAAC,CAAC;AACxF;AAEA,SAASK,uBAAuBA,CAC9BV,QAAyB,EACzB;EACEE,oBAAoB;EACpBG;AAIF,CAAC,EACkB;EACnB,OAAO,KAAIyB,4BAAiB,EAAC;IAC3BC,KAAK,EAAEC,UAAU,CAAChC,QAAQ,EAAE;MAAEK,kBAAkB;MAAEH;IAAqB,CAAC,CAAC;IACzE0B,QAAQ,EAAEK,aAAa,CAACjC,QAAQ,EAAE;MAAEE;IAAqB,CAAC;EAC5D,CAAC,CAAC;AACJ;AAEA,SAAS8B,UAAUA,CACjBhC,QAAyB,EACzB;EACEK,kBAAkB;EAClBH;AAIF,CAAC,EACiB;EAClB,MAAMgC,kBAAkB,GAAGC,yBAAyB,CAACjC,oBAAoB,CAAC;EAC1E,MAAM6B,KAAuB,GAAG,EAAE;EAClC,KAAK,MAAM,CAACK,OAAO,EAAEC,QAAQ,CAAC,IAAIjE,MAAM,CAAC4C,OAAO,CAAChB,QAAQ,CAAC2B,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE;IAC1E,MAAMf,UAAU,GAAG0B,+BAA+B,CAACD,QAAQ,EAAEH,kBAAkB,CAAC;IAChF,MAAMK,eAAe,GAAGL,kBAAkB,CAACE,OAAO,CAAC;IACnD,MAAMI,IAAoB,GAAG;MAC3BvB,EAAE,EAAEsB,eAAe;MACnB3B;IACF,CAAC;IACD,MAAM6B,KAAK,GAAG7F,EAAE,CAAD,CAAC,CAACiF,YAAY,CAACU,eAAe,CAAC;IAC9C,IAAIE,KAAK,KAAKF,eAAe,EAAE;MAC7BC,IAAI,CAACE,IAAI,GAAG;QAAED;MAAM,CAAC;IACvB;IACA,IAAIJ,QAAQ,CAACM,0BAA0B,EAAE;MACvCH,IAAI,CAACE,IAAI,GAAA5D,aAAA,CAAAA,aAAA,KACJ0D,IAAI,CAACE,IAAI;QACZC,0BAA0B,EAAEN,QAAQ,CAACM;MAA0B,EAChE;IACH;IACA,IAAIH,IAAI,CAAC5B,UAAU,CAAC5B,MAAM,GAAG,CAAC,IAAIwD,IAAI,CAACvB,EAAE,KAAKwB,KAAK,EAAE;MACnDV,KAAK,CAACnD,IAAI,CAAC4D,IAAI,CAAC;IAClB;EACF;EACA,KAAK,MAAMI,GAAG,IAAIvC,kBAAkB,EAAE;IACpCuC,GAAG,CAAC3B,EAAE,GAAGiB,kBAAkB,CAACU,GAAG,CAAC3B,EAAE,CAAC;EACrC;EACAc,KAAK,CAACnD,IAAI,CAAC;IACTqC,EAAE,EAAEa,4BAAiB,CAACe,YAAY;IAClCjC,UAAU,EAAEP;EACd,CAAC,CAAC;EACF,OAAO0B,KAAK;AACd;AAEA,SAASO,+BAA+BA,CACtCD,QAAa,EACbH,kBAAyC,EAClB;EACvB,MAAMT,YAAmC,GAAG,EAAE;EAE9C,KAAK,MAAM;IAAEqB,YAAY;IAAEtC;EAAS,CAAC,IAAI,CACvC;IAAEsC,YAAY,EAAE,cAAc;IAAEtC,QAAQ,EAAE;EAAM,CAAC,EACjD;IAAEsC,YAAY,EAAE,sBAAsB;IAAEtC,QAAQ,EAAE;EAAK,CAAC,CACzD,EAAE;IACD,KAAK,MAAM,CAACK,IAAI,EAAEkC,GAAG,CAAC,IAAI3E,MAAM,CAAC4C,OAAO,CAAEqB,QAAQ,CAACS,YAAY,CAAC,IAAI,CAAC,CAA4B,CAAC,EAAE;MAClG,MAAME,UAAU,GAAGpG,EAAE,CAAD,CAAC,CAACsE,aAAa,CAAC6B,GAAG,EAAElC,IAAI,CAAC;MAC9C,IAAImC,UAAU,IAAI,IAAI,EAAE;QACtBvB,YAAY,CAAC7C,IAAI,CAAC;UAAEqC,EAAE,EAAEiB,kBAAkB,CAACc,UAAU,CAAC;UAAExC;QAAS,CAAC,CAAC;MACrE;IACF;EACF;EAEA,OAAOiB,YAAY;AACrB;AAEA,SAASQ,aAAaA,CACpBjC,QAAyB,EACzB;EAAEE;AAAqE,CAAC,EAC3D;EACb,MAAMgC,kBAAkB,GAAGC,yBAAyB,CAACjC,oBAAoB,CAAC;EAC1E,MAAM+C,kBAAkB,GAAGjD,QAAQ,CAACkD,GAAG,EAAED,kBAAkB;EAC3D,MAAME,qBAAqB,GAAGF,kBAAkB,GAAG,IAAIG,GAAG,CAACH,kBAAkB,CAAC,GAAGI,SAAS;EAC1F,MAAMzB,QAAqB,GAAG,IAAI0B,GAAG,CAAC,CAAC;EACvC,KAAK,MAAM,CAACb,KAAK,EAAEc,GAAG,CAAC,IAAInF,MAAM,CAAC4C,OAAO,CAAChB,QAAQ,CAAC4B,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE;IAClE,MAAM4B,QAAQ,GAAG,IAAAC,cAAI,EAACF,GAAG,EAAE,CACzB,qBAAqB,EACrB,KAAK,EACL,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,MAAM,EACN,MAAM,EACN,IAAI,EACJ,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,SAAS,CACV,CAAQ;IACT,IAAIC,QAAQ,CAACE,UAAU,CAACC,IAAI,KAAK,WAAW,EAAE;MAC5C,OAAOH,QAAQ,CAACE,UAAU;IAC5B;IACA,MAAME,aAAa,GAAG1B,kBAAkB,CAACO,KAAK,CAAC;IAC/C,MAAMoB,MAAM,GAAGjH,EAAE,CAAD,CAAC,CAACkH,KAAK,CAACF,aAAa,CAAC;IACtC,IAAIC,MAAM,CAAChD,IAAI,IAAIX,oBAAoB,CAACnC,GAAG,CAAC8F,MAAM,CAAChD,IAAI,CAAC,EAAE;MACxD,MAAMkD,MAAM,GAAG7D,oBAAoB,CAAClC,GAAG,CAAC6F,MAAM,CAAChD,IAAI,CAAE;MACrD2C,QAAQ,CAACQ,SAAS,GAAG;QACnBnD,IAAI,EAAEkD,MAAM,CAACE,QAAQ;QACrBC,KAAK,EAAEH,MAAM,CAACG;MAChB,CAAC;IACH;IACA,IAAIf,qBAAqB,EAAEpF,GAAG,CAAC0E,KAAK,CAAC,EAAE;MACrCe,QAAQ,CAACW,aAAa,GAAG,IAAI;IAC/B;IACAvC,QAAQ,CAAC3D,GAAG,CAAC2F,aAAa,EAAEJ,QAAQ,CAAC;EACvC;EACA,OAAO5B,QAAQ;AACjB;AAEA,SAASO,yBAAyBA,CAACjC,oBAA0C,EAAyB;EACpG,IAAIA,oBAAoB,CAACkE,IAAI,KAAK,CAAC,EAAE,OAAQC,CAAC,IAAKA,CAAC;EAEpD,MAAMC,YAAY,GAAG,IAAIhB,GAAG,CAAiB,CAAC;EAC9C,MAAMiB,YAAsB,GAAG,EAAE;EACjC,KAAK,MAAM,CAACnD,OAAO,EAAEoD,WAAW,CAAC,IAAItE,oBAAoB,CAACc,OAAO,CAAC,CAAC,EAAE;IACnEsD,YAAY,CAACrG,GAAG,CAACmD,OAAO,EAAE,GAAGA,OAAO,IAAI,IAAAqD,uCAAY,EAACD,WAAW,CAAC1D,OAAO,CAAC,EAAE,CAAC;IAC5EyD,YAAY,CAAC3F,IAAI,CAACwC,OAAO,CAACsD,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;EACnE;EACA,MAAMC,OAAO,GAAG,IAAIC,MAAM,CAAC,IAAIL,YAAY,CAACM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC;EAE3E,OAAQR,CAAS,IAAK;IACpB,IAAI,CAACA,CAAC,CAACS,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAOT,CAAC;IACnC,OAAOA,CAAC,CAACK,OAAO,CAACC,OAAO,EAAE,CAACI,CAAC,EAAElE,IAAI,KAAKyD,YAAY,CAACtG,GAAG,CAAC6C,IAAI,CAAE,CAAC;EACjE,CAAC;AACH;AAEO,eAAemE,sBAAsBA,CAC1CC,MAAyB,EACzB;EACEC,SAAS;EACTC,OAAO;EACPC;AAKF,CAAC,EACyB;EAC1B,MAAMC,WAAW,GAAGJ,MAAM,CAACK,SAAS,CAAC,CAAC;EACtC,MAAMC,KAAK,GAAGzD,4BAAiB,CAAC0D,WAAW,CAACH,WAAW,CAAE;EACzD,MAAMzD,QAAQ,GAAG,CAAC,CAAC;EACnB,MAAMD,SAAS,GAAG,CAAC,CAAC;EACpB,MAAM8D,UAAU,GAAG,IAAIrC,GAAG,CAACmC,KAAK,CAACxD,KAAK,CAAC2D,GAAG,CAAC,CAAC;IAAEzE;EAAG,CAAC,KAAKA,EAAE,CAAC,CAAC;EAE3D,KAAK,MAAMuB,IAAI,IAAI+C,KAAK,CAACxD,KAAK,EAAE;IAC9B,IAAIS,IAAI,CAACvB,EAAE,KAAKa,4BAAiB,CAACe,YAAY,EAAE;IAChD,MAAMJ,KAAK,GAAGD,IAAI,CAACE,IAAI,EAAED,KAAK,IAAID,IAAI,CAACvB,EAAE;IACzCU,SAAS,CAACa,IAAI,CAACvB,EAAE,CAAC,GAAG,CAAC,CAAC;IACvBW,QAAQ,CAACa,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,MAAM,CAACkD,YAAY,EAAEC,QAAQ,CAAC,GAAG,IAAAC,mBAAS,EAACrD,IAAI,CAAC5B,UAAU,EAAGgC,GAAG,IAAKA,GAAG,CAACpC,QAAQ,CAAC;IAClF,IAAIoF,QAAQ,CAAC5G,MAAM,EAAE;MACnB2C,SAAS,CAACa,IAAI,CAACvB,EAAE,CAAC,CAACQ,YAAY,GAAGqE,aAAa,CAACF,QAAQ,CAAC;IAC3D;IACA,IAAID,YAAY,CAAC3G,MAAM,EAAE;MACvB2C,SAAS,CAACa,IAAI,CAACvB,EAAE,CAAC,CAAC8E,oBAAoB,GAAGD,aAAa,CAACH,YAAY,CAAC;IACvE;IACA,MAAMnC,QAAQ,GAAG+B,KAAK,CAAC3D,QAAQ,CAAC5D,GAAG,CAACyE,KAAK,CAAC;IAC1C,IAAIe,QAAQ,IAAI,IAAI,EAAE;MACpBpF,MAAM,CAAC4H,MAAM,CAACpE,QAAQ,CAACa,KAAK,CAAC,EAAEwD,oCAAoC,CAACzC,QAAQ,CAAC,CAAC;IAChF;EACF;EACA,KAAK,MAAM,CAACf,KAAK,EAAEe,QAAQ,CAAC,IAAI+B,KAAK,CAAC3D,QAAQ,CAACZ,OAAO,CAAC,CAAC,EAAE;IACxD,IAAIY,QAAQ,CAACa,KAAK,CAAC,IAAI,IAAI,EAAE;MAC3Bb,QAAQ,CAACa,KAAK,CAAC,GAAGwD,oCAAoC,CAACzC,QAAQ,CAAC;MAChE7B,SAAS,CAACc,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB;EACF;EACA,MAAMQ,kBAA4B,GAAG,EAAE;EACvC,KAAK,MAAM,CAACR,KAAK,EAAE;IAAE0B;EAAc,CAAC,CAAC,IAAIoB,KAAK,CAAC3D,QAAQ,CAACZ,OAAO,CAAC,CAAC,EAAE;IACjE,IAAImD,aAAa,EAAE;MACjBlB,kBAAkB,CAACrE,IAAI,CAAC6D,KAAK,CAAC;IAChC;EACF;EACAQ,kBAAkB,CAACiD,IAAI,CAAC,CAAC;EACzB,MAAMlG,QAAuE,GAAG;IAC9EmG,eAAe,EAAE,KAAK;IACtBvE,QAAQ;IACRD,SAAS;IACTvB,SAAS,EAAE,CAAC,CAAC;IACb8C,GAAG,EAAE;MAAED;IAAmB;EAC5B,CAAC;EACD,MAAMmD,QAAQ,GAAGb,KAAK,CAACc,YAAY,CAAC,CAAC;EACrC,IAAID,QAAQ,EAAE;IACZ,KAAK,MAAM,CAACE,UAAU,EAAEC,QAAQ,CAAC,IAAInI,MAAM,CAAC4C,OAAO,CAACkE,SAAS,CAAC,EAAE;MAC9D,MAAMsB,SAAS,GAAG,IAAAC,iCAAqB,EAACtB,OAAO,EAAEmB,UAAU,CAAC;MAC5DtG,QAAQ,CAACI,SAAS,CAAEoG,SAAS,CAAC,GAAG;QAC/B/E,YAAY,EAAE,CAAC,CAAC;QAChBF,eAAe,EAAE,CAAC,CAAC;QACnBwE,oBAAoB,EAAE,CAAC;MACzB,CAAC;MACD,KAAK,MAAMzF,OAAO,IAAI,CAAC,cAAc,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE;QACjF,KAAK,MAAM,CAACO,IAAI,EAAEE,SAAS,CAAC,IAAI3C,MAAM,CAAC4C,OAAO,CAACuF,QAAQ,CAACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAA6B;UAClG,IAAIS,SAAS,CAAC2F,UAAU,CAAC,OAAO,CAAC,EAAE;YACjC,MAAM5F,OAAO,GAAG,QAAQ,IAAA6F,wBAAa,EAACC,eAAI,CAACC,QAAQ,CAACP,UAAU,EAAEvF,SAAS,CAAC+F,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1F9G,QAAQ,CAACI,SAAS,CAAEoG,SAAS,CAAC,CAAClG,OAAO,CAAC,CAACO,IAAI,CAAC,GAAG;cAAEC,OAAO;cAAEC;YAAU,CAAC;UACxE,CAAC,MAAM;YACL,MAAMgG,MAAM,GAAGX,QAAQ,CAACxF,UAAU,CAACoG,IAAI,CACpCC,SAAS,IACRA,SAAS,CAACpG,IAAI,KAAKA,IAAI,KACtBoG,SAAS,CAAClG,SAAS,KAAKA,SAAS,IAAInE,EAAE,CAAD,CAAC,CAACiF,YAAY,CAACoF,SAAS,CAAChG,EAAE,CAAC,KAAK,GAAGJ,IAAI,IAAIE,SAAS,EAAE,CAClG,CAAC,EAAEE,EAAE;YACL,IAAI8F,MAAM,EAAE;cACV,MAAMlD,MAAM,GAAGjH,EAAE,CAAD,CAAC,CAACkH,KAAK,CAACiD,MAAM,CAAC;cAC/B,MAAMhE,GAAG,GAAGmE,YAAY,CAACrD,MAAM,CAAC;cAChC7D,QAAQ,CAACI,SAAS,CAAEoG,SAAS,CAAC,CAAClG,OAAO,CAAC,CAACO,IAAI,CAAC,GAAG;gBAAEC,OAAO,EAAEiC,GAAG;gBAAEhC;cAAU,CAAC;YAC7E;UACF;QACF;MACF;IACF;EACF;EACA,MAAMoG,aAAa,GAAGC,gBAAgB,CAACpH,QAAQ,EAAEkF,SAAS,CAAC;EAC3D,MAAMmC,OAAO,CAACC,GAAG,CACfH,aAAa,CAACzB,GAAG,CAAC,MAAO6B,YAAY,IAAK;IACxC,IAAIvH,QAAQ,CAAC4B,QAAQ,CAAC2F,YAAY,CAAC9E,KAAK,CAAC,CAACiB,UAAU,IAAI,IAAI,EAAE;MAC5D,MAAM;QAAEA;MAAW,CAAC,GAAG,MAAM0B,OAAO,CAClC;QACEoC,KAAK,EAAED,YAAY,CAAC1G,IAAI;QACxB4G,aAAa,EAAEF,YAAY,CAACzG;MAC9B,CAAC,EACD;QACE4G,WAAW,EAAE,EAAE;QACfpB,UAAU,EAAE,EAAE;QACdqB,iBAAiB,EAAE,CAAC;MACtB,CACF,CAAC;MACD,IAAI,WAAW,IAAIjE,UAAU,IAAIA,UAAU,CAACkE,SAAS,EAAE;QACrD5H,QAAQ,CAAC4B,QAAQ,CAAC2F,YAAY,CAAC9E,KAAK,CAAC,CAACiB,UAAU,GAAG;UACjDkE,SAAS,EAAElE,UAAU,CAACkE;QACxB,CAAC;MACH;IACF;EACF,CAAC,CACH,CAAC;EACD;EACA,KAAK,MAAM,CAACxF,OAAO,EAAEmB,GAAG,CAAC,IAAInF,MAAM,CAAC4C,OAAO,CAAChB,QAAQ,CAAC4B,QAAQ,CAAC,EAAE;IAC9D,IAAI2B,GAAG,CAACG,UAAU,IAAI,IAAI,IAAItF,MAAM,CAACI,IAAI,CAAC+E,GAAG,CAACG,UAAU,CAAC,CAAC1E,MAAM,KAAK,CAAC,EAAE;MACtE,MAAM,KAAI6I,oBAAQ,EAChB,uDAAuDzF,OAAO,6CAChE,CAAC;IACH;EACF;EACA,OAAOpC,QAAQ;EAEf,SAAS8F,aAAaA,CAAClF,UAAiC,EAAE;IACxD,MAAMkH,IAAI,GAAG,CAAC,CAAC;IACf,KAAK,MAAM;MAAE7G;IAAG,CAAC,IAAIL,UAAU,EAAE;MAC/B,MAAMiD,MAAM,GAAGjH,EAAE,CAAD,CAAC,CAACkH,KAAK,CAAC7C,EAAE,CAAC;MAC3B6G,IAAI,CAACjE,MAAM,CAAChD,IAAI,CAAE,GAAGqG,YAAY,CAACrD,MAAM,CAAC;MACzC,IAAI,CAAC4B,UAAU,CAAC1H,GAAG,CAACkD,EAAE,CAAC,EAAE;QACvBU,SAAS,CAACV,EAAE,CAAC,GAAG,CAAC,CAAC;QAClBW,QAAQ,CAACX,EAAE,CAAC,GAAGgF,oCAAoC,CAACV,KAAK,CAAC3D,QAAQ,CAAC5D,GAAG,CAACiD,EAAE,CAAE,CAAC;MAC9E;IACF;IACA,OAAO6G,IAAI;EACb;AACF;AAQA,SAASV,gBAAgBA,CAACpH,QAAyB,EAAEkF,SAA0C,EAAkB;EAC/G,MAAMiC,aAA6B,GAAG,EAAE;EACxC,MAAMY,mBAAmB,GAAG,IAAIzE,GAAG,CAAiB,CAAC;EACrD,KAAK,MAAM;IAAEzC,IAAI;IAAEC;EAAQ,CAAC,IAAI1C,MAAM,CAAC4J,MAAM,CAAC9C,SAAS,CAAC,EAAE;IACxD,IAAIrE,IAAI,IAAIC,OAAO,EAAE;MACnBiH,mBAAmB,CAAC9J,GAAG,CAAC4C,IAAI,EAAEC,OAAO,CAAC;IACxC;EACF;EACA,KAAK,MAAM,CAAC2B,KAAK,EAAEc,GAAG,CAAC,IAAInF,MAAM,CAAC4C,OAAO,CAAChB,QAAQ,CAAC4B,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE;IAClE,IAAI2B,GAAG,CAACG,UAAU,IAAI,IAAI,IAAK,MAAM,IAAIH,GAAG,CAACG,UAAU,IAAIH,GAAG,CAACG,UAAU,CAACC,IAAI,KAAK,WAAY,EAAE;MAC/F,MAAME,MAAM,GAAGjH,EAAE,CAAD,CAAC,CAACkH,KAAK,CAACrB,KAAK,CAAC;MAC9B,IACEoB,MAAM,CAAChD,IAAI,IACXgD,MAAM,CAAC/C,OAAO,KACb,CAACiH,mBAAmB,CAAChK,GAAG,CAAC8F,MAAM,CAAChD,IAAI,CAAC,IAAIkH,mBAAmB,CAAC/J,GAAG,CAAC6F,MAAM,CAAChD,IAAI,CAAC,KAAKgD,MAAM,CAAC/C,OAAO,CAAC,EAClG;QACAqG,aAAa,CAACvI,IAAI,CAAC;UACjBiC,IAAI,EAAEgD,MAAM,CAAChD,IAAI;UACjBC,OAAO,EAAE+C,MAAM,CAAC/C,OAAO;UACvB2B;QACF,CAAC,CAAC;MACJ;IACF;EACF;EACA,OAAO0E,aAAa;AACtB;AAEA,SAASD,YAAYA,CAAC9E,OAA0B,EAAU;EACxD,OAAO,GAAGA,OAAO,CAACtB,OAAO,GAAGsB,OAAO,CAAC6F,SAAS,IAAI,EAAE,GAAG7F,OAAO,CAAC8F,gBAAgB,IAAI,EAAE,EAAE;AACxF;AAEA,SAASjC,oCAAoCA,CAACkC,OAA0B,EAAE;EACxE,OAAO,IAAA1E,cAAI,EAAC0E,OAAO,EAAE,CACnB,qBAAqB,EACrB,KAAK,EACL,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,MAAM,EACN,MAAM,EACN,IAAI,EACJ,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,SAAS,CACV,CAAC;AACJ","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.993/dist/pnpm.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_pnpm@1.0.993/dist/pnpm.docs.mdx';
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.993",
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.993"
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/ui-foundation.ui.use-box.menu": "1.0.16",
53
- "@teambit/dependency-resolver": "1.0.967",
54
- "@teambit/objects": "0.0.474",
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",