{
  "version": 3,
  "sources": ["../../../../src/packages/headless/index.ts"],
  "sourcesContent": ["import { promises as fs } from 'node:fs';\nimport * as path from 'node:path';\nimport { buildModules } from '../build-modules/index.ts';\nimport { createAllowBuildFunction } from '@pnpm/builder.policy';\nimport { calcDepState, type DepsStateCache } from '../calc-dep-state/index.ts';\nimport { LAYOUT_VERSION, WANTED_LOCKFILE } from '../constants/index.ts';\nimport {\n  ignoredScriptsLogger,\n  packageManifestLogger,\n  progressLogger,\n  stageLogger,\n  statsLogger,\n  summaryLogger,\n} from '../core-loggers/index.ts';\nimport {\n  filterLockfileByEngine,\n  filterLockfileByImportersAndEngine,\n} from '../lockfile.filtering/index.ts';\nimport { hoist, type HoistedWorkspaceProject } from '../hoist/index.ts';\nimport {\n  runLifecycleHooksConcurrently,\n  makeNodeRequireOption,\n} from '../lifecycle/index.ts';\nimport { linkBins, linkBinsOfPackages } from '../link-bins/index.ts';\nimport {\n  getLockfileImporterId,\n  readCurrentLockfile,\n  readWantedLockfile,\n  writeLockfiles,\n  writeCurrentLockfile,\n} from '../lockfile.fs/index.ts';\nimport { writePnpFile } from '../lockfile-to-pnp/index.ts';\nimport {\n  extendProjectsWithTargetDirs,\n  nameVerFromPkgSnapshot,\n} from '../lockfile.utils/index.ts';\nimport { type LogBase, logger, streamParser } from '../logger/index.ts';\nimport { prune } from '../modules-cleaner/index.ts';\nimport {\n  type IncludedDependencies,\n  type Modules,\n  writeModulesManifest,\n} from '../modules-yaml/index.ts';\nimport type { HoistingLimits } from '../real-hoist/index.ts';\nimport { readPackageJsonFromDir } from '../read-package-json/index.ts';\nimport {\n  readProjectManifestOnly,\n  safeReadProjectManifestOnly,\n} from '../read-project-manifest/index.ts';\nimport type {\n  StoreController,\n  PackageResponse,\n} from '../store-controller-types/index.ts';\nimport { symlinkDependency } from '../symlink-dependency/index.ts';\nimport {\n  type DepPath,\n  type DependencyManifest,\n  type HoistedDependencies,\n  type ProjectId,\n  type ProjectManifest,\n  type Registries,\n  DEPENDENCIES_FIELDS,\n  type SupportedArchitectures,\n  type ProjectRootDir,\n  type GlobalPkgDir,\n  type ProjectRootDirRealPath,\n  type LockFileDir,\n  type WorkspaceDir,\n  type ModulesDir,\n} from '../types/index.ts';\nimport * as dp from '../dependency-path/index.ts';\nimport { symlinkAllModules } from '../worker/index.ts';\nimport pLimit from 'p-limit';\nimport pathAbsolute from 'path-absolute';\nimport equals from 'ramda/src/equals';\nimport isEmpty from 'ramda/src/isEmpty';\nimport omit from 'ramda/src/omit';\nimport pick from 'ramda/src/pick';\nimport pickBy from 'ramda/src/pickBy';\nimport props from 'ramda/src/props';\nimport union from 'ramda/src/union';\nimport realpathMissing from 'realpath-missing';\nimport { linkHoistedModules } from './linkHoistedModules.ts';\nimport {\n  type DirectDependenciesByImporterId,\n  type DependenciesGraph,\n  type DependenciesGraphNode,\n  lockfileToDepGraph,\n  type LockfileToDepGraphOptions,\n} from '../deps.graph-builder/index.ts';\nimport {\n  lockfileToHoistedDepGraph,\n  type LockfileToHoistedDepGraphOptions,\n} from './lockfileToHoistedDepGraph.ts';\nimport {\n  linkDirectDeps,\n  type LinkedDirectDep,\n} from '../pkg-manager.direct-dep-linker/index.ts';\nimport type { PackageFilesResponse } from '../cafs-types/index.ts';\nimport type { LockfileObject } from '../lockfile.types/index.ts';\nimport type { ProjectOptions, HookOptions } from '../get-context/index.ts';\nimport type { PatchGroupRecord } from '../patching.types/index.ts';\n\nexport type { HoistingLimits };\n\nexport type ReporterFunction = (logObj: LogBase) => void;\n\nexport type Project = {\n  binsDir: string;\n  buildIndex: number;\n  manifest: ProjectManifest;\n  modulesDir: ModulesDir;\n  id: ProjectId;\n  pruneDirectDependencies?: boolean | undefined;\n  rootDir: ProjectRootDir | ProjectRootDirRealPath | GlobalPkgDir;\n};\n\nexport type HeadlessOptions = {\n  neverBuiltDependencies?: string[] | undefined;\n  ignoredBuiltDependencies?: string[] | undefined;\n  onlyBuiltDependencies?: string[] | undefined;\n  onlyBuiltDependenciesFile?: string | undefined;\n  autoInstallPeers: boolean;\n  childConcurrency?: number | undefined;\n  currentLockfile?: LockfileObject | undefined;\n  currentEngine: {\n    nodeVersion?: string | undefined;\n    pnpmVersion?: string | undefined;\n  };\n  dedupeDirectDeps?: boolean | undefined;\n  enablePnp?: boolean | undefined;\n  engineStrict: boolean;\n  excludeLinksFromLockfile?: boolean | undefined;\n  extraBinPaths?: string[] | undefined;\n  extraEnv?: Record<string, string> | undefined;\n  extraNodePaths?: string[] | undefined;\n  preferSymlinkedExecutables?: boolean | undefined;\n  hoistingLimits: HoistingLimits;\n  externalDependencies?: Set<string> | undefined;\n  ignoreDepScripts: boolean;\n  ignoreScripts: boolean;\n  ignorePackageManifest?: boolean | undefined;\n  include: IncludedDependencies;\n  selectedProjectDirs: string[];\n  allProjects: Record<\n    string,\n    ProjectOptions &\n      HookOptions & {\n        binsDir: string;\n      }\n  >;\n  prunedAt?: string | undefined;\n  hoistedDependencies: HoistedDependencies;\n  hoistPattern?: string[] | undefined;\n  publicHoistPattern?: string[] | undefined;\n  currentHoistedLocations?: Record<string, string[]> | undefined;\n  lockfileDir: LockFileDir;\n  modulesDir: ModulesDir;\n  virtualStoreDir?: string | undefined;\n  virtualStoreDirMaxLength: number;\n  patchedDependencies?: PatchGroupRecord | undefined;\n  scriptsPrependNodePath?: boolean | 'warn-only' | undefined;\n  scriptShell?: string | undefined;\n  shellEmulator?: boolean | undefined;\n  storeController: StoreController<\n    PackageResponse,\n    PackageResponse,\n    {\n      importMethod?: string | undefined;\n      isBuilt: boolean;\n    }\n  >;\n  sideEffectsCacheRead: boolean;\n  sideEffectsCacheWrite: boolean;\n  symlink?: boolean | undefined;\n  disableRelinkLocalDirDeps?: boolean | undefined;\n  force: boolean;\n  storeDir: string;\n  rawConfig: object;\n  unsafePerm: boolean;\n  userAgent: string;\n  registries: Registries;\n  reporter?: ReporterFunction | undefined;\n  packageManager: {\n    name: string;\n    version: string;\n  };\n  pruneStore: boolean;\n  pruneVirtualStore?: boolean | undefined;\n  wantedLockfile?: LockfileObject | undefined;\n  ownLifecycleHooksStdio: 'inherit' | 'pipe';\n  pendingBuilds: string[];\n  resolveSymlinksInInjectedDirs?: boolean | undefined;\n  skipped?: Set<DepPath> | undefined;\n  enableModulesDir?: boolean | undefined;\n  nodeLinker?: 'isolated' | 'hoisted' | 'pnp' | undefined;\n  useGitBranchLockfile?: boolean | undefined;\n  useLockfile?: boolean | undefined;\n  supportedArchitectures?: SupportedArchitectures | undefined;\n  hoistWorkspacePackages?: boolean | undefined;\n  modulesFile?: Modules | null | undefined;\n};\n\nexport type InstallationResultStats = {\n  added: number;\n  removed: number;\n  linkedToRoot: number;\n};\n\nexport type InstallationResult = {\n  stats: InstallationResultStats;\n  ignoredBuilds: string[] | undefined;\n};\n\nexport async function headlessInstall(\n  opts: HeadlessOptions\n): Promise<InstallationResult> {\n  const reporter = opts.reporter;\n\n  if (reporter != null && typeof reporter === 'function') {\n    streamParser.on('data', reporter);\n  }\n\n  const lockfileDir = opts.lockfileDir;\n\n  const wantedLockfile =\n    opts.wantedLockfile ??\n    (await readWantedLockfile(lockfileDir, {\n      ignoreIncompatible: false,\n      useGitBranchLockfile: opts.useGitBranchLockfile,\n      // mergeGitBranchLockfiles is intentionally not supported in headless\n      mergeGitBranchLockfiles: false,\n    }));\n\n  if (wantedLockfile == null) {\n    throw new Error(`Headless installation requires a ${WANTED_LOCKFILE} file`);\n  }\n\n  const depsStateCache: DepsStateCache = {};\n\n  const relativeModulesDir = opts.modulesDir;\n\n  const rootModulesDir = (await realpathMissing(\n    path.join(lockfileDir, relativeModulesDir)\n  )) as ModulesDir;\n\n  const virtualStoreDir = pathAbsolute(\n    opts.virtualStoreDir ?? path.join(relativeModulesDir, '.pnpm'),\n    lockfileDir\n  );\n\n  const currentLockfile =\n    opts.currentLockfile ??\n    (await readCurrentLockfile(virtualStoreDir, { ignoreIncompatible: false }));\n\n  const hoistedModulesDir = path.join(\n    virtualStoreDir,\n    'node_modules'\n  ) as ModulesDir;\n\n  const publicHoistedModulesDir = rootModulesDir;\n\n  const selectedProjects = Object.values(\n    pick.default(opts.selectedProjectDirs, opts.allProjects)\n  );\n\n  const scriptsOpts = {\n    optional: false,\n    extraBinPaths: opts.extraBinPaths,\n    extraNodePaths: opts.extraNodePaths,\n    preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n    extraEnv: opts.extraEnv,\n    rawConfig: opts.rawConfig,\n    resolveSymlinksInInjectedDirs: opts.resolveSymlinksInInjectedDirs,\n    scriptsPrependNodePath: opts.scriptsPrependNodePath,\n    scriptShell: opts.scriptShell,\n    shellEmulator: opts.shellEmulator,\n    stdio: opts.ownLifecycleHooksStdio,\n    storeController: opts.storeController,\n    unsafePerm: opts.unsafePerm || false,\n  };\n\n  const skipped = opts.skipped || new Set<DepPath>();\n\n  const filterOpts = {\n    include: opts.include,\n    registries: opts.registries,\n    skipped,\n    currentEngine: opts.currentEngine,\n    engineStrict: opts.engineStrict,\n    failOnMissingDependencies: true,\n    includeIncompatiblePackages: opts.force,\n    lockfileDir,\n    supportedArchitectures: opts.supportedArchitectures,\n  };\n\n  let removed = 0;\n\n  if (opts.nodeLinker !== 'hoisted') {\n    if (currentLockfile != null && opts.ignorePackageManifest !== true) {\n      const removedDepPaths = await prune(selectedProjects, {\n        currentLockfile,\n        dedupeDirectDeps: opts.dedupeDirectDeps,\n        dryRun: false,\n        hoistedDependencies: opts.hoistedDependencies,\n        hoistedModulesDir:\n          opts.hoistPattern == null ? undefined : hoistedModulesDir,\n        include: opts.include,\n        lockfileDir,\n        pruneStore: opts.pruneStore,\n        pruneVirtualStore: opts.pruneVirtualStore,\n        publicHoistedModulesDir:\n          typeof opts.publicHoistPattern === 'undefined'\n            ? undefined\n            : publicHoistedModulesDir,\n        skipped,\n        storeController: opts.storeController,\n        virtualStoreDir,\n        virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n        wantedLockfile: (\n          await filterLockfileByEngine(wantedLockfile, filterOpts)\n        ).lockfile,\n      });\n\n      removed = removedDepPaths.size;\n    } else {\n      statsLogger.debug({\n        prefix: lockfileDir,\n        removed: 0,\n      });\n    }\n  }\n\n  stageLogger.debug({\n    prefix: lockfileDir,\n    stage: 'importing_started',\n  });\n\n  const initialImporterIds =\n    opts.ignorePackageManifest === true || opts.nodeLinker === 'hoisted'\n      ? (Object.keys(wantedLockfile.importers ?? {}) as ProjectId[])\n      : selectedProjects.map(\n          ({\n            id,\n          }: ProjectOptions &\n            HookOptions & {\n              binsDir: string;\n            }): ProjectId => {\n            return id;\n          }\n        );\n\n  const { lockfile: filteredLockfile, selectedImporterIds: importerIds } =\n    await filterLockfileByImportersAndEngine(\n      wantedLockfile,\n      initialImporterIds,\n      filterOpts\n    );\n\n  if (opts.excludeLinksFromLockfile === true) {\n    for (const { id, manifest, rootDir } of selectedProjects) {\n      if (filteredLockfile.importers?.[id]) {\n        for (const depType of DEPENDENCIES_FIELDS) {\n          filteredLockfile.importers[id][depType] = {\n            ...filteredLockfile.importers[id][depType],\n            ...Object.entries(manifest?.[depType] ?? {})\n              .filter(([_, spec]: [string, string]): boolean => {\n                return spec.startsWith('link:');\n              })\n              .reduce(\n                (\n                  acc: Record<string, string>,\n                  [depName, spec]: [string, string]\n                ): Record<string, string> => {\n                  const linkPath = spec.substring(5);\n                  acc[depName] = path.isAbsolute(linkPath)\n                    ? `link:${path.relative(rootDir, spec.substring(5))}`\n                    : spec;\n                  return acc;\n                },\n                {}\n              ),\n          };\n        }\n      }\n    }\n  }\n\n  // Update selectedProjects to add missing projects. importerIds will have the updated ids, found from deeply linked workspace projects\n  const initialImporterIdSet = new Set(initialImporterIds);\n\n  const missingIds = importerIds.filter(\n    (importerId: string | ProjectId): boolean => {\n      return !initialImporterIdSet.has(importerId);\n    }\n  );\n\n  if (missingIds.length > 0) {\n    for (const project of Object.values(opts.allProjects)) {\n      if (missingIds.includes(project.id) === true) {\n        selectedProjects.push(project);\n      }\n    }\n  }\n\n  // const lockfileToDepGraphOpts: LockfileToDepGraphOptions = {\n  //   ...opts,\n  //   importerIds,\n  //   lockfileDir,\n  //   skipped,\n  //   virtualStoreDir,\n  //   nodeVersion: opts.currentEngine.nodeVersion,\n  //   pnpmVersion: opts.currentEngine.pnpmVersion,\n  //   supportedArchitectures: opts.supportedArchitectures,\n  // };\n\n  function warn(message: string): void {\n    logger.info({\n      message,\n      prefix: lockfileDir,\n    });\n  }\n\n  let newHoistedDependencies: HoistedDependencies | undefined;\n\n  let linkedToRoot = 0;\n\n  if (opts.nodeLinker === 'hoisted') {\n    const lockfileToDepGraphOpts: LockfileToHoistedDepGraphOptions = {\n      ...opts,\n      importerIds,\n      lockfileDir,\n      skipped,\n      virtualStoreDir,\n      nodeVersion: opts.currentEngine.nodeVersion,\n      pnpmVersion: opts.currentEngine.pnpmVersion,\n      supportedArchitectures: opts.supportedArchitectures,\n    } satisfies LockfileToHoistedDepGraphOptions;\n\n    const {\n      directDependenciesByImporterId,\n      graph,\n      hierarchy,\n      prevGraph,\n      pkgLocationsByDepPath,\n      symlinkedDirectDependenciesByImporterId,\n    } = await lockfileToHoistedDepGraph(\n      filteredLockfile,\n      currentLockfile,\n      lockfileToDepGraphOpts\n    );\n\n    if (opts.enablePnp === true) {\n      const importerNames = Object.fromEntries(\n        selectedProjects.map(\n          ({\n            manifest,\n            id,\n          }: ProjectOptions &\n            HookOptions & {\n              binsDir: string;\n            }): [ProjectId, string] => {\n            return [id, manifest?.name ?? id];\n          }\n        )\n      );\n\n      await writePnpFile(filteredLockfile, {\n        importerNames,\n        lockfileDir,\n        virtualStoreDir,\n        virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n        registries: opts.registries,\n      });\n    }\n\n    const depNodes = Object.values(graph);\n\n    const added = depNodes.filter(\n      ({ fetching }: DependenciesGraphNode): boolean => {\n        return typeof fetching === 'function';\n      }\n    ).length;\n\n    statsLogger.debug({\n      added,\n      prefix: lockfileDir,\n    });\n\n    const allowBuild = createAllowBuildFunction({\n      neverBuiltDependencies: opts.neverBuiltDependencies as string[],\n      onlyBuiltDependencies: opts.onlyBuiltDependencies as string[],\n      onlyBuiltDependenciesFile: opts.onlyBuiltDependenciesFile as string,\n    });\n\n    if (hierarchy && prevGraph) {\n      await linkHoistedModules(\n        opts.storeController,\n        graph,\n        prevGraph,\n        hierarchy,\n        {\n          allowBuild,\n          depsStateCache,\n          disableRelinkLocalDirDeps: opts.disableRelinkLocalDirDeps,\n          force: opts.force,\n          ignoreScripts: opts.ignoreScripts,\n          lockfileDir: opts.lockfileDir,\n          preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n          sideEffectsCacheRead: opts.sideEffectsCacheRead,\n        }\n      );\n\n      stageLogger.debug({\n        prefix: lockfileDir,\n        stage: 'importing_done',\n      });\n\n      linkedToRoot = await symlinkDirectDependencies({\n        directDependenciesByImporterId: symlinkedDirectDependenciesByImporterId,\n        dedupe: Boolean(opts.dedupeDirectDeps),\n        filteredLockfile,\n        lockfileDir,\n        projects: selectedProjects,\n        registries: opts.registries,\n        symlink: opts.symlink,\n      });\n    }\n\n    if (opts.ignoreScripts === true) {\n      for (const { id, manifest } of selectedProjects) {\n        if (\n          manifest?.scripts != null &&\n          (typeof manifest.scripts.preinstall === 'string' ||\n            typeof manifest.scripts.prepublish === 'string' ||\n            typeof manifest.scripts.install === 'string' ||\n            typeof manifest.scripts.postinstall === 'string' ||\n            typeof manifest.scripts.prepare === 'string')\n        ) {\n          opts.pendingBuilds.push(id);\n        }\n      }\n\n      // we can use concat here because we always only append new packages, which are guaranteed to not be there by definition\n      opts.pendingBuilds = opts.pendingBuilds.concat(\n        depNodes\n          .filter(({ requiresBuild }: DependenciesGraphNode): boolean => {\n            return requiresBuild === true;\n          })\n          .map(({ depPath }: DependenciesGraphNode): string => {\n            return depPath;\n          })\n      );\n    }\n\n    let ignoredBuilds: string[] | undefined;\n\n    if (\n      (opts.ignoreScripts !== true ||\n        Object.keys(opts.patchedDependencies ?? {}).length > 0) &&\n      opts.enableModulesDir !== false\n    ) {\n      const directNodes = new Set<string>();\n\n      for (const id of union.default(importerIds, ['.'])) {\n        const directDependencies = directDependenciesByImporterId[id];\n\n        if (typeof directDependencies === 'undefined') {\n          continue;\n        }\n\n        for (const alias in directDependencies) {\n          const loc = directDependencies[alias];\n\n          if (typeof loc === 'undefined') {\n            continue;\n          }\n\n          if (!graph[loc]) {\n            continue;\n          }\n\n          directNodes.add(loc);\n        }\n      }\n\n      const extraBinPaths = [...(opts.extraBinPaths ?? [])];\n\n      if (opts.hoistPattern != null) {\n        extraBinPaths.unshift(path.join(virtualStoreDir, 'node_modules/.bin'));\n      }\n\n      let extraEnv: Record<string, string> | undefined = opts.extraEnv;\n\n      if (opts.enablePnp === true) {\n        extraEnv = {\n          ...extraEnv,\n          ...makeNodeRequireOption(path.join(opts.lockfileDir, '.pnp.cjs')),\n        };\n      }\n\n      ignoredBuilds = (\n        await buildModules(graph, Array.from(directNodes), {\n          allowBuild,\n          ignoredBuiltDependencies: opts.ignoredBuiltDependencies,\n          childConcurrency: opts.childConcurrency,\n          extraBinPaths,\n          extraEnv,\n          depsStateCache,\n          ignoreScripts: opts.ignoreScripts || opts.ignoreDepScripts,\n          hoistedLocations: undefined,\n          lockfileDir,\n          optional: opts.include.optionalDependencies,\n          preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n          rawConfig: opts.rawConfig,\n          rootModulesDir: virtualStoreDir,\n          scriptsPrependNodePath: opts.scriptsPrependNodePath,\n          scriptShell: opts.scriptShell,\n          shellEmulator: opts.shellEmulator,\n          sideEffectsCacheWrite: opts.sideEffectsCacheWrite,\n          storeController: opts.storeController,\n          unsafePerm: opts.unsafePerm,\n          userAgent: opts.userAgent,\n        })\n      ).ignoredBuilds;\n\n      if (\n        typeof ignoredBuilds === 'undefined' &&\n        typeof opts.modulesFile?.ignoredBuilds?.length === 'number'\n      ) {\n        ignoredBuilds = opts.modulesFile.ignoredBuilds;\n\n        ignoredScriptsLogger.debug({ packageNames: ignoredBuilds });\n      }\n    }\n\n    const projectsToBeBuilt = extendProjectsWithTargetDirs(\n      selectedProjects,\n      wantedLockfile,\n      {\n        pkgLocationsByDepPath,\n        virtualStoreDir,\n        virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n      }\n    );\n\n    if (opts.enableModulesDir !== false) {\n      const rootProjectDeps =\n        opts.dedupeDirectDeps === true\n          ? (directDependenciesByImporterId['.'] ?? {})\n          : {};\n\n      /** Skip linking and due to no project manifest */\n      if (opts.ignorePackageManifest !== true) {\n        await Promise.all(\n          selectedProjects.map(\n            async (\n              project: ProjectOptions &\n                HookOptions & {\n                  binsDir: string;\n                }\n            ): Promise<void> => {\n              if (\n                opts.nodeLinker === 'hoisted' ||\n                (typeof opts.publicHoistPattern?.length === 'number' &&\n                  path.relative(opts.lockfileDir, project.rootDir) === '')\n              ) {\n                await linkBinsOfImporter(project, {\n                  extraNodePaths: opts.extraNodePaths,\n                  preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n                });\n\n                return;\n              }\n\n              let directPkgDirs: string[];\n\n              if (project.id === '.') {\n                directPkgDirs = Object.values(\n                  directDependenciesByImporterId[project.id] ?? {}\n                );\n              } else {\n                directPkgDirs = [];\n\n                for (const [alias, dir] of Object.entries(\n                  directDependenciesByImporterId[project.id] ?? {}\n                )) {\n                  if (rootProjectDeps[alias] !== dir) {\n                    directPkgDirs.push(dir);\n                  }\n                }\n              }\n\n              await linkBinsOfPackages(\n                (\n                  await Promise.all(\n                    directPkgDirs.map(\n                      async (\n                        dir: string\n                      ): Promise<{\n                        location: string;\n                        manifest: ProjectManifest | null;\n                      }> => ({\n                        location: dir,\n                        manifest: await safeReadProjectManifestOnly(dir),\n                      })\n                    )\n                  )\n                ).filter(\n                  ({\n                    manifest,\n                  }: {\n                    location: string;\n                    manifest: ProjectManifest | null;\n                  }): boolean => {\n                    return manifest != null;\n                  }\n                ) as Array<{\n                  location: string;\n                  manifest: DependencyManifest;\n                }>,\n                project.binsDir,\n                {\n                  extraNodePaths: opts.extraNodePaths,\n                  preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n                }\n              );\n            }\n          )\n        );\n      }\n\n      const injectedDeps: Record<string, string[]> = {};\n\n      for (const project of projectsToBeBuilt) {\n        if (project.targetDirs.length > 0) {\n          injectedDeps[project.id] = project.targetDirs.map(\n            (targetDir: string): string => {\n              return path.relative(opts.lockfileDir, targetDir);\n            }\n          );\n        }\n      }\n\n      await writeModulesManifest(\n        rootModulesDir,\n        {\n          hoistedDependencies: newHoistedDependencies ?? {},\n          hoistPattern: opts.hoistPattern,\n          included: opts.include,\n          injectedDeps,\n          ignoredBuilds,\n          layoutVersion: LAYOUT_VERSION,\n          hoistedLocations: undefined,\n          nodeLinker: opts.nodeLinker,\n          packageManager: `${opts.packageManager.name}@${opts.packageManager.version}`,\n          pendingBuilds: opts.pendingBuilds,\n          publicHoistPattern: opts.publicHoistPattern,\n          prunedAt:\n            opts.pruneVirtualStore === true || opts.prunedAt == null\n              ? new Date().toUTCString()\n              : opts.prunedAt,\n          registries: opts.registries,\n          skipped: Array.from(skipped),\n          storeDir: opts.storeDir,\n          virtualStoreDir,\n          virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n        },\n        {\n          makeModulesDir:\n            Object.keys(filteredLockfile.packages ?? {}).length > 0,\n        }\n      );\n\n      if (opts.useLockfile === true) {\n        // We need to write the wanted lockfile as well.\n        // Even though it will only be changed if the workspace will have new projects with no dependencies.\n        await writeLockfiles({\n          wantedLockfileDir: opts.lockfileDir,\n          currentLockfileDir: virtualStoreDir,\n          wantedLockfile,\n          currentLockfile: filteredLockfile,\n        });\n      } else {\n        await writeCurrentLockfile(virtualStoreDir, filteredLockfile);\n      }\n    }\n\n    // waiting till package requests are finished\n    await Promise.all(\n      depNodes.map(async ({ fetching }) => {\n        try {\n          await fetching?.();\n        } catch {}\n      })\n    );\n\n    summaryLogger.debug({ prefix: lockfileDir });\n\n    await opts.storeController.close();\n\n    if (!opts.ignoreScripts && opts.ignorePackageManifest !== true) {\n      await runLifecycleHooksConcurrently(\n        [\n          'preinstall',\n          'install',\n          'postinstall',\n          'preprepare',\n          'prepare',\n          'postprepare',\n        ],\n        projectsToBeBuilt,\n        opts.childConcurrency ?? 5,\n        scriptsOpts\n      );\n    }\n\n    if (reporter != null && typeof reporter === 'function') {\n      streamParser.removeListener('data', reporter);\n    }\n\n    return {\n      stats: {\n        added,\n        removed,\n        linkedToRoot,\n      },\n      ignoredBuilds,\n    };\n  }\n\n  const lockfileToDepGraphOpts: LockfileToDepGraphOptions = {\n    ...opts,\n    importerIds,\n    lockfileDir,\n    skipped,\n    virtualStoreDir,\n    nodeVersion: opts.currentEngine.nodeVersion,\n    pnpmVersion: opts.currentEngine.pnpmVersion,\n    supportedArchitectures: opts.supportedArchitectures,\n  } satisfies LockfileToDepGraphOptions;\n\n  const {\n    directDependenciesByImporterId,\n    graph,\n    // hierarchy,\n    // hoistedLocations,\n    // pkgLocationsByDepPath,\n    // prevGraph,\n    // symlinkedDirectDependenciesByImporterId,\n  } = await lockfileToDepGraph(\n    filteredLockfile,\n    opts.force ? null : currentLockfile,\n    lockfileToDepGraphOpts\n  );\n\n  if (opts.enablePnp === true) {\n    const importerNames = Object.fromEntries(\n      selectedProjects.map(\n        ({\n          manifest,\n          id,\n        }: ProjectOptions &\n          HookOptions & {\n            binsDir: string;\n          }): [ProjectId, string] => {\n          return [id, manifest?.name ?? id];\n        }\n      )\n    );\n\n    await writePnpFile(filteredLockfile, {\n      importerNames,\n      lockfileDir,\n      virtualStoreDir,\n      virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n      registries: opts.registries,\n    });\n  }\n\n  const depNodes = Object.values(graph);\n\n  const added = depNodes.filter(\n    ({ fetching }: DependenciesGraphNode): boolean => {\n      return typeof fetching === 'function';\n    }\n  ).length;\n\n  statsLogger.debug({\n    added,\n    prefix: lockfileDir,\n  });\n\n  const allowBuild = createAllowBuildFunction({\n    neverBuiltDependencies: opts.neverBuiltDependencies as string[],\n    onlyBuiltDependencies: opts.onlyBuiltDependencies as string[],\n    onlyBuiltDependenciesFile: opts.onlyBuiltDependenciesFile as string,\n  });\n\n  if (opts.enableModulesDir !== false) {\n    await Promise.all(\n      depNodes.map(\n        async (depNode: DependenciesGraphNode): Promise<string | undefined> => {\n          return fs.mkdir(depNode.modules, { recursive: true });\n        }\n      )\n    );\n\n    await Promise.all([\n      opts.symlink === false\n        ? Promise.resolve()\n        : linkAllModules(depNodes, {\n            optional: opts.include.optionalDependencies,\n          }),\n      linkAllPkgs(opts.storeController, depNodes, {\n        allowBuild,\n        force: opts.force,\n        disableRelinkLocalDirDeps: opts.disableRelinkLocalDirDeps,\n        depGraph: graph,\n        depsStateCache,\n        ignoreScripts: opts.ignoreScripts,\n        lockfileDir: opts.lockfileDir,\n        sideEffectsCacheRead: opts.sideEffectsCacheRead,\n      }),\n    ]);\n\n    stageLogger.debug({\n      prefix: lockfileDir,\n      stage: 'importing_done',\n    });\n\n    if (\n      opts.ignorePackageManifest !== true &&\n      (opts.hoistPattern != null || opts.publicHoistPattern != null)\n    ) {\n      // It is important to keep the skipped packages in the lockfile which will be saved as the \"current lockfile\".\n      // pnpm is comparing the current lockfile to the wanted one and they should match.\n      // But for hoisting, we need a version of the lockfile w/o the skipped packages, so we're making a copy.\n      const hoistLockfile = {\n        ...filteredLockfile,\n        packages:\n          typeof filteredLockfile.packages === 'undefined'\n            ? {}\n            : omit.default(Array.from(skipped), filteredLockfile.packages),\n      };\n\n      newHoistedDependencies = await hoist({\n        extraNodePath: opts.extraNodePaths,\n        lockfile: hoistLockfile,\n        importerIds,\n        preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n        privateHoistedModulesDir: hoistedModulesDir,\n        privateHoistPattern: opts.hoistPattern ?? [],\n        publicHoistedModulesDir,\n        publicHoistPattern: opts.publicHoistPattern ?? [],\n        virtualStoreDir,\n        virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n        hoistedWorkspacePackages:\n          opts.hoistWorkspacePackages === true\n            ? Object.values(opts.allProjects).reduce(\n                (\n                  hoistedWorkspacePackages: Record<\n                    string,\n                    HoistedWorkspaceProject\n                  >,\n                  project: ProjectOptions &\n                    HookOptions & {\n                      binsDir: string;\n                    }\n                ): Record<string, HoistedWorkspaceProject> => {\n                  if (\n                    typeof project.manifest?.name === 'string' &&\n                    project.id !== '.'\n                  ) {\n                    hoistedWorkspacePackages[project.id] = {\n                      dir: project.rootDir,\n                      name: project.manifest.name,\n                    };\n                  }\n                  return hoistedWorkspacePackages;\n                },\n                {} as Record<string, HoistedWorkspaceProject>\n              )\n            : undefined,\n      });\n    } else {\n      newHoistedDependencies = {};\n    }\n\n    await linkAllBins(graph, {\n      extraNodePaths: opts.extraNodePaths,\n      optional: opts.include.optionalDependencies,\n      preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n      warn,\n    });\n\n    if (\n      currentLockfile !== null &&\n      !equals.default(\n        importerIds.sort(),\n        Object.keys(filteredLockfile.importers ?? {}).sort()\n      )\n    ) {\n      Object.assign(filteredLockfile.packages ?? {}, currentLockfile.packages);\n    }\n\n    /** Skip linking and due to no project manifest */\n    if (opts.ignorePackageManifest !== true) {\n      linkedToRoot = await symlinkDirectDependencies({\n        dedupe: Boolean(opts.dedupeDirectDeps),\n        directDependenciesByImporterId,\n        filteredLockfile,\n        lockfileDir,\n        projects: selectedProjects,\n        registries: opts.registries,\n        symlink: opts.symlink,\n      });\n    }\n  }\n\n  if (opts.ignoreScripts === true) {\n    for (const { id, manifest } of selectedProjects) {\n      if (\n        typeof manifest?.scripts !== 'undefined' &&\n        (typeof manifest.scripts.preinstall === 'string' ||\n          typeof manifest.scripts.prepublish === 'string' ||\n          typeof manifest.scripts.install === 'string' ||\n          typeof manifest.scripts.postinstall === 'string' ||\n          typeof manifest.scripts.prepare === 'string')\n      ) {\n        opts.pendingBuilds.push(id);\n      }\n    }\n\n    // we can use concat here because we always only append new packages, which are guaranteed to not be there by definition\n    opts.pendingBuilds = opts.pendingBuilds.concat(\n      depNodes\n        .filter(({ requiresBuild }: DependenciesGraphNode): boolean => {\n          return requiresBuild === true;\n        })\n        .map(({ depPath }: DependenciesGraphNode): string => {\n          return depPath;\n        })\n    );\n  }\n\n  let ignoredBuilds: string[] | undefined;\n\n  if (\n    (!opts.ignoreScripts ||\n      Object.keys(opts.patchedDependencies ?? {}).length > 0) &&\n    opts.enableModulesDir !== false\n  ) {\n    const directNodes = new Set<string>();\n\n    for (const id of union.default(importerIds, ['.'])) {\n      const directDependencies = directDependenciesByImporterId[id];\n\n      for (const alias in directDependencies) {\n        const loc = directDependencies[alias];\n\n        if (typeof loc === 'undefined') {\n          continue;\n        }\n\n        if (!graph[loc]) {\n          continue;\n        }\n\n        directNodes.add(loc);\n      }\n    }\n\n    const extraBinPaths = [...(opts.extraBinPaths ?? [])];\n\n    if (opts.hoistPattern != null) {\n      extraBinPaths.unshift(path.join(virtualStoreDir, 'node_modules/.bin'));\n    }\n\n    let extraEnv: Record<string, string> | undefined = opts.extraEnv;\n\n    if (opts.enablePnp === true) {\n      extraEnv = {\n        ...extraEnv,\n        ...makeNodeRequireOption(path.join(opts.lockfileDir, '.pnp.cjs')),\n      };\n    }\n\n    ignoredBuilds = (\n      await buildModules(graph, Array.from(directNodes), {\n        allowBuild,\n        ignoredBuiltDependencies: opts.ignoredBuiltDependencies,\n        childConcurrency: opts.childConcurrency,\n        extraBinPaths,\n        extraEnv,\n        depsStateCache,\n        ignoreScripts: opts.ignoreScripts || opts.ignoreDepScripts,\n        hoistedLocations: undefined,\n        lockfileDir,\n        optional: opts.include.optionalDependencies,\n        preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n        rawConfig: opts.rawConfig,\n        rootModulesDir: virtualStoreDir,\n        scriptsPrependNodePath: opts.scriptsPrependNodePath,\n        scriptShell: opts.scriptShell,\n        shellEmulator: opts.shellEmulator,\n        sideEffectsCacheWrite: opts.sideEffectsCacheWrite,\n        storeController: opts.storeController,\n        unsafePerm: opts.unsafePerm,\n        userAgent: opts.userAgent,\n      })\n    ).ignoredBuilds;\n\n    if (\n      typeof ignoredBuilds === 'undefined' &&\n      typeof opts.modulesFile?.ignoredBuilds?.length === 'number'\n    ) {\n      ignoredBuilds = opts.modulesFile.ignoredBuilds;\n\n      ignoredScriptsLogger.debug({ packageNames: ignoredBuilds });\n    }\n  }\n\n  const projectsToBeBuilt = extendProjectsWithTargetDirs(\n    selectedProjects,\n    wantedLockfile,\n    {\n      pkgLocationsByDepPath: {},\n      virtualStoreDir,\n      virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n    }\n  );\n\n  if (opts.enableModulesDir !== false) {\n    const rootProjectDeps =\n      opts.dedupeDirectDeps === true\n        ? (directDependenciesByImporterId['.'] ?? {})\n        : {};\n    /** Skip linking and due to no project manifest */\n    if (opts.ignorePackageManifest !== true) {\n      await Promise.all(\n        selectedProjects.map(async (project) => {\n          if (\n            opts.nodeLinker === 'hoisted' ||\n            (typeof opts.publicHoistPattern?.length === 'number' &&\n              path.relative(opts.lockfileDir, project.rootDir) === '')\n          ) {\n            await linkBinsOfImporter(project, {\n              extraNodePaths: opts.extraNodePaths,\n              preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n            });\n          } else {\n            let directPkgDirs: string[];\n\n            if (project.id === '.') {\n              directPkgDirs = Object.values(\n                directDependenciesByImporterId[project.id] ?? {}\n              );\n            } else {\n              directPkgDirs = [];\n\n              for (const [alias, dir] of Object.entries(\n                directDependenciesByImporterId[project.id] ?? {}\n              )) {\n                if (rootProjectDeps[alias] !== dir) {\n                  directPkgDirs.push(dir);\n                }\n              }\n            }\n\n            await linkBinsOfPackages(\n              (\n                await Promise.all(\n                  directPkgDirs.map(async (dir) => ({\n                    location: dir,\n                    manifest: await safeReadProjectManifestOnly(dir),\n                  }))\n                )\n              ).filter(\n                ({\n                  manifest,\n                }: {\n                  location: string;\n                  manifest: ProjectManifest | null;\n                }): boolean => {\n                  return manifest != null;\n                }\n              ) as Array<{\n                location: string;\n                manifest: DependencyManifest;\n              }>,\n              project.binsDir,\n              {\n                extraNodePaths: opts.extraNodePaths,\n                preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n              }\n            );\n          }\n        })\n      );\n    }\n    const injectedDeps: Record<string, string[]> = {};\n\n    for (const project of projectsToBeBuilt) {\n      if (project.targetDirs.length > 0) {\n        injectedDeps[project.id] = project.targetDirs.map(\n          (targetDir: string): string => {\n            return path.relative(opts.lockfileDir, targetDir);\n          }\n        );\n      }\n    }\n\n    await writeModulesManifest(\n      rootModulesDir,\n      {\n        hoistedDependencies: newHoistedDependencies ?? {},\n        hoistPattern: opts.hoistPattern,\n        included: opts.include,\n        injectedDeps,\n        ignoredBuilds,\n        layoutVersion: LAYOUT_VERSION,\n        hoistedLocations: undefined,\n        nodeLinker: opts.nodeLinker,\n        packageManager: `${opts.packageManager.name}@${opts.packageManager.version}`,\n        pendingBuilds: opts.pendingBuilds,\n        publicHoistPattern: opts.publicHoistPattern,\n        prunedAt:\n          opts.pruneVirtualStore === true || opts.prunedAt == null\n            ? new Date().toUTCString()\n            : opts.prunedAt,\n        registries: opts.registries,\n        skipped: Array.from(skipped),\n        storeDir: opts.storeDir,\n        virtualStoreDir,\n        virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n      },\n      {\n        makeModulesDir: Object.keys(filteredLockfile.packages ?? {}).length > 0,\n      }\n    );\n\n    if (opts.useLockfile === true) {\n      // We need to write the wanted lockfile as well.\n      // Even though it will only be changed if the workspace will have new projects with no dependencies.\n      await writeLockfiles({\n        wantedLockfileDir: opts.lockfileDir,\n        currentLockfileDir: virtualStoreDir,\n        wantedLockfile,\n        currentLockfile: filteredLockfile,\n      });\n    } else {\n      await writeCurrentLockfile(virtualStoreDir, filteredLockfile);\n    }\n  }\n\n  // waiting till package requests are finished\n  await Promise.all(\n    depNodes.map(async ({ fetching }) => {\n      try {\n        await fetching?.();\n      } catch {}\n    })\n  );\n\n  summaryLogger.debug({ prefix: lockfileDir });\n\n  await opts.storeController.close();\n\n  if (!opts.ignoreScripts && opts.ignorePackageManifest !== true) {\n    await runLifecycleHooksConcurrently(\n      [\n        'preinstall',\n        'install',\n        'postinstall',\n        'preprepare',\n        'prepare',\n        'postprepare',\n      ],\n      projectsToBeBuilt,\n      opts.childConcurrency ?? 5,\n      scriptsOpts\n    );\n  }\n\n  if (reporter != null && typeof reporter === 'function') {\n    streamParser.removeListener('data', reporter);\n  }\n\n  return {\n    stats: {\n      added,\n      removed,\n      linkedToRoot,\n    },\n    ignoredBuilds,\n  };\n}\n\ntype SymlinkDirectDependenciesOpts = Pick<\n  HeadlessOptions,\n  'registries' | 'symlink' | 'lockfileDir'\n> & {\n  filteredLockfile: LockfileObject;\n  dedupe: boolean;\n  directDependenciesByImporterId: DirectDependenciesByImporterId;\n  projects: (ProjectOptions &\n    HookOptions & {\n      binsDir: string;\n    })[];\n};\n\nasync function symlinkDirectDependencies({\n  filteredLockfile,\n  dedupe,\n  directDependenciesByImporterId,\n  lockfileDir,\n  projects,\n  registries,\n  symlink,\n}: SymlinkDirectDependenciesOpts): Promise<number> {\n  for (const { rootDir, manifest } of projects) {\n    // Even though headless installation will never update the package.json\n    // this needs to be logged because otherwise install summary won't be printed\n    packageManifestLogger.debug({\n      prefix: rootDir,\n      updated: manifest,\n    });\n  }\n\n  if (symlink === false) {\n    return 0;\n  }\n\n  const importerManifestsByImporterId: { [id: string]: ProjectManifest } = {};\n\n  for (const { id, manifest } of projects) {\n    if (typeof manifest !== 'undefined') {\n      importerManifestsByImporterId[id] = manifest;\n    }\n  }\n\n  const projectsToLink = Object.fromEntries(\n    await Promise.all(\n      projects.map(\n        async ({\n          rootDir,\n          id,\n          modulesDir,\n        }: ProjectOptions &\n          HookOptions & {\n            binsDir: string;\n          }): Promise<\n          [\n            ProjectId,\n            {\n              dir:\n                | ProjectRootDir\n                | ProjectRootDirRealPath\n                | GlobalPkgDir\n                | WorkspaceDir\n                | LockFileDir;\n              modulesDir: ModulesDir;\n              dependencies: LinkedDirectDep[];\n            },\n          ]\n        > => {\n          return [\n            id,\n            {\n              dir: rootDir,\n              modulesDir,\n              dependencies: await getRootPackagesToLink(filteredLockfile, {\n                importerId: id,\n                importerModulesDir: modulesDir,\n                lockfileDir,\n                projectDir: rootDir,\n                importerManifestsByImporterId,\n                registries,\n                rootDependencies: directDependenciesByImporterId[id] ?? {},\n              }),\n            },\n          ];\n        }\n      )\n    )\n  );\n\n  const rootProject = projectsToLink['.'];\n\n  if (typeof rootProject !== 'undefined' && dedupe) {\n    const rootDeps = Object.fromEntries(\n      rootProject.dependencies.map((dep: LinkedDirectDep) => [\n        dep.alias,\n        dep.dir,\n      ])\n    );\n\n    for (const project of Object.values(omit.default(['.'], projectsToLink))) {\n      project.dependencies = project.dependencies.filter(\n        (dep: LinkedDirectDep): boolean => {\n          return dep.dir !== rootDeps[dep.alias];\n        }\n      );\n    }\n  }\n  return linkDirectDeps(projectsToLink, { dedupe: Boolean(dedupe) });\n}\n\nasync function linkBinsOfImporter(\n  {\n    manifest,\n    modulesDir,\n    binsDir,\n    rootDir,\n  }: ProjectOptions & HookOptions & { binsDir: string },\n  {\n    extraNodePaths,\n    preferSymlinkedExecutables,\n  }: {\n    extraNodePaths?: string[] | undefined;\n    preferSymlinkedExecutables?: boolean | undefined;\n  } = {}\n): Promise<string[]> {\n  function warn(message: string): void {\n    logger.info({ message, prefix: rootDir });\n  }\n\n  return linkBins(modulesDir, binsDir, {\n    extraNodePaths,\n    allowExoticManifests: true,\n    preferSymlinkedExecutables,\n    projectManifest: manifest,\n    warn,\n  });\n}\n\nasync function getRootPackagesToLink(\n  lockfile: LockfileObject,\n  opts: {\n    registries: Registries;\n    projectDir: string;\n    importerId: ProjectId;\n    importerModulesDir?: ModulesDir | undefined;\n    importerManifestsByImporterId: { [id: string]: ProjectManifest };\n    lockfileDir: string;\n    rootDependencies: { [alias: string]: string };\n  }\n): Promise<LinkedDirectDep[]> {\n  const projectSnapshot = lockfile.importers?.[opts.importerId];\n\n  const allDeps = {\n    ...projectSnapshot?.devDependencies,\n    ...projectSnapshot?.dependencies,\n    ...projectSnapshot?.optionalDependencies,\n  };\n\n  return (\n    await Promise.all(\n      Object.entries(allDeps).map(\n        async ([alias, ref]: [string, string]): Promise<\n          | {\n              alias: string;\n              isExternalLink: boolean;\n              name: string;\n              version: string;\n              dependencyType: string;\n              dir: string;\n              id: string | undefined;\n            }\n          | undefined\n        > => {\n          if (ref.startsWith('link:')) {\n            const isDev = Boolean(projectSnapshot?.devDependencies?.[alias]);\n\n            const isOptional = Boolean(\n              projectSnapshot?.optionalDependencies?.[alias]\n            );\n\n            const packageDir = path.join(opts.projectDir, ref.slice(5));\n\n            const linkedPackage =\n              await (async (): Promise<DependencyManifest> => {\n                const importerId = getLockfileImporterId(\n                  opts.lockfileDir,\n                  packageDir\n                );\n\n                if (opts.importerManifestsByImporterId[importerId]) {\n                  return opts.importerManifestsByImporterId[importerId];\n                }\n\n                try {\n                  return await readProjectManifestOnly(packageDir);\n                  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                } catch (err: any) {\n                  if (err['code'] !== 'ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND') {\n                    throw err;\n                  }\n\n                  return { name: alias, version: '0.0.0' };\n                }\n              })();\n\n            return {\n              alias,\n              name: linkedPackage.name,\n              version: linkedPackage.version,\n              dir: packageDir,\n              id: ref,\n              isExternalLink: true,\n              dependencyType: isDev ? 'dev' : isOptional ? 'optional' : 'prod',\n            };\n          }\n\n          const dir = opts.rootDependencies[alias];\n\n          // Skipping linked packages\n          if (typeof dir === 'undefined') {\n            return;\n          }\n\n          const isDev = Boolean(projectSnapshot?.devDependencies?.[alias]);\n\n          const isOptional = Boolean(\n            projectSnapshot?.optionalDependencies?.[alias]\n          );\n\n          const depPath = dp.refToRelative(ref, alias);\n\n          if (depPath === null) {\n            return;\n          }\n\n          const pkgSnapshot = lockfile.packages?.[depPath];\n\n          // this won't ever happen. Just making typescript happy\n          if (pkgSnapshot == null) {\n            return;\n          }\n\n          const pkgId =\n            pkgSnapshot.id ?? dp.refToRelative(ref, alias) ?? undefined;\n\n          const pkgInfo = nameVerFromPkgSnapshot(depPath, pkgSnapshot);\n\n          return {\n            alias,\n            isExternalLink: false,\n            name: pkgInfo.name,\n            version: pkgInfo.version,\n            dependencyType: isDev ? 'dev' : isOptional ? 'optional' : 'prod',\n            dir,\n            id: pkgId,\n          };\n        }\n      )\n    )\n  ).filter(Boolean) as LinkedDirectDep[];\n}\n\nconst limitLinking = pLimit(16);\n\nasync function linkAllPkgs(\n  storeController: StoreController<\n    PackageResponse,\n    PackageResponse,\n    {\n      importMethod?: string | undefined;\n      isBuilt: boolean;\n    }\n  >,\n  depNodes: DependenciesGraphNode[],\n  opts: {\n    allowBuild?: ((pkgName: string) => boolean) | undefined;\n    depGraph: DependenciesGraph;\n    depsStateCache: DepsStateCache;\n    disableRelinkLocalDirDeps?: boolean | undefined;\n    force: boolean;\n    ignoreScripts: boolean;\n    lockfileDir: string;\n    sideEffectsCacheRead: boolean;\n  }\n): Promise<void> {\n  await Promise.all(\n    depNodes.map(async (depNode: DependenciesGraphNode): Promise<void> => {\n      if (!depNode.fetching) {\n        return;\n      }\n\n      let filesResponse: PackageFilesResponse | undefined;\n\n      try {\n        filesResponse = (await depNode.fetching()).files;\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      } catch (err: any) {\n        if (depNode.optional) {\n          return;\n        }\n\n        throw err;\n      }\n\n      depNode.requiresBuild = filesResponse.requiresBuild;\n\n      let sideEffectsCacheKey: string | undefined;\n\n      if (\n        opts.sideEffectsCacheRead &&\n        filesResponse.sideEffects &&\n        !isEmpty.default(filesResponse.sideEffects)\n      ) {\n        if (opts.allowBuild?.(depNode.name) !== false) {\n          sideEffectsCacheKey = calcDepState(\n            opts.depGraph,\n            opts.depsStateCache,\n            depNode.dir,\n            {\n              isBuilt: !opts.ignoreScripts && depNode.requiresBuild,\n              patchFileHash: depNode.patch?.file.hash,\n            }\n          );\n        }\n      }\n\n      const { importMethod, isBuilt } = await storeController.importPackage(\n        depNode.dir,\n        {\n          filesResponse,\n          force: opts.force,\n          disableRelinkLocalDirDeps: opts.disableRelinkLocalDirDeps,\n          requiresBuild: depNode.patch != null || depNode.requiresBuild,\n          sideEffectsCacheKey,\n        }\n      );\n\n      if (typeof importMethod === 'string') {\n        progressLogger.debug({\n          method: importMethod,\n          requester: opts.lockfileDir,\n          status: 'imported',\n          to: depNode.dir,\n        });\n      }\n\n      depNode.isBuilt = isBuilt;\n\n      const selfDep = depNode.children[depNode.name];\n\n      if (typeof selfDep === 'string') {\n        const pkg = opts.depGraph[selfDep];\n\n        if (typeof pkg === 'undefined') {\n          return;\n        }\n\n        const targetModulesDir = path.join(\n          depNode.modules,\n          depNode.name,\n          'node_modules'\n        );\n\n        await limitLinking(\n          async (): Promise<{ reused: boolean; warn?: string | undefined }> => {\n            return symlinkDependency(pkg.dir, targetModulesDir, depNode.name);\n          }\n        );\n      }\n    })\n  );\n}\n\nasync function linkAllBins(\n  depGraph: DependenciesGraph,\n  opts: {\n    extraNodePaths?: string[] | undefined;\n    optional: boolean;\n    preferSymlinkedExecutables?: boolean | undefined;\n    warn: (message: string) => void;\n  }\n): Promise<void> {\n  await Promise.all(\n    Object.values(depGraph).map(\n      async (depNode: DependenciesGraphNode): Promise<void> => {\n        return limitLinking(async (): Promise<void> => {\n          const childrenToLink: Record<string, string> = opts.optional\n            ? depNode.children\n            : pickBy.default((_, childAlias: string): boolean => {\n                return !depNode.optionalDependencies.has(childAlias);\n              }, depNode.children);\n\n          const binPath = path.join(depNode.dir, 'node_modules/.bin');\n\n          const pkgSnapshots = props.default<string, DependenciesGraphNode>(\n            Object.values(childrenToLink),\n            depGraph\n          );\n\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          if (pkgSnapshots.includes(undefined as any)) {\n            await linkBins(depNode.modules, binPath, {\n              extraNodePaths: opts.extraNodePaths,\n              preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n              warn: opts.warn,\n            });\n          } else {\n            const pkgs = await Promise.all(\n              pkgSnapshots\n                .filter(({ hasBin }: DependenciesGraphNode): boolean => {\n                  return hasBin;\n                })\n                .map(\n                  async ({\n                    dir,\n                  }: DependenciesGraphNode): Promise<{\n                    location: string;\n                    manifest: DependencyManifest;\n                  }> => {\n                    return {\n                      location: dir,\n                      manifest: await readPackageJsonFromDir(dir),\n                    };\n                  }\n                )\n            );\n\n            await linkBinsOfPackages(pkgs, binPath, {\n              extraNodePaths: opts.extraNodePaths,\n              preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n            });\n          }\n\n          // link also the bundled dependencies` bins\n          if (depNode.hasBundledDependencies) {\n            const bundledModules = path.join(\n              depNode.dir,\n              'node_modules'\n            ) as ModulesDir;\n\n            await linkBins(bundledModules, binPath, {\n              extraNodePaths: opts.extraNodePaths,\n              preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n              warn: opts.warn,\n            });\n          }\n        });\n      }\n    )\n  );\n}\n\nasync function linkAllModules(\n  depNodes: Array<\n    Pick<\n      DependenciesGraphNode,\n      'children' | 'optionalDependencies' | 'modules' | 'name'\n    >\n  >,\n  opts: {\n    optional: boolean;\n  }\n): Promise<void> {\n  await symlinkAllModules({\n    deps: depNodes.map(\n      (\n        depNode: Pick<\n          DependenciesGraphNode,\n          'children' | 'optionalDependencies' | 'modules' | 'name'\n        >\n      ): {\n        children: Record<string, string>;\n        modules: string;\n        name: string;\n      } => {\n        return {\n          children: opts.optional\n            ? depNode.children\n            : pickBy.default((_, childAlias: string): boolean => {\n                return !depNode.optionalDependencies.has(childAlias);\n              }, depNode.children),\n          modules: depNode.modules,\n          name: depNode.name,\n        };\n      }\n    ),\n  });\n}\n"],
  "mappings": "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",
  "names": ["lockfileToDepGraphOpts", "directDependenciesByImporterId", "graph", "depNodes", "added", "allowBuild", "ignoredBuilds", "projectsToBeBuilt", "isDev", "isOptional"]
}
