From 76cdddf0c6b43e181a4e9b2fd71a1a75478e5ad9 Mon Sep 17 00:00:00 2001 From: Christophe Hurpeau Date: Sun, 29 Jan 2023 16:58:56 +0100 Subject: [PATCH] fix: ignore directory with no package.json with warning --- dist/definitions/check-package-with-workspaces.d.ts.map | 2 +- dist/definitions/utils/__mocks__/createReportError.d.ts | 4 ++-- .../utils/__mocks__/createReportError.d.ts.map | 2 +- dist/index-node16.mjs | 6 ++++-- dist/index-node16.mjs.map | 2 +- src/check-package-with-workspaces.ts | 8 ++++++-- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/dist/definitions/check-package-with-workspaces.d.ts.map b/dist/definitions/check-package-with-workspaces.d.ts.map index dcd0c36c..62adc214 100644 --- a/dist/definitions/check-package-with-workspaces.d.ts.map +++ b/dist/definitions/check-package-with-workspaces.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"check-package-with-workspaces.d.ts","sourceRoot":"","sources":["../../src/check-package-with-workspaces.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,uDAAuD,EACvD,qDAAqD,EACrD,kDAAkD,EACnD,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAKtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,sBAAsB,CAAC;AAGlF,UAAU,0DACR,SAAQ,kDAAkD;IAC1D,yBAAyB,EAAE,qDAAqD,CAAC,2BAA2B,CAAC,CAAC;CAC/G;AAED,KAAK,2DAA2D,GAAG,MAAM,CAEvE,GAAG,GAAG,MAAM,EACZ,0DAA0D,CAC3D,CAAC;AAEF,KAAK,uEAAuE,GAC1E,MAAM,CAAC,MAAM,EAAE,uDAAuD,CAAC,CAAC;AAE1E,MAAM,WAAW,4CAA4C;IAC3D,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,+CAA+C,CAAC,EAAE,qCAAqC,CAAC;IACxF,yBAAyB,CAAC,EAAE,kDAAkD,CAAC;IAC/E,8BAA8B,CAAC,EAAE,2DAA2D,CAAC;IAC7F,8BAA8B,CAAC,EAAE,uDAAuD,CAAC;IACzF,0CAA0C,CAAC,EAAE,uEAAuE,CAAC;IACrH,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED,MAAM,WAAW,6BAA6B;IAC5C,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,gBAAgB,EAAE,CAChB,OAAO,CAAC,EAAE,4CAA4C,KACnD,6BAA6B,CAAC;IAEnC,OAAO,EAAE,CACP,QAAQ,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,KAC9C,6BAA6B,CAAC;IACnC,OAAO,EAAE,CACP,QAAQ,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,KAC9C,6BAA6B,CAAC;IACnC,GAAG,EAAE,CACH,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,KAC9C,6BAA6B,CAAC;CACpC;AAED,UAAU,uCACR,SAAQ,MAAM,CAAC,yBAAyB,EAAE,WAAW,CAAC;IACtD,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC;CAC3C;AAED,wBAAgB,gCAAgC,CAC9C,yBAAyB,GAAE,uCAA4C,GACtE,6BAA6B,CAyL/B"} \ No newline at end of file +{"version":3,"file":"check-package-with-workspaces.d.ts","sourceRoot":"","sources":["../../src/check-package-with-workspaces.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,uDAAuD,EACvD,qDAAqD,EACrD,kDAAkD,EACnD,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAKtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,sBAAsB,CAAC;AAGlF,UAAU,0DACR,SAAQ,kDAAkD;IAC1D,yBAAyB,EAAE,qDAAqD,CAAC,2BAA2B,CAAC,CAAC;CAC/G;AAED,KAAK,2DAA2D,GAAG,MAAM,CAEvE,GAAG,GAAG,MAAM,EACZ,0DAA0D,CAC3D,CAAC;AAEF,KAAK,uEAAuE,GAC1E,MAAM,CAAC,MAAM,EAAE,uDAAuD,CAAC,CAAC;AAE1E,MAAM,WAAW,4CAA4C;IAC3D,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,+CAA+C,CAAC,EAAE,qCAAqC,CAAC;IACxF,yBAAyB,CAAC,EAAE,kDAAkD,CAAC;IAC/E,8BAA8B,CAAC,EAAE,2DAA2D,CAAC;IAC7F,8BAA8B,CAAC,EAAE,uDAAuD,CAAC;IACzF,0CAA0C,CAAC,EAAE,uEAAuE,CAAC;IACrH,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED,MAAM,WAAW,6BAA6B;IAC5C,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,gBAAgB,EAAE,CAChB,OAAO,CAAC,EAAE,4CAA4C,KACnD,6BAA6B,CAAC;IAEnC,OAAO,EAAE,CACP,QAAQ,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,KAC9C,6BAA6B,CAAC;IACnC,OAAO,EAAE,CACP,QAAQ,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,KAC9C,6BAA6B,CAAC;IACnC,GAAG,EAAE,CACH,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,CAAC,YAAY,EAAE,eAAe,KAAK,IAAI,KAC9C,6BAA6B,CAAC;CACpC;AAED,UAAU,uCACR,SAAQ,MAAM,CAAC,yBAAyB,EAAE,WAAW,CAAC;IACtD,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC;CAC3C;AAED,wBAAgB,gCAAgC,CAC9C,yBAAyB,GAAE,uCAA4C,GACtE,6BAA6B,CA6L/B"} \ No newline at end of file diff --git a/dist/definitions/utils/__mocks__/createReportError.d.ts b/dist/definitions/utils/__mocks__/createReportError.d.ts index 2abc5265..1526490c 100644 --- a/dist/definitions/utils/__mocks__/createReportError.d.ts +++ b/dist/definitions/utils/__mocks__/createReportError.d.ts @@ -1,4 +1,4 @@ /// -export declare const mockReportError: jest.Mock; -export declare const createReportError: jest.Mock; +export declare const mockReportError: jest.Mock; +export declare const createReportError: jest.Mock; //# sourceMappingURL=createReportError.d.ts.map \ No newline at end of file diff --git a/dist/definitions/utils/__mocks__/createReportError.d.ts.map b/dist/definitions/utils/__mocks__/createReportError.d.ts.map index 4b34388e..20ff5019 100644 --- a/dist/definitions/utils/__mocks__/createReportError.d.ts.map +++ b/dist/definitions/utils/__mocks__/createReportError.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"createReportError.d.ts","sourceRoot":"","sources":["../../../../src/utils/__mocks__/createReportError.ts"],"names":[],"mappings":";AAAA,eAAO,MAAM,eAAe,0BAAY,CAAC;AACzC,eAAO,MAAM,iBAAiB,0BAA6C,CAAC"} \ No newline at end of file +{"version":3,"file":"createReportError.d.ts","sourceRoot":"","sources":["../../../../src/utils/__mocks__/createReportError.ts"],"names":[],"mappings":";AAAA,eAAO,MAAM,eAAe,qBAAY,CAAC;AACzC,eAAO,MAAM,iBAAiB,qBAA6C,CAAC"} \ No newline at end of file diff --git a/dist/index-node16.mjs b/dist/index-node16.mjs index c75ba45f..56882d19 100644 --- a/dist/index-node16.mjs +++ b/dist/index-node16.mjs @@ -866,8 +866,10 @@ function createCheckPackageWithWorkspaces(createCheckPackageOptions = {}) { cwd: pkgDirname }); match.forEach(pathMatch => { - const stat = fs.statSync(pathMatch); - if (!stat.isDirectory()) return; + if (!fs.existsSync(path.join(pathMatch, 'package.json'))) { + console.log(`Ignored potential directory, no package.json found: ${pathMatch}`); + return; + } const subPkgDirectoryPath = path.relative(process.cwd(), pathMatch); workspacePackagesPaths.push(subPkgDirectoryPath); }); diff --git a/dist/index-node16.mjs.map b/dist/index-node16.mjs.map index c3f81aa2..0691cce0 100644 --- a/dist/index-node16.mjs.map +++ b/dist/index-node16.mjs.map @@ -1 +1 @@ -{"version":3,"file":"index-node16.mjs","sources":["../src/utils/object.ts","../src/utils/createReportError.ts","../src/checks/checkDuplicateDependencies.ts","../src/checks/checkDirectDuplicateDependencies.ts","../src/checks/checkPeerDependencies.ts","../src/checks/checkDirectPeerDependencies.ts","../src/checks/checkExactVersions.ts","../src/checks/checkIdenticalVersions.ts","../src/checks/checkIdenticalVersionsThanDependency.ts","../src/checks/checkMinRangeSatisfies.ts","../src/checks/checkNoDependencies.ts","../src/checks/checkResolutionsHasExplanation.ts","../src/checks/checkResolutionsVersionsMatch.ts","../src/checks/checkSatisfiesVersions.ts","../src/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 isPkgLibrary: boolean,\n depType: DependencyTypes,\n searchIn: DependencyTypes[],\n depPkg: PackageJson,\n onlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const dependencies = depPkg[depType];\n if (!dependencies) return;\n\n const searchInExisting = searchIn.filter((type) => pkg[type]);\n\n for (const [depKey, range] of Object.entries(dependencies)) {\n const versionsIn = searchInExisting.filter((type) => pkg[type]![depKey]);\n\n let allowDuplicated = false;\n if (\n versionsIn.length === 2 &&\n isPkgLibrary &&\n versionsIn.includes('dependencies') &&\n versionsIn.includes('devDependencies')\n ) {\n const depVersion = pkg.dependencies![depKey];\n const devDepVersion = pkg.devDependencies![depKey];\n\n if (depVersion && depVersion === devDepVersion) {\n reportError(\n `Invalid \"${depKey}\" has same version in dependencies and devDependencies`,\n 'please place it only in dependencies or use range in dependencies',\n );\n continue;\n }\n allowDuplicated = true;\n }\n\n if (\n versionsIn.length > 2 ||\n (versionsIn.length === 2 && !allowDuplicated)\n ) {\n reportError(\n `Invalid \"${depKey}\" present in ${versionsIn.join(' and ')}`,\n 'please place it only in dependencies',\n );\n } else {\n const versions = versionsIn.map((type) => pkg[type]![depKey]);\n\n versions.forEach((version, index) => {\n if (version.startsWith('file:') || range.startsWith('file:')) return;\n // https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n if (\n version.startsWith('workspace:') ||\n range.startsWith('workspace:')\n ) {\n return;\n }\n\n if (\n semver.satisfies(version, range, {\n includePrerelease: true,\n }) ||\n semver.intersects(version, range, {\n includePrerelease: true,\n })\n ) {\n return;\n }\n\n // Ignore reporting duplicate when there's a resolution for it\n if (pkg.resolutions?.[depKey]) {\n return;\n }\n\n const versionInType = versionsIn[index];\n\n reportError(\n `Invalid duplicate dependency \"${depKey}\"`,\n `\"${versions[0]}\" (in ${versionInType}) should satisfies \"${range}\" from \"${depPkg.name}\" ${depType}.`,\n onlyWarnsForCheck.shouldWarnsFor(depKey),\n );\n });\n }\n }\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n reportNotWarnedForMapping,\n createReportError,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkDuplicateDependencies } from './checkDuplicateDependencies';\n\nexport async function checkDirectDuplicateDependencies(\n pkg: PackageJson,\n pkgPathName: string,\n isPackageALibrary: boolean,\n depType: DependencyTypes,\n getDependencyPackageJson: GetDependencyPackageJson,\n onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n reportErrorNamePrefix = '',\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError(\n `${reportErrorNamePrefix}Direct Duplicate Dependencies`,\n pkgPathName,\n );\n\n const checks: {\n type: DependencyTypes;\n searchIn: DependencyTypes[];\n }[] = [\n {\n type: 'devDependencies',\n searchIn: ['devDependencies', 'dependencies'],\n },\n { type: 'dependencies', searchIn: ['devDependencies', 'dependencies'] },\n ];\n\n 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 isPackageALibrary,\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","import semver from 'semver';\nimport type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedFor,\n} from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsFor, OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckExactVersionsOptions {\n getDependencyPackageJson?: GetDependencyPackageJson;\n onlyWarnsForCheck: OnlyWarnsForCheck;\n internalExactVersionsIgnore?: OnlyWarnsFor;\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nconst isVersionRange = (version: string): boolean =>\n version.startsWith('^') ||\n version.startsWith('~') ||\n version.startsWith('>') ||\n version.startsWith('<');\n\nexport async function checkExactVersions(\n pkg: PackageJson,\n pkgPathName: string,\n types: DependencyTypes[],\n {\n getDependencyPackageJson,\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckExactVersionsOptions,\n): Promise {\n const reportError = customCreateReportError('Exact versions', pkgPathName);\n\n for (const type of types) {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) continue;\n\n for (const [dependencyName, versionConst] of Object.entries(\n pkgDependencies,\n )) {\n let version = versionConst;\n if (version.startsWith('npm:')) {\n const match = /^npm:.*@(.*)$/.exec(version);\n if (!match) throw new Error(`Invalid version match: ${version}`);\n const [, realVersion] = match;\n version = realVersion;\n }\n\n if (isVersionRange(version)) {\n if (internalExactVersionsIgnore?.includes(dependencyName)) {\n continue;\n }\n const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName);\n if (!shouldOnlyWarn && tryToAutoFix && getDependencyPackageJson) {\n let resolvedDep;\n try {\n resolvedDep = 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(\n version[1] === '=' ? 2 : 1,\n )}\".`,\n shouldOnlyWarn,\n );\n }\n }\n }\n }\n\n reportNotWarnedFor(reportError, onlyWarnsForCheck);\n}\n","import { createReportError } from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n deps: Record>>,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Identical Versions',\n pkgPathName,\n );\n\n getKeys(deps).forEach((depKey) => {\n const version = pkgDependencies[depKey];\n if (!version) {\n reportError(`Unexpected missing ${type} for \"${depKey}\".`);\n return;\n }\n\n const depConfigArrayOrObject = deps[depKey];\n const depConfig = Array.isArray(depConfigArrayOrObject)\n ? { [type]: depConfigArrayOrObject }\n : depConfigArrayOrObject;\n\n getKeys(depConfig).forEach((depKeyType) => {\n const pkgDependenciesType = pkg[depKeyType] || {};\n depConfig[depKeyType]?.forEach((depKeyIdentical) => {\n const value = pkgDependenciesType[depKeyIdentical];\n if (!value) {\n reportError(\n `Missing \"${depKeyIdentical}\" in ${depKeyType}`,\n `it should be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKeyIdentical}\" in ${depKeyType}`,\n `expecting \"${value}\" be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n });\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersionsThanDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n `Same Versions than ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const version = dependencies[depKey];\n if (!version) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n if (version.startsWith('^') || version.startsWith('~')) {\n reportError(\n `Unexpected range dependency in \"${depPkg.name}\" for \"${depKey}\"`,\n 'perhaps use checkSatisfiesVersionsFromDependency() instead.',\n );\n return;\n }\n\n const value = pkgDependencies[depKey];\n\n if (!value) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `expecting to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `expecting \"${value}\" to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n}\n","import semver from 'semver';\nimport semverUtils from 'semver-utils';\nimport type { PackageJson } from 'type-fest';\nimport { createReportError } from '../utils/createReportError';\nimport { getEntries } from '../utils/object';\nimport type { DependencyTypes } from '../utils/packageTypes';\n\nexport interface CheckMinRangeSatisfiesOptions {\n customCreateReportError?: typeof createReportError;\n tryToAutoFix?: boolean;\n}\n\nexport function checkMinRangeSatisfies(\n pkgPathName: string,\n pkg: PackageJson,\n type1: DependencyTypes = 'dependencies',\n type2: DependencyTypes = 'devDependencies',\n {\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckMinRangeSatisfiesOptions = {},\n): void {\n const dependencies1 = pkg[type1];\n const dependencies2 = pkg[type2];\n\n if (!dependencies1 || !dependencies2) {\n return;\n }\n\n const reportError = customCreateReportError(\n `\"${type1}\" minimum range satisfies \"${type2}\"`,\n pkgPathName,\n );\n\n for (const [depName, depRange1] of getEntries(dependencies1)) {\n const depRange2 = dependencies2[depName];\n if (!depRange2 || !depRange1) continue;\n\n const minDepRange1 = semver.minVersion(depRange1)?.version || depRange1;\n\n if (\n !semver.satisfies(minDepRange1, depRange2, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n const depRange1Parsed = semverUtils.parseRange(depRange1);\n dependencies1[depName] =\n (depRange1Parsed[0]?.operator || '') +\n (semver.minVersion(depRange2)?.version || depRange2);\n } else {\n reportError(\n `Invalid \"${depName}\" in ${type1}`,\n `\"${depRange1}\" should satisfies \"${depRange2}\" from \"${type2}\".`,\n );\n }\n }\n }\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\n\nexport function checkNoDependencies(\n pkg: PackageJson,\n pkgPath: string,\n type: DependencyTypes = 'dependencies',\n moveToSuggestion: DependencyTypes = 'devDependencies',\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n const reportError = customCreateReportError('No dependencies', pkgPath);\n reportError(\n `Unexpected ${type}`,\n `you should move them in ${moveToSuggestion}`,\n );\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport type CheckResolutionMessage = (\n depKey: string,\n resolutionExplainedMessage: string,\n checkMessageHelpers: {\n getDependencyPackageJson: GetDependencyPackageJson;\n },\n) => string | undefined;\n\nexport function checkResolutionsHasExplanation(\n pkg: PackageJson,\n pkgPathName: string,\n checkMessage: CheckResolutionMessage,\n getDependencyPackageJson: GetDependencyPackageJson,\n customCreateReportError = createReportError,\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n const reportError = customCreateReportError(\n 'Resolutions has explanation',\n pkgPathName,\n );\n\n Object.keys(pkgResolutions).forEach((depKey) => {\n if (!pkgResolutionsExplained[depKey]) {\n reportError(`Missing \"${depKey}\" in resolutionsExplained.`);\n }\n });\n\n Object.keys(pkgResolutionsExplained).forEach((depKey) => {\n if (!pkgResolutions[depKey]) {\n reportError(\n `Found \"${depKey}\" in resolutionsExplained but not in resolutions.`,\n );\n } else {\n const error = checkMessage(depKey, pkgResolutionsExplained[depKey], {\n getDependencyPackageJson,\n });\n if (error) {\n reportError(\n `Invalid message for \"${depKey}\" in resolutionsExplained`,\n `${error}.`,\n );\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport interface CheckResolutionsVersionsMatchOptions {\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkResolutionsVersionsMatch(\n pkg: PackageJson,\n pkgPathName: string,\n {\n tryToAutoFix,\n customCreateReportError = createReportError,\n }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const reportError = customCreateReportError(\n 'Resolutions match other dependencies',\n pkgPathName,\n );\n\n Object.entries(pkgResolutions).forEach(([depName, resolutionDepVersion]) => {\n (['dependencies', 'devDependencies'] as const).forEach((depType) => {\n const range = pkg?.[depType]?.[depName];\n\n if (!range) return;\n\n if (\n !semver.satisfies(resolutionDepVersion, range, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n pkg[depType]![depName] = resolutionDepVersion;\n } else {\n reportError(\n `Invalid \"${depName}\" in ${depType}`,\n `expecting \"${range}\" be \"${resolutionDepVersion}\" from resolutions.`,\n );\n }\n }\n });\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckSatisfiesVersionsOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n dependenciesRanges: Record,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsOptions = {},\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Satisfies Versions',\n pkgPathName,\n );\n\n Object.entries(dependenciesRanges).forEach(([depKey, range]) => {\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `\"${version}\" (in \"${depKey}\") should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\n}\n","import 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 { checkMinRangeSatisfies } from './checks/checkMinRangeSatisfies';\nimport { checkNoDependencies } from './checks/checkNoDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsHasExplanation } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsVersionsMatch } from './checks/checkResolutionsVersionsMatch';\nimport { checkSatisfiesVersions } from './checks/checkSatisfiesVersions';\nimport { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency';\nimport { checkSatisfiesVersionsInDependency } from './checks/checkSatisfiesVersionsInDependency';\nimport type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { createGetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { getEntries } from './utils/object';\nimport type {\n DependenciesRanges,\n DependencyName,\n DependencyTypes,\n PackageJson,\n} from './utils/packageTypes';\nimport { readPkgJson, writePkgJson } from './utils/pkgJsonUtils';\nimport type {\n OnlyWarnsForOptionalDependencyMapping,\n OnlyWarnsFor,\n OnlyWarnsForDependencyMapping,\n} from './utils/warnForUtils';\nimport {\n createOnlyWarnsForArrayCheck,\n createOnlyWarnsForMappingCheck,\n} from './utils/warnForUtils';\n\nexport interface CreateCheckPackageOptions {\n packageDirectoryPath?: string;\n isLibrary?: boolean | ((pkg: PackageJson) => boolean);\n /** @internal */\n internalWorkspacePkgDirectoryPath?: string;\n}\n\nexport interface CheckDirectPeerDependenciesOptions {\n missingOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n invalidOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n internalMissingConfigName?: string;\n internalInvalidConfigName?: string;\n}\n\nexport interface CheckDirectDuplicateDependenciesOptions {\n onlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n internalConfigName?: string;\n}\n\nexport interface OnlyWarnsForInPackageCheckPackageRecommendedOption {\n exactVersions: OnlyWarnsFor;\n}\n\nexport interface OnlyWarnsForInDependencyCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsFor;\n missingPeerDependency: OnlyWarnsFor;\n invalidPeerDependencyVersion: OnlyWarnsFor;\n}\n\nexport type OnlyWarnsForInDependenciesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n '*' | string,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption\n>;\n\nexport interface CheckRecommendedOptions {\n /** default is true for libraries, false otherwise */\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsForInPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n /** @internal */\n internalExactVersionsIgnore?: OnlyWarnsFor;\n /** function to check the value in the \"resolutionExplained\" key in package.json */\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckExactVersionsOptions {\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsFor?: OnlyWarnsFor;\n /** @internal */\n internalExactVersionsIgnore?: OnlyWarnsFor;\n}\n\nexport interface CheckPackageApi {\n run: () => Promise;\n\n /** @internal */\n pkg: PackageJson;\n /** @internal */\n pkgDirname: string;\n /** @internal */\n pkgPathName: string;\n /** @internal */\n isPkgLibrary: boolean;\n /** @internal */\n getDependencyPackageJson: GetDependencyPackageJson;\n\n checkExactVersions: (options?: CheckExactVersionsOptions) => CheckPackageApi;\n\n checkResolutionsVersionsMatch: () => CheckPackageApi;\n\n checkExactDevVersions: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n\n checkNoDependencies: (\n type?: DependencyTypes,\n moveToSuggestion?: DependencyTypes,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectPeerDependencies({\n * invalidOnlyWarnsFor: ['semver'],\n * })\n * ```\n */\n checkDirectPeerDependencies: (\n options?: CheckDirectPeerDependenciesOptions,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectDuplicateDependencies({\n * invalidOnlyWarnsFor: { '*': 'type-fest' },\n * })\n * ```\n */\n checkDirectDuplicateDependencies: (\n options?: CheckDirectDuplicateDependenciesOptions,\n ) => CheckPackageApi;\n\n checkResolutionsHasExplanation: (\n checkMessage?: CheckResolutionMessage,\n ) => CheckPackageApi;\n\n checkRecommended: (options?: CheckRecommendedOptions) => CheckPackageApi;\n\n /**\n * @example\n * Check that your package.json contains the same version of @babel/core than react-scripts, both in resolutions and devDependencies\n * ```\n * .checkIdenticalVersionsThanDependency('react-scripts', {\n * resolutions: ['@babel/core'],\n * devDependencies: ['@babel/core'],\n * })\n * ```\n */\n checkIdenticalVersionsThanDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkIdenticalVersionsThanDevDependencyOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range passed in config\n *\n * @example\n * ```\n * .checkSatisfiesVersions({\n * devDependencies: {\n * eslint: '^8.0.0'\n * },\n * })\n * ```\n */\n checkSatisfiesVersions: (\n dependencies: Partial<\n Record>\n >,\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range set in another dependencies\n * @example\n * ```\n * .checkSatisfiesVersionsFromDependency('@pob/eslint-config-typescript', {\n * devDependencies: [\n * '@typescript-eslint/eslint-plugin',\n * '@typescript-eslint/parser',\n * ],\n * })\n * ```\n */\n checkSatisfiesVersionsFromDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkSatisfiesVersionsInDevDependenciesOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies have the exact same version that another dependency also present in your package.json\n * @example\n * The react-dom version should match react, so this check will ensure it does\n * ```\n * .checkIdenticalVersions({\n * dependencies: {\n * react: {\n * dependencies: ['react-dom'],\n * devDependencies: ['react-test-renderer'],\n * },\n * },\n * })\n * ```\n */\n checkIdenticalVersions: (dependencies: {\n resolutions?: Record;\n dependencies?: Record;\n devDependencies?: Record;\n }) => CheckPackageApi;\n\n checkSatisfiesVersionsBetweenDependencies: (\n depName1: string,\n depName2: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check versions in a dependency\n * Also useable to check if a dependency is not present\n *\n * @example\n * Checking if `@lerna/version` has no dependency `@nrwl/devkit`\n * ```\n * .checkSatisfiesVersionsInDependency('@lerna/version', {\n * dependencies: {\n * '@nrwl/devkit': null,\n * },\n * })\n * ```\n */\n checkSatisfiesVersionsInDependency: (\n depName: string,\n dependenciesRanges: DependenciesRanges,\n ) => CheckPackageApi;\n\n checkMinRangeDependenciesSatisfiesDevDependencies: () => CheckPackageApi;\n}\n\nexport function createCheckPackage({\n packageDirectoryPath = '.',\n internalWorkspacePkgDirectoryPath,\n isLibrary = false,\n}: CreateCheckPackageOptions = {}): CheckPackageApi {\n const pkgDirname = path.resolve(packageDirectoryPath);\n const pkgPath = `${pkgDirname}/package.json`;\n const pkgPathName = `${packageDirectoryPath}/package.json`;\n const pkg = readPkgJson(pkgPath);\n const copyPkg: PackageJson = JSON.parse(JSON.stringify(pkg)) as PackageJson;\n const isPkgLibrary =\n typeof isLibrary === 'function' ? isLibrary(pkg) : isLibrary;\n\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 isPkgLibrary,\n getDependencyPackageJson,\n checkExactVersions({\n onlyWarnsFor,\n internalExactVersionsIgnore,\n allowRangeVersionsInDependencies = true,\n } = {}) {\n jobs.push(\n new Job(this.checkExactVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(\n pkg,\n pkgPathName,\n !allowRangeVersionsInDependencies\n ? ['dependencies', 'devDependencies', 'resolutions']\n : ['devDependencies', 'resolutions'],\n {\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n getDependencyPackageJson,\n tryToAutoFix,\n },\n );\n }),\n );\n return this;\n },\n\n checkResolutionsVersionsMatch() {\n checkResolutionsVersionsMatch(pkg, pkgPathName, {\n tryToAutoFix,\n });\n return this;\n },\n\n checkExactDevVersions({ onlyWarnsFor } = {}) {\n jobs.push(\n new Job(this.checkExactDevVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactDevVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(pkg, pkgPathName, ['devDependencies'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n }),\n );\n return this;\n },\n\n checkNoDependencies(\n type = 'dependencies',\n moveToSuggestion = 'devDependencies',\n ) {\n checkNoDependencies(pkg, pkgPathName, type, moveToSuggestion);\n return this;\n },\n\n checkDirectPeerDependencies({\n missingOnlyWarnsFor,\n invalidOnlyWarnsFor,\n internalMissingConfigName = 'missingOnlyWarnsFor',\n internalInvalidConfigName = 'invalidOnlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectPeerDependencies.name, async () => {\n const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck(\n internalMissingConfigName,\n missingOnlyWarnsFor,\n );\n const invalidOnlyWarnsForCheck =\n internalInvalidConfigName === internalMissingConfigName\n ? missingOnlyWarnsForCheck\n : createOnlyWarnsForMappingCheck(\n internalInvalidConfigName,\n invalidOnlyWarnsFor,\n );\n await checkDirectPeerDependencies(\n isPkgLibrary,\n pkg,\n pkgPathName,\n getDependencyPackageJson,\n missingOnlyWarnsForCheck,\n invalidOnlyWarnsForCheck,\n );\n }),\n );\n return this;\n },\n\n checkDirectDuplicateDependencies({\n onlyWarnsFor,\n internalConfigName = 'onlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectDuplicateDependencies.name, async () => {\n await checkDirectDuplicateDependencies(\n pkg,\n pkgPathName,\n isPkgLibrary,\n 'dependencies',\n getDependencyPackageJson,\n createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor),\n );\n }),\n );\n return this;\n },\n\n checkResolutionsHasExplanation(\n checkMessage: CheckResolutionMessage = (depKey, message) => undefined,\n ) {\n checkResolutionsHasExplanation(\n pkg,\n pkgPathName,\n checkMessage,\n getDependencyPackageJson,\n );\n return this;\n },\n\n checkRecommended({\n onlyWarnsForInPackage,\n onlyWarnsForInDependencies,\n allowRangeVersionsInDependencies = isPkgLibrary,\n internalExactVersionsIgnore,\n checkResolutionMessage,\n } = {}) {\n let internalMissingPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n let internalInvalidPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n let internalDirectDuplicateDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n\n const exactVersionsOnlyWarnsFor =\n onlyWarnsForInPackage?.exactVersions || [];\n\n if (onlyWarnsForInDependencies) {\n internalDirectDuplicateDependenciesOnlyWarnsFor = {};\n internalMissingPeerDependenciesOnlyWarnsFor = {};\n internalInvalidPeerDependenciesOnlyWarnsFor = {};\n\n getEntries(onlyWarnsForInDependencies).forEach(\n ([dependencyNameOrSpecialKey, onlyWarnsForValue]) => {\n if (onlyWarnsForValue.duplicateDirectDependency) {\n (\n internalDirectDuplicateDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.duplicateDirectDependency;\n }\n if (onlyWarnsForValue.missingPeerDependency) {\n (\n internalMissingPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.missingPeerDependency;\n }\n if (onlyWarnsForValue.invalidPeerDependencyVersion) {\n (\n internalInvalidPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.invalidPeerDependencyVersion;\n }\n },\n );\n }\n\n this.checkExactVersions({\n allowRangeVersionsInDependencies,\n onlyWarnsFor: exactVersionsOnlyWarnsFor,\n internalExactVersionsIgnore,\n });\n\n this.checkResolutionsVersionsMatch();\n this.checkResolutionsHasExplanation(checkResolutionMessage);\n\n this.checkDirectPeerDependencies({\n missingOnlyWarnsFor: internalMissingPeerDependenciesOnlyWarnsFor,\n invalidOnlyWarnsFor: internalInvalidPeerDependenciesOnlyWarnsFor,\n internalMissingConfigName:\n 'onlyWarnsForInDependencies.missingPeerDependency',\n internalInvalidConfigName:\n 'onlyWarnsForInDependencies.invalidPeerDependencyVersion',\n });\n\n this.checkDirectDuplicateDependencies({\n onlyWarnsFor: internalDirectDuplicateDependenciesOnlyWarnsFor,\n internalConfigName:\n 'onlyWarnsForInDependencies.duplicateDirectDependency',\n });\n\n if (isPkgLibrary) {\n this.checkMinRangeDependenciesSatisfiesDevDependencies();\n }\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 checkMinRangeDependenciesSatisfiesDevDependencies() {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n checkMinRangeSatisfies(\n pkgPathName,\n pkg,\n 'dependencies',\n 'devDependencies',\n { tryToAutoFix },\n );\n }),\n );\n return this;\n },\n };\n}\n","/* eslint-disable max-lines */\nimport fs from 'fs';\nimport path from 'path';\nimport glob from 'glob';\nimport type { Except } from 'type-fest';\nimport type {\n CreateCheckPackageOptions,\n CheckPackageApi,\n OnlyWarnsForInDependenciesCheckPackageRecommendedOption,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption,\n OnlyWarnsForInPackageCheckPackageRecommendedOption,\n} from './check-package';\nimport { createCheckPackage } from './check-package';\nimport { checkDuplicateDependencies } from './checks/checkDuplicateDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport {\n createReportError,\n reportNotWarnedForMapping,\n} from './utils/createReportError';\nimport type { PackageJson } from './utils/packageTypes';\nimport type { OnlyWarnsForOptionalDependencyMapping } from './utils/warnForUtils';\nimport { createOnlyWarnsForMappingCheck } from './utils/warnForUtils';\n\ninterface OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n extends OnlyWarnsForInPackageCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsForInDependencyCheckPackageRecommendedOption['duplicateDirectDependency'];\n}\n\ntype OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n '*' | string,\n OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n>;\n\ntype OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption =\n Record;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n allowRangeVersionsInLibraries?: boolean;\n monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\n run: () => Promise;\n\n checkRecommended: (\n options?: CheckPackageWithWorkspacesRecommendedOptions,\n ) => CheckPackageWithWorkspacesApi;\n\n forRoot: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n forEach: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n for: (\n id: string,\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n}\n\ninterface CreateCheckPackageWithWorkspacesOptions\n extends Except {\n isLibrary?: (pkg: PackageJson) => boolean;\n}\n\nexport function createCheckPackageWithWorkspaces(\n createCheckPackageOptions: CreateCheckPackageWithWorkspacesOptions = {},\n): CheckPackageWithWorkspacesApi {\n const checkPackage = createCheckPackage({\n ...createCheckPackageOptions,\n isLibrary: false,\n });\n const { pkg, pkgDirname } = checkPackage;\n\n const pkgWorkspaces: string[] | undefined =\n pkg.workspaces && !Array.isArray(pkg.workspaces)\n ? pkg.workspaces.packages\n : pkg.workspaces;\n\n if (!pkgWorkspaces) {\n throw new Error('Package is missing \"workspaces\"');\n }\n\n const workspacePackagesPaths: string[] = [];\n\n if (pkgWorkspaces) {\n pkgWorkspaces.forEach((pattern) => {\n const match = 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({\n ...createCheckPackageOptions,\n packageDirectoryPath: subPkgDirectoryPath,\n internalWorkspacePkgDirectoryPath:\n createCheckPackageOptions.packageDirectoryPath,\n });\n return [checkPkg.pkg.name, checkPkg];\n }),\n );\n\n return {\n async run() {\n for (const checksWorkspace of [\n checkPackage,\n ...checksWorkspaces.values(),\n ]) {\n await checksWorkspace.run();\n }\n },\n\n checkRecommended({\n allowRangeVersionsInLibraries = true,\n onlyWarnsForInRootPackage,\n onlyWarnsForInMonorepoPackages,\n onlyWarnsForInRootDependencies,\n onlyWarnsForInMonorepoPackagesDependencies = {},\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n } = {}) {\n checkPackage.checkNoDependencies();\n checkPackage.checkRecommended({\n onlyWarnsForInPackage: onlyWarnsForInRootPackage,\n onlyWarnsForInDependencies: onlyWarnsForInRootDependencies,\n checkResolutionMessage,\n });\n\n const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck =\n createOnlyWarnsForMappingCheck(\n 'monorepoDirectDuplicateDependenciesOnlyWarnsFor',\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n );\n\n const previousCheckedWorkspaces = new Map();\n checksWorkspaces.forEach((checkSubPackage, id) => {\n checkSubPackage.checkRecommended({\n allowRangeVersionsInDependencies: checkSubPackage.isPkgLibrary\n ? allowRangeVersionsInLibraries\n : false,\n onlyWarnsForInPackage: onlyWarnsForInMonorepoPackages\n ? {\n ...onlyWarnsForInMonorepoPackages['*'],\n ...onlyWarnsForInMonorepoPackages[checkSubPackage.pkg.name],\n }\n : undefined,\n onlyWarnsForInDependencies:\n onlyWarnsForInMonorepoPackagesDependencies[\n 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 checkSubPackage.isPkgLibrary,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n // previous packages\n previousCheckedWorkspaces.forEach((previousCheckSubPackage) => {\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'dependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'peerDependencies',\n ['peerDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n });\n\n previousCheckedWorkspaces.set(id, checkSubPackage);\n });\n reportNotWarnedForMapping(\n createReportError(\n 'Monorepo Direct Duplicate Dependencies',\n checkPackage.pkgPathName,\n ),\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck,\n );\n\n return this;\n },\n\n forRoot(callback) {\n callback(checkPackage);\n return this;\n },\n\n forEach(callback) {\n checksWorkspaces.forEach((checkSubPackage) => {\n callback(checkSubPackage);\n });\n return this;\n },\n\n for(id, callback) {\n const packageCheck = checksWorkspaces.get(id);\n if (!packageCheck) {\n throw new Error(\n `Invalid package name: ${id}. Known package names: \"${[\n ...checksWorkspaces.keys(),\n ].join('\",\"')}\"`,\n );\n }\n callback(packageCheck);\n return this;\n },\n };\n}\n"],"names":["getKeys","o","Object","keys","getEntries","entries","titleDisplayed","pkgPathDisplayed","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","isPkgLibrary","depType","searchIn","depPkg","dependencies","searchInExisting","filter","type","depKey","range","versionsIn","allowDuplicated","includes","depVersion","devDepVersion","devDependencies","versions","version","index","startsWith","semver","satisfies","includePrerelease","intersects","resolutions","versionInType","name","shouldWarnsFor","checkDirectDuplicateDependencies","isPackageALibrary","getDependencyPackageJson","reportErrorNamePrefix","customCreateReportError","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","shouldOnlyWarn","resolvedDep","slice","checkIdenticalVersions","deps","depConfigArrayOrObject","depConfig","Array","isArray","depKeyType","pkgDependenciesType","depKeyIdentical","value","checkIdenticalVersionsThanDependency","depKeys","checkMinRangeSatisfies","type1","type2","dependencies1","dependencies2","depRange1","depRange2","minDepRange1","depRange1Parsed","semverUtils","parseRange","operator","checkNoDependencies","pkgPath","moveToSuggestion","checkResolutionsHasExplanation","checkMessage","pkgResolutions","pkgResolutionsExplained","resolutionsExplained","checkResolutionsVersionsMatch","resolutionDepVersion","checkSatisfiesVersions","dependenciesRanges","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","packageDirectoryPath","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","checkMinRangeDependenciesSatisfiesDevDependencies","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","reportMonorepoDDDError","previousCheckSubPackage","forRoot","callback","for","packageCheck"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index-node16.mjs","sources":["../src/utils/object.ts","../src/utils/createReportError.ts","../src/checks/checkDuplicateDependencies.ts","../src/checks/checkDirectDuplicateDependencies.ts","../src/checks/checkPeerDependencies.ts","../src/checks/checkDirectPeerDependencies.ts","../src/checks/checkExactVersions.ts","../src/checks/checkIdenticalVersions.ts","../src/checks/checkIdenticalVersionsThanDependency.ts","../src/checks/checkMinRangeSatisfies.ts","../src/checks/checkNoDependencies.ts","../src/checks/checkResolutionsHasExplanation.ts","../src/checks/checkResolutionsVersionsMatch.ts","../src/checks/checkSatisfiesVersions.ts","../src/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 isPkgLibrary: boolean,\n depType: DependencyTypes,\n searchIn: DependencyTypes[],\n depPkg: PackageJson,\n onlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const dependencies = depPkg[depType];\n if (!dependencies) return;\n\n const searchInExisting = searchIn.filter((type) => pkg[type]);\n\n for (const [depKey, range] of Object.entries(dependencies)) {\n const versionsIn = searchInExisting.filter((type) => pkg[type]![depKey]);\n\n let allowDuplicated = false;\n if (\n versionsIn.length === 2 &&\n isPkgLibrary &&\n versionsIn.includes('dependencies') &&\n versionsIn.includes('devDependencies')\n ) {\n const depVersion = pkg.dependencies![depKey];\n const devDepVersion = pkg.devDependencies![depKey];\n\n if (depVersion && depVersion === devDepVersion) {\n reportError(\n `Invalid \"${depKey}\" has same version in dependencies and devDependencies`,\n 'please place it only in dependencies or use range in dependencies',\n );\n continue;\n }\n allowDuplicated = true;\n }\n\n if (\n versionsIn.length > 2 ||\n (versionsIn.length === 2 && !allowDuplicated)\n ) {\n reportError(\n `Invalid \"${depKey}\" present in ${versionsIn.join(' and ')}`,\n 'please place it only in dependencies',\n );\n } else {\n const versions = versionsIn.map((type) => pkg[type]![depKey]);\n\n versions.forEach((version, index) => {\n if (version.startsWith('file:') || range.startsWith('file:')) return;\n // https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n if (\n version.startsWith('workspace:') ||\n range.startsWith('workspace:')\n ) {\n return;\n }\n\n if (\n semver.satisfies(version, range, {\n includePrerelease: true,\n }) ||\n semver.intersects(version, range, {\n includePrerelease: true,\n })\n ) {\n return;\n }\n\n // Ignore reporting duplicate when there's a resolution for it\n if (pkg.resolutions?.[depKey]) {\n return;\n }\n\n const versionInType = versionsIn[index];\n\n reportError(\n `Invalid duplicate dependency \"${depKey}\"`,\n `\"${versions[0]}\" (in ${versionInType}) should satisfies \"${range}\" from \"${depPkg.name}\" ${depType}.`,\n onlyWarnsForCheck.shouldWarnsFor(depKey),\n );\n });\n }\n }\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n reportNotWarnedForMapping,\n createReportError,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkDuplicateDependencies } from './checkDuplicateDependencies';\n\nexport async function checkDirectDuplicateDependencies(\n pkg: PackageJson,\n pkgPathName: string,\n isPackageALibrary: boolean,\n depType: DependencyTypes,\n getDependencyPackageJson: GetDependencyPackageJson,\n onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n reportErrorNamePrefix = '',\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError(\n `${reportErrorNamePrefix}Direct Duplicate Dependencies`,\n pkgPathName,\n );\n\n const checks: {\n type: DependencyTypes;\n searchIn: DependencyTypes[];\n }[] = [\n {\n type: 'devDependencies',\n searchIn: ['devDependencies', 'dependencies'],\n },\n { type: 'dependencies', searchIn: ['devDependencies', 'dependencies'] },\n ];\n\n 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 isPackageALibrary,\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","import semver from 'semver';\nimport type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedFor,\n} from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsFor, OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckExactVersionsOptions {\n getDependencyPackageJson?: GetDependencyPackageJson;\n onlyWarnsForCheck: OnlyWarnsForCheck;\n internalExactVersionsIgnore?: OnlyWarnsFor;\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nconst isVersionRange = (version: string): boolean =>\n version.startsWith('^') ||\n version.startsWith('~') ||\n version.startsWith('>') ||\n version.startsWith('<');\n\nexport async function checkExactVersions(\n pkg: PackageJson,\n pkgPathName: string,\n types: DependencyTypes[],\n {\n getDependencyPackageJson,\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckExactVersionsOptions,\n): Promise {\n const reportError = customCreateReportError('Exact versions', pkgPathName);\n\n for (const type of types) {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) continue;\n\n for (const [dependencyName, versionConst] of Object.entries(\n pkgDependencies,\n )) {\n let version = versionConst;\n if (version.startsWith('npm:')) {\n const match = /^npm:.*@(.*)$/.exec(version);\n if (!match) throw new Error(`Invalid version match: ${version}`);\n const [, realVersion] = match;\n version = realVersion;\n }\n\n if (isVersionRange(version)) {\n if (internalExactVersionsIgnore?.includes(dependencyName)) {\n continue;\n }\n const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName);\n if (!shouldOnlyWarn && tryToAutoFix && getDependencyPackageJson) {\n let resolvedDep;\n try {\n resolvedDep = 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(\n version[1] === '=' ? 2 : 1,\n )}\".`,\n shouldOnlyWarn,\n );\n }\n }\n }\n }\n\n reportNotWarnedFor(reportError, onlyWarnsForCheck);\n}\n","import { createReportError } from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n deps: Record>>,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Identical Versions',\n pkgPathName,\n );\n\n getKeys(deps).forEach((depKey) => {\n const version = pkgDependencies[depKey];\n if (!version) {\n reportError(`Unexpected missing ${type} for \"${depKey}\".`);\n return;\n }\n\n const depConfigArrayOrObject = deps[depKey];\n const depConfig = Array.isArray(depConfigArrayOrObject)\n ? { [type]: depConfigArrayOrObject }\n : depConfigArrayOrObject;\n\n getKeys(depConfig).forEach((depKeyType) => {\n const pkgDependenciesType = pkg[depKeyType] || {};\n depConfig[depKeyType]?.forEach((depKeyIdentical) => {\n const value = pkgDependenciesType[depKeyIdentical];\n if (!value) {\n reportError(\n `Missing \"${depKeyIdentical}\" in ${depKeyType}`,\n `it should be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKeyIdentical}\" in ${depKeyType}`,\n `expecting \"${value}\" be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n });\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersionsThanDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n `Same Versions than ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const version = dependencies[depKey];\n if (!version) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n if (version.startsWith('^') || version.startsWith('~')) {\n reportError(\n `Unexpected range dependency in \"${depPkg.name}\" for \"${depKey}\"`,\n 'perhaps use checkSatisfiesVersionsFromDependency() instead.',\n );\n return;\n }\n\n const value = pkgDependencies[depKey];\n\n if (!value) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `expecting to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `expecting \"${value}\" to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n}\n","import semver from 'semver';\nimport semverUtils from 'semver-utils';\nimport type { PackageJson } from 'type-fest';\nimport { createReportError } from '../utils/createReportError';\nimport { getEntries } from '../utils/object';\nimport type { DependencyTypes } from '../utils/packageTypes';\n\nexport interface CheckMinRangeSatisfiesOptions {\n customCreateReportError?: typeof createReportError;\n tryToAutoFix?: boolean;\n}\n\nexport function checkMinRangeSatisfies(\n pkgPathName: string,\n pkg: PackageJson,\n type1: DependencyTypes = 'dependencies',\n type2: DependencyTypes = 'devDependencies',\n {\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckMinRangeSatisfiesOptions = {},\n): void {\n const dependencies1 = pkg[type1];\n const dependencies2 = pkg[type2];\n\n if (!dependencies1 || !dependencies2) {\n return;\n }\n\n const reportError = customCreateReportError(\n `\"${type1}\" minimum range satisfies \"${type2}\"`,\n pkgPathName,\n );\n\n for (const [depName, depRange1] of getEntries(dependencies1)) {\n const depRange2 = dependencies2[depName];\n if (!depRange2 || !depRange1) continue;\n\n const minDepRange1 = semver.minVersion(depRange1)?.version || depRange1;\n\n if (\n !semver.satisfies(minDepRange1, depRange2, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n const depRange1Parsed = semverUtils.parseRange(depRange1);\n dependencies1[depName] =\n (depRange1Parsed[0]?.operator || '') +\n (semver.minVersion(depRange2)?.version || depRange2);\n } else {\n reportError(\n `Invalid \"${depName}\" in ${type1}`,\n `\"${depRange1}\" should satisfies \"${depRange2}\" from \"${type2}\".`,\n );\n }\n }\n }\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\n\nexport function checkNoDependencies(\n pkg: PackageJson,\n pkgPath: string,\n type: DependencyTypes = 'dependencies',\n moveToSuggestion: DependencyTypes = 'devDependencies',\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n const reportError = customCreateReportError('No dependencies', pkgPath);\n reportError(\n `Unexpected ${type}`,\n `you should move them in ${moveToSuggestion}`,\n );\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport type CheckResolutionMessage = (\n depKey: string,\n resolutionExplainedMessage: string,\n checkMessageHelpers: {\n getDependencyPackageJson: GetDependencyPackageJson;\n },\n) => string | undefined;\n\nexport function checkResolutionsHasExplanation(\n pkg: PackageJson,\n pkgPathName: string,\n checkMessage: CheckResolutionMessage,\n getDependencyPackageJson: GetDependencyPackageJson,\n customCreateReportError = createReportError,\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n const reportError = customCreateReportError(\n 'Resolutions has explanation',\n pkgPathName,\n );\n\n Object.keys(pkgResolutions).forEach((depKey) => {\n if (!pkgResolutionsExplained[depKey]) {\n reportError(`Missing \"${depKey}\" in resolutionsExplained.`);\n }\n });\n\n Object.keys(pkgResolutionsExplained).forEach((depKey) => {\n if (!pkgResolutions[depKey]) {\n reportError(\n `Found \"${depKey}\" in resolutionsExplained but not in resolutions.`,\n );\n } else {\n const error = checkMessage(depKey, pkgResolutionsExplained[depKey], {\n getDependencyPackageJson,\n });\n if (error) {\n reportError(\n `Invalid message for \"${depKey}\" in resolutionsExplained`,\n `${error}.`,\n );\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport interface CheckResolutionsVersionsMatchOptions {\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkResolutionsVersionsMatch(\n pkg: PackageJson,\n pkgPathName: string,\n {\n tryToAutoFix,\n customCreateReportError = createReportError,\n }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const reportError = customCreateReportError(\n 'Resolutions match other dependencies',\n pkgPathName,\n );\n\n Object.entries(pkgResolutions).forEach(([depName, resolutionDepVersion]) => {\n (['dependencies', 'devDependencies'] as const).forEach((depType) => {\n const range = pkg?.[depType]?.[depName];\n\n if (!range) return;\n\n if (\n !semver.satisfies(resolutionDepVersion, range, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n pkg[depType]![depName] = resolutionDepVersion;\n } else {\n reportError(\n `Invalid \"${depName}\" in ${depType}`,\n `expecting \"${range}\" be \"${resolutionDepVersion}\" from resolutions.`,\n );\n }\n }\n });\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckSatisfiesVersionsOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n dependenciesRanges: Record,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsOptions = {},\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Satisfies Versions',\n pkgPathName,\n );\n\n Object.entries(dependenciesRanges).forEach(([depKey, range]) => {\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `\"${version}\" (in \"${depKey}\") should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\n}\n","import 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 { checkMinRangeSatisfies } from './checks/checkMinRangeSatisfies';\nimport { checkNoDependencies } from './checks/checkNoDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsHasExplanation } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsVersionsMatch } from './checks/checkResolutionsVersionsMatch';\nimport { checkSatisfiesVersions } from './checks/checkSatisfiesVersions';\nimport { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency';\nimport { checkSatisfiesVersionsInDependency } from './checks/checkSatisfiesVersionsInDependency';\nimport type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { createGetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { getEntries } from './utils/object';\nimport type {\n DependenciesRanges,\n DependencyName,\n DependencyTypes,\n PackageJson,\n} from './utils/packageTypes';\nimport { readPkgJson, writePkgJson } from './utils/pkgJsonUtils';\nimport type {\n OnlyWarnsForOptionalDependencyMapping,\n OnlyWarnsFor,\n OnlyWarnsForDependencyMapping,\n} from './utils/warnForUtils';\nimport {\n createOnlyWarnsForArrayCheck,\n createOnlyWarnsForMappingCheck,\n} from './utils/warnForUtils';\n\nexport interface CreateCheckPackageOptions {\n packageDirectoryPath?: string;\n isLibrary?: boolean | ((pkg: PackageJson) => boolean);\n /** @internal */\n internalWorkspacePkgDirectoryPath?: string;\n}\n\nexport interface CheckDirectPeerDependenciesOptions {\n missingOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n invalidOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n internalMissingConfigName?: string;\n internalInvalidConfigName?: string;\n}\n\nexport interface CheckDirectDuplicateDependenciesOptions {\n onlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n internalConfigName?: string;\n}\n\nexport interface OnlyWarnsForInPackageCheckPackageRecommendedOption {\n exactVersions: OnlyWarnsFor;\n}\n\nexport interface OnlyWarnsForInDependencyCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsFor;\n missingPeerDependency: OnlyWarnsFor;\n invalidPeerDependencyVersion: OnlyWarnsFor;\n}\n\nexport type OnlyWarnsForInDependenciesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n '*' | string,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption\n>;\n\nexport interface CheckRecommendedOptions {\n /** default is true for libraries, false otherwise */\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsForInPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n /** @internal */\n internalExactVersionsIgnore?: OnlyWarnsFor;\n /** function to check the value in the \"resolutionExplained\" key in package.json */\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckExactVersionsOptions {\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsFor?: OnlyWarnsFor;\n /** @internal */\n internalExactVersionsIgnore?: OnlyWarnsFor;\n}\n\nexport interface CheckPackageApi {\n run: () => Promise;\n\n /** @internal */\n pkg: PackageJson;\n /** @internal */\n pkgDirname: string;\n /** @internal */\n pkgPathName: string;\n /** @internal */\n isPkgLibrary: boolean;\n /** @internal */\n getDependencyPackageJson: GetDependencyPackageJson;\n\n checkExactVersions: (options?: CheckExactVersionsOptions) => CheckPackageApi;\n\n checkResolutionsVersionsMatch: () => CheckPackageApi;\n\n checkExactDevVersions: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n\n checkNoDependencies: (\n type?: DependencyTypes,\n moveToSuggestion?: DependencyTypes,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectPeerDependencies({\n * invalidOnlyWarnsFor: ['semver'],\n * })\n * ```\n */\n checkDirectPeerDependencies: (\n options?: CheckDirectPeerDependenciesOptions,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectDuplicateDependencies({\n * invalidOnlyWarnsFor: { '*': 'type-fest' },\n * })\n * ```\n */\n checkDirectDuplicateDependencies: (\n options?: CheckDirectDuplicateDependenciesOptions,\n ) => CheckPackageApi;\n\n checkResolutionsHasExplanation: (\n checkMessage?: CheckResolutionMessage,\n ) => CheckPackageApi;\n\n checkRecommended: (options?: CheckRecommendedOptions) => CheckPackageApi;\n\n /**\n * @example\n * Check that your package.json contains the same version of @babel/core than react-scripts, both in resolutions and devDependencies\n * ```\n * .checkIdenticalVersionsThanDependency('react-scripts', {\n * resolutions: ['@babel/core'],\n * devDependencies: ['@babel/core'],\n * })\n * ```\n */\n checkIdenticalVersionsThanDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkIdenticalVersionsThanDevDependencyOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range passed in config\n *\n * @example\n * ```\n * .checkSatisfiesVersions({\n * devDependencies: {\n * eslint: '^8.0.0'\n * },\n * })\n * ```\n */\n checkSatisfiesVersions: (\n dependencies: Partial<\n Record>\n >,\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range set in another dependencies\n * @example\n * ```\n * .checkSatisfiesVersionsFromDependency('@pob/eslint-config-typescript', {\n * devDependencies: [\n * '@typescript-eslint/eslint-plugin',\n * '@typescript-eslint/parser',\n * ],\n * })\n * ```\n */\n checkSatisfiesVersionsFromDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkSatisfiesVersionsInDevDependenciesOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies have the exact same version that another dependency also present in your package.json\n * @example\n * The react-dom version should match react, so this check will ensure it does\n * ```\n * .checkIdenticalVersions({\n * dependencies: {\n * react: {\n * dependencies: ['react-dom'],\n * devDependencies: ['react-test-renderer'],\n * },\n * },\n * })\n * ```\n */\n checkIdenticalVersions: (dependencies: {\n resolutions?: Record;\n dependencies?: Record;\n devDependencies?: Record;\n }) => CheckPackageApi;\n\n checkSatisfiesVersionsBetweenDependencies: (\n depName1: string,\n depName2: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check versions in a dependency\n * Also useable to check if a dependency is not present\n *\n * @example\n * Checking if `@lerna/version` has no dependency `@nrwl/devkit`\n * ```\n * .checkSatisfiesVersionsInDependency('@lerna/version', {\n * dependencies: {\n * '@nrwl/devkit': null,\n * },\n * })\n * ```\n */\n checkSatisfiesVersionsInDependency: (\n depName: string,\n dependenciesRanges: DependenciesRanges,\n ) => CheckPackageApi;\n\n checkMinRangeDependenciesSatisfiesDevDependencies: () => CheckPackageApi;\n}\n\nexport function createCheckPackage({\n packageDirectoryPath = '.',\n internalWorkspacePkgDirectoryPath,\n isLibrary = false,\n}: CreateCheckPackageOptions = {}): CheckPackageApi {\n const pkgDirname = path.resolve(packageDirectoryPath);\n const pkgPath = `${pkgDirname}/package.json`;\n const pkgPathName = `${packageDirectoryPath}/package.json`;\n const pkg = readPkgJson(pkgPath);\n const copyPkg: PackageJson = JSON.parse(JSON.stringify(pkg)) as PackageJson;\n const isPkgLibrary =\n typeof isLibrary === 'function' ? isLibrary(pkg) : isLibrary;\n\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 isPkgLibrary,\n getDependencyPackageJson,\n checkExactVersions({\n onlyWarnsFor,\n internalExactVersionsIgnore,\n allowRangeVersionsInDependencies = true,\n } = {}) {\n jobs.push(\n new Job(this.checkExactVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(\n pkg,\n pkgPathName,\n !allowRangeVersionsInDependencies\n ? ['dependencies', 'devDependencies', 'resolutions']\n : ['devDependencies', 'resolutions'],\n {\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n getDependencyPackageJson,\n tryToAutoFix,\n },\n );\n }),\n );\n return this;\n },\n\n checkResolutionsVersionsMatch() {\n checkResolutionsVersionsMatch(pkg, pkgPathName, {\n tryToAutoFix,\n });\n return this;\n },\n\n checkExactDevVersions({ onlyWarnsFor } = {}) {\n jobs.push(\n new Job(this.checkExactDevVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactDevVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(pkg, pkgPathName, ['devDependencies'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n }),\n );\n return this;\n },\n\n checkNoDependencies(\n type = 'dependencies',\n moveToSuggestion = 'devDependencies',\n ) {\n checkNoDependencies(pkg, pkgPathName, type, moveToSuggestion);\n return this;\n },\n\n checkDirectPeerDependencies({\n missingOnlyWarnsFor,\n invalidOnlyWarnsFor,\n internalMissingConfigName = 'missingOnlyWarnsFor',\n internalInvalidConfigName = 'invalidOnlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectPeerDependencies.name, async () => {\n const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck(\n internalMissingConfigName,\n missingOnlyWarnsFor,\n );\n const invalidOnlyWarnsForCheck =\n internalInvalidConfigName === internalMissingConfigName\n ? missingOnlyWarnsForCheck\n : createOnlyWarnsForMappingCheck(\n internalInvalidConfigName,\n invalidOnlyWarnsFor,\n );\n await checkDirectPeerDependencies(\n isPkgLibrary,\n pkg,\n pkgPathName,\n getDependencyPackageJson,\n missingOnlyWarnsForCheck,\n invalidOnlyWarnsForCheck,\n );\n }),\n );\n return this;\n },\n\n checkDirectDuplicateDependencies({\n onlyWarnsFor,\n internalConfigName = 'onlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectDuplicateDependencies.name, async () => {\n await checkDirectDuplicateDependencies(\n pkg,\n pkgPathName,\n isPkgLibrary,\n 'dependencies',\n getDependencyPackageJson,\n createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor),\n );\n }),\n );\n return this;\n },\n\n checkResolutionsHasExplanation(\n checkMessage: CheckResolutionMessage = (depKey, message) => undefined,\n ) {\n checkResolutionsHasExplanation(\n pkg,\n pkgPathName,\n checkMessage,\n getDependencyPackageJson,\n );\n return this;\n },\n\n checkRecommended({\n onlyWarnsForInPackage,\n onlyWarnsForInDependencies,\n allowRangeVersionsInDependencies = isPkgLibrary,\n internalExactVersionsIgnore,\n checkResolutionMessage,\n } = {}) {\n let internalMissingPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n let internalInvalidPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n let internalDirectDuplicateDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n\n const exactVersionsOnlyWarnsFor =\n onlyWarnsForInPackage?.exactVersions || [];\n\n if (onlyWarnsForInDependencies) {\n internalDirectDuplicateDependenciesOnlyWarnsFor = {};\n internalMissingPeerDependenciesOnlyWarnsFor = {};\n internalInvalidPeerDependenciesOnlyWarnsFor = {};\n\n getEntries(onlyWarnsForInDependencies).forEach(\n ([dependencyNameOrSpecialKey, onlyWarnsForValue]) => {\n if (onlyWarnsForValue.duplicateDirectDependency) {\n (\n internalDirectDuplicateDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.duplicateDirectDependency;\n }\n if (onlyWarnsForValue.missingPeerDependency) {\n (\n internalMissingPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.missingPeerDependency;\n }\n if (onlyWarnsForValue.invalidPeerDependencyVersion) {\n (\n internalInvalidPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.invalidPeerDependencyVersion;\n }\n },\n );\n }\n\n this.checkExactVersions({\n allowRangeVersionsInDependencies,\n onlyWarnsFor: exactVersionsOnlyWarnsFor,\n internalExactVersionsIgnore,\n });\n\n this.checkResolutionsVersionsMatch();\n this.checkResolutionsHasExplanation(checkResolutionMessage);\n\n this.checkDirectPeerDependencies({\n missingOnlyWarnsFor: internalMissingPeerDependenciesOnlyWarnsFor,\n invalidOnlyWarnsFor: internalInvalidPeerDependenciesOnlyWarnsFor,\n internalMissingConfigName:\n 'onlyWarnsForInDependencies.missingPeerDependency',\n internalInvalidConfigName:\n 'onlyWarnsForInDependencies.invalidPeerDependencyVersion',\n });\n\n this.checkDirectDuplicateDependencies({\n onlyWarnsFor: internalDirectDuplicateDependenciesOnlyWarnsFor,\n internalConfigName:\n 'onlyWarnsForInDependencies.duplicateDirectDependency',\n });\n\n if (isPkgLibrary) {\n this.checkMinRangeDependenciesSatisfiesDevDependencies();\n }\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 checkMinRangeDependenciesSatisfiesDevDependencies() {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n checkMinRangeSatisfies(\n pkgPathName,\n pkg,\n 'dependencies',\n 'devDependencies',\n { tryToAutoFix },\n );\n }),\n );\n return this;\n },\n };\n}\n","/* eslint-disable max-lines */\nimport fs from 'fs';\nimport path from 'path';\nimport glob from 'glob';\nimport type { Except } from 'type-fest';\nimport type {\n CreateCheckPackageOptions,\n CheckPackageApi,\n OnlyWarnsForInDependenciesCheckPackageRecommendedOption,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption,\n OnlyWarnsForInPackageCheckPackageRecommendedOption,\n} from './check-package';\nimport { createCheckPackage } from './check-package';\nimport { checkDuplicateDependencies } from './checks/checkDuplicateDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport {\n createReportError,\n reportNotWarnedForMapping,\n} from './utils/createReportError';\nimport type { PackageJson } from './utils/packageTypes';\nimport type { OnlyWarnsForOptionalDependencyMapping } from './utils/warnForUtils';\nimport { createOnlyWarnsForMappingCheck } from './utils/warnForUtils';\n\ninterface OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n extends OnlyWarnsForInPackageCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsForInDependencyCheckPackageRecommendedOption['duplicateDirectDependency'];\n}\n\ntype OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n '*' | string,\n OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n>;\n\ntype OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption =\n Record;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n allowRangeVersionsInLibraries?: boolean;\n monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\n run: () => Promise;\n\n checkRecommended: (\n options?: CheckPackageWithWorkspacesRecommendedOptions,\n ) => CheckPackageWithWorkspacesApi;\n\n forRoot: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n forEach: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n for: (\n id: string,\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n}\n\ninterface CreateCheckPackageWithWorkspacesOptions\n extends Except {\n isLibrary?: (pkg: PackageJson) => boolean;\n}\n\nexport function createCheckPackageWithWorkspaces(\n createCheckPackageOptions: CreateCheckPackageWithWorkspacesOptions = {},\n): CheckPackageWithWorkspacesApi {\n const checkPackage = createCheckPackage({\n ...createCheckPackageOptions,\n isLibrary: false,\n });\n const { pkg, pkgDirname } = checkPackage;\n\n const pkgWorkspaces: string[] | undefined =\n pkg.workspaces && !Array.isArray(pkg.workspaces)\n ? pkg.workspaces.packages\n : pkg.workspaces;\n\n if (!pkgWorkspaces) {\n throw new Error('Package is missing \"workspaces\"');\n }\n\n const workspacePackagesPaths: string[] = [];\n\n if (pkgWorkspaces) {\n pkgWorkspaces.forEach((pattern) => {\n const match = glob.sync(pattern, { cwd: pkgDirname });\n match.forEach((pathMatch) => {\n if (!fs.existsSync(path.join(pathMatch, 'package.json'))) {\n console.log(\n `Ignored potential directory, no package.json found: ${pathMatch}`,\n );\n return;\n }\n const subPkgDirectoryPath = path.relative(process.cwd(), pathMatch);\n workspacePackagesPaths.push(subPkgDirectoryPath);\n });\n });\n }\n\n const checksWorkspaces = new Map(\n workspacePackagesPaths.map((subPkgDirectoryPath) => {\n const checkPkg = createCheckPackage({\n ...createCheckPackageOptions,\n packageDirectoryPath: subPkgDirectoryPath,\n internalWorkspacePkgDirectoryPath:\n createCheckPackageOptions.packageDirectoryPath,\n });\n return [checkPkg.pkg.name, checkPkg];\n }),\n );\n\n return {\n async run() {\n for (const checksWorkspace of [\n checkPackage,\n ...checksWorkspaces.values(),\n ]) {\n await checksWorkspace.run();\n }\n },\n\n checkRecommended({\n allowRangeVersionsInLibraries = true,\n onlyWarnsForInRootPackage,\n onlyWarnsForInMonorepoPackages,\n onlyWarnsForInRootDependencies,\n onlyWarnsForInMonorepoPackagesDependencies = {},\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n } = {}) {\n checkPackage.checkNoDependencies();\n checkPackage.checkRecommended({\n onlyWarnsForInPackage: onlyWarnsForInRootPackage,\n onlyWarnsForInDependencies: onlyWarnsForInRootDependencies,\n checkResolutionMessage,\n });\n\n const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck =\n createOnlyWarnsForMappingCheck(\n 'monorepoDirectDuplicateDependenciesOnlyWarnsFor',\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n );\n\n const previousCheckedWorkspaces = new Map();\n checksWorkspaces.forEach((checkSubPackage, id) => {\n checkSubPackage.checkRecommended({\n allowRangeVersionsInDependencies: checkSubPackage.isPkgLibrary\n ? allowRangeVersionsInLibraries\n : false,\n onlyWarnsForInPackage: onlyWarnsForInMonorepoPackages\n ? {\n ...onlyWarnsForInMonorepoPackages['*'],\n ...onlyWarnsForInMonorepoPackages[checkSubPackage.pkg.name],\n }\n : undefined,\n onlyWarnsForInDependencies:\n onlyWarnsForInMonorepoPackagesDependencies[\n 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 checkSubPackage.isPkgLibrary,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n // previous packages\n previousCheckedWorkspaces.forEach((previousCheckSubPackage) => {\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'dependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'peerDependencies',\n ['peerDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n });\n\n previousCheckedWorkspaces.set(id, checkSubPackage);\n });\n reportNotWarnedForMapping(\n createReportError(\n 'Monorepo Direct Duplicate Dependencies',\n checkPackage.pkgPathName,\n ),\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck,\n );\n\n return this;\n },\n\n forRoot(callback) {\n callback(checkPackage);\n return this;\n },\n\n forEach(callback) {\n checksWorkspaces.forEach((checkSubPackage) => {\n callback(checkSubPackage);\n });\n return this;\n },\n\n for(id, callback) {\n const packageCheck = checksWorkspaces.get(id);\n if (!packageCheck) {\n throw new Error(\n `Invalid package name: ${id}. Known package names: \"${[\n ...checksWorkspaces.keys(),\n ].join('\",\"')}\"`,\n );\n }\n callback(packageCheck);\n return this;\n },\n };\n}\n"],"names":["getKeys","o","Object","keys","getEntries","entries","titleDisplayed","pkgPathDisplayed","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","isPkgLibrary","depType","searchIn","depPkg","dependencies","searchInExisting","filter","type","depKey","range","versionsIn","allowDuplicated","includes","depVersion","devDepVersion","devDependencies","versions","version","index","startsWith","semver","satisfies","includePrerelease","intersects","resolutions","versionInType","name","shouldWarnsFor","checkDirectDuplicateDependencies","isPackageALibrary","getDependencyPackageJson","reportErrorNamePrefix","customCreateReportError","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","shouldOnlyWarn","resolvedDep","slice","checkIdenticalVersions","deps","depConfigArrayOrObject","depConfig","Array","isArray","depKeyType","pkgDependenciesType","depKeyIdentical","value","checkIdenticalVersionsThanDependency","depKeys","checkMinRangeSatisfies","type1","type2","dependencies1","dependencies2","depRange1","depRange2","minDepRange1","depRange1Parsed","semverUtils","parseRange","operator","checkNoDependencies","pkgPath","moveToSuggestion","checkResolutionsHasExplanation","checkMessage","pkgResolutions","pkgResolutionsExplained","resolutionsExplained","checkResolutionsVersionsMatch","resolutionDepVersion","checkSatisfiesVersions","dependenciesRanges","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","packageDirectoryPath","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","checkMinRangeDependenciesSatisfiesDevDependencies","checkIdenticalVersionsThanDevDependencyOfDependency","dependencyType","checkSatisfiesVersionsInDevDependenciesOfDependency","checkSatisfiesVersionsBetweenDependencies","depName1","depName2","depPkg1","depPkg2","createCheckPackageWithWorkspaces","createCheckPackageOptions","checkPackage","pkgWorkspaces","workspaces","packages","workspacePackagesPaths","pattern","glob","sync","cwd","pathMatch","fs","existsSync","log","subPkgDirectoryPath","relative","checksWorkspaces","checkPkg","checksWorkspace","values","allowRangeVersionsInLibraries","onlyWarnsForInRootPackage","onlyWarnsForInMonorepoPackages","onlyWarnsForInRootDependencies","onlyWarnsForInMonorepoPackagesDependencies","monorepoDirectDuplicateDependenciesOnlyWarnsFor","monorepoDirectDuplicateDependenciesOnlyWarnsForCheck","previousCheckedWorkspaces","checkSubPackage","id","reportMonorepoDDDError","previousCheckSubPackage","forRoot","callback","for","packageCheck"],"mappings":"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"} \ No newline at end of file diff --git a/src/check-package-with-workspaces.ts b/src/check-package-with-workspaces.ts index dba4ec83..e00bd36c 100644 --- a/src/check-package-with-workspaces.ts +++ b/src/check-package-with-workspaces.ts @@ -93,8 +93,12 @@ export function createCheckPackageWithWorkspaces( pkgWorkspaces.forEach((pattern) => { const match = glob.sync(pattern, { cwd: pkgDirname }); match.forEach((pathMatch) => { - const stat = fs.statSync(pathMatch); - if (!stat.isDirectory()) return; + if (!fs.existsSync(path.join(pathMatch, 'package.json'))) { + console.log( + `Ignored potential directory, no package.json found: ${pathMatch}`, + ); + return; + } const subPkgDirectoryPath = path.relative(process.cwd(), pathMatch); workspacePackagesPaths.push(subPkgDirectoryPath); });