{
  "version": 3,
  "sources": ["../../../../src/packages/resolve-dependencies/resolveDependencyTree.ts"],
  "sourcesContent": ["import { resolveFromCatalog } from '../catalogs.resolver/index.ts';\nimport type { Catalogs } from '../catalogs.types/index.ts';\nimport type { LockfileObject } from '../lockfile.types/index.ts';\nimport type { PatchGroupRecord } from '../patching.types/index.ts';\nimport type {\n  PreferredVersions,\n  Resolution,\n  WorkspacePackages,\n} from '../resolver-base/index.ts';\nimport type {\n  PackageResponse,\n  StoreController,\n} from '../store-controller-types/index.ts';\nimport type {\n  SupportedArchitectures,\n  AllowedDeprecatedVersions,\n  PkgResolutionId,\n  ProjectManifest,\n  ProjectId,\n  ReadPackageHook,\n  Registries,\n  ProjectRootDir,\n  GlobalPkgDir,\n  LockFileDir,\n  ProjectRootDirRealPath,\n  WorkspaceDir,\n} from '../types/index.ts';\nimport partition from 'ramda/src/partition';\nimport zipObj from 'ramda/src/zipObj';\n// import type { WantedDependency } from './getNonDevWantedDependencies.ts';\nimport { type NodeId, nextNodeId } from './nextNodeId.ts';\nimport { parentIdsContainSequence } from './parentIdsContainSequence.ts';\nimport {\n  type ChildrenByParentId,\n  type DependenciesTree,\n  type LinkedDependency,\n  type ImporterToResolve,\n  type ImporterToResolveOptions,\n  type ParentPkgAliases,\n  type PendingNode,\n  type PkgAddress,\n  resolveRootDependencies,\n  type ResolvedPackage,\n  type ResolvedPkgsById,\n  type ResolutionContext,\n} from './resolveDependencies.ts';\nimport type { WantedDependency } from './getWantedDependencies.ts';\n\nexport type {\n  LinkedDependency,\n  ResolvedPackage,\n  DependenciesTree,\n  DependenciesTreeNode,\n} from './resolveDependencies.ts';\n\nexport type ResolvedImporters = {\n  [id: string]: {\n    directDependencies: (LinkedDependency | ResolvedDirectDependency)[];\n    directNodeIdsByAlias: Map<string, NodeId>;\n    linkedDependencies: LinkedDependency[];\n  };\n};\n\nexport type ResolvedDirectDependency = {\n  alias: string;\n  optional?: boolean | undefined;\n  dev?: boolean | undefined;\n  resolution?: Resolution | undefined;\n  pkgId: PkgResolutionId;\n  version: string;\n  name: string;\n  normalizedPref?: string | undefined;\n  catalogLookup?: CatalogLookupMetadata | undefined;\n};\n\n/**\n * Information related to the catalog entry for this dependency if it was\n * requested through the catalog protocol.\n */\nexport type CatalogLookupMetadata = {\n  readonly catalogName: string;\n  readonly specifier: string;\n\n  /**\n   * The catalog protocol pref the user wrote in package.json files or as a\n   * parameter to pnpm add. Ex: pnpm add foo@catalog:\n   *\n   * This will usually be 'catalog:<name>', but can simply be 'catalog:' if\n   * users wrote the default catalog shorthand. This is different than the\n   * catalogName field, which would be 'default' regardless of whether users\n   * originally requested 'catalog:' or 'catalog:default'.\n   */\n  readonly userSpecifiedPref?: string | undefined;\n};\n\nexport type Importer<WantedDepExtraProps> = {\n  id: ProjectId;\n  manifest: ProjectManifest;\n  modulesDir: string;\n  removePackages?: string[] | undefined;\n  rootDir:\n    | ProjectRootDir\n    | ProjectRootDirRealPath\n    | GlobalPkgDir\n    | WorkspaceDir\n    | LockFileDir;\n  wantedDependencies: Array<WantedDependency & WantedDepExtraProps>;\n};\n\nexport type ImporterToResolveGeneric<WantedDepExtraProps> = {\n  id: ProjectId;\n  binsDir: string;\n  manifest?: ProjectManifest | undefined;\n  modulesDir: string;\n  removePackages?: string[] | undefined;\n  rootDir:\n    | ProjectRootDir\n    | ProjectRootDirRealPath\n    | GlobalPkgDir\n    | WorkspaceDir\n    | LockFileDir;\n  wantedDependencies: Array<WantedDependency & WantedDepExtraProps>;\n  updatePackageManifest?: boolean | undefined;\n  updateMatching?: ((pkgName: string) => boolean) | undefined;\n  updateToLatest?: boolean | undefined;\n  hasRemovedDependencies?: boolean | undefined;\n  preferredVersions?: PreferredVersions | undefined;\n  originalManifest?: ProjectManifest | undefined;\n};\n\nexport interface ResolveDependenciesOptions {\n  autoInstallPeers?: boolean | undefined;\n  autoInstallPeersFromHighestMatch?: boolean | undefined;\n  allowedDeprecatedVersions: AllowedDeprecatedVersions;\n  allowUnusedPatches: boolean;\n  catalogs?: Catalogs | undefined;\n  currentLockfile: LockfileObject;\n  dedupePeerDependents?: boolean | undefined;\n  dryRun: boolean;\n  engineStrict: boolean;\n  force: boolean;\n  forceFullResolution: boolean;\n  ignoreScripts?: boolean | undefined;\n  hooks: {\n    readPackage?: ReadPackageHook | undefined;\n  };\n  nodeVersion?: string | undefined;\n  registries: Registries;\n  patchedDependencies?: PatchGroupRecord | undefined;\n  pnpmVersion: string;\n  preferredVersions?: PreferredVersions | undefined;\n  preferWorkspacePackages?: boolean | undefined;\n  resolutionMode?: 'highest' | 'time-based' | 'lowest-direct' | undefined;\n  resolvePeersFromWorkspaceRoot?: boolean | undefined;\n  injectWorkspacePackages?: boolean | undefined;\n  linkWorkspacePackagesDepth?: number | undefined;\n  lockfileDir: LockFileDir;\n  storeController: StoreController<\n    PackageResponse,\n    PackageResponse,\n    {\n      isBuilt: boolean;\n      importMethod?: string | undefined;\n    }\n  >;\n  tag: string;\n  virtualStoreDir: string;\n  virtualStoreDirMaxLength: number;\n  wantedLockfile: LockfileObject;\n  workspacePackages: WorkspacePackages;\n  supportedArchitectures?: SupportedArchitectures | undefined;\n  peersSuffixMaxLength: number;\n}\n\nexport interface ResolveDependencyTreeResult {\n  allPeerDepNames: Set<string>;\n  dependenciesTree: DependenciesTree;\n  outdatedDependencies: {\n    [pkgId: string]: string;\n  };\n  resolvedImporters: ResolvedImporters;\n  resolvedPkgsById: ResolvedPkgsById;\n  wantedToBeSkippedPackageIds: Set<string>;\n  appliedPatches: Set<string>;\n  time?: Record<string, string> | undefined;\n}\n\nexport async function resolveDependencyTree(\n  importers: Array<\n    ImporterToResolveGeneric<{\n      isNew?: boolean | undefined;\n      updateDepth?: number | undefined;\n    }>\n  >,\n  opts: ResolveDependenciesOptions\n): Promise<ResolveDependencyTreeResult> {\n  const wantedToBeSkippedPackageIds = new Set<PkgResolutionId>();\n\n  const autoInstallPeers = opts.autoInstallPeers === true;\n\n  const ctx: ResolutionContext = {\n    autoInstallPeers,\n    autoInstallPeersFromHighestMatch:\n      opts.autoInstallPeersFromHighestMatch === true,\n    allowedDeprecatedVersions: opts.allowedDeprecatedVersions,\n    catalogResolver: resolveFromCatalog.bind(null, opts.catalogs ?? {}),\n    childrenByParentId: {} as ChildrenByParentId,\n    currentLockfile: opts.currentLockfile,\n    defaultTag: opts.tag,\n    dependenciesTree: new Map() as DependenciesTree,\n    dryRun: opts.dryRun,\n    engineStrict: opts.engineStrict,\n    force: opts.force,\n    forceFullResolution: opts.forceFullResolution,\n    ignoreScripts: opts.ignoreScripts,\n    injectWorkspacePackages: opts.injectWorkspacePackages,\n    linkWorkspacePackagesDepth: opts.linkWorkspacePackagesDepth ?? -1,\n    lockfileDir: opts.lockfileDir,\n    nodeVersion: opts.nodeVersion,\n    outdatedDependencies: {} as { [pkgId: string]: string },\n    patchedDependencies: opts.patchedDependencies,\n    pendingNodes: [] as PendingNode[],\n    pnpmVersion: opts.pnpmVersion,\n    preferWorkspacePackages: opts.preferWorkspacePackages,\n    readPackageHook: opts.hooks.readPackage,\n    registries: opts.registries,\n    resolvedPkgsById: {} as ResolvedPkgsById,\n    resolutionMode: opts.resolutionMode,\n    skipped: wantedToBeSkippedPackageIds,\n    storeController: opts.storeController,\n    virtualStoreDir: opts.virtualStoreDir,\n    virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n    wantedLockfile: opts.wantedLockfile,\n    appliedPatches: new Set<string>(),\n    updatedSet: new Set<string>(),\n    workspacePackages: opts.workspacePackages,\n    missingPeersOfChildrenByPkgId: {},\n    hoistPeers: autoInstallPeers || opts.dedupePeerDependents,\n    allPeerDepNames: new Set(),\n  };\n\n  const resolveArgs: ImporterToResolve[] = importers.map(\n    (\n      importer: ImporterToResolveGeneric<{\n        isNew?: boolean | undefined;\n        updateDepth?: number | undefined;\n      }>\n    ): {\n      updatePackageManifest: boolean;\n      parentPkgAliases: ParentPkgAliases;\n      preferredVersions: PreferredVersions;\n      wantedDependencies: (WantedDependency & {\n        isNew?: boolean | undefined;\n        updateDepth?: number | undefined;\n      })[];\n      options: ImporterToResolveOptions;\n    } => {\n      const projectSnapshot = opts.wantedLockfile.importers?.[importer.id];\n\n      // This may be optimized.\n      // We only need to proceed resolving every dependency\n      // if the newly added dependency has peer dependencies.\n      const proceed =\n        importer.id === '.' ||\n        importer.hasRemovedDependencies === true ||\n        importer.wantedDependencies.some(\n          (\n            wantedDep: WantedDependency & {\n              updateDepth?: number | undefined;\n              isNew?: boolean | undefined;\n            }\n          ): boolean => {\n            return wantedDep.isNew === true;\n          }\n        );\n\n      const resolveOpts: ImporterToResolveOptions = {\n        currentDepth: 0,\n        parentPkg: {\n          installable: true,\n          nodeId: importer.id as unknown as NodeId,\n          optional: false,\n          pkgId: importer.id as unknown as PkgResolutionId,\n          rootDir: importer.rootDir,\n        },\n        parentIds: [importer.id as unknown as PkgResolutionId],\n        proceed,\n        resolvedDependencies: {\n          ...projectSnapshot?.dependencies,\n          ...projectSnapshot?.devDependencies,\n          ...projectSnapshot?.optionalDependencies,\n        },\n        updateDepth: -1,\n        updateMatching: importer.updateMatching,\n        updateToLatest: importer.updateToLatest,\n        prefix: importer.rootDir,\n        supportedArchitectures: opts.supportedArchitectures,\n      };\n\n      return {\n        updatePackageManifest: importer.updatePackageManifest ?? false,\n        parentPkgAliases: Object.fromEntries(\n          importer.wantedDependencies\n            .filter(\n              ({\n                alias,\n              }: WantedDependency & {\n                isNew?: boolean | undefined;\n                updateDepth?: number | undefined;\n              }): boolean => {\n                return typeof alias === 'string';\n              }\n            )\n            .map(\n              ({\n                alias,\n              }: WantedDependency & {\n                isNew?: boolean | undefined;\n                updateDepth?: number | undefined;\n              }): [string, true] => {\n                return [alias as string, true];\n              }\n            )\n        ), // as ParentPkgAliases,\n        preferredVersions: importer.preferredVersions ?? {},\n        wantedDependencies: importer.wantedDependencies,\n        options: resolveOpts,\n      };\n    }\n  );\n\n  const { pkgAddressesByImporters, time } = await resolveRootDependencies(\n    ctx,\n    resolveArgs\n  );\n\n  const directDepsByImporterId = zipObj.default(\n    importers.map(\n      ({\n        id,\n      }: ImporterToResolveGeneric<{\n        isNew?: boolean | undefined;\n        updateDepth?: number | undefined;\n      }>): ProjectId => {\n        return id;\n      }\n    ),\n    // @ts-expect-error The types of 'pkg.publishConfig' are incompatible between these types.\n    // Type 'PublishConfig | undefined' is not assignable to type 'NarrowRaw<PublishConfig | undefined>'.\n    pkgAddressesByImporters\n  );\n\n  for (const pendingNode of ctx.pendingNodes) {\n    ctx.dependenciesTree.set(pendingNode.nodeId, {\n      children: (): Record<string, NodeId> => {\n        const id = pendingNode.resolvedPackage.id;\n\n        if (typeof id === 'undefined') {\n          return {};\n        }\n\n        const children = ctx.childrenByParentId[id];\n\n        if (typeof children === 'undefined') {\n          return {};\n        }\n\n        return buildTree(\n          ctx,\n          id,\n          pendingNode.parentIds,\n          children,\n          pendingNode.depth + 1,\n          pendingNode.installable\n        );\n      },\n      depth: pendingNode.depth,\n      installable: pendingNode.installable,\n      resolvedPackage: pendingNode.resolvedPackage,\n    });\n  }\n\n  const resolvedImporters: ResolvedImporters = {};\n\n  for (const { id, wantedDependencies } of importers) {\n    const dd = directDepsByImporterId[id];\n\n    if (typeof dd === 'undefined') {\n      continue;\n    }\n\n    const directDeps = dedupeSameAliasDirectDeps(dd, wantedDependencies);\n\n    const parts = partition.default(\n      (dep: PkgAddress | LinkedDependency): dep is LinkedDependency => {\n        return dep.isLinkedDependency === true;\n      },\n      directDeps\n    );\n\n    const linkedDependencies: LinkedDependency[] = parts[0];\n\n    const directNonLinkedDeps: PkgAddress[] = parts[1];\n\n    resolvedImporters[id] = {\n      directDependencies: directDeps\n        .map(\n          (\n            dep: PkgAddress | LinkedDependency\n          ): LinkedDependency | ResolvedDirectDependency | undefined => {\n            if (dep.isLinkedDependency === true) {\n              return dep;\n            }\n\n            const resolvedPackage:\n              | (ResolvedPackage & { name: string; version: string })\n              | { name: string; version: string }\n              | undefined = ctx.dependenciesTree.get(\n              dep.nodeId\n            )?.resolvedPackage;\n\n            if (\n              typeof resolvedPackage === 'undefined' ||\n              !('id' in resolvedPackage)\n            ) {\n              return;\n            }\n\n            const rd: ResolvedDirectDependency = {\n              alias: dep.alias,\n              catalogLookup: dep.catalogLookup,\n              dev: resolvedPackage.dev,\n              name: resolvedPackage.name,\n              normalizedPref: dep.normalizedPref,\n              optional: resolvedPackage.optional,\n              pkgId: resolvedPackage.id,\n              resolution: resolvedPackage.resolution,\n              version: resolvedPackage.version,\n            } satisfies ResolvedDirectDependency;\n\n            return rd;\n          }\n        )\n        .filter(Boolean),\n      directNodeIdsByAlias: new Map(\n        directNonLinkedDeps.map(\n          ({ alias, nodeId }: PkgAddress): [string, NodeId] => {\n            return [alias, nodeId];\n          }\n        )\n      ),\n      linkedDependencies,\n    };\n  }\n\n  return {\n    dependenciesTree: ctx.dependenciesTree,\n    outdatedDependencies: ctx.outdatedDependencies,\n    resolvedImporters,\n    resolvedPkgsById: ctx.resolvedPkgsById,\n    wantedToBeSkippedPackageIds,\n    appliedPatches: ctx.appliedPatches,\n    time,\n    allPeerDepNames: ctx.allPeerDepNames,\n  };\n}\n\nfunction buildTree(\n  ctx: {\n    childrenByParentId: ChildrenByParentId;\n    dependenciesTree: DependenciesTree;\n    resolvedPkgsById: ResolvedPkgsById;\n    skipped: Set<PkgResolutionId>;\n  },\n  parentId: PkgResolutionId,\n  parentIds: PkgResolutionId[],\n  children: Array<{ alias: string; id: PkgResolutionId }>,\n  depth: number,\n  installable: boolean\n): Record<string, NodeId> {\n  const childrenNodeIds: Record<string, NodeId> = {};\n\n  for (const child of children) {\n    if (child.id.startsWith('link:')) {\n      childrenNodeIds[child.alias] = child.id as unknown as NodeId;\n\n      continue;\n    }\n\n    if (\n      parentIdsContainSequence(parentIds, parentId, child.id) ||\n      parentId === child.id\n    ) {\n      continue;\n    }\n\n    if (ctx.resolvedPkgsById[child.id]?.isLeaf === true) {\n      childrenNodeIds[child.alias] = child.id as unknown as NodeId;\n\n      continue;\n    }\n\n    const childNodeId = nextNodeId();\n\n    childrenNodeIds[child.alias] = childNodeId;\n\n    const newInstallable = installable || !ctx.skipped.has(child.id);\n\n    const children = ctx.childrenByParentId[child.id];\n\n    const resolvedPackage = ctx.resolvedPkgsById[child.id];\n\n    if (\n      typeof children === 'undefined' ||\n      typeof resolvedPackage === 'undefined'\n    ) {\n      return {};\n    }\n\n    ctx.dependenciesTree.set(childNodeId, {\n      children: (): Record<string, NodeId> => {\n        return buildTree(\n          ctx,\n          child.id,\n          [...parentIds, child.id],\n          children,\n          depth + 1,\n          newInstallable\n        );\n      },\n      depth,\n      installable: newInstallable,\n      resolvedPackage,\n    });\n  }\n\n  return childrenNodeIds;\n}\n\n/**\n * There may be cases where multiple dependencies have the same alias in the directDeps array.\n * E.g., when there is \"is-negative: github:kevva/is-negative#1.0.0\" in the package.json dependencies,\n * and then re-execute `pnpm add github:kevva/is-negative#1.0.1`.\n * In order to make sure that the latest 1.0.1 version is installed, we need to remove the duplicate dependency.\n * fix https://github.com/pnpm/pnpm/issues/6966\n */\nfunction dedupeSameAliasDirectDeps(\n  directDeps: Array<PkgAddress | LinkedDependency>,\n  wantedDependencies: Array<WantedDependency & { isNew?: boolean | undefined }>\n): Array<PkgAddress | LinkedDependency> {\n  const deps = new Map<string, PkgAddress | LinkedDependency>();\n\n  for (const directDep of directDeps) {\n    const { alias, normalizedPref } = directDep;\n\n    if (deps.has(alias) === true) {\n      const wantedDep = wantedDependencies.find(\n        (\n          dep: WantedDependency & {\n            isNew?: boolean | undefined;\n          }\n        ): boolean => {\n          return typeof dep.alias === 'string'\n            ? dep.alias === alias\n            : dep.pref === normalizedPref;\n        }\n      );\n\n      if (wantedDep?.isNew === true) {\n        deps.set(alias, directDep);\n      }\n    } else {\n      deps.set(alias, directDep);\n    }\n  }\n\n  return Array.from(deps.values());\n}\n"],
  "mappings": "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",
  "names": ["children"]
}
