diff --git a/dist/check-package.d.ts b/dist/check-package.d.ts index 690cc959..52e483eb 100644 --- a/dist/check-package.d.ts +++ b/dist/check-package.d.ts @@ -1,6 +1,6 @@ import type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation'; import type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson'; -import type { DependencyName, DependencyTypes, PackageJson } from './utils/packageTypes'; +import type { DependenciesRanges, DependencyName, DependencyTypes, PackageJson } from './utils/packageTypes'; import type { OnlyWarnsForOptionalDependencyMapping, OnlyWarnsFor } from './utils/warnForUtils'; export interface CreateCheckPackageOptions { /** @internal */ @@ -157,6 +157,21 @@ export interface CheckPackageApi { dependencies?: string[]; devDependencies?: string[]; }) => CheckPackageApi; + /** + * Check versions in a dependency + * Also useable to check if a dependency is not present + * + * @example + * Checking if `@lerna/version` has no dependency `@nrwl/devkit` + * ``` + * .checkSatisfiesVersionsInDependency('@lerna/version', { + * dependencies: { + * '@nrwl/devkit': null, + * }, + * }) + * ``` + */ + checkSatisfiesVersionsInDependency: (depName: string, dependenciesRanges: DependenciesRanges) => CheckPackageApi; } export declare function createCheckPackage(pkgDirectoryPath?: string, { internalWorkspacePkgDirectoryPath }?: CreateCheckPackageOptions): CheckPackageApi; //# sourceMappingURL=check-package.d.ts.map \ No newline at end of file diff --git a/dist/check-package.d.ts.map b/dist/check-package.d.ts.map index ce0cea97..4a76e90a 100644 --- a/dist/check-package.d.ts.map +++ b/dist/check-package.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"check-package.d.ts","sourceRoot":"","sources":["../src/check-package.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"check-package.d.ts","sourceRoot":"","sources":["../src/check-package.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/checks/checkSatisfiesVersionsInDependency.d.ts b/dist/checks/checkSatisfiesVersionsInDependency.d.ts new file mode 100644 index 00000000..271ba2c0 --- /dev/null +++ b/dist/checks/checkSatisfiesVersionsInDependency.d.ts @@ -0,0 +1,8 @@ +import { createReportError } from '../utils/createReportError'; +import type { DependenciesRanges, PackageJson } from '../utils/packageTypes'; +interface CheckSatisfiesVersionsInDependencyOptions { + customCreateReportError?: typeof createReportError; +} +export declare function checkSatisfiesVersionsInDependency(pkgPathName: string, depPkg: PackageJson, dependenciesRanges: DependenciesRanges, { customCreateReportError, }?: CheckSatisfiesVersionsInDependencyOptions): void; +export {}; +//# sourceMappingURL=checkSatisfiesVersionsInDependency.d.ts.map \ No newline at end of file diff --git a/dist/checks/checkSatisfiesVersionsInDependency.d.ts.map b/dist/checks/checkSatisfiesVersionsInDependency.d.ts.map new file mode 100644 index 00000000..3c899b40 --- /dev/null +++ b/dist/checks/checkSatisfiesVersionsInDependency.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"checkSatisfiesVersionsInDependency.d.ts","sourceRoot":"","sources":["../../src/checks/checkSatisfiesVersionsInDependency.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE7E,UAAU,yCAAyC;IACjD,uBAAuB,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACpD;AAED,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,kBAAkB,EAAE,kBAAkB,EACtC,EACE,uBAA2C,GAC5C,GAAE,yCAA8C,GAChD,IAAI,CA+CN"} \ No newline at end of file diff --git a/dist/index-node14.mjs b/dist/index-node14.mjs index 4ccb1ae6..eda6d7fa 100644 --- a/dist/index-node14.mjs +++ b/dist/index-node14.mjs @@ -408,6 +408,35 @@ function checkSatisfiesVersionsFromDependency(pkg, pkgPathName, type, depKeys, d }); } +function checkSatisfiesVersionsInDependency(pkgPathName, depPkg, dependenciesRanges, { + customCreateReportError = createReportError +} = {}) { + const reportError = customCreateReportError(`Satisfies Versions In Dependency "${depPkg.name}"`, pkgPathName); + + for (const [dependenciesType, dependenciesTypeRanges] of getEntries(dependenciesRanges)) { + if (!dependenciesTypeRanges) return; + const dependencies = depPkg[dependenciesType]; + + for (const [dependencyName, dependencyRange] of getEntries(dependenciesTypeRanges)) { + if (dependencyRange == null) { + if (dependencies?.[dependencyName]) { + reportError(`Invalid "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, 'it should not be present'); + } + } else if (!dependencies) { + reportError(`Missing "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, `"${dependenciesType}" is missing in "${depPkg.name}"`); + } else if (!dependencies[dependencyName]) { + reportError(`Missing "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, `"${dependencyName}" is missing in ${dependenciesType}`); + } else if (!semver.satisfies(dependencies[dependencyName], dependencyRange, { + includePrerelease: true + }) && !semver.intersects(dependencies[dependencyName], dependencyRange, { + includePrerelease: true + })) { + reportError(`Invalid "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, `"${dependencies[dependencyName]}" does not satisfies "${dependencyRange}"`); + } + } + } +} + function readPkgJson(packagePath) { return JSON.parse(readFileSync(packagePath, 'utf8')); } @@ -878,6 +907,14 @@ function createCheckPackage(pkgDirectoryPath = '.', { } })); return this; + }, + + checkSatisfiesVersionsInDependency(depName, dependenciesRanges) { + jobs.push(new Job(this.checkSatisfiesVersionsInDependency.name, async () => { + const depPkg = await getDependencyPackageJson(depName); + checkSatisfiesVersionsInDependency(pkgPathName, depPkg, dependenciesRanges); + })); + return this; } }; diff --git a/dist/index-node14.mjs.map b/dist/index-node14.mjs.map index 7c77015c..4aa60965 100644 --- a/dist/index-node14.mjs.map +++ b/dist/index-node14.mjs.map @@ -1 +1 @@ -{"version":3,"file":"index-node14.mjs","sources":["../src/utils/object.ts","../src/utils/createReportError.ts","../src/checks/checkDuplicateDependencies.ts","../src/checks/checkDirectDuplicateDependencies.ts","../src/checks/checkPeerDependencies.ts","../src/checks/checkDirectPeerDependencies.ts","../src/checks/checkExactVersions.ts","../src/checks/checkIdenticalVersions.ts","../src/checks/checkIdenticalVersionsThanDependency.ts","../src/checks/checkNoDependencies.ts","../src/checks/checkResolutionsHasExplanation.ts","../src/checks/checkResolutionsVersionsMatch.ts","../src/checks/checkSatisfiesVersions.ts","../src/checks/checkSatisfiesVersionsFromDependency.ts","../src/utils/pkgJsonUtils.ts","../src/utils/createGetDependencyPackageJson.ts","../src/utils/warnForUtils.ts","../src/check-package.ts","../src/check-package-with-workspaces.ts"],"sourcesContent":["export const getKeys = (o: T): (keyof T)[] =>\n Object.keys(o) as (keyof T)[];\n\nexport const getEntries = (o: T): [keyof T, T[keyof T]][] =>\n Object.entries(o) as unknown as [keyof T, T[keyof T]][];\n","/* eslint-disable no-console */\n\nimport chalk from 'chalk';\nimport { getEntries } from './object';\nimport type {\n OnlyWarnsForCheck,\n OnlyWarnsForMappingCheck,\n} from './warnForUtils';\n\nexport type ReportError = (\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n) => void;\n\nlet titleDisplayed: string | null = null;\nlet pkgPathDisplayed: string | null = null;\n\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 async function checkDirectDuplicateDependencies(\n pkg: PackageJson,\n pkgPathName: string,\n depType: DependencyTypes,\n getDependencyPackageJson: GetDependencyPackageJson,\n onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n reportErrorNamePrefix = '',\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError(\n `${reportErrorNamePrefix}Direct Duplicate Dependencies`,\n pkgPathName,\n );\n\n const checks: {\n type: DependencyTypes;\n searchIn: DependencyTypes[];\n }[] = [\n {\n type: 'devDependencies',\n searchIn: ['devDependencies', 'dependencies'],\n },\n { type: 'dependencies', searchIn: ['devDependencies', 'dependencies'] },\n ];\n\n await Promise.all(\n checks.map(async ({ type, searchIn }) => {\n const dependencies = pkg[type];\n\n if (!dependencies) return;\n for (const depName of getKeys(dependencies)) {\n const depPkg = await getDependencyPackageJson(depName);\n checkDuplicateDependencies(\n reportError,\n pkg,\n depType,\n searchIn,\n depPkg,\n onlyWarnsForCheck.createFor(depName),\n );\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 continue;\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 return isLibrary\n ? ['dependencies', 'peerDependencies']\n : ['devDependencies', 'dependencies'];\n case 'optionalDependencies':\n return isLibrary\n ? ['dependencies', 'optionalDependencies', 'peerDependencies']\n : ['devDependencies', 'dependencies'];\n }\n};\n\nexport async function checkDirectPeerDependencies(\n isLibrary: boolean,\n pkg: PackageJson,\n pkgPathName: string,\n getDependencyPackageJson: GetDependencyPackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError('Peer Dependencies', pkgPathName);\n\n await Promise.all(\n regularDependencyTypes.map(async (depType) => {\n const dependencies = pkg[depType];\n if (!dependencies) return;\n for (const depName of getKeys(dependencies)) {\n const depPkg = await 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\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 customCreateReportError?: typeof createReportError;\n}\n\nconst isVersionRange = (version: string): boolean =>\n version.startsWith('^') || version.startsWith('~');\n\nexport async function checkExactVersions(\n pkg: PackageJson,\n pkgPathName: string,\n types: DependencyTypes[],\n {\n getDependencyPackageJson,\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckExactVersionsOptions,\n): Promise {\n const reportError = customCreateReportError('Exact versions', pkgPathName);\n\n for (const type of types) {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) continue;\n\n for (const [dependencyName, versionConst] of Object.entries(\n pkgDependencies,\n )) {\n let version = versionConst;\n if (version.startsWith('npm:')) {\n const match = /^npm:.*@(.*)$/.exec(version);\n if (!match) throw new Error(`Invalid version match: ${version}`);\n const [, realVersion] = match;\n version = realVersion;\n }\n\n if (isVersionRange(version)) {\n if (internalExactVersionsIgnore?.includes(dependencyName)) {\n continue;\n }\n const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName);\n if (!shouldOnlyWarn && tryToAutoFix && getDependencyPackageJson) {\n let resolvedDep;\n try {\n resolvedDep = await 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 customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Identical Versions',\n pkgPathName,\n );\n\n getKeys(deps).forEach((depKey) => {\n const version = pkgDependencies[depKey];\n if (!version) {\n reportError(`Unexpected missing ${type} for \"${depKey}\".`);\n return;\n }\n\n const depConfigArrayOrObject = deps[depKey];\n const depConfig = Array.isArray(depConfigArrayOrObject)\n ? { [type]: depConfigArrayOrObject }\n : depConfigArrayOrObject;\n\n getKeys(depConfig).forEach((depKeyType) => {\n const pkgDependenciesType = pkg[depKeyType] || {};\n depConfig[depKeyType]?.forEach((depKeyIdentical) => {\n const value = pkgDependenciesType[depKeyIdentical];\n if (!value) {\n reportError(\n `Missing \"${depKeyIdentical}\" in ${depKeyType}`,\n `it should be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKeyIdentical}\" in ${depKeyType}`,\n `expecting \"${value}\" be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n });\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersionsThanDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n `Same Versions than ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const version = dependencies[depKey];\n if (!version) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n if (version.startsWith('^') || version.startsWith('~')) {\n reportError(\n `Unexpected range dependency in \"${depPkg.name}\" for \"${depKey}\"`,\n 'perhaps use checkSatisfiesVersionsFromDependency() instead.',\n );\n return;\n }\n\n const value = pkgDependencies[depKey];\n\n if (!value) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `expecting to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `expecting \"${value}\" to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\n\nexport function checkNoDependencies(\n pkg: PackageJson,\n pkgPath: string,\n type: DependencyTypes = 'dependencies',\n moveToSuggestion: DependencyTypes = 'devDependencies',\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n const reportError = customCreateReportError('No dependencies', pkgPath);\n reportError(\n `Unexpected ${type}`,\n `you should move them in ${moveToSuggestion}`,\n );\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport type CheckResolutionMessage = (\n depKey: string,\n resolutionExplainedMessage: string,\n checkMessageHelpers: {\n getDependencyPackageJson: GetDependencyPackageJson;\n },\n) => string | undefined;\n\nexport function checkResolutionsHasExplanation(\n pkg: PackageJson,\n pkgPathName: string,\n checkMessage: CheckResolutionMessage,\n getDependencyPackageJson: GetDependencyPackageJson,\n customCreateReportError = createReportError,\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n const reportError = customCreateReportError(\n 'Resolutions has explanation',\n pkgPathName,\n );\n\n Object.keys(pkgResolutions).forEach((depKey) => {\n if (!pkgResolutionsExplained[depKey]) {\n reportError(`Missing \"${depKey}\" in resolutionsExplained.`);\n }\n });\n\n Object.keys(pkgResolutionsExplained).forEach((depKey) => {\n if (!pkgResolutions[depKey]) {\n reportError(\n `Found \"${depKey}\" in resolutionsExplained but not in resolutions.`,\n );\n } else {\n const error = checkMessage(depKey, pkgResolutionsExplained[depKey], {\n getDependencyPackageJson,\n });\n if (error) {\n reportError(\n `Invalid message for \"${depKey}\" in resolutionsExplained`,\n `${error}.`,\n );\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport interface CheckResolutionsVersionsMatchOptions {\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkResolutionsVersionsMatch(\n pkg: PackageJson,\n pkgPathName: string,\n {\n tryToAutoFix,\n customCreateReportError = createReportError,\n }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const reportError = customCreateReportError(\n 'Resolutions match other dependencies',\n pkgPathName,\n );\n\n Object.entries(pkgResolutions).forEach(([depName, resolutionDepVersion]) => {\n (['dependencies', 'devDependencies'] as const).forEach((depType) => {\n const range = pkg?.[depType]?.[depName];\n\n if (!range) return;\n\n if (\n !semver.satisfies(resolutionDepVersion, range, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n pkg[depType]![depName] = resolutionDepVersion;\n } else {\n reportError(\n `Invalid \"${depName}\" in ${depType}`,\n `expecting \"${range}\" be \"${resolutionDepVersion}\" from resolutions.`,\n );\n }\n }\n });\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckSatisfiesVersionsOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n dependenciesRanges: Record,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsOptions = {},\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Satisfies Versions',\n pkgPathName,\n );\n\n Object.entries(dependenciesRanges).forEach(([depKey, range]) => {\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `\"${version}\" (in \"${depKey}\") should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\n}\n","import 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 customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\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 { resolve as importResolve } from 'import-meta-resolve';\nimport type { PackageJson } from './packageTypes';\n\nexport function readPkgJson(packagePath: string): PackageJson {\n return JSON.parse(readFileSync(packagePath, 'utf8')) as PackageJson;\n}\n\nexport function writePkgJson(packagePath: string, pkg: PackageJson): void {\n writeFileSync(packagePath, JSON.stringify(pkg, null, 2));\n}\n\n/** @internal */\nexport async function internalLoadPackageJsonFromNodeModules(\n pkgDepName: string,\n pkgDirname: string,\n): Promise {\n const packageUrl = await importResolve(\n `${pkgDepName}/package.json`,\n `file://${pkgDirname}/package.json`,\n );\n return readPkgJson(\n packageUrl.replace(\n process.platform === 'win32' ? /^file:\\/{3}/ : /^file:\\/\\//,\n '',\n ),\n );\n}\n","import type { PackageJson } from './packageTypes';\nimport {\n internalLoadPackageJsonFromNodeModules,\n readPkgJson,\n} from './pkgJsonUtils';\n\nexport type GetDependencyPackageJson = (\n pkgDepName: string,\n) => Promise;\n\ntype NodeModulesPackagePathCache = Map;\n\ninterface CreateGetDependencyPackageJsonOptions {\n pkgDirname: string;\n nodeModulesPackagePathCache?: NodeModulesPackagePathCache;\n /** @internal */\n internalCustomLoadPackageJsonFromNodeModules?: typeof internalLoadPackageJsonFromNodeModules;\n /** @internal */\n internalReadPkgJson?: typeof readPkgJson;\n}\n\nexport function createGetDependencyPackageJson({\n pkgDirname,\n nodeModulesPackagePathCache = new Map(),\n internalCustomLoadPackageJsonFromNodeModules = internalLoadPackageJsonFromNodeModules,\n internalReadPkgJson = readPkgJson,\n}: CreateGetDependencyPackageJsonOptions): GetDependencyPackageJson {\n return async (pkgDepName) => {\n const existing = nodeModulesPackagePathCache.get(pkgDepName);\n if (existing) return existing;\n let pkg: PackageJson;\n if (pkgDepName.startsWith('.')) {\n const packagePath = `${pkgDirname}/${pkgDepName}/package.json`;\n pkg = internalReadPkgJson(packagePath);\n } else {\n try {\n pkg = await internalCustomLoadPackageJsonFromNodeModules(\n pkgDepName,\n pkgDirname,\n );\n } catch (err: unknown) {\n if (!(err instanceof Error)) throw err;\n\n if (\n (err as NodeJS.ErrnoException).code !==\n 'ERR_PACKAGE_PATH_NOT_EXPORTED'\n ) {\n throw err;\n }\n\n const match = / in (.*[/\\\\]package\\.json)\\s+imported from/.exec(\n err.message,\n );\n\n if (match) {\n const [, matchPackageJson] = match;\n pkg = internalReadPkgJson(matchPackageJson);\n } else {\n throw err;\n }\n }\n }\n nodeModulesPackagePathCache.set(pkgDepName, pkg);\n return pkg;\n };\n}\n","import { getEntries } from './object';\n\nexport type OnlyWarnsFor = string[];\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type OnlyWarnsForDependencyMapping = Record;\nexport type OnlyWarnsForOptionalDependencyMapping =\n | 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 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 { checkSatisfiesVersions } from './checks/checkSatisfiesVersions';\nimport { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency';\nimport type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { createGetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { getEntries } from './utils/object';\nimport type {\n DependencyName,\n DependencyTypes,\n PackageJson,\n} from './utils/packageTypes';\nimport { readPkgJson, writePkgJson } from './utils/pkgJsonUtils';\nimport type {\n OnlyWarnsForOptionalDependencyMapping,\n OnlyWarnsFor,\n OnlyWarnsForDependencyMapping,\n} from './utils/warnForUtils';\nimport {\n createOnlyWarnsForArrayCheck,\n createOnlyWarnsForMappingCheck,\n} from './utils/warnForUtils';\n\nexport interface CreateCheckPackageOptions {\n /** @internal */\n internalWorkspacePkgDirectoryPath?: string;\n}\n\nexport interface CheckDirectPeerDependenciesOptions {\n isLibrary?: boolean;\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 /** @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 run: () => Promise;\n\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\n checkResolutionsVersionsMatch: () => CheckPackageApi;\n\n checkExactDevVersions: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n\n checkNoDependencies: (\n type?: DependencyTypes,\n moveToSuggestion?: DependencyTypes,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectPeerDependencies({\n * invalidOnlyWarnsFor: ['semver'],\n * })\n * ```\n */\n checkDirectPeerDependencies: (\n options?: CheckDirectPeerDependenciesOptions,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectDuplicateDependencies({\n * invalidOnlyWarnsFor: { '*': 'type-fest' },\n * })\n * ```\n */\n checkDirectDuplicateDependencies: (\n options?: CheckDirectDuplicateDependenciesOptions,\n ) => CheckPackageApi;\n\n checkResolutionsHasExplanation: (\n checkMessage?: CheckResolutionMessage,\n ) => CheckPackageApi;\n\n checkRecommended: (options?: CheckRecommendedOptions) => CheckPackageApi;\n\n /**\n * @example\n * Check that your package.json contains the same version of @babel/core than react-scripts, both in resolutions and devDependencies\n * ```\n * .checkIdenticalVersionsThanDependency('react-scripts', {\n * resolutions: ['@babel/core'],\n * devDependencies: ['@babel/core'],\n * })\n * ```\n */\n checkIdenticalVersionsThanDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkIdenticalVersionsThanDevDependencyOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range passed in config\n *\n * @example\n * ```\n * .checkSatisfiesVersions({\n * devDependencies: {\n * eslint: '^8.0.0'\n * },\n * })\n * ```\n */\n checkSatisfiesVersions: (\n dependencies: Partial<\n Record>\n >,\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range set in another dependencies\n * @example\n * ```\n * .checkSatisfiesVersionsFromDependency('@pob/eslint-config-typescript', {\n * devDependencies: [\n * '@typescript-eslint/eslint-plugin',\n * '@typescript-eslint/parser',\n * ],\n * })\n * ```\n */\n checkSatisfiesVersionsFromDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkSatisfiesVersionsInDevDependenciesOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies have the exact same version that another dependency also present in your package.json\n * @example\n * The react-dom version should match react, so this check will ensure it does\n * ```\n * .checkIdenticalVersions({\n * dependencies: {\n * react: {\n * dependencies: ['react-dom'],\n * devDependencies: ['react-test-renderer'],\n * },\n * },\n * })\n * ```\n */\n checkIdenticalVersions: (dependencies: {\n resolutions?: Record;\n dependencies?: Record;\n devDependencies?: Record;\n }) => CheckPackageApi;\n\n checkSatisfiesVersionsBetweenDependencies: (\n depName1: string,\n depName2: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n}\n\nexport function createCheckPackage(\n pkgDirectoryPath = '.',\n { internalWorkspacePkgDirectoryPath }: 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 let tryToAutoFix = false;\n\n if (process.argv.slice(2).includes('--fix')) {\n tryToAutoFix = true;\n }\n\n const writePackageIfChanged = (): void => {\n if (!tryToAutoFix) return;\n if (util.isDeepStrictEqual(pkg, copyPkg)) return;\n writePkgJson(pkgPath, pkg);\n };\n\n const getDependencyPackageJson = createGetDependencyPackageJson({\n pkgDirname,\n });\n\n let runCalled = false;\n\n if (!internalWorkspacePkgDirectoryPath) {\n process.on('beforeExit', () => {\n if (!runCalled) {\n throw new Error('Call .run() and await the result.');\n }\n });\n }\n\n class Job {\n name: string;\n\n fn: () => Promise;\n\n constructor(name: string, fn: () => Promise) {\n this.name = name;\n this.fn = fn;\n }\n\n async run(): Promise {\n try {\n await this.fn();\n } catch (err) {\n throw new Error(`${this.name} failed: ${(err as Error).message}`);\n }\n }\n }\n\n const jobs: Job[] = [];\n\n return {\n async run() {\n runCalled = true;\n // TODO parallel\n for (const job of jobs) {\n await job.run();\n }\n writePackageIfChanged();\n },\n\n pkg,\n pkgDirname,\n pkgPathName,\n getDependencyPackageJson,\n checkExactVersions({\n onlyWarnsFor,\n internalExactVersionsIgnore,\n allowRangeVersionsInDependencies = true,\n } = {}) {\n jobs.push(\n new Job(this.checkExactVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(\n pkg,\n pkgPathName,\n !allowRangeVersionsInDependencies\n ? ['dependencies', 'devDependencies', 'resolutions']\n : ['devDependencies', 'resolutions'],\n {\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n getDependencyPackageJson,\n tryToAutoFix,\n },\n );\n }),\n );\n return this;\n },\n\n checkResolutionsVersionsMatch() {\n checkResolutionsVersionsMatch(pkg, pkgPathName, {\n tryToAutoFix,\n });\n return this;\n },\n\n checkExactDevVersions({ onlyWarnsFor } = {}) {\n jobs.push(\n new Job(this.checkExactDevVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactDevVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(pkg, pkgPathName, ['devDependencies'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n }),\n );\n return this;\n },\n\n checkNoDependencies(\n type = 'dependencies',\n moveToSuggestion = 'devDependencies',\n ) {\n checkNoDependencies(pkg, pkgPathName, type, moveToSuggestion);\n return this;\n },\n\n checkDirectPeerDependencies({\n isLibrary = false,\n missingOnlyWarnsFor,\n invalidOnlyWarnsFor,\n internalMissingConfigName = 'missingOnlyWarnsFor',\n internalInvalidConfigName = 'invalidOnlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectPeerDependencies.name, async () => {\n const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck(\n internalMissingConfigName,\n missingOnlyWarnsFor,\n );\n const invalidOnlyWarnsForCheck =\n internalInvalidConfigName === internalMissingConfigName\n ? missingOnlyWarnsForCheck\n : createOnlyWarnsForMappingCheck(\n internalInvalidConfigName,\n invalidOnlyWarnsFor,\n );\n await checkDirectPeerDependencies(\n isLibrary,\n pkg,\n pkgPathName,\n getDependencyPackageJson,\n missingOnlyWarnsForCheck,\n invalidOnlyWarnsForCheck,\n );\n }),\n );\n return this;\n },\n\n checkDirectDuplicateDependencies({\n onlyWarnsFor,\n internalConfigName = 'onlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectDuplicateDependencies.name, async () => {\n await checkDirectDuplicateDependencies(\n pkg,\n pkgPathName,\n 'dependencies',\n getDependencyPackageJson,\n createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor),\n );\n }),\n );\n return this;\n },\n\n checkResolutionsHasExplanation(\n checkMessage: CheckResolutionMessage = (depKey, message) => undefined,\n ) {\n checkResolutionsHasExplanation(\n pkg,\n pkgPathName,\n checkMessage,\n getDependencyPackageJson,\n );\n return this;\n },\n\n checkRecommended({\n isLibrary = false,\n onlyWarnsForInPackage,\n onlyWarnsForInDependencies,\n allowRangeVersionsInDependencies = isLibrary,\n internalExactVersionsIgnore,\n checkResolutionMessage,\n } = {}) {\n let internalMissingPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n let internalInvalidPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n let internalDirectDuplicateDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n\n const exactVersionsOnlyWarnsFor =\n onlyWarnsForInPackage?.exactVersions || [];\n\n if (onlyWarnsForInDependencies) {\n internalDirectDuplicateDependenciesOnlyWarnsFor = {};\n internalMissingPeerDependenciesOnlyWarnsFor = {};\n internalInvalidPeerDependenciesOnlyWarnsFor = {};\n\n getEntries(onlyWarnsForInDependencies).forEach(\n ([dependencyNameOrSpecialKey, onlyWarnsForValue]) => {\n if (onlyWarnsForValue.duplicateDirectDependency) {\n (\n internalDirectDuplicateDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.duplicateDirectDependency;\n }\n if (onlyWarnsForValue.missingPeerDependency) {\n (\n internalMissingPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.missingPeerDependency;\n }\n if (onlyWarnsForValue.invalidPeerDependencyVersion) {\n (\n internalInvalidPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.invalidPeerDependencyVersion;\n }\n },\n );\n }\n\n this.checkExactVersions({\n allowRangeVersionsInDependencies,\n onlyWarnsFor: exactVersionsOnlyWarnsFor,\n internalExactVersionsIgnore,\n });\n\n this.checkResolutionsVersionsMatch();\n this.checkResolutionsHasExplanation(checkResolutionMessage);\n\n this.checkDirectPeerDependencies({\n isLibrary,\n missingOnlyWarnsFor: internalMissingPeerDependenciesOnlyWarnsFor,\n invalidOnlyWarnsFor: internalInvalidPeerDependenciesOnlyWarnsFor,\n internalMissingConfigName:\n 'onlyWarnsForInDependencies.missingPeerDependency',\n internalInvalidConfigName:\n 'onlyWarnsForInDependencies.invalidPeerDependencyVersion',\n });\n\n this.checkDirectDuplicateDependencies({\n onlyWarnsFor: internalDirectDuplicateDependenciesOnlyWarnsFor,\n internalConfigName:\n 'onlyWarnsForInDependencies.duplicateDirectDependency',\n });\n\n return this;\n },\n\n checkIdenticalVersionsThanDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkIdenticalVersionsThanDependency.name, async () => {\n const depPkg = await getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkIdenticalVersionsThanDevDependencyOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsFromDependency.name, async () => {\n const depPkg = await getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkSatisfiesVersions(dependencies) {\n Object.entries(dependencies).forEach(\n ([dependencyType, dependenciesRanges]) => {\n checkSatisfiesVersions(\n pkg,\n pkgPathName,\n dependencyType as DependencyTypes,\n dependenciesRanges,\n );\n },\n );\n return this;\n },\n\n checkSatisfiesVersionsFromDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsFromDependency.name, async () => {\n const depPkg = await 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 }),\n );\n return this;\n },\n\n checkSatisfiesVersionsInDevDependenciesOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(\n this.checkSatisfiesVersionsInDevDependenciesOfDependency.name,\n async () => {\n const depPkg = await 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 },\n ),\n );\n return this;\n },\n\n checkIdenticalVersions({ resolutions, dependencies, devDependencies }) {\n if (resolutions) {\n checkIdenticalVersions(pkg, pkgPathName, 'resolutions', resolutions);\n }\n if (dependencies) {\n checkIdenticalVersions(pkg, pkgPathName, 'dependencies', dependencies);\n }\n if (devDependencies) {\n checkIdenticalVersions(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n );\n }\n return this;\n },\n\n checkSatisfiesVersionsBetweenDependencies(\n depName1,\n depName2,\n { dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(\n this.checkSatisfiesVersionsBetweenDependencies.name,\n async () => {\n const [depPkg1, depPkg2] = await Promise.all([\n getDependencyPackageJson(depName1),\n getDependencyPackageJson(depName2),\n ]);\n\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg1,\n 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 },\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 { OnlyWarnsForOptionalDependencyMapping } from './utils/warnForUtils';\nimport { createOnlyWarnsForMappingCheck } from './utils/warnForUtils';\n\ninterface OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n extends OnlyWarnsForInPackageCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsForInDependencyCheckPackageRecommendedOption['duplicateDirectDependency'];\n}\n\ntype OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n '*' | string,\n OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n>;\n\ntype OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption =\n Record;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n isLibrary?: (pkgName: string) => boolean;\n allowRangeVersionsInLibraries?: boolean;\n monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\n run: () => Promise;\n\n checkRecommended: (\n options?: CheckPackageWithWorkspacesRecommendedOptions,\n ) => CheckPackageWithWorkspacesApi;\n\n forRoot: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n forEach: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n for: (\n id: string,\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n}\n\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(pattern, { cwd: pkgDirname });\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(subPkgDirectoryPath, {\n ...createCheckPackageOptions,\n internalWorkspacePkgDirectoryPath: pkgDirectoryPath,\n });\n return [checkPkg.pkg.name, checkPkg];\n }),\n );\n\n return {\n async run() {\n for (const checksWorkspace of [\n checkPackage,\n ...checksWorkspaces.values(),\n ]) {\n await checksWorkspace.run();\n }\n },\n\n checkRecommended({\n isLibrary = () => false,\n allowRangeVersionsInLibraries = true,\n onlyWarnsForInRootPackage,\n onlyWarnsForInMonorepoPackages,\n onlyWarnsForInRootDependencies,\n onlyWarnsForInMonorepoPackagesDependencies = {},\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n } = {}) {\n checkPackage.checkNoDependencies();\n checkPackage.checkRecommended({\n isLibrary: false,\n onlyWarnsForInPackage: onlyWarnsForInRootPackage,\n onlyWarnsForInDependencies: onlyWarnsForInRootDependencies,\n checkResolutionMessage,\n });\n\n const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck =\n createOnlyWarnsForMappingCheck(\n 'monorepoDirectDuplicateDependenciesOnlyWarnsFor',\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n );\n\n const previousCheckedWorkspaces = new Map();\n checksWorkspaces.forEach((checkSubPackage, id) => {\n 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 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","customCreateReportError","Promise","all","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","checkSatisfiesVersions","dependenciesRanges","checkSatisfiesVersionsFromDependency","readPkgJson","packagePath","JSON","parse","readFileSync","writePkgJson","writeFileSync","stringify","internalLoadPackageJsonFromNodeModules","pkgDepName","pkgDirname","packageUrl","importResolve","replace","platform","createGetDependencyPackageJson","nodeModulesPackagePathCache","Map","internalCustomLoadPackageJsonFromNodeModules","internalReadPkgJson","existing","get","err","code","message","matchPackageJson","set","createOnlyWarnsForArrayCheck","onlyWarnsFor","Set","delete","isMapping","createOnlyWarnsForMappingCheck","fromEntries","entryKey","entryValue","key","size","dependencyNameLevel1","arrayOnlyWarnsForCheck","createCheckPackage","pkgDirectoryPath","internalWorkspacePkgDirectoryPath","path","resolve","copyPkg","argv","writePackageIfChanged","util","isDeepStrictEqual","runCalled","on","Job","constructor","fn","run","jobs","job","allowRangeVersionsInDependencies","push","checkExactDevVersions","missingOnlyWarnsFor","invalidOnlyWarnsFor","internalMissingConfigName","internalInvalidConfigName","internalConfigName","undefined","checkRecommended","onlyWarnsForInPackage","onlyWarnsForInDependencies","checkResolutionMessage","internalMissingPeerDependenciesOnlyWarnsFor","internalInvalidPeerDependenciesOnlyWarnsFor","internalDirectDuplicateDependenciesOnlyWarnsFor","exactVersionsOnlyWarnsFor","exactVersions","dependencyNameOrSpecialKey","onlyWarnsForValue","duplicateDirectDependency","missingPeerDependency","invalidPeerDependencyVersion","devDependencies","checkIdenticalVersionsThanDevDependencyOfDependency","dependencyType","checkSatisfiesVersionsInDevDependenciesOfDependency","checkSatisfiesVersionsBetweenDependencies","depName1","depName2","depPkg1","depPkg2","createCheckPackageWithWorkspaces","createCheckPackageOptions","checkPackage","pkgWorkspaces","workspaces","packages","workspacePackagesPaths","pattern","glob","sync","cwd","pathMatch","stat","fs","statSync","isDirectory","subPkgDirectoryPath","relative","checksWorkspaces","checkPkg","checksWorkspace","values","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 +{"version":3,"file":"index-node14.mjs","sources":["../src/utils/object.ts","../src/utils/createReportError.ts","../src/checks/checkDuplicateDependencies.ts","../src/checks/checkDirectDuplicateDependencies.ts","../src/checks/checkPeerDependencies.ts","../src/checks/checkDirectPeerDependencies.ts","../src/checks/checkExactVersions.ts","../src/checks/checkIdenticalVersions.ts","../src/checks/checkIdenticalVersionsThanDependency.ts","../src/checks/checkNoDependencies.ts","../src/checks/checkResolutionsHasExplanation.ts","../src/checks/checkResolutionsVersionsMatch.ts","../src/checks/checkSatisfiesVersions.ts","../src/checks/checkSatisfiesVersionsFromDependency.ts","../src/checks/checkSatisfiesVersionsInDependency.ts","../src/utils/pkgJsonUtils.ts","../src/utils/createGetDependencyPackageJson.ts","../src/utils/warnForUtils.ts","../src/check-package.ts","../src/check-package-with-workspaces.ts"],"sourcesContent":["export const getKeys = (o: T): (keyof T)[] =>\n Object.keys(o) as (keyof T)[];\n\nexport const getEntries = (o: T): [keyof T, T[keyof T]][] =>\n Object.entries(o) as unknown as [keyof T, T[keyof T]][];\n","/* eslint-disable no-console */\n\nimport chalk from 'chalk';\nimport { getEntries } from './object';\nimport type {\n OnlyWarnsForCheck,\n OnlyWarnsForMappingCheck,\n} from './warnForUtils';\n\nexport type ReportError = (\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n) => void;\n\nlet titleDisplayed: string | null = null;\nlet pkgPathDisplayed: string | null = null;\n\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 async function checkDirectDuplicateDependencies(\n pkg: PackageJson,\n pkgPathName: string,\n depType: DependencyTypes,\n getDependencyPackageJson: GetDependencyPackageJson,\n onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n reportErrorNamePrefix = '',\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError(\n `${reportErrorNamePrefix}Direct Duplicate Dependencies`,\n pkgPathName,\n );\n\n const checks: {\n type: DependencyTypes;\n searchIn: DependencyTypes[];\n }[] = [\n {\n type: 'devDependencies',\n searchIn: ['devDependencies', 'dependencies'],\n },\n { type: 'dependencies', searchIn: ['devDependencies', 'dependencies'] },\n ];\n\n await Promise.all(\n checks.map(async ({ type, searchIn }) => {\n const dependencies = pkg[type];\n\n if (!dependencies) return;\n for (const depName of getKeys(dependencies)) {\n const depPkg = await getDependencyPackageJson(depName);\n checkDuplicateDependencies(\n reportError,\n pkg,\n depType,\n searchIn,\n depPkg,\n onlyWarnsForCheck.createFor(depName),\n );\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 continue;\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 return isLibrary\n ? ['dependencies', 'peerDependencies']\n : ['devDependencies', 'dependencies'];\n case 'optionalDependencies':\n return isLibrary\n ? ['dependencies', 'optionalDependencies', 'peerDependencies']\n : ['devDependencies', 'dependencies'];\n }\n};\n\nexport async function checkDirectPeerDependencies(\n isLibrary: boolean,\n pkg: PackageJson,\n pkgPathName: string,\n getDependencyPackageJson: GetDependencyPackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError('Peer Dependencies', pkgPathName);\n\n await Promise.all(\n regularDependencyTypes.map(async (depType) => {\n const dependencies = pkg[depType];\n if (!dependencies) return;\n for (const depName of getKeys(dependencies)) {\n const depPkg = await 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\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 customCreateReportError?: typeof createReportError;\n}\n\nconst isVersionRange = (version: string): boolean =>\n version.startsWith('^') || version.startsWith('~');\n\nexport async function checkExactVersions(\n pkg: PackageJson,\n pkgPathName: string,\n types: DependencyTypes[],\n {\n getDependencyPackageJson,\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckExactVersionsOptions,\n): Promise {\n const reportError = customCreateReportError('Exact versions', pkgPathName);\n\n for (const type of types) {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) continue;\n\n for (const [dependencyName, versionConst] of Object.entries(\n pkgDependencies,\n )) {\n let version = versionConst;\n if (version.startsWith('npm:')) {\n const match = /^npm:.*@(.*)$/.exec(version);\n if (!match) throw new Error(`Invalid version match: ${version}`);\n const [, realVersion] = match;\n version = realVersion;\n }\n\n if (isVersionRange(version)) {\n if (internalExactVersionsIgnore?.includes(dependencyName)) {\n continue;\n }\n const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName);\n if (!shouldOnlyWarn && tryToAutoFix && getDependencyPackageJson) {\n let resolvedDep;\n try {\n resolvedDep = await 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 customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Identical Versions',\n pkgPathName,\n );\n\n getKeys(deps).forEach((depKey) => {\n const version = pkgDependencies[depKey];\n if (!version) {\n reportError(`Unexpected missing ${type} for \"${depKey}\".`);\n return;\n }\n\n const depConfigArrayOrObject = deps[depKey];\n const depConfig = Array.isArray(depConfigArrayOrObject)\n ? { [type]: depConfigArrayOrObject }\n : depConfigArrayOrObject;\n\n getKeys(depConfig).forEach((depKeyType) => {\n const pkgDependenciesType = pkg[depKeyType] || {};\n depConfig[depKeyType]?.forEach((depKeyIdentical) => {\n const value = pkgDependenciesType[depKeyIdentical];\n if (!value) {\n reportError(\n `Missing \"${depKeyIdentical}\" in ${depKeyType}`,\n `it should be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKeyIdentical}\" in ${depKeyType}`,\n `expecting \"${value}\" be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n });\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersionsThanDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n `Same Versions than ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const version = dependencies[depKey];\n if (!version) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n if (version.startsWith('^') || version.startsWith('~')) {\n reportError(\n `Unexpected range dependency in \"${depPkg.name}\" for \"${depKey}\"`,\n 'perhaps use checkSatisfiesVersionsFromDependency() instead.',\n );\n return;\n }\n\n const value = pkgDependencies[depKey];\n\n if (!value) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `expecting to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `expecting \"${value}\" to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\n\nexport function checkNoDependencies(\n pkg: PackageJson,\n pkgPath: string,\n type: DependencyTypes = 'dependencies',\n moveToSuggestion: DependencyTypes = 'devDependencies',\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n const reportError = customCreateReportError('No dependencies', pkgPath);\n reportError(\n `Unexpected ${type}`,\n `you should move them in ${moveToSuggestion}`,\n );\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport type CheckResolutionMessage = (\n depKey: string,\n resolutionExplainedMessage: string,\n checkMessageHelpers: {\n getDependencyPackageJson: GetDependencyPackageJson;\n },\n) => string | undefined;\n\nexport function checkResolutionsHasExplanation(\n pkg: PackageJson,\n pkgPathName: string,\n checkMessage: CheckResolutionMessage,\n getDependencyPackageJson: GetDependencyPackageJson,\n customCreateReportError = createReportError,\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n const reportError = customCreateReportError(\n 'Resolutions has explanation',\n pkgPathName,\n );\n\n Object.keys(pkgResolutions).forEach((depKey) => {\n if (!pkgResolutionsExplained[depKey]) {\n reportError(`Missing \"${depKey}\" in resolutionsExplained.`);\n }\n });\n\n Object.keys(pkgResolutionsExplained).forEach((depKey) => {\n if (!pkgResolutions[depKey]) {\n reportError(\n `Found \"${depKey}\" in resolutionsExplained but not in resolutions.`,\n );\n } else {\n const error = checkMessage(depKey, pkgResolutionsExplained[depKey], {\n getDependencyPackageJson,\n });\n if (error) {\n reportError(\n `Invalid message for \"${depKey}\" in resolutionsExplained`,\n `${error}.`,\n );\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport interface CheckResolutionsVersionsMatchOptions {\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkResolutionsVersionsMatch(\n pkg: PackageJson,\n pkgPathName: string,\n {\n tryToAutoFix,\n customCreateReportError = createReportError,\n }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const reportError = customCreateReportError(\n 'Resolutions match other dependencies',\n pkgPathName,\n );\n\n Object.entries(pkgResolutions).forEach(([depName, resolutionDepVersion]) => {\n (['dependencies', 'devDependencies'] as const).forEach((depType) => {\n const range = pkg?.[depType]?.[depName];\n\n if (!range) return;\n\n if (\n !semver.satisfies(resolutionDepVersion, range, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n pkg[depType]![depName] = resolutionDepVersion;\n } else {\n reportError(\n `Invalid \"${depName}\" in ${depType}`,\n `expecting \"${range}\" be \"${resolutionDepVersion}\" from resolutions.`,\n );\n }\n }\n });\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckSatisfiesVersionsOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n dependenciesRanges: Record,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsOptions = {},\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Satisfies Versions',\n pkgPathName,\n );\n\n Object.entries(dependenciesRanges).forEach(([depKey, range]) => {\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `\"${version}\" (in \"${depKey}\") should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\n}\n","import 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 customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\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 semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport { getEntries } from '../utils/object';\nimport type { DependenciesRanges, PackageJson } from '../utils/packageTypes';\n\ninterface CheckSatisfiesVersionsInDependencyOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersionsInDependency(\n pkgPathName: string,\n depPkg: PackageJson,\n dependenciesRanges: DependenciesRanges,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsInDependencyOptions = {},\n): void {\n const reportError = customCreateReportError(\n `Satisfies Versions In Dependency \"${depPkg.name}\"`,\n pkgPathName,\n );\n\n for (const [dependenciesType, dependenciesTypeRanges] of getEntries(\n dependenciesRanges,\n )) {\n if (!dependenciesTypeRanges) return;\n const dependencies = depPkg[dependenciesType];\n\n for (const [dependencyName, dependencyRange] of getEntries(\n dependenciesTypeRanges,\n )) {\n if (dependencyRange == null) {\n if (dependencies?.[dependencyName]) {\n reportError(\n `Invalid \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n 'it should not be present',\n );\n }\n } else if (!dependencies) {\n reportError(\n `Missing \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependenciesType}\" is missing in \"${depPkg.name}\"`,\n );\n } else if (!dependencies[dependencyName]) {\n reportError(\n `Missing \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependencyName}\" is missing in ${dependenciesType}`,\n );\n } else if (\n !semver.satisfies(dependencies[dependencyName], dependencyRange, {\n includePrerelease: true,\n }) &&\n !semver.intersects(dependencies[dependencyName], dependencyRange, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependencies[dependencyName]}\" does not satisfies \"${dependencyRange}\"`,\n );\n }\n }\n }\n}\n","import { readFileSync, writeFileSync } from 'fs';\nimport { resolve as importResolve } from 'import-meta-resolve';\nimport type { PackageJson } from './packageTypes';\n\nexport function readPkgJson(packagePath: string): PackageJson {\n return JSON.parse(readFileSync(packagePath, 'utf8')) as PackageJson;\n}\n\nexport function writePkgJson(packagePath: string, pkg: PackageJson): void {\n writeFileSync(packagePath, JSON.stringify(pkg, null, 2));\n}\n\n/** @internal */\nexport async function internalLoadPackageJsonFromNodeModules(\n pkgDepName: string,\n pkgDirname: string,\n): Promise {\n const packageUrl = await importResolve(\n `${pkgDepName}/package.json`,\n `file://${pkgDirname}/package.json`,\n );\n return readPkgJson(\n packageUrl.replace(\n process.platform === 'win32' ? /^file:\\/{3}/ : /^file:\\/\\//,\n '',\n ),\n );\n}\n","import type { PackageJson } from './packageTypes';\nimport {\n internalLoadPackageJsonFromNodeModules,\n readPkgJson,\n} from './pkgJsonUtils';\n\nexport type GetDependencyPackageJson = (\n pkgDepName: string,\n) => Promise;\n\ntype NodeModulesPackagePathCache = Map;\n\ninterface CreateGetDependencyPackageJsonOptions {\n pkgDirname: string;\n nodeModulesPackagePathCache?: NodeModulesPackagePathCache;\n /** @internal */\n internalCustomLoadPackageJsonFromNodeModules?: typeof internalLoadPackageJsonFromNodeModules;\n /** @internal */\n internalReadPkgJson?: typeof readPkgJson;\n}\n\nexport function createGetDependencyPackageJson({\n pkgDirname,\n nodeModulesPackagePathCache = new Map(),\n internalCustomLoadPackageJsonFromNodeModules = internalLoadPackageJsonFromNodeModules,\n internalReadPkgJson = readPkgJson,\n}: CreateGetDependencyPackageJsonOptions): GetDependencyPackageJson {\n return async (pkgDepName) => {\n const existing = nodeModulesPackagePathCache.get(pkgDepName);\n if (existing) return existing;\n let pkg: PackageJson;\n if (pkgDepName.startsWith('.')) {\n const packagePath = `${pkgDirname}/${pkgDepName}/package.json`;\n pkg = internalReadPkgJson(packagePath);\n } else {\n try {\n pkg = await internalCustomLoadPackageJsonFromNodeModules(\n pkgDepName,\n pkgDirname,\n );\n } catch (err: unknown) {\n if (!(err instanceof Error)) throw err;\n\n if (\n (err as NodeJS.ErrnoException).code !==\n 'ERR_PACKAGE_PATH_NOT_EXPORTED'\n ) {\n throw err;\n }\n\n const match = / in (.*[/\\\\]package\\.json)\\s+imported from/.exec(\n err.message,\n );\n\n if (match) {\n const [, matchPackageJson] = match;\n pkg = internalReadPkgJson(matchPackageJson);\n } else {\n throw err;\n }\n }\n }\n nodeModulesPackagePathCache.set(pkgDepName, pkg);\n return pkg;\n };\n}\n","import { getEntries } from './object';\n\nexport type OnlyWarnsFor = string[];\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type OnlyWarnsForDependencyMapping = Record;\nexport type OnlyWarnsForOptionalDependencyMapping =\n | 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 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 { checkSatisfiesVersions } from './checks/checkSatisfiesVersions';\nimport { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency';\nimport { checkSatisfiesVersionsInDependency } from './checks/checkSatisfiesVersionsInDependency';\nimport type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { createGetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { getEntries } from './utils/object';\nimport type {\n DependenciesRanges,\n DependencyName,\n DependencyTypes,\n PackageJson,\n} from './utils/packageTypes';\nimport { readPkgJson, writePkgJson } from './utils/pkgJsonUtils';\nimport type {\n OnlyWarnsForOptionalDependencyMapping,\n OnlyWarnsFor,\n OnlyWarnsForDependencyMapping,\n} from './utils/warnForUtils';\nimport {\n createOnlyWarnsForArrayCheck,\n createOnlyWarnsForMappingCheck,\n} from './utils/warnForUtils';\n\nexport interface CreateCheckPackageOptions {\n /** @internal */\n internalWorkspacePkgDirectoryPath?: string;\n}\n\nexport interface CheckDirectPeerDependenciesOptions {\n isLibrary?: boolean;\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 /** @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 run: () => Promise;\n\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\n checkResolutionsVersionsMatch: () => CheckPackageApi;\n\n checkExactDevVersions: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n\n checkNoDependencies: (\n type?: DependencyTypes,\n moveToSuggestion?: DependencyTypes,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectPeerDependencies({\n * invalidOnlyWarnsFor: ['semver'],\n * })\n * ```\n */\n checkDirectPeerDependencies: (\n options?: CheckDirectPeerDependenciesOptions,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectDuplicateDependencies({\n * invalidOnlyWarnsFor: { '*': 'type-fest' },\n * })\n * ```\n */\n checkDirectDuplicateDependencies: (\n options?: CheckDirectDuplicateDependenciesOptions,\n ) => CheckPackageApi;\n\n checkResolutionsHasExplanation: (\n checkMessage?: CheckResolutionMessage,\n ) => CheckPackageApi;\n\n checkRecommended: (options?: CheckRecommendedOptions) => CheckPackageApi;\n\n /**\n * @example\n * Check that your package.json contains the same version of @babel/core than react-scripts, both in resolutions and devDependencies\n * ```\n * .checkIdenticalVersionsThanDependency('react-scripts', {\n * resolutions: ['@babel/core'],\n * devDependencies: ['@babel/core'],\n * })\n * ```\n */\n checkIdenticalVersionsThanDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkIdenticalVersionsThanDevDependencyOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range passed in config\n *\n * @example\n * ```\n * .checkSatisfiesVersions({\n * devDependencies: {\n * eslint: '^8.0.0'\n * },\n * })\n * ```\n */\n checkSatisfiesVersions: (\n dependencies: Partial<\n Record>\n >,\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range set in another dependencies\n * @example\n * ```\n * .checkSatisfiesVersionsFromDependency('@pob/eslint-config-typescript', {\n * devDependencies: [\n * '@typescript-eslint/eslint-plugin',\n * '@typescript-eslint/parser',\n * ],\n * })\n * ```\n */\n checkSatisfiesVersionsFromDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkSatisfiesVersionsInDevDependenciesOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies have the exact same version that another dependency also present in your package.json\n * @example\n * The react-dom version should match react, so this check will ensure it does\n * ```\n * .checkIdenticalVersions({\n * dependencies: {\n * react: {\n * dependencies: ['react-dom'],\n * devDependencies: ['react-test-renderer'],\n * },\n * },\n * })\n * ```\n */\n checkIdenticalVersions: (dependencies: {\n resolutions?: Record;\n dependencies?: Record;\n devDependencies?: Record;\n }) => CheckPackageApi;\n\n checkSatisfiesVersionsBetweenDependencies: (\n depName1: string,\n depName2: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check versions in a dependency\n * Also useable to check if a dependency is not present\n *\n * @example\n * Checking if `@lerna/version` has no dependency `@nrwl/devkit`\n * ```\n * .checkSatisfiesVersionsInDependency('@lerna/version', {\n * dependencies: {\n * '@nrwl/devkit': null,\n * },\n * })\n * ```\n */\n checkSatisfiesVersionsInDependency: (\n depName: string,\n dependenciesRanges: DependenciesRanges,\n ) => CheckPackageApi;\n}\n\nexport function createCheckPackage(\n pkgDirectoryPath = '.',\n { internalWorkspacePkgDirectoryPath }: 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 let tryToAutoFix = false;\n\n if (process.argv.slice(2).includes('--fix')) {\n tryToAutoFix = true;\n }\n\n const writePackageIfChanged = (): void => {\n if (!tryToAutoFix) return;\n if (util.isDeepStrictEqual(pkg, copyPkg)) return;\n writePkgJson(pkgPath, pkg);\n };\n\n const getDependencyPackageJson = createGetDependencyPackageJson({\n pkgDirname,\n });\n\n let runCalled = false;\n\n if (!internalWorkspacePkgDirectoryPath) {\n process.on('beforeExit', () => {\n if (!runCalled) {\n throw new Error('Call .run() and await the result.');\n }\n });\n }\n\n class Job {\n name: string;\n\n fn: () => Promise;\n\n constructor(name: string, fn: () => Promise) {\n this.name = name;\n this.fn = fn;\n }\n\n async run(): Promise {\n try {\n await this.fn();\n } catch (err) {\n throw new Error(`${this.name} failed: ${(err as Error).message}`);\n }\n }\n }\n\n const jobs: Job[] = [];\n\n return {\n async run() {\n runCalled = true;\n // TODO parallel\n for (const job of jobs) {\n await job.run();\n }\n writePackageIfChanged();\n },\n\n pkg,\n pkgDirname,\n pkgPathName,\n getDependencyPackageJson,\n checkExactVersions({\n onlyWarnsFor,\n internalExactVersionsIgnore,\n allowRangeVersionsInDependencies = true,\n } = {}) {\n jobs.push(\n new Job(this.checkExactVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(\n pkg,\n pkgPathName,\n !allowRangeVersionsInDependencies\n ? ['dependencies', 'devDependencies', 'resolutions']\n : ['devDependencies', 'resolutions'],\n {\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n getDependencyPackageJson,\n tryToAutoFix,\n },\n );\n }),\n );\n return this;\n },\n\n checkResolutionsVersionsMatch() {\n checkResolutionsVersionsMatch(pkg, pkgPathName, {\n tryToAutoFix,\n });\n return this;\n },\n\n checkExactDevVersions({ onlyWarnsFor } = {}) {\n jobs.push(\n new Job(this.checkExactDevVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactDevVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(pkg, pkgPathName, ['devDependencies'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n }),\n );\n return this;\n },\n\n checkNoDependencies(\n type = 'dependencies',\n moveToSuggestion = 'devDependencies',\n ) {\n checkNoDependencies(pkg, pkgPathName, type, moveToSuggestion);\n return this;\n },\n\n checkDirectPeerDependencies({\n isLibrary = false,\n missingOnlyWarnsFor,\n invalidOnlyWarnsFor,\n internalMissingConfigName = 'missingOnlyWarnsFor',\n internalInvalidConfigName = 'invalidOnlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectPeerDependencies.name, async () => {\n const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck(\n internalMissingConfigName,\n missingOnlyWarnsFor,\n );\n const invalidOnlyWarnsForCheck =\n internalInvalidConfigName === internalMissingConfigName\n ? missingOnlyWarnsForCheck\n : createOnlyWarnsForMappingCheck(\n internalInvalidConfigName,\n invalidOnlyWarnsFor,\n );\n await checkDirectPeerDependencies(\n isLibrary,\n pkg,\n pkgPathName,\n getDependencyPackageJson,\n missingOnlyWarnsForCheck,\n invalidOnlyWarnsForCheck,\n );\n }),\n );\n return this;\n },\n\n checkDirectDuplicateDependencies({\n onlyWarnsFor,\n internalConfigName = 'onlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectDuplicateDependencies.name, async () => {\n await checkDirectDuplicateDependencies(\n pkg,\n pkgPathName,\n 'dependencies',\n getDependencyPackageJson,\n createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor),\n );\n }),\n );\n return this;\n },\n\n checkResolutionsHasExplanation(\n checkMessage: CheckResolutionMessage = (depKey, message) => undefined,\n ) {\n checkResolutionsHasExplanation(\n pkg,\n pkgPathName,\n checkMessage,\n getDependencyPackageJson,\n );\n return this;\n },\n\n checkRecommended({\n isLibrary = false,\n onlyWarnsForInPackage,\n onlyWarnsForInDependencies,\n allowRangeVersionsInDependencies = isLibrary,\n internalExactVersionsIgnore,\n checkResolutionMessage,\n } = {}) {\n let internalMissingPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n let internalInvalidPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n let internalDirectDuplicateDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n\n const exactVersionsOnlyWarnsFor =\n onlyWarnsForInPackage?.exactVersions || [];\n\n if (onlyWarnsForInDependencies) {\n internalDirectDuplicateDependenciesOnlyWarnsFor = {};\n internalMissingPeerDependenciesOnlyWarnsFor = {};\n internalInvalidPeerDependenciesOnlyWarnsFor = {};\n\n getEntries(onlyWarnsForInDependencies).forEach(\n ([dependencyNameOrSpecialKey, onlyWarnsForValue]) => {\n if (onlyWarnsForValue.duplicateDirectDependency) {\n (\n internalDirectDuplicateDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.duplicateDirectDependency;\n }\n if (onlyWarnsForValue.missingPeerDependency) {\n (\n internalMissingPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.missingPeerDependency;\n }\n if (onlyWarnsForValue.invalidPeerDependencyVersion) {\n (\n internalInvalidPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.invalidPeerDependencyVersion;\n }\n },\n );\n }\n\n this.checkExactVersions({\n allowRangeVersionsInDependencies,\n onlyWarnsFor: exactVersionsOnlyWarnsFor,\n internalExactVersionsIgnore,\n });\n\n this.checkResolutionsVersionsMatch();\n this.checkResolutionsHasExplanation(checkResolutionMessage);\n\n this.checkDirectPeerDependencies({\n isLibrary,\n missingOnlyWarnsFor: internalMissingPeerDependenciesOnlyWarnsFor,\n invalidOnlyWarnsFor: internalInvalidPeerDependenciesOnlyWarnsFor,\n internalMissingConfigName:\n 'onlyWarnsForInDependencies.missingPeerDependency',\n internalInvalidConfigName:\n 'onlyWarnsForInDependencies.invalidPeerDependencyVersion',\n });\n\n this.checkDirectDuplicateDependencies({\n onlyWarnsFor: internalDirectDuplicateDependenciesOnlyWarnsFor,\n internalConfigName:\n 'onlyWarnsForInDependencies.duplicateDirectDependency',\n });\n\n return this;\n },\n\n checkIdenticalVersionsThanDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkIdenticalVersionsThanDependency.name, async () => {\n const depPkg = await getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkIdenticalVersionsThanDevDependencyOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsFromDependency.name, async () => {\n const depPkg = await getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkSatisfiesVersions(dependencies) {\n Object.entries(dependencies).forEach(\n ([dependencyType, dependenciesRanges]) => {\n checkSatisfiesVersions(\n pkg,\n pkgPathName,\n dependencyType as DependencyTypes,\n dependenciesRanges,\n );\n },\n );\n return this;\n },\n\n checkSatisfiesVersionsFromDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsFromDependency.name, async () => {\n const depPkg = await 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 }),\n );\n return this;\n },\n\n checkSatisfiesVersionsInDevDependenciesOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(\n this.checkSatisfiesVersionsInDevDependenciesOfDependency.name,\n async () => {\n const depPkg = await 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 },\n ),\n );\n return this;\n },\n\n checkIdenticalVersions({ resolutions, dependencies, devDependencies }) {\n if (resolutions) {\n checkIdenticalVersions(pkg, pkgPathName, 'resolutions', resolutions);\n }\n if (dependencies) {\n checkIdenticalVersions(pkg, pkgPathName, 'dependencies', dependencies);\n }\n if (devDependencies) {\n checkIdenticalVersions(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n );\n }\n return this;\n },\n\n checkSatisfiesVersionsBetweenDependencies(\n depName1,\n depName2,\n { dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(\n this.checkSatisfiesVersionsBetweenDependencies.name,\n async () => {\n const [depPkg1, depPkg2] = await Promise.all([\n getDependencyPackageJson(depName1),\n getDependencyPackageJson(depName2),\n ]);\n\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg1,\n 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 },\n ),\n );\n return this;\n },\n\n checkSatisfiesVersionsInDependency(depName, dependenciesRanges) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n const depPkg = await getDependencyPackageJson(depName);\n checkSatisfiesVersionsInDependency(\n pkgPathName,\n depPkg,\n dependenciesRanges,\n );\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 { OnlyWarnsForOptionalDependencyMapping } from './utils/warnForUtils';\nimport { createOnlyWarnsForMappingCheck } from './utils/warnForUtils';\n\ninterface OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n extends OnlyWarnsForInPackageCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsForInDependencyCheckPackageRecommendedOption['duplicateDirectDependency'];\n}\n\ntype OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n '*' | string,\n OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n>;\n\ntype OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption =\n Record;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n isLibrary?: (pkgName: string) => boolean;\n allowRangeVersionsInLibraries?: boolean;\n monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\n run: () => Promise;\n\n checkRecommended: (\n options?: CheckPackageWithWorkspacesRecommendedOptions,\n ) => CheckPackageWithWorkspacesApi;\n\n forRoot: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n forEach: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n for: (\n id: string,\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n}\n\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(pattern, { cwd: pkgDirname });\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(subPkgDirectoryPath, {\n ...createCheckPackageOptions,\n internalWorkspacePkgDirectoryPath: pkgDirectoryPath,\n });\n return [checkPkg.pkg.name, checkPkg];\n }),\n );\n\n return {\n async run() {\n for (const checksWorkspace of [\n checkPackage,\n ...checksWorkspaces.values(),\n ]) {\n await checksWorkspace.run();\n }\n },\n\n checkRecommended({\n isLibrary = () => false,\n allowRangeVersionsInLibraries = true,\n onlyWarnsForInRootPackage,\n onlyWarnsForInMonorepoPackages,\n onlyWarnsForInRootDependencies,\n onlyWarnsForInMonorepoPackagesDependencies = {},\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n } = {}) {\n checkPackage.checkNoDependencies();\n checkPackage.checkRecommended({\n isLibrary: false,\n onlyWarnsForInPackage: onlyWarnsForInRootPackage,\n onlyWarnsForInDependencies: onlyWarnsForInRootDependencies,\n checkResolutionMessage,\n });\n\n const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck =\n createOnlyWarnsForMappingCheck(\n 'monorepoDirectDuplicateDependenciesOnlyWarnsFor',\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n );\n\n const previousCheckedWorkspaces = new Map();\n checksWorkspaces.forEach((checkSubPackage, id) => {\n 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 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","customCreateReportError","Promise","all","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","checkSatisfiesVersions","dependenciesRanges","checkSatisfiesVersionsFromDependency","checkSatisfiesVersionsInDependency","dependenciesType","dependenciesTypeRanges","dependencyRange","readPkgJson","packagePath","JSON","parse","readFileSync","writePkgJson","writeFileSync","stringify","internalLoadPackageJsonFromNodeModules","pkgDepName","pkgDirname","packageUrl","importResolve","replace","platform","createGetDependencyPackageJson","nodeModulesPackagePathCache","Map","internalCustomLoadPackageJsonFromNodeModules","internalReadPkgJson","existing","get","err","code","message","matchPackageJson","set","createOnlyWarnsForArrayCheck","onlyWarnsFor","Set","delete","isMapping","createOnlyWarnsForMappingCheck","fromEntries","entryKey","entryValue","key","size","dependencyNameLevel1","arrayOnlyWarnsForCheck","createCheckPackage","pkgDirectoryPath","internalWorkspacePkgDirectoryPath","path","resolve","copyPkg","argv","writePackageIfChanged","util","isDeepStrictEqual","runCalled","on","Job","constructor","fn","run","jobs","job","allowRangeVersionsInDependencies","push","checkExactDevVersions","missingOnlyWarnsFor","invalidOnlyWarnsFor","internalMissingConfigName","internalInvalidConfigName","internalConfigName","undefined","checkRecommended","onlyWarnsForInPackage","onlyWarnsForInDependencies","checkResolutionMessage","internalMissingPeerDependenciesOnlyWarnsFor","internalInvalidPeerDependenciesOnlyWarnsFor","internalDirectDuplicateDependenciesOnlyWarnsFor","exactVersionsOnlyWarnsFor","exactVersions","dependencyNameOrSpecialKey","onlyWarnsForValue","duplicateDirectDependency","missingPeerDependency","invalidPeerDependencyVersion","devDependencies","checkIdenticalVersionsThanDevDependencyOfDependency","dependencyType","checkSatisfiesVersionsInDevDependenciesOfDependency","checkSatisfiesVersionsBetweenDependencies","depName1","depName2","depPkg1","depPkg2","createCheckPackageWithWorkspaces","createCheckPackageOptions","checkPackage","pkgWorkspaces","workspaces","packages","workspacePackagesPaths","pattern","glob","sync","cwd","pathMatch","stat","fs","statSync","isDirectory","subPkgDirectoryPath","relative","checksWorkspaces","checkPkg","checksWorkspace","values","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/dist/utils/packageTypes.d.ts b/dist/utils/packageTypes.d.ts index 1ff7059b..0d52453e 100644 --- a/dist/utils/packageTypes.d.ts +++ b/dist/utils/packageTypes.d.ts @@ -7,5 +7,6 @@ export type PackageJson = Except & { name: string; resolutionsExplained?: Record; } & Partial>; +export type DependenciesRanges = Partial>>; export {}; //# sourceMappingURL=packageTypes.d.ts.map \ No newline at end of file diff --git a/dist/utils/packageTypes.d.ts.map b/dist/utils/packageTypes.d.ts.map index 55634d4b..d63d425a 100644 --- a/dist/utils/packageTypes.d.ts.map +++ b/dist/utils/packageTypes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"packageTypes.d.ts","sourceRoot":"","sources":["../../src/utils/packageTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,IAAI,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEhF,MAAM,MAAM,sBAAsB,GAC9B,cAAc,GACd,iBAAiB,GACjB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,eAAe,GACvB,sBAAsB,GACtB,kBAAkB,GAClB,aAAa,CAAC;AAElB,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,GAAG;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"packageTypes.d.ts","sourceRoot":"","sources":["../../src/utils/packageTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,IAAI,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEhF,MAAM,MAAM,sBAAsB,GAC9B,cAAc,GACd,iBAAiB,GACjB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,eAAe,GACvB,sBAAsB,GACtB,kBAAkB,GAClB,aAAa,CAAC;AAElB,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,GAAG;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACtC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAC/D,CAAC"} \ No newline at end of file diff --git a/src/check-package.ts b/src/check-package.ts index 858fb82f..a9f95aee 100644 --- a/src/check-package.ts +++ b/src/check-package.ts @@ -12,10 +12,12 @@ import { checkResolutionsHasExplanation } from './checks/checkResolutionsHasExpl import { checkResolutionsVersionsMatch } from './checks/checkResolutionsVersionsMatch'; import { checkSatisfiesVersions } from './checks/checkSatisfiesVersions'; import { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency'; +import { checkSatisfiesVersionsInDependency } from './checks/checkSatisfiesVersionsInDependency'; import type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson'; import { createGetDependencyPackageJson } from './utils/createGetDependencyPackageJson'; import { getEntries } from './utils/object'; import type { + DependenciesRanges, DependencyName, DependencyTypes, PackageJson, @@ -245,6 +247,25 @@ export interface CheckPackageApi { devDependencies?: string[]; }, ) => CheckPackageApi; + + /** + * Check versions in a dependency + * Also useable to check if a dependency is not present + * + * @example + * Checking if `@lerna/version` has no dependency `@nrwl/devkit` + * ``` + * .checkSatisfiesVersionsInDependency('@lerna/version', { + * dependencies: { + * '@nrwl/devkit': null, + * }, + * }) + * ``` + */ + checkSatisfiesVersionsInDependency: ( + depName: string, + dependenciesRanges: DependenciesRanges, + ) => CheckPackageApi; } export function createCheckPackage( @@ -759,5 +780,19 @@ export function createCheckPackage( ); return this; }, + + checkSatisfiesVersionsInDependency(depName, dependenciesRanges) { + jobs.push( + new Job(this.checkSatisfiesVersionsInDependency.name, async () => { + const depPkg = await getDependencyPackageJson(depName); + checkSatisfiesVersionsInDependency( + pkgPathName, + depPkg, + dependenciesRanges, + ); + }), + ); + return this; + }, }; } diff --git a/src/checks/checkSatisfiesVersionsInDependency.test.ts b/src/checks/checkSatisfiesVersionsInDependency.test.ts new file mode 100644 index 00000000..9c8b3cb4 --- /dev/null +++ b/src/checks/checkSatisfiesVersionsInDependency.test.ts @@ -0,0 +1,178 @@ +import { checkSatisfiesVersionsInDependency } from './checkSatisfiesVersionsInDependency'; + +const jest = import.meta.jest; + +describe(checkSatisfiesVersionsInDependency.name, () => { + const mockReportError = jest.fn(); + const createReportError = jest.fn().mockReturnValue(mockReportError); + + beforeEach(() => { + mockReportError.mockReset(); + }); + it('should return no error when no ranges is set', () => { + checkSatisfiesVersionsInDependency( + 'path', + { name: 'test' }, + {}, + { customCreateReportError: createReportError }, + ); + expect(mockReportError).not.toHaveBeenCalled(); + }); + + describe('expect no error', () => { + it.each([ + ['test1', 'devDependencies', 'not set', null, {}], + ['test2', 'dependencies', 'not set', null, {}], + ['test3', 'resolutions', 'not set', null, {}], + [ + 'test1', + 'devDependencies', + 'not present', + null, + { devDependencies: { other: '1.0.0' } }, + ], + [ + 'test2', + 'dependencies', + 'not present', + null, + { dependencies: { other: '1.0.0' } }, + ], + [ + 'test3', + 'resolutions', + 'not present', + null, + { resolutions: { other: '1.0.0' } }, + ], + [ + 'test3', + 'dependencies', + 'present in another type (devDependencies)', + null, + { devDependencies: { test3: '1.0.0' } }, + ], + [ + 'test3', + 'dependencies', + 'identical', + '1.0.0', + { dependencies: { test3: '1.0.0' } }, + ], + [ + 'test3', + 'dependencies', + 'satisfies (exact)', + '^1.0.0', + { dependencies: { test3: '1.1.0' } }, + ], + [ + 'test3', + 'dependencies', + 'satisfies (range)', + '^1.0.0', + { dependencies: { test3: '^1.1.0' } }, + ], + ])( + 'should return no error when %s in %s is %s', + (depName, depType, _, depValue, pkgContent) => { + checkSatisfiesVersionsInDependency( + 'path', + { name: 'test', ...pkgContent }, + { [depType]: { [depName]: depValue } }, + { customCreateReportError: createReportError }, + ); + expect(mockReportError).not.toHaveBeenCalled(); + }, + ); + }); + + describe('expect error when not dependency is not expected', () => { + it.each([ + [ + 'test1', + 'devDependencies', + { devDependencies: { test1: '1.0.0' } }, + 'Invalid "test1" in devDependencies of "test"', + 'it should not be present', + ], + [ + 'test2', + 'dependencies', + { dependencies: { test2: '^1.0.0' } }, + 'Invalid "test2" in dependencies of "test"', + 'it should not be present', + ], + [ + 'test3', + 'resolutions', + { resolutions: { test3: '1.x' } }, + 'Invalid "test3" in resolutions of "test"', + 'it should not be present', + ], + ])( + 'should error when %s is not expected in %s', + (depName, depType, pkgContent, errorTitle, errorInfo) => { + checkSatisfiesVersionsInDependency( + 'path', + { name: 'test', ...pkgContent }, + { [depType]: { [depName]: null } }, + { customCreateReportError: createReportError }, + ); + expect(mockReportError).toHaveBeenCalledWith(errorTitle, errorInfo); + }, + ); + }); + + describe('expect error when dependency is expected', () => { + it.each([ + [ + 'test1', + 'missing', + 'devDependencies', + '1.0.0', + {}, + 'Missing "test1" in devDependencies of "test"', + '"devDependencies" is missing in "test"', + ], + [ + 'test2', + 'missing', + 'devDependencies', + '1.0.0', + { dependencies: {} }, + 'Missing "test2" in devDependencies of "test"', + '"devDependencies" is missing in "test"', + ], + [ + 'test3', + 'missing', + 'dependencies', + '^1.0.0', + { dependencies: { test2: '^1.0.0' } }, + 'Missing "test3" in dependencies of "test"', + '"test3" is missing in dependencies', + ], + [ + 'test4', + 'invalid', + 'dependencies', + '^1.0.0', + { dependencies: { test4: '0.1.0' } }, + 'Invalid "test4" in dependencies of "test"', + '"0.1.0" does not satisfies "^1.0.0"', + ], + ])( + 'should error when %s is %s in %s', + (depName, _, depType, depRange, pkgContent, errorTitle, errorInfo) => { + checkSatisfiesVersionsInDependency( + 'path', + { name: 'test', ...pkgContent }, + { [depType]: { [depName]: depRange } }, + { customCreateReportError: createReportError }, + ); + expect(mockReportError).toHaveBeenCalledWith(errorTitle, errorInfo); + }, + ); + }); +}); diff --git a/src/checks/checkSatisfiesVersionsInDependency.ts b/src/checks/checkSatisfiesVersionsInDependency.ts new file mode 100644 index 00000000..978adfab --- /dev/null +++ b/src/checks/checkSatisfiesVersionsInDependency.ts @@ -0,0 +1,64 @@ +import semver from 'semver'; +import { createReportError } from '../utils/createReportError'; +import { getEntries } from '../utils/object'; +import type { DependenciesRanges, PackageJson } from '../utils/packageTypes'; + +interface CheckSatisfiesVersionsInDependencyOptions { + customCreateReportError?: typeof createReportError; +} + +export function checkSatisfiesVersionsInDependency( + pkgPathName: string, + depPkg: PackageJson, + dependenciesRanges: DependenciesRanges, + { + customCreateReportError = createReportError, + }: CheckSatisfiesVersionsInDependencyOptions = {}, +): void { + const reportError = customCreateReportError( + `Satisfies Versions In Dependency "${depPkg.name}"`, + pkgPathName, + ); + + for (const [dependenciesType, dependenciesTypeRanges] of getEntries( + dependenciesRanges, + )) { + if (!dependenciesTypeRanges) return; + const dependencies = depPkg[dependenciesType]; + + for (const [dependencyName, dependencyRange] of getEntries( + dependenciesTypeRanges, + )) { + if (dependencyRange == null) { + if (dependencies?.[dependencyName]) { + reportError( + `Invalid "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, + 'it should not be present', + ); + } + } else if (!dependencies) { + reportError( + `Missing "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, + `"${dependenciesType}" is missing in "${depPkg.name}"`, + ); + } else if (!dependencies[dependencyName]) { + reportError( + `Missing "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, + `"${dependencyName}" is missing in ${dependenciesType}`, + ); + } else if ( + !semver.satisfies(dependencies[dependencyName], dependencyRange, { + includePrerelease: true, + }) && + !semver.intersects(dependencies[dependencyName], dependencyRange, { + includePrerelease: true, + }) + ) { + reportError( + `Invalid "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, + `"${dependencies[dependencyName]}" does not satisfies "${dependencyRange}"`, + ); + } + } + } +} diff --git a/src/utils/packageTypes.ts b/src/utils/packageTypes.ts index ae87f509..91047ca0 100644 --- a/src/utils/packageTypes.ts +++ b/src/utils/packageTypes.ts @@ -18,3 +18,7 @@ export type PackageJson = Except & { name: string; resolutionsExplained?: Record; } & Partial>; + +export type DependenciesRanges = Partial< + Record> +>;