{"version":3,"file":"pnpmNodeModulesCollector.js","sourceRoot":"","sources":["../../src/node-module-collector/pnpmNodeModulesCollector.ts"],"names":[],"mappings":"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","sourcesContent":["import { Lazy } from \"lazy-val\"\nimport { LogMessageByKey, type Package } from \"./moduleManager\"\nimport { NodeModulesCollector } from \"./nodeModulesCollector\"\nimport { getPackageManagerCommand, PM } from \"./packageManager\"\nimport { PnpmDependency } from \"./types\"\n\nexport class PnpmNodeModulesCollector extends NodeModulesCollector<PnpmDependency, PnpmDependency> {\n  public readonly installOptions = {\n    manager: PM.PNPM,\n    lockfile: \"pnpm-lock.yaml\",\n  }\n\n  // Raw backing field — all entries from `pnpm list --json`\n  private _allWorkspacePackages: PnpmDependency[] = []\n  // Cached after parseDependenciesTree resolves the Lazy; 0 = safe default (treated as < v11)\n  private _pnpmMajorVersion = 0\n  // Runs `pnpm --version` once and caches the major version number\n  private readonly pnpmVersion = new Lazy<number>(async () => {\n    const result = await this.asyncExec(getPackageManagerCommand(PM.PNPM), [\"--version\"])\n    const major = parseInt((result.stdout ?? \"0\").split(\".\")[0], 10)\n    return isNaN(major) ? 0 : major\n  })\n\n  /**\n   * Memo for `locateFromDepOrRoot`, keyed by `name@version`. pnpm's content-addressed virtual\n   * store guarantees that any given `name@version` resolves to a single location on disk, so\n   * once we've resolved a package we can short-circuit every subsequent lookup. This is the\n   * dominant speedup for large workspaces where the `pnpm list --json` tree contains the same\n   * `name@version` thousands of times (one entry per dependent).\n   */\n  private readonly locateMemo: Map<string, Promise<Package | null>> = new Map()\n\n  /**\n   * Visited set for `collectDepsRecursively`, keyed by `name@version`. Without this we re-walk\n   * every shared subtree of the pnpm list output, exploding work in deep workspaces.\n   */\n  private readonly collectedDeps: Set<string> = new Set()\n\n  /**\n   * Returns the workspace packages to iterate over, gated by detected pnpm version:\n   * - pnpm v11+: multi-entry workspace output → return the full parsed array\n   * - pnpm < v11 / non-workspace / detection failure: single-tree behavior → return only [0]\n   */\n  private get allWorkspacePackages(): PnpmDependency[] {\n    if (this._pnpmMajorVersion >= 11) {\n      return this._allWorkspacePackages\n    }\n    return this._allWorkspacePackages.slice(0, 1)\n  }\n\n  protected getArgs(): string[] {\n    return [\"list\", \"--prod\", \"--json\", \"--depth\", \"Infinity\", \"--silent\", \"--loglevel=error\"]\n  }\n\n  /**\n   * Locate a package version, preferring the dep's own reported path before falling back to rootDir.\n   * This is critical for pnpm non-hoisted (virtual store) setups where each package has its own\n   * nested node_modules. Searching only from rootDir can resolve the wrong version when multiple\n   * versions of a dep exist in the workspace.\n   */\n  private async locateFromDepOrRoot(pkgName: string, parentPath: string | undefined, requiredRange?: string) {\n    // pnpm's virtual store is content-addressed: every `name@version` lookup is deterministic,\n    // so memoize on the exact version. `requiredRange` is normally an exact version coming from\n    // the pnpm list output (e.g. `value.version`), which makes this cache hit on duplicates.\n    // Only memoize when we have a concrete version — semver ranges could resolve differently\n    // depending on what's installed at `parentPath` vs root, so skip the cache for those.\n    const memoKey = requiredRange && /^\\d/.test(requiredRange) ? `${pkgName}@${requiredRange}` : null\n    if (memoKey != null) {\n      const cached = this.locateMemo.get(memoKey)\n      if (cached != null) {\n        return cached\n      }\n    }\n\n    // pnpm's default `.pnpm` virtual store is flat, so `downwardSearch` would burn thousands\n    // of `readdir`/`lstat` calls finding nothing. With `nodeLinker: hoisted`, however, the\n    // layout is a traditional nested `node_modules` tree where version-conflicted packages\n    // land at `<root>/node_modules/A/node_modules/B` — downward BFS is needed to find them.\n    const skipDownwardSearch = !(await this.isHoisted.value)\n    const promise = (async (): Promise<Package | null> => {\n      const fromDep = parentPath ? await this.cache.locatePackageVersion({ pkgName, parentDir: parentPath, requiredRange, skipDownwardSearch }) : null\n      if (fromDep) {\n        return fromDep\n      }\n      return this.cache.locatePackageVersion({ pkgName, parentDir: this.rootDir, requiredRange, skipDownwardSearch })\n    })()\n\n    if (memoKey != null) {\n      this.locateMemo.set(memoKey, promise)\n    }\n    return promise\n  }\n\n  // pnpm 10+ does not automatically preserve transitive optional platform-specific\n  // packages (e.g. sass-embedded-linux-x64) across lock file regeneration. Users\n  // must list them as direct optionalDependencies. Missing ones are emitted as\n  // PKG_OPTIONAL_PLATFORM_NOT_INSTALLED warnings in the log summary.\n  protected async extractProductionDependencyGraph(tree: PnpmDependency, dependencyId: string) {\n    if (this.productionGraph[dependencyId]) {\n      return\n    }\n    this.productionGraph[dependencyId] = { dependencies: [] }\n\n    if ((tree.dedupedDependenciesCount ?? 0) > 0) {\n      const realDep = this.allDependencies.get(dependencyId)\n      if (realDep) {\n        this.cache.logSummary[LogMessageByKey.PKG_DUPLICATE_REF].push(dependencyId)\n        tree = realDep\n      } else {\n        this.cache.logSummary[LogMessageByKey.PKG_DUPLICATE_REF_UNRESOLVED].push(dependencyId)\n        return\n      }\n    }\n\n    const packageName = tree.name || tree.from\n    const { packageJson } = (await this.locateFromDepOrRoot(packageName, tree.path, tree.version)) || {}\n\n    const all = packageJson ? { ...packageJson.dependencies, ...packageJson.optionalDependencies } : { ...tree.dependencies, ...tree.optionalDependencies }\n    const optional = packageJson ? { ...packageJson.optionalDependencies } : {}\n\n    const deps = { ...(tree.dependencies || {}), ...(tree.optionalDependencies || {}) }\n    this.productionGraph[dependencyId] = { dependencies: [] }\n    const depPromises = Object.entries(deps).map(async ([packageName, dependency]) => {\n      // First check if it's in production dependencies\n      if (!all[packageName]) {\n        return undefined\n      }\n\n      // Then check if optional dependency path exists (using actual resolved path)\n      if (optional[packageName]) {\n        const pkg = await this.locateFromDepOrRoot(packageName, tree.path, dependency.version)\n        if (!pkg) {\n          this.logMissingDependency(`${packageName}@${dependency.version}`)\n          return undefined\n        }\n      }\n      const { id: childDependencyId, pkgOverride } = this.normalizePackageVersion(packageName, dependency)\n      await this.extractProductionDependencyGraph(pkgOverride, childDependencyId)\n      return childDependencyId\n    })\n\n    const collectedDependencies: string[] = []\n    for (const dep of depPromises) {\n      const result = await dep\n      if (result !== undefined) {\n        collectedDependencies.push(result)\n      }\n    }\n    this.productionGraph[dependencyId] = { dependencies: collectedDependencies }\n  }\n\n  protected async collectAllDependencies(_tree: PnpmDependency, _appPackageName: string): Promise<void> {\n    for (const root of this.allWorkspacePackages) {\n      await this.collectDepsRecursively(root)\n    }\n  }\n\n  private async collectDepsRecursively(tree: PnpmDependency): Promise<void> {\n    const visit = async (key: string, value: PnpmDependency) => {\n      if ((value?.dedupedDependenciesCount ?? 0) > 0) {\n        return\n      }\n      const id = `${key}@${value.version}`\n      // The pnpm list output can include the same `name@version` thousands of times across a\n      // deep workspace; without this guard we re-resolve and re-recurse each occurrence.\n      if (this.collectedDeps.has(id)) {\n        return\n      }\n      this.collectedDeps.add(id)\n      const pkg = await this.locateFromDepOrRoot(key, value.path, value.version)\n      this.allDependencies.set(id, { ...value, path: pkg?.packageDir ?? value.path })\n      await this.collectDepsRecursively(value)\n    }\n\n    for (const [key, value] of Object.entries(tree.dependencies || {})) {\n      await visit(key, value)\n    }\n    for (const [key, value] of Object.entries(tree.optionalDependencies || {})) {\n      await visit(key, value)\n    }\n  }\n\n  protected override getTreeFromWorkspaces(tree: PnpmDependency, packageName: string): PnpmDependency {\n    // pnpm v10 workspace: app is nested as a dependency of root — handled by base class\n    const result = super.getTreeFromWorkspaces(tree, packageName)\n    if (result !== tree) {\n      return result\n    }\n    // pnpm v11 workspace: each workspace package is a separate top-level array entry;\n    // non-workspace (single-tree): find returns the one entry or undefined → falls back to tree\n    const match = this.allWorkspacePackages.find(pkg => pkg.name === packageName || pkg.from === packageName)\n    return match ?? tree\n  }\n\n  protected async parseDependenciesTree(jsonBlob: string): Promise<PnpmDependency> {\n    const dependencyTree = this.extractJsonFromPollutedOutput<PnpmDependency[]>(jsonBlob)\n    this._allWorkspacePackages = dependencyTree\n    this._pnpmMajorVersion = await this.pnpmVersion.value\n    return dependencyTree[0]\n  }\n}\n"]}