From eec2e7106c6f307dd485be2bf8c9c33a967897ad Mon Sep 17 00:00:00 2001 From: Christophe Hurpeau Date: Thu, 7 Jul 2022 21:37:07 +0200 Subject: [PATCH] feat: check duplicates from previously checked packages in monorepo --- dist/check-package-with-workspaces.d.ts.map | 2 +- dist/index-node14.cjs.js | 13 ++++++-- dist/index-node14.cjs.js.map | 2 +- src/check-package-with-workspaces.ts | 37 +++++++++++++++++++++ 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/dist/check-package-with-workspaces.d.ts.map b/dist/check-package-with-workspaces.d.ts.map index ba3c7c69..2486ff60 100644 --- a/dist/check-package-with-workspaces.d.ts.map +++ b/dist/check-package-with-workspaces.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"check-package-with-workspaces.d.ts","sourceRoot":"","sources":["../src/check-package-with-workspaces.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,uDAAuD,EACvD,qDAAqD,EACrD,kDAAkD,EACnD,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAKtF,OAAO,KAAK,EACV,YAAY,EACZ,qCAAqC,EACtC,MAAM,sBAAsB,CAAC;AAG9B,UAAU,0DACR,SAAQ,kDAAkD;IAC1D,yBAAyB,EAAE,qDAAqD,CAAC,2BAA2B,CAAC,CAAC;CAC/G;AAED,aAAK,2DAA2D,GAAG,MAAM,CAEvE,GAAG,GAAG,MAAM,EACZ,0DAA0D,CAC3D,CAAC;AAEF,aAAK,uEAAuE,GAC1E,MAAM,CAAC,MAAM,EAAE,uDAAuD,CAAC,CAAC;AAE1E,MAAM,WAAW,4CAA4C;IAC3D,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,mCAAmC;IACnC,4BAA4B,CAAC,EAAE,YAAY,CAAC;IAC5C,mCAAmC;IACnC,uCAAuC,CAAC,EAAE,YAAY,CAAC;IACvD,+CAA+C,CAAC,EAAE,qCAAqC,CAAC;IACxF,yBAAyB,CAAC,EAAE,kDAAkD,CAAC;IAC/E,8BAA8B,CAAC,EAAE,2DAA2D,CAAC;IAC7F,qDAAqD;IACrD,0BAA0B,CAAC,EAAE,uDAAuD,CAAC;IACrF,8BAA8B,CAAC,EAAE,uDAAuD,CAAC;IACzF,0CAA0C,CAAC,EAAE,uEAAuE,CAAC;IACrH,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED,MAAM,WAAW,6BAA6B;IAC5C,gBAAgB,EAAE,CAChB,OAAO,CAAC,EAAE,4CAA4C,KACnD,6BAA6B,CAAC;IAEnC,OAAO,EAAE,CACP,QAAQ,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,KAC9C,6BAA6B,CAAC;IACnC,OAAO,EAAE,CACP,QAAQ,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,KAC9C,6BAA6B,CAAC;IACnC,GAAG,EAAE,CACH,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,KAC9C,6BAA6B,CAAC;CACpC;AAED,wBAAgB,gCAAgC,CAC9C,gBAAgB,SAAM,EACtB,yBAAyB,GAAE,yBAA8B,GACxD,6BAA6B,CA6J/B"} \ No newline at end of file +{"version":3,"file":"check-package-with-workspaces.d.ts","sourceRoot":"","sources":["../src/check-package-with-workspaces.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,uDAAuD,EACvD,qDAAqD,EACrD,kDAAkD,EACnD,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAKtF,OAAO,KAAK,EACV,YAAY,EACZ,qCAAqC,EACtC,MAAM,sBAAsB,CAAC;AAG9B,UAAU,0DACR,SAAQ,kDAAkD;IAC1D,yBAAyB,EAAE,qDAAqD,CAAC,2BAA2B,CAAC,CAAC;CAC/G;AAED,aAAK,2DAA2D,GAAG,MAAM,CAEvE,GAAG,GAAG,MAAM,EACZ,0DAA0D,CAC3D,CAAC;AAEF,aAAK,uEAAuE,GAC1E,MAAM,CAAC,MAAM,EAAE,uDAAuD,CAAC,CAAC;AAE1E,MAAM,WAAW,4CAA4C;IAC3D,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,mCAAmC;IACnC,4BAA4B,CAAC,EAAE,YAAY,CAAC;IAC5C,mCAAmC;IACnC,uCAAuC,CAAC,EAAE,YAAY,CAAC;IACvD,+CAA+C,CAAC,EAAE,qCAAqC,CAAC;IACxF,yBAAyB,CAAC,EAAE,kDAAkD,CAAC;IAC/E,8BAA8B,CAAC,EAAE,2DAA2D,CAAC;IAC7F,qDAAqD;IACrD,0BAA0B,CAAC,EAAE,uDAAuD,CAAC;IACrF,8BAA8B,CAAC,EAAE,uDAAuD,CAAC;IACzF,0CAA0C,CAAC,EAAE,uEAAuE,CAAC;IACrH,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED,MAAM,WAAW,6BAA6B;IAC5C,gBAAgB,EAAE,CAChB,OAAO,CAAC,EAAE,4CAA4C,KACnD,6BAA6B,CAAC;IAEnC,OAAO,EAAE,CACP,QAAQ,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,KAC9C,6BAA6B,CAAC;IACnC,OAAO,EAAE,CACP,QAAQ,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,KAC9C,6BAA6B,CAAC;IACnC,GAAG,EAAE,CACH,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,KAC9C,6BAA6B,CAAC;CACpC;AAED,wBAAgB,gCAAgC,CAC9C,gBAAgB,SAAM,EACtB,yBAAyB,GAAE,yBAA8B,GACxD,6BAA6B,CAkM/B"} \ No newline at end of file diff --git a/dist/index-node14.cjs.js b/dist/index-node14.cjs.js index 3e5bad18..a281763d 100644 --- a/dist/index-node14.cjs.js +++ b/dist/index-node14.cjs.js @@ -900,6 +900,7 @@ function createCheckPackageWithWorkspaces(pkgDirectoryPath = '.', createCheckPac checkResolutionMessage }); const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck = createOnlyWarnsForMappingCheck('monorepoDirectDuplicateDependenciesOnlyWarnsFor', monorepoDirectDuplicateDependenciesOnlyWarnsFor); + const previousCheckedWorkspaces = new Map(); checksWorkspaces.forEach((checkSubPackage, id) => { const isPackageALibrary = isLibrary(id); checkSubPackage.checkRecommended({ @@ -914,8 +915,16 @@ function createCheckPackageWithWorkspaces(pkgDirectoryPath = '.', createCheckPac internalExactVersionsIgnore: [...checksWorkspaces.keys()], checkResolutionMessage }); - const reportMonorepoDDDError = createReportError('Monorepo Direct Duplicate Dependencies', checkSubPackage.pkgPathName); - checkDuplicateDependencies(reportMonorepoDDDError, checkSubPackage.pkg, 'devDependencies', ['dependencies', 'devDependencies'], pkg, monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(checkSubPackage.pkg.name)); + const reportMonorepoDDDError = createReportError('Monorepo Direct Duplicate Dependencies', checkSubPackage.pkgPathName); // Root + + checkDuplicateDependencies(reportMonorepoDDDError, checkSubPackage.pkg, 'devDependencies', ['dependencies', 'devDependencies'], pkg, monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(checkSubPackage.pkg.name)); // previous packages + + previousCheckedWorkspaces.forEach(previousCheckSubPackage => { + checkDuplicateDependencies(reportMonorepoDDDError, checkSubPackage.pkg, 'devDependencies', ['dependencies', 'devDependencies'], previousCheckSubPackage.pkg, monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(checkSubPackage.pkg.name)); + checkDuplicateDependencies(reportMonorepoDDDError, checkSubPackage.pkg, 'dependencies', ['dependencies', 'devDependencies'], previousCheckSubPackage.pkg, monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(checkSubPackage.pkg.name)); + checkDuplicateDependencies(reportMonorepoDDDError, checkSubPackage.pkg, 'peerDependencies', ['peerDependencies'], previousCheckSubPackage.pkg, monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(checkSubPackage.pkg.name)); + }); + previousCheckedWorkspaces.set(id, checkSubPackage); }); reportNotWarnedForMapping(createReportError('Monorepo Direct Duplicate Dependencies', checkPackage.pkgPathName), monorepoDirectDuplicateDependenciesOnlyWarnsForCheck); return this; diff --git a/dist/index-node14.cjs.js.map b/dist/index-node14.cjs.js.map index e1615623..f3024add 100644 --- a/dist/index-node14.cjs.js.map +++ b/dist/index-node14.cjs.js.map @@ -1 +1 @@ -{"version":3,"file":"index-node14.cjs.js","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/checkNoDependencies.ts","../src/checks/checkResolutionsHasExplanation.ts","../src/checks/checkResolutionsVersionsMatch.ts","../src/checks/checkSatisfiesVersionsFromDependency.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)[] => 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\nexport function logMessage(\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n): void {\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 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 if (versionsIn.length > 1) {\n reportError(\n `${depKey} is present in both devDependencies and dependencies, 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 function checkDirectDuplicateDependencies(\n pkg: PackageJson,\n pkgPathName: string,\n depType: DependencyTypes,\n getDependencyPackageJson: GetDependencyPackageJson,\n onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n reportErrorNamePrefix = '',\n): void {\n const reportError = createReportError(\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 checks.forEach(({ type, searchIn }) => {\n if (!pkg[type]) return;\n getKeys(pkg[type]).forEach((depName) => {\n const depPkg = getDependencyPackageJson(depName);\n checkDuplicateDependencies(\n reportError,\n pkg,\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 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 return;\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 )}`,\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 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 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 case 'optionalDependencies':\n return isLibrary\n ? ['dependencies', 'peerDependencies']\n : ['dependencies'];\n }\n};\n\nexport function checkDirectPeerDependencies(\n isLibrary: boolean,\n pkg: PackageJson,\n pkgPathName: string,\n getDependencyPackageJson: GetDependencyPackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n): void {\n const reportError = createReportError('Peer Dependencies', pkgPathName);\n\n regularDependencyTypes.forEach((depType) => {\n if (!pkg[depType]) return;\n getKeys(pkg[depType]).forEach((depName) => {\n const depPkg = getDependencyPackageJson(depName);\n\n if (depPkg.peerDependencies) {\n checkPeerDependencies(\n pkg,\n reportError,\n depType,\n getAllowedPeerInFromType(depType, isLibrary),\n depPkg,\n missingOnlyWarnsForCheck.createFor(depName),\n invalidOnlyWarnsForCheck.createFor(depName),\n );\n }\n });\n });\n\n reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck);\n if (missingOnlyWarnsForCheck !== invalidOnlyWarnsForCheck) {\n reportNotWarnedForMapping(reportError, invalidOnlyWarnsForCheck);\n }\n}\n","/* eslint-disable complexity */\nimport 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}\n\nconst isVersionRange = (version: string): boolean =>\n version.startsWith('^') || version.startsWith('~');\n\nexport function checkExactVersions(\n pkg: PackageJson,\n pkgPathName: string,\n types: DependencyTypes[],\n {\n getDependencyPackageJson,\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix = false,\n }: CheckExactVersionsOptions,\n): void {\n const reportError = createReportError('Exact versions', pkgPathName);\n\n types.forEach((type) => {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\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 return;\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 || !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(1)}\".`,\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>>,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = createReportError('Identical Versions', pkgPathName);\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): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = createReportError(\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 { 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): void {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n const reportError = createReportError('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): void {\n const pkgResolutions = pkg.resolutions || {};\n const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n const reportError = createReportError(\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}\n\nexport function checkResolutionsVersionsMatch(\n pkg: PackageJson,\n pkgPathName: string,\n { tryToAutoFix }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const reportError = createReportError(\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 function checkSatisfiesVersionsFromDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = createReportError(\n `Satisfies Versions from ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const range = dependencies[depKey];\n if (!range) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\" from \"${depPkg.name}\" ${depKey}.`,\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}\" from \"${depPkg.name}\" ${depKey}.`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\n}\n","import { readFileSync, writeFileSync } from 'fs';\nimport type { PackageJson } from './packageTypes';\n\nexport type GetDependencyPackageJson = (pkgDepName: string) => PackageJson;\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\ntype NodeModulesPackagePathCache = Map;\n\ninterface CreateGetDependencyPackageJsonOptions {\n pkgDirname: string;\n nodeModulesPackagePathCache?: NodeModulesPackagePathCache;\n}\n\nexport function createGetDependencyPackageJson({\n pkgDirname,\n nodeModulesPackagePathCache = new Map(),\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 = readPkgJson(packagePath);\n } else {\n try {\n // eslint-disable-next-line import/no-dynamic-require, @typescript-eslint/no-unsafe-assignment\n pkg = require(require.resolve(`${pkgDepName}/package.json`, {\n paths: [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)($|\\simported from)/.exec(\n err.message,\n );\n\n if (match) {\n const [, matchPackageJson] = match;\n pkg = readPkgJson(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 | undefined\n | OnlyWarnsFor\n | OnlyWarnsForDependencyMapping;\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 complexity */\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 { checkNoDependencies } from './checks/checkNoDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsHasExplanation } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsVersionsMatch } from './checks/checkResolutionsVersionsMatch';\nimport { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency';\nimport type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport {\n createGetDependencyPackageJson,\n readPkgJson,\n writePkgJson,\n} from './utils/createGetDependencyPackageJson';\nimport { getEntries } from './utils/object';\nimport type { DependencyTypes, PackageJson } from './utils/packageTypes';\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 tryToAutoFix?: boolean;\n}\n\nexport interface CheckDirectPeerDependenciesOptions {\n isLibrary?: boolean;\n /** @deprecated use missingOnlyWarnsFor or invalidOnlyWarnsFor */\n onlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\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\n '*' | string,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption\n>;\n\nexport interface CheckRecommendedOptions {\n isLibrary?: boolean;\n /** default is true for libraries, false otherwise */\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsForInPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n /** @deprecated use onlyWarnsForInDependencies option */\n peerDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n /** @deprecated use onlyWarnsForInDependencies option */\n directDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n /** @deprecated use onlyWarnsForInPackage option */\n exactVersionsOnlyWarnsFor?: OnlyWarnsFor;\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 CheckPackageApi {\n /** @internal */\n pkg: PackageJson;\n /** @internal */\n pkgDirname: string;\n /** @internal */\n pkgPathName: string;\n /** @internal */\n getDependencyPackageJson: GetDependencyPackageJson;\n\n checkExactVersions: (options?: CheckExactVersionsOptions) => CheckPackageApi;\n checkResolutionsVersionsMatch: () => CheckPackageApi;\n checkExactVersionsForLibrary: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n checkExactDevVersions: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n checkNoDependencies: (\n type?: DependencyTypes,\n moveToSuggestion?: DependencyTypes,\n ) => CheckPackageApi;\n checkDirectPeerDependencies: (\n options?: CheckDirectPeerDependenciesOptions,\n ) => CheckPackageApi;\n checkDirectDuplicateDependencies: (\n options?: CheckDirectDuplicateDependenciesOptions,\n ) => CheckPackageApi;\n checkResolutionsHasExplanation: (\n checkMessage?: CheckResolutionMessage,\n ) => CheckPackageApi;\n checkRecommended: (options?: CheckRecommendedOptions) => CheckPackageApi;\n checkIdenticalVersionsThanDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n checkIdenticalVersionsThanDevDependencyOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n checkSatisfiesVersionsFromDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n checkSatisfiesVersionsInDevDependenciesOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n checkIdenticalVersions: (dependencies: {\n resolutions?: Record;\n dependencies?: Record;\n devDependencies?: Record;\n }) => CheckPackageApi;\n checkSatisfiesVersionsBetweenDependencies: (\n depName1: string,\n depName2: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n}\n\nexport function createCheckPackage(\n pkgDirectoryPath = '.',\n { tryToAutoFix = false }: CreateCheckPackageOptions = {},\n): CheckPackageApi {\n const pkgDirname = path.resolve(pkgDirectoryPath);\n const pkgPath = `${pkgDirname}/package.json`;\n const pkgPathName = `${pkgDirectoryPath}/package.json`;\n const pkg = readPkgJson(pkgPath);\n const copyPkg: PackageJson = JSON.parse(JSON.stringify(pkg)) as PackageJson;\n\n if (\n process.env.CI &&\n process.env.CHECK_PACKAGE_DEPENDENCIES_ENABLE_CI_AUTOFIX !== 'true'\n ) {\n tryToAutoFix = false;\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 return {\n pkg,\n pkgDirname,\n pkgPathName,\n getDependencyPackageJson,\n checkExactVersions({\n onlyWarnsFor,\n internalExactVersionsIgnore,\n allowRangeVersionsInDependencies = true,\n } = {}) {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n checkExactVersions(\n pkg,\n pkgPathName,\n !allowRangeVersionsInDependencies\n ? ['dependencies', 'devDependencies', 'resolutions']\n : ['devDependencies', 'resolutions'],\n {\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix,\n },\n );\n writePackageIfChanged();\n return this;\n },\n\n checkResolutionsVersionsMatch() {\n checkResolutionsVersionsMatch(pkg, pkgPathName, {\n tryToAutoFix,\n });\n writePackageIfChanged();\n return this;\n },\n\n /** @deprecated use checkExactVersions({ allowRangeVersionsInDependencies: true }) */\n checkExactVersionsForLibrary({ onlyWarnsFor } = {}) {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersionsForLibrary.onlyWarnsFor',\n onlyWarnsFor,\n );\n checkExactVersions(pkg, pkgPathName, ['devDependencies', 'resolutions'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n writePackageIfChanged();\n return this;\n },\n\n checkExactDevVersions({ onlyWarnsFor } = {}) {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactDevVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n checkExactVersions(pkg, pkgPathName, ['devDependencies'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n writePackageIfChanged();\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 isLibrary = false,\n onlyWarnsFor: deprecatedOnlyWarnsFor,\n missingOnlyWarnsFor = deprecatedOnlyWarnsFor,\n invalidOnlyWarnsFor = deprecatedOnlyWarnsFor,\n internalMissingConfigName = deprecatedOnlyWarnsFor\n ? 'onlyWarnsFor'\n : 'missingOnlyWarnsFor',\n internalInvalidConfigName = deprecatedOnlyWarnsFor\n ? 'onlyWarnsFor'\n : 'invalidOnlyWarnsFor',\n } = {}) {\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 checkDirectPeerDependencies(\n isLibrary,\n pkg,\n pkgPathName,\n getDependencyPackageJson,\n missingOnlyWarnsForCheck,\n invalidOnlyWarnsForCheck,\n );\n return this;\n },\n\n checkDirectDuplicateDependencies({\n onlyWarnsFor,\n internalConfigName = 'onlyWarnsFor',\n } = {}) {\n checkDirectDuplicateDependencies(\n pkg,\n pkgPathName,\n 'dependencies',\n getDependencyPackageJson,\n createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor),\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 isLibrary = false,\n onlyWarnsForInPackage,\n onlyWarnsForInDependencies,\n allowRangeVersionsInDependencies = isLibrary,\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n exactVersionsOnlyWarnsFor,\n internalExactVersionsIgnore,\n checkResolutionMessage,\n } = {}) {\n let internalMissingPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n peerDependenciesOnlyWarnsFor;\n let internalInvalidPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n peerDependenciesOnlyWarnsFor;\n let internalDirectDuplicateDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n directDuplicateDependenciesOnlyWarnsFor;\n\n if (onlyWarnsForInPackage) {\n if (exactVersionsOnlyWarnsFor) {\n console.warn(\n 'Ignoring \"exactVersionsOnlyWarnsFor\" as \"onlyWarnsForInPackage\" is used.',\n );\n }\n exactVersionsOnlyWarnsFor = onlyWarnsForInPackage.exactVersions || [];\n }\n if (onlyWarnsForInDependencies) {\n if (peerDependenciesOnlyWarnsFor) {\n console.warn(\n 'Ignoring \"peerDependenciesOnlyWarnsFor\" as \"onlyWarnsFor\" is used.',\n );\n }\n if (directDuplicateDependenciesOnlyWarnsFor) {\n console.warn(\n 'Ignoring \"directDuplicateDependenciesOnlyWarnsFor\" as \"onlyWarnsFor\" is used.',\n );\n }\n\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 isLibrary,\n missingOnlyWarnsFor: internalMissingPeerDependenciesOnlyWarnsFor,\n invalidOnlyWarnsFor: internalInvalidPeerDependenciesOnlyWarnsFor,\n internalMissingConfigName: peerDependenciesOnlyWarnsFor\n ? 'peerDependenciesOnlyWarnsFor'\n : 'onlyWarnsForInDependencies.missingPeerDependency',\n internalInvalidConfigName: peerDependenciesOnlyWarnsFor\n ? 'peerDependenciesOnlyWarnsFor'\n : 'onlyWarnsForInDependencies.invalidPeerDependencyVersion',\n });\n\n this.checkDirectDuplicateDependencies({\n onlyWarnsFor: internalDirectDuplicateDependenciesOnlyWarnsFor,\n internalConfigName: directDuplicateDependenciesOnlyWarnsFor\n ? 'directDuplicateDependenciesOnlyWarnsFor'\n : 'onlyWarnsForInDependencies.duplicateDirectDependency',\n });\n\n return this;\n },\n\n checkIdenticalVersionsThanDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\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 return this;\n },\n\n checkIdenticalVersionsThanDevDependencyOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\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 return this;\n },\n\n checkSatisfiesVersionsFromDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n return this;\n },\n\n checkSatisfiesVersionsInDevDependenciesOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.devDependencies,\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 const depPkg1 = getDependencyPackageJson(depName1);\n const depPkg2 = getDependencyPackageJson(depName2);\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg1,\n depPkg1.dependencies,\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg1,\n depPkg1.dependencies,\n );\n }\n return this;\n },\n };\n}\n","/* eslint-disable max-lines */\nimport fs from 'fs';\nimport path from 'path';\nimport glob from 'glob';\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 reportNotWarnedForMapping,\n} from './utils/createReportError';\nimport type {\n OnlyWarnsFor,\n OnlyWarnsForOptionalDependencyMapping,\n} 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\n '*' | string,\n OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n>;\n\ntype OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption =\n Record;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n isLibrary?: (pkgName: string) => boolean;\n allowRangeVersionsInLibraries?: boolean;\n /** @deprecated use onlyWarnsFor */\n peerDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n /** @deprecated use onlyWarnsFor */\n directDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n /** @deprecated use onlyWarnsForInRootDependencies */\n onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\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\nexport function createCheckPackageWithWorkspaces(\n pkgDirectoryPath = '.',\n createCheckPackageOptions: CreateCheckPackageOptions = {},\n): CheckPackageWithWorkspacesApi {\n const checkPackage = createCheckPackage(\n pkgDirectoryPath,\n createCheckPackageOptions,\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 = glob.sync(`${pkgDirname}/${pattern}`);\n match.forEach((pathMatch) => {\n const stat = fs.statSync(pathMatch);\n if (!stat.isDirectory()) return;\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 subPkgDirectoryPath,\n createCheckPackageOptions,\n );\n return [checkPkg.pkg.name, checkPkg];\n }),\n );\n\n return {\n checkRecommended({\n isLibrary = () => false,\n allowRangeVersionsInLibraries = true,\n onlyWarnsForInRootPackage,\n onlyWarnsForInMonorepoPackages,\n onlyWarnsForInDependencies,\n onlyWarnsForInRootDependencies = onlyWarnsForInDependencies,\n onlyWarnsForInMonorepoPackagesDependencies = onlyWarnsForInDependencies\n ? { '*': onlyWarnsForInDependencies }\n : {},\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n } = {}) {\n if (peerDependenciesOnlyWarnsFor) {\n console.warn(\n 'Option \"peerDependenciesOnlyWarnsFor\" in checkRecommended() is deprecated. Use \"onlyWarnsForInDependencies\" instead.',\n );\n }\n if (directDuplicateDependenciesOnlyWarnsFor) {\n console.warn(\n 'Option \"directDuplicateDependenciesOnlyWarnsFor\" in checkRecommended() is deprecated. Use \"onlyWarnsForInDependencies\" instead.',\n );\n }\n\n checkPackage.checkNoDependencies();\n checkPackage.checkRecommended({\n isLibrary: false,\n onlyWarnsForInPackage: onlyWarnsForInRootPackage,\n onlyWarnsForInDependencies: onlyWarnsForInRootDependencies,\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n });\n\n const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck =\n createOnlyWarnsForMappingCheck(\n 'monorepoDirectDuplicateDependenciesOnlyWarnsFor',\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n );\n\n checksWorkspaces.forEach((checkSubPackage, id) => {\n const isPackageALibrary = isLibrary(id);\n checkSubPackage.checkRecommended({\n isLibrary: isPackageALibrary,\n allowRangeVersionsInDependencies: isPackageALibrary\n ? allowRangeVersionsInLibraries\n : false,\n onlyWarnsForInPackage: onlyWarnsForInMonorepoPackages\n ? {\n ...onlyWarnsForInMonorepoPackages['*'],\n ...onlyWarnsForInMonorepoPackages[checkSubPackage.pkg.name],\n }\n : undefined,\n onlyWarnsForInDependencies:\n onlyWarnsForInMonorepoPackagesDependencies[\n checkSubPackage.pkg.name\n ],\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n internalExactVersionsIgnore: [...checksWorkspaces.keys()],\n checkResolutionMessage,\n });\n\n const reportMonorepoDDDError = createReportError(\n 'Monorepo Direct Duplicate Dependencies',\n checkSubPackage.pkgPathName,\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\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","logMessage","msgTitle","msgInfo","onlyWarns","console","error","chalk","yellow","red","createReportError","title","pkgPathName","reportError","cyan","process","exitCode","reportNotWarnedFor","onlyWarnsForCheck","notWarnedFor","getNotWarnedFor","length","configName","map","depName","join","reportNotWarnedForMapping","onlyWarnsForMappingCheck","notWarnedForMapping","forEach","depNameOrStar","checkDuplicateDependencies","pkg","depType","searchIn","depPkg","dependencies","searchInExisting","filter","type","depKey","range","versionsIn","versions","version","index","startsWith","semver","satisfies","includePrerelease","intersects","resolutions","versionInType","name","shouldWarnsFor","checkDirectDuplicateDependencies","getDependencyPackageJson","reportErrorNamePrefix","createFor","checkPeerDependencies","allowedPeerIn","missingOnlyWarnsForCheck","invalidOnlyWarnsForCheck","peerDependencies","peerDependenciesMeta","allowedPeerInExisting","allowedPeerInType","peerDepName","allowedPeerInExistingType","peerDependenciesMetaPeerDep","optional","versionsInType","minVersionOfVersion","minVersion","regularDependencyTypes","getAllowedPeerInFromType","depPkgType","isLibrary","checkDirectPeerDependencies","isVersionRange","checkExactVersions","types","internalExactVersionsIgnore","tryToAutoFix","pkgDependencies","dependencyName","versionConst","match","exec","Error","realVersion","includes","shouldOnlyWarn","resolvedDep","slice","checkIdenticalVersions","deps","depConfigArrayOrObject","depConfig","Array","isArray","depKeyType","pkgDependenciesType","depKeyIdentical","value","checkIdenticalVersionsThanDependency","depKeys","checkNoDependencies","pkgPath","moveToSuggestion","checkResolutionsHasExplanation","checkMessage","pkgResolutions","pkgResolutionsExplained","resolutionsExplained","checkResolutionsVersionsMatch","resolutionDepVersion","checkSatisfiesVersionsFromDependency","readPkgJson","packagePath","JSON","parse","readFileSync","writePkgJson","writeFileSync","stringify","createGetDependencyPackageJson","pkgDirname","nodeModulesPackagePathCache","Map","pkgDepName","existing","get","require","resolve","paths","err","code","message","matchPackageJson","set","createOnlyWarnsForArrayCheck","onlyWarnsFor","Set","delete","isMapping","createOnlyWarnsForMappingCheck","fromEntries","entryKey","entryValue","key","size","dependencyNameLevel1","arrayOnlyWarnsForCheck","createCheckPackage","pkgDirectoryPath","path","copyPkg","env","CI","CHECK_PACKAGE_DEPENDENCIES_ENABLE_CI_AUTOFIX","writePackageIfChanged","util","isDeepStrictEqual","allowRangeVersionsInDependencies","checkExactVersionsForLibrary","checkExactDevVersions","deprecatedOnlyWarnsFor","missingOnlyWarnsFor","invalidOnlyWarnsFor","internalMissingConfigName","internalInvalidConfigName","internalConfigName","undefined","checkRecommended","onlyWarnsForInPackage","onlyWarnsForInDependencies","peerDependenciesOnlyWarnsFor","directDuplicateDependenciesOnlyWarnsFor","exactVersionsOnlyWarnsFor","checkResolutionMessage","internalMissingPeerDependenciesOnlyWarnsFor","internalInvalidPeerDependenciesOnlyWarnsFor","internalDirectDuplicateDependenciesOnlyWarnsFor","warn","exactVersions","dependencyNameOrSpecialKey","onlyWarnsForValue","duplicateDirectDependency","missingPeerDependency","invalidPeerDependencyVersion","devDependencies","checkIdenticalVersionsThanDevDependencyOfDependency","checkSatisfiesVersionsInDevDependenciesOfDependency","checkSatisfiesVersionsBetweenDependencies","depName1","depName2","depPkg1","depPkg2","createCheckPackageWithWorkspaces","createCheckPackageOptions","checkPackage","pkgWorkspaces","workspaces","packages","workspacePackagesPaths","pattern","glob","sync","pathMatch","stat","fs","statSync","isDirectory","subPkgDirectoryPath","relative","cwd","push","checksWorkspaces","checkPkg","allowRangeVersionsInLibraries","onlyWarnsForInRootPackage","onlyWarnsForInMonorepoPackages","onlyWarnsForInRootDependencies","onlyWarnsForInMonorepoPackagesDependencies","monorepoDirectDuplicateDependenciesOnlyWarnsFor","monorepoDirectDuplicateDependenciesOnlyWarnsForCheck","checkSubPackage","id","isPackageALibrary","reportMonorepoDDDError","forRoot","callback","for","packageCheck"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index-node14.cjs.js","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/checkNoDependencies.ts","../src/checks/checkResolutionsHasExplanation.ts","../src/checks/checkResolutionsVersionsMatch.ts","../src/checks/checkSatisfiesVersionsFromDependency.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)[] => 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\nexport function logMessage(\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n): void {\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 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 if (versionsIn.length > 1) {\n reportError(\n `${depKey} is present in both devDependencies and dependencies, 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 function checkDirectDuplicateDependencies(\n pkg: PackageJson,\n pkgPathName: string,\n depType: DependencyTypes,\n getDependencyPackageJson: GetDependencyPackageJson,\n onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n reportErrorNamePrefix = '',\n): void {\n const reportError = createReportError(\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 checks.forEach(({ type, searchIn }) => {\n if (!pkg[type]) return;\n getKeys(pkg[type]).forEach((depName) => {\n const depPkg = getDependencyPackageJson(depName);\n checkDuplicateDependencies(\n reportError,\n pkg,\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 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 return;\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 )}`,\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 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 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 case 'optionalDependencies':\n return isLibrary\n ? ['dependencies', 'peerDependencies']\n : ['dependencies'];\n }\n};\n\nexport function checkDirectPeerDependencies(\n isLibrary: boolean,\n pkg: PackageJson,\n pkgPathName: string,\n getDependencyPackageJson: GetDependencyPackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n): void {\n const reportError = createReportError('Peer Dependencies', pkgPathName);\n\n regularDependencyTypes.forEach((depType) => {\n if (!pkg[depType]) return;\n getKeys(pkg[depType]).forEach((depName) => {\n const depPkg = getDependencyPackageJson(depName);\n\n if (depPkg.peerDependencies) {\n checkPeerDependencies(\n pkg,\n reportError,\n depType,\n getAllowedPeerInFromType(depType, isLibrary),\n depPkg,\n missingOnlyWarnsForCheck.createFor(depName),\n invalidOnlyWarnsForCheck.createFor(depName),\n );\n }\n });\n });\n\n reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck);\n if (missingOnlyWarnsForCheck !== invalidOnlyWarnsForCheck) {\n reportNotWarnedForMapping(reportError, invalidOnlyWarnsForCheck);\n }\n}\n","/* eslint-disable complexity */\nimport 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}\n\nconst isVersionRange = (version: string): boolean =>\n version.startsWith('^') || version.startsWith('~');\n\nexport function checkExactVersions(\n pkg: PackageJson,\n pkgPathName: string,\n types: DependencyTypes[],\n {\n getDependencyPackageJson,\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix = false,\n }: CheckExactVersionsOptions,\n): void {\n const reportError = createReportError('Exact versions', pkgPathName);\n\n types.forEach((type) => {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\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 return;\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 || !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(1)}\".`,\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>>,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = createReportError('Identical Versions', pkgPathName);\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): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = createReportError(\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 { 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): void {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n const reportError = createReportError('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): void {\n const pkgResolutions = pkg.resolutions || {};\n const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n const reportError = createReportError(\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}\n\nexport function checkResolutionsVersionsMatch(\n pkg: PackageJson,\n pkgPathName: string,\n { tryToAutoFix }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const reportError = createReportError(\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 function checkSatisfiesVersionsFromDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = createReportError(\n `Satisfies Versions from ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const range = dependencies[depKey];\n if (!range) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\" from \"${depPkg.name}\" ${depKey}.`,\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}\" from \"${depPkg.name}\" ${depKey}.`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\n}\n","import { readFileSync, writeFileSync } from 'fs';\nimport type { PackageJson } from './packageTypes';\n\nexport type GetDependencyPackageJson = (pkgDepName: string) => PackageJson;\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\ntype NodeModulesPackagePathCache = Map;\n\ninterface CreateGetDependencyPackageJsonOptions {\n pkgDirname: string;\n nodeModulesPackagePathCache?: NodeModulesPackagePathCache;\n}\n\nexport function createGetDependencyPackageJson({\n pkgDirname,\n nodeModulesPackagePathCache = new Map(),\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 = readPkgJson(packagePath);\n } else {\n try {\n // eslint-disable-next-line import/no-dynamic-require, @typescript-eslint/no-unsafe-assignment\n pkg = require(require.resolve(`${pkgDepName}/package.json`, {\n paths: [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)($|\\simported from)/.exec(\n err.message,\n );\n\n if (match) {\n const [, matchPackageJson] = match;\n pkg = readPkgJson(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 | undefined\n | OnlyWarnsFor\n | OnlyWarnsForDependencyMapping;\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 complexity */\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 { checkNoDependencies } from './checks/checkNoDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsHasExplanation } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsVersionsMatch } from './checks/checkResolutionsVersionsMatch';\nimport { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency';\nimport type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport {\n createGetDependencyPackageJson,\n readPkgJson,\n writePkgJson,\n} from './utils/createGetDependencyPackageJson';\nimport { getEntries } from './utils/object';\nimport type { DependencyTypes, PackageJson } from './utils/packageTypes';\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 tryToAutoFix?: boolean;\n}\n\nexport interface CheckDirectPeerDependenciesOptions {\n isLibrary?: boolean;\n /** @deprecated use missingOnlyWarnsFor or invalidOnlyWarnsFor */\n onlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\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\n '*' | string,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption\n>;\n\nexport interface CheckRecommendedOptions {\n isLibrary?: boolean;\n /** default is true for libraries, false otherwise */\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsForInPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n /** @deprecated use onlyWarnsForInDependencies option */\n peerDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n /** @deprecated use onlyWarnsForInDependencies option */\n directDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n /** @deprecated use onlyWarnsForInPackage option */\n exactVersionsOnlyWarnsFor?: OnlyWarnsFor;\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 CheckPackageApi {\n /** @internal */\n pkg: PackageJson;\n /** @internal */\n pkgDirname: string;\n /** @internal */\n pkgPathName: string;\n /** @internal */\n getDependencyPackageJson: GetDependencyPackageJson;\n\n checkExactVersions: (options?: CheckExactVersionsOptions) => CheckPackageApi;\n checkResolutionsVersionsMatch: () => CheckPackageApi;\n checkExactVersionsForLibrary: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n checkExactDevVersions: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n checkNoDependencies: (\n type?: DependencyTypes,\n moveToSuggestion?: DependencyTypes,\n ) => CheckPackageApi;\n checkDirectPeerDependencies: (\n options?: CheckDirectPeerDependenciesOptions,\n ) => CheckPackageApi;\n checkDirectDuplicateDependencies: (\n options?: CheckDirectDuplicateDependenciesOptions,\n ) => CheckPackageApi;\n checkResolutionsHasExplanation: (\n checkMessage?: CheckResolutionMessage,\n ) => CheckPackageApi;\n checkRecommended: (options?: CheckRecommendedOptions) => CheckPackageApi;\n checkIdenticalVersionsThanDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n checkIdenticalVersionsThanDevDependencyOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n checkSatisfiesVersionsFromDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n checkSatisfiesVersionsInDevDependenciesOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n checkIdenticalVersions: (dependencies: {\n resolutions?: Record;\n dependencies?: Record;\n devDependencies?: Record;\n }) => CheckPackageApi;\n checkSatisfiesVersionsBetweenDependencies: (\n depName1: string,\n depName2: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n}\n\nexport function createCheckPackage(\n pkgDirectoryPath = '.',\n { tryToAutoFix = false }: CreateCheckPackageOptions = {},\n): CheckPackageApi {\n const pkgDirname = path.resolve(pkgDirectoryPath);\n const pkgPath = `${pkgDirname}/package.json`;\n const pkgPathName = `${pkgDirectoryPath}/package.json`;\n const pkg = readPkgJson(pkgPath);\n const copyPkg: PackageJson = JSON.parse(JSON.stringify(pkg)) as PackageJson;\n\n if (\n process.env.CI &&\n process.env.CHECK_PACKAGE_DEPENDENCIES_ENABLE_CI_AUTOFIX !== 'true'\n ) {\n tryToAutoFix = false;\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 return {\n pkg,\n pkgDirname,\n pkgPathName,\n getDependencyPackageJson,\n checkExactVersions({\n onlyWarnsFor,\n internalExactVersionsIgnore,\n allowRangeVersionsInDependencies = true,\n } = {}) {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n checkExactVersions(\n pkg,\n pkgPathName,\n !allowRangeVersionsInDependencies\n ? ['dependencies', 'devDependencies', 'resolutions']\n : ['devDependencies', 'resolutions'],\n {\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix,\n },\n );\n writePackageIfChanged();\n return this;\n },\n\n checkResolutionsVersionsMatch() {\n checkResolutionsVersionsMatch(pkg, pkgPathName, {\n tryToAutoFix,\n });\n writePackageIfChanged();\n return this;\n },\n\n /** @deprecated use checkExactVersions({ allowRangeVersionsInDependencies: true }) */\n checkExactVersionsForLibrary({ onlyWarnsFor } = {}) {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersionsForLibrary.onlyWarnsFor',\n onlyWarnsFor,\n );\n checkExactVersions(pkg, pkgPathName, ['devDependencies', 'resolutions'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n writePackageIfChanged();\n return this;\n },\n\n checkExactDevVersions({ onlyWarnsFor } = {}) {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactDevVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n checkExactVersions(pkg, pkgPathName, ['devDependencies'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n writePackageIfChanged();\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 isLibrary = false,\n onlyWarnsFor: deprecatedOnlyWarnsFor,\n missingOnlyWarnsFor = deprecatedOnlyWarnsFor,\n invalidOnlyWarnsFor = deprecatedOnlyWarnsFor,\n internalMissingConfigName = deprecatedOnlyWarnsFor\n ? 'onlyWarnsFor'\n : 'missingOnlyWarnsFor',\n internalInvalidConfigName = deprecatedOnlyWarnsFor\n ? 'onlyWarnsFor'\n : 'invalidOnlyWarnsFor',\n } = {}) {\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 checkDirectPeerDependencies(\n isLibrary,\n pkg,\n pkgPathName,\n getDependencyPackageJson,\n missingOnlyWarnsForCheck,\n invalidOnlyWarnsForCheck,\n );\n return this;\n },\n\n checkDirectDuplicateDependencies({\n onlyWarnsFor,\n internalConfigName = 'onlyWarnsFor',\n } = {}) {\n checkDirectDuplicateDependencies(\n pkg,\n pkgPathName,\n 'dependencies',\n getDependencyPackageJson,\n createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor),\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 isLibrary = false,\n onlyWarnsForInPackage,\n onlyWarnsForInDependencies,\n allowRangeVersionsInDependencies = isLibrary,\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n exactVersionsOnlyWarnsFor,\n internalExactVersionsIgnore,\n checkResolutionMessage,\n } = {}) {\n let internalMissingPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n peerDependenciesOnlyWarnsFor;\n let internalInvalidPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n peerDependenciesOnlyWarnsFor;\n let internalDirectDuplicateDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n directDuplicateDependenciesOnlyWarnsFor;\n\n if (onlyWarnsForInPackage) {\n if (exactVersionsOnlyWarnsFor) {\n console.warn(\n 'Ignoring \"exactVersionsOnlyWarnsFor\" as \"onlyWarnsForInPackage\" is used.',\n );\n }\n exactVersionsOnlyWarnsFor = onlyWarnsForInPackage.exactVersions || [];\n }\n if (onlyWarnsForInDependencies) {\n if (peerDependenciesOnlyWarnsFor) {\n console.warn(\n 'Ignoring \"peerDependenciesOnlyWarnsFor\" as \"onlyWarnsFor\" is used.',\n );\n }\n if (directDuplicateDependenciesOnlyWarnsFor) {\n console.warn(\n 'Ignoring \"directDuplicateDependenciesOnlyWarnsFor\" as \"onlyWarnsFor\" is used.',\n );\n }\n\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 isLibrary,\n missingOnlyWarnsFor: internalMissingPeerDependenciesOnlyWarnsFor,\n invalidOnlyWarnsFor: internalInvalidPeerDependenciesOnlyWarnsFor,\n internalMissingConfigName: peerDependenciesOnlyWarnsFor\n ? 'peerDependenciesOnlyWarnsFor'\n : 'onlyWarnsForInDependencies.missingPeerDependency',\n internalInvalidConfigName: peerDependenciesOnlyWarnsFor\n ? 'peerDependenciesOnlyWarnsFor'\n : 'onlyWarnsForInDependencies.invalidPeerDependencyVersion',\n });\n\n this.checkDirectDuplicateDependencies({\n onlyWarnsFor: internalDirectDuplicateDependenciesOnlyWarnsFor,\n internalConfigName: directDuplicateDependenciesOnlyWarnsFor\n ? 'directDuplicateDependenciesOnlyWarnsFor'\n : 'onlyWarnsForInDependencies.duplicateDirectDependency',\n });\n\n return this;\n },\n\n checkIdenticalVersionsThanDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\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 return this;\n },\n\n checkIdenticalVersionsThanDevDependencyOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\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 return this;\n },\n\n checkSatisfiesVersionsFromDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n return this;\n },\n\n checkSatisfiesVersionsInDevDependenciesOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.devDependencies,\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 const depPkg1 = getDependencyPackageJson(depName1);\n const depPkg2 = getDependencyPackageJson(depName2);\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg1,\n depPkg1.dependencies,\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg1,\n depPkg1.dependencies,\n );\n }\n return this;\n },\n };\n}\n","/* eslint-disable max-lines */\nimport fs from 'fs';\nimport path from 'path';\nimport glob from 'glob';\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 reportNotWarnedForMapping,\n} from './utils/createReportError';\nimport type {\n OnlyWarnsFor,\n OnlyWarnsForOptionalDependencyMapping,\n} 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\n '*' | string,\n OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n>;\n\ntype OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption =\n Record;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n isLibrary?: (pkgName: string) => boolean;\n allowRangeVersionsInLibraries?: boolean;\n /** @deprecated use onlyWarnsFor */\n peerDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n /** @deprecated use onlyWarnsFor */\n directDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n /** @deprecated use onlyWarnsForInRootDependencies */\n onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\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\nexport function createCheckPackageWithWorkspaces(\n pkgDirectoryPath = '.',\n createCheckPackageOptions: CreateCheckPackageOptions = {},\n): CheckPackageWithWorkspacesApi {\n const checkPackage = createCheckPackage(\n pkgDirectoryPath,\n createCheckPackageOptions,\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 = glob.sync(`${pkgDirname}/${pattern}`);\n match.forEach((pathMatch) => {\n const stat = fs.statSync(pathMatch);\n if (!stat.isDirectory()) return;\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 subPkgDirectoryPath,\n createCheckPackageOptions,\n );\n return [checkPkg.pkg.name, checkPkg];\n }),\n );\n\n return {\n checkRecommended({\n isLibrary = () => false,\n allowRangeVersionsInLibraries = true,\n onlyWarnsForInRootPackage,\n onlyWarnsForInMonorepoPackages,\n onlyWarnsForInDependencies,\n onlyWarnsForInRootDependencies = onlyWarnsForInDependencies,\n onlyWarnsForInMonorepoPackagesDependencies = onlyWarnsForInDependencies\n ? { '*': onlyWarnsForInDependencies }\n : {},\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n } = {}) {\n if (peerDependenciesOnlyWarnsFor) {\n console.warn(\n 'Option \"peerDependenciesOnlyWarnsFor\" in checkRecommended() is deprecated. Use \"onlyWarnsForInDependencies\" instead.',\n );\n }\n if (directDuplicateDependenciesOnlyWarnsFor) {\n console.warn(\n 'Option \"directDuplicateDependenciesOnlyWarnsFor\" in checkRecommended() is deprecated. Use \"onlyWarnsForInDependencies\" instead.',\n );\n }\n\n checkPackage.checkNoDependencies();\n checkPackage.checkRecommended({\n isLibrary: false,\n onlyWarnsForInPackage: onlyWarnsForInRootPackage,\n onlyWarnsForInDependencies: onlyWarnsForInRootDependencies,\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\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 const isPackageALibrary = isLibrary(id);\n checkSubPackage.checkRecommended({\n isLibrary: isPackageALibrary,\n allowRangeVersionsInDependencies: isPackageALibrary\n ? allowRangeVersionsInLibraries\n : false,\n onlyWarnsForInPackage: onlyWarnsForInMonorepoPackages\n ? {\n ...onlyWarnsForInMonorepoPackages['*'],\n ...onlyWarnsForInMonorepoPackages[checkSubPackage.pkg.name],\n }\n : undefined,\n onlyWarnsForInDependencies:\n onlyWarnsForInMonorepoPackagesDependencies[\n checkSubPackage.pkg.name\n ],\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\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 '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 'devDependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\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 '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","logMessage","msgTitle","msgInfo","onlyWarns","console","error","chalk","yellow","red","createReportError","title","pkgPathName","reportError","cyan","process","exitCode","reportNotWarnedFor","onlyWarnsForCheck","notWarnedFor","getNotWarnedFor","length","configName","map","depName","join","reportNotWarnedForMapping","onlyWarnsForMappingCheck","notWarnedForMapping","forEach","depNameOrStar","checkDuplicateDependencies","pkg","depType","searchIn","depPkg","dependencies","searchInExisting","filter","type","depKey","range","versionsIn","versions","version","index","startsWith","semver","satisfies","includePrerelease","intersects","resolutions","versionInType","name","shouldWarnsFor","checkDirectDuplicateDependencies","getDependencyPackageJson","reportErrorNamePrefix","createFor","checkPeerDependencies","allowedPeerIn","missingOnlyWarnsForCheck","invalidOnlyWarnsForCheck","peerDependencies","peerDependenciesMeta","allowedPeerInExisting","allowedPeerInType","peerDepName","allowedPeerInExistingType","peerDependenciesMetaPeerDep","optional","versionsInType","minVersionOfVersion","minVersion","regularDependencyTypes","getAllowedPeerInFromType","depPkgType","isLibrary","checkDirectPeerDependencies","isVersionRange","checkExactVersions","types","internalExactVersionsIgnore","tryToAutoFix","pkgDependencies","dependencyName","versionConst","match","exec","Error","realVersion","includes","shouldOnlyWarn","resolvedDep","slice","checkIdenticalVersions","deps","depConfigArrayOrObject","depConfig","Array","isArray","depKeyType","pkgDependenciesType","depKeyIdentical","value","checkIdenticalVersionsThanDependency","depKeys","checkNoDependencies","pkgPath","moveToSuggestion","checkResolutionsHasExplanation","checkMessage","pkgResolutions","pkgResolutionsExplained","resolutionsExplained","checkResolutionsVersionsMatch","resolutionDepVersion","checkSatisfiesVersionsFromDependency","readPkgJson","packagePath","JSON","parse","readFileSync","writePkgJson","writeFileSync","stringify","createGetDependencyPackageJson","pkgDirname","nodeModulesPackagePathCache","Map","pkgDepName","existing","get","require","resolve","paths","err","code","message","matchPackageJson","set","createOnlyWarnsForArrayCheck","onlyWarnsFor","Set","delete","isMapping","createOnlyWarnsForMappingCheck","fromEntries","entryKey","entryValue","key","size","dependencyNameLevel1","arrayOnlyWarnsForCheck","createCheckPackage","pkgDirectoryPath","path","copyPkg","env","CI","CHECK_PACKAGE_DEPENDENCIES_ENABLE_CI_AUTOFIX","writePackageIfChanged","util","isDeepStrictEqual","allowRangeVersionsInDependencies","checkExactVersionsForLibrary","checkExactDevVersions","deprecatedOnlyWarnsFor","missingOnlyWarnsFor","invalidOnlyWarnsFor","internalMissingConfigName","internalInvalidConfigName","internalConfigName","undefined","checkRecommended","onlyWarnsForInPackage","onlyWarnsForInDependencies","peerDependenciesOnlyWarnsFor","directDuplicateDependenciesOnlyWarnsFor","exactVersionsOnlyWarnsFor","checkResolutionMessage","internalMissingPeerDependenciesOnlyWarnsFor","internalInvalidPeerDependenciesOnlyWarnsFor","internalDirectDuplicateDependenciesOnlyWarnsFor","warn","exactVersions","dependencyNameOrSpecialKey","onlyWarnsForValue","duplicateDirectDependency","missingPeerDependency","invalidPeerDependencyVersion","devDependencies","checkIdenticalVersionsThanDevDependencyOfDependency","checkSatisfiesVersionsInDevDependenciesOfDependency","checkSatisfiesVersionsBetweenDependencies","depName1","depName2","depPkg1","depPkg2","createCheckPackageWithWorkspaces","createCheckPackageOptions","checkPackage","pkgWorkspaces","workspaces","packages","workspacePackagesPaths","pattern","glob","sync","pathMatch","stat","fs","statSync","isDirectory","subPkgDirectoryPath","relative","cwd","push","checksWorkspaces","checkPkg","allowRangeVersionsInLibraries","onlyWarnsForInRootPackage","onlyWarnsForInMonorepoPackages","onlyWarnsForInRootDependencies","onlyWarnsForInMonorepoPackagesDependencies","monorepoDirectDuplicateDependenciesOnlyWarnsFor","monorepoDirectDuplicateDependenciesOnlyWarnsForCheck","previousCheckedWorkspaces","checkSubPackage","id","isPackageALibrary","reportMonorepoDDDError","previousCheckSubPackage","forRoot","callback","for","packageCheck"],"mappings":"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"} \ No newline at end of file diff --git a/src/check-package-with-workspaces.ts b/src/check-package-with-workspaces.ts index 169c9292..77ae8c0b 100644 --- a/src/check-package-with-workspaces.ts +++ b/src/check-package-with-workspaces.ts @@ -156,6 +156,7 @@ export function createCheckPackageWithWorkspaces( monorepoDirectDuplicateDependenciesOnlyWarnsFor, ); + const previousCheckedWorkspaces = new Map(); checksWorkspaces.forEach((checkSubPackage, id) => { const isPackageALibrary = isLibrary(id); checkSubPackage.checkRecommended({ @@ -183,6 +184,7 @@ export function createCheckPackageWithWorkspaces( 'Monorepo Direct Duplicate Dependencies', checkSubPackage.pkgPathName, ); + // Root checkDuplicateDependencies( reportMonorepoDDDError, checkSubPackage.pkg, @@ -193,6 +195,41 @@ export function createCheckPackageWithWorkspaces( checkSubPackage.pkg.name, ), ); + // previous packages + previousCheckedWorkspaces.forEach((previousCheckSubPackage) => { + checkDuplicateDependencies( + reportMonorepoDDDError, + checkSubPackage.pkg, + 'devDependencies', + ['dependencies', 'devDependencies'], + previousCheckSubPackage.pkg, + monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor( + checkSubPackage.pkg.name, + ), + ); + checkDuplicateDependencies( + reportMonorepoDDDError, + checkSubPackage.pkg, + 'dependencies', + ['dependencies', 'devDependencies'], + previousCheckSubPackage.pkg, + monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor( + checkSubPackage.pkg.name, + ), + ); + checkDuplicateDependencies( + reportMonorepoDDDError, + checkSubPackage.pkg, + 'peerDependencies', + ['peerDependencies'], + previousCheckSubPackage.pkg, + monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor( + checkSubPackage.pkg.name, + ), + ); + }); + + previousCheckedWorkspaces.set(id, checkSubPackage); }); reportNotWarnedForMapping( createReportError(