{
  "version": 3,
  "sources": ["../../../../src/packages/resolve-dependencies/index.ts"],
  "sourcesContent": ["import path from 'node:path';\nimport { PnpmError } from '../error/index.ts';\nimport { packageManifestLogger } from '../core-loggers/index.ts';\nimport { globalWarn } from '../logger/index.ts';\nimport type {\n  LockfileObject,\n  ProjectSnapshot,\n} from '../lockfile.types/index.ts';\nimport {\n  getAllDependenciesFromManifest,\n  getSpecFromPackageManifest,\n  type PinnedVersion,\n} from '../manifest-utils/index.ts';\nimport { safeReadPackageJsonFromDir } from '../read-package-json/index.ts';\nimport {\n  type DependenciesField,\n  DEPENDENCIES_FIELDS,\n  type DependencyManifest,\n  type PeerDependencyIssuesByProjects,\n  type ProjectManifest,\n  type ProjectId,\n  type ProjectRootDir,\n  type GlobalPkgDir,\n  type LockFileDir,\n  type ProjectRootDirRealPath,\n  type WorkspaceDir,\n} from '../types/index.ts';\nimport difference from 'ramda/src/difference';\nimport zipWith from 'ramda/src/zipWith';\nimport isSubdir from 'is-subdir';\nimport {\n  getWantedDependencies,\n  type WantedDependency,\n} from './getWantedDependencies.ts';\nimport { depPathToRef } from './depPathToRef.ts';\nimport type { NodeId } from './nextNodeId.ts';\nimport {\n  createNodeIdForLinkedLocalPkg,\n  type UpdateMatchingFunction,\n} from './resolveDependencies.ts';\nimport {\n  type ImporterToResolveGeneric,\n  type LinkedDependency,\n  type ResolveDependenciesOptions,\n  type ResolvedDirectDependency,\n  type ResolvedPackage,\n  resolveDependencyTree,\n} from './resolveDependencyTree.ts';\nimport {\n  type DependenciesByProjectId,\n  resolvePeers,\n  type GenericDependenciesGraphWithResolvedChildren,\n  type GenericDependenciesGraphNodeWithResolvedChildren,\n} from './resolvePeers.ts';\nimport { toResolveImporter } from './toResolveImporter.ts';\nimport { updateLockfile } from './updateLockfile.ts';\nimport { updateProjectManifest } from './updateProjectManifest.ts';\nimport { getCatalogSnapshots } from './getCatalogSnapshots.ts';\nimport type { ProjectOptions, HookOptions } from '../get-context/index.ts';\n\nexport type DependenciesGraph = GenericDependenciesGraphWithResolvedChildren;\n\nexport type DependenciesGraphNode =\n  GenericDependenciesGraphNodeWithResolvedChildren & ResolvedPackage;\n\nexport {\n  getWantedDependencies,\n  type LinkedDependency,\n  type ResolvedPackage,\n  type PinnedVersion,\n  type UpdateMatchingFunction,\n  type WantedDependency,\n};\n\ntype ProjectToLink = {\n  binsDir: string;\n  directNodeIdsByAlias: Map<string, NodeId>;\n  id: ProjectId;\n  linkedDependencies: LinkedDependency[];\n  manifest?: ProjectManifest | undefined;\n  modulesDir: string;\n  rootDir:\n    | ProjectRootDir\n    | ProjectRootDirRealPath\n    | GlobalPkgDir\n    | WorkspaceDir\n    | LockFileDir;\n  topParents: Array<{\n    name: string;\n    version: string;\n    alias?: string | undefined;\n    linkedDir?: NodeId | undefined;\n  }>;\n};\n\nexport type ImporterToResolve = {\n  id: ProjectId;\n  modulesDir: string;\n  removePackages?: string[] | undefined;\n  rootDir:\n    | ProjectRootDir\n    | ProjectRootDirRealPath\n    | GlobalPkgDir\n    | WorkspaceDir\n    | LockFileDir;\n  wantedDependencies: Array<\n    WantedDependency & {\n      isNew?: boolean | undefined;\n      updateDepth?: number | undefined;\n      preserveNonSemverVersionSpec?: boolean | undefined;\n    }\n  >;\n  peer?: boolean | undefined;\n  pinnedVersion?: PinnedVersion | undefined;\n  // binsDir: string;\n  manifest?: ProjectManifest | undefined;\n  originalManifest?: ProjectManifest | undefined;\n  update?: boolean | undefined;\n  updateMatching?: UpdateMatchingFunction | undefined;\n  updatePackageManifest?: boolean | undefined;\n  targetDependenciesField?: DependenciesField | undefined;\n};\n\nexport type ResolveDependenciesResult = {\n  dependenciesByProjectId: DependenciesByProjectId;\n  dependenciesGraph: GenericDependenciesGraphWithResolvedChildren;\n  outdatedDependencies: {\n    [pkgId: string]: string;\n  };\n  linkedDependenciesByProjectId: Record<string, LinkedDependency[]>;\n  newLockfile: LockfileObject;\n  peerDependencyIssuesByProjects: PeerDependencyIssuesByProjects;\n  waitTillAllFetchingsFinish: () => Promise<void>;\n  wantedToBeSkippedPackageIds: Set<string>;\n};\n\nexport async function resolveDependencies(\n  importers: (ProjectOptions &\n    HookOptions & {\n      binsDir: string;\n      updatePackageManifest?: boolean | undefined;\n      wantedDependencies?: Array<WantedDependency> | undefined;\n    })[],\n  opts: ResolveDependenciesOptions & {\n    defaultUpdateDepth: number;\n    dedupePeerDependents?: boolean | undefined;\n    dedupeDirectDeps?: boolean | undefined;\n    dedupeInjectedDeps?: boolean | undefined;\n    excludeLinksFromLockfile?: boolean | undefined;\n    preserveWorkspaceProtocol: boolean;\n    saveWorkspaceProtocol: 'rolling' | boolean;\n    lockfileIncludeTarballUrl?: boolean | undefined;\n    allowNonAppliedPatches?: boolean | undefined;\n  }\n): Promise<ResolveDependenciesResult> {\n  const _toResolveImporter = toResolveImporter.bind(null, {\n    defaultUpdateDepth: opts.defaultUpdateDepth,\n    lockfileOnly: opts.dryRun,\n    preferredVersions: opts.preferredVersions,\n    virtualStoreDir: opts.virtualStoreDir,\n    workspacePackages: opts.workspacePackages,\n    noDependencySelectors: importers.every(\n      ({\n        wantedDependencies,\n      }: ProjectOptions &\n        HookOptions & {\n          binsDir: string;\n          updatePackageManifest?: boolean | undefined;\n          wantedDependencies?: Array<WantedDependency> | undefined;\n        }): boolean => {\n        return wantedDependencies?.length === 0;\n      }\n    ),\n  });\n\n  const projectsToResolve = (\n    await Promise.all(\n      importers.map(\n        async (\n          project: ProjectOptions &\n            HookOptions & {\n              binsDir: string;\n              updatePackageManifest?: boolean | undefined;\n              wantedDependencies?: Array<WantedDependency> | undefined;\n            }\n        ): Promise<ImporterToResolveGeneric<{\n          isNew?: boolean | undefined;\n          updateDepth?: number | undefined;\n        }> | null> => {\n          return _toResolveImporter(project);\n        }\n      )\n    )\n  ).filter(Boolean);\n\n  const {\n    dependenciesTree,\n    outdatedDependencies,\n    resolvedImporters,\n    resolvedPkgsById,\n    wantedToBeSkippedPackageIds,\n    appliedPatches,\n    time,\n    allPeerDepNames,\n  } = await resolveDependencyTree(projectsToResolve, opts);\n\n  opts.storeController.clearResolutionCache();\n\n  // We only check whether patches were applied in cases when the whole lockfile was reanalyzed.\n  if (\n    opts.patchedDependencies &&\n    (opts.forceFullResolution ||\n      !Object.keys(opts.wantedLockfile.packages ?? {}).length) &&\n    Object.keys(opts.wantedLockfile.importers ?? {}).length === importers.length\n  ) {\n    verifyPatches({\n      patchedDependencies: Object.keys(opts.patchedDependencies),\n      appliedPatches,\n      allowNonAppliedPatches: opts.allowNonAppliedPatches,\n    });\n  }\n\n  const projectsToLink = (\n    await Promise.all<ProjectToLink | null>(\n      projectsToResolve.map(\n        async (\n          project: ImporterToResolveGeneric<{\n            updateDepth?: number | undefined;\n          }>\n        ): Promise<ProjectToLink | null> => {\n          const resolvedImporter = resolvedImporters[project.id];\n\n          if (typeof resolvedImporter === 'undefined') {\n            return null;\n          }\n\n          const topParents: Array<{\n            name: string;\n            version: string;\n            alias?: string | undefined;\n            linkedDir?: NodeId | undefined;\n          }> =\n            typeof project.manifest === 'undefined'\n              ? []\n              : await getTopParents(\n                  difference.default(\n                    Object.keys(\n                      getAllDependenciesFromManifest(project.manifest)\n                    ),\n                    resolvedImporter.directDependencies.map(\n                      ({ alias }: ResolvedDirectDependency): string => {\n                        return alias;\n                      }\n                    )\n                  ),\n                  project.modulesDir\n                );\n\n          for (const linkedDependency of resolvedImporter.linkedDependencies) {\n            if (typeof linkedDependency.resolution.directory === 'undefined') {\n              continue;\n            }\n\n            // The location of the external link may vary on different machines, so it is better not to include it in the lockfile.\n            // As a workaround, we symlink to the root of node_modules, which is a symlink to the actual location of the external link.\n            const target =\n              opts.excludeLinksFromLockfile !== true ||\n              isSubdir(opts.lockfileDir, linkedDependency.resolution.directory)\n                ? linkedDependency.resolution.directory\n                : path.join(project.modulesDir, linkedDependency.alias);\n\n            const linkedDir = createNodeIdForLinkedLocalPkg(\n              opts.lockfileDir,\n              target\n            );\n\n            topParents.push({\n              name: linkedDependency.alias,\n              version: linkedDependency.version,\n              linkedDir,\n            });\n          }\n\n          return {\n            binsDir: '',\n            directNodeIdsByAlias: resolvedImporter.directNodeIdsByAlias,\n            id: project.id,\n            linkedDependencies: resolvedImporter.linkedDependencies,\n            manifest: project.manifest,\n            modulesDir: project.modulesDir,\n            rootDir: project.rootDir,\n            topParents,\n          };\n        }\n      )\n    )\n  ).filter(Boolean);\n\n  const {\n    dependenciesGraph,\n    dependenciesByProjectId,\n    peerDependencyIssuesByProjects,\n  } = await resolvePeers({\n    allPeerDepNames,\n    dependenciesTree,\n    dedupePeerDependents: opts.dedupePeerDependents,\n    dedupeInjectedDeps: opts.dedupeInjectedDeps,\n    lockfileDir: opts.lockfileDir,\n    projects: projectsToLink,\n    virtualStoreDir: opts.virtualStoreDir,\n    virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n    resolvePeersFromWorkspaceRoot: Boolean(opts.resolvePeersFromWorkspaceRoot),\n    resolvedImporters,\n    peersSuffixMaxLength: opts.peersSuffixMaxLength,\n  });\n\n  const linkedDependenciesByProjectId: Record<string, LinkedDependency[]> = {};\n  (\n    await Promise.all(\n      projectsToResolve.map(\n        async (\n          project: ImporterToResolveGeneric<{\n            updateDepth?: number | undefined;\n          }>,\n          index: number\n        ): Promise<void> => {\n          const resolvedImporter = resolvedImporters[project.id];\n\n          if (typeof resolvedImporter === 'undefined') {\n            return;\n          }\n\n          linkedDependenciesByProjectId[project.id] =\n            resolvedImporter.linkedDependencies;\n\n          let updatedManifest: ProjectManifest | undefined;\n\n          let updatedOriginalManifest: ProjectManifest | undefined;\n\n          if (project.updatePackageManifest === true) {\n            [updatedManifest, updatedOriginalManifest] =\n              await updateProjectManifest(project, {\n                directDependencies: resolvedImporter.directDependencies,\n                preserveWorkspaceProtocol: opts.preserveWorkspaceProtocol,\n                saveWorkspaceProtocol: opts.saveWorkspaceProtocol,\n              });\n          } else {\n            updatedManifest = project.manifest;\n\n            updatedOriginalManifest = project.originalManifest;\n\n            packageManifestLogger.debug({\n              prefix: project.rootDir,\n              updated: project.manifest,\n            });\n          }\n\n          if (updatedManifest != null) {\n            if (opts.autoInstallPeers === true) {\n              if (updatedManifest.peerDependencies) {\n                const allDeps = getAllDependenciesFromManifest(updatedManifest);\n\n                for (const [peerName, peerRange] of Object.entries(\n                  updatedManifest.peerDependencies\n                )) {\n                  if (typeof allDeps[peerName] !== 'undefined') {\n                    continue;\n                  }\n\n                  updatedManifest.dependencies ??= {};\n\n                  updatedManifest.dependencies[peerName] = peerRange;\n                }\n              }\n            }\n\n            const lockFileImporters = opts.wantedLockfile.importers ?? {};\n\n            const projectSnapshot = lockFileImporters[project.id];\n\n            if (typeof projectSnapshot !== 'undefined') {\n              lockFileImporters[project.id] = addDirectDependenciesToLockfile(\n                updatedManifest,\n                projectSnapshot,\n                resolvedImporter.linkedDependencies,\n                resolvedImporter.directDependencies,\n                opts.excludeLinksFromLockfile\n              );\n            }\n\n            const importer = importers[index];\n\n            if (typeof importer !== 'undefined') {\n              importer.manifest =\n                updatedOriginalManifest ??\n                project.originalManifest ??\n                project.manifest;\n            }\n          }\n\n          for (const [alias, depPath] of dependenciesByProjectId[\n            project.id\n          ]?.entries() ?? []) {\n            const projectSnapshot = opts.wantedLockfile.importers?.[project.id];\n\n            const dm = project.manifest?.dependenciesMeta;\n\n            if (\n              typeof projectSnapshot !== 'undefined' &&\n              typeof dm !== 'undefined'\n            ) {\n              projectSnapshot.dependenciesMeta = dm;\n            }\n\n            const depNode = dependenciesGraph[depPath];\n\n            if (typeof depNode === 'undefined') {\n              continue;\n            }\n\n            const ref = depPathToRef(depPath, {\n              alias,\n              realName: depNode.name,\n              // resolution: depNode.resolution,\n            });\n\n            const deps = projectSnapshot?.dependencies;\n            const devDeps = projectSnapshot?.devDependencies;\n            const optionalDeps = projectSnapshot?.optionalDependencies;\n\n            if (typeof deps?.[alias] !== 'undefined') {\n              deps[alias] = ref;\n            } else if (typeof devDeps?.[alias] !== 'undefined') {\n              devDeps[alias] = ref;\n            } else if (typeof optionalDeps?.[alias] !== 'undefined') {\n              optionalDeps[alias] = ref;\n            }\n          }\n        }\n      )\n    )\n  ).filter(Boolean);\n\n  if (opts.dedupeDirectDeps === true) {\n    const rootDeps = dependenciesByProjectId['.'];\n\n    if (rootDeps) {\n      for (const [id, deps] of Object.entries(dependenciesByProjectId)) {\n        if (id === '.') {\n          continue;\n        }\n\n        for (const [alias, depPath] of deps.entries()) {\n          if (depPath === rootDeps.get(alias)) {\n            deps.delete(alias);\n          }\n        }\n      }\n    }\n  }\n\n  const newLockfile = updateLockfile({\n    dependenciesGraph,\n    lockfile: opts.wantedLockfile,\n    prefix: opts.virtualStoreDir,\n    registries: opts.registries,\n    lockfileIncludeTarballUrl: opts.lockfileIncludeTarballUrl,\n  });\n\n  if (time) {\n    newLockfile.time = {\n      ...opts.wantedLockfile.time,\n      ...time,\n    };\n  }\n\n  newLockfile.catalogs = getCatalogSnapshots(\n    Object.values(resolvedImporters).flatMap(\n      ({\n        directDependencies,\n      }: {\n        directDependencies: ResolvedDirectDependency[];\n        directNodeIdsByAlias: Map<string, NodeId>;\n        linkedDependencies: LinkedDependency[];\n      }): ResolvedDirectDependency[] => {\n        return directDependencies;\n      }\n    )\n  );\n\n  // waiting till package requests are finished\n  async function waitTillAllFetchingsFinish(): Promise<void> {\n    await Promise.all(\n      Object.values(resolvedPkgsById).map(\n        async ({ fetching }: ResolvedPackage): Promise<void> => {\n          try {\n            await fetching?.();\n          } catch {}\n        }\n      )\n    );\n  }\n\n  return {\n    dependenciesByProjectId,\n    dependenciesGraph,\n    outdatedDependencies,\n    linkedDependenciesByProjectId,\n    newLockfile,\n    peerDependencyIssuesByProjects,\n    waitTillAllFetchingsFinish,\n    wantedToBeSkippedPackageIds,\n  };\n}\n\nfunction verifyPatches({\n  patchedDependencies,\n  appliedPatches,\n  allowNonAppliedPatches,\n}: {\n  patchedDependencies: string[];\n  appliedPatches: Set<string>;\n  allowNonAppliedPatches?: boolean | undefined;\n}): void {\n  const nonAppliedPatches: string[] = patchedDependencies.filter(\n    (patchKey: string): boolean => {\n      return appliedPatches.has(patchKey) !== true;\n    }\n  );\n\n  if (!nonAppliedPatches.length) return;\n\n  const message = `The following patches were not applied: ${nonAppliedPatches.join(', ')}`;\n\n  if (allowNonAppliedPatches === true) {\n    globalWarn(message);\n\n    return;\n  }\n\n  throw new PnpmError('PATCH_NOT_APPLIED', message, {\n    hint: 'Either remove them from \"patchedDependencies\" or update them to match packages in your dependencies.',\n  });\n}\n\ntype RequiredDefined<T> = { [P in keyof T]-?: Exclude<T[P], undefined> };\n\nfunction addDirectDependenciesToLockfile(\n  newManifest: ProjectManifest,\n  projectSnapshot: ProjectSnapshot,\n  linkedPackages: Array<{ alias: string }>,\n  directDependencies: ResolvedDirectDependency[],\n  excludeLinksFromLockfile?: boolean\n): ProjectSnapshot {\n  const newProjectSnapshot: ProjectSnapshot &\n    RequiredDefined<\n      Pick<\n        ProjectSnapshot,\n        'dependencies' | 'devDependencies' | 'optionalDependencies'\n      >\n    > = {\n    dependencies: {},\n    devDependencies: {},\n    optionalDependencies: {},\n    specifiers: {},\n  };\n\n  if (typeof newManifest.publishConfig?.directory !== 'undefined') {\n    newProjectSnapshot.publishDirectory = newManifest.publishConfig.directory;\n  }\n\n  for (const linkedPkg of linkedPackages) {\n    newProjectSnapshot.specifiers[linkedPkg.alias] = getSpecFromPackageManifest(\n      newManifest,\n      linkedPkg.alias\n    );\n  }\n\n  const directDependenciesByAlias: Record<string, ResolvedDirectDependency> =\n    {};\n\n  for (const directDependency of directDependencies) {\n    directDependenciesByAlias[directDependency.alias] = directDependency;\n  }\n\n  const allDeps = Array.from(\n    new Set(Object.keys(getAllDependenciesFromManifest(newManifest)))\n  );\n\n  for (const alias of allDeps) {\n    const dep = directDependenciesByAlias[alias];\n\n    if (typeof dep === 'undefined') {\n      continue;\n    }\n\n    const spec = getSpecFromPackageManifest(newManifest, dep.alias);\n\n    const specifier = projectSnapshot.specifiers[alias];\n\n    if (\n      excludeLinksFromLockfile !== true ||\n      // dep.isLinkedDependency !== true ||\n      (typeof spec !== 'undefined' && spec.startsWith('workspace:') === true)\n    ) {\n      const ref = depPathToRef(dep.pkgId, {\n        alias: dep.alias,\n        realName: dep.name,\n        // resolution: dep.resolution,\n      });\n\n      const devDeps = newProjectSnapshot.devDependencies;\n      const optionalDeps = newProjectSnapshot.optionalDependencies;\n      const deps = newProjectSnapshot.dependencies;\n\n      if (dep.dev === true) {\n        if (typeof devDeps !== 'undefined') {\n          devDeps[dep.alias] = ref;\n        }\n      } else if (dep.optional === true) {\n        if (typeof optionalDeps !== 'undefined') {\n          optionalDeps[dep.alias] = ref;\n        }\n      } else {\n        if (typeof deps !== 'undefined') {\n          deps[dep.alias] = ref;\n        }\n      }\n\n      if (typeof spec !== 'undefined') {\n        newProjectSnapshot.specifiers[dep.alias] = spec;\n      }\n    } else if (typeof specifier !== 'undefined') {\n      newProjectSnapshot.specifiers[alias] = specifier;\n\n      const pDeps = projectSnapshot.dependencies;\n      const pDevDeps = projectSnapshot.devDependencies;\n      const pOptionalDeps = projectSnapshot.optionalDependencies;\n\n      if (typeof pDeps?.[alias] !== 'undefined') {\n        newProjectSnapshot.dependencies[alias] = pDeps[alias];\n      } else if (typeof pOptionalDeps?.[alias] !== 'undefined') {\n        newProjectSnapshot.optionalDependencies[alias] = pOptionalDeps[alias];\n      } else if (typeof pDevDeps?.[alias] !== 'undefined') {\n        newProjectSnapshot.devDependencies[alias] = pDevDeps[alias];\n      }\n    }\n  }\n\n  alignDependencyTypes(newManifest, newProjectSnapshot);\n\n  return newProjectSnapshot;\n}\n\nfunction alignDependencyTypes(\n  manifest: ProjectManifest,\n  projectSnapshot: ProjectSnapshot\n): void {\n  const depTypesOfAliases = getAliasToDependencyTypeMap(manifest);\n\n  // Aligning the dependency types in pnpm-lock.yaml\n  for (const depType of DEPENDENCIES_FIELDS) {\n    if (projectSnapshot[depType] == null) continue;\n\n    for (const [alias, ref] of Object.entries(projectSnapshot[depType] ?? {})) {\n      const dt = depTypesOfAliases[alias];\n\n      if (\n        depType === dt ||\n        typeof dt === 'undefined' ||\n        typeof projectSnapshot[dt] === 'undefined'\n      ) {\n        continue;\n      }\n\n      projectSnapshot[dt][alias] = ref;\n\n      delete projectSnapshot[depType][alias];\n    }\n  }\n}\n\nfunction getAliasToDependencyTypeMap(\n  manifest: ProjectManifest\n): Record<string, DependenciesField> {\n  const depTypesOfAliases: Record<string, DependenciesField> = {};\n\n  for (const depType of DEPENDENCIES_FIELDS) {\n    if (manifest[depType] == null) {\n      continue;\n    }\n\n    for (const alias of Object.keys(manifest[depType] ?? {})) {\n      if (!depTypesOfAliases[alias]) {\n        depTypesOfAliases[alias] = depType;\n      }\n    }\n  }\n\n  return depTypesOfAliases;\n}\n\nasync function getTopParents(\n  pkgAliases: string[],\n  modulesDir: string\n): Promise<DependencyManifest[]> {\n  const pkgs = await Promise.all(\n    pkgAliases\n      .map((alias) => path.join(modulesDir, alias))\n      .map(safeReadPackageJsonFromDir)\n  );\n\n  return zipWith\n    .default(\n      (\n        manifest,\n        alias\n      ): {\n        alias: string;\n        name: string;\n        version: string;\n      } | null => {\n        if (!manifest) return null;\n        return {\n          alias,\n          name: manifest.name,\n          version: manifest.version,\n        };\n      },\n      pkgs,\n      pkgAliases\n    )\n    .filter(Boolean);\n}\n"],
  "mappings": "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",
  "names": []
}
