diff --git a/dist/definitions/checks/checkResolutionsVersionsMatch.d.ts.map b/dist/definitions/checks/checkResolutionsVersionsMatch.d.ts.map index 7acb1a3c..c7199a11 100644 --- a/dist/definitions/checks/checkResolutionsVersionsMatch.d.ts.map +++ b/dist/definitions/checks/checkResolutionsVersionsMatch.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"checkResolutionsVersionsMatch.d.ts","sourceRoot":"","sources":["../../../src/checks/checkResolutionsVersionsMatch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,oCAAoC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uBAAuB,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACpD;AAED,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,EACE,YAAY,EACZ,uBAA2C,GAC5C,GAAE,oCAAyC,GAC3C,IAAI,CA6BN"} \ No newline at end of file +{"version":3,"file":"checkResolutionsVersionsMatch.d.ts","sourceRoot":"","sources":["../../../src/checks/checkResolutionsVersionsMatch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,oCAAoC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uBAAuB,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACpD;AAED,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,EACE,YAAY,EACZ,uBAA2C,GAC5C,GAAE,oCAAyC,GAC3C,IAAI,CAqCN"} \ No newline at end of file diff --git a/dist/index-node16.mjs b/dist/index-node16.mjs index d54591fb..63e8bd71 100644 --- a/dist/index-node16.mjs +++ b/dist/index-node16.mjs @@ -384,7 +384,15 @@ function checkResolutionsVersionsMatch(pkg, pkgPathName, { } = {}) { const pkgResolutions = pkg.resolutions || {}; const reportError = customCreateReportError('Resolutions match other dependencies', pkgPathName); - Object.entries(pkgResolutions).forEach(([depName, resolutionDepVersion]) => { + Object.entries(pkgResolutions).forEach(([resolutionKey, resolutionValue]) => { + let depName = resolutionKey; + let resolutionDepVersion = resolutionValue; + if (resolutionValue.startsWith('patch:')) { + const matchResolutionInKey = /^(.+)@npm:(.+)$/.exec(resolutionKey); + if (matchResolutionInKey) { + [, depName, resolutionDepVersion] = matchResolutionInKey; + } + } ['dependencies', 'devDependencies'].forEach(depType => { const range = pkg?.[depType]?.[depName]; if (!range) return; diff --git a/dist/index-node16.mjs.map b/dist/index-node16.mjs.map index 4973ef3c..bb6f3be5 100644 --- a/dist/index-node16.mjs.map +++ b/dist/index-node16.mjs.map @@ -1 +1 @@ -{"version":3,"file":"index-node16.mjs","sources":["../src/utils/object.ts","../src/utils/createReportError.ts","../src/checks/checkDuplicateDependencies.ts","../src/checks/checkDirectDuplicateDependencies.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/utils/semverUtils.ts","../src/checks/checkSatisfiesVersionsFromDependency.ts","../src/checks/checkSatisfiesVersionsInDependency.ts","../src/utils/pkgJsonUtils.ts","../src/utils/createGetDependencyPackageJson.ts","../src/utils/warnForUtils.ts","../src/check-package.ts","../src/check-package-with-workspaces.ts"],"sourcesContent":["export const getKeys = (o: T): (keyof T)[] =>\n Object.keys(o) as (keyof T)[];\n\nexport const getEntries = (o: T): [keyof T, T[keyof T]][] =>\n Object.entries(o) as unknown as [keyof T, T[keyof T]][];\n","/* eslint-disable no-console */\n\nimport chalk from 'chalk';\nimport { getEntries } from './object';\nimport type {\n OnlyWarnsForCheck,\n OnlyWarnsForMappingCheck,\n} from './warnForUtils';\n\nexport type ReportError = (\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n) => void;\n\nlet titleDisplayed: string | null = null;\nlet pkgPathDisplayed: string | null = null;\n\nlet totalWarnings = 0;\nlet totalErrors = 0;\n\nexport function displayConclusion(): void {\n if (!totalWarnings && !totalErrors) {\n console.log(`\\n${chalk.green('✅ No errors or warnings found')}.`);\n } else if (!totalErrors) {\n console.log(`\\nFound ${chalk.yellow(`${totalWarnings} warnings`)}.`);\n } else if (!totalWarnings) {\n console.log(`\\nFound ${chalk.red(`${totalErrors} errors`)}.`);\n } else {\n console.log(\n `\\nFound ${chalk.red(`${totalErrors} errors`)} and ${chalk.yellow(\n `${totalWarnings} warnings`,\n )}.`,\n );\n }\n}\n\nexport function logMessage(\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n): void {\n if (onlyWarns) totalWarnings++;\n else totalErrors++;\n console.error(\n `${\n onlyWarns ? chalk.yellow(`⚠ ${msgTitle}`) : chalk.red(`❌ ${msgTitle}`)\n }${msgInfo ? `: ${msgInfo}` : ''}`,\n );\n}\n\nexport function createReportError(\n title: string,\n pkgPathName: string,\n): ReportError {\n return function reportError(msgTitle, msgInfo, onlyWarns): void {\n if (titleDisplayed !== title || pkgPathName !== pkgPathDisplayed) {\n if (titleDisplayed) console.error();\n console.error(chalk.cyan(`== ${title} in ${pkgPathName} ==`));\n titleDisplayed = title;\n pkgPathDisplayed = pkgPathName;\n }\n logMessage(msgTitle, msgInfo, onlyWarns);\n\n if (!onlyWarns) {\n // console.trace();\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 `Invalid config in \"${onlyWarnsForCheck.configName}\"`,\n `no warning was raised for ${notWarnedFor\n .map((depName) => `\"${depName}\"`)\n .join(', ')}`,\n false,\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 `Invalid config in \"${onlyWarnsForMappingCheck.configName}\" for \"${depNameOrStar}\"`,\n `no warning was raised for ${notWarnedFor\n .map((depName) => `\"${depName}\"`)\n .join(', ')}`,\n );\n });\n}\n","import semver from 'semver';\nimport type { ReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkDuplicateDependencies(\n reportError: ReportError,\n pkg: PackageJson,\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, range] 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 && depVersion === devDepVersion) {\n reportError(\n `Invalid \"${depKey}\" has same version in dependencies and devDependencies`,\n 'please place it only in dependencies or use range in dependencies',\n );\n continue;\n }\n allowDuplicated = true;\n }\n\n if (\n versionsIn.length > 2 ||\n (versionsIn.length === 2 && !allowDuplicated)\n ) {\n reportError(\n `Invalid \"${depKey}\" present in ${versionsIn.join(' and ')}`,\n '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.startsWith('file:') || range.startsWith('file:')) return;\n // https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n if (\n version.startsWith('workspace:') ||\n range.startsWith('workspace:')\n ) {\n return;\n }\n\n if (\n semver.satisfies(version, range, {\n includePrerelease: true,\n }) ||\n semver.intersects(version, range, {\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 reportError(\n `Invalid duplicate dependency \"${depKey}\"`,\n `\"${versions[0]}\" (in ${versionInType}) should satisfies \"${range}\" from \"${depPkg.name}\" ${depType}.`,\n onlyWarnsForCheck.shouldWarnsFor(depKey),\n );\n });\n }\n }\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n reportNotWarnedForMapping,\n createReportError,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkDuplicateDependencies } from './checkDuplicateDependencies';\n\nexport async function checkDirectDuplicateDependencies(\n pkg: PackageJson,\n pkgPathName: string,\n isPackageALibrary: boolean,\n depType: DependencyTypes,\n getDependencyPackageJson: GetDependencyPackageJson,\n onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n reportErrorNamePrefix = '',\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError(\n `${reportErrorNamePrefix}Direct Duplicate Dependencies`,\n pkgPathName,\n );\n\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 semver from 'semver';\nimport type { ReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkPeerDependencies(\n pkg: PackageJson,\n reportError: ReportError,\n type: DependencyTypes,\n allowedPeerIn: DependencyTypes[],\n providedDependencies: [string, string][],\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 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, depRange),\n )\n ) {\n continue;\n }\n\n additionalDetails +=\n ' (required as some dependencies have non-satisfying range too)';\n }\n\n reportError(\n `Missing \"${peerDepName}\" peer dependency from \"${depPkg.name}\" in ${type}`,\n `it should satisfies \"${range}\" and be in ${allowedPeerIn.join(\n ' or ',\n )}${additionalDetails}`,\n missingOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n );\n } else {\n const versions = versionsIn.map(\n (versionsInType) => pkg[versionsInType]![peerDepName],\n );\n\n versions.forEach((version, index) => {\n if (version.startsWith('npm:')) {\n return;\n }\n\n if (version === '*') {\n return;\n }\n\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${peerDepName}\" peer dependency`,\n `\"${version}\" (in ${allowedPeerInExisting[index]}) should satisfies \"${range}\" from \"${depPkg.name}\" ${type}`,\n invalidOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n );\n }\n });\n }\n }\n}\n","import semver from 'semver';\nimport type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedForMapping,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type {\n DependencyTypes,\n PackageJson,\n RegularDependencyTypes,\n} from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkPeerDependencies } from './checkPeerDependencies';\n\nconst 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};\n\nexport async function checkDirectPeerDependencies(\n isLibrary: boolean,\n pkg: PackageJson,\n pkgPathName: string,\n getDependencyPackageJson: GetDependencyPackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError('Peer Dependencies', pkgPathName);\n\n const allDepPkgs: {\n name: string;\n type: RegularDependencyTypes;\n pkg: PackageJson;\n }[] = [];\n const allDirectDependenciesDependencies: [string, string][] = [];\n\n await Promise.all(\n regularDependencyTypes.map(async (depType) => {\n const dependencies = pkg[depType];\n if (!dependencies) return;\n for (const depName of getKeys(dependencies)) {\n if (pkg.peerDependencies?.[depName]) {\n if (\n semver.intersects(\n dependencies[depName],\n pkg.peerDependencies?.[depName],\n )\n ) {\n continue;\n }\n }\n\n const depPkg = getDependencyPackageJson(depName);\n allDepPkgs.push({ name: depName, type: depType, pkg: depPkg });\n\n if (depPkg.dependencies && !isLibrary) {\n allDirectDependenciesDependencies.push(\n ...Object.entries(depPkg.dependencies),\n );\n }\n }\n }),\n );\n\n for (const { name: depName, type: depType, pkg: depPkg } of allDepPkgs) {\n if (depPkg.peerDependencies) {\n checkPeerDependencies(\n pkg,\n reportError,\n depType,\n getAllowedPeerInFromType(depType, isLibrary),\n allDirectDependenciesDependencies,\n depPkg,\n missingOnlyWarnsForCheck.createFor(depName),\n invalidOnlyWarnsForCheck.createFor(depName),\n );\n }\n }\n\n reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck);\n if (missingOnlyWarnsForCheck !== invalidOnlyWarnsForCheck) {\n reportNotWarnedForMapping(reportError, invalidOnlyWarnsForCheck);\n }\n}\n","import semver from 'semver';\nimport type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedFor,\n} from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsFor, OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckExactVersionsOptions {\n getDependencyPackageJson?: GetDependencyPackageJson;\n onlyWarnsForCheck: OnlyWarnsForCheck;\n internalExactVersionsIgnore?: OnlyWarnsFor;\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nconst isVersionRange = (version: string): boolean =>\n version.startsWith('^') ||\n version.startsWith('~') ||\n version.startsWith('>') ||\n version.startsWith('<');\n\nexport async function checkExactVersions(\n pkg: PackageJson,\n pkgPathName: string,\n types: DependencyTypes[],\n {\n getDependencyPackageJson,\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckExactVersionsOptions,\n): Promise {\n const reportError = customCreateReportError('Exact versions', pkgPathName);\n\n for (const type of types) {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) continue;\n\n for (const [dependencyName, versionConst] of Object.entries(\n pkgDependencies,\n )) {\n let version = versionConst;\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 version = realVersion;\n }\n\n if (isVersionRange(version)) {\n if (internalExactVersionsIgnore?.includes(dependencyName)) {\n continue;\n }\n const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName);\n if (!shouldOnlyWarn && tryToAutoFix && getDependencyPackageJson) {\n let resolvedDep;\n try {\n resolvedDep = getDependencyPackageJson(dependencyName);\n } catch {\n resolvedDep = null;\n }\n if (!resolvedDep?.version) {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact, autofix failed to resolve \"${dependencyName}\".`,\n shouldOnlyWarn,\n );\n } else if (\n !semver.satisfies(resolvedDep.version, version, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact, autofix failed as \"${dependencyName}\"'s resolved version is \"${resolvedDep.version}\" and doesn't satisfies \"${version}\".`,\n shouldOnlyWarn,\n );\n } else {\n pkgDependencies[dependencyName] = resolvedDep.version;\n }\n } else {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact \"${version.slice(\n version[1] === '=' ? 2 : 1,\n )}\".`,\n shouldOnlyWarn,\n );\n }\n }\n }\n }\n\n reportNotWarnedFor(reportError, onlyWarnsForCheck);\n}\n","import { createReportError } from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n deps: Record> | string[]>,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Identical Versions',\n pkgPathName,\n );\n\n getKeys(deps).forEach((depKey) => {\n const version = pkgDependencies[depKey];\n if (!version) {\n reportError(`Unexpected missing ${type} for \"${depKey}\".`);\n return;\n }\n\n const depConfigArrayOrObject = deps[depKey];\n const depConfig = Array.isArray(depConfigArrayOrObject)\n ? { [type]: depConfigArrayOrObject }\n : depConfigArrayOrObject;\n\n getKeys(depConfig).forEach((depKeyType) => {\n const pkgDependenciesType = pkg[depKeyType] || {};\n depConfig[depKeyType]?.forEach((depKeyIdentical) => {\n const value = pkgDependenciesType[depKeyIdentical];\n if (!value) {\n reportError(\n `Missing \"${depKeyIdentical}\" in ${depKeyType}`,\n `it should be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKeyIdentical}\" in ${depKeyType}`,\n `expecting \"${value}\" be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n });\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersionsThanDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n `Same Versions than ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const version = dependencies[depKey];\n if (!version) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n if (version.startsWith('^') || version.startsWith('~')) {\n reportError(\n `Unexpected range dependency in \"${depPkg.name}\" for \"${depKey}\"`,\n 'perhaps use checkSatisfiesVersionsFromDependency() instead.',\n );\n return;\n }\n\n const value = pkgDependencies[depKey];\n\n if (!value) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `expecting to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `expecting \"${value}\" to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n}\n","import semver from 'semver';\nimport semverUtils from 'semver-utils';\nimport type { PackageJson } from 'type-fest';\nimport { createReportError } from '../utils/createReportError';\nimport { getEntries } from '../utils/object';\nimport type { DependencyTypes } from '../utils/packageTypes';\n\nexport interface CheckMinRangeSatisfiesOptions {\n customCreateReportError?: typeof createReportError;\n tryToAutoFix?: boolean;\n}\n\nexport function checkMinRangeSatisfies(\n pkgPathName: string,\n pkg: PackageJson,\n type1: DependencyTypes = 'dependencies',\n type2: DependencyTypes = 'devDependencies',\n {\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckMinRangeSatisfiesOptions = {},\n): void {\n const dependencies1 = pkg[type1];\n const dependencies2 = pkg[type2];\n\n if (!dependencies1 || !dependencies2) {\n return;\n }\n\n const reportError = customCreateReportError(\n `\"${type1}\" minimum range satisfies \"${type2}\"`,\n pkgPathName,\n );\n\n for (const [depName, depRange1] of getEntries(dependencies1)) {\n if (depRange1 === '*') continue;\n\n const depRange2 = dependencies2[depName];\n if (!depRange2 || !depRange1) continue;\n\n const minDepRange1 = semver.minVersion(depRange1)?.version || depRange1;\n\n if (\n !semver.satisfies(minDepRange1, depRange2, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n const depRange1Parsed = semverUtils.parseRange(depRange1);\n dependencies1[depName] =\n (depRange1Parsed[0]?.operator || '') +\n (semver.minVersion(depRange2)?.version || depRange2);\n } else {\n reportError(\n `Invalid \"${depName}\" in ${type1}`,\n `\"${depRange1}\" should satisfies \"${depRange2}\" from \"${type2}\".`,\n );\n }\n }\n }\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\n\nexport function checkNoDependencies(\n pkg: PackageJson,\n pkgPath: string,\n type: DependencyTypes = 'dependencies',\n moveToSuggestion: DependencyTypes = 'devDependencies',\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n const reportError = customCreateReportError('No dependencies', pkgPath);\n reportError(\n `Unexpected ${type}`,\n `you should move them in ${moveToSuggestion}`,\n );\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport type CheckResolutionMessage = (\n depKey: string,\n resolutionExplainedMessage: string,\n checkMessageHelpers: {\n getDependencyPackageJson: GetDependencyPackageJson;\n },\n) => string | undefined;\n\nexport function checkResolutionsHasExplanation(\n pkg: PackageJson,\n pkgPathName: string,\n checkMessage: CheckResolutionMessage,\n getDependencyPackageJson: GetDependencyPackageJson,\n customCreateReportError = createReportError,\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n const reportError = customCreateReportError(\n 'Resolutions has explanation',\n pkgPathName,\n );\n\n Object.keys(pkgResolutions).forEach((depKey) => {\n if (!pkgResolutionsExplained[depKey]) {\n reportError(`Missing \"${depKey}\" in resolutionsExplained.`);\n }\n });\n\n Object.keys(pkgResolutionsExplained).forEach((depKey) => {\n if (!pkgResolutions[depKey]) {\n reportError(\n `Found \"${depKey}\" in resolutionsExplained but not in resolutions.`,\n );\n } else {\n const error = checkMessage(depKey, pkgResolutionsExplained[depKey], {\n getDependencyPackageJson,\n });\n if (error) {\n reportError(\n `Invalid message for \"${depKey}\" in resolutionsExplained`,\n `${error}.`,\n );\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport interface CheckResolutionsVersionsMatchOptions {\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkResolutionsVersionsMatch(\n pkg: PackageJson,\n pkgPathName: string,\n {\n tryToAutoFix,\n customCreateReportError = createReportError,\n }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const reportError = customCreateReportError(\n 'Resolutions match other dependencies',\n pkgPathName,\n );\n\n Object.entries(pkgResolutions).forEach(([depName, resolutionDepVersion]) => {\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, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n pkg[depType]![depName] = resolutionDepVersion;\n } else {\n reportError(\n `Invalid \"${depName}\" in ${depType}`,\n `expecting \"${range}\" be \"${resolutionDepVersion}\" from resolutions.`,\n );\n }\n }\n });\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckSatisfiesVersionsOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n dependenciesRanges: Record,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsOptions = {},\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Satisfies Versions',\n pkgPathName,\n );\n\n Object.entries(dependenciesRanges).forEach(([depKey, range]) => {\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `\"${version}\" (in \"${depKey}\") should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\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 parsed.operator = operator === '' ? undefined : operator;\n return stringify(parsed);\n}\n\nexport function isExactParsedRange(\n parsedRange: ReturnType,\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","import semver from 'semver';\nimport type { ShouldHaveExactVersions } from '../check-package';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport { changeOperator, getOperator } from '../utils/semverUtils';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckSatisfiesVersionsFromDependencyOptions {\n tryToAutoFix?: boolean;\n shouldHaveExactVersions: ShouldHaveExactVersions;\n onlyWarnsForCheck?: OnlyWarnsForCheck;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersionsFromDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n depType: DependencyTypes,\n {\n tryToAutoFix,\n shouldHaveExactVersions,\n onlyWarnsForCheck,\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsFromDependencyOptions,\n): void {\n const pkgDependencies = pkg[type] || {};\n const dependencies = depPkg[depType] || {};\n\n const reportError = customCreateReportError(\n `Satisfies Versions from \"${depPkg.name}\"`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const range = dependencies[depKey];\n\n if (!range) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\"`,\n `config expects \"${depKey}\" in \"${depType}\" of \"${depPkg.name}\".`,\n undefined,\n );\n return;\n }\n\n const version = pkgDependencies[depKey];\n\n const autoFixIfPossible = (): boolean => {\n if (!tryToAutoFix) return false;\n const existingOperator = version ? getOperator(version) : null;\n const expectedOperator =\n existingOperator === null\n ? shouldHaveExactVersions(type)\n ? ''\n : null\n : existingOperator;\n const versionToApply =\n expectedOperator === ''\n ? semver.minVersion(range)?.version\n : changeOperator(range, expectedOperator);\n\n if (!versionToApply) {\n return false;\n }\n\n pkg[type] = {\n ...pkg[type],\n [depKey]: versionToApply,\n };\n return true;\n };\n\n if (!version) {\n if (!autoFixIfPossible()) {\n reportError(\n `Missing \"${depKey}\" in \"${type}\" of \"${pkg.name}\"`,\n `should satisfies \"${range}\" from \"${depPkg.name}\" in \"${depType}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n if (!autoFixIfPossible()) {\n reportError(\n `Invalid \"${depKey}\" in \"${type}\" of \"${pkg.name}\"`,\n `\"${version}\" should satisfies \"${range}\" from \"${depPkg.name}\"'s \"${depType}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport { getEntries } from '../utils/object';\nimport type { DependenciesRanges, PackageJson } from '../utils/packageTypes';\n\ninterface CheckSatisfiesVersionsInDependencyOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersionsInDependency(\n pkgPathName: string,\n depPkg: PackageJson,\n dependenciesRanges: DependenciesRanges,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsInDependencyOptions = {},\n): void {\n const reportError = customCreateReportError(\n `Satisfies Versions In Dependency \"${depPkg.name}\"`,\n pkgPathName,\n );\n\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 `Invalid \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n 'it should not be present',\n );\n }\n } else if (!dependencies) {\n reportError(\n `Missing \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependenciesType}\" is missing in \"${depPkg.name}\"`,\n );\n } else if (!dependencies[dependencyName]) {\n reportError(\n `Missing \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependencyName}\" is missing in ${dependenciesType}`,\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 `Invalid \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependencies[dependencyName]}\" does not satisfies \"${dependencyRange}\"`,\n );\n }\n }\n }\n}\n","import { readFileSync, writeFileSync } from 'fs';\nimport { resolve as importResolve } from 'import-meta-resolve';\nimport type { PackageJson } from './packageTypes';\n\nexport function readPkgJson(packagePath: string): PackageJson {\n return JSON.parse(readFileSync(packagePath, 'utf8')) as PackageJson;\n}\n\nexport function writePkgJson(packagePath: string, pkg: PackageJson): void {\n writeFileSync(packagePath, JSON.stringify(pkg, null, 2));\n}\n\n/** @internal */\nexport function internalLoadPackageJsonFromNodeModules(\n pkgDepName: string,\n pkgDirname: string,\n): PackageJson {\n const packageUrl = importResolve(\n `${pkgDepName}/package.json`,\n `file://${pkgDirname}/package.json`,\n );\n return readPkgJson(\n packageUrl.replace(\n process.platform === 'win32' ? /^file:\\/{3}/ : /^file:\\/\\//,\n '',\n ),\n );\n}\n","import type { PackageJson } from './packageTypes';\nimport {\n internalLoadPackageJsonFromNodeModules,\n readPkgJson,\n} from './pkgJsonUtils';\n\nexport type GetDependencyPackageJson = (pkgDepName: string) => PackageJson;\n\ntype NodeModulesPackagePathCache = Map;\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(),\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 if (pkgDepName.startsWith('.')) {\n const packagePath = `${pkgDirname}/${pkgDepName}/package.json`;\n pkg = internalReadPkgJson(packagePath);\n } else {\n try {\n pkg = internalCustomLoadPackageJsonFromNodeModules(\n pkgDepName,\n pkgDirname,\n );\n } catch (err: unknown) {\n if (!(err instanceof Error)) throw err;\n\n if (\n (err as NodeJS.ErrnoException).code !==\n 'ERR_PACKAGE_PATH_NOT_EXPORTED'\n ) {\n throw err;\n }\n\n const match = / in (.*[/\\\\]package\\.json)\\s+imported from/.exec(\n err.message,\n );\n\n if (match) {\n const [, matchPackageJson] = match;\n pkg = internalReadPkgJson(matchPackageJson);\n } else {\n throw err;\n }\n }\n }\n nodeModulesPackagePathCache.set(pkgDepName, pkg);\n return pkg;\n };\n}\n","import { getEntries } from './object';\n\nexport type OnlyWarnsFor = string[];\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type OnlyWarnsForDependencyMapping = Record;\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;\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 => {\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","/* eslint-disable max-lines */\nimport path from 'path';\nimport util from 'util';\nimport { checkDirectDuplicateDependencies } from './checks/checkDirectDuplicateDependencies';\nimport { checkDirectPeerDependencies } from './checks/checkDirectPeerDependencies';\nimport { checkExactVersions } from './checks/checkExactVersions';\nimport { checkIdenticalVersions } from './checks/checkIdenticalVersions';\nimport { checkIdenticalVersionsThanDependency } from './checks/checkIdenticalVersionsThanDependency';\nimport { checkMinRangeSatisfies } from './checks/checkMinRangeSatisfies';\nimport { checkNoDependencies } from './checks/checkNoDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsHasExplanation } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsVersionsMatch } from './checks/checkResolutionsVersionsMatch';\nimport { checkSatisfiesVersions } from './checks/checkSatisfiesVersions';\nimport { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency';\nimport { checkSatisfiesVersionsInDependency } from './checks/checkSatisfiesVersionsInDependency';\nimport type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { createGetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { displayConclusion } from './utils/createReportError';\nimport { getEntries } from './utils/object';\nimport type {\n DependenciesRanges,\n DependencyName,\n DependencyTypes,\n PackageJson,\n} from './utils/packageTypes';\nimport { readPkgJson, writePkgJson } from './utils/pkgJsonUtils';\nimport type {\n OnlyWarnsForOptionalDependencyMapping,\n OnlyWarnsFor,\n OnlyWarnsForDependencyMapping,\n} from './utils/warnForUtils';\nimport {\n createOnlyWarnsForArrayCheck,\n createOnlyWarnsForMappingCheck,\n} from './utils/warnForUtils';\n\nexport interface CreateCheckPackageOptions {\n packageDirectoryPath?: string;\n isLibrary?: boolean | ((pkg: PackageJson) => boolean);\n /** @internal */\n internalWorkspacePkgDirectoryPath?: string;\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 skipDisplayConclusion?: boolean;\n}\n\nexport interface CheckPackageApi {\n run: (options?: CheckPackageApiRunOptions) => Promise;\n\n /** @internal */\n pkg: PackageJson;\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>\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-typescript', {\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;\n dependencies?: Record;\n devDependencies?: Record;\n }) => CheckPackageApi;\n\n checkSatisfiesVersionsBetweenDependencies: (\n depName1: string,\n depName2: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\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}: CreateCheckPackageOptions = {}): CheckPackageApi {\n const pkgDirname = path.resolve(packageDirectoryPath);\n const pkgPath = `${pkgDirname}/package.json`;\n const pkgPathName = `${packageDirectoryPath}/package.json`;\n const pkg = readPkgJson(pkgPath);\n const copyPkg: PackageJson = JSON.parse(JSON.stringify(pkg)) as PackageJson;\n const isPkgLibrary =\n typeof isLibrary === 'function' ? isLibrary(pkg) : 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(pkg, copyPkg)) return;\n writePkgJson(pkgPath, pkg);\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;\n\n constructor(name: string, fn: () => Promise) {\n this.name = name;\n this.fn = fn;\n }\n\n async run(): Promise {\n try {\n await this.fn();\n } catch (err) {\n throw new Error(`${this.name} failed: ${(err as Error).message}`);\n }\n }\n }\n\n const jobs: Job[] = [];\n\n return {\n async run({\n skipDisplayConclusion = false,\n }: CheckPackageApiRunOptions = {}) {\n runCalled = true;\n // TODO parallel\n for (const job of jobs) {\n await job.run();\n }\n writePackageIfChanged();\n if (!skipDisplayConclusion) {\n displayConclusion();\n }\n },\n\n pkg,\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, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(\n pkg,\n pkgPathName,\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 checkResolutionsVersionsMatch(pkg, pkgPathName, {\n tryToAutoFix,\n });\n return this;\n },\n\n checkExactDevVersions({ onlyWarnsFor } = {}) {\n jobs.push(\n new Job(this.checkExactDevVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactDevVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(pkg, pkgPathName, ['devDependencies'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n }),\n );\n return this;\n },\n\n checkNoDependencies(\n type = 'dependencies',\n moveToSuggestion = 'devDependencies',\n ) {\n checkNoDependencies(pkg, pkgPathName, 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, async () => {\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 await checkDirectPeerDependencies(\n isPkgLibrary,\n pkg,\n pkgPathName,\n getDependencyPackageJson,\n missingOnlyWarnsForCheck,\n 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, async () => {\n await checkDirectDuplicateDependencies(\n pkg,\n pkgPathName,\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 checkResolutionsHasExplanation(\n pkg,\n pkgPathName,\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, async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\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, async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkSatisfiesVersions(dependencies) {\n Object.entries(dependencies).forEach(\n ([dependencyType, dependenciesRanges]) => {\n checkSatisfiesVersions(\n pkg,\n pkgPathName,\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, async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\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 async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n 'devDependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n 'devDependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\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 if (resolutions) {\n checkIdenticalVersions(pkg, pkgPathName, 'resolutions', resolutions);\n }\n if (dependencies) {\n checkIdenticalVersions(pkg, pkgPathName, 'dependencies', dependencies);\n }\n if (devDependencies) {\n checkIdenticalVersions(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n );\n }\n return this;\n },\n\n checkSatisfiesVersionsBetweenDependencies(\n depName1,\n depName2,\n { dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(\n this.checkSatisfiesVersionsBetweenDependencies.name,\n async () => {\n const [depPkg1, depPkg2] = await Promise.all([\n getDependencyPackageJson(depName1),\n getDependencyPackageJson(depName2),\n ]);\n\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg1,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg1,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n },\n ),\n );\n return this;\n },\n\n checkSatisfiesVersionsInDependency(depName, dependenciesRanges) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n const depPkg = getDependencyPackageJson(depName);\n checkSatisfiesVersionsInDependency(\n pkgPathName,\n depPkg,\n dependenciesRanges,\n );\n }),\n );\n return this;\n },\n\n checkMinRangeDependenciesSatisfiesDevDependencies() {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n checkMinRangeSatisfies(\n pkgPathName,\n pkg,\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, async () => {\n checkMinRangeSatisfies(\n pkgPathName,\n pkg,\n 'peerDependencies',\n 'dependencies',\n { tryToAutoFix },\n );\n }),\n );\n return this;\n },\n };\n}\n","/* eslint-disable max-lines */\nimport fs from 'fs';\nimport path from 'path';\nimport { globSync } from 'glob';\nimport type { Except } from 'type-fest';\nimport type {\n CreateCheckPackageOptions,\n CheckPackageApi,\n OnlyWarnsForInDependenciesCheckPackageRecommendedOption,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption,\n OnlyWarnsForInPackageCheckPackageRecommendedOption,\n} from './check-package';\nimport { createCheckPackage } from './check-package';\nimport { checkDuplicateDependencies } from './checks/checkDuplicateDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport {\n createReportError,\n displayConclusion,\n reportNotWarnedForMapping,\n} from './utils/createReportError';\nimport type { PackageJson } from './utils/packageTypes';\nimport type { OnlyWarnsForOptionalDependencyMapping } from './utils/warnForUtils';\nimport { createOnlyWarnsForMappingCheck } from './utils/warnForUtils';\n\ninterface OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n 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;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n allowRangeVersionsInLibraries?: boolean;\n monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\n run: () => Promise;\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\n extends Except {\n isLibrary?: (pkg: PackageJson) => boolean;\n}\n\nexport function createCheckPackageWithWorkspaces(\n createCheckPackageOptions: CreateCheckPackageWithWorkspacesOptions = {},\n): CheckPackageWithWorkspacesApi {\n const checkPackage = createCheckPackage({\n ...createCheckPackageOptions,\n isLibrary: false,\n });\n const { pkg, pkgDirname } = checkPackage;\n\n const pkgWorkspaces: string[] | undefined =\n pkg.workspaces && !Array.isArray(pkg.workspaces)\n ? pkg.workspaces.packages\n : pkg.workspaces;\n\n if (!pkgWorkspaces) {\n throw new Error('Package is missing \"workspaces\"');\n }\n\n const workspacePackagesPaths: string[] = [];\n\n if (pkgWorkspaces) {\n pkgWorkspaces.forEach((pattern) => {\n const match = globSync(pattern, { cwd: pkgDirname });\n match.forEach((pathMatch) => {\n if (!fs.existsSync(path.join(pathMatch, 'package.json'))) {\n console.log(\n `Ignored potential directory, no package.json found: ${pathMatch}`,\n );\n return;\n }\n const subPkgDirectoryPath = path.relative(process.cwd(), pathMatch);\n workspacePackagesPaths.push(subPkgDirectoryPath);\n });\n });\n }\n\n const checksWorkspaces = new Map(\n workspacePackagesPaths.map((subPkgDirectoryPath) => {\n const checkPkg = createCheckPackage({\n ...createCheckPackageOptions,\n packageDirectoryPath: subPkgDirectoryPath,\n internalWorkspacePkgDirectoryPath:\n createCheckPackageOptions.packageDirectoryPath || '.',\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({ skipDisplayConclusion: true });\n }\n\n displayConclusion();\n },\n\n checkRecommended({\n allowRangeVersionsInLibraries = true,\n onlyWarnsForInRootPackage,\n onlyWarnsForInMonorepoPackages,\n onlyWarnsForInRootDependencies,\n onlyWarnsForInMonorepoPackagesDependencies = {},\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\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 previousCheckedWorkspaces = new Map();\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 // Root\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\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.pkg,\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.pkg,\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.pkg,\n checkSubPackage.isPkgLibrary,\n 'peerDependencies',\n ['peerDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\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":["getKeys","o","Object","keys","getEntries","entries","titleDisplayed","pkgPathDisplayed","totalWarnings","totalErrors","displayConclusion","console","log","chalk","green","yellow","red","logMessage","msgTitle","msgInfo","onlyWarns","error","createReportError","title","pkgPathName","reportError","cyan","process","exitCode","reportNotWarnedFor","onlyWarnsForCheck","notWarnedFor","getNotWarnedFor","length","configName","map","depName","join","reportNotWarnedForMapping","onlyWarnsForMappingCheck","notWarnedForMapping","forEach","depNameOrStar","checkDuplicateDependencies","pkg","isPkgLibrary","depType","searchIn","depPkg","dependencies","searchInExisting","filter","type","depKey","range","versionsIn","allowDuplicated","includes","depVersion","devDepVersion","devDependencies","versions","version","index","startsWith","semver","satisfies","includePrerelease","intersects","resolutions","versionInType","name","shouldWarnsFor","checkDirectDuplicateDependencies","isPackageALibrary","getDependencyPackageJson","reportErrorNamePrefix","customCreateReportError","createFor","checkPeerDependencies","allowedPeerIn","providedDependencies","missingOnlyWarnsForCheck","invalidOnlyWarnsForCheck","peerDependencies","peerDependenciesMeta","allowedPeerInExisting","allowedPeerInType","peerDepName","allowedPeerInExistingType","peerDependenciesMetaPeerDep","optional","additionalDetails","providedDependenciesForDepName","every","depRange","versionsInType","minVersionOfVersion","minVersion","regularDependencyTypes","getAllowedPeerInFromType","depPkgType","isLibrary","checkDirectPeerDependencies","allDepPkgs","allDirectDependenciesDependencies","Promise","all","push","isVersionRange","checkExactVersions","types","internalExactVersionsIgnore","tryToAutoFix","pkgDependencies","dependencyName","versionConst","match","exec","Error","realVersion","shouldOnlyWarn","resolvedDep","slice","checkIdenticalVersions","deps","depConfigArrayOrObject","depConfig","Array","isArray","depKeyType","pkgDependenciesType","depKeyIdentical","value","checkIdenticalVersionsThanDependency","depKeys","checkMinRangeSatisfies","type1","type2","dependencies1","dependencies2","depRange1","depRange2","minDepRange1","depRange1Parsed","semverUtils","parseRange","operator","checkNoDependencies","pkgPath","moveToSuggestion","checkResolutionsHasExplanation","checkMessage","pkgResolutions","pkgResolutionsExplained","resolutionsExplained","checkResolutionsVersionsMatch","resolutionDepVersion","checkSatisfiesVersions","dependenciesRanges","parse","stringify","str","major","minor","patch","release","build","getOperator","parsedRange","changeOperator","parsed","undefined","checkSatisfiesVersionsFromDependency","shouldHaveExactVersions","autoFixIfPossible","existingOperator","expectedOperator","versionToApply","checkSatisfiesVersionsInDependency","dependenciesType","dependenciesTypeRanges","dependencyRange","readPkgJson","packagePath","JSON","readFileSync","writePkgJson","writeFileSync","internalLoadPackageJsonFromNodeModules","pkgDepName","pkgDirname","packageUrl","importResolve","replace","platform","createGetDependencyPackageJson","nodeModulesPackagePathCache","Map","internalCustomLoadPackageJsonFromNodeModules","internalReadPkgJson","existing","get","err","code","message","matchPackageJson","set","createOnlyWarnsForArrayCheck","onlyWarnsFor","Set","delete","isMapping","createOnlyWarnsForMappingCheck","fromEntries","entryKey","entryValue","key","size","dependencyNameLevel1","arrayOnlyWarnsForCheck","createCheckPackage","packageDirectoryPath","internalWorkspacePkgDirectoryPath","path","resolve","copyPkg","argv","writePackageIfChanged","util","isDeepStrictEqual","runCalled","on","Job","constructor","fn","run","jobs","skipDisplayConclusion","job","allowRangeVersionsInDependencies","checkExactDevVersions","missingOnlyWarnsFor","invalidOnlyWarnsFor","internalMissingConfigName","internalInvalidConfigName","internalConfigName","checkRecommended","onlyWarnsForInPackage","onlyWarnsForInDependencies","checkResolutionMessage","internalMissingPeerDependenciesOnlyWarnsFor","internalInvalidPeerDependenciesOnlyWarnsFor","internalDirectDuplicateDependenciesOnlyWarnsFor","exactVersionsOnlyWarnsFor","exactVersions","dependencyNameOrSpecialKey","onlyWarnsForValue","duplicateDirectDependency","missingPeerDependency","invalidPeerDependencyVersion","checkMinRangeDependenciesSatisfiesDevDependencies","checkMinRangePeerDependenciesSatisfiesDependencies","checkIdenticalVersionsThanDevDependencyOfDependency","dependencyType","checkSatisfiesVersionsInDevDependenciesOfDependency","checkSatisfiesVersionsBetweenDependencies","depName1","depName2","depPkg1","depPkg2","createCheckPackageWithWorkspaces","createCheckPackageOptions","checkPackage","pkgWorkspaces","workspaces","packages","workspacePackagesPaths","pattern","globSync","cwd","pathMatch","fs","existsSync","subPkgDirectoryPath","relative","checksWorkspaces","checkPkg","checksWorkspace","values","allowRangeVersionsInLibraries","onlyWarnsForInRootPackage","onlyWarnsForInMonorepoPackages","onlyWarnsForInRootDependencies","onlyWarnsForInMonorepoPackagesDependencies","monorepoDirectDuplicateDependenciesOnlyWarnsFor","monorepoDirectDuplicateDependenciesOnlyWarnsForCheck","previousCheckedWorkspaces","checkSubPackage","id","reportMonorepoDDDError","previousCheckSubPackage","forRoot","callback","for","packageCheck"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index-node16.mjs","sources":["../src/utils/object.ts","../src/utils/createReportError.ts","../src/checks/checkDuplicateDependencies.ts","../src/checks/checkDirectDuplicateDependencies.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/utils/semverUtils.ts","../src/checks/checkSatisfiesVersionsFromDependency.ts","../src/checks/checkSatisfiesVersionsInDependency.ts","../src/utils/pkgJsonUtils.ts","../src/utils/createGetDependencyPackageJson.ts","../src/utils/warnForUtils.ts","../src/check-package.ts","../src/check-package-with-workspaces.ts"],"sourcesContent":["export const getKeys = (o: T): (keyof T)[] =>\n Object.keys(o) as (keyof T)[];\n\nexport const getEntries = (o: T): [keyof T, T[keyof T]][] =>\n Object.entries(o) as unknown as [keyof T, T[keyof T]][];\n","/* eslint-disable no-console */\n\nimport chalk from 'chalk';\nimport { getEntries } from './object';\nimport type {\n OnlyWarnsForCheck,\n OnlyWarnsForMappingCheck,\n} from './warnForUtils';\n\nexport type ReportError = (\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n) => void;\n\nlet titleDisplayed: string | null = null;\nlet pkgPathDisplayed: string | null = null;\n\nlet totalWarnings = 0;\nlet totalErrors = 0;\n\nexport function displayConclusion(): void {\n if (!totalWarnings && !totalErrors) {\n console.log(`\\n${chalk.green('✅ No errors or warnings found')}.`);\n } else if (!totalErrors) {\n console.log(`\\nFound ${chalk.yellow(`${totalWarnings} warnings`)}.`);\n } else if (!totalWarnings) {\n console.log(`\\nFound ${chalk.red(`${totalErrors} errors`)}.`);\n } else {\n console.log(\n `\\nFound ${chalk.red(`${totalErrors} errors`)} and ${chalk.yellow(\n `${totalWarnings} warnings`,\n )}.`,\n );\n }\n}\n\nexport function logMessage(\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n): void {\n if (onlyWarns) totalWarnings++;\n else totalErrors++;\n console.error(\n `${\n onlyWarns ? chalk.yellow(`⚠ ${msgTitle}`) : chalk.red(`❌ ${msgTitle}`)\n }${msgInfo ? `: ${msgInfo}` : ''}`,\n );\n}\n\nexport function createReportError(\n title: string,\n pkgPathName: string,\n): ReportError {\n return function reportError(msgTitle, msgInfo, onlyWarns): void {\n if (titleDisplayed !== title || pkgPathName !== pkgPathDisplayed) {\n if (titleDisplayed) console.error();\n console.error(chalk.cyan(`== ${title} in ${pkgPathName} ==`));\n titleDisplayed = title;\n pkgPathDisplayed = pkgPathName;\n }\n logMessage(msgTitle, msgInfo, onlyWarns);\n\n if (!onlyWarns) {\n // console.trace();\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 `Invalid config in \"${onlyWarnsForCheck.configName}\"`,\n `no warning was raised for ${notWarnedFor\n .map((depName) => `\"${depName}\"`)\n .join(', ')}`,\n false,\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 `Invalid config in \"${onlyWarnsForMappingCheck.configName}\" for \"${depNameOrStar}\"`,\n `no warning was raised for ${notWarnedFor\n .map((depName) => `\"${depName}\"`)\n .join(', ')}`,\n );\n });\n}\n","import semver from 'semver';\nimport type { ReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkDuplicateDependencies(\n reportError: ReportError,\n pkg: PackageJson,\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, range] 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 && depVersion === devDepVersion) {\n reportError(\n `Invalid \"${depKey}\" has same version in dependencies and devDependencies`,\n 'please place it only in dependencies or use range in dependencies',\n );\n continue;\n }\n allowDuplicated = true;\n }\n\n if (\n versionsIn.length > 2 ||\n (versionsIn.length === 2 && !allowDuplicated)\n ) {\n reportError(\n `Invalid \"${depKey}\" present in ${versionsIn.join(' and ')}`,\n '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.startsWith('file:') || range.startsWith('file:')) return;\n // https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n if (\n version.startsWith('workspace:') ||\n range.startsWith('workspace:')\n ) {\n return;\n }\n\n if (\n semver.satisfies(version, range, {\n includePrerelease: true,\n }) ||\n semver.intersects(version, range, {\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 reportError(\n `Invalid duplicate dependency \"${depKey}\"`,\n `\"${versions[0]}\" (in ${versionInType}) should satisfies \"${range}\" from \"${depPkg.name}\" ${depType}.`,\n onlyWarnsForCheck.shouldWarnsFor(depKey),\n );\n });\n }\n }\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n reportNotWarnedForMapping,\n createReportError,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkDuplicateDependencies } from './checkDuplicateDependencies';\n\nexport async function checkDirectDuplicateDependencies(\n pkg: PackageJson,\n pkgPathName: string,\n isPackageALibrary: boolean,\n depType: DependencyTypes,\n getDependencyPackageJson: GetDependencyPackageJson,\n onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n reportErrorNamePrefix = '',\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError(\n `${reportErrorNamePrefix}Direct Duplicate Dependencies`,\n pkgPathName,\n );\n\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 semver from 'semver';\nimport type { ReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkPeerDependencies(\n pkg: PackageJson,\n reportError: ReportError,\n type: DependencyTypes,\n allowedPeerIn: DependencyTypes[],\n providedDependencies: [string, string][],\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 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, depRange),\n )\n ) {\n continue;\n }\n\n additionalDetails +=\n ' (required as some dependencies have non-satisfying range too)';\n }\n\n reportError(\n `Missing \"${peerDepName}\" peer dependency from \"${depPkg.name}\" in ${type}`,\n `it should satisfies \"${range}\" and be in ${allowedPeerIn.join(\n ' or ',\n )}${additionalDetails}`,\n missingOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n );\n } else {\n const versions = versionsIn.map(\n (versionsInType) => pkg[versionsInType]![peerDepName],\n );\n\n versions.forEach((version, index) => {\n if (version.startsWith('npm:')) {\n return;\n }\n\n if (version === '*') {\n return;\n }\n\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${peerDepName}\" peer dependency`,\n `\"${version}\" (in ${allowedPeerInExisting[index]}) should satisfies \"${range}\" from \"${depPkg.name}\" ${type}`,\n invalidOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n );\n }\n });\n }\n }\n}\n","import semver from 'semver';\nimport type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedForMapping,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type {\n DependencyTypes,\n PackageJson,\n RegularDependencyTypes,\n} from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkPeerDependencies } from './checkPeerDependencies';\n\nconst 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};\n\nexport async function checkDirectPeerDependencies(\n isLibrary: boolean,\n pkg: PackageJson,\n pkgPathName: string,\n getDependencyPackageJson: GetDependencyPackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError('Peer Dependencies', pkgPathName);\n\n const allDepPkgs: {\n name: string;\n type: RegularDependencyTypes;\n pkg: PackageJson;\n }[] = [];\n const allDirectDependenciesDependencies: [string, string][] = [];\n\n await Promise.all(\n regularDependencyTypes.map(async (depType) => {\n const dependencies = pkg[depType];\n if (!dependencies) return;\n for (const depName of getKeys(dependencies)) {\n if (pkg.peerDependencies?.[depName]) {\n if (\n semver.intersects(\n dependencies[depName],\n pkg.peerDependencies?.[depName],\n )\n ) {\n continue;\n }\n }\n\n const depPkg = getDependencyPackageJson(depName);\n allDepPkgs.push({ name: depName, type: depType, pkg: depPkg });\n\n if (depPkg.dependencies && !isLibrary) {\n allDirectDependenciesDependencies.push(\n ...Object.entries(depPkg.dependencies),\n );\n }\n }\n }),\n );\n\n for (const { name: depName, type: depType, pkg: depPkg } of allDepPkgs) {\n if (depPkg.peerDependencies) {\n checkPeerDependencies(\n pkg,\n reportError,\n depType,\n getAllowedPeerInFromType(depType, isLibrary),\n allDirectDependenciesDependencies,\n depPkg,\n missingOnlyWarnsForCheck.createFor(depName),\n invalidOnlyWarnsForCheck.createFor(depName),\n );\n }\n }\n\n reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck);\n if (missingOnlyWarnsForCheck !== invalidOnlyWarnsForCheck) {\n reportNotWarnedForMapping(reportError, invalidOnlyWarnsForCheck);\n }\n}\n","import semver from 'semver';\nimport type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedFor,\n} from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsFor, OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckExactVersionsOptions {\n getDependencyPackageJson?: GetDependencyPackageJson;\n onlyWarnsForCheck: OnlyWarnsForCheck;\n internalExactVersionsIgnore?: OnlyWarnsFor;\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nconst isVersionRange = (version: string): boolean =>\n version.startsWith('^') ||\n version.startsWith('~') ||\n version.startsWith('>') ||\n version.startsWith('<');\n\nexport async function checkExactVersions(\n pkg: PackageJson,\n pkgPathName: string,\n types: DependencyTypes[],\n {\n getDependencyPackageJson,\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckExactVersionsOptions,\n): Promise {\n const reportError = customCreateReportError('Exact versions', pkgPathName);\n\n for (const type of types) {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) continue;\n\n for (const [dependencyName, versionConst] of Object.entries(\n pkgDependencies,\n )) {\n let version = versionConst;\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 version = realVersion;\n }\n\n if (isVersionRange(version)) {\n if (internalExactVersionsIgnore?.includes(dependencyName)) {\n continue;\n }\n const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName);\n if (!shouldOnlyWarn && tryToAutoFix && getDependencyPackageJson) {\n let resolvedDep;\n try {\n resolvedDep = getDependencyPackageJson(dependencyName);\n } catch {\n resolvedDep = null;\n }\n if (!resolvedDep?.version) {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact, autofix failed to resolve \"${dependencyName}\".`,\n shouldOnlyWarn,\n );\n } else if (\n !semver.satisfies(resolvedDep.version, version, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact, autofix failed as \"${dependencyName}\"'s resolved version is \"${resolvedDep.version}\" and doesn't satisfies \"${version}\".`,\n shouldOnlyWarn,\n );\n } else {\n pkgDependencies[dependencyName] = resolvedDep.version;\n }\n } else {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact \"${version.slice(\n version[1] === '=' ? 2 : 1,\n )}\".`,\n shouldOnlyWarn,\n );\n }\n }\n }\n }\n\n reportNotWarnedFor(reportError, onlyWarnsForCheck);\n}\n","import { createReportError } from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n deps: Record> | string[]>,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Identical Versions',\n pkgPathName,\n );\n\n getKeys(deps).forEach((depKey) => {\n const version = pkgDependencies[depKey];\n if (!version) {\n reportError(`Unexpected missing ${type} for \"${depKey}\".`);\n return;\n }\n\n const depConfigArrayOrObject = deps[depKey];\n const depConfig = Array.isArray(depConfigArrayOrObject)\n ? { [type]: depConfigArrayOrObject }\n : depConfigArrayOrObject;\n\n getKeys(depConfig).forEach((depKeyType) => {\n const pkgDependenciesType = pkg[depKeyType] || {};\n depConfig[depKeyType]?.forEach((depKeyIdentical) => {\n const value = pkgDependenciesType[depKeyIdentical];\n if (!value) {\n reportError(\n `Missing \"${depKeyIdentical}\" in ${depKeyType}`,\n `it should be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKeyIdentical}\" in ${depKeyType}`,\n `expecting \"${value}\" be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n });\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersionsThanDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n `Same Versions than ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const version = dependencies[depKey];\n if (!version) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n if (version.startsWith('^') || version.startsWith('~')) {\n reportError(\n `Unexpected range dependency in \"${depPkg.name}\" for \"${depKey}\"`,\n 'perhaps use checkSatisfiesVersionsFromDependency() instead.',\n );\n return;\n }\n\n const value = pkgDependencies[depKey];\n\n if (!value) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `expecting to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `expecting \"${value}\" to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n}\n","import semver from 'semver';\nimport semverUtils from 'semver-utils';\nimport type { PackageJson } from 'type-fest';\nimport { createReportError } from '../utils/createReportError';\nimport { getEntries } from '../utils/object';\nimport type { DependencyTypes } from '../utils/packageTypes';\n\nexport interface CheckMinRangeSatisfiesOptions {\n customCreateReportError?: typeof createReportError;\n tryToAutoFix?: boolean;\n}\n\nexport function checkMinRangeSatisfies(\n pkgPathName: string,\n pkg: PackageJson,\n type1: DependencyTypes = 'dependencies',\n type2: DependencyTypes = 'devDependencies',\n {\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckMinRangeSatisfiesOptions = {},\n): void {\n const dependencies1 = pkg[type1];\n const dependencies2 = pkg[type2];\n\n if (!dependencies1 || !dependencies2) {\n return;\n }\n\n const reportError = customCreateReportError(\n `\"${type1}\" minimum range satisfies \"${type2}\"`,\n pkgPathName,\n );\n\n for (const [depName, depRange1] of getEntries(dependencies1)) {\n if (depRange1 === '*') continue;\n\n const depRange2 = dependencies2[depName];\n if (!depRange2 || !depRange1) continue;\n\n const minDepRange1 = semver.minVersion(depRange1)?.version || depRange1;\n\n if (\n !semver.satisfies(minDepRange1, depRange2, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n const depRange1Parsed = semverUtils.parseRange(depRange1);\n dependencies1[depName] =\n (depRange1Parsed[0]?.operator || '') +\n (semver.minVersion(depRange2)?.version || depRange2);\n } else {\n reportError(\n `Invalid \"${depName}\" in ${type1}`,\n `\"${depRange1}\" should satisfies \"${depRange2}\" from \"${type2}\".`,\n );\n }\n }\n }\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\n\nexport function checkNoDependencies(\n pkg: PackageJson,\n pkgPath: string,\n type: DependencyTypes = 'dependencies',\n moveToSuggestion: DependencyTypes = 'devDependencies',\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n const reportError = customCreateReportError('No dependencies', pkgPath);\n reportError(\n `Unexpected ${type}`,\n `you should move them in ${moveToSuggestion}`,\n );\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport type CheckResolutionMessage = (\n depKey: string,\n resolutionExplainedMessage: string,\n checkMessageHelpers: {\n getDependencyPackageJson: GetDependencyPackageJson;\n },\n) => string | undefined;\n\nexport function checkResolutionsHasExplanation(\n pkg: PackageJson,\n pkgPathName: string,\n checkMessage: CheckResolutionMessage,\n getDependencyPackageJson: GetDependencyPackageJson,\n customCreateReportError = createReportError,\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n const reportError = customCreateReportError(\n 'Resolutions has explanation',\n pkgPathName,\n );\n\n Object.keys(pkgResolutions).forEach((depKey) => {\n if (!pkgResolutionsExplained[depKey]) {\n reportError(`Missing \"${depKey}\" in resolutionsExplained.`);\n }\n });\n\n Object.keys(pkgResolutionsExplained).forEach((depKey) => {\n if (!pkgResolutions[depKey]) {\n reportError(\n `Found \"${depKey}\" in resolutionsExplained but not in resolutions.`,\n );\n } else {\n const error = checkMessage(depKey, pkgResolutionsExplained[depKey], {\n getDependencyPackageJson,\n });\n if (error) {\n reportError(\n `Invalid message for \"${depKey}\" in resolutionsExplained`,\n `${error}.`,\n );\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport interface CheckResolutionsVersionsMatchOptions {\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkResolutionsVersionsMatch(\n pkg: PackageJson,\n pkgPathName: string,\n {\n tryToAutoFix,\n customCreateReportError = createReportError,\n }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const reportError = customCreateReportError(\n 'Resolutions match other dependencies',\n pkgPathName,\n );\n\n Object.entries(pkgResolutions).forEach(([resolutionKey, resolutionValue]) => {\n let depName = resolutionKey;\n let resolutionDepVersion = resolutionValue;\n if (resolutionValue.startsWith('patch:')) {\n const matchResolutionInKey = /^(.+)@npm:(.+)$/.exec(resolutionKey);\n if (matchResolutionInKey) {\n [, depName, resolutionDepVersion] = matchResolutionInKey;\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, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n pkg[depType]![depName] = resolutionDepVersion;\n } else {\n reportError(\n `Invalid \"${depName}\" in ${depType}`,\n `expecting \"${range}\" be \"${resolutionDepVersion}\" from resolutions.`,\n );\n }\n }\n });\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckSatisfiesVersionsOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n dependenciesRanges: Record,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsOptions = {},\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Satisfies Versions',\n pkgPathName,\n );\n\n Object.entries(dependenciesRanges).forEach(([depKey, range]) => {\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `\"${version}\" (in \"${depKey}\") should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\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 parsed.operator = operator === '' ? undefined : operator;\n return stringify(parsed);\n}\n\nexport function isExactParsedRange(\n parsedRange: ReturnType,\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","import semver from 'semver';\nimport type { ShouldHaveExactVersions } from '../check-package';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport { changeOperator, getOperator } from '../utils/semverUtils';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckSatisfiesVersionsFromDependencyOptions {\n tryToAutoFix?: boolean;\n shouldHaveExactVersions: ShouldHaveExactVersions;\n onlyWarnsForCheck?: OnlyWarnsForCheck;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersionsFromDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n depType: DependencyTypes,\n {\n tryToAutoFix,\n shouldHaveExactVersions,\n onlyWarnsForCheck,\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsFromDependencyOptions,\n): void {\n const pkgDependencies = pkg[type] || {};\n const dependencies = depPkg[depType] || {};\n\n const reportError = customCreateReportError(\n `Satisfies Versions from \"${depPkg.name}\"`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const range = dependencies[depKey];\n\n if (!range) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\"`,\n `config expects \"${depKey}\" in \"${depType}\" of \"${depPkg.name}\".`,\n undefined,\n );\n return;\n }\n\n const version = pkgDependencies[depKey];\n\n const autoFixIfPossible = (): boolean => {\n if (!tryToAutoFix) return false;\n const existingOperator = version ? getOperator(version) : null;\n const expectedOperator =\n existingOperator === null\n ? shouldHaveExactVersions(type)\n ? ''\n : null\n : existingOperator;\n const versionToApply =\n expectedOperator === ''\n ? semver.minVersion(range)?.version\n : changeOperator(range, expectedOperator);\n\n if (!versionToApply) {\n return false;\n }\n\n pkg[type] = {\n ...pkg[type],\n [depKey]: versionToApply,\n };\n return true;\n };\n\n if (!version) {\n if (!autoFixIfPossible()) {\n reportError(\n `Missing \"${depKey}\" in \"${type}\" of \"${pkg.name}\"`,\n `should satisfies \"${range}\" from \"${depPkg.name}\" in \"${depType}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n if (!autoFixIfPossible()) {\n reportError(\n `Invalid \"${depKey}\" in \"${type}\" of \"${pkg.name}\"`,\n `\"${version}\" should satisfies \"${range}\" from \"${depPkg.name}\"'s \"${depType}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport { getEntries } from '../utils/object';\nimport type { DependenciesRanges, PackageJson } from '../utils/packageTypes';\n\ninterface CheckSatisfiesVersionsInDependencyOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersionsInDependency(\n pkgPathName: string,\n depPkg: PackageJson,\n dependenciesRanges: DependenciesRanges,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsInDependencyOptions = {},\n): void {\n const reportError = customCreateReportError(\n `Satisfies Versions In Dependency \"${depPkg.name}\"`,\n pkgPathName,\n );\n\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 `Invalid \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n 'it should not be present',\n );\n }\n } else if (!dependencies) {\n reportError(\n `Missing \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependenciesType}\" is missing in \"${depPkg.name}\"`,\n );\n } else if (!dependencies[dependencyName]) {\n reportError(\n `Missing \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependencyName}\" is missing in ${dependenciesType}`,\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 `Invalid \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependencies[dependencyName]}\" does not satisfies \"${dependencyRange}\"`,\n );\n }\n }\n }\n}\n","import { readFileSync, writeFileSync } from 'fs';\nimport { resolve as importResolve } from 'import-meta-resolve';\nimport type { PackageJson } from './packageTypes';\n\nexport function readPkgJson(packagePath: string): PackageJson {\n return JSON.parse(readFileSync(packagePath, 'utf8')) as PackageJson;\n}\n\nexport function writePkgJson(packagePath: string, pkg: PackageJson): void {\n writeFileSync(packagePath, JSON.stringify(pkg, null, 2));\n}\n\n/** @internal */\nexport function internalLoadPackageJsonFromNodeModules(\n pkgDepName: string,\n pkgDirname: string,\n): PackageJson {\n const packageUrl = importResolve(\n `${pkgDepName}/package.json`,\n `file://${pkgDirname}/package.json`,\n );\n return readPkgJson(\n packageUrl.replace(\n process.platform === 'win32' ? /^file:\\/{3}/ : /^file:\\/\\//,\n '',\n ),\n );\n}\n","import type { PackageJson } from './packageTypes';\nimport {\n internalLoadPackageJsonFromNodeModules,\n readPkgJson,\n} from './pkgJsonUtils';\n\nexport type GetDependencyPackageJson = (pkgDepName: string) => PackageJson;\n\ntype NodeModulesPackagePathCache = Map;\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(),\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 if (pkgDepName.startsWith('.')) {\n const packagePath = `${pkgDirname}/${pkgDepName}/package.json`;\n pkg = internalReadPkgJson(packagePath);\n } else {\n try {\n pkg = internalCustomLoadPackageJsonFromNodeModules(\n pkgDepName,\n pkgDirname,\n );\n } catch (err: unknown) {\n if (!(err instanceof Error)) throw err;\n\n if (\n (err as NodeJS.ErrnoException).code !==\n 'ERR_PACKAGE_PATH_NOT_EXPORTED'\n ) {\n throw err;\n }\n\n const match = / in (.*[/\\\\]package\\.json)\\s+imported from/.exec(\n err.message,\n );\n\n if (match) {\n const [, matchPackageJson] = match;\n pkg = internalReadPkgJson(matchPackageJson);\n } else {\n throw err;\n }\n }\n }\n nodeModulesPackagePathCache.set(pkgDepName, pkg);\n return pkg;\n };\n}\n","import { getEntries } from './object';\n\nexport type OnlyWarnsFor = string[];\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type OnlyWarnsForDependencyMapping = Record;\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;\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 => {\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","/* eslint-disable max-lines */\nimport path from 'path';\nimport util from 'util';\nimport { checkDirectDuplicateDependencies } from './checks/checkDirectDuplicateDependencies';\nimport { checkDirectPeerDependencies } from './checks/checkDirectPeerDependencies';\nimport { checkExactVersions } from './checks/checkExactVersions';\nimport { checkIdenticalVersions } from './checks/checkIdenticalVersions';\nimport { checkIdenticalVersionsThanDependency } from './checks/checkIdenticalVersionsThanDependency';\nimport { checkMinRangeSatisfies } from './checks/checkMinRangeSatisfies';\nimport { checkNoDependencies } from './checks/checkNoDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsHasExplanation } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsVersionsMatch } from './checks/checkResolutionsVersionsMatch';\nimport { checkSatisfiesVersions } from './checks/checkSatisfiesVersions';\nimport { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency';\nimport { checkSatisfiesVersionsInDependency } from './checks/checkSatisfiesVersionsInDependency';\nimport type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { createGetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { displayConclusion } from './utils/createReportError';\nimport { getEntries } from './utils/object';\nimport type {\n DependenciesRanges,\n DependencyName,\n DependencyTypes,\n PackageJson,\n} from './utils/packageTypes';\nimport { readPkgJson, writePkgJson } from './utils/pkgJsonUtils';\nimport type {\n OnlyWarnsForOptionalDependencyMapping,\n OnlyWarnsFor,\n OnlyWarnsForDependencyMapping,\n} from './utils/warnForUtils';\nimport {\n createOnlyWarnsForArrayCheck,\n createOnlyWarnsForMappingCheck,\n} from './utils/warnForUtils';\n\nexport interface CreateCheckPackageOptions {\n packageDirectoryPath?: string;\n isLibrary?: boolean | ((pkg: PackageJson) => boolean);\n /** @internal */\n internalWorkspacePkgDirectoryPath?: string;\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 skipDisplayConclusion?: boolean;\n}\n\nexport interface CheckPackageApi {\n run: (options?: CheckPackageApiRunOptions) => Promise;\n\n /** @internal */\n pkg: PackageJson;\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>\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-typescript', {\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;\n dependencies?: Record;\n devDependencies?: Record;\n }) => CheckPackageApi;\n\n checkSatisfiesVersionsBetweenDependencies: (\n depName1: string,\n depName2: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\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}: CreateCheckPackageOptions = {}): CheckPackageApi {\n const pkgDirname = path.resolve(packageDirectoryPath);\n const pkgPath = `${pkgDirname}/package.json`;\n const pkgPathName = `${packageDirectoryPath}/package.json`;\n const pkg = readPkgJson(pkgPath);\n const copyPkg: PackageJson = JSON.parse(JSON.stringify(pkg)) as PackageJson;\n const isPkgLibrary =\n typeof isLibrary === 'function' ? isLibrary(pkg) : 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(pkg, copyPkg)) return;\n writePkgJson(pkgPath, pkg);\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;\n\n constructor(name: string, fn: () => Promise) {\n this.name = name;\n this.fn = fn;\n }\n\n async run(): Promise {\n try {\n await this.fn();\n } catch (err) {\n throw new Error(`${this.name} failed: ${(err as Error).message}`);\n }\n }\n }\n\n const jobs: Job[] = [];\n\n return {\n async run({\n skipDisplayConclusion = false,\n }: CheckPackageApiRunOptions = {}) {\n runCalled = true;\n // TODO parallel\n for (const job of jobs) {\n await job.run();\n }\n writePackageIfChanged();\n if (!skipDisplayConclusion) {\n displayConclusion();\n }\n },\n\n pkg,\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, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(\n pkg,\n pkgPathName,\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 checkResolutionsVersionsMatch(pkg, pkgPathName, {\n tryToAutoFix,\n });\n return this;\n },\n\n checkExactDevVersions({ onlyWarnsFor } = {}) {\n jobs.push(\n new Job(this.checkExactDevVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactDevVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(pkg, pkgPathName, ['devDependencies'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n }),\n );\n return this;\n },\n\n checkNoDependencies(\n type = 'dependencies',\n moveToSuggestion = 'devDependencies',\n ) {\n checkNoDependencies(pkg, pkgPathName, 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, async () => {\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 await checkDirectPeerDependencies(\n isPkgLibrary,\n pkg,\n pkgPathName,\n getDependencyPackageJson,\n missingOnlyWarnsForCheck,\n 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, async () => {\n await checkDirectDuplicateDependencies(\n pkg,\n pkgPathName,\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 checkResolutionsHasExplanation(\n pkg,\n pkgPathName,\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, async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\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, async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkSatisfiesVersions(dependencies) {\n Object.entries(dependencies).forEach(\n ([dependencyType, dependenciesRanges]) => {\n checkSatisfiesVersions(\n pkg,\n pkgPathName,\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, async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\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 async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n 'devDependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n 'devDependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\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 if (resolutions) {\n checkIdenticalVersions(pkg, pkgPathName, 'resolutions', resolutions);\n }\n if (dependencies) {\n checkIdenticalVersions(pkg, pkgPathName, 'dependencies', dependencies);\n }\n if (devDependencies) {\n checkIdenticalVersions(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n );\n }\n return this;\n },\n\n checkSatisfiesVersionsBetweenDependencies(\n depName1,\n depName2,\n { dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(\n this.checkSatisfiesVersionsBetweenDependencies.name,\n async () => {\n const [depPkg1, depPkg2] = await Promise.all([\n getDependencyPackageJson(depName1),\n getDependencyPackageJson(depName2),\n ]);\n\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg1,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg1,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n },\n ),\n );\n return this;\n },\n\n checkSatisfiesVersionsInDependency(depName, dependenciesRanges) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n const depPkg = getDependencyPackageJson(depName);\n checkSatisfiesVersionsInDependency(\n pkgPathName,\n depPkg,\n dependenciesRanges,\n );\n }),\n );\n return this;\n },\n\n checkMinRangeDependenciesSatisfiesDevDependencies() {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n checkMinRangeSatisfies(\n pkgPathName,\n pkg,\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, async () => {\n checkMinRangeSatisfies(\n pkgPathName,\n pkg,\n 'peerDependencies',\n 'dependencies',\n { tryToAutoFix },\n );\n }),\n );\n return this;\n },\n };\n}\n","/* eslint-disable max-lines */\nimport fs from 'fs';\nimport path from 'path';\nimport { globSync } from 'glob';\nimport type { Except } from 'type-fest';\nimport type {\n CreateCheckPackageOptions,\n CheckPackageApi,\n OnlyWarnsForInDependenciesCheckPackageRecommendedOption,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption,\n OnlyWarnsForInPackageCheckPackageRecommendedOption,\n} from './check-package';\nimport { createCheckPackage } from './check-package';\nimport { checkDuplicateDependencies } from './checks/checkDuplicateDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport {\n createReportError,\n displayConclusion,\n reportNotWarnedForMapping,\n} from './utils/createReportError';\nimport type { PackageJson } from './utils/packageTypes';\nimport type { OnlyWarnsForOptionalDependencyMapping } from './utils/warnForUtils';\nimport { createOnlyWarnsForMappingCheck } from './utils/warnForUtils';\n\ninterface OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n 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;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n allowRangeVersionsInLibraries?: boolean;\n monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\n run: () => Promise;\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\n extends Except {\n isLibrary?: (pkg: PackageJson) => boolean;\n}\n\nexport function createCheckPackageWithWorkspaces(\n createCheckPackageOptions: CreateCheckPackageWithWorkspacesOptions = {},\n): CheckPackageWithWorkspacesApi {\n const checkPackage = createCheckPackage({\n ...createCheckPackageOptions,\n isLibrary: false,\n });\n const { pkg, pkgDirname } = checkPackage;\n\n const pkgWorkspaces: string[] | undefined =\n pkg.workspaces && !Array.isArray(pkg.workspaces)\n ? pkg.workspaces.packages\n : pkg.workspaces;\n\n if (!pkgWorkspaces) {\n throw new Error('Package is missing \"workspaces\"');\n }\n\n const workspacePackagesPaths: string[] = [];\n\n if (pkgWorkspaces) {\n pkgWorkspaces.forEach((pattern) => {\n const match = globSync(pattern, { cwd: pkgDirname });\n match.forEach((pathMatch) => {\n if (!fs.existsSync(path.join(pathMatch, 'package.json'))) {\n console.log(\n `Ignored potential directory, no package.json found: ${pathMatch}`,\n );\n return;\n }\n const subPkgDirectoryPath = path.relative(process.cwd(), pathMatch);\n workspacePackagesPaths.push(subPkgDirectoryPath);\n });\n });\n }\n\n const checksWorkspaces = new Map(\n workspacePackagesPaths.map((subPkgDirectoryPath) => {\n const checkPkg = createCheckPackage({\n ...createCheckPackageOptions,\n packageDirectoryPath: subPkgDirectoryPath,\n internalWorkspacePkgDirectoryPath:\n createCheckPackageOptions.packageDirectoryPath || '.',\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({ skipDisplayConclusion: true });\n }\n\n displayConclusion();\n },\n\n checkRecommended({\n allowRangeVersionsInLibraries = true,\n onlyWarnsForInRootPackage,\n onlyWarnsForInMonorepoPackages,\n onlyWarnsForInRootDependencies,\n onlyWarnsForInMonorepoPackagesDependencies = {},\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\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 previousCheckedWorkspaces = new Map();\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 // Root\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\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.pkg,\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.pkg,\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.pkg,\n checkSubPackage.isPkgLibrary,\n 'peerDependencies',\n ['peerDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\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":["getKeys","o","Object","keys","getEntries","entries","titleDisplayed","pkgPathDisplayed","totalWarnings","totalErrors","displayConclusion","console","log","chalk","green","yellow","red","logMessage","msgTitle","msgInfo","onlyWarns","error","createReportError","title","pkgPathName","reportError","cyan","process","exitCode","reportNotWarnedFor","onlyWarnsForCheck","notWarnedFor","getNotWarnedFor","length","configName","map","depName","join","reportNotWarnedForMapping","onlyWarnsForMappingCheck","notWarnedForMapping","forEach","depNameOrStar","checkDuplicateDependencies","pkg","isPkgLibrary","depType","searchIn","depPkg","dependencies","searchInExisting","filter","type","depKey","range","versionsIn","allowDuplicated","includes","depVersion","devDepVersion","devDependencies","versions","version","index","startsWith","semver","satisfies","includePrerelease","intersects","resolutions","versionInType","name","shouldWarnsFor","checkDirectDuplicateDependencies","isPackageALibrary","getDependencyPackageJson","reportErrorNamePrefix","customCreateReportError","createFor","checkPeerDependencies","allowedPeerIn","providedDependencies","missingOnlyWarnsForCheck","invalidOnlyWarnsForCheck","peerDependencies","peerDependenciesMeta","allowedPeerInExisting","allowedPeerInType","peerDepName","allowedPeerInExistingType","peerDependenciesMetaPeerDep","optional","additionalDetails","providedDependenciesForDepName","every","depRange","versionsInType","minVersionOfVersion","minVersion","regularDependencyTypes","getAllowedPeerInFromType","depPkgType","isLibrary","checkDirectPeerDependencies","allDepPkgs","allDirectDependenciesDependencies","Promise","all","push","isVersionRange","checkExactVersions","types","internalExactVersionsIgnore","tryToAutoFix","pkgDependencies","dependencyName","versionConst","match","exec","Error","realVersion","shouldOnlyWarn","resolvedDep","slice","checkIdenticalVersions","deps","depConfigArrayOrObject","depConfig","Array","isArray","depKeyType","pkgDependenciesType","depKeyIdentical","value","checkIdenticalVersionsThanDependency","depKeys","checkMinRangeSatisfies","type1","type2","dependencies1","dependencies2","depRange1","depRange2","minDepRange1","depRange1Parsed","semverUtils","parseRange","operator","checkNoDependencies","pkgPath","moveToSuggestion","checkResolutionsHasExplanation","checkMessage","pkgResolutions","pkgResolutionsExplained","resolutionsExplained","checkResolutionsVersionsMatch","resolutionKey","resolutionValue","resolutionDepVersion","matchResolutionInKey","checkSatisfiesVersions","dependenciesRanges","parse","stringify","str","major","minor","patch","release","build","getOperator","parsedRange","changeOperator","parsed","undefined","checkSatisfiesVersionsFromDependency","shouldHaveExactVersions","autoFixIfPossible","existingOperator","expectedOperator","versionToApply","checkSatisfiesVersionsInDependency","dependenciesType","dependenciesTypeRanges","dependencyRange","readPkgJson","packagePath","JSON","readFileSync","writePkgJson","writeFileSync","internalLoadPackageJsonFromNodeModules","pkgDepName","pkgDirname","packageUrl","importResolve","replace","platform","createGetDependencyPackageJson","nodeModulesPackagePathCache","Map","internalCustomLoadPackageJsonFromNodeModules","internalReadPkgJson","existing","get","err","code","message","matchPackageJson","set","createOnlyWarnsForArrayCheck","onlyWarnsFor","Set","delete","isMapping","createOnlyWarnsForMappingCheck","fromEntries","entryKey","entryValue","key","size","dependencyNameLevel1","arrayOnlyWarnsForCheck","createCheckPackage","packageDirectoryPath","internalWorkspacePkgDirectoryPath","path","resolve","copyPkg","argv","writePackageIfChanged","util","isDeepStrictEqual","runCalled","on","Job","constructor","fn","run","jobs","skipDisplayConclusion","job","allowRangeVersionsInDependencies","checkExactDevVersions","missingOnlyWarnsFor","invalidOnlyWarnsFor","internalMissingConfigName","internalInvalidConfigName","internalConfigName","checkRecommended","onlyWarnsForInPackage","onlyWarnsForInDependencies","checkResolutionMessage","internalMissingPeerDependenciesOnlyWarnsFor","internalInvalidPeerDependenciesOnlyWarnsFor","internalDirectDuplicateDependenciesOnlyWarnsFor","exactVersionsOnlyWarnsFor","exactVersions","dependencyNameOrSpecialKey","onlyWarnsForValue","duplicateDirectDependency","missingPeerDependency","invalidPeerDependencyVersion","checkMinRangeDependenciesSatisfiesDevDependencies","checkMinRangePeerDependenciesSatisfiesDependencies","checkIdenticalVersionsThanDevDependencyOfDependency","dependencyType","checkSatisfiesVersionsInDevDependenciesOfDependency","checkSatisfiesVersionsBetweenDependencies","depName1","depName2","depPkg1","depPkg2","createCheckPackageWithWorkspaces","createCheckPackageOptions","checkPackage","pkgWorkspaces","workspaces","packages","workspacePackagesPaths","pattern","globSync","cwd","pathMatch","fs","existsSync","subPkgDirectoryPath","relative","checksWorkspaces","checkPkg","checksWorkspace","values","allowRangeVersionsInLibraries","onlyWarnsForInRootPackage","onlyWarnsForInMonorepoPackages","onlyWarnsForInRootDependencies","onlyWarnsForInMonorepoPackagesDependencies","monorepoDirectDuplicateDependenciesOnlyWarnsFor","monorepoDirectDuplicateDependenciesOnlyWarnsForCheck","previousCheckedWorkspaces","checkSubPackage","id","reportMonorepoDDDError","previousCheckSubPackage","forRoot","callback","for","packageCheck"],"mappings":"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"} \ No newline at end of file