{"version":3,"file":"index-node.mjs","sources":["../src/utils/object.ts","../src/reporting/ReportError.ts","../src/reporting/cliErrorReporting.ts","../src/checks/checkDuplicateDependencies.ts","../src/checks/checkDirectDuplicateDependencies.ts","../src/utils/semverUtils.ts","../src/checks/checkPeerDependencies.ts","../src/checks/checkDirectPeerDependencies.ts","../src/checks/checkExactVersions.ts","../src/checks/checkIdenticalVersions.ts","../src/checks/checkIdenticalVersionsThanDependency.ts","../src/checks/checkMinRangeSatisfies.ts","../src/checks/checkNoDependencies.ts","../src/checks/checkResolutionsHasExplanation.ts","../src/checks/checkResolutionsVersionsMatch.ts","../src/checks/checkSatisfiesVersions.ts","../src/checks/checkSatisfiesVersionsBetweenDependencies.ts","../src/checks/checkSatisfiesVersionsFromDependency.ts","../src/checks/checkSatisfiesVersionsInDependency.ts","../src/utils/pnpmWorkspaceYaml.ts","../src/utils/pkgJsonUtils.ts","../src/utils/createGetDependencyPackageJson.ts","../src/utils/warnForUtils.ts","../src/check-package.ts","../src/checks/checkMonorepoDirectSubpackagePeerDependencies.ts","../src/check-package-with-workspaces.ts"],"sourcesContent":["export const getKeys = <T extends object>(o: T): (keyof T)[] =>\n  Object.keys(o) as (keyof T)[];\n\nexport const getEntries = <T extends object>(o: T): [keyof T, T[keyof T]][] =>\n  Object.entries(o) as unknown as [keyof T, T[keyof T]][];\n","import type { DependencyValue, Location } from \"../utils/packageTypes.ts\";\n\nexport interface ReportErrorDetails {\n  errorMessage: string;\n  errorDetails?: string;\n  errorTarget?: \"dependencyName\" | \"dependencyValue\";\n  dependency?: Omit<Partial<DependencyValue>, \"name\"> &\n    Pick<DependencyValue, \"name\">;\n  onlyWarns?: boolean;\n  /** @deprecated use fixTo or suggestTo instead */\n  autoFixable?: boolean;\n  fixTo?: string;\n  suggestions?: [\n    dependencyValue: Omit<Partial<DependencyValue>, \"name\"> &\n      Pick<DependencyValue, \"name\">,\n    fixTo: string,\n    description: string,\n  ][];\n}\n\nexport type ReportError = (details: ReportErrorDetails) => void;\n\nexport type CreateReportError = (\n  ruleName: string,\n  pkgPathName: string,\n) => ReportError;\n\nexport const getLocFromDependency = (\n  dependency: Partial<DependencyValue>,\n  errorTarget: ReportErrorDetails[\"errorTarget\"],\n): Location | undefined => {\n  if (!dependency.locations) {\n    return undefined;\n  }\n\n  if (errorTarget === \"dependencyName\") {\n    return dependency.locations.name;\n  }\n  if (errorTarget === \"dependencyValue\") {\n    return dependency.locations.value;\n  }\n  return dependency.locations.all;\n};\n","/* eslint-disable no-console */\n\n// eslint-disable-next-line n/no-unsupported-features/node-builtins\nimport { styleText } from \"node:util\";\nimport type { PackageJson } from \"type-fest\";\nimport { getEntries } from \"../utils/object.ts\";\nimport type { DependencyTypes } from \"../utils/packageTypes.ts\";\nimport type {\n  OnlyWarnsForCheck,\n  OnlyWarnsForMappingCheck,\n} from \"../utils/warnForUtils.ts\";\nimport { getLocFromDependency } from \"./ReportError.ts\";\nimport type { ReportError, ReportErrorDetails } from \"./ReportError.ts\";\n\ntype ReportErrorWithRuleName = ReportErrorDetails & { ruleName: string };\n\ninterface ErrorGroup {\n  messages: ReportErrorWithRuleName[];\n}\n\nconst pathMessages = new Map<\n  string,\n  {\n    generalMessages: ReportErrorWithRuleName[];\n    dependencyGroups: Map<string, ErrorGroup>;\n  }\n>();\n\nlet totalWarnings = 0;\nlet totalErrors = 0;\nlet totalFixable = 0;\n\nfunction formatErrorMessage({\n  errorMessage,\n  errorDetails,\n  errorTarget,\n  onlyWarns,\n  // eslint-disable-next-line @typescript-eslint/no-deprecated\n  autoFixable,\n  fixTo,\n  ruleName,\n  dependency,\n}: ReportErrorWithRuleName): string {\n  const location = dependency && getLocFromDependency(dependency, errorTarget);\n  const locationString = location\n    ? `${location.start.line}:${location.start.column || 0}`\n    : \"0:0\";\n  const messageType = onlyWarns\n    ? styleText(\"yellow\", \"warning\")\n    : styleText(\"red\", \"error\");\n  const dependencyInfo = dependency\n    ? styleText(\n        \"dim\",\n        `${dependency.fieldName ? `${dependency.fieldName} > ` : \"\"}${dependency.name} `,\n      )\n    : \"\";\n  const details = errorDetails ? `: ${errorDetails}` : \"\";\n  const messageTitle = onlyWarns\n    ? styleText(\"yellow\", errorMessage)\n    : styleText(\"red\", errorMessage);\n\n  const isFixable = autoFixable || fixTo;\n  return `  ${locationString}  ${messageType}  ${dependencyInfo}${messageTitle}${details}  ${styleText(\"blue\", ruleName)}${isFixable ? styleText(\"dim\", \" (--fix)\") : \"\"}`;\n}\n\nexport function logMessage(message: ReportErrorWithRuleName): void {\n  if (message.onlyWarns) totalWarnings++;\n  else totalErrors++;\n  // eslint-disable-next-line @typescript-eslint/no-deprecated\n  if (message.autoFixable || message.fixTo) totalFixable++;\n\n  console.error(formatErrorMessage(message));\n}\n\nfunction displayMessagesForPath(\n  path: string,\n  {\n    generalMessages,\n    dependencyGroups,\n  }: {\n    generalMessages: ReportErrorWithRuleName[];\n    dependencyGroups: Map<string, ErrorGroup>;\n  },\n): void {\n  console.error(styleText(\"underline\", path));\n\n  // Display general messages first\n  if (generalMessages.length > 0) {\n    for (const message of generalMessages) {\n      logMessage(message);\n    }\n  }\n\n  // Then display dependency groups\n  for (const [, group] of dependencyGroups) {\n    for (const message of group.messages) {\n      logMessage(message);\n    }\n  }\n\n  console.error(); // Add empty line between files\n}\n\nfunction displayConclusion(): void {\n  if (!totalWarnings && !totalErrors) {\n    console.log(styleText(\"green\", \"\\n✨ No problems found\"));\n    return;\n  }\n\n  const problems = [];\n  if (totalErrors) {\n    problems.push(\n      styleText(\n        \"red\",\n        `${totalErrors} ${totalErrors === 1 ? \"error\" : \"errors\"}`,\n      ),\n    );\n  }\n  if (totalWarnings) {\n    problems.push(\n      styleText(\n        \"yellow\",\n        `${totalWarnings} ${totalWarnings === 1 ? \"warning\" : \"warnings\"}`,\n      ),\n    );\n  }\n\n  console.log(`\\n✖ Found ${problems.join(\" and \")}`);\n\n  if (totalFixable) {\n    console.log(\n      styleText(\n        \"dim\",\n        `\\n${totalFixable} ${totalFixable === 1 ? \"issue\" : \"issues\"} fixable with the --fix option`,\n      ),\n    );\n  }\n}\n\nexport function displayMessages(): void {\n  // Display all collected messages\n  for (const [path, pathData] of pathMessages) {\n    displayMessagesForPath(path, pathData);\n  }\n\n  displayConclusion();\n}\n\nexport function createCliReportError(\n  ruleName: string,\n  pkgPathName: string,\n): ReportError {\n  return function reportError(message: ReportErrorDetails): void {\n    let pathData = pathMessages.get(pkgPathName);\n    if (!pathData) {\n      pathData = {\n        generalMessages: [],\n        dependencyGroups: new Map(),\n      };\n      pathMessages.set(pkgPathName, pathData);\n    }\n\n    if (message.dependency) {\n      const dependencyKey = `${\n        message.dependency.fieldName ? `${message.dependency.fieldName} > ` : \"\"\n      }${message.dependency.name}`;\n      let group = pathData.dependencyGroups.get(dependencyKey);\n      if (!group) {\n        group = { messages: [] };\n        pathData.dependencyGroups.set(dependencyKey, group);\n      }\n      group.messages.push({ ...message, ruleName });\n    } else {\n      pathData.generalMessages.push({ ...message, ruleName });\n    }\n\n    if (!message.onlyWarns) {\n      process.exitCode = 1;\n    }\n  };\n}\n\nexport function reportNotWarnedFor(\n  reportError: ReportError,\n  onlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n  const notWarnedFor = onlyWarnsForCheck.getNotWarnedFor();\n  if (notWarnedFor.length > 0) {\n    reportError({\n      errorMessage: `Invalid config in \"${onlyWarnsForCheck.configName}\"`,\n      errorDetails: `no warning was raised for ${notWarnedFor\n        .map((depName) => `\"${depName}\"`)\n        .join(\", \")}`,\n    });\n  }\n}\n\nexport function reportNotWarnedForMapping(\n  reportError: ReportError,\n  onlyWarnsForMappingCheck: OnlyWarnsForMappingCheck,\n): void {\n  const notWarnedForMapping = onlyWarnsForMappingCheck.getNotWarnedFor();\n  getEntries(notWarnedForMapping).forEach(([depNameOrStar, notWarnedFor]) => {\n    reportError({\n      errorMessage: `Invalid config in \"${onlyWarnsForMappingCheck.configName}\"`,\n      errorDetails: `no warning was raised for ${notWarnedFor\n        .map((depName) => `\"${depName}\"`)\n        .join(\", \")}`,\n    });\n  });\n}\n\nexport function resetMessages(): void {\n  pathMessages.clear();\n  totalWarnings = 0;\n  totalErrors = 0;\n  totalFixable = 0;\n}\n\nexport function fromDependency(\n  depPkg: PackageJson,\n  depType?: DependencyTypes,\n): string {\n  return `from \"${depPkg.name || \"\"}\"${depType ? ` in \"${depType}\"` : \"\"}`;\n}\n\nexport function inDependency(\n  depPkg: PackageJson,\n  depType?: DependencyTypes,\n): string {\n  return `in ${depType ? `\"${depType}\" of ` : \"\"}\"${depPkg.name || \"\"}\"`;\n}\n","import semver from \"semver\";\nimport type { ReportError } from \"../reporting/ReportError.ts\";\nimport type {\n  DependencyTypes,\n  PackageJson,\n  ParsedPackageJson,\n} from \"../utils/packageTypes.ts\";\nimport type { OnlyWarnsForCheck } from \"../utils/warnForUtils.ts\";\n\nexport function checkDuplicateDependencies(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  isPkgLibrary: boolean,\n  depType: DependencyTypes,\n  searchIn: DependencyTypes[],\n  depPkg: PackageJson,\n  onlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n  const dependencies = depPkg[depType];\n  if (!dependencies) return;\n\n  const searchInExisting = searchIn.filter((type) => pkg[type]);\n\n  for (const [depKey, depRange] of Object.entries(dependencies)) {\n    const versionsIn = searchInExisting.filter((type) => pkg[type]![depKey]);\n\n    let allowDuplicated = false;\n    if (\n      versionsIn.length === 2 &&\n      isPkgLibrary &&\n      versionsIn.includes(\"dependencies\") &&\n      versionsIn.includes(\"devDependencies\")\n    ) {\n      const depVersion = pkg.dependencies![depKey];\n      const devDepVersion = pkg.devDependencies![depKey];\n\n      if (depVersion?.value === devDepVersion!.value) {\n        reportError({\n          errorMessage: `Invalid \"${depKey}\" has same version in dependencies and devDependencies`,\n          errorDetails:\n            \"please place it only in dependencies or use range in dependencies\",\n          dependency: depVersion,\n        });\n        continue;\n      }\n      allowDuplicated = true;\n    }\n\n    if (\n      versionsIn.length > 2 ||\n      (versionsIn.length === 2 && !allowDuplicated)\n    ) {\n      reportError({\n        errorMessage: `Invalid \"${depKey}\" present in ${versionsIn.join(\" and \")}`,\n        errorDetails: \"please place it only in dependencies\",\n      });\n    } else {\n      const versions = versionsIn.map((type) => pkg[type]![depKey]);\n\n      versions.forEach((version, index) => {\n        if (!version) return;\n        const versionValue = version.value;\n        if (depRange === \"latest\") return;\n        if (versionValue.startsWith(\"file:\") || depRange.startsWith(\"file:\")) {\n          return;\n        }\n        // https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n        if (\n          versionValue.startsWith(\"workspace:\") ||\n          depRange.startsWith(\"workspace:\")\n        ) {\n          return;\n        }\n\n        // https://yarnpkg.com/features/patching\n        if (\n          versionValue.startsWith(\"patch:\") ||\n          depRange.startsWith(\"patch:\")\n        ) {\n          return;\n        }\n\n        if (\n          semver.satisfies(versionValue, depRange, {\n            includePrerelease: true,\n          }) ||\n          semver.intersects(versionValue, depRange, {\n            includePrerelease: true,\n          })\n        ) {\n          return;\n        }\n\n        // Ignore reporting duplicate when there's a resolution for it\n        if (pkg.resolutions?.[depKey]) {\n          return;\n        }\n\n        const versionInType = versionsIn[index];\n\n        const dependency = versionInType\n          ? pkg[versionInType]![depKey]\n          : undefined;\n\n        reportError({\n          errorMessage: `Invalid duplicate dependency${dependency ? \"\" : `\"${depKey}\"`}`,\n          errorDetails: `\"${versions[0]!.value}\" should satisfies \"${depRange}\" from ${depPkg.name || \"\"} in ${depType}`,\n          onlyWarns: onlyWarnsForCheck.shouldWarnsFor(depKey),\n          dependency,\n        });\n      });\n    }\n  }\n}\n","import type { ReportError } from \"../reporting/ReportError.ts\";\nimport { reportNotWarnedForMapping } from \"../reporting/cliErrorReporting.ts\";\nimport type { GetDependencyPackageJson } from \"../utils/createGetDependencyPackageJson.ts\";\nimport { getKeys } from \"../utils/object.ts\";\nimport type {\n  DependencyTypes,\n  ParsedPackageJson,\n} from \"../utils/packageTypes.ts\";\nimport type { OnlyWarnsForMappingCheck } from \"../utils/warnForUtils.ts\";\nimport { checkDuplicateDependencies } from \"./checkDuplicateDependencies.ts\";\n\nexport function checkDirectDuplicateDependencies(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  isPackageALibrary: boolean,\n  depType: DependencyTypes,\n  getDependencyPackageJson: GetDependencyPackageJson,\n  onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n): void {\n  const checks: {\n    type: DependencyTypes;\n    searchIn: DependencyTypes[];\n  }[] = [\n    {\n      type: \"devDependencies\",\n      searchIn: [\"devDependencies\", \"dependencies\"],\n    },\n    { type: \"dependencies\", searchIn: [\"devDependencies\", \"dependencies\"] },\n  ];\n\n  checks.forEach(({ type, searchIn }) => {\n    const dependencies = pkg[type];\n\n    if (!dependencies) return;\n    for (const depName of getKeys(dependencies)) {\n      const [depPkg] = getDependencyPackageJson(depName);\n      checkDuplicateDependencies(\n        reportError,\n        pkg,\n        isPackageALibrary,\n        depType,\n        searchIn,\n        depPkg,\n        onlyWarnsForCheck.createFor(depName),\n      );\n    }\n  });\n\n  reportNotWarnedForMapping(reportError, onlyWarnsForCheck);\n}\n","import type { SemVer } from \"semver-utils\";\nimport semverUtils from \"semver-utils\";\n\nexport const parse = semverUtils.parse;\nexport const parseRange = semverUtils.parseRange;\n\n// semverUtils.stringify does not support the operator\nfunction stringify(semver: SemVer): string {\n  let str = \"\";\n  if (semver.operator) {\n    str += semver.operator;\n  }\n  str += semver.major || \"0\";\n  str += \".\";\n  str += semver.minor || \"0\";\n  str += \".\";\n  str += semver.patch || \"0\";\n  if (semver.release) {\n    str += `-${semver.release}`;\n  }\n  if (semver.build) {\n    str += `+${semver.build}`;\n  }\n  return str;\n}\n\nexport function getOperator(range: string): string | null {\n  const parsedRange = parseRange(range);\n  if (parsedRange.length !== 1) return null;\n  return parsedRange[0]?.operator || \"\";\n}\n\nexport function changeOperator(\n  range: string,\n  operator: string | null,\n): string | null {\n  if (operator === null) return range;\n  const parsedRange = parseRange(range);\n  if (parsedRange.length !== 1) return null;\n  const parsed = parsedRange[0];\n  if (!parsed) return null;\n  parsed.operator = operator === \"\" ? undefined : operator;\n  return stringify(parsed);\n}\n\nexport function isExactParsedRange(\n  parsedRange: ReturnType<typeof semverUtils.parseRange>,\n): boolean {\n  return parsedRange.length === 1 && parsedRange[0]?.operator === undefined;\n}\n\nexport function isExactRange(range: string): boolean {\n  return isExactParsedRange(parseRange(range));\n}\n\nexport function getRealVersion(version: string): string {\n  if (version.startsWith(\"npm:\")) {\n    const match = /^npm:@?[^@]+@(.*)$/.exec(version);\n    if (!match) throw new Error(`Invalid version match: ${version}`);\n    const [, realVersion] = match;\n    if (realVersion) return realVersion;\n  }\n  if (version.startsWith(\"workspace:\")) {\n    const realVersion = version.slice(\"workspace:\".length);\n    // \"workspace:~\" and \"workspace:^\" are shorthands resolved to the\n    // package's own version at publish time; there is no version to check here.\n    if (realVersion === \"~\" || realVersion === \"^\") return \"*\";\n    return realVersion;\n  }\n\n  return version;\n}\n","import semver from \"semver\";\nimport type { ReportError } from \"../reporting/ReportError.ts\";\nimport { fromDependency } from \"../reporting/cliErrorReporting.ts\";\nimport type {\n  DependencyTypes,\n  PackageJson,\n  ParsedPackageJson,\n} from \"../utils/packageTypes.ts\";\nimport { getRealVersion } from \"../utils/semverUtils.ts\";\nimport type { OnlyWarnsForCheck } from \"../utils/warnForUtils.ts\";\n\nexport function checkSatisfiesPeerDependency(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  type: DependencyTypes,\n  allowedPeerIn: DependencyTypes[],\n  peerDepName: string,\n  range: string,\n  depPkg: PackageJson,\n  invalidOnlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n  const versions = allowedPeerIn.map(\n    (versionsInType) => pkg[versionsInType]?.[peerDepName],\n  );\n\n  versions.forEach((versionV, index) => {\n    if (!versionV) {\n      return;\n    }\n    const version = getRealVersion(versionV.value);\n\n    if (version === \"*\" || version.startsWith(\"patch:\")) {\n      return;\n    }\n\n    const minVersionOfVersion = semver.minVersion(version);\n    if (\n      !minVersionOfVersion ||\n      !semver.satisfies(minVersionOfVersion, range, {\n        includePrerelease: true,\n        loose: true,\n      })\n    ) {\n      reportError({\n        errorMessage: \"Invalid peer dependency version\",\n        errorDetails: `\"${version}\" should satisfies \"${range}\" ${fromDependency(depPkg, type)}`,\n        dependency: allowedPeerIn[index]\n          ? (pkg[allowedPeerIn[index]]?.[peerDepName] ?? undefined)\n          : undefined,\n        onlyWarns: invalidOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n      });\n    }\n  });\n}\n\nexport function checkPeerDependencies(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  type: DependencyTypes,\n  allowedPeerIn: DependencyTypes[],\n  allowMissing: boolean,\n  providedDependencies: [\n    depName: string,\n    depVersion: string,\n    depPkgName: string,\n  ][],\n  depPkg: PackageJson,\n  missingOnlyWarnsForCheck: OnlyWarnsForCheck,\n  invalidOnlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n  const { peerDependencies, peerDependenciesMeta } = depPkg;\n  if (!peerDependencies) return;\n\n  const allowedPeerInExisting = allowedPeerIn.filter(\n    (allowedPeerInType) => pkg[allowedPeerInType],\n  );\n\n  for (const [peerDepName, range] of Object.entries(peerDependencies)) {\n    const versionsIn = allowedPeerInExisting.filter(\n      (allowedPeerInExistingType) =>\n        pkg[allowedPeerInExistingType]?.[peerDepName],\n    );\n    if (versionsIn.length === 0) {\n      if (allowMissing) {\n        continue;\n      }\n\n      const peerDependenciesMetaPeerDep = peerDependenciesMeta?.[peerDepName];\n      if (peerDependenciesMetaPeerDep?.optional) {\n        continue;\n      }\n\n      let additionalDetails = \"\";\n      // satisfied by another direct dependency\n      const providedDependenciesForDepName = providedDependencies.filter(\n        ([depName]) => depName === peerDepName,\n      );\n      if (providedDependenciesForDepName.length > 0) {\n        if (\n          providedDependenciesForDepName.every(([, depRange]) =>\n            semver.intersects(range, getRealVersion(depRange)),\n          )\n        ) {\n          if (process.env.REPORT_PROVIDED_PEER_DEPENDENCIES) {\n            reportError({\n              errorMessage: `Missing \"${peerDepName}\" peer dependency ${fromDependency(depPkg, type)}`,\n              errorDetails: `but it is provided by ${providedDependenciesForDepName.map(([depName, depRange, depPkgName]) => depPkgName).join(\", \")}`,\n              dependency: { name: peerDepName },\n              onlyWarns:\n                process.env.REPORT_PROVIDED_PEER_DEPENDENCIES === \"warn\",\n            });\n          }\n          continue;\n        }\n\n        additionalDetails +=\n          \" (required as some dependencies have non-satisfying range too)\";\n      }\n\n      reportError({\n        errorMessage: `Missing \"${peerDepName}\" peer dependency ${fromDependency(depPkg, type)}`,\n        errorDetails: `it should satisfies \"${range}\" and be in ${allowedPeerIn.join(\" or \")}${additionalDetails}`,\n        dependency: { name: peerDepName },\n        onlyWarns: missingOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n      });\n    } else {\n      checkSatisfiesPeerDependency(\n        reportError,\n        pkg,\n        type,\n        allowedPeerInExisting,\n        peerDepName,\n        range,\n        depPkg,\n        invalidOnlyWarnsForCheck,\n      );\n    }\n  }\n}\n","import semver from \"semver\";\nimport type { ReportError } from \"../reporting/ReportError.ts\";\nimport type { GetDependencyPackageJson } from \"../utils/createGetDependencyPackageJson.ts\";\nimport { getKeys } from \"../utils/object.ts\";\nimport type {\n  DependencyTypes,\n  PackageJson,\n  ParsedPackageJson,\n  RegularDependencyTypes,\n} from \"../utils/packageTypes.ts\";\nimport { getRealVersion } from \"../utils/semverUtils.ts\";\nimport type { OnlyWarnsForMappingCheck } from \"../utils/warnForUtils.ts\";\nimport { checkPeerDependencies } from \"./checkPeerDependencies.ts\";\n\nexport const regularDependencyTypes: RegularDependencyTypes[] = [\n  \"devDependencies\",\n  \"dependencies\",\n  \"optionalDependencies\",\n];\n\nconst getAllowedPeerInFromType = (\n  depPkgType: RegularDependencyTypes,\n  isLibrary: boolean,\n): DependencyTypes[] => {\n  switch (depPkgType) {\n    case \"devDependencies\":\n      return [\"devDependencies\", \"dependencies\"];\n    case \"dependencies\":\n      return isLibrary\n        ? [\"dependencies\", \"peerDependencies\"]\n        : [\"devDependencies\", \"dependencies\"];\n    case \"optionalDependencies\":\n      return isLibrary\n        ? [\"dependencies\", \"optionalDependencies\", \"peerDependencies\"]\n        : [\"devDependencies\", \"dependencies\"];\n\n    // no default\n  }\n};\n\nexport function checkDirectPeerDependencies(\n  reportError: ReportError,\n  isLibrary: boolean,\n  pkg: ParsedPackageJson,\n  getDependencyPackageJson: GetDependencyPackageJson,\n  missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n  invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n): void {\n  const allDepPkgs: {\n    name: string;\n    type: RegularDependencyTypes;\n    pkg: PackageJson;\n    hasDirectMatchingPeerDependency: boolean;\n  }[] = [];\n  const allDirectDependenciesDependencies: [\n    depName: string,\n    depVersion: string,\n    depPkgName: string,\n  ][] = [];\n\n  regularDependencyTypes.forEach((depType) => {\n    const dependencies = pkg[depType];\n    if (!dependencies) return;\n    for (const depName of getKeys(dependencies)) {\n      const [depPkg] = getDependencyPackageJson(depName);\n      allDepPkgs.push({\n        name: depName,\n        type: depType,\n        pkg: depPkg,\n        hasDirectMatchingPeerDependency: pkg.peerDependencies?.[depName]\n          ? semver.intersects(\n              getRealVersion(dependencies[depName]!.value),\n              getRealVersion(pkg.peerDependencies[depName].value),\n            )\n          : false,\n      });\n\n      if (depPkg.dependencies && !isLibrary) {\n        allDirectDependenciesDependencies.push(\n          ...Object.entries(depPkg.dependencies).map<[string, string, string]>(\n            ([depName, depVersion]) => [depName, depVersion, depPkg.name || \"\"],\n          ),\n        );\n      }\n    }\n  });\n\n  for (const {\n    name: depName,\n    type: depType,\n    pkg: depPkg,\n    hasDirectMatchingPeerDependency,\n  } of allDepPkgs) {\n    if (depPkg.peerDependencies) {\n      checkPeerDependencies(\n        reportError,\n        pkg,\n        depType,\n        getAllowedPeerInFromType(depType, isLibrary),\n        hasDirectMatchingPeerDependency,\n        allDirectDependenciesDependencies,\n        depPkg,\n        missingOnlyWarnsForCheck.createFor(depName),\n        invalidOnlyWarnsForCheck.createFor(depName),\n      );\n    }\n  }\n}\n","import semver from \"semver\";\nimport type { ReportError } from \"../reporting/ReportError.ts\";\nimport { reportNotWarnedFor } from \"../reporting/cliErrorReporting.ts\";\nimport type { GetDependencyPackageJson } from \"../utils/createGetDependencyPackageJson.ts\";\nimport type {\n  DependencyTypes,\n  DependencyValue,\n  ParsedPackageJson,\n} from \"../utils/packageTypes.ts\";\nimport { getRealVersion } from \"../utils/semverUtils.ts\";\nimport type { OnlyWarnsFor, OnlyWarnsForCheck } from \"../utils/warnForUtils.ts\";\n\nexport interface CheckExactVersionsOptions {\n  getDependencyPackageJson?: GetDependencyPackageJson;\n  onlyWarnsForCheck: OnlyWarnsForCheck;\n  internalExactVersionsIgnore?: OnlyWarnsFor;\n  tryToAutoFix?: boolean;\n}\n\nconst isVersionRange = (version: string): boolean =>\n  version.startsWith(\"^\") ||\n  version.startsWith(\"~\") ||\n  version.startsWith(\">\") ||\n  version.startsWith(\"<\");\n\nexport function checkExactVersion(\n  reportError: ReportError,\n  dependencyValue: DependencyValue,\n  {\n    getDependencyPackageJson,\n    onlyWarnsForCheck,\n    internalExactVersionsIgnore,\n    tryToAutoFix = false,\n  }: CheckExactVersionsOptions,\n): void {\n  const dependencyName = dependencyValue.name;\n  const version = getRealVersion(dependencyValue.value);\n\n  if (isVersionRange(version)) {\n    if (internalExactVersionsIgnore?.includes(dependencyName)) {\n      return;\n    }\n    const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName);\n    if (!shouldOnlyWarn && getDependencyPackageJson) {\n      let resolvedDep;\n      try {\n        [resolvedDep] = getDependencyPackageJson(dependencyName);\n      } catch {\n        resolvedDep = null;\n      }\n      if (!resolvedDep?.version) {\n        reportError({\n          errorMessage: \"Unexpected range value\",\n          errorDetails: `expecting \"${version}\" to be exact${\n            tryToAutoFix\n              ? `, autofix failed to resolve \"${dependencyName}\"`\n              : \"\"\n          }`,\n          errorTarget: \"dependencyValue\",\n          dependency: dependencyValue,\n          onlyWarns: shouldOnlyWarn,\n        });\n      } else if (\n        !semver.satisfies(resolvedDep.version, version, {\n          includePrerelease: true,\n        })\n      ) {\n        reportError({\n          errorMessage: \"Unexpected range value\",\n          errorDetails: `expecting \"${version}\" to be exact${\n            tryToAutoFix\n              ? `, autofix failed as resolved version \"${resolvedDep.version}\" doesn't satisfy \"${version}\"`\n              : \"\"\n          }`,\n          dependency: dependencyValue,\n          errorTarget: \"dependencyValue\",\n          onlyWarns: shouldOnlyWarn,\n        });\n      } else if (tryToAutoFix) {\n        dependencyValue.changeValue(resolvedDep.version);\n      } else {\n        reportError({\n          errorMessage: \"Unexpected range value\",\n          errorDetails: `expecting \"${version}\" to be exact \"${resolvedDep.version}\"`,\n          dependency: dependencyValue,\n          errorTarget: \"dependencyValue\",\n          onlyWarns: shouldOnlyWarn,\n          fixTo: resolvedDep.version,\n        });\n      }\n    } else {\n      let exactVersion = version.slice(version[1] === \"=\" ? 2 : 1);\n      if (exactVersion.split(\".\").length < 3) {\n        if (exactVersion.split(\".\").length === 1) {\n          exactVersion = `${exactVersion}.0.0`;\n        } else {\n          exactVersion = `${exactVersion}.0`;\n        }\n      }\n      reportError({\n        errorMessage: \"Unexpected range value\",\n        errorDetails: `expecting \"${version}\" to be exact \"${exactVersion}\"`,\n        errorTarget: \"dependencyValue\",\n        dependency: dependencyValue,\n        onlyWarns: shouldOnlyWarn,\n      });\n    }\n  }\n}\n\nexport function checkExactVersions(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  types: DependencyTypes[],\n  {\n    getDependencyPackageJson,\n    onlyWarnsForCheck,\n    internalExactVersionsIgnore,\n    tryToAutoFix = false,\n  }: CheckExactVersionsOptions,\n): void {\n  for (const type of types) {\n    const pkgDependencies = pkg[type];\n    if (!pkgDependencies) continue;\n\n    for (const dependencyValue of Object.values(pkgDependencies)) {\n      if (!dependencyValue) continue;\n      checkExactVersion(reportError, dependencyValue, {\n        getDependencyPackageJson,\n        onlyWarnsForCheck,\n        internalExactVersionsIgnore,\n        tryToAutoFix,\n      });\n    }\n  }\n\n  reportNotWarnedFor(reportError, onlyWarnsForCheck);\n}\n","import type { ReportError } from \"../reporting/ReportError.ts\";\nimport { getKeys } from \"../utils/object.ts\";\nimport type {\n  DependencyTypes,\n  ParsedPackageJson,\n} from \"../utils/packageTypes.ts\";\nimport type { OnlyWarnsForCheck } from \"../utils/warnForUtils.ts\";\n\nexport function checkIdenticalVersions(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  type: DependencyTypes,\n  deps: Record<string, Partial<Record<DependencyTypes, string[]>> | string[]>,\n  {\n    onlyWarnsForCheck,\n    tryToAutoFix,\n  }: { onlyWarnsForCheck?: OnlyWarnsForCheck; tryToAutoFix?: boolean } = {},\n): void {\n  const pkgDependencies = pkg[type] || {};\n\n  getKeys(deps).forEach((depKey) => {\n    const version = pkgDependencies[depKey]?.value;\n    if (!version) {\n      reportError({\n        errorMessage: `Unexpected missing ${type}`,\n        errorDetails: `missing \"${depKey}\"`,\n      });\n      return;\n    }\n\n    const depConfigArrayOrObject = deps[depKey];\n    const depConfig = Array.isArray(depConfigArrayOrObject)\n      ? { [type]: depConfigArrayOrObject }\n      : depConfigArrayOrObject;\n\n    if (!depConfig) {\n      throw new Error(`depConfig is undefined for ${depKey}`);\n    }\n\n    getKeys(depConfig).forEach((depKeyType) => {\n      const pkgDependenciesType = pkg[depKeyType] || {};\n      depConfig[depKeyType]?.forEach((depKeyIdentical) => {\n        const depValue = pkgDependenciesType[depKeyIdentical];\n        const value = depValue?.value;\n        if (!value) {\n          reportError({\n            errorMessage: `Missing \"${depKeyIdentical}\" in \"${depKeyType}\"`,\n            errorDetails: `it should be \"${version}\" identical to \"${depKey}\" in \"${type}\"`,\n            dependency: { name: depKeyIdentical, fieldName: depKeyType },\n            onlyWarns: onlyWarnsForCheck?.shouldWarnsFor(depKey),\n          });\n          return;\n        }\n\n        if (value !== version) {\n          if (tryToAutoFix) {\n            depValue.changeValue(version);\n          } else {\n            reportError({\n              errorMessage: `Invalid \"${depKeyIdentical}\"`,\n              errorDetails: `expecting \"${value}\" to be \"${version}\" identical to \"${depKey}\" in \"${type}\"`,\n              dependency: depValue,\n              onlyWarns: onlyWarnsForCheck?.shouldWarnsFor(depKey),\n              fixTo: version,\n            });\n          }\n        }\n      });\n    });\n  });\n}\n","import type { ReportError } from \"../reporting/ReportError.ts\";\nimport {\n  fromDependency,\n  inDependency,\n} from \"../reporting/cliErrorReporting.ts\";\nimport type {\n  DependencyTypes,\n  PackageJson,\n  ParsedPackageJson,\n} from \"../utils/packageTypes.ts\";\nimport type { OnlyWarnsForCheck } from \"../utils/warnForUtils.ts\";\n\nexport function checkIdenticalVersionsThanDependency(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  type: DependencyTypes,\n  depKeys: string[],\n  depPkg: PackageJson,\n  dependencies: PackageJson[DependencyTypes] = {},\n  onlyWarnsForCheck?: OnlyWarnsForCheck,\n): void {\n  const pkgDependencies = pkg[type] || {};\n\n  depKeys.forEach((depKey) => {\n    const version = dependencies[depKey];\n    const depValue = pkgDependencies[depKey];\n\n    if (!version) {\n      reportError({\n        errorMessage: `Unexpected missing dependency \"${depKey}\" ${inDependency(depPkg)}`,\n        errorDetails: `config expects \"${depKey}\" to be present`,\n      });\n      return;\n    }\n\n    if (version.startsWith(\"^\") || version.startsWith(\"~\")) {\n      reportError({\n        errorMessage: `Unexpected range dependency \"${depKey}\" ${inDependency(depPkg)}`,\n        errorDetails:\n          \"perhaps use checkSatisfiesVersionsFromDependency() instead\",\n      });\n      return;\n    }\n\n    const value = depValue?.value;\n\n    if (!value) {\n      reportError({\n        errorMessage: `Missing \"${depKey}\"`,\n        errorDetails: `expecting to be \"${version}\"`,\n        dependency: { name: depKey, fieldName: type },\n        onlyWarns: onlyWarnsForCheck?.shouldWarnsFor(depKey),\n      });\n      return;\n    }\n\n    if (value !== version) {\n      reportError({\n        errorMessage: `Invalid \"${value}\"`,\n        errorDetails: `expecting \"${value}\" to be \"${version}\" ${fromDependency(depPkg)}`,\n        dependency: depValue,\n        onlyWarns: onlyWarnsForCheck?.shouldWarnsFor(depKey),\n      });\n    }\n  });\n}\n","import semver from \"semver\";\nimport semverUtils from \"semver-utils\";\nimport type { ReportError } from \"../reporting/ReportError.ts\";\nimport { getEntries } from \"../utils/object.ts\";\nimport type {\n  DependencyTypes,\n  DependencyValue,\n  ParsedPackageJson,\n} from \"../utils/packageTypes.ts\";\n\nexport function checkDependencyMinRangeSatisfies(\n  reportError: ReportError,\n  dependencyValue: DependencyValue,\n  pkg: ParsedPackageJson,\n  dependencyType2: DependencyTypes,\n): void {\n  if (!pkg[dependencyType2]) return;\n  if (!dependencyValue || dependencyValue.value === \"*\") return;\n\n  const depRange2 = pkg[dependencyType2][dependencyValue.name];\n  if (!depRange2) return;\n\n  const minDepRange1 =\n    semver.minVersion(dependencyValue.value)?.version || dependencyValue.value;\n\n  if (\n    !semver.satisfies(minDepRange1, depRange2.value, {\n      includePrerelease: true,\n    })\n  ) {\n    const depRange1Parsed = semverUtils.parseRange(dependencyValue.value);\n    reportError({\n      errorMessage: `Invalid \"${dependencyValue.value}\" in \"${dependencyValue.fieldName}\"`,\n      errorDetails: `\"${dependencyValue.value}\" should satisfies \"${depRange2.value}\" from \"${dependencyType2}\"`,\n      dependency: dependencyValue,\n      autoFixable: true,\n      errorTarget: \"dependencyValue\",\n      fixTo:\n        (depRange1Parsed[0]?.operator || \"\") +\n        (semver.minVersion(depRange2.value)?.version || depRange2.value),\n    });\n  }\n}\n\nexport interface CheckMinRangeSatisfiesOptions {\n  tryToAutoFix?: boolean;\n}\n\nexport function checkMinRangeSatisfies(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  type1: DependencyTypes = \"dependencies\",\n  type2: DependencyTypes = \"devDependencies\",\n  { tryToAutoFix = false }: CheckMinRangeSatisfiesOptions = {},\n): void {\n  const dependencies1 = pkg[type1];\n  const dependencies2 = pkg[type2];\n\n  if (!dependencies1 || !dependencies2) {\n    return;\n  }\n\n  for (const [depName, depRange1] of getEntries(dependencies1)) {\n    if (!depRange1 || depRange1.value === \"*\") continue;\n\n    const depRange2 = dependencies2[depName];\n    if (!depRange2) continue;\n\n    const minDepRange1 =\n      semver.minVersion(depRange1.value)?.version || depRange1.value;\n\n    if (\n      !semver.satisfies(minDepRange1, depRange2.value, {\n        includePrerelease: true,\n      })\n    ) {\n      if (tryToAutoFix) {\n        const depRange1Parsed = semverUtils.parseRange(depRange1.value);\n        depRange1.changeValue(\n          (depRange1Parsed[0]?.operator || \"\") +\n            (semver.minVersion(depRange2.value)?.version || depRange2.value),\n        );\n      } else {\n        reportError({\n          errorMessage: `Invalid \"${depRange1.value}\" in \"${type1}\"`,\n          errorDetails: `\"${depRange1.value}\" should satisfies \"${depRange2.value}\" from \"${type2}\"`,\n          dependency: depRange1,\n          autoFixable: true,\n        });\n      }\n    }\n  }\n}\n","import type { ReportError } from \"../reporting/ReportError.ts\";\nimport type {\n  DependencyTypes,\n  ParsedPackageJson,\n} from \"../utils/packageTypes.ts\";\n\nexport function checkNoDependencies(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  type: DependencyTypes = \"dependencies\",\n  moveToSuggestion: DependencyTypes = \"devDependencies\",\n): void {\n  const pkgDependencies = pkg[type];\n  if (!pkgDependencies) return;\n\n  reportError({\n    errorMessage: `Unexpected ${type}`,\n    errorDetails: `you should move them in ${moveToSuggestion}`,\n    autoFixable: false,\n  });\n}\n","import type { ReportError } from \"../reporting/ReportError.ts\";\nimport type { GetDependencyPackageJson } from \"../utils/createGetDependencyPackageJson.ts\";\nimport type {\n  DependencyValue,\n  ParsedPackageJson,\n} from \"../utils/packageTypes.ts\";\n\nexport function checkResolutionHasExplanation(\n  reportError: ReportError,\n  dependencyValue: DependencyValue,\n  pkg: ParsedPackageJson,\n): void {\n  if (!pkg.resolutionsExplained?.[dependencyValue.name]) {\n    reportError({\n      errorMessage: `Missing \"${dependencyValue.name}\" in \"resolutionsExplained\"`,\n      dependency: dependencyValue,\n    });\n  }\n}\n\nexport function checkResolutionExplanation(\n  reportError: ReportError,\n  dependencyValue: DependencyValue,\n  pkg: ParsedPackageJson,\n): void {\n  if (!pkg.resolutions?.[dependencyValue.name]) {\n    reportError({\n      errorMessage: `Found \"${dependencyValue.name}\" in \"resolutionsExplained\" but not in \"resolutions\"`,\n      dependency: dependencyValue,\n    });\n  }\n}\n\nexport type CheckResolutionMessage = (\n  depKey: string,\n  resolutionExplainedMessage: string,\n  checkMessageHelpers: {\n    getDependencyPackageJson: GetDependencyPackageJson;\n  },\n) => string | undefined;\n\nexport function checkResolutionsHasExplanation(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  checkMessage: CheckResolutionMessage,\n  getDependencyPackageJson: GetDependencyPackageJson,\n): void {\n  const pkgResolutions = pkg.resolutions || {};\n  const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n  Object.keys(pkgResolutions).forEach((depKey) => {\n    if (!pkgResolutionsExplained[depKey]) {\n      reportError({\n        errorMessage: `Missing \"${depKey}\" in resolutionsExplained`,\n      });\n    }\n  });\n\n  Object.entries(pkgResolutionsExplained).forEach(([depKey, depValue]) => {\n    if (!depValue) return;\n    if (!pkgResolutions[depKey]) {\n      reportError({\n        errorMessage: `Found \"${depKey}\" in resolutionsExplained but not in resolutions`,\n      });\n    } else {\n      const error = checkMessage(depKey, depValue.value, {\n        getDependencyPackageJson,\n      });\n      if (error) {\n        reportError({\n          errorMessage: \"Invalid message\",\n          dependency: pkgResolutionsExplained[depKey],\n          errorDetails: error,\n        });\n      }\n    }\n  });\n}\n","import semver from \"semver\";\nimport type { ReportError } from \"../reporting/ReportError.ts\";\nimport type {\n  DependencyValue,\n  ParsedPackageJson,\n} from \"../utils/packageTypes.ts\";\n\nexport function checkResolutionVersionMatch(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  resolutionValue: DependencyValue,\n  { tryToAutoFix }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n  let depName = resolutionValue.name;\n  let resolutionDepVersion = resolutionValue.value;\n  if (!resolutionDepVersion) return;\n  if (resolutionDepVersion.startsWith(\"patch:\")) {\n    const matchResolutionInKey = /^(.+)@npm:(.+)$/.exec(depName);\n    if (matchResolutionInKey?.[1] && matchResolutionInKey[2]) {\n      depName = matchResolutionInKey[1];\n      resolutionDepVersion = matchResolutionInKey[2];\n    }\n  }\n  ([\"dependencies\", \"devDependencies\"] as const).forEach((depType) => {\n    const range = pkg[depType]?.[depName];\n\n    if (!range) return;\n\n    if (\n      !semver.satisfies(resolutionDepVersion, range.value, {\n        includePrerelease: true,\n      })\n    ) {\n      if (tryToAutoFix) {\n        range.changeValue(resolutionDepVersion);\n      } else {\n        reportError({\n          errorMessage: `Invalid \"${range.value}\"`,\n          errorDetails: `expecting \"${range.value}\" be \"${resolutionDepVersion}\" from resolutions`,\n          errorTarget: \"dependencyValue\",\n          dependency: range,\n          // don't autofix because it's probably a mistake either in resolution or in the other dependency and we can't know which one is the right one\n          suggestions: [\n            [\n              resolutionValue,\n              range.value,\n              `Fix resolutions's value to \"${range.value}\"`,\n            ],\n            [\n              range,\n              resolutionDepVersion,\n              `Fix this value to resolutions's value \"${resolutionDepVersion}\"`,\n            ],\n          ],\n        });\n      }\n    }\n  });\n}\n\nexport interface CheckResolutionsVersionsMatchOptions {\n  tryToAutoFix?: boolean;\n}\n\nexport function checkResolutionsVersionsMatch(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  { tryToAutoFix }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n  const pkgResolutions = pkg.resolutions || {};\n  Object.values(pkgResolutions).forEach((resolutionValue) => {\n    checkResolutionVersionMatch(reportError, pkg, resolutionValue!, {\n      tryToAutoFix,\n    });\n  });\n}\n","import semver from \"semver\";\nimport type { ReportError } from \"../reporting/ReportError.ts\";\nimport type {\n  DependencyTypes,\n  DependencyValue,\n  ParsedPackageJson,\n} from \"../utils/packageTypes.ts\";\nimport type { OnlyWarnsForCheck } from \"../utils/warnForUtils.ts\";\n\nexport function isVersionSatisfiesRange(\n  version: string,\n  range: string,\n): boolean {\n  const minVersionOfVersion = semver.minVersion(version);\n  return (\n    !!minVersionOfVersion &&\n    semver.satisfies(minVersionOfVersion, range, { includePrerelease: true })\n  );\n}\n\nexport function checkSatisfiesVersion(\n  reportError: ReportError,\n  dependencyValue: DependencyValue,\n  range: string,\n  onlyWarnsForCheck?: OnlyWarnsForCheck,\n): void {\n  if (!isVersionSatisfiesRange(dependencyValue.value, range)) {\n    const maxSatisfying = semver.maxSatisfying(\n      [dependencyValue.value, range],\n      range,\n      { includePrerelease: true },\n    );\n\n    reportError({\n      errorMessage: \"Invalid\",\n      errorDetails: `\"${dependencyValue.value}\" should satisfies \"${range}\"`,\n      dependency: dependencyValue,\n      onlyWarns: onlyWarnsForCheck?.shouldWarnsFor(dependencyValue.name),\n      ...(maxSatisfying && {\n        suggestions: [\n          [dependencyValue, maxSatisfying, `Use version ${maxSatisfying}`],\n        ],\n      }),\n    });\n  }\n}\n\nexport function checkMissingSatisfiesVersions(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  acceptedTypes: DependencyTypes | DependencyTypes[],\n  dependenciesRanges: Record<string, string>,\n  onlyWarnsForCheck?: OnlyWarnsForCheck,\n): void {\n  const types = Array.isArray(acceptedTypes) ? acceptedTypes : [acceptedTypes];\n\n  Object.entries(dependenciesRanges).forEach(([name, range]) => {\n    let found = false;\n    for (const type of types) {\n      const pkgDependency = pkg.value[type]?.[name];\n      if (pkgDependency) {\n        found = true;\n        break;\n      }\n    }\n\n    if (!found) {\n      reportError({\n        errorMessage: `Missing \"${name}\" in \"${types.join('\" or \"')}\"`,\n        errorDetails: `should satisfies \"${range}\"`,\n        dependency:\n          types.length === 1 ? { name, fieldName: types[0] } : { name },\n        onlyWarns: onlyWarnsForCheck?.shouldWarnsFor(name),\n      });\n    }\n  });\n}\n\nexport function checkSatisfiesVersions(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  type: DependencyTypes,\n  dependenciesRanges: Record<string, string>,\n  onlyWarnsForCheck?: OnlyWarnsForCheck,\n): void {\n  checkMissingSatisfiesVersions(\n    reportError,\n    pkg,\n    type,\n    dependenciesRanges,\n    onlyWarnsForCheck,\n  );\n\n  const pkgDependencies = pkg[type] || {};\n  Object.entries(dependenciesRanges).forEach(([depKey, range]) => {\n    const pkgRange = pkgDependencies[depKey];\n    if (pkgRange) {\n      checkSatisfiesVersion(reportError, pkgRange, range, onlyWarnsForCheck);\n    }\n  });\n}\n","import semver from \"semver\";\nimport type { ShouldHaveExactVersions } from \"../check-package.ts\";\nimport type { ReportError } from \"../reporting/ReportError.ts\";\nimport {\n  fromDependency,\n  inDependency,\n} from \"../reporting/cliErrorReporting.ts\";\nimport type { DependencyTypes, PackageJson } from \"../utils/packageTypes.ts\";\nimport type { OnlyWarnsForCheck } from \"../utils/warnForUtils.ts\";\n\nexport interface CheckSatisfiesVersionsFromDependencyOptions {\n  tryToAutoFix?: boolean;\n  shouldHaveExactVersions: ShouldHaveExactVersions;\n  onlyWarnsForCheck?: OnlyWarnsForCheck;\n}\n\nexport function checkSatisfiesVersionsBetweenDependencies(\n  reportError: ReportError,\n  dep1Pkg: PackageJson,\n  dep1Type: DependencyTypes,\n  depKeys: string[],\n  dep2Pkg: PackageJson,\n  dep2Type: DependencyTypes,\n  {\n    tryToAutoFix,\n    shouldHaveExactVersions,\n    onlyWarnsForCheck,\n  }: CheckSatisfiesVersionsFromDependencyOptions,\n): void {\n  const dep1Dependencies = dep1Pkg[dep1Type] || {};\n  const dep2Dendencies = dep2Pkg[dep2Type] || {};\n\n  depKeys.forEach((depKey) => {\n    const dep1Range = dep1Dependencies[depKey];\n\n    if (!dep1Range) {\n      reportError({\n        errorMessage: `Unexpected missing dependency \"${depKey}\" ${inDependency(dep1Pkg, dep1Type)}`,\n        errorDetails: `config expects \"${depKey}\"`,\n        onlyWarns: undefined,\n        autoFixable: undefined,\n      });\n      return;\n    }\n\n    const dep2Range = dep2Dendencies[depKey];\n\n    if (!dep2Range) {\n      reportError({\n        errorMessage: `Unexpected missing dependency \"${depKey}\" ${inDependency(dep2Pkg, dep2Type)}`,\n        errorDetails: `should satisfies \"${dep1Range}\" ${fromDependency(dep1Pkg, dep1Type)}`,\n        onlyWarns: onlyWarnsForCheck?.shouldWarnsFor(depKey),\n      });\n      return;\n    }\n\n    const minVersionOfVersion = semver.minVersion(dep2Range);\n    if (\n      !minVersionOfVersion ||\n      !semver.satisfies(minVersionOfVersion, dep1Range, {\n        includePrerelease: true,\n      })\n    ) {\n      reportError({\n        errorMessage: `Invalid \"${depKey}\" ${inDependency(dep2Pkg, dep2Type)}`,\n        errorDetails: `\"${dep2Range}\" should satisfies \"${dep1Range}\" ${fromDependency(dep1Pkg, dep1Type)}`,\n        onlyWarns: onlyWarnsForCheck?.shouldWarnsFor(depKey),\n      });\n    }\n  });\n}\n","import semver from \"semver\";\nimport type { ShouldHaveExactVersions } from \"../check-package.ts\";\nimport type { ReportError } from \"../reporting/ReportError.ts\";\nimport {\n  fromDependency,\n  inDependency,\n} from \"../reporting/cliErrorReporting.ts\";\nimport type {\n  DependencyTypes,\n  PackageJson,\n  ParsedPackageJson,\n} from \"../utils/packageTypes.ts\";\nimport { changeOperator, getOperator } from \"../utils/semverUtils.ts\";\nimport type { OnlyWarnsForCheck } from \"../utils/warnForUtils.ts\";\n\nexport interface CheckSatisfiesVersionsFromDependencyOptions {\n  tryToAutoFix?: boolean;\n  shouldHaveExactVersions: ShouldHaveExactVersions;\n  onlyWarnsForCheck?: OnlyWarnsForCheck;\n}\n\nexport function checkSatisfiesVersionsFromDependency(\n  reportError: ReportError,\n  pkg: ParsedPackageJson,\n  type: DependencyTypes,\n  depKeys: string[],\n  depPkg: PackageJson,\n  depType: DependencyTypes,\n  {\n    tryToAutoFix,\n    shouldHaveExactVersions,\n    onlyWarnsForCheck,\n  }: CheckSatisfiesVersionsFromDependencyOptions,\n): void {\n  const pkgDependencies = pkg[type] || {};\n  const dependencies = depPkg[depType] || {};\n\n  depKeys.forEach((depKey) => {\n    const range = dependencies[depKey];\n\n    if (!range) {\n      reportError({\n        errorMessage: \"Unexpected missing dependency\",\n        errorDetails: `config expects \"${depKey}\" ${inDependency(depPkg, depType)}`,\n        onlyWarns: undefined,\n        autoFixable: undefined,\n      });\n      return;\n    }\n\n    const pkgRange = pkgDependencies[depKey];\n\n    const getAutoFixIfExists = (): string | null | undefined => {\n      const existingOperator = pkgRange ? getOperator(pkgRange.value) : null;\n      const expectedOperator = (() => {\n        if (existingOperator !== null) {\n          return existingOperator;\n        }\n        return shouldHaveExactVersions(type) ? \"\" : null;\n      })();\n\n      return expectedOperator === \"\"\n        ? semver.minVersion(range)?.version\n        : changeOperator(range, expectedOperator);\n    };\n\n    if (!pkgRange) {\n      const fix = getAutoFixIfExists();\n      if (!fix || !tryToAutoFix) {\n        reportError({\n          errorMessage: \"Missing dependency\",\n          errorDetails: `should satisfies \"${range}\" ${fromDependency(depPkg, depType)}`,\n          dependency: { name: depKey, fieldName: type },\n          onlyWarns: onlyWarnsForCheck?.shouldWarnsFor(depKey),\n          autoFixable: !!fix,\n        });\n      } else {\n        pkg.change(type, depKey, fix);\n      }\n    } else {\n      const minVersionOfVersion = semver.minVersion(pkgRange.value);\n      if (\n        !minVersionOfVersion ||\n        !semver.satisfies(minVersionOfVersion, range, {\n          includePrerelease: true,\n        })\n      ) {\n        const fix = getAutoFixIfExists();\n        if (!fix || !tryToAutoFix) {\n          reportError({\n            errorMessage: \"Invalid\",\n            errorDetails: `\"${pkgRange.value}\" should satisfies \"${range}\" ${fromDependency(depPkg, depType)}`,\n            dependency: pkgRange,\n            onlyWarns: onlyWarnsForCheck?.shouldWarnsFor(depKey),\n            autoFixable: !!fix,\n          });\n        } else {\n          pkgRange.changeValue(fix);\n        }\n      }\n    }\n  });\n}\n","import semver from \"semver\";\nimport type { ReportError } from \"../reporting/ReportError.ts\";\nimport { inDependency } from \"../reporting/cliErrorReporting.ts\";\nimport { getEntries } from \"../utils/object.ts\";\nimport type { DependenciesRanges, PackageJson } from \"../utils/packageTypes.ts\";\n\nexport function checkSatisfiesVersionsInDependency(\n  reportError: ReportError,\n  depPkg: PackageJson,\n  dependenciesRanges: DependenciesRanges,\n): void {\n  for (const [dependenciesType, dependenciesTypeRanges] of getEntries(\n    dependenciesRanges,\n  )) {\n    if (!dependenciesTypeRanges) return;\n    const dependencies = depPkg[dependenciesType];\n\n    for (const [dependencyName, dependencyRange] of getEntries(\n      dependenciesTypeRanges,\n    )) {\n      if (dependencyRange == null) {\n        if (dependencies?.[dependencyName]) {\n          reportError({\n            errorMessage: `Invalid \"${dependencyName}\" ${inDependency(depPkg, dependenciesType)}`,\n            errorDetails: \"it should not be present\",\n            dependency: { name: dependencyName },\n          });\n        }\n      } else if (!dependencies) {\n        reportError({\n          errorMessage: `Missing \"${dependencyName}\" ${inDependency(depPkg, dependenciesType)}`,\n          errorDetails: `\"${dependenciesType}\" is missing`,\n          dependency: { name: dependencyName },\n        });\n      } else if (!dependencies[dependencyName]) {\n        reportError({\n          errorMessage: `Missing \"${dependencyName}\" ${inDependency(depPkg, dependenciesType)}`,\n          errorDetails: `\"${dependencyName}\" is missing but should satisfies \"${dependencyRange}\"`,\n          dependency: { name: dependencyName },\n        });\n      } else if (\n        !semver.satisfies(dependencies[dependencyName], dependencyRange, {\n          includePrerelease: true,\n        }) &&\n        !semver.intersects(dependencies[dependencyName], dependencyRange, {\n          includePrerelease: true,\n        })\n      ) {\n        reportError({\n          errorMessage: `Invalid \"${dependencyName}\" ${inDependency(depPkg, dependenciesType)}`,\n          errorDetails: `\"${dependencies[dependencyName]}\" does not satisfies \"${dependencyRange}\"`,\n          dependency: { name: dependencyName },\n        });\n      }\n    }\n  }\n}\n","import fs, { constants } from \"node:fs\";\nimport path from \"node:path\";\nimport type { PackageJson } from \"./packageTypes.ts\";\n\nconst stripListItemValue = (rawValue: string): string => {\n  const withoutComment = rawValue.replace(/(?:^|\\s)#.*$/, \"\").trim();\n  const quoted = /^['\"](.*)['\"]$/.exec(withoutComment);\n  return quoted ? quoted[1]! : withoutComment;\n};\n\nconst parseFlowSequence = (flowValue: string): string[] =>\n  flowValue\n    .replace(/^\\[/, \"\")\n    .replace(/\\]$/, \"\")\n    .split(\",\")\n    .map((item) => stripListItemValue(item))\n    .filter((item) => item.length > 0);\n\n/** Minimal parser for the `packages:` list in pnpm-workspace.yaml, avoiding a full YAML dependency. */\nexport const parsePnpmWorkspacePackages = (content: string): string[] => {\n  const lines = content.split(/\\r?\\n/);\n  const packagesLineIndex = lines.findIndex((line) =>\n    line.startsWith(\"packages:\"),\n  );\n  if (packagesLineIndex === -1) return [];\n\n  const packagesLine = lines[packagesLineIndex]!;\n  const inlineValue = packagesLine.slice(\"packages:\".length).trim();\n  if (inlineValue.startsWith(\"[\")) {\n    return parseFlowSequence(inlineValue);\n  }\n\n  const packages: string[] = [];\n  for (let i = packagesLineIndex + 1; i < lines.length; i += 1) {\n    const line = lines[i]!;\n    if (line.trim().length === 0) continue;\n    const trimmedLine = line.trimStart();\n    if (line === trimmedLine || !trimmedLine.startsWith(\"-\")) break;\n    const value = stripListItemValue(trimmedLine.slice(1));\n    if (value.length > 0) packages.push(value);\n  }\n  return packages;\n};\n\nconst readPnpmWorkspacePackages = (dirname: string): string[] | undefined => {\n  const pnpmWorkspacePath = path.join(dirname, \"pnpm-workspace.yaml\");\n  try {\n    fs.accessSync(pnpmWorkspacePath, constants.R_OK);\n  } catch {\n    return undefined;\n  }\n  const content = fs.readFileSync(pnpmWorkspacePath, \"utf8\");\n  const packages = parsePnpmWorkspacePackages(content);\n  return packages.length > 0 ? packages : undefined;\n};\n\n/**\n * Resolves the workspace package globs for a package.json, checked once at parse time:\n * from the `workspaces` field (Yarn/npm) or, failing that, from a sibling pnpm-workspace.yaml.\n */\nexport const resolveWorkspacesPackagesGlobs = (\n  pkgValue: Pick<PackageJson, \"workspaces\">,\n  packagePath: string,\n): string[] | undefined =>\n  (pkgValue.workspaces && !Array.isArray(pkgValue.workspaces)\n    ? pkgValue.workspaces.packages\n    : pkgValue.workspaces) ??\n  readPnpmWorkspacePackages(path.dirname(packagePath));\n","import { readFileSync, writeFileSync } from \"node:fs\";\n// eslint-disable-next-line n/no-unsupported-features/node-builtins\nimport { findPackageJSON } from \"node:module\";\nimport type { ParseError } from \"jsonc-parser\";\nimport { findNodeAtLocation, getNodeValue, parseTree } from \"jsonc-parser\";\nimport type {\n  DependencyValue,\n  PackageJson,\n  ParsedPackageJson,\n} from \"./packageTypes.ts\";\nimport { resolveWorkspacesPackagesGlobs } from \"./pnpmWorkspaceYaml.ts\";\n\nif (typeof findPackageJSON !== \"function\") {\n  // eslint-disable-next-line unicorn/prefer-type-error\n  throw new Error(\"check-package-dependencies requires node >= 22.14.0\");\n}\n\nexport function readPkgJson(packagePath: string): PackageJson {\n  return JSON.parse(readFileSync(packagePath, \"utf8\")) as PackageJson;\n}\n\nexport function stringifyPkgJson(pkg: PackageJson): string {\n  return `${JSON.stringify(pkg, null, 2)}\\n`;\n}\n\nexport function writePkgJson(packagePath: string, pkg: PackageJson): void {\n  writeFileSync(packagePath, stringifyPkgJson(pkg));\n}\n\nfunction getLocationFromOffset(\n  packageContent: string,\n  offset: number,\n): { line: number; column: number } {\n  if (offset < 0 || offset > packageContent.length) {\n    throw new Error(\n      `Offset ${offset} is out of bounds (0 to ${packageContent.length})`,\n    );\n  }\n\n  const lines = packageContent.slice(0, offset).split(\"\\n\");\n  const lastLine = lines.at(-1);\n  return { line: lines.length, column: lastLine ? lastLine.length + 1 : 1 };\n}\n\nfunction validateJsonParsing(\n  json: ReturnType<typeof parseTree>,\n  errors: ParseError[],\n  packagePath: string,\n): asserts json is NonNullable<typeof json> {\n  if (errors.length > 0) {\n    throw new Error(\n      `Failed to parse JSON at ${packagePath}: ${errors.map(String).join(\", \")}`,\n    );\n  }\n  if (!json) {\n    throw new Error(`Failed to parse JSON at ${packagePath}: empty JSON`);\n  }\n}\n\nfunction validatePackageName(\n  nameNode: ReturnType<typeof findNodeAtLocation>,\n  packagePath: string,\n): asserts nameNode is NonNullable<typeof nameNode> {\n  if (!nameNode) {\n    throw new Error(`Invalid package.json at ${packagePath}: no \"name\" field`);\n  }\n  if (typeof nameNode.value !== \"string\") {\n    throw new TypeError(\n      `Invalid package.json at ${packagePath}: \"name\" field is not a string`,\n    );\n  }\n}\n\nconst dependencyFieldNames = [\n  \"dependencies\",\n  \"devDependencies\",\n  \"peerDependencies\",\n  \"resolutions\",\n  \"resolutionsExplained\",\n] as const;\n\nfunction parseDependencyField(\n  json: NonNullable<ReturnType<typeof parseTree>>,\n  fieldName: (typeof dependencyFieldNames)[number],\n  packageContent: string,\n  packageValue: PackageJson,\n): [string, Record<string, DependencyValue> | undefined] {\n  const fieldNode = findNodeAtLocation(json, [fieldName]);\n  if (!fieldNode?.children) {\n    return [fieldName, undefined];\n  }\n\n  const dependencies = Object.fromEntries<DependencyValue>(\n    fieldNode.children\n      .filter((child) => child.type === \"property\")\n      .map((propertyNode) => {\n        const nameNode = propertyNode.children![0]!;\n        const valueNode = propertyNode.children![1]!;\n\n        const name = getNodeValue(nameNode) as string;\n        const value = getNodeValue(valueNode) as string;\n        const startLocation = getLocationFromOffset(\n          packageContent,\n          propertyNode.offset,\n        );\n        const valueStartLocation = getLocationFromOffset(\n          packageContent,\n          valueNode.offset,\n        );\n\n        const parsedDependency: DependencyValue = {\n          fieldName,\n          name,\n          value,\n          locations: {\n            all: {\n              start: startLocation,\n              end: {\n                line: startLocation.line,\n                column: startLocation.column + propertyNode.length,\n              },\n            },\n            name: {\n              start: startLocation,\n              end: {\n                line: startLocation.line,\n                column: startLocation.column + nameNode.length,\n              },\n            },\n            value: {\n              start: valueStartLocation,\n              end: {\n                line: valueStartLocation.line,\n                column: valueStartLocation.column + valueNode.length,\n              },\n            },\n          },\n          ranges: {\n            all: [propertyNode.offset, valueNode.offset + valueNode.length],\n            name: [propertyNode.offset, nameNode.offset + nameNode.length],\n            value: [valueNode.offset, valueNode.offset + valueNode.length],\n          },\n          changeValue(newValue: string) {\n            packageValue[fieldName]![name] = newValue;\n            parsedDependency.value = newValue;\n          },\n          toString() {\n            return `${JSON.stringify(parsedDependency.name)}: ${JSON.stringify(parsedDependency.value)}`;\n          },\n        };\n\n        return [name, parsedDependency];\n      }),\n  );\n\n  return [fieldName, dependencies];\n}\n\nexport function parsePkg(\n  packageContent: string,\n  packagePath: string,\n): ParsedPackageJson {\n  const errors: ParseError[] = [];\n  const json = parseTree(packageContent, errors, { disallowComments: true });\n  validateJsonParsing(json, errors, packagePath);\n\n  const nameNode = findNodeAtLocation(json, [\"name\"]);\n  validatePackageName(nameNode, packagePath);\n\n  const value = getNodeValue(json) as PackageJson;\n\n  return {\n    name: getNodeValue(nameNode) as string,\n    path: packagePath,\n    value,\n    workspacesPackages: resolveWorkspacesPackagesGlobs(value, packagePath),\n    ...Object.fromEntries(\n      dependencyFieldNames.map((fieldName) =>\n        parseDependencyField(json, fieldName, packageContent, value),\n      ),\n    ),\n    change(type, dependencyName, newValue) {\n      const dependency = this[type]?.[dependencyName];\n      if (dependency) {\n        dependency.changeValue(newValue);\n      } else {\n        value[type] = { ...value[type], [dependencyName]: newValue };\n      }\n    },\n  };\n}\n\n// mainly for testing\nexport function parsePkgValue(\n  pkg: unknown,\n  packagePath = \"unknown_path\",\n): ParsedPackageJson {\n  return parsePkg(JSON.stringify(pkg), packagePath);\n}\n\nexport function readAndParsePkgJson(packagePath: string): ParsedPackageJson {\n  return parsePkg(readFileSync(packagePath, \"utf8\"), packagePath);\n}\n\n/** @internal */\nexport function internalLoadPackageJsonFromNodeModules(\n  pkgDepName: string,\n  pkgDirname: string,\n): [path: string, pkg: PackageJson] {\n  const packagePath = findPackageJSON(\n    pkgDepName,\n    `file://${pkgDirname}/package.json`,\n  );\n  if (!packagePath) {\n    throw new Error(`Package ${pkgDepName} not found in ${pkgDirname}`);\n  }\n  return [packagePath, readPkgJson(packagePath)];\n}\n","import type { PackageJson } from \"./packageTypes.ts\";\nimport {\n  internalLoadPackageJsonFromNodeModules,\n  readPkgJson,\n} from \"./pkgJsonUtils.ts\";\n\ntype DependencyPackageJsonResult = [pkg: PackageJson, pkgPath: string];\n\nexport type GetDependencyPackageJson = (\n  pkgDepName: string,\n) => DependencyPackageJsonResult;\n\ntype NodeModulesPackagePathCache = Map<string, DependencyPackageJsonResult>;\n\ninterface CreateGetDependencyPackageJsonOptions {\n  pkgDirname: string;\n  nodeModulesPackagePathCache?: NodeModulesPackagePathCache;\n  /** @internal */\n  internalCustomLoadPackageJsonFromNodeModules?: typeof internalLoadPackageJsonFromNodeModules;\n  /** @internal */\n  internalReadPkgJson?: typeof readPkgJson;\n}\n\nexport function createGetDependencyPackageJson({\n  pkgDirname,\n  nodeModulesPackagePathCache = new Map<string, DependencyPackageJsonResult>(),\n  internalCustomLoadPackageJsonFromNodeModules = internalLoadPackageJsonFromNodeModules,\n  internalReadPkgJson = readPkgJson,\n}: CreateGetDependencyPackageJsonOptions): GetDependencyPackageJson {\n  return (pkgDepName) => {\n    const existing = nodeModulesPackagePathCache.get(pkgDepName);\n    if (existing) return existing;\n    let pkg: PackageJson;\n    let packagePath: string;\n    if (pkgDepName.startsWith(\".\")) {\n      packagePath = `${pkgDirname}/${pkgDepName}/package.json`;\n      pkg = internalReadPkgJson(packagePath);\n    } else {\n      try {\n        [packagePath, pkg] = internalCustomLoadPackageJsonFromNodeModules(\n          pkgDepName,\n          pkgDirname,\n        );\n      } catch (error: unknown) {\n        if (!(error instanceof Error)) throw error;\n\n        if (\n          (error as NodeJS.ErrnoException).code !==\n          \"ERR_PACKAGE_PATH_NOT_EXPORTED\"\n        ) {\n          throw error;\n        }\n\n        const match = / in (.*[/\\\\]package\\.json)\\s+imported from/.exec(\n          error.message,\n        );\n\n        if (match) {\n          const [, matchPackageJson] = match;\n          if (!matchPackageJson) throw error;\n          packagePath = matchPackageJson;\n          pkg = internalReadPkgJson(matchPackageJson);\n        } else {\n          throw error;\n        }\n      }\n    }\n    nodeModulesPackagePathCache.set(pkgDepName, [pkg, packagePath]);\n    return [pkg, packagePath];\n  };\n}\n","import { getEntries } from \"./object.ts\";\n\nexport type OnlyWarnsFor = string[];\nexport type OnlyWarnsForDependencyMapping = Record<\n  // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n  string | \"*\",\n  OnlyWarnsFor | undefined\n>;\nexport type OnlyWarnsForOptionalDependencyMapping =\n  | OnlyWarnsFor\n  | OnlyWarnsForDependencyMapping\n  | undefined;\n\nexport interface OnlyWarnsForCheck {\n  configName: string;\n  getNotWarnedFor: () => string[];\n  shouldWarnsFor: (dependencyName: string) => boolean;\n}\n\nexport interface OnlyWarnsForMappingCheck {\n  configName: string;\n  getNotWarnedFor: () => Record<string, string[]>;\n  createFor: (dependencyName: string) => OnlyWarnsForCheck;\n}\n\nexport const createOnlyWarnsForArrayCheck = (\n  configName: string,\n  onlyWarnsFor: OnlyWarnsFor = [],\n): OnlyWarnsForCheck => {\n  const notWarnedFor = new Set(onlyWarnsFor);\n  return {\n    configName,\n    getNotWarnedFor: () => [...notWarnedFor],\n    shouldWarnsFor(dependencyName) {\n      if (onlyWarnsFor.includes(dependencyName)) {\n        notWarnedFor.delete(dependencyName);\n        return true;\n      }\n      return false;\n    },\n  };\n};\n\nconst isMapping = (\n  onlyWarnsFor: OnlyWarnsForOptionalDependencyMapping,\n): onlyWarnsFor is OnlyWarnsForDependencyMapping => {\n  return typeof onlyWarnsFor === \"object\" && !Array.isArray(onlyWarnsFor);\n};\n\nexport const createOnlyWarnsForMappingCheck = (\n  configName: string,\n  onlyWarnsFor: OnlyWarnsForOptionalDependencyMapping,\n): OnlyWarnsForMappingCheck => {\n  if (isMapping(onlyWarnsFor)) {\n    const notWarnedFor = Object.fromEntries(\n      getEntries(onlyWarnsFor).map(([entryKey, entryValue]) => [\n        entryKey,\n        new Set(entryValue),\n      ]),\n    );\n    return {\n      configName,\n      getNotWarnedFor: () =>\n        Object.fromEntries(\n          getEntries(notWarnedFor)\n            .filter(([key, set]) => set.size > 0)\n            .map(([key, set]) => [key, [...set]]),\n        ),\n      createFor(dependencyNameLevel1) {\n        return {\n          configName,\n          getNotWarnedFor() {\n            throw new Error(\"Invalid call to getNotWarnedFor()\");\n          },\n          shouldWarnsFor(dependencyName) {\n            if (onlyWarnsFor[\"*\"]?.includes(dependencyName)) {\n              notWarnedFor[\"*\"]?.delete(dependencyName);\n              return true;\n            }\n            if (onlyWarnsFor[dependencyNameLevel1]?.includes(dependencyName)) {\n              notWarnedFor[dependencyNameLevel1]?.delete(dependencyName);\n              return true;\n            }\n            return false;\n          },\n        };\n      },\n    };\n  }\n\n  const arrayOnlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n    configName,\n    onlyWarnsFor,\n  );\n  return {\n    configName,\n    getNotWarnedFor: (): Record<string, string[]> => {\n      const notWarnedFor = arrayOnlyWarnsForCheck.getNotWarnedFor();\n      if (notWarnedFor.length > 0) {\n        return { \"*\": notWarnedFor };\n      }\n      return {};\n    },\n    createFor() {\n      return {\n        configName,\n        getNotWarnedFor() {\n          throw new Error(\"Invalid call to getNotWarnedFor()\");\n        },\n        shouldWarnsFor(dependencyName) {\n          return arrayOnlyWarnsForCheck.shouldWarnsFor(dependencyName);\n        },\n      };\n    },\n  };\n};\n","import path from \"node:path\";\nimport util from \"node:util\";\nimport type { SetRequired } from \"type-fest\";\nimport { checkDirectDuplicateDependencies } from \"./checks/checkDirectDuplicateDependencies.ts\";\nimport { checkDirectPeerDependencies } from \"./checks/checkDirectPeerDependencies.ts\";\nimport { checkExactVersions } from \"./checks/checkExactVersions.ts\";\nimport { checkIdenticalVersions } from \"./checks/checkIdenticalVersions.ts\";\nimport { checkIdenticalVersionsThanDependency } from \"./checks/checkIdenticalVersionsThanDependency.ts\";\nimport { checkMinRangeSatisfies } from \"./checks/checkMinRangeSatisfies.ts\";\nimport { checkNoDependencies } from \"./checks/checkNoDependencies.ts\";\nimport type { CheckResolutionMessage } from \"./checks/checkResolutionsHasExplanation.ts\";\nimport { checkResolutionsHasExplanation } from \"./checks/checkResolutionsHasExplanation.ts\";\nimport { checkResolutionsVersionsMatch } from \"./checks/checkResolutionsVersionsMatch.ts\";\nimport { checkSatisfiesVersions } from \"./checks/checkSatisfiesVersions.ts\";\nimport { checkSatisfiesVersionsBetweenDependencies } from \"./checks/checkSatisfiesVersionsBetweenDependencies.ts\";\nimport { checkSatisfiesVersionsFromDependency } from \"./checks/checkSatisfiesVersionsFromDependency.ts\";\nimport { checkSatisfiesVersionsInDependency } from \"./checks/checkSatisfiesVersionsInDependency.ts\";\nimport type { CreateReportError } from \"./reporting/ReportError.ts\";\nimport {\n  createCliReportError,\n  displayMessages,\n  reportNotWarnedForMapping,\n} from \"./reporting/cliErrorReporting.ts\";\nimport type { GetDependencyPackageJson } from \"./utils/createGetDependencyPackageJson.ts\";\nimport { createGetDependencyPackageJson } from \"./utils/createGetDependencyPackageJson.ts\";\nimport { getEntries } from \"./utils/object.ts\";\nimport type {\n  DependenciesRanges,\n  DependencyName,\n  DependencyTypes,\n  PackageJson,\n  ParsedPackageJson,\n} from \"./utils/packageTypes.ts\";\nimport { readAndParsePkgJson, writePkgJson } from \"./utils/pkgJsonUtils.ts\";\nimport type {\n  OnlyWarnsFor,\n  OnlyWarnsForDependencyMapping,\n  OnlyWarnsForOptionalDependencyMapping,\n} from \"./utils/warnForUtils.ts\";\nimport {\n  createOnlyWarnsForArrayCheck,\n  createOnlyWarnsForMappingCheck,\n} from \"./utils/warnForUtils.ts\";\n\nexport interface CreateCheckPackageOptions {\n  packageDirectoryPath?: string;\n  isLibrary?: boolean | ((pkg: PackageJson) => boolean);\n  /** @internal */\n  internalWorkspacePkgDirectoryPath?: string;\n  /** @internal */\n  createReportError?: CreateReportError;\n}\n\nexport interface CheckDirectPeerDependenciesOptions {\n  missingOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n  invalidOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n  internalMissingConfigName?: string;\n  internalInvalidConfigName?: string;\n}\n\nexport interface CheckDirectDuplicateDependenciesOptions {\n  onlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n  internalConfigName?: string;\n}\n\nexport interface OnlyWarnsForInPackageCheckPackageRecommendedOption {\n  exactVersions?: OnlyWarnsFor;\n}\n\nexport interface OnlyWarnsForInDependencyCheckPackageRecommendedOption {\n  duplicateDirectDependency?: OnlyWarnsFor;\n  missingPeerDependency?: OnlyWarnsFor;\n  invalidPeerDependencyVersion?: OnlyWarnsFor;\n}\n\nexport type OnlyWarnsForInDependenciesCheckPackageRecommendedOption = Record<\n  // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents, @typescript-eslint/sort-type-constituents\n  \"*\" | string,\n  OnlyWarnsForInDependencyCheckPackageRecommendedOption\n>;\n\nexport interface CheckRecommendedOptions {\n  /** default is true for libraries, false otherwise */\n  allowRangeVersionsInDependencies?: boolean;\n  onlyWarnsForInPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n  onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n  /** @internal */\n  internalExactVersionsIgnore?: OnlyWarnsFor;\n  /** function to check the value in the \"resolutionExplained\" key in package.json */\n  checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckExactVersionsOptions {\n  allowRangeVersionsInDependencies?: boolean;\n  onlyWarnsFor?: OnlyWarnsFor;\n  /** @internal */\n  internalExactVersionsIgnore?: OnlyWarnsFor;\n}\n\nexport interface CheckPackageApiRunOptions {\n  /** @internal */\n  skipDisplayMessages?: boolean;\n}\n\nexport interface CheckPackageApi {\n  run: (options?: CheckPackageApiRunOptions) => Promise<void>;\n  runSync: (options?: CheckPackageApiRunOptions) => void;\n\n  /** @internal */\n  parsedPkg: ParsedPackageJson;\n  /** @internal */\n  pkg: SetRequired<PackageJson, \"name\">;\n  /** @internal */\n  pkgDirname: string;\n  /** @internal */\n  pkgPathName: string;\n  /** @internal */\n  isPkgLibrary: boolean;\n  /** @internal */\n  getDependencyPackageJson: GetDependencyPackageJson;\n\n  checkExactVersions: (options?: CheckExactVersionsOptions) => CheckPackageApi;\n\n  checkResolutionsVersionsMatch: () => CheckPackageApi;\n\n  checkExactDevVersions: (\n    options?: CheckExactVersionsOptions,\n  ) => CheckPackageApi;\n\n  checkNoDependencies: (\n    type?: DependencyTypes,\n    moveToSuggestion?: DependencyTypes,\n  ) => CheckPackageApi;\n\n  /**\n   * @example\n   * ```\n   * .checkDirectPeerDependencies({\n   *   invalidOnlyWarnsFor: ['semver'],\n   * })\n   * ```\n   */\n  checkDirectPeerDependencies: (\n    options?: CheckDirectPeerDependenciesOptions,\n  ) => CheckPackageApi;\n\n  /**\n   * @example\n   * ```\n   * .checkDirectDuplicateDependencies({\n   *   invalidOnlyWarnsFor: { '*': 'type-fest' },\n   * })\n   * ```\n   */\n  checkDirectDuplicateDependencies: (\n    options?: CheckDirectDuplicateDependenciesOptions,\n  ) => CheckPackageApi;\n\n  checkResolutionsHasExplanation: (\n    checkMessage?: CheckResolutionMessage,\n  ) => CheckPackageApi;\n\n  checkRecommended: (options?: CheckRecommendedOptions) => CheckPackageApi;\n\n  /**\n   * @example\n   * Check that your package.json contains the same version of @babel/core than react-scripts, both in resolutions and devDependencies\n   * ```\n   * .checkIdenticalVersionsThanDependency('react-scripts', {\n   *   resolutions: ['@babel/core'],\n   *   devDependencies: ['@babel/core'],\n   * })\n   * ```\n   */\n  checkIdenticalVersionsThanDependency: (\n    depName: string,\n    dependencies: {\n      resolutions?: string[];\n      dependencies?: string[];\n      devDependencies?: string[];\n    },\n  ) => CheckPackageApi;\n\n  checkIdenticalVersionsThanDevDependencyOfDependency: (\n    depName: string,\n    dependencies: {\n      resolutions?: string[];\n      dependencies?: string[];\n      devDependencies?: string[];\n    },\n  ) => CheckPackageApi;\n\n  /**\n   * Check that your package.json dependencies specifically satisfies the range passed in config\n   *\n   * @example\n   * ```\n   * .checkSatisfiesVersions({\n   *   devDependencies: {\n   *     eslint: '^8.0.0'\n   *   },\n   * })\n   * ```\n   */\n  checkSatisfiesVersions: (\n    dependencies: Partial<\n      Record<DependencyTypes, Record<DependencyName, string>>\n    >,\n  ) => CheckPackageApi;\n\n  /**\n   * Check that your package.json dependencies specifically satisfies the range set in another dependencies\n   * @example\n   * ```\n   * .checkSatisfiesVersionsFromDependency('@pob/eslint-config', {\n   *   devDependencies: [\n   *     '@typescript-eslint/eslint-plugin',\n   *     '@typescript-eslint/parser',\n   *   ],\n   * })\n   * ```\n   */\n  checkSatisfiesVersionsFromDependency: (\n    depName: string,\n    dependencies: {\n      resolutions?: string[];\n      dependencies?: string[];\n      devDependencies?: string[];\n    },\n  ) => CheckPackageApi;\n\n  checkSatisfiesVersionsInDevDependenciesOfDependency: (\n    depName: string,\n    dependencies: {\n      resolutions?: string[];\n      dependencies?: string[];\n      devDependencies?: string[];\n    },\n  ) => CheckPackageApi;\n\n  /**\n   * Check that your package.json dependencies have the exact same version that another dependency also present in your package.json\n   * @example\n   * The react-dom version should match react, so this check will ensure it does\n   * ```\n   * .checkIdenticalVersions({\n   *   dependencies: {\n   *     react: {\n   *       dependencies: ['react-dom'],\n   *       devDependencies: ['react-test-renderer'],\n   *     },\n   *   },\n   * })\n   * ```\n   */\n  checkIdenticalVersions: (dependencies: {\n    resolutions?: Record<string, string[]>;\n    dependencies?: Record<string, string[]>;\n    devDependencies?: Record<string, string[]>;\n  }) => CheckPackageApi;\n\n  checkSatisfiesVersionsBetweenDependencies: (\n    config: Record<\n      string, // depName1\n      {\n        dependencies?: Record<\n          string, // depName2\n          {\n            dependencies?: string[];\n            devDependencies?: string[];\n          }\n        >;\n        devDependencies?: Record<\n          string, // depName2\n          {\n            dependencies?: string[];\n            devDependencies?: string[];\n          }\n        >;\n      }\n    >,\n  ) => CheckPackageApi;\n\n  /**\n   * Check versions in a dependency\n   * Also useable to check if a dependency is not present\n   *\n   * @example\n   * Checking if `@lerna/version` has no dependency `@nrwl/devkit`\n   * ```\n   * .checkSatisfiesVersionsInDependency('@lerna/version', {\n   *   dependencies: {\n   *     '@nrwl/devkit': null,\n   *   },\n   * })\n   * ```\n   */\n  checkSatisfiesVersionsInDependency: (\n    depName: string,\n    dependenciesRanges: DependenciesRanges,\n  ) => CheckPackageApi;\n\n  checkMinRangeDependenciesSatisfiesDevDependencies: () => CheckPackageApi;\n  checkMinRangePeerDependenciesSatisfiesDependencies: () => CheckPackageApi;\n}\n\nexport type ShouldHaveExactVersions = (depType: DependencyTypes) => boolean;\n\nexport function createCheckPackage({\n  packageDirectoryPath = \".\",\n  internalWorkspacePkgDirectoryPath,\n  isLibrary = false,\n  createReportError = createCliReportError,\n}: CreateCheckPackageOptions = {}): CheckPackageApi {\n  const pkgDirname = path.resolve(packageDirectoryPath);\n  const pkgPath = `${pkgDirname}/package.json`;\n  const pkgPathName = `${packageDirectoryPath}/package.json`;\n  const parsedPkg = readAndParsePkgJson(pkgPath);\n  const copyPkg: PackageJson = JSON.parse(\n    JSON.stringify(parsedPkg.value),\n  ) as PackageJson;\n  const isPkgLibrary =\n    typeof isLibrary === \"function\" ? isLibrary(parsedPkg.value) : isLibrary;\n  const shouldHaveExactVersions: ShouldHaveExactVersions = (depType) =>\n    !isPkgLibrary ? true : depType === \"devDependencies\";\n\n  let tryToAutoFix = false;\n\n  if (process.argv.slice(2).includes(\"--fix\")) {\n    tryToAutoFix = true;\n  }\n\n  const writePackageIfChanged = (): void => {\n    if (!tryToAutoFix) return;\n    if (util.isDeepStrictEqual(parsedPkg.value, copyPkg)) return;\n    writePkgJson(pkgPath, parsedPkg.value);\n  };\n\n  const getDependencyPackageJson = createGetDependencyPackageJson({\n    pkgDirname,\n  });\n\n  let runCalled = false;\n\n  if (!internalWorkspacePkgDirectoryPath) {\n    process.on(\"beforeExit\", () => {\n      if (!runCalled) {\n        throw new Error(\"Call .run() and await the result.\");\n      }\n    });\n  }\n\n  class Job {\n    name: string;\n\n    fn: () => Promise<void> | void;\n\n    constructor(name: string, fn: () => Promise<void> | void) {\n      this.name = name;\n      this.fn = fn;\n    }\n\n    async run(): Promise<void> {\n      try {\n        await this.fn();\n      } catch (error) {\n        throw new Error(`${this.name} failed: ${(error as Error).message}`, {\n          cause: error,\n        });\n      }\n    }\n\n    runSync(): void {\n      const result = this.fn();\n      if (result instanceof Promise) {\n        throw new TypeError(`${this.name} failed: Promise returned`);\n      }\n    }\n  }\n\n  const jobs: Job[] = [];\n\n  return {\n    async run({ skipDisplayMessages = false }: CheckPackageApiRunOptions = {}) {\n      runCalled = true;\n      // TODO parallel\n      for (const job of jobs) {\n        await job.run();\n      }\n      if (tryToAutoFix) {\n        writePackageIfChanged();\n      }\n      if (!skipDisplayMessages) {\n        displayMessages();\n      }\n    },\n\n    runSync({ skipDisplayMessages = false }: CheckPackageApiRunOptions = {}) {\n      for (const job of jobs) {\n        job.runSync();\n      }\n      if (tryToAutoFix) {\n        writePackageIfChanged();\n      }\n      if (!skipDisplayMessages) {\n        displayMessages();\n      }\n    },\n\n    parsedPkg,\n    pkg: parsedPkg.value as SetRequired<PackageJson, \"name\">,\n    pkgDirname,\n    pkgPathName,\n    isPkgLibrary,\n    getDependencyPackageJson,\n    checkExactVersions({\n      onlyWarnsFor,\n      internalExactVersionsIgnore,\n      allowRangeVersionsInDependencies = true,\n    } = {}) {\n      jobs.push(\n        new Job(this.checkExactVersions.name, () => {\n          const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n            \"checkExactVersions.onlyWarnsFor\",\n            onlyWarnsFor,\n          );\n          checkExactVersions(\n            createReportError(\"Exact versions\", parsedPkg.path),\n            parsedPkg,\n            !allowRangeVersionsInDependencies\n              ? [\"dependencies\", \"devDependencies\", \"resolutions\"]\n              : [\"devDependencies\", \"resolutions\"],\n            {\n              onlyWarnsForCheck,\n              internalExactVersionsIgnore,\n              getDependencyPackageJson,\n              tryToAutoFix,\n            },\n          );\n        }),\n      );\n      return this;\n    },\n\n    checkResolutionsVersionsMatch() {\n      const reportError = createReportError(\n        \"Resolutions match other dependencies\",\n        parsedPkg.path,\n      );\n      checkResolutionsVersionsMatch(reportError, parsedPkg, {\n        tryToAutoFix,\n      });\n      return this;\n    },\n\n    checkExactDevVersions({ onlyWarnsFor } = {}) {\n      jobs.push(\n        new Job(this.checkExactDevVersions.name, () => {\n          const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n            \"checkExactDevVersions.onlyWarnsFor\",\n            onlyWarnsFor,\n          );\n          checkExactVersions(\n            createReportError(\"Exact dev versions\", parsedPkg.path),\n            parsedPkg,\n            [\"devDependencies\"],\n            {\n              onlyWarnsForCheck,\n              tryToAutoFix,\n              getDependencyPackageJson,\n            },\n          );\n        }),\n      );\n      return this;\n    },\n\n    checkNoDependencies(\n      type = \"dependencies\",\n      moveToSuggestion = \"devDependencies\",\n    ) {\n      const reportError = createReportError(\"No dependencies\", parsedPkg.path);\n      checkNoDependencies(reportError, parsedPkg, type, moveToSuggestion);\n      return this;\n    },\n\n    checkDirectPeerDependencies({\n      missingOnlyWarnsFor,\n      invalidOnlyWarnsFor,\n      internalMissingConfigName = \"missingOnlyWarnsFor\",\n      internalInvalidConfigName = \"invalidOnlyWarnsFor\",\n    } = {}) {\n      jobs.push(\n        new Job(this.checkDirectPeerDependencies.name, () => {\n          const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck(\n            internalMissingConfigName,\n            missingOnlyWarnsFor,\n          );\n          const invalidOnlyWarnsForCheck =\n            internalInvalidConfigName === internalMissingConfigName\n              ? missingOnlyWarnsForCheck\n              : createOnlyWarnsForMappingCheck(\n                  internalInvalidConfigName,\n                  invalidOnlyWarnsFor,\n                );\n          const reportError = createReportError(\n            \"Peer Dependencies\",\n            parsedPkg.path,\n          );\n          checkDirectPeerDependencies(\n            reportError,\n            isPkgLibrary,\n            parsedPkg,\n            getDependencyPackageJson,\n            missingOnlyWarnsForCheck,\n            invalidOnlyWarnsForCheck,\n          );\n\n          reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck);\n          if (missingOnlyWarnsForCheck !== invalidOnlyWarnsForCheck) {\n            reportNotWarnedForMapping(reportError, invalidOnlyWarnsForCheck);\n          }\n        }),\n      );\n      return this;\n    },\n\n    checkDirectDuplicateDependencies({\n      onlyWarnsFor,\n      internalConfigName = \"onlyWarnsFor\",\n    } = {}) {\n      jobs.push(\n        new Job(this.checkDirectDuplicateDependencies.name, () => {\n          checkDirectDuplicateDependencies(\n            createReportError(\"Direct Duplicate Dependencies\", parsedPkg.path),\n            parsedPkg,\n            isPkgLibrary,\n            \"dependencies\",\n            getDependencyPackageJson,\n            createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor),\n          );\n        }),\n      );\n      return this;\n    },\n\n    checkResolutionsHasExplanation(\n      checkMessage: CheckResolutionMessage = (depKey, message) => undefined,\n    ) {\n      const reportError = createReportError(\n        \"Resolutions has explanation\",\n        parsedPkg.path,\n      );\n      checkResolutionsHasExplanation(\n        reportError,\n        parsedPkg,\n        checkMessage,\n        getDependencyPackageJson,\n      );\n      return this;\n    },\n\n    checkRecommended({\n      onlyWarnsForInPackage,\n      onlyWarnsForInDependencies,\n      allowRangeVersionsInDependencies = isPkgLibrary,\n      internalExactVersionsIgnore,\n      checkResolutionMessage,\n    } = {}) {\n      let internalMissingPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n        {};\n      let internalInvalidPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n        {};\n      let internalDirectDuplicateDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n        {};\n\n      const exactVersionsOnlyWarnsFor =\n        onlyWarnsForInPackage?.exactVersions || [];\n\n      if (onlyWarnsForInDependencies) {\n        internalDirectDuplicateDependenciesOnlyWarnsFor = {};\n        internalMissingPeerDependenciesOnlyWarnsFor = {};\n        internalInvalidPeerDependenciesOnlyWarnsFor = {};\n\n        getEntries(onlyWarnsForInDependencies).forEach(\n          ([dependencyNameOrSpecialKey, onlyWarnsForValue]) => {\n            if (onlyWarnsForValue.duplicateDirectDependency) {\n              (\n                internalDirectDuplicateDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n              )[dependencyNameOrSpecialKey] =\n                onlyWarnsForValue.duplicateDirectDependency;\n            }\n            if (onlyWarnsForValue.missingPeerDependency) {\n              (\n                internalMissingPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n              )[dependencyNameOrSpecialKey] =\n                onlyWarnsForValue.missingPeerDependency;\n            }\n            if (onlyWarnsForValue.invalidPeerDependencyVersion) {\n              (\n                internalInvalidPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n              )[dependencyNameOrSpecialKey] =\n                onlyWarnsForValue.invalidPeerDependencyVersion;\n            }\n          },\n        );\n      }\n\n      this.checkExactVersions({\n        allowRangeVersionsInDependencies,\n        onlyWarnsFor: exactVersionsOnlyWarnsFor,\n        internalExactVersionsIgnore,\n      });\n\n      this.checkResolutionsVersionsMatch();\n      this.checkResolutionsHasExplanation(checkResolutionMessage);\n\n      this.checkDirectPeerDependencies({\n        missingOnlyWarnsFor: internalMissingPeerDependenciesOnlyWarnsFor,\n        invalidOnlyWarnsFor: internalInvalidPeerDependenciesOnlyWarnsFor,\n        internalMissingConfigName:\n          \"onlyWarnsForInDependencies.missingPeerDependency\",\n        internalInvalidConfigName:\n          \"onlyWarnsForInDependencies.invalidPeerDependencyVersion\",\n      });\n\n      this.checkDirectDuplicateDependencies({\n        onlyWarnsFor: internalDirectDuplicateDependenciesOnlyWarnsFor,\n        internalConfigName:\n          \"onlyWarnsForInDependencies.duplicateDirectDependency\",\n      });\n\n      if (isPkgLibrary) {\n        this.checkMinRangeDependenciesSatisfiesDevDependencies();\n        this.checkMinRangePeerDependenciesSatisfiesDependencies();\n      }\n\n      return this;\n    },\n\n    checkIdenticalVersionsThanDependency(\n      depName,\n      { resolutions, dependencies, devDependencies },\n    ) {\n      jobs.push(\n        new Job(this.checkIdenticalVersionsThanDependency.name, () => {\n          const [depPkg] = getDependencyPackageJson(depName);\n          const reportError = createReportError(\n            `Same Versions than ${depPkg.name || \"\"}`,\n            parsedPkg.path,\n          );\n          if (resolutions) {\n            checkIdenticalVersionsThanDependency(\n              reportError,\n              parsedPkg,\n              \"resolutions\",\n              resolutions,\n              depPkg,\n              depPkg.dependencies,\n            );\n          }\n          if (dependencies) {\n            checkIdenticalVersionsThanDependency(\n              reportError,\n              parsedPkg,\n              \"dependencies\",\n              dependencies,\n              depPkg,\n              depPkg.dependencies,\n            );\n          }\n          if (devDependencies) {\n            checkIdenticalVersionsThanDependency(\n              reportError,\n              parsedPkg,\n              \"devDependencies\",\n              devDependencies,\n              depPkg,\n              depPkg.dependencies,\n            );\n          }\n        }),\n      );\n      return this;\n    },\n\n    checkIdenticalVersionsThanDevDependencyOfDependency(\n      depName,\n      { resolutions, dependencies, devDependencies },\n    ) {\n      jobs.push(\n        new Job(this.checkSatisfiesVersionsFromDependency.name, () => {\n          const [depPkg] = getDependencyPackageJson(depName);\n          const reportError = createReportError(\n            `Same Versions than ${depPkg.name || \"\"}`,\n            parsedPkg.path,\n          );\n          if (resolutions) {\n            checkIdenticalVersionsThanDependency(\n              reportError,\n              parsedPkg,\n              \"resolutions\",\n              resolutions,\n              depPkg,\n              depPkg.devDependencies,\n            );\n          }\n          if (dependencies) {\n            checkIdenticalVersionsThanDependency(\n              reportError,\n              parsedPkg,\n              \"dependencies\",\n              dependencies,\n              depPkg,\n              depPkg.devDependencies,\n            );\n          }\n          if (devDependencies) {\n            checkIdenticalVersionsThanDependency(\n              reportError,\n              parsedPkg,\n              \"devDependencies\",\n              devDependencies,\n              depPkg,\n              depPkg.devDependencies,\n            );\n          }\n        }),\n      );\n      return this;\n    },\n\n    checkSatisfiesVersions(dependencies) {\n      const reportError = createReportError(\n        \"Satisfies Versions\",\n        parsedPkg.path,\n      );\n      Object.entries(dependencies).forEach(\n        ([dependencyType, dependenciesRanges]) => {\n          checkSatisfiesVersions(\n            reportError,\n            parsedPkg,\n            dependencyType as DependencyTypes,\n            dependenciesRanges,\n          );\n        },\n      );\n      return this;\n    },\n\n    checkSatisfiesVersionsFromDependency(\n      depName,\n      { resolutions, dependencies, devDependencies },\n    ) {\n      jobs.push(\n        new Job(this.checkSatisfiesVersionsFromDependency.name, () => {\n          const reportError = createReportError(\n            \"Satisfies Versions From Dependency\",\n            parsedPkg.path,\n          );\n          const [depPkg] = getDependencyPackageJson(depName);\n          if (resolutions) {\n            checkSatisfiesVersionsFromDependency(\n              reportError,\n              parsedPkg,\n              \"resolutions\",\n              resolutions,\n              depPkg,\n              \"dependencies\",\n              { tryToAutoFix, shouldHaveExactVersions },\n            );\n          }\n          if (dependencies) {\n            checkSatisfiesVersionsFromDependency(\n              reportError,\n              parsedPkg,\n              \"dependencies\",\n              dependencies,\n              depPkg,\n              \"dependencies\",\n              { tryToAutoFix, shouldHaveExactVersions },\n            );\n          }\n          if (devDependencies) {\n            checkSatisfiesVersionsFromDependency(\n              reportError,\n              parsedPkg,\n              \"devDependencies\",\n              devDependencies,\n              depPkg,\n              \"dependencies\",\n              { tryToAutoFix, shouldHaveExactVersions },\n            );\n          }\n        }),\n      );\n      return this;\n    },\n\n    checkSatisfiesVersionsInDevDependenciesOfDependency(\n      depName,\n      { resolutions, dependencies, devDependencies },\n    ) {\n      jobs.push(\n        new Job(\n          this.checkSatisfiesVersionsInDevDependenciesOfDependency.name,\n          () => {\n            const reportError = createReportError(\n              \"Satisfies Versions In Dev Dependencies Of Dependency\",\n              parsedPkg.path,\n            );\n            const [depPkg] = getDependencyPackageJson(depName);\n            if (resolutions) {\n              checkSatisfiesVersionsFromDependency(\n                reportError,\n                parsedPkg,\n                \"resolutions\",\n                resolutions,\n                depPkg,\n                \"devDependencies\",\n                { tryToAutoFix, shouldHaveExactVersions },\n              );\n            }\n            if (dependencies) {\n              checkSatisfiesVersionsFromDependency(\n                reportError,\n                parsedPkg,\n                \"dependencies\",\n                dependencies,\n                depPkg,\n                \"devDependencies\",\n                { tryToAutoFix, shouldHaveExactVersions },\n              );\n            }\n            if (devDependencies) {\n              checkSatisfiesVersionsFromDependency(\n                reportError,\n                parsedPkg,\n                \"devDependencies\",\n                devDependencies,\n                depPkg,\n                \"devDependencies\",\n                { tryToAutoFix, shouldHaveExactVersions },\n              );\n            }\n          },\n        ),\n      );\n      return this;\n    },\n\n    checkIdenticalVersions({ resolutions, dependencies, devDependencies }) {\n      const reportError = createReportError(\n        \"Identical Versions\",\n        parsedPkg.path,\n      );\n      if (resolutions) {\n        checkIdenticalVersions(\n          reportError,\n          parsedPkg,\n          \"resolutions\",\n          resolutions,\n          { tryToAutoFix },\n        );\n      }\n      if (dependencies) {\n        checkIdenticalVersions(\n          reportError,\n          parsedPkg,\n          \"dependencies\",\n          dependencies,\n          { tryToAutoFix },\n        );\n      }\n      if (devDependencies) {\n        checkIdenticalVersions(\n          reportError,\n          parsedPkg,\n          \"devDependencies\",\n          devDependencies,\n          { tryToAutoFix },\n        );\n      }\n      return this;\n    },\n\n    checkSatisfiesVersionsBetweenDependencies(config) {\n      jobs.push(\n        new Job(this.checkSatisfiesVersionsBetweenDependencies.name, () => {\n          const depNamesLvl1 = Object.keys(config);\n          const depNamesLvl2 = Object.values(config).flatMap((depConfig) => [\n            ...Object.keys(depConfig.dependencies || {}),\n            ...Object.keys(depConfig.devDependencies || {}),\n          ]);\n          const uniqueDepNames = [\n            ...new Set([...depNamesLvl1, ...depNamesLvl2]),\n          ];\n          const depPkgsByName = new Map<\n            string,\n            ReturnType<typeof getDependencyPackageJson>\n          >(\n            uniqueDepNames.map(\n              (depName) =>\n                [depName, getDependencyPackageJson(depName)] as const,\n            ),\n          );\n\n          Object.entries(config).forEach(([depName1, depConfig1]) => {\n            const [depPkg1, depPkgPath1] = depPkgsByName.get(depName1)!;\n            ([\"dependencies\", \"devDependencies\"] as const).forEach(\n              (dep1Type) => {\n                Object.entries(depConfig1[dep1Type] || {}).forEach(\n                  ([depName2, depConfig2]) => {\n                    if (!depConfig2) return;\n                    const [depPkg2] = depPkgsByName.get(depName2)!;\n                    ([\"dependencies\", \"devDependencies\"] as const).forEach(\n                      (dep2Type) => {\n                        const reportError = createReportError(\n                          \"Satisfies Versions From Dependency\",\n                          depPkgPath1,\n                        );\n\n                        checkSatisfiesVersionsBetweenDependencies(\n                          reportError,\n                          depPkg1,\n                          dep1Type,\n                          depConfig2[dep2Type] || [],\n                          depPkg2,\n                          dep2Type,\n                          { shouldHaveExactVersions },\n                        );\n                      },\n                    );\n                  },\n                );\n              },\n            );\n          });\n        }),\n      );\n      return this;\n    },\n\n    checkSatisfiesVersionsInDependency(depName, dependenciesRanges) {\n      jobs.push(\n        new Job(this.checkSatisfiesVersionsInDependency.name, () => {\n          const [depPkg] = getDependencyPackageJson(depName);\n          const reportError = createReportError(\n            \"Satisfies Versions In Dependency\",\n            parsedPkg.path,\n          );\n          checkSatisfiesVersionsInDependency(\n            reportError,\n            depPkg,\n            dependenciesRanges,\n          );\n        }),\n      );\n      return this;\n    },\n\n    checkMinRangeDependenciesSatisfiesDevDependencies() {\n      jobs.push(\n        new Job(this.checkSatisfiesVersionsInDependency.name, () => {\n          const reportError = createReportError(\n            '\"dependencies\" minimum range satisfies \"devDependencies\"',\n            parsedPkg.path,\n          );\n          checkMinRangeSatisfies(\n            reportError,\n            parsedPkg,\n            \"dependencies\",\n            \"devDependencies\",\n            { tryToAutoFix },\n          );\n        }),\n      );\n      return this;\n    },\n\n    checkMinRangePeerDependenciesSatisfiesDependencies() {\n      jobs.push(\n        new Job(this.checkSatisfiesVersionsInDependency.name, () => {\n          const reportError = createReportError(\n            '\"peerDependencies\" minimum range satisfies \"dependencies\"',\n            parsedPkg.path,\n          );\n          checkMinRangeSatisfies(\n            reportError,\n            parsedPkg,\n            \"peerDependencies\",\n            \"dependencies\",\n            {\n              tryToAutoFix,\n            },\n          );\n        }),\n      );\n      return this;\n    },\n  };\n}\n","import type { ReportError } from \"../reporting/ReportError.ts\";\nimport { reportNotWarnedForMapping } from \"../reporting/cliErrorReporting.ts\";\nimport type { GetDependencyPackageJson } from \"../utils/createGetDependencyPackageJson.ts\";\nimport { getKeys } from \"../utils/object.ts\";\nimport type {\n  PackageJson,\n  ParsedPackageJson,\n  RegularDependencyTypes,\n} from \"../utils/packageTypes.ts\";\nimport type { OnlyWarnsForMappingCheck } from \"../utils/warnForUtils.ts\";\nimport { regularDependencyTypes } from \"./checkDirectPeerDependencies.ts\";\nimport { checkSatisfiesPeerDependency } from \"./checkPeerDependencies.ts\";\n\nexport function checkMonorepoDirectSubpackagePeerDependencies(\n  reportError: ReportError,\n  isLibrary: boolean,\n  monorepoPkg: ParsedPackageJson,\n  subpackagePkg: ParsedPackageJson,\n  getDependencyPackageJson: GetDependencyPackageJson,\n  invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n  missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n): void {\n  const allDepPkgs: {\n    name: string;\n    type: RegularDependencyTypes;\n    pkg: PackageJson;\n  }[] = [];\n\n  regularDependencyTypes.forEach((depType) => {\n    const dependencies = subpackagePkg[depType];\n    if (!dependencies) return;\n    for (const depName of getKeys(dependencies)) {\n      const [depPkg] = getDependencyPackageJson(depName);\n      if (monorepoPkg.devDependencies?.[depName]) {\n        continue; // we already checked this.\n      }\n      allDepPkgs.push({ name: depName, type: depType, pkg: depPkg });\n    }\n  });\n\n  for (const { name: depName, type: depType, pkg: depPkg } of allDepPkgs) {\n    if (depPkg.peerDependencies) {\n      for (const [peerDepName, range] of Object.entries(\n        depPkg.peerDependencies,\n      )) {\n        if (subpackagePkg.devDependencies?.[peerDepName]) {\n          continue; // skip as already checked in checkDirectPeerDependencies for the subpackage itself.\n        }\n        checkSatisfiesPeerDependency(\n          reportError,\n          monorepoPkg,\n          depType,\n          [\"devDependencies\"],\n          peerDepName,\n          range,\n          depPkg,\n          invalidOnlyWarnsForCheck.createFor(depName),\n        );\n      }\n    }\n  }\n\n  reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck);\n  if (missingOnlyWarnsForCheck !== invalidOnlyWarnsForCheck) {\n    reportNotWarnedForMapping(reportError, invalidOnlyWarnsForCheck);\n  }\n}\n","import fs, { constants } from \"node:fs\";\nimport path from \"node:path\";\nimport type { Except, PackageJson } from \"type-fest\";\nimport type {\n  CheckPackageApi,\n  CreateCheckPackageOptions,\n  OnlyWarnsForInDependenciesCheckPackageRecommendedOption,\n  OnlyWarnsForInDependencyCheckPackageRecommendedOption,\n  OnlyWarnsForInPackageCheckPackageRecommendedOption,\n} from \"./check-package.ts\";\nimport { createCheckPackage } from \"./check-package.ts\";\nimport { checkDuplicateDependencies } from \"./checks/checkDuplicateDependencies.ts\";\nimport { checkMonorepoDirectSubpackagePeerDependencies } from \"./checks/checkMonorepoDirectSubpackagePeerDependencies.ts\";\nimport type { CheckResolutionMessage } from \"./checks/checkResolutionsHasExplanation.ts\";\nimport {\n  createCliReportError,\n  displayMessages,\n  reportNotWarnedForMapping,\n} from \"./reporting/cliErrorReporting.ts\";\nimport { resolveWorkspacesPackagesGlobs } from \"./utils/pnpmWorkspaceYaml.ts\";\nimport type { OnlyWarnsForOptionalDependencyMapping } from \"./utils/warnForUtils.ts\";\nimport { createOnlyWarnsForMappingCheck } from \"./utils/warnForUtils.ts\";\n\ninterface OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption extends OnlyWarnsForInPackageCheckPackageRecommendedOption {\n  duplicateDirectDependency: OnlyWarnsForInDependencyCheckPackageRecommendedOption[\"duplicateDirectDependency\"];\n}\n\ntype OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption = Record<\n  // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents, @typescript-eslint/sort-type-constituents\n  \"*\" | string,\n  OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n>;\n\ntype OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption =\n  Record<string, OnlyWarnsForInDependenciesCheckPackageRecommendedOption>;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n  allowRangeVersionsInLibraries?: boolean;\n  monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n  monorepoDirectSubpackagePeerDependenciesMissingOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n  monorepoDirectSubpackagePeerDependenciesInvalidOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n  onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n  onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n  onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n  onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n  checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\n  run: () => Promise<void>;\n\n  checkRecommended: (\n    options?: CheckPackageWithWorkspacesRecommendedOptions,\n  ) => CheckPackageWithWorkspacesApi;\n\n  forRoot: (\n    callback: (checkPackage: CheckPackageApi) => void,\n  ) => CheckPackageWithWorkspacesApi;\n  forEach: (\n    callback: (checkPackage: CheckPackageApi) => void,\n  ) => CheckPackageWithWorkspacesApi;\n  for: (\n    id: string,\n    callback: (checkPackage: CheckPackageApi) => void,\n  ) => CheckPackageWithWorkspacesApi;\n}\n\ninterface CreateCheckPackageWithWorkspacesOptions extends Except<\n  CreateCheckPackageOptions,\n  \"isLibrary\"\n> {\n  isLibrary?: (pkg: PackageJson) => boolean;\n}\n\nexport function createCheckPackageWithWorkspaces({\n  createReportError = createCliReportError,\n  ...createCheckPackageOptions\n}: CreateCheckPackageWithWorkspacesOptions = {}): CheckPackageWithWorkspacesApi {\n  const checkPackage = createCheckPackage({\n    createReportError,\n    ...createCheckPackageOptions,\n    isLibrary: false,\n  });\n  const { pkg, pkgDirname } = checkPackage;\n\n  const pkgWorkspaces = resolveWorkspacesPackagesGlobs(\n    pkg,\n    path.join(pkgDirname, \"package.json\"),\n  );\n\n  if (!pkgWorkspaces) {\n    throw new Error('Package is missing \"workspaces\"');\n  }\n\n  const workspacePackagesPaths: string[] = [];\n\n  const match = fs.globSync(pkgWorkspaces, {\n    cwd: pkgDirname,\n    exclude: [\"**/node_modules\"],\n  });\n  for (const pathMatch of match) {\n    try {\n      fs.accessSync(path.join(pathMatch, \"package.json\"), constants.R_OK);\n    } catch {\n      console.log(\n        `Ignored potential directory, no package.json found: ${pathMatch}`,\n      );\n      continue;\n    }\n\n    const subPkgDirectoryPath = path.relative(process.cwd(), pathMatch);\n    workspacePackagesPaths.push(subPkgDirectoryPath);\n  }\n\n  const checksWorkspaces = new Map<string, CheckPackageApi>(\n    workspacePackagesPaths.map((subPkgDirectoryPath) => {\n      const checkPkg = createCheckPackage({\n        ...createCheckPackageOptions,\n        createReportError,\n        packageDirectoryPath: subPkgDirectoryPath,\n        internalWorkspacePkgDirectoryPath:\n          createCheckPackageOptions.packageDirectoryPath || \".\",\n      });\n      if (!checkPkg.pkg.name) {\n        throw new Error(`Package \"${subPkgDirectoryPath}\" is missing name`);\n      }\n      return [checkPkg.pkg.name, checkPkg];\n    }),\n  );\n\n  return {\n    async run() {\n      for (const checksWorkspace of [\n        checkPackage,\n        ...checksWorkspaces.values(),\n      ]) {\n        await checksWorkspace.run({ skipDisplayMessages: true });\n      }\n\n      displayMessages();\n    },\n\n    checkRecommended({\n      allowRangeVersionsInLibraries = true,\n      onlyWarnsForInRootPackage,\n      onlyWarnsForInMonorepoPackages,\n      onlyWarnsForInRootDependencies,\n      onlyWarnsForInMonorepoPackagesDependencies = {},\n      monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n      monorepoDirectSubpackagePeerDependenciesMissingOnlyWarnsFor,\n      monorepoDirectSubpackagePeerDependenciesInvalidOnlyWarnsFor,\n      checkResolutionMessage,\n    } = {}) {\n      checkPackage.checkNoDependencies();\n      checkPackage.checkRecommended({\n        onlyWarnsForInPackage: onlyWarnsForInRootPackage,\n        onlyWarnsForInDependencies: onlyWarnsForInRootDependencies,\n        checkResolutionMessage,\n      });\n\n      const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck =\n        createOnlyWarnsForMappingCheck(\n          \"monorepoDirectDuplicateDependenciesOnlyWarnsFor\",\n          monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n        );\n\n      const monorepoDirectSubpackagePeerDependenciesMissingOnlyWarnsForCheck =\n        createOnlyWarnsForMappingCheck(\n          \"monorepoDirectSubpackagePeerDependenciesMissingOnlyWarnsFor\",\n          monorepoDirectSubpackagePeerDependenciesMissingOnlyWarnsFor,\n        );\n\n      const monorepoDirectSubpackagePeerDependenciesInvalidOnlyWarnsForCheck =\n        createOnlyWarnsForMappingCheck(\n          \"monorepoDirectSubpackagePeerDependenciesInvalidOnlyWarnsFor\",\n          monorepoDirectSubpackagePeerDependenciesInvalidOnlyWarnsFor,\n        );\n\n      const previousCheckedWorkspaces = new Map<string, CheckPackageApi>();\n      checksWorkspaces.forEach((checkSubPackage, id) => {\n        checkSubPackage.checkRecommended({\n          allowRangeVersionsInDependencies: checkSubPackage.isPkgLibrary\n            ? allowRangeVersionsInLibraries\n            : false,\n          onlyWarnsForInPackage: onlyWarnsForInMonorepoPackages\n            ? {\n                ...onlyWarnsForInMonorepoPackages[\"*\"],\n                ...onlyWarnsForInMonorepoPackages[checkSubPackage.pkg.name],\n              }\n            : undefined,\n          onlyWarnsForInDependencies: {\n            ...onlyWarnsForInMonorepoPackagesDependencies[\"*\"],\n            ...onlyWarnsForInMonorepoPackagesDependencies[\n              checkSubPackage.pkg.name\n            ],\n          },\n          internalExactVersionsIgnore: [...checksWorkspaces.keys()],\n          checkResolutionMessage,\n        });\n\n        const reportMonorepoDDDError = createReportError(\n          \"Monorepo Direct Duplicate Dependencies\",\n          checkSubPackage.pkgPathName,\n        );\n        const reportMonorepoDPDError = createReportError(\n          `Monorepo Direct Peer Dependencies for dependencies of \"${checkSubPackage.pkg.name}\" (${checkSubPackage.pkgPathName})`,\n          checkPackage.pkgPathName,\n        );\n\n        // Root\n        checkDuplicateDependencies(\n          reportMonorepoDDDError,\n          checkSubPackage.parsedPkg,\n          checkSubPackage.isPkgLibrary,\n          \"devDependencies\",\n          [\"dependencies\", \"devDependencies\"],\n          pkg,\n          monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n            checkSubPackage.pkg.name,\n          ),\n        );\n        // previous packages\n        previousCheckedWorkspaces.forEach((previousCheckSubPackage) => {\n          checkDuplicateDependencies(\n            reportMonorepoDDDError,\n            checkSubPackage.parsedPkg,\n            checkSubPackage.isPkgLibrary,\n            \"devDependencies\",\n            [\"dependencies\", \"devDependencies\"],\n            previousCheckSubPackage.pkg,\n            monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n              checkSubPackage.pkg.name,\n            ),\n          );\n          checkDuplicateDependencies(\n            reportMonorepoDDDError,\n            checkSubPackage.parsedPkg,\n            checkSubPackage.isPkgLibrary,\n            \"dependencies\",\n            [\"dependencies\", \"devDependencies\"],\n            previousCheckSubPackage.pkg,\n            monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n              checkSubPackage.pkg.name,\n            ),\n          );\n          checkDuplicateDependencies(\n            reportMonorepoDDDError,\n            checkSubPackage.parsedPkg,\n            checkSubPackage.isPkgLibrary,\n            \"peerDependencies\",\n            [\"peerDependencies\"],\n            previousCheckSubPackage.pkg,\n            monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n              checkSubPackage.pkg.name,\n            ),\n          );\n        });\n        checkMonorepoDirectSubpackagePeerDependencies(\n          reportMonorepoDPDError,\n          checkSubPackage.isPkgLibrary,\n          checkPackage.parsedPkg,\n          checkSubPackage.parsedPkg,\n          checkSubPackage.getDependencyPackageJson,\n          monorepoDirectSubpackagePeerDependenciesMissingOnlyWarnsForCheck,\n          monorepoDirectSubpackagePeerDependenciesInvalidOnlyWarnsForCheck,\n        );\n\n        previousCheckedWorkspaces.set(id, checkSubPackage);\n      });\n      reportNotWarnedForMapping(\n        createReportError(\n          \"Monorepo Direct Duplicate Dependencies\",\n          checkPackage.pkgPathName,\n        ),\n        monorepoDirectDuplicateDependenciesOnlyWarnsForCheck,\n      );\n\n      return this;\n    },\n\n    forRoot(callback) {\n      callback(checkPackage);\n      return this;\n    },\n\n    forEach(callback) {\n      checksWorkspaces.forEach((checkSubPackage) => {\n        callback(checkSubPackage);\n      });\n      return this;\n    },\n\n    for(id, callback) {\n      const packageCheck = checksWorkspaces.get(id);\n      if (!packageCheck) {\n        throw new Error(\n          `Invalid package name: ${id}. Known package names: \"${[\n            ...checksWorkspaces.keys(),\n          ].join('\",\"')}\"`,\n        );\n      }\n      callback(packageCheck);\n      return this;\n    },\n  };\n}\n"],"names":["depName"],"mappings":"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"}