{
  "version": 3,
  "sources": ["../../../../src/packages/deps.status/checkDepsStatus.ts"],
  "sourcesContent": ["import fs from 'node:fs';\nimport path from 'node:path';\nimport util from 'node:util';\nimport equals from 'ramda/src/equals';\nimport isEmpty from 'ramda/src/isEmpty';\nimport filter from 'ramda/src/filter';\nimport once from 'ramda/src/once';\nimport {\n  type Config,\n  type OptionsFromRootManifest,\n  getOptionsFromRootManifest,\n} from '../config/index.ts';\nimport { MANIFEST_BASE_NAMES, WANTED_LOCKFILE } from '../constants/index.ts';\nimport { hashObjectNullableWithPrefix } from '../crypto.object-hasher/index.ts';\nimport { PnpmError } from '../error/index.ts';\nimport { arrayOfWorkspacePackagesToMap } from '../get-context/index.ts';\nimport {\n  getLockfileImporterId,\n  readCurrentLockfile,\n  readWantedLockfile,\n} from '../lockfile.fs/index.ts';\nimport {\n  calcPatchHashes,\n  createOverridesMapFromParsed,\n  getOutdatedLockfileSetting,\n} from '../lockfile.settings-checker/index.ts';\nimport {\n  linkedPackagesAreUpToDate,\n  getWorkspacePackagesByDirectory,\n  satisfiesPackageManifest,\n} from '../lockfile.verification/index.ts';\nimport { globalWarn, logger } from '../logger/index.ts';\nimport { parseOverrides } from '../parse-overrides/index.ts';\nimport { getPnpmfilePath } from '../pnpmfile/index.ts';\nimport type { WorkspacePackages } from '../resolver-base/index.ts';\nimport type {\n  DependencyManifest,\n  GlobalPkgDir,\n  LockFileDir,\n  Project,\n  ProjectId,\n  ProjectManifest,\n  ProjectRootDir,\n  ProjectRootDirRealPath,\n  WorkspaceDir,\n} from '../types/index.ts';\nimport { findWorkspacePackages } from '../workspace.find-packages/index.ts';\nimport { readWorkspaceManifest } from '../workspace.read-manifest/index.ts';\nimport {\n  type WorkspaceState,\n  type WorkspaceStateSettings,\n  loadWorkspaceState,\n  updateWorkspaceState,\n} from '../workspace.state/index.ts';\nimport { assertLockfilesEqual } from './assertLockfilesEqual.ts';\nimport { safeStat, safeStatSync } from './safeStat.ts';\nimport { statManifestFile } from './statManifestFile.ts';\nimport type { LockfileObject } from '../lockfile.types/index.ts';\n\nexport type CheckDepsStatusOptions = Pick<\n  Config,\n  | 'allProjects'\n  | 'autoInstallPeers'\n  | 'catalogs'\n  | 'excludeLinksFromLockfile'\n  | 'injectWorkspacePackages'\n  | 'linkWorkspacePackages'\n  | 'hooks'\n  | 'peersSuffixMaxLength'\n  | 'rootProjectManifest'\n  | 'rootProjectManifestDir'\n  | 'sharedWorkspaceLockfile'\n  | 'virtualStoreDir'\n  | 'workspaceDir'\n  | 'patchesDir'\n  | 'pnpmfile'\n  | 'configDependencies'\n> & {\n  ignoreFilteredInstallCache?: boolean;\n  ignoredWorkspaceStateSettings?: Array<keyof WorkspaceStateSettings>;\n} & WorkspaceStateSettings;\n\nexport interface CheckDepsStatusResult {\n  upToDate: boolean | undefined;\n  issue?: string | undefined;\n  workspaceState: WorkspaceState | undefined;\n}\n\nexport async function checkDepsStatus(\n  opts: CheckDepsStatusOptions\n): Promise<CheckDepsStatusResult> {\n  const workspaceState = loadWorkspaceState(\n    opts.workspaceDir ?? opts.rootProjectManifestDir\n  );\n  if (!workspaceState) {\n    return {\n      upToDate: false,\n      issue: 'Cannot check whether dependencies are outdated',\n      workspaceState,\n    };\n  }\n  try {\n    return await _checkDepsStatus(opts, workspaceState);\n  } catch (error) {\n    if (\n      util.types.isNativeError(error) &&\n      'code' in error &&\n      String(error.code).startsWith('ERR_PNPM_RUN_CHECK_DEPS_')\n    ) {\n      return {\n        upToDate: false,\n        issue: error.message,\n        workspaceState,\n      };\n    }\n    // This function never throws an error.\n    // We want to ensure that pnpm CLI never crashes when checking the status of dependencies.\n    // In the worst-case scenario, the install will run redundantly.\n    return {\n      upToDate: undefined,\n      issue: util.types.isNativeError(error) ? error.message : undefined,\n      workspaceState,\n    };\n  }\n}\n\nasync function _checkDepsStatus(\n  opts: CheckDepsStatusOptions,\n  workspaceState?: WorkspaceState | undefined\n): Promise<CheckDepsStatusResult> {\n  const {\n    allProjects,\n    autoInstallPeers,\n    injectWorkspacePackages,\n    catalogs,\n    excludeLinksFromLockfile,\n    linkWorkspacePackages,\n    rootProjectManifest,\n    rootProjectManifestDir,\n    sharedWorkspaceLockfile,\n    workspaceDir,\n  } = opts;\n\n  const rootManifestOptions = rootProjectManifest\n    ? getOptionsFromRootManifest(rootProjectManifestDir, rootProjectManifest)\n    : undefined;\n\n  if (\n    opts.ignoreFilteredInstallCache === true &&\n    typeof workspaceState?.filteredInstall !== 'undefined'\n  ) {\n    return { upToDate: undefined, workspaceState };\n  }\n\n  if (typeof workspaceState?.settings !== 'undefined') {\n    const ignoredSettings = new Set<keyof WorkspaceStateSettings>(\n      opts.ignoredWorkspaceStateSettings\n    );\n\n    ignoredSettings.add('catalogs'); // 'catalogs' is always ignored\n\n    for (const [settingName, settingValue] of Object.entries(\n      workspaceState.settings\n    )) {\n      if (ignoredSettings.has(settingName as keyof WorkspaceStateSettings))\n        continue;\n      if (\n        !equals.default(\n          settingValue,\n          opts[settingName as keyof WorkspaceStateSettings]\n        )\n      ) {\n        return {\n          upToDate: false,\n          issue: `The value of the ${settingName} setting has changed`,\n          workspaceState,\n        };\n      }\n    }\n  }\n\n  if (\n    (opts.configDependencies != null ||\n      typeof workspaceState?.configDependencies !== 'undefined') &&\n    !equals.default(\n      opts.configDependencies ?? {},\n      workspaceState?.configDependencies ?? {}\n    )\n  ) {\n    return {\n      upToDate: false,\n      issue: 'Configuration dependencies are not up to date',\n      workspaceState,\n    };\n  }\n\n  if (allProjects && typeof workspaceDir === 'string' && workspaceDir !== '') {\n    if (\n      !equals.default(\n        filter.default(\n          (value) => value != null,\n          workspaceState?.settings.catalogs ?? {}\n        ),\n        filter.default((value) => value != null, catalogs ?? {})\n      )\n    ) {\n      return {\n        upToDate: false,\n        issue: 'Catalogs cache outdated',\n        workspaceState,\n      };\n    }\n\n    if (\n      allProjects.length !==\n        Object.keys(workspaceState?.projects ?? {}).length ||\n      !allProjects.every((currentProject: Project): boolean => {\n        const prevProject = workspaceState?.projects[currentProject.rootDir];\n\n        if (typeof prevProject === 'undefined') {\n          return false;\n        }\n\n        return (\n          prevProject.name === currentProject.manifest.name &&\n          (prevProject.version ?? '0.0.0') === currentProject.manifest.version\n        );\n      })\n    ) {\n      return {\n        upToDate: false,\n        issue: 'The workspace structure has changed since last install',\n        workspaceState,\n      };\n    }\n\n    const allManifestStats = await Promise.all(\n      allProjects.map(\n        async (\n          project: Project\n        ): Promise<{\n          project: Project;\n          manifestStats: fs.Stats;\n          modulesDirStats: fs.Stats | undefined;\n        }> => {\n          const modulesDirStatsPromise = safeStat(\n            path.join(project.rootDir, 'node_modules')\n          );\n\n          const manifestStats = await statManifestFile(project.rootDir);\n\n          if (typeof manifestStats === 'undefined') {\n            // this error should not happen\n            throw new Error(\n              `Cannot find one of ${MANIFEST_BASE_NAMES.join(', ')} in ${project.rootDir}`\n            );\n          }\n\n          return {\n            project,\n            manifestStats,\n            modulesDirStats: await modulesDirStatsPromise,\n          };\n        }\n      )\n    );\n\n    if (typeof workspaceState?.filteredInstall === 'undefined') {\n      for (const { modulesDirStats, project } of allManifestStats) {\n        if (modulesDirStats) {\n          continue;\n        }\n\n        if (\n          isEmpty.default({\n            ...project.manifest.dependencies,\n            ...project.manifest.devDependencies,\n          })\n        ) {\n          continue;\n        }\n\n        const id = project.manifest.name || project.rootDir;\n\n        return {\n          upToDate: false,\n          issue: `Workspace package ${id} has dependencies but does not have a modules directory`,\n          workspaceState,\n        };\n      }\n    }\n\n    const modifiedProjects = allManifestStats.filter(\n      ({\n        manifestStats,\n      }: {\n        project: Project;\n        manifestStats: fs.Stats;\n        modulesDirStats: fs.Stats | undefined;\n      }): boolean => {\n        return (\n          manifestStats.mtime.valueOf() >\n          (workspaceState?.lastValidatedTimestamp ?? 0)\n        );\n      }\n    );\n\n    if (modifiedProjects.length === 0) {\n      logger.debug({\n        msg: 'No manifest files were modified since the last validation. Exiting check.',\n      });\n\n      return { upToDate: true, workspaceState };\n    }\n\n    const issue = await patchesAreModified({\n      rootManifestOptions,\n      rootDir: rootProjectManifestDir,\n      lastValidatedTimestamp: workspaceState?.lastValidatedTimestamp,\n      pnpmfile: opts.pnpmfile,\n      hadPnpmfile: workspaceState?.pnpmfileExists,\n    });\n\n    if (typeof issue === 'string' && issue !== '') {\n      return { upToDate: false, issue, workspaceState };\n    }\n\n    logger.debug({\n      msg: 'Some manifest files were modified since the last validation. Continuing check.',\n    });\n\n    let readWantedLockfileAndDir: (projectDir: string) => Promise<{\n      wantedLockfile: LockfileObject;\n      wantedLockfileDir: string;\n    }>;\n\n    if (sharedWorkspaceLockfile === true) {\n      let wantedLockfileStats: fs.Stats;\n\n      try {\n        wantedLockfileStats = fs.statSync(\n          path.join(workspaceDir, WANTED_LOCKFILE)\n        );\n      } catch (error) {\n        if (\n          util.types.isNativeError(error) &&\n          'code' in error &&\n          error.code === 'ENOENT'\n        ) {\n          return throwLockfileNotFound(workspaceDir);\n        }\n\n        throw error;\n      }\n\n      const wantedLockfilePromise = readWantedLockfile(workspaceDir, {\n        ignoreIncompatible: false,\n      });\n\n      if (\n        wantedLockfileStats.mtime.valueOf() >\n        (workspaceState?.lastValidatedTimestamp ?? 0)\n      ) {\n        const virtualStoreDir =\n          opts.virtualStoreDir ??\n          path.join(workspaceDir, 'node_modules', '.pnpm');\n\n        const currentLockfile = await readCurrentLockfile(virtualStoreDir, {\n          ignoreIncompatible: false,\n        });\n\n        const wantedLockfile =\n          (await wantedLockfilePromise) ?? throwLockfileNotFound(workspaceDir);\n\n        assertLockfilesEqual(currentLockfile, wantedLockfile, workspaceDir);\n      }\n\n      readWantedLockfileAndDir = async (): Promise<{\n        wantedLockfile: LockfileObject;\n        wantedLockfileDir: string;\n      }> => {\n        return {\n          wantedLockfile:\n            (await wantedLockfilePromise) ??\n            throwLockfileNotFound(workspaceDir),\n          wantedLockfileDir: workspaceDir,\n        };\n      };\n    } else {\n      readWantedLockfileAndDir = async (\n        wantedLockfileDir: string\n      ): Promise<{\n        wantedLockfile: LockfileObject;\n        wantedLockfileDir: string;\n      }> => {\n        const wantedLockfilePromise = readWantedLockfile(wantedLockfileDir, {\n          ignoreIncompatible: false,\n        });\n\n        const wantedLockfileStats = await safeStat(\n          path.join(wantedLockfileDir, WANTED_LOCKFILE)\n        );\n\n        if (typeof wantedLockfileStats === 'undefined') {\n          return throwLockfileNotFound(wantedLockfileDir);\n        }\n\n        if (\n          wantedLockfileStats.mtime.valueOf() >\n          (workspaceState?.lastValidatedTimestamp ?? 0)\n        ) {\n          const virtualStoreDir =\n            opts.virtualStoreDir ??\n            path.join(wantedLockfileDir, 'node_modules', '.pnpm');\n\n          const currentLockfile = await readCurrentLockfile(virtualStoreDir, {\n            ignoreIncompatible: false,\n          });\n\n          const wantedLockfile =\n            (await wantedLockfilePromise) ??\n            throwLockfileNotFound(wantedLockfileDir);\n\n          assertLockfilesEqual(\n            currentLockfile,\n            wantedLockfile,\n            wantedLockfileDir\n          );\n        }\n\n        return {\n          wantedLockfile:\n            (await wantedLockfilePromise) ??\n            throwLockfileNotFound(wantedLockfileDir),\n          wantedLockfileDir,\n        };\n      };\n    }\n\n    type GetProjectId = (project: Pick<Project, 'rootDir'>) => ProjectId;\n\n    const getProjectId: GetProjectId =\n      sharedWorkspaceLockfile === true\n        ? (project: Pick<Project, 'rootDir'>): ProjectId => {\n            return getLockfileImporterId(workspaceDir, project.rootDir);\n          }\n        : (): ProjectId => {\n            return '.' as ProjectId;\n          };\n\n    const getWorkspacePackages = once.default(\n      arrayOfWorkspacePackagesToMap.bind(null, allProjects)\n    );\n\n    const getManifestsByDir = once.default(\n      (): Record<string, DependencyManifest> => {\n        return getWorkspacePackagesByDirectory(getWorkspacePackages());\n      }\n    );\n\n    const assertCtx: AssertWantedLockfileUpToDateContext = {\n      autoInstallPeers,\n      injectWorkspacePackages,\n      config: opts,\n      excludeLinksFromLockfile,\n      linkWorkspacePackages,\n      getManifestsByDir,\n      getWorkspacePackages,\n      rootDir: workspaceDir,\n      rootManifestOptions,\n    };\n\n    try {\n      await Promise.all(\n        modifiedProjects.map(\n          async ({\n            project,\n          }: {\n            project: Project;\n            manifestStats: fs.Stats;\n            modulesDirStats: fs.Stats | undefined;\n          }): Promise<void> => {\n            const { wantedLockfile, wantedLockfileDir } =\n              await readWantedLockfileAndDir(project.rootDir);\n\n            await assertWantedLockfileUpToDate(assertCtx, {\n              projectDir: project.rootDir,\n              projectId: getProjectId(project),\n              projectManifest: project.manifest,\n              wantedLockfile,\n              wantedLockfileDir,\n            });\n          }\n        )\n      );\n    } catch (err) {\n      return {\n        upToDate: false,\n        issue:\n          util.types.isNativeError(err) && 'message' in err\n            ? err.message\n            : undefined,\n        workspaceState,\n      };\n    }\n\n    // update lastValidatedTimestamp to prevent pointless repeat\n    await updateWorkspaceState({\n      allProjects,\n      workspaceDir,\n      pnpmfileExists: workspaceState?.pnpmfileExists,\n      settings: opts,\n      filteredInstall: workspaceState?.filteredInstall,\n    });\n\n    return { upToDate: true, workspaceState };\n  }\n\n  if (typeof allProjects === 'undefined') {\n    const workspaceRoot = workspaceDir ?? rootProjectManifestDir;\n\n    const workspaceManifest = await readWorkspaceManifest(workspaceRoot);\n\n    if (typeof (workspaceManifest ?? workspaceDir) === 'undefined') {\n      const allProjects = await findWorkspacePackages(rootProjectManifestDir, {\n        patterns: workspaceManifest?.packages,\n        sharedWorkspaceLockfile,\n      });\n\n      return checkDepsStatus({\n        ...opts,\n        allProjects,\n      });\n    }\n  } else {\n    // this error shouldn't happen\n    throw new Error(\n      'Impossible variant: allProjects is defined but workspaceDir is undefined'\n    );\n  }\n\n  if (typeof rootProjectManifest !== 'undefined') {\n    const virtualStoreDir = path.join(\n      rootProjectManifestDir,\n      'node_modules',\n      '.pnpm'\n    );\n\n    const currentLockfilePromise = readCurrentLockfile(virtualStoreDir, {\n      ignoreIncompatible: false,\n    });\n\n    const wantedLockfilePromise = readWantedLockfile(rootProjectManifestDir, {\n      ignoreIncompatible: false,\n    });\n\n    const [currentLockfileStats, wantedLockfileStats, manifestStats] =\n      await Promise.all([\n        safeStat(path.join(virtualStoreDir, 'lock.yaml')),\n        safeStat(path.join(rootProjectManifestDir, WANTED_LOCKFILE)),\n        statManifestFile(rootProjectManifestDir),\n      ]);\n\n    if (!wantedLockfileStats) {\n      return throwLockfileNotFound(rootProjectManifestDir);\n    }\n\n    const issue = await patchesAreModified({\n      rootManifestOptions,\n      rootDir: rootProjectManifestDir,\n      lastValidatedTimestamp: wantedLockfileStats.mtime.valueOf(),\n      pnpmfile: opts.pnpmfile,\n      hadPnpmfile: workspaceState?.pnpmfileExists,\n    });\n\n    if (typeof issue !== 'undefined') {\n      return { upToDate: false, issue, workspaceState };\n    }\n\n    if (\n      currentLockfileStats &&\n      wantedLockfileStats.mtime.valueOf() > currentLockfileStats.mtime.valueOf()\n    ) {\n      const currentLockfile = await currentLockfilePromise;\n\n      const wantedLockfile =\n        (await wantedLockfilePromise) ??\n        throwLockfileNotFound(rootProjectManifestDir);\n\n      assertLockfilesEqual(\n        currentLockfile,\n        wantedLockfile,\n        rootProjectManifestDir\n      );\n    }\n\n    if (!manifestStats) {\n      // this error should not happen\n      throw new Error(\n        `Cannot find one of ${MANIFEST_BASE_NAMES.join(', ')} in ${rootProjectManifestDir}`\n      );\n    }\n\n    if (manifestStats.mtime.valueOf() > wantedLockfileStats.mtime.valueOf()) {\n      logger.debug({\n        msg: 'The manifest is newer than the lockfile. Continuing check.',\n      });\n\n      try {\n        await assertWantedLockfileUpToDate(\n          {\n            autoInstallPeers,\n            injectWorkspacePackages,\n            config: opts,\n            excludeLinksFromLockfile,\n            linkWorkspacePackages,\n            getManifestsByDir: () => ({}),\n            getWorkspacePackages: () => undefined,\n            rootDir: rootProjectManifestDir,\n            rootManifestOptions,\n          },\n          {\n            projectDir: rootProjectManifestDir,\n            projectId: '.' as ProjectId,\n            projectManifest: rootProjectManifest,\n            wantedLockfile:\n              (await wantedLockfilePromise) ??\n              throwLockfileNotFound(rootProjectManifestDir),\n            wantedLockfileDir: rootProjectManifestDir,\n          }\n        );\n      } catch (err) {\n        return {\n          upToDate: false,\n          issue:\n            util.types.isNativeError(err) && 'message' in err\n              ? err.message\n              : undefined,\n          workspaceState,\n        };\n      }\n    } else if (currentLockfileStats) {\n      logger.debug({\n        msg: 'The manifest file is not newer than the lockfile. Exiting check.',\n      });\n    } else {\n      const wantedLockfile =\n        (await wantedLockfilePromise) ??\n        throwLockfileNotFound(rootProjectManifestDir);\n\n      if (!isEmpty.default(wantedLockfile.packages ?? {})) {\n        throw new PnpmError(\n          'RUN_CHECK_DEPS_NO_DEPS',\n          'The lockfile requires dependencies but none were installed',\n          {\n            hint: 'Run `pnpm install` to install dependencies',\n          }\n        );\n      }\n    }\n\n    return { upToDate: true, workspaceState };\n  }\n\n  // `opts.allProject` being `undefined` means that the run command was not run with `--recursive`.\n  // `rootProjectManifest` being `undefined` means that there's no root manifest.\n  // Both means that `pnpm run` would fail, so checking lockfiles here is pointless.\n  globalWarn('Skipping check.');\n\n  return { upToDate: undefined, workspaceState };\n}\n\ntype AssertWantedLockfileUpToDateContext = {\n  autoInstallPeers?: boolean | undefined;\n  config: CheckDepsStatusOptions;\n  excludeLinksFromLockfile?: boolean | undefined;\n  injectWorkspacePackages?: boolean | undefined;\n  linkWorkspacePackages: boolean | 'deep';\n  getManifestsByDir: () => Record<string, DependencyManifest>;\n  getWorkspacePackages: () => WorkspacePackages | undefined;\n  rootDir:\n    | ProjectRootDir\n    | ProjectRootDirRealPath\n    | GlobalPkgDir\n    | WorkspaceDir\n    | LockFileDir;\n  rootManifestOptions?: OptionsFromRootManifest | undefined;\n};\n\ninterface AssertWantedLockfileUpToDateOptions {\n  projectDir: string;\n  projectId: ProjectId;\n  projectManifest: ProjectManifest;\n  wantedLockfile: LockfileObject;\n  wantedLockfileDir: string;\n}\n\nasync function assertWantedLockfileUpToDate(\n  ctx: AssertWantedLockfileUpToDateContext,\n  opts: AssertWantedLockfileUpToDateOptions\n): Promise<void> {\n  const {\n    autoInstallPeers,\n    config,\n    excludeLinksFromLockfile,\n    linkWorkspacePackages,\n    getManifestsByDir,\n    getWorkspacePackages,\n    rootDir,\n    rootManifestOptions,\n  } = ctx;\n\n  const {\n    projectDir,\n    projectId,\n    projectManifest,\n    wantedLockfile,\n    wantedLockfileDir,\n  } = opts;\n\n  const [patchedDependencies, pnpmfileChecksum] = await Promise.all([\n    calcPatchHashes(rootManifestOptions?.patchedDependencies ?? {}, rootDir),\n    config.hooks?.calculatePnpmfileChecksum?.(),\n  ]);\n\n  const outdatedLockfileSettingName = getOutdatedLockfileSetting(\n    wantedLockfile,\n    {\n      autoInstallPeers: config.autoInstallPeers,\n      injectWorkspacePackages: config.injectWorkspacePackages,\n      excludeLinksFromLockfile: config.excludeLinksFromLockfile,\n      peersSuffixMaxLength: config.peersSuffixMaxLength,\n      overrides: createOverridesMapFromParsed(\n        parseOverrides(rootManifestOptions?.overrides ?? {}, config.catalogs)\n      ),\n      ignoredOptionalDependencies:\n        rootManifestOptions?.ignoredOptionalDependencies?.sort(),\n      packageExtensionsChecksum: hashObjectNullableWithPrefix(\n        rootManifestOptions?.packageExtensions\n      ),\n      patchedDependencies,\n      pnpmfileChecksum,\n    }\n  );\n\n  if (outdatedLockfileSettingName) {\n    throw new PnpmError(\n      'RUN_CHECK_DEPS_OUTDATED_LOCKFILE',\n      `Setting ${outdatedLockfileSettingName} of lockfile in ${wantedLockfileDir} is outdated`,\n      {\n        hint: 'Run `pnpm install` to update the lockfile',\n      }\n    );\n  }\n\n  if (\n    !satisfiesPackageManifest(\n      {\n        autoInstallPeers,\n        excludeLinksFromLockfile,\n      },\n      wantedLockfile.importers?.[projectId],\n      projectManifest\n    ).satisfies\n  ) {\n    throw new PnpmError(\n      'RUN_CHECK_DEPS_UNSATISFIED_PKG_MANIFEST',\n      `The lockfile in ${wantedLockfileDir} does not satisfy project of id ${projectId}`,\n      {\n        hint: 'Run `pnpm install` to update the lockfile',\n      }\n    );\n  }\n\n  if (\n    !(await linkedPackagesAreUpToDate(\n      {\n        linkWorkspacePackages: linkWorkspacePackages !== false,\n        lockfileDir: wantedLockfileDir,\n        manifestsByDir: getManifestsByDir(),\n        workspacePackages: getWorkspacePackages(),\n        lockfilePackages: wantedLockfile.packages,\n      },\n      {\n        dir: projectDir,\n        manifest: projectManifest,\n        snapshot: wantedLockfile.importers?.[projectId],\n      }\n    ))\n  ) {\n    throw new PnpmError(\n      'RUN_CHECK_DEPS_LINKED_PKGS_OUTDATED',\n      `The linked packages by ${projectDir} is outdated`,\n      {\n        hint: 'Run `pnpm install` to update the packages',\n      }\n    );\n  }\n}\n\nfunction throwLockfileNotFound(wantedLockfileDir: string): never {\n  throw new PnpmError(\n    'RUN_CHECK_DEPS_LOCKFILE_NOT_FOUND',\n    `Cannot find a lockfile in ${wantedLockfileDir}`,\n    {\n      hint: 'Run `pnpm install` to create the lockfile',\n    }\n  );\n}\n\nasync function patchesAreModified(opts: {\n  rootManifestOptions: OptionsFromRootManifest | undefined;\n  rootDir:\n    | ProjectRootDir\n    | ProjectRootDirRealPath\n    | GlobalPkgDir\n    | WorkspaceDir\n    | LockFileDir;\n  lastValidatedTimestamp?: number | undefined;\n  pnpmfile: string;\n  hadPnpmfile?: boolean | undefined;\n}): Promise<string | undefined> {\n  if (opts.rootManifestOptions?.patchedDependencies) {\n    const allPatchStats = await Promise.all(\n      Object.values(opts.rootManifestOptions.patchedDependencies).map(\n        (patchFile: string): Promise<fs.Stats | undefined> => {\n          return safeStat(path.relative(opts.rootDir, patchFile));\n        }\n      )\n    );\n\n    if (\n      allPatchStats.some((patch: fs.Stats | undefined): boolean => {\n        return (\n          (patch ? patch.mtime.valueOf() : 0) >\n          (opts.lastValidatedTimestamp ?? 0)\n        );\n      })\n    ) {\n      return 'Patches were modified';\n    }\n  }\n\n  const pnpmfilePath = getPnpmfilePath(opts.rootDir, opts.pnpmfile);\n\n  const pnpmfileStats = safeStatSync(pnpmfilePath);\n  if (\n    pnpmfileStats != null &&\n    pnpmfileStats.mtime.valueOf() > (opts.lastValidatedTimestamp ?? 0)\n  ) {\n    return `pnpmfile at \"${pnpmfilePath}\" was modified`;\n  }\n\n  if (opts.hadPnpmfile === true && pnpmfileStats == null) {\n    return `pnpmfile at \"${pnpmfilePath}\" was removed`;\n  }\n\n  if (opts.hadPnpmfile !== true && typeof pnpmfileStats !== 'undefined') {\n    return `pnpmfile at \"${pnpmfilePath}\" was added`;\n  }\n\n  return undefined;\n}\n"],
  "mappings": "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",
  "names": ["allProjects"]
}
