From 464baa4158f93f778b36b5fa3d83bdfeae11df5e Mon Sep 17 00:00:00 2001 From: Christophe Hurpeau Date: Sun, 27 Nov 2022 23:05:26 +0100 Subject: [PATCH] feat: rewrite for ESM BREAKING CHANGE: requires ESM, drop CJS support --- .eslintrc.json | 2 +- ...ve-uri-npm-3.0.7-5d7f391f4f-94f454f4ce.zip | Bin 16623 -> 0 bytes ...ve-uri-npm-3.1.0-6ff2351e61-b5ceaaf9a1.zip | Bin 0 -> 18331 bytes ...odec-npm-1.4.14-f5f0630788-61100637b6.zip} | Bin 11668 -> 13738 bytes ...pping-npm-0.3.15-7357dbf648-38917e9c2b.zip | Bin 42750 -> 0 bytes ...pping-npm-0.3.16-f11a7d5a44-881fa21ce0.zip | Bin 0 -> 44426 bytes ...esolve-npm-2.1.0-fcf1208127-4554ea5e2d.zip | Bin 0 -> 21929 bytes README.md | 4 +- babel.config.cjs | 4 +- ...cies.js => check-package-dependencies.mjs} | 10 +- dist/check-package-with-workspaces.d.ts.map | 2 +- dist/check-package.d.ts.map | 2 +- .../checkDirectDuplicateDependencies.d.ts | 3 +- .../checkDirectDuplicateDependencies.d.ts.map | 2 +- dist/checks/checkDirectPeerDependencies.d.ts | 3 +- .../checkDirectPeerDependencies.d.ts.map | 2 +- dist/checks/checkExactVersions.d.ts | 4 +- dist/checks/checkExactVersions.d.ts.map | 2 +- dist/checks/checkIdenticalVersions.d.ts | 3 +- dist/checks/checkIdenticalVersions.d.ts.map | 2 +- .../checkIdenticalVersionsThanDependency.d.ts | 3 +- ...ckIdenticalVersionsThanDependency.d.ts.map | 2 +- dist/checks/checkNoDependencies.d.ts | 3 +- dist/checks/checkNoDependencies.d.ts.map | 2 +- .../checkResolutionsHasExplanation.d.ts | 3 +- .../checkResolutionsHasExplanation.d.ts.map | 2 +- .../checks/checkResolutionsVersionsMatch.d.ts | 4 +- .../checkResolutionsVersionsMatch.d.ts.map | 2 +- .../checkSatisfiesVersionsFromDependency.d.ts | 3 +- ...ckSatisfiesVersionsFromDependency.d.ts.map | 2 +- dist/index-node14.cjs.js.map | 1 - .../{index-node14.cjs.js => index-node14.mjs} | 368 +++++++------ dist/index-node14.mjs.map | 1 + .../utils/createGetDependencyPackageJson.d.ts | 7 +- .../createGetDependencyPackageJson.d.ts.map | 2 +- dist/utils/pkgJsonUtils.d.ts | 6 + dist/utils/pkgJsonUtils.d.ts.map | 1 + package.json | 19 +- rollup.config.mjs | 3 +- .../{check-package.mjs => check-package.js} | 2 +- src/check-package-with-workspaces.ts | 11 +- src/check-package.ts | 502 ++++++++++-------- .../checkDirectDuplicateDependencies.ts | 41 +- .../checkDirectPeerDependencies.test.ts | 58 +- src/checks/checkDirectPeerDependencies.ts | 43 +- src/checks/checkDuplicateDependencies.test.ts | 13 +- src/checks/checkExactVersions.test.ts | 84 +-- src/checks/checkExactVersions.ts | 18 +- src/checks/checkIdenticalVersions.test.ts | 22 +- src/checks/checkIdenticalVersions.ts | 6 +- .../checkIdenticalVersionsThanDependency.ts | 3 +- src/checks/checkNoDependencies.test.ts | 23 +- src/checks/checkNoDependencies.ts | 3 +- src/checks/checkPeerDependencies.ts | 2 +- src/checks/checkResolutionsHasExplanation.ts | 3 +- .../checkResolutionsVersionsMatch.test.ts | 23 +- src/checks/checkResolutionsVersionsMatch.ts | 8 +- .../checkSatisfiesVersionsFromDependency.ts | 3 +- .../createGetDependencyPackageJson.test.ts | 24 +- src/utils/createGetDependencyPackageJson.ts | 32 +- src/utils/createReportError.test.ts | 2 + src/utils/pkgJsonUtils.ts | 28 + yarn.lock | 34 +- 63 files changed, 822 insertions(+), 645 deletions(-) delete mode 100644 .yarn/cache/@jridgewell-resolve-uri-npm-3.0.7-5d7f391f4f-94f454f4ce.zip create mode 100644 .yarn/cache/@jridgewell-resolve-uri-npm-3.1.0-6ff2351e61-b5ceaaf9a1.zip rename .yarn/cache/{@jridgewell-sourcemap-codec-npm-1.4.13-b0c90a5760-f14449096f.zip => @jridgewell-sourcemap-codec-npm-1.4.14-f5f0630788-61100637b6.zip} (51%) delete mode 100644 .yarn/cache/@jridgewell-trace-mapping-npm-0.3.15-7357dbf648-38917e9c2b.zip create mode 100644 .yarn/cache/@jridgewell-trace-mapping-npm-0.3.16-f11a7d5a44-881fa21ce0.zip create mode 100644 .yarn/cache/import-meta-resolve-npm-2.1.0-fcf1208127-4554ea5e2d.zip rename bin/{check-package-dependencies.js => check-package-dependencies.mjs} (76%) mode change 100755 => 100644 delete mode 100644 dist/index-node14.cjs.js.map rename dist/{index-node14.cjs.js => index-node14.mjs} (73%) create mode 100644 dist/index-node14.mjs.map create mode 100644 dist/utils/pkgJsonUtils.d.ts create mode 100644 dist/utils/pkgJsonUtils.d.ts.map rename scripts/{check-package.mjs => check-package.js} (74%) create mode 100644 src/utils/pkgJsonUtils.ts diff --git a/.eslintrc.json b/.eslintrc.json index a1504636..e9d1294d 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,5 +1,5 @@ { "root": true, - "extends": ["@pob/eslint-config/root-commonjs"], + "extends": ["@pob/eslint-config/root-module"], "ignorePatterns": ["/dist"] } diff --git a/.yarn/cache/@jridgewell-resolve-uri-npm-3.0.7-5d7f391f4f-94f454f4ce.zip b/.yarn/cache/@jridgewell-resolve-uri-npm-3.0.7-5d7f391f4f-94f454f4ce.zip deleted file mode 100644 index 5241cc2236e2d4cc32df3857cf9299f0a7eb1198..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16623 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

BiXsGiPJ68I%?|zH%4=(&;h@d^0t}?&_ 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 diff --git a/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.0-6ff2351e61-b5ceaaf9a1.zip b/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.0-6ff2351e61-b5ceaaf9a1.zip new file mode 100644 index 0000000000000000000000000000000000000000..97e857d7d22109683cbc0cc868050507403c7658 GIT binary patch literal 18331 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 literal 0 HcmV?d00001 diff --git a/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.13-b0c90a5760-f14449096f.zip b/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.14-f5f0630788-61100637b6.zip similarity index 51% rename from .yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.13-b0c90a5760-f14449096f.zip rename to .yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.14-f5f0630788-61100637b6.zip index 3449733682e72d1106043a08f7f1acc854e7f70b..d8703c89675a07bfe6df03bd867016c51b0f1ba0 100644 GIT binary patch delta 4862 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 A%K!iX diff --git a/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.15-7357dbf648-38917e9c2b.zip b/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.15-7357dbf648-38917e9c2b.zip deleted file mode 100644 index 2ccfc7560ef7e8384b2ef3ba788a05bc98e72382..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42750 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 literal 0 HcmV?d00001 diff --git a/.yarn/cache/import-meta-resolve-npm-2.1.0-fcf1208127-4554ea5e2d.zip b/.yarn/cache/import-meta-resolve-npm-2.1.0-fcf1208127-4554ea5e2d.zip new file mode 100644 index 0000000000000000000000000000000000000000..e23db61d4475f11645332c77ea35acf243747508 GIT binary patch literal 21929 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 477dbfe5..99ab7b76 100644 --- a/README.md +++ b/README.md @@ -51,9 +51,7 @@ If something is missing for your need, please open an issue ! Create a script, for example `scripts/check-package.js`. Add it in `"scripts"` in your package.json. Run in CI and/or in your husky hooks. ```js -'use script'; - -const { createCheckPackage } = require('check-package-dependencies'); +import { createCheckPackage } from 'check-package-dependencies'; await createCheckPackage(/* '.' */) // Check that your package.json contains only exact versions of package, not range. diff --git a/babel.config.cjs b/babel.config.cjs index 92a10516..97302c22 100644 --- a/babel.config.cjs +++ b/babel.config.cjs @@ -7,8 +7,6 @@ module.exports = function babelConfig(api) { return { only: ['src'], - presets: [ - [require.resolve('pob-babel/preset.cjs'), { modules: 'commonjs' }], - ], + presets: [[require.resolve('pob-babel/preset.cjs')]], }; }; diff --git a/bin/check-package-dependencies.js b/bin/check-package-dependencies.mjs old mode 100755 new mode 100644 similarity index 76% rename from bin/check-package-dependencies.js rename to bin/check-package-dependencies.mjs index ca27e202..b09f2fb9 --- a/bin/check-package-dependencies.js +++ b/bin/check-package-dependencies.mjs @@ -1,11 +1,7 @@ -#!/usr/bin/env node - -'use strict'; - -const { +import { createCheckPackage, createCheckPackageWithWorkspaces, -} = require('../dist/index-node14.cjs'); +} from '../dist/index-node14.mjs'; const checkPackage = createCheckPackage(); if (checkPackage.pkg.workspaces) { @@ -15,3 +11,5 @@ if (checkPackage.pkg.workspaces) { } else { checkPackage.checkRecommended(); } + +await checkPackage.run(); diff --git a/dist/check-package-with-workspaces.d.ts.map b/dist/check-package-with-workspaces.d.ts.map index e1dcd678..77ca3f44 100644 --- a/dist/check-package-with-workspaces.d.ts.map +++ b/dist/check-package-with-workspaces.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"check-package-with-workspaces.d.ts","sourceRoot":"","sources":["../src/check-package-with-workspaces.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,uDAAuD,EACvD,qDAAqD,EACrD,kDAAkD,EACnD,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAKtF,OAAO,KAAK,EACV,YAAY,EACZ,qCAAqC,EACtC,MAAM,sBAAsB,CAAC;AAG9B,UAAU,0DACR,SAAQ,kDAAkD;IAC1D,yBAAyB,EAAE,qDAAqD,CAAC,2BAA2B,CAAC,CAAC;CAC/G;AAED,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,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,mCAAmC;IACnC,4BAA4B,CAAC,EAAE,YAAY,CAAC;IAC5C,mCAAmC;IACnC,uCAAuC,CAAC,EAAE,YAAY,CAAC;IACvD,+CAA+C,CAAC,EAAE,qCAAqC,CAAC;IACxF,yBAAyB,CAAC,EAAE,kDAAkD,CAAC;IAC/E,8BAA8B,CAAC,EAAE,2DAA2D,CAAC;IAC7F,qDAAqD;IACrD,0BAA0B,CAAC,EAAE,uDAAuD,CAAC;IACrF,8BAA8B,CAAC,EAAE,uDAAuD,CAAC;IACzF,0CAA0C,CAAC,EAAE,uEAAuE,CAAC;IACrH,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED,MAAM,WAAW,6BAA6B;IAC5C,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,wBAAgB,gCAAgC,CAC9C,gBAAgB,SAAM,EACtB,yBAAyB,GAAE,yBAA8B,GACxD,6BAA6B,CA0M/B"} \ No newline at end of file +{"version":3,"file":"check-package-with-workspaces.d.ts","sourceRoot":"","sources":["../src/check-package-with-workspaces.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,uDAAuD,EACvD,qDAAqD,EACrD,kDAAkD,EACnD,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAKtF,OAAO,KAAK,EACV,YAAY,EACZ,qCAAqC,EACtC,MAAM,sBAAsB,CAAC;AAG9B,UAAU,0DACR,SAAQ,kDAAkD;IAC1D,yBAAyB,EAAE,qDAAqD,CAAC,2BAA2B,CAAC,CAAC;CAC/G;AAED,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,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,mCAAmC;IACnC,4BAA4B,CAAC,EAAE,YAAY,CAAC;IAC5C,mCAAmC;IACnC,uCAAuC,CAAC,EAAE,YAAY,CAAC;IACvD,+CAA+C,CAAC,EAAE,qCAAqC,CAAC;IACxF,yBAAyB,CAAC,EAAE,kDAAkD,CAAC;IAC/E,8BAA8B,CAAC,EAAE,2DAA2D,CAAC;IAC7F,qDAAqD;IACrD,0BAA0B,CAAC,EAAE,uDAAuD,CAAC;IACrF,8BAA8B,CAAC,EAAE,uDAAuD,CAAC;IACzF,0CAA0C,CAAC,EAAE,uEAAuE,CAAC;IACrH,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED,MAAM,WAAW,6BAA6B;IAC5C,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,wBAAgB,gCAAgC,CAC9C,gBAAgB,SAAM,EACtB,yBAAyB,GAAE,yBAA8B,GACxD,6BAA6B,CA2M/B"} \ No newline at end of file diff --git a/dist/check-package.d.ts.map b/dist/check-package.d.ts.map index cea660d4..08f4b405 100644 --- a/dist/check-package.d.ts.map +++ b/dist/check-package.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"check-package.d.ts","sourceRoot":"","sources":["../src/check-package.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"check-package.d.ts","sourceRoot":"","sources":["../src/check-package.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/checks/checkDirectDuplicateDependencies.d.ts b/dist/checks/checkDirectDuplicateDependencies.d.ts index f0c9aace..9a1ab0ad 100644 --- a/dist/checks/checkDirectDuplicateDependencies.d.ts +++ b/dist/checks/checkDirectDuplicateDependencies.d.ts @@ -1,5 +1,6 @@ import type { GetDependencyPackageJson } from 'utils/createGetDependencyPackageJson'; +import { createReportError } from '../utils/createReportError'; import type { PackageJson, DependencyTypes } from '../utils/packageTypes'; import type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils'; -export declare function checkDirectDuplicateDependencies(pkg: PackageJson, pkgPathName: string, depType: DependencyTypes, getDependencyPackageJson: GetDependencyPackageJson, onlyWarnsForCheck: OnlyWarnsForMappingCheck, reportErrorNamePrefix?: string): void; +export declare function checkDirectDuplicateDependencies(pkg: PackageJson, pkgPathName: string, depType: DependencyTypes, getDependencyPackageJson: GetDependencyPackageJson, onlyWarnsForCheck: OnlyWarnsForMappingCheck, reportErrorNamePrefix?: string, customCreateReportError?: typeof createReportError): Promise; //# sourceMappingURL=checkDirectDuplicateDependencies.d.ts.map \ No newline at end of file diff --git a/dist/checks/checkDirectDuplicateDependencies.d.ts.map b/dist/checks/checkDirectDuplicateDependencies.d.ts.map index b94b30eb..dcf4d7c1 100644 --- a/dist/checks/checkDirectDuplicateDependencies.d.ts.map +++ b/dist/checks/checkDirectDuplicateDependencies.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"checkDirectDuplicateDependencies.d.ts","sourceRoot":"","sources":["../../src/checks/checkDirectDuplicateDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAMrF,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAGtE,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,EACxB,wBAAwB,EAAE,wBAAwB,EAClD,iBAAiB,EAAE,wBAAwB,EAC3C,qBAAqB,SAAK,GACzB,IAAI,CAiCN"} \ No newline at end of file +{"version":3,"file":"checkDirectDuplicateDependencies.d.ts","sourceRoot":"","sources":["../../src/checks/checkDirectDuplicateDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAEL,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAGtE,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,EACxB,wBAAwB,EAAE,wBAAwB,EAClD,iBAAiB,EAAE,wBAAwB,EAC3C,qBAAqB,SAAK,EAC1B,uBAAuB,2BAAoB,GAC1C,OAAO,CAAC,IAAI,CAAC,CAqCf"} \ No newline at end of file diff --git a/dist/checks/checkDirectPeerDependencies.d.ts b/dist/checks/checkDirectPeerDependencies.d.ts index 78dbef3f..d229c4e0 100644 --- a/dist/checks/checkDirectPeerDependencies.d.ts +++ b/dist/checks/checkDirectPeerDependencies.d.ts @@ -1,5 +1,6 @@ import type { GetDependencyPackageJson } from 'utils/createGetDependencyPackageJson'; +import { createReportError } from '../utils/createReportError'; import type { PackageJson } from '../utils/packageTypes'; import type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils'; -export declare function checkDirectPeerDependencies(isLibrary: boolean, pkg: PackageJson, pkgPathName: string, getDependencyPackageJson: GetDependencyPackageJson, missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck, invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck): void; +export declare function checkDirectPeerDependencies(isLibrary: boolean, pkg: PackageJson, pkgPathName: string, getDependencyPackageJson: GetDependencyPackageJson, missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck, invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck, customCreateReportError?: typeof createReportError): Promise; //# sourceMappingURL=checkDirectPeerDependencies.d.ts.map \ No newline at end of file diff --git a/dist/checks/checkDirectPeerDependencies.d.ts.map b/dist/checks/checkDirectPeerDependencies.d.ts.map index 79c3c313..16a7fa05 100644 --- a/dist/checks/checkDirectPeerDependencies.d.ts.map +++ b/dist/checks/checkDirectPeerDependencies.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"checkDirectPeerDependencies.d.ts","sourceRoot":"","sources":["../../src/checks/checkDirectPeerDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAMrF,OAAO,KAAK,EAEV,WAAW,EAEZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AA2BtE,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,OAAO,EAClB,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,wBAAwB,EAAE,wBAAwB,EAClD,wBAAwB,EAAE,wBAAwB,EAClD,wBAAwB,EAAE,wBAAwB,GACjD,IAAI,CA2BN"} \ No newline at end of file +{"version":3,"file":"checkDirectPeerDependencies.d.ts","sourceRoot":"","sources":["../../src/checks/checkDirectPeerDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EACL,iBAAiB,EAElB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAEV,WAAW,EAEZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AA2BtE,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,OAAO,EAClB,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,wBAAwB,EAAE,wBAAwB,EAClD,wBAAwB,EAAE,wBAAwB,EAClD,wBAAwB,EAAE,wBAAwB,EAClD,uBAAuB,2BAAoB,GAC1C,OAAO,CAAC,IAAI,CAAC,CA6Bf"} \ No newline at end of file diff --git a/dist/checks/checkExactVersions.d.ts b/dist/checks/checkExactVersions.d.ts index 382a01c4..38f7a7a3 100644 --- a/dist/checks/checkExactVersions.d.ts +++ b/dist/checks/checkExactVersions.d.ts @@ -1,4 +1,5 @@ import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson'; +import { createReportError } from '../utils/createReportError'; import type { PackageJson, DependencyTypes } from '../utils/packageTypes'; import type { OnlyWarnsFor, OnlyWarnsForCheck } from '../utils/warnForUtils'; export interface CheckExactVersionsOptions { @@ -6,6 +7,7 @@ export interface CheckExactVersionsOptions { onlyWarnsForCheck: OnlyWarnsForCheck; internalExactVersionsIgnore?: OnlyWarnsFor; tryToAutoFix?: boolean; + customCreateReportError?: typeof createReportError; } -export declare function checkExactVersions(pkg: PackageJson, pkgPathName: string, types: DependencyTypes[], { getDependencyPackageJson, onlyWarnsForCheck, internalExactVersionsIgnore, tryToAutoFix, }: CheckExactVersionsOptions): void; +export declare function checkExactVersions(pkg: PackageJson, pkgPathName: string, types: DependencyTypes[], { getDependencyPackageJson, onlyWarnsForCheck, internalExactVersionsIgnore, tryToAutoFix, customCreateReportError, }: CheckExactVersionsOptions): Promise; //# sourceMappingURL=checkExactVersions.d.ts.map \ No newline at end of file diff --git a/dist/checks/checkExactVersions.d.ts.map b/dist/checks/checkExactVersions.d.ts.map index dde2a71c..a155e13e 100644 --- a/dist/checks/checkExactVersions.d.ts.map +++ b/dist/checks/checkExactVersions.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"checkExactVersions.d.ts","sourceRoot":"","sources":["../../src/checks/checkExactVersions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAKxF,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE7E,MAAM,WAAW,yBAAyB;IACxC,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,2BAA2B,CAAC,EAAE,YAAY,CAAC;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAKD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,eAAe,EAAE,EACxB,EACE,wBAAwB,EACxB,iBAAiB,EACjB,2BAA2B,EAC3B,YAAoB,GACrB,EAAE,yBAAyB,GAC3B,IAAI,CA6DN"} \ No newline at end of file +{"version":3,"file":"checkExactVersions.d.ts","sourceRoot":"","sources":["../../src/checks/checkExactVersions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EACL,iBAAiB,EAElB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE7E,MAAM,WAAW,yBAAyB;IACxC,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,2BAA2B,CAAC,EAAE,YAAY,CAAC;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uBAAuB,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACpD;AAKD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,eAAe,EAAE,EACxB,EACE,wBAAwB,EACxB,iBAAiB,EACjB,2BAA2B,EAC3B,YAAoB,EACpB,uBAA2C,GAC5C,EAAE,yBAAyB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA6Df"} \ No newline at end of file diff --git a/dist/checks/checkIdenticalVersions.d.ts b/dist/checks/checkIdenticalVersions.d.ts index 153a17c9..c5eba7f1 100644 --- a/dist/checks/checkIdenticalVersions.d.ts +++ b/dist/checks/checkIdenticalVersions.d.ts @@ -1,4 +1,5 @@ +import { createReportError } from '../utils/createReportError'; import type { DependencyTypes, PackageJson } from '../utils/packageTypes'; import type { OnlyWarnsForCheck } from '../utils/warnForUtils'; -export declare function checkIdenticalVersions(pkg: PackageJson, pkgPathName: string, type: DependencyTypes, deps: Record>>, onlyWarnsForCheck?: OnlyWarnsForCheck): void; +export declare function checkIdenticalVersions(pkg: PackageJson, pkgPathName: string, type: DependencyTypes, deps: Record>>, onlyWarnsForCheck?: OnlyWarnsForCheck, customCreateReportError?: typeof createReportError): void; //# sourceMappingURL=checkIdenticalVersions.d.ts.map \ No newline at end of file diff --git a/dist/checks/checkIdenticalVersions.d.ts.map b/dist/checks/checkIdenticalVersions.d.ts.map index ebc327ba..37d808a7 100644 --- a/dist/checks/checkIdenticalVersions.d.ts.map +++ b/dist/checks/checkIdenticalVersions.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"checkIdenticalVersions.d.ts","sourceRoot":"","sources":["../../src/checks/checkIdenticalVersions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAC3E,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,IAAI,CAsCN"} \ No newline at end of file +{"version":3,"file":"checkIdenticalVersions.d.ts","sourceRoot":"","sources":["../../src/checks/checkIdenticalVersions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAC3E,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,uBAAuB,2BAAoB,GAC1C,IAAI,CAyCN"} \ No newline at end of file diff --git a/dist/checks/checkIdenticalVersionsThanDependency.d.ts b/dist/checks/checkIdenticalVersionsThanDependency.d.ts index 4a587ce5..1aaf7f64 100644 --- a/dist/checks/checkIdenticalVersionsThanDependency.d.ts +++ b/dist/checks/checkIdenticalVersionsThanDependency.d.ts @@ -1,4 +1,5 @@ +import { createReportError } from '../utils/createReportError'; import type { PackageJson, DependencyTypes } from '../utils/packageTypes'; import type { OnlyWarnsForCheck } from '../utils/warnForUtils'; -export declare function checkIdenticalVersionsThanDependency(pkg: PackageJson, pkgPathName: string, type: DependencyTypes, depKeys: string[], depPkg: PackageJson, dependencies?: PackageJson[DependencyTypes], onlyWarnsForCheck?: OnlyWarnsForCheck): void; +export declare function checkIdenticalVersionsThanDependency(pkg: PackageJson, pkgPathName: string, type: DependencyTypes, depKeys: string[], depPkg: PackageJson, dependencies?: PackageJson[DependencyTypes], onlyWarnsForCheck?: OnlyWarnsForCheck, customCreateReportError?: typeof createReportError): void; //# sourceMappingURL=checkIdenticalVersionsThanDependency.d.ts.map \ No newline at end of file diff --git a/dist/checks/checkIdenticalVersionsThanDependency.d.ts.map b/dist/checks/checkIdenticalVersionsThanDependency.d.ts.map index b8e17b39..9af9c96b 100644 --- a/dist/checks/checkIdenticalVersionsThanDependency.d.ts.map +++ b/dist/checks/checkIdenticalVersionsThanDependency.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"checkIdenticalVersionsThanDependency.d.ts","sourceRoot":"","sources":["../../src/checks/checkIdenticalVersionsThanDependency.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,WAAW,EACnB,YAAY,GAAE,WAAW,CAAC,eAAe,CAAM,EAC/C,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,IAAI,CA0CN"} \ No newline at end of file +{"version":3,"file":"checkIdenticalVersionsThanDependency.d.ts","sourceRoot":"","sources":["../../src/checks/checkIdenticalVersionsThanDependency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,WAAW,EACnB,YAAY,GAAE,WAAW,CAAC,eAAe,CAAM,EAC/C,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,uBAAuB,2BAAoB,GAC1C,IAAI,CA0CN"} \ No newline at end of file diff --git a/dist/checks/checkNoDependencies.d.ts b/dist/checks/checkNoDependencies.d.ts index 42139ce7..fdd275e1 100644 --- a/dist/checks/checkNoDependencies.d.ts +++ b/dist/checks/checkNoDependencies.d.ts @@ -1,3 +1,4 @@ +import { createReportError } from '../utils/createReportError'; import type { PackageJson, DependencyTypes } from '../utils/packageTypes'; -export declare function checkNoDependencies(pkg: PackageJson, pkgPath: string, type?: DependencyTypes, moveToSuggestion?: DependencyTypes): void; +export declare function checkNoDependencies(pkg: PackageJson, pkgPath: string, type?: DependencyTypes, moveToSuggestion?: DependencyTypes, customCreateReportError?: typeof createReportError): void; //# sourceMappingURL=checkNoDependencies.d.ts.map \ No newline at end of file diff --git a/dist/checks/checkNoDependencies.d.ts.map b/dist/checks/checkNoDependencies.d.ts.map index 4ee77d55..1c07ed90 100644 --- a/dist/checks/checkNoDependencies.d.ts.map +++ b/dist/checks/checkNoDependencies.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"checkNoDependencies.d.ts","sourceRoot":"","sources":["../../src/checks/checkNoDependencies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE1E,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,eAAgC,EACtC,gBAAgB,GAAE,eAAmC,GACpD,IAAI,CASN"} \ No newline at end of file +{"version":3,"file":"checkNoDependencies.d.ts","sourceRoot":"","sources":["../../src/checks/checkNoDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE1E,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,eAAgC,EACtC,gBAAgB,GAAE,eAAmC,EACrD,uBAAuB,2BAAoB,GAC1C,IAAI,CASN"} \ No newline at end of file diff --git a/dist/checks/checkResolutionsHasExplanation.d.ts b/dist/checks/checkResolutionsHasExplanation.d.ts index aceede9e..4c359d98 100644 --- a/dist/checks/checkResolutionsHasExplanation.d.ts +++ b/dist/checks/checkResolutionsHasExplanation.d.ts @@ -1,7 +1,8 @@ import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson'; +import { createReportError } from '../utils/createReportError'; import type { PackageJson } from '../utils/packageTypes'; export type CheckResolutionMessage = (depKey: string, resolutionExplainedMessage: string, checkMessageHelpers: { getDependencyPackageJson: GetDependencyPackageJson; }) => string | undefined; -export declare function checkResolutionsHasExplanation(pkg: PackageJson, pkgPathName: string, checkMessage: CheckResolutionMessage, getDependencyPackageJson: GetDependencyPackageJson): void; +export declare function checkResolutionsHasExplanation(pkg: PackageJson, pkgPathName: string, checkMessage: CheckResolutionMessage, getDependencyPackageJson: GetDependencyPackageJson, customCreateReportError?: typeof createReportError): void; //# sourceMappingURL=checkResolutionsHasExplanation.d.ts.map \ No newline at end of file diff --git a/dist/checks/checkResolutionsHasExplanation.d.ts.map b/dist/checks/checkResolutionsHasExplanation.d.ts.map index ee27e020..bb3f77f5 100644 --- a/dist/checks/checkResolutionsHasExplanation.d.ts.map +++ b/dist/checks/checkResolutionsHasExplanation.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"checkResolutionsHasExplanation.d.ts","sourceRoot":"","sources":["../../src/checks/checkResolutionsHasExplanation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAExF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,MAAM,sBAAsB,GAAG,CACnC,MAAM,EAAE,MAAM,EACd,0BAA0B,EAAE,MAAM,EAClC,mBAAmB,EAAE;IACnB,wBAAwB,EAAE,wBAAwB,CAAC;CACpD,KACE,MAAM,GAAG,SAAS,CAAC;AAExB,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,sBAAsB,EACpC,wBAAwB,EAAE,wBAAwB,GACjD,IAAI,CA+BN"} \ No newline at end of file +{"version":3,"file":"checkResolutionsHasExplanation.d.ts","sourceRoot":"","sources":["../../src/checks/checkResolutionsHasExplanation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,MAAM,sBAAsB,GAAG,CACnC,MAAM,EAAE,MAAM,EACd,0BAA0B,EAAE,MAAM,EAClC,mBAAmB,EAAE;IACnB,wBAAwB,EAAE,wBAAwB,CAAC;CACpD,KACE,MAAM,GAAG,SAAS,CAAC;AAExB,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,sBAAsB,EACpC,wBAAwB,EAAE,wBAAwB,EAClD,uBAAuB,2BAAoB,GAC1C,IAAI,CA+BN"} \ No newline at end of file diff --git a/dist/checks/checkResolutionsVersionsMatch.d.ts b/dist/checks/checkResolutionsVersionsMatch.d.ts index 6c934a9f..facc47a1 100644 --- a/dist/checks/checkResolutionsVersionsMatch.d.ts +++ b/dist/checks/checkResolutionsVersionsMatch.d.ts @@ -1,6 +1,8 @@ +import { createReportError } from '../utils/createReportError'; import type { PackageJson } from '../utils/packageTypes'; export interface CheckResolutionsVersionsMatchOptions { tryToAutoFix?: boolean; + customCreateReportError?: typeof createReportError; } -export declare function checkResolutionsVersionsMatch(pkg: PackageJson, pkgPathName: string, { tryToAutoFix }?: CheckResolutionsVersionsMatchOptions): void; +export declare function checkResolutionsVersionsMatch(pkg: PackageJson, pkgPathName: string, { tryToAutoFix, customCreateReportError, }?: CheckResolutionsVersionsMatchOptions): void; //# sourceMappingURL=checkResolutionsVersionsMatch.d.ts.map \ No newline at end of file diff --git a/dist/checks/checkResolutionsVersionsMatch.d.ts.map b/dist/checks/checkResolutionsVersionsMatch.d.ts.map index 0f602580..0c2004e3 100644 --- a/dist/checks/checkResolutionsVersionsMatch.d.ts.map +++ b/dist/checks/checkResolutionsVersionsMatch.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"checkResolutionsVersionsMatch.d.ts","sourceRoot":"","sources":["../../src/checks/checkResolutionsVersionsMatch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,oCAAoC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,YAAY,EAAE,GAAE,oCAAyC,GAC1D,IAAI,CA6BN"} \ No newline at end of file +{"version":3,"file":"checkResolutionsVersionsMatch.d.ts","sourceRoot":"","sources":["../../src/checks/checkResolutionsVersionsMatch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,oCAAoC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uBAAuB,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACpD;AAED,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,EACE,YAAY,EACZ,uBAA2C,GAC5C,GAAE,oCAAyC,GAC3C,IAAI,CA6BN"} \ No newline at end of file diff --git a/dist/checks/checkSatisfiesVersionsFromDependency.d.ts b/dist/checks/checkSatisfiesVersionsFromDependency.d.ts index 22dd4780..134739cd 100644 --- a/dist/checks/checkSatisfiesVersionsFromDependency.d.ts +++ b/dist/checks/checkSatisfiesVersionsFromDependency.d.ts @@ -1,4 +1,5 @@ +import { createReportError } from '../utils/createReportError'; import type { DependencyTypes, PackageJson } from '../utils/packageTypes'; import type { OnlyWarnsForCheck } from '../utils/warnForUtils'; -export declare function checkSatisfiesVersionsFromDependency(pkg: PackageJson, pkgPathName: string, type: DependencyTypes, depKeys: string[], depPkg: PackageJson, dependencies?: PackageJson[DependencyTypes], onlyWarnsForCheck?: OnlyWarnsForCheck): void; +export declare function checkSatisfiesVersionsFromDependency(pkg: PackageJson, pkgPathName: string, type: DependencyTypes, depKeys: string[], depPkg: PackageJson, dependencies?: PackageJson[DependencyTypes], onlyWarnsForCheck?: OnlyWarnsForCheck, customCreateReportError?: typeof createReportError): void; //# sourceMappingURL=checkSatisfiesVersionsFromDependency.d.ts.map \ No newline at end of file diff --git a/dist/checks/checkSatisfiesVersionsFromDependency.d.ts.map b/dist/checks/checkSatisfiesVersionsFromDependency.d.ts.map index 6e28f581..17f2c724 100644 --- a/dist/checks/checkSatisfiesVersionsFromDependency.d.ts.map +++ b/dist/checks/checkSatisfiesVersionsFromDependency.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"checkSatisfiesVersionsFromDependency.d.ts","sourceRoot":"","sources":["../../src/checks/checkSatisfiesVersionsFromDependency.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,WAAW,EACnB,YAAY,GAAE,WAAW,CAAC,eAAe,CAAM,EAC/C,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,IAAI,CAwCN"} \ No newline at end of file +{"version":3,"file":"checkSatisfiesVersionsFromDependency.d.ts","sourceRoot":"","sources":["../../src/checks/checkSatisfiesVersionsFromDependency.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,WAAW,EACnB,YAAY,GAAE,WAAW,CAAC,eAAe,CAAM,EAC/C,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,uBAAuB,2BAAoB,GAC1C,IAAI,CAwCN"} \ No newline at end of file diff --git a/dist/index-node14.cjs.js.map b/dist/index-node14.cjs.js.map deleted file mode 100644 index fc85e5da..00000000 --- a/dist/index-node14.cjs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-node14.cjs.js","sources":["../src/utils/object.ts","../src/utils/createReportError.ts","../src/checks/checkDuplicateDependencies.ts","../src/checks/checkDirectDuplicateDependencies.ts","../src/checks/checkPeerDependencies.ts","../src/checks/checkDirectPeerDependencies.ts","../src/checks/checkExactVersions.ts","../src/checks/checkIdenticalVersions.ts","../src/checks/checkIdenticalVersionsThanDependency.ts","../src/checks/checkNoDependencies.ts","../src/checks/checkResolutionsHasExplanation.ts","../src/checks/checkResolutionsVersionsMatch.ts","../src/checks/checkSatisfiesVersions.ts","../src/checks/checkSatisfiesVersionsFromDependency.ts","../src/utils/createGetDependencyPackageJson.ts","../src/utils/warnForUtils.ts","../src/check-package.ts","../src/check-package-with-workspaces.ts"],"sourcesContent":["export const getKeys = (o: T): (keyof T)[] =>\n Object.keys(o) as (keyof T)[];\n\nexport const getEntries = (o: T): [keyof T, T[keyof T]][] =>\n Object.entries(o) as unknown as [keyof T, T[keyof T]][];\n","/* eslint-disable no-console */\n\nimport chalk from 'chalk';\nimport { getEntries } from './object';\nimport type {\n OnlyWarnsForCheck,\n OnlyWarnsForMappingCheck,\n} from './warnForUtils';\n\nexport type ReportError = (\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n) => void;\n\nlet titleDisplayed: string | null = null;\nlet pkgPathDisplayed: string | null = null;\n\nexport function logMessage(\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n): void {\n console.error(\n `${\n onlyWarns ? chalk.yellow(`⚠ ${msgTitle}`) : chalk.red(`❌ ${msgTitle}`)\n }${msgInfo ? `: ${msgInfo}` : ''}`,\n );\n}\n\nexport function createReportError(\n title: string,\n pkgPathName: string,\n): ReportError {\n return function reportError(msgTitle, msgInfo, onlyWarns): void {\n if (titleDisplayed !== title || pkgPathName !== pkgPathDisplayed) {\n if (titleDisplayed) console.error();\n console.error(chalk.cyan(`== ${title} in ${pkgPathName} ==`));\n titleDisplayed = title;\n pkgPathDisplayed = pkgPathName;\n }\n logMessage(msgTitle, msgInfo, onlyWarns);\n\n if (!onlyWarns) {\n // console.trace();\n process.exitCode = 1;\n }\n };\n}\n\nexport function reportNotWarnedFor(\n reportError: ReportError,\n onlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const notWarnedFor = onlyWarnsForCheck.getNotWarnedFor();\n if (notWarnedFor.length > 0) {\n reportError(\n `Invalid config in \"${onlyWarnsForCheck.configName}\"`,\n `no warning was raised for ${notWarnedFor\n .map((depName) => `\"${depName}\"`)\n .join(', ')}`,\n false,\n );\n }\n}\n\nexport function reportNotWarnedForMapping(\n reportError: ReportError,\n onlyWarnsForMappingCheck: OnlyWarnsForMappingCheck,\n): void {\n const notWarnedForMapping = onlyWarnsForMappingCheck.getNotWarnedFor();\n getEntries(notWarnedForMapping).forEach(([depNameOrStar, notWarnedFor]) => {\n reportError(\n `Invalid config in \"${onlyWarnsForMappingCheck.configName}\" for \"${depNameOrStar}\"`,\n `no warning was raised for ${notWarnedFor\n .map((depName) => `\"${depName}\"`)\n .join(', ')}`,\n );\n });\n}\n","import semver from 'semver';\nimport type { ReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkDuplicateDependencies(\n reportError: ReportError,\n pkg: PackageJson,\n depType: DependencyTypes,\n searchIn: DependencyTypes[],\n depPkg: PackageJson,\n onlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const dependencies = depPkg[depType];\n if (!dependencies) return;\n\n const searchInExisting = searchIn.filter((type) => pkg[type]);\n\n for (const [depKey, range] of Object.entries(dependencies)) {\n const versionsIn = searchInExisting.filter((type) => pkg[type]![depKey]);\n\n if (versionsIn.length > 1) {\n reportError(\n `${depKey} is present in both devDependencies and dependencies, please place it only in dependencies`,\n );\n } else {\n const versions = versionsIn.map((type) => pkg[type]![depKey]);\n\n versions.forEach((version, index) => {\n if (version.startsWith('file:') || range.startsWith('file:')) return;\n // https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n if (\n version.startsWith('workspace:') ||\n range.startsWith('workspace:')\n ) {\n return;\n }\n\n if (\n semver.satisfies(version, range, {\n includePrerelease: true,\n }) ||\n semver.intersects(version, range, {\n includePrerelease: true,\n })\n ) {\n return;\n }\n\n // Ignore reporting duplicate when there's a resolution for it\n if (pkg.resolutions?.[depKey]) {\n return;\n }\n\n const versionInType = versionsIn[index];\n\n reportError(\n `Invalid duplicate dependency \"${depKey}\"`,\n `\"${versions[0]}\" (in ${versionInType}) should satisfies \"${range}\" from \"${depPkg.name}\" ${depType}.`,\n onlyWarnsForCheck.shouldWarnsFor(depKey),\n );\n });\n }\n }\n}\n","import type { GetDependencyPackageJson } from 'utils/createGetDependencyPackageJson';\nimport {\n reportNotWarnedForMapping,\n createReportError,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkDuplicateDependencies } from './checkDuplicateDependencies';\n\nexport function checkDirectDuplicateDependencies(\n pkg: PackageJson,\n pkgPathName: string,\n depType: DependencyTypes,\n getDependencyPackageJson: GetDependencyPackageJson,\n onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n reportErrorNamePrefix = '',\n): void {\n const reportError = createReportError(\n `${reportErrorNamePrefix}Direct Duplicate Dependencies`,\n pkgPathName,\n );\n\n const checks: {\n type: DependencyTypes;\n searchIn: DependencyTypes[];\n }[] = [\n {\n type: 'devDependencies',\n searchIn: ['devDependencies', 'dependencies'],\n },\n { type: 'dependencies', searchIn: ['devDependencies', 'dependencies'] },\n ];\n checks.forEach(({ type, searchIn }) => {\n const dependencies = pkg[type];\n if (!dependencies) return;\n getKeys(dependencies).forEach((depName) => {\n const depPkg = getDependencyPackageJson(depName);\n checkDuplicateDependencies(\n reportError,\n pkg,\n depType,\n searchIn,\n depPkg,\n onlyWarnsForCheck.createFor(depName),\n );\n });\n });\n\n reportNotWarnedForMapping(reportError, onlyWarnsForCheck);\n}\n","import semver from 'semver';\nimport type { ReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkPeerDependencies(\n pkg: PackageJson,\n reportError: ReportError,\n type: DependencyTypes,\n allowedPeerIn: DependencyTypes[],\n depPkg: PackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const { peerDependencies, peerDependenciesMeta } = depPkg;\n if (!peerDependencies) return;\n\n const allowedPeerInExisting = allowedPeerIn.filter(\n (allowedPeerInType) => pkg[allowedPeerInType],\n );\n\n for (const [peerDepName, range] of Object.entries(peerDependencies)) {\n const versionsIn = allowedPeerInExisting.filter(\n (allowedPeerInExistingType) =>\n pkg[allowedPeerInExistingType]?.[peerDepName],\n );\n if (versionsIn.length === 0) {\n const peerDependenciesMetaPeerDep = peerDependenciesMeta?.[peerDepName];\n if (peerDependenciesMetaPeerDep?.optional) {\n return;\n }\n reportError(\n `Missing \"${peerDepName}\" peer dependency from \"${depPkg.name}\" in ${type}`,\n `it should satisfies \"${range}\" and be in ${allowedPeerIn.join(\n ' or ',\n )}`,\n missingOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n );\n } else {\n const versions = versionsIn.map(\n (versionsInType) => pkg[versionsInType]![peerDepName],\n );\n\n versions.forEach((version, index) => {\n if (version.startsWith('npm:')) {\n return;\n }\n\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${peerDepName}\" peer dependency`,\n `\"${version}\" (in ${allowedPeerInExisting[index]}) should satisfies \"${range}\" from \"${depPkg.name}\" ${type}`,\n invalidOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n );\n }\n });\n }\n }\n}\n","import type { GetDependencyPackageJson } from 'utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedForMapping,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type {\n DependencyTypes,\n PackageJson,\n RegularDependencyTypes,\n} from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkPeerDependencies } from './checkPeerDependencies';\n\nconst regularDependencyTypes: RegularDependencyTypes[] = [\n 'devDependencies',\n 'dependencies',\n 'optionalDependencies',\n];\n\nconst getAllowedPeerInFromType = (\n depPkgType: RegularDependencyTypes,\n isLibrary: boolean,\n): DependencyTypes[] => {\n switch (depPkgType) {\n case 'devDependencies':\n return ['devDependencies', 'dependencies'];\n case 'dependencies':\n 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 function checkDirectPeerDependencies(\n isLibrary: boolean,\n pkg: PackageJson,\n pkgPathName: string,\n getDependencyPackageJson: GetDependencyPackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n): void {\n const reportError = createReportError('Peer Dependencies', pkgPathName);\n\n regularDependencyTypes.forEach((depType) => {\n const dependencies = pkg[depType];\n if (!dependencies) return;\n getKeys(dependencies).forEach((depName) => {\n const depPkg = getDependencyPackageJson(depName);\n\n if (depPkg.peerDependencies) {\n checkPeerDependencies(\n pkg,\n reportError,\n depType,\n getAllowedPeerInFromType(depType, isLibrary),\n depPkg,\n missingOnlyWarnsForCheck.createFor(depName),\n invalidOnlyWarnsForCheck.createFor(depName),\n );\n }\n });\n });\n\n reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck);\n if (missingOnlyWarnsForCheck !== invalidOnlyWarnsForCheck) {\n reportNotWarnedForMapping(reportError, invalidOnlyWarnsForCheck);\n }\n}\n","/* eslint-disable complexity */\nimport semver from 'semver';\nimport type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedFor,\n} from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsFor, OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckExactVersionsOptions {\n getDependencyPackageJson?: GetDependencyPackageJson;\n onlyWarnsForCheck: OnlyWarnsForCheck;\n internalExactVersionsIgnore?: OnlyWarnsFor;\n tryToAutoFix?: boolean;\n}\n\nconst isVersionRange = (version: string): boolean =>\n version.startsWith('^') || version.startsWith('~');\n\nexport function checkExactVersions(\n pkg: PackageJson,\n pkgPathName: string,\n types: DependencyTypes[],\n {\n getDependencyPackageJson,\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix = false,\n }: CheckExactVersionsOptions,\n): void {\n const reportError = createReportError('Exact versions', pkgPathName);\n\n types.forEach((type) => {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n for (const [dependencyName, versionConst] of Object.entries(\n pkgDependencies,\n )) {\n let version = versionConst;\n if (version.startsWith('npm:')) {\n const match = /^npm:.*@(.*)$/.exec(version);\n if (!match) throw new Error(`Invalid version match: ${version}`);\n const [, realVersion] = match;\n version = realVersion;\n }\n\n if (isVersionRange(version)) {\n if (internalExactVersionsIgnore?.includes(dependencyName)) {\n return;\n }\n const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName);\n if (!shouldOnlyWarn && tryToAutoFix && getDependencyPackageJson) {\n let resolvedDep;\n try {\n resolvedDep = getDependencyPackageJson(dependencyName);\n } catch {\n resolvedDep = null;\n }\n if (!resolvedDep || !resolvedDep.version) {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact, autofix failed to resolve \"${dependencyName}\".`,\n shouldOnlyWarn,\n );\n } else if (\n !semver.satisfies(resolvedDep.version, version, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact, autofix failed as \"${dependencyName}\"'s resolved version is \"${resolvedDep.version}\" and doesn't satisfies \"${version}\".`,\n shouldOnlyWarn,\n );\n } else {\n pkgDependencies[dependencyName] = resolvedDep.version;\n }\n } else {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact \"${version.slice(1)}\".`,\n shouldOnlyWarn,\n );\n }\n }\n }\n });\n\n reportNotWarnedFor(reportError, onlyWarnsForCheck);\n}\n","import { createReportError } from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n deps: Record>>,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = createReportError('Identical Versions', pkgPathName);\n\n getKeys(deps).forEach((depKey) => {\n const version = pkgDependencies[depKey];\n if (!version) {\n reportError(`Unexpected missing ${type} for \"${depKey}\".`);\n return;\n }\n\n const depConfigArrayOrObject = deps[depKey];\n const depConfig = Array.isArray(depConfigArrayOrObject)\n ? { [type]: depConfigArrayOrObject }\n : depConfigArrayOrObject;\n\n getKeys(depConfig).forEach((depKeyType) => {\n const pkgDependenciesType = pkg[depKeyType] || {};\n depConfig[depKeyType]?.forEach((depKeyIdentical) => {\n const value = pkgDependenciesType[depKeyIdentical];\n if (!value) {\n reportError(\n `Missing \"${depKeyIdentical}\" in ${depKeyType}`,\n `it should be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKeyIdentical}\" in ${depKeyType}`,\n `expecting \"${value}\" be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n });\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersionsThanDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = createReportError(\n `Same Versions than ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const version = dependencies[depKey];\n if (!version) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n if (version.startsWith('^') || version.startsWith('~')) {\n reportError(\n `Unexpected range dependency in \"${depPkg.name}\" for \"${depKey}\"`,\n 'perhaps use checkSatisfiesVersionsFromDependency() instead.',\n );\n return;\n }\n\n const value = pkgDependencies[depKey];\n\n if (!value) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `expecting to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `expecting \"${value}\" to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\n\nexport function checkNoDependencies(\n pkg: PackageJson,\n pkgPath: string,\n type: DependencyTypes = 'dependencies',\n moveToSuggestion: DependencyTypes = 'devDependencies',\n): void {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n const reportError = createReportError('No dependencies', pkgPath);\n reportError(\n `Unexpected ${type}`,\n `you should move them in ${moveToSuggestion}`,\n );\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport type CheckResolutionMessage = (\n depKey: string,\n resolutionExplainedMessage: string,\n checkMessageHelpers: {\n getDependencyPackageJson: GetDependencyPackageJson;\n },\n) => string | undefined;\n\nexport function checkResolutionsHasExplanation(\n pkg: PackageJson,\n pkgPathName: string,\n checkMessage: CheckResolutionMessage,\n getDependencyPackageJson: GetDependencyPackageJson,\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n const reportError = createReportError(\n 'Resolutions has explanation',\n pkgPathName,\n );\n\n Object.keys(pkgResolutions).forEach((depKey) => {\n if (!pkgResolutionsExplained[depKey]) {\n reportError(`Missing \"${depKey}\" in resolutionsExplained.`);\n }\n });\n\n Object.keys(pkgResolutionsExplained).forEach((depKey) => {\n if (!pkgResolutions[depKey]) {\n reportError(\n `Found \"${depKey}\" in resolutionsExplained but not in resolutions.`,\n );\n } else {\n const error = checkMessage(depKey, pkgResolutionsExplained[depKey], {\n getDependencyPackageJson,\n });\n if (error) {\n reportError(\n `Invalid message for \"${depKey}\" in resolutionsExplained`,\n `${error}.`,\n );\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport interface CheckResolutionsVersionsMatchOptions {\n tryToAutoFix?: boolean;\n}\n\nexport function checkResolutionsVersionsMatch(\n pkg: PackageJson,\n pkgPathName: string,\n { tryToAutoFix }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const reportError = createReportError(\n 'Resolutions match other dependencies',\n pkgPathName,\n );\n\n Object.entries(pkgResolutions).forEach(([depName, resolutionDepVersion]) => {\n (['dependencies', 'devDependencies'] as const).forEach((depType) => {\n const range = pkg?.[depType]?.[depName];\n\n if (!range) return;\n\n if (\n !semver.satisfies(resolutionDepVersion, range, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n pkg[depType]![depName] = resolutionDepVersion;\n } else {\n reportError(\n `Invalid \"${depName}\" in ${depType}`,\n `expecting \"${range}\" be \"${resolutionDepVersion}\" from resolutions.`,\n );\n }\n }\n });\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkSatisfiesVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n dependenciesRanges: Record,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = createReportError('Satisfies Versions', pkgPathName);\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): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = createReportError(\n `Satisfies Versions from ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const range = dependencies[depKey];\n if (!range) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\" from \"${depPkg.name}\" ${depKey}.`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `\"${version}\" (in \"${depKey}\") should satisfies \"${range}\" from \"${depPkg.name}\" ${depKey}.`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\n}\n","import { readFileSync, writeFileSync } from 'fs';\nimport type { PackageJson } from './packageTypes';\n\nexport type GetDependencyPackageJson = (pkgDepName: string) => PackageJson;\n\nexport function readPkgJson(packagePath: string): PackageJson {\n return JSON.parse(readFileSync(packagePath, 'utf8')) as PackageJson;\n}\n\nexport function writePkgJson(packagePath: string, pkg: PackageJson): void {\n writeFileSync(packagePath, JSON.stringify(pkg, null, 2));\n}\n\n/** @internal */\nexport function internalLoadPackageJsonFromNodeModules(\n pkgDepName: string,\n pkgDirname: string,\n): PackageJson {\n // eslint-disable-next-line import/no-dynamic-require, @typescript-eslint/no-var-requires\n return require(require.resolve(`${pkgDepName}/package.json`, {\n paths: [pkgDirname],\n })) as PackageJson;\n}\n\ntype NodeModulesPackagePathCache = Map;\n\ninterface CreateGetDependencyPackageJsonOptions {\n pkgDirname: string;\n nodeModulesPackagePathCache?: NodeModulesPackagePathCache;\n /** @internal */\n internalCustomLoadPackageJsonFromNodeModules?: typeof internalLoadPackageJsonFromNodeModules;\n /** @internal */\n internalReadPkgJson?: typeof readPkgJson;\n}\n\nexport function createGetDependencyPackageJson({\n pkgDirname,\n nodeModulesPackagePathCache = new Map(),\n internalCustomLoadPackageJsonFromNodeModules = internalLoadPackageJsonFromNodeModules,\n internalReadPkgJson = readPkgJson,\n}: CreateGetDependencyPackageJsonOptions): GetDependencyPackageJson {\n return (pkgDepName) => {\n const existing = nodeModulesPackagePathCache.get(pkgDepName);\n if (existing) return existing;\n let pkg: PackageJson;\n if (pkgDepName.startsWith('.')) {\n const packagePath = `${pkgDirname}/${pkgDepName}/package.json`;\n pkg = internalReadPkgJson(packagePath);\n } else {\n try {\n pkg = internalCustomLoadPackageJsonFromNodeModules(\n pkgDepName,\n pkgDirname,\n );\n } catch (err: unknown) {\n if (!(err instanceof Error)) throw err;\n\n if (\n (err as NodeJS.ErrnoException).code !==\n 'ERR_PACKAGE_PATH_NOT_EXPORTED'\n ) {\n throw err;\n }\n\n const match = / in (.*[/\\\\]package.json)($|\\simported 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 complexity */\n/* eslint-disable max-lines */\nimport path from 'path';\nimport util from 'util';\nimport { checkDirectDuplicateDependencies } from './checks/checkDirectDuplicateDependencies';\nimport { checkDirectPeerDependencies } from './checks/checkDirectPeerDependencies';\nimport { checkExactVersions } from './checks/checkExactVersions';\nimport { checkIdenticalVersions } from './checks/checkIdenticalVersions';\nimport { checkIdenticalVersionsThanDependency } from './checks/checkIdenticalVersionsThanDependency';\nimport { checkNoDependencies } from './checks/checkNoDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsHasExplanation } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsVersionsMatch } from './checks/checkResolutionsVersionsMatch';\nimport { checkSatisfiesVersions } from './checks/checkSatisfiesVersions';\nimport { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency';\nimport type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport {\n createGetDependencyPackageJson,\n readPkgJson,\n writePkgJson,\n} from './utils/createGetDependencyPackageJson';\nimport { getEntries } from './utils/object';\nimport type {\n DependencyName,\n DependencyTypes,\n PackageJson,\n} from './utils/packageTypes';\nimport type {\n OnlyWarnsForOptionalDependencyMapping,\n OnlyWarnsFor,\n OnlyWarnsForDependencyMapping,\n} from './utils/warnForUtils';\nimport {\n createOnlyWarnsForArrayCheck,\n createOnlyWarnsForMappingCheck,\n} from './utils/warnForUtils';\n\nexport interface CreateCheckPackageOptions {\n /** @deprecated pass in cli --fix instead */\n tryToAutoFix?: boolean;\n /** @internal */\n internalWorkspacePkgDirectoryPath?: string;\n}\n\nexport interface CheckDirectPeerDependenciesOptions {\n isLibrary?: boolean;\n /** @deprecated use missingOnlyWarnsFor or invalidOnlyWarnsFor */\n onlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n missingOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n invalidOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n internalMissingConfigName?: string;\n internalInvalidConfigName?: string;\n}\n\nexport interface CheckDirectDuplicateDependenciesOptions {\n onlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n internalConfigName?: string;\n}\n\nexport interface OnlyWarnsForInPackageCheckPackageRecommendedOption {\n exactVersions: OnlyWarnsFor;\n}\n\nexport interface OnlyWarnsForInDependencyCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsFor;\n missingPeerDependency: OnlyWarnsFor;\n invalidPeerDependencyVersion: OnlyWarnsFor;\n}\n\nexport type OnlyWarnsForInDependenciesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n '*' | string,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption\n>;\n\nexport interface CheckRecommendedOptions {\n isLibrary?: boolean;\n /** default is true for libraries, false otherwise */\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsForInPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n /** @deprecated use onlyWarnsForInDependencies option */\n peerDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n /** @deprecated use onlyWarnsForInDependencies option */\n directDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n /** @deprecated use onlyWarnsForInPackage option */\n exactVersionsOnlyWarnsFor?: OnlyWarnsFor;\n /** @internal */\n internalExactVersionsIgnore?: OnlyWarnsFor;\n /** function to check the value in the \"resolutionExplained\" key in package.json */\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckExactVersionsOptions {\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsFor?: OnlyWarnsFor;\n /** @internal */\n internalExactVersionsIgnore?: OnlyWarnsFor;\n}\n\nexport interface CheckPackageApi {\n run: () => Promise;\n\n /** @internal */\n pkg: PackageJson;\n /** @internal */\n pkgDirname: string;\n /** @internal */\n pkgPathName: string;\n /** @internal */\n getDependencyPackageJson: GetDependencyPackageJson;\n\n checkExactVersions: (options?: CheckExactVersionsOptions) => CheckPackageApi;\n\n checkResolutionsVersionsMatch: () => CheckPackageApi;\n\n checkExactVersionsForLibrary: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n\n checkExactDevVersions: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n\n checkNoDependencies: (\n type?: DependencyTypes,\n moveToSuggestion?: DependencyTypes,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectPeerDependencies({\n * invalidOnlyWarnsFor: ['semver'],\n * })\n * ```\n */\n checkDirectPeerDependencies: (\n options?: CheckDirectPeerDependenciesOptions,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectDuplicateDependencies({\n * invalidOnlyWarnsFor: { '*': 'type-fest' },\n * })\n * ```\n */\n checkDirectDuplicateDependencies: (\n options?: CheckDirectDuplicateDependenciesOptions,\n ) => CheckPackageApi;\n\n checkResolutionsHasExplanation: (\n checkMessage?: CheckResolutionMessage,\n ) => CheckPackageApi;\n\n checkRecommended: (options?: CheckRecommendedOptions) => CheckPackageApi;\n\n /**\n * @example\n * Check that your package.json contains the same version of @babel/core than react-scripts, both in resolutions and devDependencies\n * ```\n * .checkIdenticalVersionsThanDependency('react-scripts', {\n * resolutions: ['@babel/core'],\n * devDependencies: ['@babel/core'],\n * })\n * ```\n */\n checkIdenticalVersionsThanDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkIdenticalVersionsThanDevDependencyOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range passed in config\n *\n * @example\n * ```\n * .checkSatisfiesVersions({\n * devDependencies: {\n * eslint: '^8.0.0'\n * },\n * })\n * ```\n */\n checkSatisfiesVersions: (\n dependencies: Partial<\n Record>\n >,\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range set in another dependencies\n * @example\n * ```\n * .checkSatisfiesVersionsFromDependency('@pob/eslint-config-typescript', {\n * devDependencies: [\n * '@typescript-eslint/eslint-plugin',\n * '@typescript-eslint/parser',\n * ],\n * })\n * ```\n */\n checkSatisfiesVersionsFromDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkSatisfiesVersionsInDevDependenciesOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies have the exact same version that another dependency also present in your package.json\n * @example\n * The react-dom version should match react, so this check will ensure it does\n * ```\n * .checkIdenticalVersions({\n * dependencies: {\n * react: {\n * dependencies: ['react-dom'],\n * devDependencies: ['react-test-renderer'],\n * },\n * },\n * })\n * ```\n */\n checkIdenticalVersions: (dependencies: {\n resolutions?: Record;\n dependencies?: Record;\n devDependencies?: Record;\n }) => CheckPackageApi;\n\n checkSatisfiesVersionsBetweenDependencies: (\n depName1: string,\n depName2: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n}\n\nexport function createCheckPackage(\n pkgDirectoryPath = '.',\n {\n tryToAutoFix = false,\n internalWorkspacePkgDirectoryPath,\n }: CreateCheckPackageOptions = {},\n): CheckPackageApi {\n const pkgDirname = path.resolve(pkgDirectoryPath);\n const pkgPath = `${pkgDirname}/package.json`;\n const pkgPathName = `${pkgDirectoryPath}/package.json`;\n const pkg = readPkgJson(pkgPath);\n const copyPkg: PackageJson = JSON.parse(JSON.stringify(pkg)) as PackageJson;\n\n if (\n process.env.CI &&\n process.env.CHECK_PACKAGE_DEPENDENCIES_ENABLE_CI_AUTOFIX !== 'true'\n ) {\n tryToAutoFix = false;\n }\n\n 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 console.warn(\n '\\nFor future compatibility, call .run() and await the result.',\n );\n }\n });\n }\n\n return {\n run() {\n runCalled = true;\n return Promise.resolve();\n },\n\n pkg,\n pkgDirname,\n pkgPathName,\n getDependencyPackageJson,\n checkExactVersions({\n onlyWarnsFor,\n internalExactVersionsIgnore,\n allowRangeVersionsInDependencies = true,\n } = {}) {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n checkExactVersions(\n pkg,\n pkgPathName,\n !allowRangeVersionsInDependencies\n ? ['dependencies', 'devDependencies', 'resolutions']\n : ['devDependencies', 'resolutions'],\n {\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n getDependencyPackageJson,\n tryToAutoFix,\n },\n );\n writePackageIfChanged();\n return this;\n },\n\n checkResolutionsVersionsMatch() {\n checkResolutionsVersionsMatch(pkg, pkgPathName, {\n tryToAutoFix,\n });\n writePackageIfChanged();\n return this;\n },\n\n /** @deprecated use checkExactVersions({ allowRangeVersionsInDependencies: true }) */\n checkExactVersionsForLibrary({ onlyWarnsFor } = {}) {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersionsForLibrary.onlyWarnsFor',\n onlyWarnsFor,\n );\n checkExactVersions(pkg, pkgPathName, ['devDependencies', 'resolutions'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n writePackageIfChanged();\n return this;\n },\n\n checkExactDevVersions({ onlyWarnsFor } = {}) {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactDevVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n checkExactVersions(pkg, pkgPathName, ['devDependencies'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n writePackageIfChanged();\n return this;\n },\n\n checkNoDependencies(\n type = 'dependencies',\n moveToSuggestion = 'devDependencies',\n ) {\n checkNoDependencies(pkg, pkgPathName, type, moveToSuggestion);\n return this;\n },\n\n checkDirectPeerDependencies({\n isLibrary = false,\n onlyWarnsFor: deprecatedOnlyWarnsFor,\n missingOnlyWarnsFor = deprecatedOnlyWarnsFor,\n invalidOnlyWarnsFor = deprecatedOnlyWarnsFor,\n internalMissingConfigName = deprecatedOnlyWarnsFor\n ? 'onlyWarnsFor'\n : 'missingOnlyWarnsFor',\n internalInvalidConfigName = deprecatedOnlyWarnsFor\n ? 'onlyWarnsFor'\n : 'invalidOnlyWarnsFor',\n } = {}) {\n const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck(\n internalMissingConfigName,\n missingOnlyWarnsFor,\n );\n const invalidOnlyWarnsForCheck =\n internalInvalidConfigName === internalMissingConfigName\n ? missingOnlyWarnsForCheck\n : createOnlyWarnsForMappingCheck(\n internalInvalidConfigName,\n invalidOnlyWarnsFor,\n );\n checkDirectPeerDependencies(\n isLibrary,\n pkg,\n pkgPathName,\n getDependencyPackageJson,\n missingOnlyWarnsForCheck,\n invalidOnlyWarnsForCheck,\n );\n return this;\n },\n\n checkDirectDuplicateDependencies({\n onlyWarnsFor,\n internalConfigName = 'onlyWarnsFor',\n } = {}) {\n checkDirectDuplicateDependencies(\n pkg,\n pkgPathName,\n 'dependencies',\n getDependencyPackageJson,\n createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor),\n );\n return this;\n },\n\n checkResolutionsHasExplanation(\n checkMessage: CheckResolutionMessage = (depKey, message) => undefined,\n ) {\n checkResolutionsHasExplanation(\n pkg,\n pkgPathName,\n checkMessage,\n getDependencyPackageJson,\n );\n return this;\n },\n\n checkRecommended({\n isLibrary = false,\n onlyWarnsForInPackage,\n onlyWarnsForInDependencies,\n allowRangeVersionsInDependencies = isLibrary,\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n exactVersionsOnlyWarnsFor,\n internalExactVersionsIgnore,\n checkResolutionMessage,\n } = {}) {\n let internalMissingPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n peerDependenciesOnlyWarnsFor;\n let internalInvalidPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n peerDependenciesOnlyWarnsFor;\n let internalDirectDuplicateDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n directDuplicateDependenciesOnlyWarnsFor;\n\n if (onlyWarnsForInPackage) {\n if (exactVersionsOnlyWarnsFor) {\n console.warn(\n 'Ignoring \"exactVersionsOnlyWarnsFor\" as \"onlyWarnsForInPackage\" is used.',\n );\n }\n exactVersionsOnlyWarnsFor = onlyWarnsForInPackage.exactVersions || [];\n }\n if (onlyWarnsForInDependencies) {\n if (peerDependenciesOnlyWarnsFor) {\n console.warn(\n 'Ignoring \"peerDependenciesOnlyWarnsFor\" as \"onlyWarnsFor\" is used.',\n );\n }\n if (directDuplicateDependenciesOnlyWarnsFor) {\n console.warn(\n 'Ignoring \"directDuplicateDependenciesOnlyWarnsFor\" as \"onlyWarnsFor\" is used.',\n );\n }\n\n internalDirectDuplicateDependenciesOnlyWarnsFor = {};\n internalMissingPeerDependenciesOnlyWarnsFor = {};\n internalInvalidPeerDependenciesOnlyWarnsFor = {};\n\n getEntries(onlyWarnsForInDependencies).forEach(\n ([dependencyNameOrSpecialKey, onlyWarnsForValue]) => {\n if (onlyWarnsForValue.duplicateDirectDependency) {\n (\n internalDirectDuplicateDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.duplicateDirectDependency;\n }\n if (onlyWarnsForValue.missingPeerDependency) {\n (\n internalMissingPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.missingPeerDependency;\n }\n if (onlyWarnsForValue.invalidPeerDependencyVersion) {\n (\n internalInvalidPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.invalidPeerDependencyVersion;\n }\n },\n );\n }\n\n this.checkExactVersions({\n allowRangeVersionsInDependencies,\n onlyWarnsFor: exactVersionsOnlyWarnsFor,\n internalExactVersionsIgnore,\n });\n\n this.checkResolutionsVersionsMatch();\n this.checkResolutionsHasExplanation(checkResolutionMessage);\n\n this.checkDirectPeerDependencies({\n isLibrary,\n missingOnlyWarnsFor: internalMissingPeerDependenciesOnlyWarnsFor,\n invalidOnlyWarnsFor: internalInvalidPeerDependenciesOnlyWarnsFor,\n internalMissingConfigName: peerDependenciesOnlyWarnsFor\n ? 'peerDependenciesOnlyWarnsFor'\n : 'onlyWarnsForInDependencies.missingPeerDependency',\n internalInvalidConfigName: peerDependenciesOnlyWarnsFor\n ? 'peerDependenciesOnlyWarnsFor'\n : 'onlyWarnsForInDependencies.invalidPeerDependencyVersion',\n });\n\n this.checkDirectDuplicateDependencies({\n onlyWarnsFor: internalDirectDuplicateDependenciesOnlyWarnsFor,\n internalConfigName: directDuplicateDependenciesOnlyWarnsFor\n ? 'directDuplicateDependenciesOnlyWarnsFor'\n : 'onlyWarnsForInDependencies.duplicateDirectDependency',\n });\n\n return this;\n },\n\n checkIdenticalVersionsThanDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n return this;\n },\n\n checkIdenticalVersionsThanDevDependencyOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n return this;\n },\n\n 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 const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n return this;\n },\n\n checkSatisfiesVersionsInDevDependenciesOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n return this;\n },\n\n checkIdenticalVersions({ resolutions, dependencies, devDependencies }) {\n if (resolutions) {\n checkIdenticalVersions(pkg, pkgPathName, 'resolutions', resolutions);\n }\n if (dependencies) {\n checkIdenticalVersions(pkg, pkgPathName, 'dependencies', dependencies);\n }\n if (devDependencies) {\n checkIdenticalVersions(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n );\n }\n return this;\n },\n\n checkSatisfiesVersionsBetweenDependencies(\n depName1,\n depName2,\n { dependencies, devDependencies },\n ) {\n const depPkg1 = getDependencyPackageJson(depName1);\n const depPkg2 = getDependencyPackageJson(depName2);\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg1,\n depPkg1.dependencies,\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg1,\n depPkg1.dependencies,\n );\n }\n return this;\n },\n };\n}\n","/* eslint-disable max-lines */\nimport fs from 'fs';\nimport path from 'path';\nimport glob from 'glob';\nimport type {\n CreateCheckPackageOptions,\n CheckPackageApi,\n OnlyWarnsForInDependenciesCheckPackageRecommendedOption,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption,\n OnlyWarnsForInPackageCheckPackageRecommendedOption,\n} from './check-package';\nimport { createCheckPackage } from './check-package';\nimport { checkDuplicateDependencies } from './checks/checkDuplicateDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport {\n createReportError,\n reportNotWarnedForMapping,\n} from './utils/createReportError';\nimport type {\n OnlyWarnsFor,\n OnlyWarnsForOptionalDependencyMapping,\n} from './utils/warnForUtils';\nimport { createOnlyWarnsForMappingCheck } from './utils/warnForUtils';\n\ninterface OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n extends OnlyWarnsForInPackageCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsForInDependencyCheckPackageRecommendedOption['duplicateDirectDependency'];\n}\n\ntype OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n '*' | string,\n OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n>;\n\ntype OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption =\n Record;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n isLibrary?: (pkgName: string) => boolean;\n allowRangeVersionsInLibraries?: boolean;\n /** @deprecated use onlyWarnsFor */\n peerDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n /** @deprecated use onlyWarnsFor */\n directDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n /** @deprecated use onlyWarnsForInRootDependencies */\n onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\n run: () => Promise;\n\n checkRecommended: (\n options?: CheckPackageWithWorkspacesRecommendedOptions,\n ) => CheckPackageWithWorkspacesApi;\n\n forRoot: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n forEach: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n for: (\n id: string,\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n}\n\nexport function createCheckPackageWithWorkspaces(\n pkgDirectoryPath = '.',\n createCheckPackageOptions: CreateCheckPackageOptions = {},\n): CheckPackageWithWorkspacesApi {\n const checkPackage = createCheckPackage(\n pkgDirectoryPath,\n createCheckPackageOptions,\n );\n const { pkg, pkgDirname } = checkPackage;\n\n const pkgWorkspaces: string[] | undefined =\n pkg.workspaces && !Array.isArray(pkg.workspaces)\n ? pkg.workspaces.packages\n : pkg.workspaces;\n\n if (!pkgWorkspaces) {\n throw new Error('Package is missing \"workspaces\"');\n }\n\n const workspacePackagesPaths: string[] = [];\n\n if (pkgWorkspaces) {\n pkgWorkspaces.forEach((pattern) => {\n const match = glob.sync(pattern, { cwd: pkgDirname });\n match.forEach((pathMatch) => {\n const stat = fs.statSync(pathMatch);\n if (!stat.isDirectory()) return;\n const subPkgDirectoryPath = path.relative(process.cwd(), pathMatch);\n workspacePackagesPaths.push(subPkgDirectoryPath);\n });\n });\n }\n\n const checksWorkspaces = new Map(\n workspacePackagesPaths.map((subPkgDirectoryPath) => {\n const checkPkg = createCheckPackage(subPkgDirectoryPath, {\n ...createCheckPackageOptions,\n internalWorkspacePkgDirectoryPath: pkgDirectoryPath,\n });\n return [checkPkg.pkg.name, checkPkg];\n }),\n );\n\n return {\n async run() {\n await Promise.all(\n [checkPackage, ...checksWorkspaces.values()].map((checksWorkspace) =>\n checksWorkspace.run(),\n ),\n );\n },\n\n checkRecommended({\n isLibrary = () => false,\n allowRangeVersionsInLibraries = true,\n onlyWarnsForInRootPackage,\n onlyWarnsForInMonorepoPackages,\n onlyWarnsForInDependencies,\n onlyWarnsForInRootDependencies = onlyWarnsForInDependencies,\n onlyWarnsForInMonorepoPackagesDependencies = onlyWarnsForInDependencies\n ? { '*': onlyWarnsForInDependencies }\n : {},\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n } = {}) {\n if (peerDependenciesOnlyWarnsFor) {\n console.warn(\n 'Option \"peerDependenciesOnlyWarnsFor\" in checkRecommended() is deprecated. Use \"onlyWarnsForInDependencies\" instead.',\n );\n }\n if (directDuplicateDependenciesOnlyWarnsFor) {\n console.warn(\n 'Option \"directDuplicateDependenciesOnlyWarnsFor\" in checkRecommended() is deprecated. Use \"onlyWarnsForInDependencies\" instead.',\n );\n }\n\n checkPackage.checkNoDependencies();\n checkPackage.checkRecommended({\n isLibrary: false,\n onlyWarnsForInPackage: onlyWarnsForInRootPackage,\n onlyWarnsForInDependencies: onlyWarnsForInRootDependencies,\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n });\n\n const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck =\n createOnlyWarnsForMappingCheck(\n 'monorepoDirectDuplicateDependenciesOnlyWarnsFor',\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n );\n\n const previousCheckedWorkspaces = new Map();\n checksWorkspaces.forEach((checkSubPackage, id) => {\n const isPackageALibrary = isLibrary(id);\n checkSubPackage.checkRecommended({\n isLibrary: isPackageALibrary,\n allowRangeVersionsInDependencies: isPackageALibrary\n ? allowRangeVersionsInLibraries\n : false,\n onlyWarnsForInPackage: onlyWarnsForInMonorepoPackages\n ? {\n ...onlyWarnsForInMonorepoPackages['*'],\n ...onlyWarnsForInMonorepoPackages[checkSubPackage.pkg.name],\n }\n : undefined,\n onlyWarnsForInDependencies:\n onlyWarnsForInMonorepoPackagesDependencies[\n checkSubPackage.pkg.name\n ],\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n internalExactVersionsIgnore: [...checksWorkspaces.keys()],\n checkResolutionMessage,\n });\n\n const reportMonorepoDDDError = createReportError(\n 'Monorepo Direct Duplicate Dependencies',\n checkSubPackage.pkgPathName,\n );\n // Root\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n // previous packages\n previousCheckedWorkspaces.forEach((previousCheckSubPackage) => {\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n 'dependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n 'peerDependencies',\n ['peerDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n });\n\n previousCheckedWorkspaces.set(id, checkSubPackage);\n });\n reportNotWarnedForMapping(\n createReportError(\n 'Monorepo Direct Duplicate Dependencies',\n checkPackage.pkgPathName,\n ),\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck,\n );\n\n return this;\n },\n\n forRoot(callback) {\n callback(checkPackage);\n return this;\n },\n\n forEach(callback) {\n checksWorkspaces.forEach((checkSubPackage) => {\n callback(checkSubPackage);\n });\n return this;\n },\n\n for(id, callback) {\n const packageCheck = checksWorkspaces.get(id);\n if (!packageCheck) {\n throw new Error(\n `Invalid package name: ${id}. Known package names: \"${[\n ...checksWorkspaces.keys(),\n ].join('\",\"')}\"`,\n );\n }\n callback(packageCheck);\n return this;\n },\n };\n}\n"],"names":["getKeys","o","Object","keys","getEntries","entries","titleDisplayed","pkgPathDisplayed","logMessage","msgTitle","msgInfo","onlyWarns","console","error","chalk","yellow","red","createReportError","title","pkgPathName","reportError","cyan","process","exitCode","reportNotWarnedFor","onlyWarnsForCheck","notWarnedFor","getNotWarnedFor","length","configName","map","depName","join","reportNotWarnedForMapping","onlyWarnsForMappingCheck","notWarnedForMapping","forEach","depNameOrStar","checkDuplicateDependencies","pkg","depType","searchIn","depPkg","dependencies","searchInExisting","filter","type","depKey","range","versionsIn","versions","version","index","startsWith","semver","satisfies","includePrerelease","intersects","resolutions","versionInType","name","shouldWarnsFor","checkDirectDuplicateDependencies","getDependencyPackageJson","reportErrorNamePrefix","createFor","checkPeerDependencies","allowedPeerIn","missingOnlyWarnsForCheck","invalidOnlyWarnsForCheck","peerDependencies","peerDependenciesMeta","allowedPeerInExisting","allowedPeerInType","peerDepName","allowedPeerInExistingType","peerDependenciesMetaPeerDep","optional","versionsInType","minVersionOfVersion","minVersion","regularDependencyTypes","getAllowedPeerInFromType","depPkgType","isLibrary","checkDirectPeerDependencies","isVersionRange","checkExactVersions","types","internalExactVersionsIgnore","tryToAutoFix","pkgDependencies","dependencyName","versionConst","match","exec","Error","realVersion","includes","shouldOnlyWarn","resolvedDep","slice","checkIdenticalVersions","deps","depConfigArrayOrObject","depConfig","Array","isArray","depKeyType","pkgDependenciesType","depKeyIdentical","value","checkIdenticalVersionsThanDependency","depKeys","checkNoDependencies","pkgPath","moveToSuggestion","checkResolutionsHasExplanation","checkMessage","pkgResolutions","pkgResolutionsExplained","resolutionsExplained","checkResolutionsVersionsMatch","resolutionDepVersion","checkSatisfiesVersions","dependenciesRanges","checkSatisfiesVersionsFromDependency","readPkgJson","packagePath","JSON","parse","readFileSync","writePkgJson","writeFileSync","stringify","internalLoadPackageJsonFromNodeModules","pkgDepName","pkgDirname","require","resolve","paths","createGetDependencyPackageJson","nodeModulesPackagePathCache","Map","internalCustomLoadPackageJsonFromNodeModules","internalReadPkgJson","existing","get","err","code","message","matchPackageJson","set","createOnlyWarnsForArrayCheck","onlyWarnsFor","Set","delete","isMapping","createOnlyWarnsForMappingCheck","fromEntries","entryKey","entryValue","key","size","dependencyNameLevel1","arrayOnlyWarnsForCheck","createCheckPackage","pkgDirectoryPath","internalWorkspacePkgDirectoryPath","path","copyPkg","env","CI","CHECK_PACKAGE_DEPENDENCIES_ENABLE_CI_AUTOFIX","argv","writePackageIfChanged","util","isDeepStrictEqual","runCalled","on","warn","run","Promise","allowRangeVersionsInDependencies","checkExactVersionsForLibrary","checkExactDevVersions","deprecatedOnlyWarnsFor","missingOnlyWarnsFor","invalidOnlyWarnsFor","internalMissingConfigName","internalInvalidConfigName","internalConfigName","undefined","checkRecommended","onlyWarnsForInPackage","onlyWarnsForInDependencies","peerDependenciesOnlyWarnsFor","directDuplicateDependenciesOnlyWarnsFor","exactVersionsOnlyWarnsFor","checkResolutionMessage","internalMissingPeerDependenciesOnlyWarnsFor","internalInvalidPeerDependenciesOnlyWarnsFor","internalDirectDuplicateDependenciesOnlyWarnsFor","exactVersions","dependencyNameOrSpecialKey","onlyWarnsForValue","duplicateDirectDependency","missingPeerDependency","invalidPeerDependencyVersion","devDependencies","checkIdenticalVersionsThanDevDependencyOfDependency","dependencyType","checkSatisfiesVersionsInDevDependenciesOfDependency","checkSatisfiesVersionsBetweenDependencies","depName1","depName2","depPkg1","depPkg2","createCheckPackageWithWorkspaces","createCheckPackageOptions","checkPackage","pkgWorkspaces","workspaces","packages","workspacePackagesPaths","pattern","glob","sync","cwd","pathMatch","stat","fs","statSync","isDirectory","subPkgDirectoryPath","relative","push","checksWorkspaces","checkPkg","all","values","checksWorkspace","allowRangeVersionsInLibraries","onlyWarnsForInRootPackage","onlyWarnsForInMonorepoPackages","onlyWarnsForInRootDependencies","onlyWarnsForInMonorepoPackagesDependencies","monorepoDirectDuplicateDependenciesOnlyWarnsFor","monorepoDirectDuplicateDependenciesOnlyWarnsForCheck","previousCheckedWorkspaces","checkSubPackage","id","isPackageALibrary","reportMonorepoDDDError","previousCheckSubPackage","forRoot","callback","for","packageCheck"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index-node14.cjs.js b/dist/index-node14.mjs similarity index 73% rename from dist/index-node14.cjs.js rename to dist/index-node14.mjs index 061bb76c..648f2ee0 100644 --- a/dist/index-node14.cjs.js +++ b/dist/index-node14.mjs @@ -1,22 +1,10 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -const path = require('path'); -const util = require('util'); -const chalk = require('chalk'); -const semver = require('semver'); -const fs = require('fs'); -const glob = require('glob'); - -function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; } - -const path__default = /*#__PURE__*/_interopDefaultLegacy(path); -const util__default = /*#__PURE__*/_interopDefaultLegacy(util); -const chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk); -const semver__default = /*#__PURE__*/_interopDefaultLegacy(semver); -const fs__default = /*#__PURE__*/_interopDefaultLegacy(fs); -const glob__default = /*#__PURE__*/_interopDefaultLegacy(glob); +import path from 'path'; +import util from 'util'; +import chalk from 'chalk'; +import semver from 'semver'; +import fs, { readFileSync, writeFileSync } from 'fs'; +import { resolve } from 'import-meta-resolve'; +import glob from 'glob'; const getKeys = o => Object.keys(o); const getEntries = o => Object.entries(o); @@ -25,13 +13,13 @@ const getEntries = o => Object.entries(o); let titleDisplayed = null; let pkgPathDisplayed = null; function logMessage(msgTitle, msgInfo, onlyWarns) { - console.error(`${onlyWarns ? chalk__default.yellow(`⚠ ${msgTitle}`) : chalk__default.red(`❌ ${msgTitle}`)}${msgInfo ? `: ${msgInfo}` : ''}`); + console.error(`${onlyWarns ? chalk.yellow(`⚠ ${msgTitle}`) : chalk.red(`❌ ${msgTitle}`)}${msgInfo ? `: ${msgInfo}` : ''}`); } function createReportError(title, pkgPathName) { return function reportError(msgTitle, msgInfo, onlyWarns) { if (titleDisplayed !== title || pkgPathName !== pkgPathDisplayed) { if (titleDisplayed) console.error(); - console.error(chalk__default.cyan(`== ${title} in ${pkgPathName} ==`)); + console.error(chalk.cyan(`== ${title} in ${pkgPathName} ==`)); titleDisplayed = title; pkgPathDisplayed = pkgPathName; } @@ -77,9 +65,9 @@ function checkDuplicateDependencies(reportError, pkg, depType, searchIn, depPkg, return; } - if (semver__default.satisfies(version, range, { + if (semver.satisfies(version, range, { includePrerelease: true - }) || semver__default.intersects(version, range, { + }) || semver.intersects(version, range, { includePrerelease: true })) { return; @@ -97,25 +85,26 @@ function checkDuplicateDependencies(reportError, pkg, depType, searchIn, depPkg, } } -function checkDirectDuplicateDependencies(pkg, pkgPathName, depType, getDependencyPackageJson, onlyWarnsForCheck, reportErrorNamePrefix = '') { - const reportError = createReportError(`${reportErrorNamePrefix}Direct Duplicate Dependencies`, pkgPathName); - [{ +async function checkDirectDuplicateDependencies(pkg, pkgPathName, depType, getDependencyPackageJson, onlyWarnsForCheck, reportErrorNamePrefix = '', customCreateReportError = createReportError) { + const reportError = customCreateReportError(`${reportErrorNamePrefix}Direct Duplicate Dependencies`, pkgPathName); + await Promise.all([{ type: 'devDependencies', searchIn: ['devDependencies', 'dependencies'] }, { type: 'dependencies', searchIn: ['devDependencies', 'dependencies'] - }].forEach(({ + }].map(async ({ type, searchIn }) => { const dependencies = pkg[type]; if (!dependencies) return; - getKeys(dependencies).forEach(depName => { - const depPkg = getDependencyPackageJson(depName); + + for (const depName of getKeys(dependencies)) { + const depPkg = await getDependencyPackageJson(depName); checkDuplicateDependencies(reportError, pkg, depType, searchIn, depPkg, onlyWarnsForCheck.createFor(depName)); - }); - }); + } + })); reportNotWarnedForMapping(reportError, onlyWarnsForCheck); } @@ -134,7 +123,7 @@ function checkPeerDependencies(pkg, reportError, type, allowedPeerIn, depPkg, mi const peerDependenciesMetaPeerDep = peerDependenciesMeta?.[peerDepName]; if (peerDependenciesMetaPeerDep?.optional) { - return; + continue; } reportError(`Missing "${peerDepName}" peer dependency from "${depPkg.name}" in ${type}`, `it should satisfies "${range}" and be in ${allowedPeerIn.join(' or ')}`, missingOnlyWarnsForCheck.shouldWarnsFor(peerDepName)); @@ -145,9 +134,9 @@ function checkPeerDependencies(pkg, reportError, type, allowedPeerIn, depPkg, mi return; } - const minVersionOfVersion = semver__default.minVersion(version); + const minVersionOfVersion = semver.minVersion(version); - if (!minVersionOfVersion || !semver__default.satisfies(minVersionOfVersion, range, { + if (!minVersionOfVersion || !semver.satisfies(minVersionOfVersion, range, { includePrerelease: true })) { reportError(`Invalid "${peerDepName}" peer dependency`, `"${version}" (in ${allowedPeerInExisting[index]}) should satisfies "${range}" from "${depPkg.name}" ${type}`, invalidOnlyWarnsForCheck.shouldWarnsFor(peerDepName)); @@ -172,19 +161,20 @@ const getAllowedPeerInFromType = (depPkgType, isLibrary) => { } }; -function checkDirectPeerDependencies(isLibrary, pkg, pkgPathName, getDependencyPackageJson, missingOnlyWarnsForCheck, invalidOnlyWarnsForCheck) { - const reportError = createReportError('Peer Dependencies', pkgPathName); - regularDependencyTypes.forEach(depType => { +async function checkDirectPeerDependencies(isLibrary, pkg, pkgPathName, getDependencyPackageJson, missingOnlyWarnsForCheck, invalidOnlyWarnsForCheck, customCreateReportError = createReportError) { + const reportError = customCreateReportError('Peer Dependencies', pkgPathName); + await Promise.all(regularDependencyTypes.map(async depType => { const dependencies = pkg[depType]; if (!dependencies) return; - getKeys(dependencies).forEach(depName => { - const depPkg = getDependencyPackageJson(depName); + + for (const depName of getKeys(dependencies)) { + const depPkg = await getDependencyPackageJson(depName); if (depPkg.peerDependencies) { checkPeerDependencies(pkg, reportError, depType, getAllowedPeerInFromType(depType, isLibrary), depPkg, missingOnlyWarnsForCheck.createFor(depName), invalidOnlyWarnsForCheck.createFor(depName)); } - }); - }); + } + })); reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck); if (missingOnlyWarnsForCheck !== invalidOnlyWarnsForCheck) { @@ -196,16 +186,18 @@ function checkDirectPeerDependencies(isLibrary, pkg, pkgPathName, getDependencyP const isVersionRange = version => version.startsWith('^') || version.startsWith('~'); -function checkExactVersions(pkg, pkgPathName, types, { +async function checkExactVersions(pkg, pkgPathName, types, { getDependencyPackageJson, onlyWarnsForCheck, internalExactVersionsIgnore, - tryToAutoFix = false + tryToAutoFix = false, + customCreateReportError = createReportError }) { - const reportError = createReportError('Exact versions', pkgPathName); - types.forEach(type => { + const reportError = customCreateReportError('Exact versions', pkgPathName); + + for (const type of types) { const pkgDependencies = pkg[type]; - if (!pkgDependencies) return; + if (!pkgDependencies) continue; for (const [dependencyName, versionConst] of Object.entries(pkgDependencies)) { let version = versionConst; @@ -219,7 +211,7 @@ function checkExactVersions(pkg, pkgPathName, types, { if (isVersionRange(version)) { if (internalExactVersionsIgnore?.includes(dependencyName)) { - return; + continue; } const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName); @@ -228,14 +220,14 @@ function checkExactVersions(pkg, pkgPathName, types, { let resolvedDep; try { - resolvedDep = getDependencyPackageJson(dependencyName); + resolvedDep = await getDependencyPackageJson(dependencyName); } catch { resolvedDep = null; } if (!resolvedDep || !resolvedDep.version) { reportError(`Unexpected range dependency in "${type}" for "${dependencyName}"`, `expecting "${version}" to be exact, autofix failed to resolve "${dependencyName}".`, shouldOnlyWarn); - } else if (!semver__default.satisfies(resolvedDep.version, version, { + } else if (!semver.satisfies(resolvedDep.version, version, { includePrerelease: true })) { reportError(`Unexpected range dependency in "${type}" for "${dependencyName}"`, `expecting "${version}" to be exact, autofix failed as "${dependencyName}"'s resolved version is "${resolvedDep.version}" and doesn't satisfies "${version}".`, shouldOnlyWarn); @@ -247,13 +239,14 @@ function checkExactVersions(pkg, pkgPathName, types, { } } } - }); + } + reportNotWarnedFor(reportError, onlyWarnsForCheck); } -function checkIdenticalVersions(pkg, pkgPathName, type, deps, onlyWarnsForCheck) { +function checkIdenticalVersions(pkg, pkgPathName, type, deps, onlyWarnsForCheck, customCreateReportError = createReportError) { const pkgDependencies = pkg[type] || {}; - const reportError = createReportError('Identical Versions', pkgPathName); + const reportError = customCreateReportError('Identical Versions', pkgPathName); getKeys(deps).forEach(depKey => { const version = pkgDependencies[depKey]; @@ -283,9 +276,9 @@ function checkIdenticalVersions(pkg, pkgPathName, type, deps, onlyWarnsForCheck) }); } -function checkIdenticalVersionsThanDependency(pkg, pkgPathName, type, depKeys, depPkg, dependencies = {}, onlyWarnsForCheck) { +function checkIdenticalVersionsThanDependency(pkg, pkgPathName, type, depKeys, depPkg, dependencies = {}, onlyWarnsForCheck, customCreateReportError = createReportError) { const pkgDependencies = pkg[type] || {}; - const reportError = createReportError(`Same Versions than ${depPkg.name}`, pkgPathName); + const reportError = customCreateReportError(`Same Versions than ${depPkg.name}`, pkgPathName); depKeys.forEach(depKey => { const version = dependencies[depKey]; @@ -311,17 +304,17 @@ function checkIdenticalVersionsThanDependency(pkg, pkgPathName, type, depKeys, d }); } -function checkNoDependencies(pkg, pkgPath, type = 'dependencies', moveToSuggestion = 'devDependencies') { +function checkNoDependencies(pkg, pkgPath, type = 'dependencies', moveToSuggestion = 'devDependencies', customCreateReportError = createReportError) { const pkgDependencies = pkg[type]; if (!pkgDependencies) return; - const reportError = createReportError('No dependencies', pkgPath); + const reportError = customCreateReportError('No dependencies', pkgPath); reportError(`Unexpected ${type}`, `you should move them in ${moveToSuggestion}`); } -function checkResolutionsHasExplanation(pkg, pkgPathName, checkMessage, getDependencyPackageJson) { +function checkResolutionsHasExplanation(pkg, pkgPathName, checkMessage, getDependencyPackageJson, customCreateReportError = createReportError) { const pkgResolutions = pkg.resolutions || {}; const pkgResolutionsExplained = pkg.resolutionsExplained || {}; - const reportError = createReportError('Resolutions has explanation', pkgPathName); + const reportError = customCreateReportError('Resolutions has explanation', pkgPathName); Object.keys(pkgResolutions).forEach(depKey => { if (!pkgResolutionsExplained[depKey]) { reportError(`Missing "${depKey}" in resolutionsExplained.`); @@ -343,16 +336,17 @@ function checkResolutionsHasExplanation(pkg, pkgPathName, checkMessage, getDepen } function checkResolutionsVersionsMatch(pkg, pkgPathName, { - tryToAutoFix + tryToAutoFix, + customCreateReportError = createReportError } = {}) { const pkgResolutions = pkg.resolutions || {}; - const reportError = createReportError('Resolutions match other dependencies', pkgPathName); + const reportError = customCreateReportError('Resolutions match other dependencies', pkgPathName); Object.entries(pkgResolutions).forEach(([depName, resolutionDepVersion]) => { ['dependencies', 'devDependencies'].forEach(depType => { const range = pkg?.[depType]?.[depName]; if (!range) return; - if (!semver__default.satisfies(resolutionDepVersion, range, { + if (!semver.satisfies(resolutionDepVersion, range, { includePrerelease: true })) { if (tryToAutoFix) { @@ -374,9 +368,9 @@ function checkSatisfiesVersions(pkg, pkgPathName, type, dependenciesRanges, only if (!version) { reportError(`Missing "${depKey}" in ${type}`, `should satisfies "${range}".`, onlyWarnsForCheck?.shouldWarnsFor(depKey)); } else { - const minVersionOfVersion = semver__default.minVersion(version); + const minVersionOfVersion = semver.minVersion(version); - if (!minVersionOfVersion || !semver__default.satisfies(minVersionOfVersion, range, { + if (!minVersionOfVersion || !semver.satisfies(minVersionOfVersion, range, { includePrerelease: true })) { reportError(`Invalid "${depKey}" in ${type}`, `"${version}" (in "${depKey}") should satisfies "${range}".`, onlyWarnsForCheck?.shouldWarnsFor(depKey)); @@ -385,9 +379,9 @@ function checkSatisfiesVersions(pkg, pkgPathName, type, dependenciesRanges, only }); } -function checkSatisfiesVersionsFromDependency(pkg, pkgPathName, type, depKeys, depPkg, dependencies = {}, onlyWarnsForCheck) { +function checkSatisfiesVersionsFromDependency(pkg, pkgPathName, type, depKeys, depPkg, dependencies = {}, onlyWarnsForCheck, customCreateReportError = createReportError) { const pkgDependencies = pkg[type] || {}; - const reportError = createReportError(`Satisfies Versions from ${depPkg.name}`, pkgPathName); + const reportError = customCreateReportError(`Satisfies Versions from ${depPkg.name}`, pkgPathName); depKeys.forEach(depKey => { const range = dependencies[depKey]; @@ -401,9 +395,9 @@ function checkSatisfiesVersionsFromDependency(pkg, pkgPathName, type, depKeys, d if (!version) { reportError(`Missing "${depKey}" in ${type}`, `should satisfies "${range}" from "${depPkg.name}" ${depKey}.`, onlyWarnsForCheck?.shouldWarnsFor(depKey)); } else { - const minVersionOfVersion = semver__default.minVersion(version); + const minVersionOfVersion = semver.minVersion(version); - if (!minVersionOfVersion || !semver__default.satisfies(minVersionOfVersion, range, { + if (!minVersionOfVersion || !semver.satisfies(minVersionOfVersion, range, { includePrerelease: true })) { reportError(`Invalid "${depKey}" in ${type}`, `"${version}" (in "${depKey}") should satisfies "${range}" from "${depPkg.name}" ${depKey}.`, onlyWarnsForCheck?.shouldWarnsFor(depKey)); @@ -413,26 +407,25 @@ function checkSatisfiesVersionsFromDependency(pkg, pkgPathName, type, depKeys, d } function readPkgJson(packagePath) { - return JSON.parse(fs.readFileSync(packagePath, 'utf8')); + return JSON.parse(readFileSync(packagePath, 'utf8')); } function writePkgJson(packagePath, pkg) { - fs.writeFileSync(packagePath, JSON.stringify(pkg, null, 2)); + writeFileSync(packagePath, JSON.stringify(pkg, null, 2)); } /** @internal */ -function internalLoadPackageJsonFromNodeModules(pkgDepName, pkgDirname) { - // eslint-disable-next-line import/no-dynamic-require, @typescript-eslint/no-var-requires - return require(require.resolve(`${pkgDepName}/package.json`, { - paths: [pkgDirname] - })); +async function internalLoadPackageJsonFromNodeModules(pkgDepName, pkgDirname) { + const packageUrl = await resolve(`${pkgDepName}/package.json`, `file://${pkgDirname}/package.json`); + return readPkgJson(packageUrl.replace(process.platform === 'win32' ? /^file:\/{3}/ : /^file:\/\//, '')); } + function createGetDependencyPackageJson({ pkgDirname, nodeModulesPackagePathCache = new Map(), internalCustomLoadPackageJsonFromNodeModules = internalLoadPackageJsonFromNodeModules, internalReadPkgJson = readPkgJson }) { - return pkgDepName => { + return async pkgDepName => { const existing = nodeModulesPackagePathCache.get(pkgDepName); if (existing) return existing; let pkg; @@ -441,7 +434,7 @@ function createGetDependencyPackageJson({ pkg = internalReadPkgJson(`${pkgDirname}/${pkgDepName}/package.json`); } else { try { - pkg = internalCustomLoadPackageJsonFromNodeModules(pkgDepName, pkgDirname); + pkg = await internalCustomLoadPackageJsonFromNodeModules(pkgDepName, pkgDirname); } catch (err) { if (!(err instanceof Error)) throw err; @@ -449,7 +442,7 @@ function createGetDependencyPackageJson({ throw err; } - const match = / in (.*[/\\]package.json)($|\simported from)/.exec(err.message); + const match = / in (.*[/\\]package\.json)\s+imported from/.exec(err.message); if (match) { const [, matchPackageJson] = match; @@ -560,7 +553,7 @@ function createCheckPackage(pkgDirectoryPath = '.', { tryToAutoFix = false, internalWorkspacePkgDirectoryPath } = {}) { - const pkgDirname = path__default.resolve(pkgDirectoryPath); + const pkgDirname = path.resolve(pkgDirectoryPath); const pkgPath = `${pkgDirname}/package.json`; const pkgPathName = `${pkgDirectoryPath}/package.json`; const pkg = readPkgJson(pkgPath); @@ -576,7 +569,7 @@ function createCheckPackage(pkgDirectoryPath = '.', { const writePackageIfChanged = () => { if (!tryToAutoFix) return; - if (util__default.isDeepStrictEqual(pkg, copyPkg)) return; + if (util.isDeepStrictEqual(pkg, copyPkg)) return; writePkgJson(pkgPath, pkg); }; @@ -588,15 +581,37 @@ function createCheckPackage(pkgDirectoryPath = '.', { if (!internalWorkspacePkgDirectoryPath) { process.on('beforeExit', () => { if (!runCalled) { - console.warn('\nFor future compatibility, call .run() and await the result.'); + throw new Error('Call .run() and await the result.'); } }); } + class Job { + constructor(name, fn) { + this.name = name; + this.fn = fn; + } + + async run() { + try { + await this.fn(); + } catch (err) { + throw new Error(`${this.name} failed: ${err.message}`); + } + } + + } + + const jobs = []; return { - run() { - runCalled = true; - return Promise.resolve(); + async run() { + runCalled = true; // TODO parallel + + for (const job of jobs) { + await job.run(); + } + + writePackageIfChanged(); }, pkg, @@ -609,14 +624,15 @@ function createCheckPackage(pkgDirectoryPath = '.', { internalExactVersionsIgnore, allowRangeVersionsInDependencies = true } = {}) { - const onlyWarnsForCheck = createOnlyWarnsForArrayCheck('checkExactVersions.onlyWarnsFor', onlyWarnsFor); - checkExactVersions(pkg, pkgPathName, !allowRangeVersionsInDependencies ? ['dependencies', 'devDependencies', 'resolutions'] : ['devDependencies', 'resolutions'], { - onlyWarnsForCheck, - internalExactVersionsIgnore, - getDependencyPackageJson, - tryToAutoFix - }); - writePackageIfChanged(); + jobs.push(new Job(this.checkExactVersions.name, async () => { + const onlyWarnsForCheck = createOnlyWarnsForArrayCheck('checkExactVersions.onlyWarnsFor', onlyWarnsFor); + await checkExactVersions(pkg, pkgPathName, !allowRangeVersionsInDependencies ? ['dependencies', 'devDependencies', 'resolutions'] : ['devDependencies', 'resolutions'], { + onlyWarnsForCheck, + internalExactVersionsIgnore, + getDependencyPackageJson, + tryToAutoFix + }); + })); return this; }, @@ -624,7 +640,6 @@ function createCheckPackage(pkgDirectoryPath = '.', { checkResolutionsVersionsMatch(pkg, pkgPathName, { tryToAutoFix }); - writePackageIfChanged(); return this; }, @@ -632,26 +647,28 @@ function createCheckPackage(pkgDirectoryPath = '.', { checkExactVersionsForLibrary({ onlyWarnsFor } = {}) { - const onlyWarnsForCheck = createOnlyWarnsForArrayCheck('checkExactVersionsForLibrary.onlyWarnsFor', onlyWarnsFor); - checkExactVersions(pkg, pkgPathName, ['devDependencies', 'resolutions'], { - onlyWarnsForCheck, - tryToAutoFix, - getDependencyPackageJson - }); - writePackageIfChanged(); + jobs.push(new Job(this.checkExactDevVersions.name, async () => { + const onlyWarnsForCheck = createOnlyWarnsForArrayCheck('checkExactVersionsForLibrary.onlyWarnsFor', onlyWarnsFor); + await checkExactVersions(pkg, pkgPathName, ['devDependencies', 'resolutions'], { + onlyWarnsForCheck, + tryToAutoFix, + getDependencyPackageJson + }); + })); return this; }, checkExactDevVersions({ onlyWarnsFor } = {}) { - const onlyWarnsForCheck = createOnlyWarnsForArrayCheck('checkExactDevVersions.onlyWarnsFor', onlyWarnsFor); - checkExactVersions(pkg, pkgPathName, ['devDependencies'], { - onlyWarnsForCheck, - tryToAutoFix, - getDependencyPackageJson - }); - writePackageIfChanged(); + jobs.push(new Job(this.checkExactDevVersions.name, async () => { + const onlyWarnsForCheck = createOnlyWarnsForArrayCheck('checkExactDevVersions.onlyWarnsFor', onlyWarnsFor); + await checkExactVersions(pkg, pkgPathName, ['devDependencies'], { + onlyWarnsForCheck, + tryToAutoFix, + getDependencyPackageJson + }); + })); return this; }, @@ -668,9 +685,11 @@ function createCheckPackage(pkgDirectoryPath = '.', { internalMissingConfigName = deprecatedOnlyWarnsFor ? 'onlyWarnsFor' : 'missingOnlyWarnsFor', internalInvalidConfigName = deprecatedOnlyWarnsFor ? 'onlyWarnsFor' : 'invalidOnlyWarnsFor' } = {}) { - const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck(internalMissingConfigName, missingOnlyWarnsFor); - const invalidOnlyWarnsForCheck = internalInvalidConfigName === internalMissingConfigName ? missingOnlyWarnsForCheck : createOnlyWarnsForMappingCheck(internalInvalidConfigName, invalidOnlyWarnsFor); - checkDirectPeerDependencies(isLibrary, pkg, pkgPathName, getDependencyPackageJson, missingOnlyWarnsForCheck, invalidOnlyWarnsForCheck); + jobs.push(new Job(this.checkDirectPeerDependencies.name, async () => { + const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck(internalMissingConfigName, missingOnlyWarnsFor); + const invalidOnlyWarnsForCheck = internalInvalidConfigName === internalMissingConfigName ? missingOnlyWarnsForCheck : createOnlyWarnsForMappingCheck(internalInvalidConfigName, invalidOnlyWarnsFor); + await checkDirectPeerDependencies(isLibrary, pkg, pkgPathName, getDependencyPackageJson, missingOnlyWarnsForCheck, invalidOnlyWarnsForCheck); + })); return this; }, @@ -678,11 +697,13 @@ function createCheckPackage(pkgDirectoryPath = '.', { onlyWarnsFor, internalConfigName = 'onlyWarnsFor' } = {}) { - checkDirectDuplicateDependencies(pkg, pkgPathName, 'dependencies', getDependencyPackageJson, createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor)); + jobs.push(new Job(this.checkDirectDuplicateDependencies.name, async () => { + await checkDirectDuplicateDependencies(pkg, pkgPathName, 'dependencies', getDependencyPackageJson, createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor)); + })); return this; }, - checkResolutionsHasExplanation(checkMessage = () => undefined) { + checkResolutionsHasExplanation(checkMessage = (depKey, message) => undefined) { checkResolutionsHasExplanation(pkg, pkgPathName, checkMessage, getDependencyPackageJson); return this; }, @@ -763,20 +784,21 @@ function createCheckPackage(pkgDirectoryPath = '.', { dependencies, devDependencies }) { - const depPkg = getDependencyPackageJson(depName); - - if (resolutions) { - checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'resolutions', resolutions, depPkg, depPkg.dependencies); - } + jobs.push(new Job(this.checkIdenticalVersionsThanDependency.name, async () => { + const depPkg = await getDependencyPackageJson(depName); - if (dependencies) { - checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'dependencies', dependencies, depPkg, depPkg.dependencies); - } + if (resolutions) { + checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'resolutions', resolutions, depPkg, depPkg.dependencies); + } - if (devDependencies) { - checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'devDependencies', devDependencies, depPkg, depPkg.dependencies); - } + if (dependencies) { + checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'dependencies', dependencies, depPkg, depPkg.dependencies); + } + if (devDependencies) { + checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'devDependencies', devDependencies, depPkg, depPkg.dependencies); + } + })); return this; }, @@ -785,20 +807,21 @@ function createCheckPackage(pkgDirectoryPath = '.', { dependencies, devDependencies }) { - const depPkg = getDependencyPackageJson(depName); + jobs.push(new Job(this.checkSatisfiesVersionsFromDependency.name, async () => { + const depPkg = await getDependencyPackageJson(depName); - if (resolutions) { - checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'resolutions', resolutions, depPkg, depPkg.devDependencies); - } - - if (dependencies) { - checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'dependencies', dependencies, depPkg, depPkg.devDependencies); - } + if (resolutions) { + checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'resolutions', resolutions, depPkg, depPkg.devDependencies); + } - if (devDependencies) { - checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'devDependencies', devDependencies, depPkg, depPkg.devDependencies); - } + if (dependencies) { + checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'dependencies', dependencies, depPkg, depPkg.devDependencies); + } + if (devDependencies) { + checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'devDependencies', devDependencies, depPkg, depPkg.devDependencies); + } + })); return this; }, @@ -814,20 +837,21 @@ function createCheckPackage(pkgDirectoryPath = '.', { dependencies, devDependencies }) { - const depPkg = getDependencyPackageJson(depName); - - if (resolutions) { - checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'resolutions', resolutions, depPkg, depPkg.dependencies); - } + jobs.push(new Job(this.checkSatisfiesVersionsFromDependency.name, async () => { + const depPkg = await getDependencyPackageJson(depName); - if (dependencies) { - checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'dependencies', dependencies, depPkg, depPkg.dependencies); - } + if (resolutions) { + checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'resolutions', resolutions, depPkg, depPkg.dependencies); + } - if (devDependencies) { - checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'devDependencies', devDependencies, depPkg, depPkg.dependencies); - } + if (dependencies) { + checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'dependencies', dependencies, depPkg, depPkg.dependencies); + } + if (devDependencies) { + checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'devDependencies', devDependencies, depPkg, depPkg.dependencies); + } + })); return this; }, @@ -836,20 +860,21 @@ function createCheckPackage(pkgDirectoryPath = '.', { dependencies, devDependencies }) { - const depPkg = getDependencyPackageJson(depName); + jobs.push(new Job(this.checkSatisfiesVersionsInDevDependenciesOfDependency.name, async () => { + const depPkg = await getDependencyPackageJson(depName); - if (resolutions) { - checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'resolutions', resolutions, depPkg, depPkg.devDependencies); - } - - if (dependencies) { - checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'dependencies', dependencies, depPkg, depPkg.devDependencies); - } + if (resolutions) { + checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'resolutions', resolutions, depPkg, depPkg.devDependencies); + } - if (devDependencies) { - checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'devDependencies', devDependencies, depPkg, depPkg.devDependencies); - } + if (dependencies) { + checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'dependencies', dependencies, depPkg, depPkg.devDependencies); + } + if (devDependencies) { + checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'devDependencies', devDependencies, depPkg, depPkg.devDependencies); + } + })); return this; }, @@ -877,17 +902,17 @@ function createCheckPackage(pkgDirectoryPath = '.', { dependencies, devDependencies }) { - const depPkg1 = getDependencyPackageJson(depName1); - const depPkg2 = getDependencyPackageJson(depName2); - - if (dependencies) { - checkSatisfiesVersionsFromDependency(depPkg2, pkgPathName, 'dependencies', dependencies, depPkg1, depPkg1.dependencies); - } + jobs.push(new Job(this.checkSatisfiesVersionsBetweenDependencies.name, async () => { + const [depPkg1, depPkg2] = await Promise.all([getDependencyPackageJson(depName1), getDependencyPackageJson(depName2)]); - if (devDependencies) { - checkSatisfiesVersionsFromDependency(depPkg2, pkgPathName, 'devDependencies', devDependencies, depPkg1, depPkg1.dependencies); - } + if (dependencies) { + checkSatisfiesVersionsFromDependency(depPkg2, pkgPathName, 'dependencies', dependencies, depPkg1, depPkg1.dependencies); + } + if (devDependencies) { + checkSatisfiesVersionsFromDependency(depPkg2, pkgPathName, 'devDependencies', devDependencies, depPkg1, depPkg1.dependencies); + } + })); return this; } @@ -911,13 +936,13 @@ function createCheckPackageWithWorkspaces(pkgDirectoryPath = '.', createCheckPac if (pkgWorkspaces) { pkgWorkspaces.forEach(pattern => { - const match = glob__default.sync(pattern, { + const match = glob.sync(pattern, { cwd: pkgDirname }); match.forEach(pathMatch => { - const stat = fs__default.statSync(pathMatch); + const stat = fs.statSync(pathMatch); if (!stat.isDirectory()) return; - const subPkgDirectoryPath = path__default.relative(process.cwd(), pathMatch); + const subPkgDirectoryPath = path.relative(process.cwd(), pathMatch); workspacePackagesPaths.push(subPkgDirectoryPath); }); }); @@ -931,7 +956,9 @@ function createCheckPackageWithWorkspaces(pkgDirectoryPath = '.', createCheckPac })); return { async run() { - await Promise.all([checkPackage, ...checksWorkspaces.values()].map(checksWorkspace => checksWorkspace.run())); + for (const checksWorkspace of [checkPackage, ...checksWorkspaces.values()]) { + await checksWorkspace.run(); + } }, checkRecommended({ @@ -1023,6 +1050,5 @@ function createCheckPackageWithWorkspaces(pkgDirectoryPath = '.', createCheckPac }; } -exports.createCheckPackage = createCheckPackage; -exports.createCheckPackageWithWorkspaces = createCheckPackageWithWorkspaces; -//# sourceMappingURL=index-node14.cjs.js.map +export { createCheckPackage, createCheckPackageWithWorkspaces }; +//# sourceMappingURL=index-node14.mjs.map diff --git a/dist/index-node14.mjs.map b/dist/index-node14.mjs.map new file mode 100644 index 00000000..c70328fe --- /dev/null +++ b/dist/index-node14.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index-node14.mjs","sources":["../src/utils/object.ts","../src/utils/createReportError.ts","../src/checks/checkDuplicateDependencies.ts","../src/checks/checkDirectDuplicateDependencies.ts","../src/checks/checkPeerDependencies.ts","../src/checks/checkDirectPeerDependencies.ts","../src/checks/checkExactVersions.ts","../src/checks/checkIdenticalVersions.ts","../src/checks/checkIdenticalVersionsThanDependency.ts","../src/checks/checkNoDependencies.ts","../src/checks/checkResolutionsHasExplanation.ts","../src/checks/checkResolutionsVersionsMatch.ts","../src/checks/checkSatisfiesVersions.ts","../src/checks/checkSatisfiesVersionsFromDependency.ts","../src/utils/pkgJsonUtils.ts","../src/utils/createGetDependencyPackageJson.ts","../src/utils/warnForUtils.ts","../src/check-package.ts","../src/check-package-with-workspaces.ts"],"sourcesContent":["export const getKeys = (o: T): (keyof T)[] =>\n Object.keys(o) as (keyof T)[];\n\nexport const getEntries = (o: T): [keyof T, T[keyof T]][] =>\n Object.entries(o) as unknown as [keyof T, T[keyof T]][];\n","/* eslint-disable no-console */\n\nimport chalk from 'chalk';\nimport { getEntries } from './object';\nimport type {\n OnlyWarnsForCheck,\n OnlyWarnsForMappingCheck,\n} from './warnForUtils';\n\nexport type ReportError = (\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n) => void;\n\nlet titleDisplayed: string | null = null;\nlet pkgPathDisplayed: string | null = null;\n\nexport function logMessage(\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n): void {\n console.error(\n `${\n onlyWarns ? chalk.yellow(`⚠ ${msgTitle}`) : chalk.red(`❌ ${msgTitle}`)\n }${msgInfo ? `: ${msgInfo}` : ''}`,\n );\n}\n\nexport function createReportError(\n title: string,\n pkgPathName: string,\n): ReportError {\n return function reportError(msgTitle, msgInfo, onlyWarns): void {\n if (titleDisplayed !== title || pkgPathName !== pkgPathDisplayed) {\n if (titleDisplayed) console.error();\n console.error(chalk.cyan(`== ${title} in ${pkgPathName} ==`));\n titleDisplayed = title;\n pkgPathDisplayed = pkgPathName;\n }\n logMessage(msgTitle, msgInfo, onlyWarns);\n\n if (!onlyWarns) {\n // console.trace();\n process.exitCode = 1;\n }\n };\n}\n\nexport function reportNotWarnedFor(\n reportError: ReportError,\n onlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const notWarnedFor = onlyWarnsForCheck.getNotWarnedFor();\n if (notWarnedFor.length > 0) {\n reportError(\n `Invalid config in \"${onlyWarnsForCheck.configName}\"`,\n `no warning was raised for ${notWarnedFor\n .map((depName) => `\"${depName}\"`)\n .join(', ')}`,\n false,\n );\n }\n}\n\nexport function reportNotWarnedForMapping(\n reportError: ReportError,\n onlyWarnsForMappingCheck: OnlyWarnsForMappingCheck,\n): void {\n const notWarnedForMapping = onlyWarnsForMappingCheck.getNotWarnedFor();\n getEntries(notWarnedForMapping).forEach(([depNameOrStar, notWarnedFor]) => {\n reportError(\n `Invalid config in \"${onlyWarnsForMappingCheck.configName}\" for \"${depNameOrStar}\"`,\n `no warning was raised for ${notWarnedFor\n .map((depName) => `\"${depName}\"`)\n .join(', ')}`,\n );\n });\n}\n","import semver from 'semver';\nimport type { ReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkDuplicateDependencies(\n reportError: ReportError,\n pkg: PackageJson,\n depType: DependencyTypes,\n searchIn: DependencyTypes[],\n depPkg: PackageJson,\n onlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const dependencies = depPkg[depType];\n if (!dependencies) return;\n\n const searchInExisting = searchIn.filter((type) => pkg[type]);\n\n for (const [depKey, range] of Object.entries(dependencies)) {\n const versionsIn = searchInExisting.filter((type) => pkg[type]![depKey]);\n\n if (versionsIn.length > 1) {\n reportError(\n `${depKey} is present in both devDependencies and dependencies, please place it only in dependencies`,\n );\n } else {\n const versions = versionsIn.map((type) => pkg[type]![depKey]);\n\n versions.forEach((version, index) => {\n if (version.startsWith('file:') || range.startsWith('file:')) return;\n // https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n if (\n version.startsWith('workspace:') ||\n range.startsWith('workspace:')\n ) {\n return;\n }\n\n if (\n semver.satisfies(version, range, {\n includePrerelease: true,\n }) ||\n semver.intersects(version, range, {\n includePrerelease: true,\n })\n ) {\n return;\n }\n\n // Ignore reporting duplicate when there's a resolution for it\n if (pkg.resolutions?.[depKey]) {\n return;\n }\n\n const versionInType = versionsIn[index];\n\n reportError(\n `Invalid duplicate dependency \"${depKey}\"`,\n `\"${versions[0]}\" (in ${versionInType}) should satisfies \"${range}\" from \"${depPkg.name}\" ${depType}.`,\n onlyWarnsForCheck.shouldWarnsFor(depKey),\n );\n });\n }\n }\n}\n","import type { GetDependencyPackageJson } from 'utils/createGetDependencyPackageJson';\nimport {\n reportNotWarnedForMapping,\n createReportError,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkDuplicateDependencies } from './checkDuplicateDependencies';\n\nexport async function checkDirectDuplicateDependencies(\n pkg: PackageJson,\n pkgPathName: string,\n depType: DependencyTypes,\n getDependencyPackageJson: GetDependencyPackageJson,\n onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n reportErrorNamePrefix = '',\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError(\n `${reportErrorNamePrefix}Direct Duplicate Dependencies`,\n pkgPathName,\n );\n\n const checks: {\n type: DependencyTypes;\n searchIn: DependencyTypes[];\n }[] = [\n {\n type: 'devDependencies',\n searchIn: ['devDependencies', 'dependencies'],\n },\n { type: 'dependencies', searchIn: ['devDependencies', 'dependencies'] },\n ];\n\n await Promise.all(\n checks.map(async ({ type, searchIn }) => {\n const dependencies = pkg[type];\n\n if (!dependencies) return;\n for (const depName of getKeys(dependencies)) {\n const depPkg = await getDependencyPackageJson(depName);\n checkDuplicateDependencies(\n reportError,\n pkg,\n depType,\n searchIn,\n depPkg,\n onlyWarnsForCheck.createFor(depName),\n );\n }\n }),\n );\n\n reportNotWarnedForMapping(reportError, onlyWarnsForCheck);\n}\n","import semver from 'semver';\nimport type { ReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkPeerDependencies(\n pkg: PackageJson,\n reportError: ReportError,\n type: DependencyTypes,\n allowedPeerIn: DependencyTypes[],\n depPkg: PackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const { peerDependencies, peerDependenciesMeta } = depPkg;\n if (!peerDependencies) return;\n\n const allowedPeerInExisting = allowedPeerIn.filter(\n (allowedPeerInType) => pkg[allowedPeerInType],\n );\n\n for (const [peerDepName, range] of Object.entries(peerDependencies)) {\n const versionsIn = allowedPeerInExisting.filter(\n (allowedPeerInExistingType) =>\n pkg[allowedPeerInExistingType]?.[peerDepName],\n );\n if (versionsIn.length === 0) {\n const peerDependenciesMetaPeerDep = peerDependenciesMeta?.[peerDepName];\n if (peerDependenciesMetaPeerDep?.optional) {\n continue;\n }\n reportError(\n `Missing \"${peerDepName}\" peer dependency from \"${depPkg.name}\" in ${type}`,\n `it should satisfies \"${range}\" and be in ${allowedPeerIn.join(\n ' or ',\n )}`,\n missingOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n );\n } else {\n const versions = versionsIn.map(\n (versionsInType) => pkg[versionsInType]![peerDepName],\n );\n\n versions.forEach((version, index) => {\n if (version.startsWith('npm:')) {\n return;\n }\n\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${peerDepName}\" peer dependency`,\n `\"${version}\" (in ${allowedPeerInExisting[index]}) should satisfies \"${range}\" from \"${depPkg.name}\" ${type}`,\n invalidOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n );\n }\n });\n }\n }\n}\n","import type { GetDependencyPackageJson } from 'utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedForMapping,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type {\n DependencyTypes,\n PackageJson,\n RegularDependencyTypes,\n} from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkPeerDependencies } from './checkPeerDependencies';\n\nconst regularDependencyTypes: RegularDependencyTypes[] = [\n 'devDependencies',\n 'dependencies',\n 'optionalDependencies',\n];\n\nconst getAllowedPeerInFromType = (\n depPkgType: RegularDependencyTypes,\n isLibrary: boolean,\n): DependencyTypes[] => {\n switch (depPkgType) {\n case 'devDependencies':\n return ['devDependencies', 'dependencies'];\n case 'dependencies':\n return isLibrary\n ? ['dependencies', 'peerDependencies']\n : ['devDependencies', 'dependencies'];\n case 'optionalDependencies':\n return isLibrary\n ? ['dependencies', 'optionalDependencies', 'peerDependencies']\n : ['devDependencies', 'dependencies'];\n }\n};\n\nexport async function checkDirectPeerDependencies(\n isLibrary: boolean,\n pkg: PackageJson,\n pkgPathName: string,\n getDependencyPackageJson: GetDependencyPackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError('Peer Dependencies', pkgPathName);\n\n await Promise.all(\n regularDependencyTypes.map(async (depType) => {\n const dependencies = pkg[depType];\n if (!dependencies) return;\n for (const depName of getKeys(dependencies)) {\n const depPkg = await getDependencyPackageJson(depName);\n\n if (depPkg.peerDependencies) {\n checkPeerDependencies(\n pkg,\n reportError,\n depType,\n getAllowedPeerInFromType(depType, isLibrary),\n depPkg,\n missingOnlyWarnsForCheck.createFor(depName),\n invalidOnlyWarnsForCheck.createFor(depName),\n );\n }\n }\n }),\n );\n\n reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck);\n if (missingOnlyWarnsForCheck !== invalidOnlyWarnsForCheck) {\n reportNotWarnedForMapping(reportError, invalidOnlyWarnsForCheck);\n }\n}\n","/* eslint-disable complexity */\nimport semver from 'semver';\nimport type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedFor,\n} from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsFor, OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckExactVersionsOptions {\n getDependencyPackageJson?: GetDependencyPackageJson;\n onlyWarnsForCheck: OnlyWarnsForCheck;\n internalExactVersionsIgnore?: OnlyWarnsFor;\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nconst isVersionRange = (version: string): boolean =>\n version.startsWith('^') || version.startsWith('~');\n\nexport async function checkExactVersions(\n pkg: PackageJson,\n pkgPathName: string,\n types: DependencyTypes[],\n {\n getDependencyPackageJson,\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckExactVersionsOptions,\n): Promise {\n const reportError = customCreateReportError('Exact versions', pkgPathName);\n\n for (const type of types) {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) continue;\n\n for (const [dependencyName, versionConst] of Object.entries(\n pkgDependencies,\n )) {\n let version = versionConst;\n if (version.startsWith('npm:')) {\n const match = /^npm:.*@(.*)$/.exec(version);\n if (!match) throw new Error(`Invalid version match: ${version}`);\n const [, realVersion] = match;\n version = realVersion;\n }\n\n if (isVersionRange(version)) {\n if (internalExactVersionsIgnore?.includes(dependencyName)) {\n continue;\n }\n const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName);\n if (!shouldOnlyWarn && tryToAutoFix && getDependencyPackageJson) {\n let resolvedDep;\n try {\n resolvedDep = await getDependencyPackageJson(dependencyName);\n } catch {\n resolvedDep = null;\n }\n if (!resolvedDep || !resolvedDep.version) {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact, autofix failed to resolve \"${dependencyName}\".`,\n shouldOnlyWarn,\n );\n } else if (\n !semver.satisfies(resolvedDep.version, version, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact, autofix failed as \"${dependencyName}\"'s resolved version is \"${resolvedDep.version}\" and doesn't satisfies \"${version}\".`,\n shouldOnlyWarn,\n );\n } else {\n pkgDependencies[dependencyName] = resolvedDep.version;\n }\n } else {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact \"${version.slice(1)}\".`,\n shouldOnlyWarn,\n );\n }\n }\n }\n }\n\n reportNotWarnedFor(reportError, onlyWarnsForCheck);\n}\n","import { createReportError } from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n deps: Record>>,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Identical Versions',\n pkgPathName,\n );\n\n getKeys(deps).forEach((depKey) => {\n const version = pkgDependencies[depKey];\n if (!version) {\n reportError(`Unexpected missing ${type} for \"${depKey}\".`);\n return;\n }\n\n const depConfigArrayOrObject = deps[depKey];\n const depConfig = Array.isArray(depConfigArrayOrObject)\n ? { [type]: depConfigArrayOrObject }\n : depConfigArrayOrObject;\n\n getKeys(depConfig).forEach((depKeyType) => {\n const pkgDependenciesType = pkg[depKeyType] || {};\n depConfig[depKeyType]?.forEach((depKeyIdentical) => {\n const value = pkgDependenciesType[depKeyIdentical];\n if (!value) {\n reportError(\n `Missing \"${depKeyIdentical}\" in ${depKeyType}`,\n `it should be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKeyIdentical}\" in ${depKeyType}`,\n `expecting \"${value}\" be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n });\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersionsThanDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n `Same Versions than ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const version = dependencies[depKey];\n if (!version) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n if (version.startsWith('^') || version.startsWith('~')) {\n reportError(\n `Unexpected range dependency in \"${depPkg.name}\" for \"${depKey}\"`,\n 'perhaps use checkSatisfiesVersionsFromDependency() instead.',\n );\n return;\n }\n\n const value = pkgDependencies[depKey];\n\n if (!value) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `expecting to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `expecting \"${value}\" to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\n\nexport function checkNoDependencies(\n pkg: PackageJson,\n pkgPath: string,\n type: DependencyTypes = 'dependencies',\n moveToSuggestion: DependencyTypes = 'devDependencies',\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n const reportError = customCreateReportError('No dependencies', pkgPath);\n reportError(\n `Unexpected ${type}`,\n `you should move them in ${moveToSuggestion}`,\n );\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport type CheckResolutionMessage = (\n depKey: string,\n resolutionExplainedMessage: string,\n checkMessageHelpers: {\n getDependencyPackageJson: GetDependencyPackageJson;\n },\n) => string | undefined;\n\nexport function checkResolutionsHasExplanation(\n pkg: PackageJson,\n pkgPathName: string,\n checkMessage: CheckResolutionMessage,\n getDependencyPackageJson: GetDependencyPackageJson,\n customCreateReportError = createReportError,\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n const reportError = customCreateReportError(\n 'Resolutions has explanation',\n pkgPathName,\n );\n\n Object.keys(pkgResolutions).forEach((depKey) => {\n if (!pkgResolutionsExplained[depKey]) {\n reportError(`Missing \"${depKey}\" in resolutionsExplained.`);\n }\n });\n\n Object.keys(pkgResolutionsExplained).forEach((depKey) => {\n if (!pkgResolutions[depKey]) {\n reportError(\n `Found \"${depKey}\" in resolutionsExplained but not in resolutions.`,\n );\n } else {\n const error = checkMessage(depKey, pkgResolutionsExplained[depKey], {\n getDependencyPackageJson,\n });\n if (error) {\n reportError(\n `Invalid message for \"${depKey}\" in resolutionsExplained`,\n `${error}.`,\n );\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport interface CheckResolutionsVersionsMatchOptions {\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkResolutionsVersionsMatch(\n pkg: PackageJson,\n pkgPathName: string,\n {\n tryToAutoFix,\n customCreateReportError = createReportError,\n }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const reportError = customCreateReportError(\n 'Resolutions match other dependencies',\n pkgPathName,\n );\n\n Object.entries(pkgResolutions).forEach(([depName, resolutionDepVersion]) => {\n (['dependencies', 'devDependencies'] as const).forEach((depType) => {\n const range = pkg?.[depType]?.[depName];\n\n if (!range) return;\n\n if (\n !semver.satisfies(resolutionDepVersion, range, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n pkg[depType]![depName] = resolutionDepVersion;\n } else {\n reportError(\n `Invalid \"${depName}\" in ${depType}`,\n `expecting \"${range}\" be \"${resolutionDepVersion}\" from resolutions.`,\n );\n }\n }\n });\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkSatisfiesVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n dependenciesRanges: Record,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = createReportError('Satisfies Versions', pkgPathName);\n\n Object.entries(dependenciesRanges).forEach(([depKey, range]) => {\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `\"${version}\" (in \"${depKey}\") should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkSatisfiesVersionsFromDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n `Satisfies Versions from ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const range = dependencies[depKey];\n if (!range) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\" from \"${depPkg.name}\" ${depKey}.`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `\"${version}\" (in \"${depKey}\") should satisfies \"${range}\" from \"${depPkg.name}\" ${depKey}.`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\n}\n","import { readFileSync, writeFileSync } from 'fs';\nimport { resolve as importResolve } from 'import-meta-resolve';\nimport type { PackageJson } from './packageTypes';\n\nexport function readPkgJson(packagePath: string): PackageJson {\n return JSON.parse(readFileSync(packagePath, 'utf8')) as PackageJson;\n}\n\nexport function writePkgJson(packagePath: string, pkg: PackageJson): void {\n writeFileSync(packagePath, JSON.stringify(pkg, null, 2));\n}\n\n/** @internal */\nexport async function internalLoadPackageJsonFromNodeModules(\n pkgDepName: string,\n pkgDirname: string,\n): Promise {\n const packageUrl = await importResolve(\n `${pkgDepName}/package.json`,\n `file://${pkgDirname}/package.json`,\n );\n return readPkgJson(\n packageUrl.replace(\n process.platform === 'win32' ? /^file:\\/{3}/ : /^file:\\/\\//,\n '',\n ),\n );\n}\n","import type { PackageJson } from './packageTypes';\nimport {\n internalLoadPackageJsonFromNodeModules,\n readPkgJson,\n} from './pkgJsonUtils';\n\nexport type GetDependencyPackageJson = (\n pkgDepName: string,\n) => Promise;\n\ntype NodeModulesPackagePathCache = Map;\n\ninterface CreateGetDependencyPackageJsonOptions {\n pkgDirname: string;\n nodeModulesPackagePathCache?: NodeModulesPackagePathCache;\n /** @internal */\n internalCustomLoadPackageJsonFromNodeModules?: typeof internalLoadPackageJsonFromNodeModules;\n /** @internal */\n internalReadPkgJson?: typeof readPkgJson;\n}\n\nexport function createGetDependencyPackageJson({\n pkgDirname,\n nodeModulesPackagePathCache = new Map(),\n internalCustomLoadPackageJsonFromNodeModules = internalLoadPackageJsonFromNodeModules,\n internalReadPkgJson = readPkgJson,\n}: CreateGetDependencyPackageJsonOptions): GetDependencyPackageJson {\n return async (pkgDepName) => {\n const existing = nodeModulesPackagePathCache.get(pkgDepName);\n if (existing) return existing;\n let pkg: PackageJson;\n if (pkgDepName.startsWith('.')) {\n const packagePath = `${pkgDirname}/${pkgDepName}/package.json`;\n pkg = internalReadPkgJson(packagePath);\n } else {\n try {\n pkg = await internalCustomLoadPackageJsonFromNodeModules(\n pkgDepName,\n pkgDirname,\n );\n } catch (err: unknown) {\n if (!(err instanceof Error)) throw err;\n\n if (\n (err as NodeJS.ErrnoException).code !==\n 'ERR_PACKAGE_PATH_NOT_EXPORTED'\n ) {\n throw err;\n }\n\n const match = / in (.*[/\\\\]package\\.json)\\s+imported from/.exec(\n err.message,\n );\n\n if (match) {\n const [, matchPackageJson] = match;\n pkg = internalReadPkgJson(matchPackageJson);\n } else {\n throw err;\n }\n }\n }\n nodeModulesPackagePathCache.set(pkgDepName, pkg);\n return pkg;\n };\n}\n","import { getEntries } from './object';\n\nexport type OnlyWarnsFor = string[];\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type OnlyWarnsForDependencyMapping = Record;\nexport type OnlyWarnsForOptionalDependencyMapping =\n | undefined\n | OnlyWarnsFor\n | OnlyWarnsForDependencyMapping;\n\nexport interface OnlyWarnsForCheck {\n configName: string;\n getNotWarnedFor: () => string[];\n shouldWarnsFor: (dependencyName: string) => boolean;\n}\n\nexport interface OnlyWarnsForMappingCheck {\n configName: string;\n getNotWarnedFor: () => Record;\n createFor: (dependencyName: string) => OnlyWarnsForCheck;\n}\n\nexport const createOnlyWarnsForArrayCheck = (\n configName: string,\n onlyWarnsFor: OnlyWarnsFor = [],\n): OnlyWarnsForCheck => {\n const notWarnedFor = new Set(onlyWarnsFor);\n return {\n configName,\n getNotWarnedFor: () => [...notWarnedFor],\n shouldWarnsFor(dependencyName) {\n if (onlyWarnsFor.includes(dependencyName)) {\n notWarnedFor.delete(dependencyName);\n return true;\n }\n return false;\n },\n };\n};\n\nconst isMapping = (\n onlyWarnsFor: OnlyWarnsForOptionalDependencyMapping,\n): onlyWarnsFor is OnlyWarnsForDependencyMapping => {\n return typeof onlyWarnsFor === 'object' && !Array.isArray(onlyWarnsFor);\n};\n\nexport const createOnlyWarnsForMappingCheck = (\n configName: string,\n onlyWarnsFor: OnlyWarnsForOptionalDependencyMapping,\n): OnlyWarnsForMappingCheck => {\n if (isMapping(onlyWarnsFor)) {\n const notWarnedFor = Object.fromEntries(\n getEntries(onlyWarnsFor).map(([entryKey, entryValue]) => [\n entryKey,\n new Set(entryValue),\n ]),\n );\n return {\n configName,\n getNotWarnedFor: () =>\n Object.fromEntries(\n getEntries(notWarnedFor)\n .filter(([key, set]) => set.size > 0)\n .map(([key, set]) => [key, [...set]]),\n ),\n createFor(dependencyNameLevel1) {\n return {\n configName,\n getNotWarnedFor() {\n throw new Error('Invalid call to getNotWarnedFor()');\n },\n shouldWarnsFor(dependencyName) {\n if (onlyWarnsFor['*']?.includes(dependencyName)) {\n notWarnedFor['*'].delete(dependencyName);\n return true;\n }\n if (onlyWarnsFor[dependencyNameLevel1]?.includes(dependencyName)) {\n notWarnedFor[dependencyNameLevel1].delete(dependencyName);\n return true;\n }\n return false;\n },\n };\n },\n };\n }\n\n const arrayOnlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n configName,\n onlyWarnsFor,\n );\n return {\n configName,\n getNotWarnedFor: (): Record => {\n const notWarnedFor = arrayOnlyWarnsForCheck.getNotWarnedFor();\n if (notWarnedFor.length > 0) {\n return { '*': notWarnedFor };\n }\n return {};\n },\n createFor() {\n return {\n configName,\n getNotWarnedFor() {\n throw new Error('Invalid call to getNotWarnedFor()');\n },\n shouldWarnsFor(dependencyName) {\n return arrayOnlyWarnsForCheck.shouldWarnsFor(dependencyName);\n },\n };\n },\n };\n};\n","/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport path from 'path';\nimport util from 'util';\nimport { checkDirectDuplicateDependencies } from './checks/checkDirectDuplicateDependencies';\nimport { checkDirectPeerDependencies } from './checks/checkDirectPeerDependencies';\nimport { checkExactVersions } from './checks/checkExactVersions';\nimport { checkIdenticalVersions } from './checks/checkIdenticalVersions';\nimport { checkIdenticalVersionsThanDependency } from './checks/checkIdenticalVersionsThanDependency';\nimport { checkNoDependencies } from './checks/checkNoDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsHasExplanation } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsVersionsMatch } from './checks/checkResolutionsVersionsMatch';\nimport { checkSatisfiesVersions } from './checks/checkSatisfiesVersions';\nimport { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency';\nimport type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { createGetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { getEntries } from './utils/object';\nimport type {\n DependencyName,\n DependencyTypes,\n PackageJson,\n} from './utils/packageTypes';\nimport { readPkgJson, writePkgJson } from './utils/pkgJsonUtils';\nimport type {\n OnlyWarnsForOptionalDependencyMapping,\n OnlyWarnsFor,\n OnlyWarnsForDependencyMapping,\n} from './utils/warnForUtils';\nimport {\n createOnlyWarnsForArrayCheck,\n createOnlyWarnsForMappingCheck,\n} from './utils/warnForUtils';\n\nexport interface CreateCheckPackageOptions {\n /** @deprecated pass in cli --fix instead */\n tryToAutoFix?: boolean;\n /** @internal */\n internalWorkspacePkgDirectoryPath?: string;\n}\n\nexport interface CheckDirectPeerDependenciesOptions {\n isLibrary?: boolean;\n /** @deprecated use missingOnlyWarnsFor or invalidOnlyWarnsFor */\n onlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n missingOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n invalidOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n internalMissingConfigName?: string;\n internalInvalidConfigName?: string;\n}\n\nexport interface CheckDirectDuplicateDependenciesOptions {\n onlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n internalConfigName?: string;\n}\n\nexport interface OnlyWarnsForInPackageCheckPackageRecommendedOption {\n exactVersions: OnlyWarnsFor;\n}\n\nexport interface OnlyWarnsForInDependencyCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsFor;\n missingPeerDependency: OnlyWarnsFor;\n invalidPeerDependencyVersion: OnlyWarnsFor;\n}\n\nexport type OnlyWarnsForInDependenciesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n '*' | string,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption\n>;\n\nexport interface CheckRecommendedOptions {\n isLibrary?: boolean;\n /** default is true for libraries, false otherwise */\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsForInPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n /** @deprecated use onlyWarnsForInDependencies option */\n peerDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n /** @deprecated use onlyWarnsForInDependencies option */\n directDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n /** @deprecated use onlyWarnsForInPackage option */\n exactVersionsOnlyWarnsFor?: OnlyWarnsFor;\n /** @internal */\n internalExactVersionsIgnore?: OnlyWarnsFor;\n /** function to check the value in the \"resolutionExplained\" key in package.json */\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckExactVersionsOptions {\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsFor?: OnlyWarnsFor;\n /** @internal */\n internalExactVersionsIgnore?: OnlyWarnsFor;\n}\n\nexport interface CheckPackageApi {\n run: () => Promise;\n\n /** @internal */\n pkg: PackageJson;\n /** @internal */\n pkgDirname: string;\n /** @internal */\n pkgPathName: string;\n /** @internal */\n getDependencyPackageJson: GetDependencyPackageJson;\n\n checkExactVersions: (options?: CheckExactVersionsOptions) => CheckPackageApi;\n\n checkResolutionsVersionsMatch: () => CheckPackageApi;\n\n checkExactVersionsForLibrary: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n\n checkExactDevVersions: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n\n checkNoDependencies: (\n type?: DependencyTypes,\n moveToSuggestion?: DependencyTypes,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectPeerDependencies({\n * invalidOnlyWarnsFor: ['semver'],\n * })\n * ```\n */\n checkDirectPeerDependencies: (\n options?: CheckDirectPeerDependenciesOptions,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectDuplicateDependencies({\n * invalidOnlyWarnsFor: { '*': 'type-fest' },\n * })\n * ```\n */\n checkDirectDuplicateDependencies: (\n options?: CheckDirectDuplicateDependenciesOptions,\n ) => CheckPackageApi;\n\n checkResolutionsHasExplanation: (\n checkMessage?: CheckResolutionMessage,\n ) => CheckPackageApi;\n\n checkRecommended: (options?: CheckRecommendedOptions) => CheckPackageApi;\n\n /**\n * @example\n * Check that your package.json contains the same version of @babel/core than react-scripts, both in resolutions and devDependencies\n * ```\n * .checkIdenticalVersionsThanDependency('react-scripts', {\n * resolutions: ['@babel/core'],\n * devDependencies: ['@babel/core'],\n * })\n * ```\n */\n checkIdenticalVersionsThanDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkIdenticalVersionsThanDevDependencyOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range passed in config\n *\n * @example\n * ```\n * .checkSatisfiesVersions({\n * devDependencies: {\n * eslint: '^8.0.0'\n * },\n * })\n * ```\n */\n checkSatisfiesVersions: (\n dependencies: Partial<\n Record>\n >,\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range set in another dependencies\n * @example\n * ```\n * .checkSatisfiesVersionsFromDependency('@pob/eslint-config-typescript', {\n * devDependencies: [\n * '@typescript-eslint/eslint-plugin',\n * '@typescript-eslint/parser',\n * ],\n * })\n * ```\n */\n checkSatisfiesVersionsFromDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkSatisfiesVersionsInDevDependenciesOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies have the exact same version that another dependency also present in your package.json\n * @example\n * The react-dom version should match react, so this check will ensure it does\n * ```\n * .checkIdenticalVersions({\n * dependencies: {\n * react: {\n * dependencies: ['react-dom'],\n * devDependencies: ['react-test-renderer'],\n * },\n * },\n * })\n * ```\n */\n checkIdenticalVersions: (dependencies: {\n resolutions?: Record;\n dependencies?: Record;\n devDependencies?: Record;\n }) => CheckPackageApi;\n\n checkSatisfiesVersionsBetweenDependencies: (\n depName1: string,\n depName2: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n}\n\nexport function createCheckPackage(\n pkgDirectoryPath = '.',\n {\n tryToAutoFix = false,\n internalWorkspacePkgDirectoryPath,\n }: CreateCheckPackageOptions = {},\n): CheckPackageApi {\n const pkgDirname = path.resolve(pkgDirectoryPath);\n const pkgPath = `${pkgDirname}/package.json`;\n const pkgPathName = `${pkgDirectoryPath}/package.json`;\n const pkg = readPkgJson(pkgPath);\n const copyPkg: PackageJson = JSON.parse(JSON.stringify(pkg)) as PackageJson;\n\n if (\n process.env.CI &&\n process.env.CHECK_PACKAGE_DEPENDENCIES_ENABLE_CI_AUTOFIX !== 'true'\n ) {\n tryToAutoFix = false;\n }\n\n if (process.argv.slice(2).includes('--fix')) {\n tryToAutoFix = true;\n }\n\n const writePackageIfChanged = (): void => {\n if (!tryToAutoFix) return;\n if (util.isDeepStrictEqual(pkg, copyPkg)) return;\n writePkgJson(pkgPath, pkg);\n };\n\n const getDependencyPackageJson = createGetDependencyPackageJson({\n pkgDirname,\n });\n\n let runCalled = false;\n\n if (!internalWorkspacePkgDirectoryPath) {\n process.on('beforeExit', () => {\n if (!runCalled) {\n throw new Error('Call .run() and await the result.');\n }\n });\n }\n\n class Job {\n name: string;\n\n fn: () => Promise;\n\n constructor(name: string, fn: () => Promise) {\n this.name = name;\n this.fn = fn;\n }\n\n async run(): Promise {\n try {\n await this.fn();\n } catch (err) {\n throw new Error(`${this.name} failed: ${(err as Error).message}`);\n }\n }\n }\n\n const jobs: Job[] = [];\n\n return {\n async run() {\n runCalled = true;\n // TODO parallel\n for (const job of jobs) {\n await job.run();\n }\n writePackageIfChanged();\n },\n\n pkg,\n pkgDirname,\n pkgPathName,\n getDependencyPackageJson,\n checkExactVersions({\n onlyWarnsFor,\n internalExactVersionsIgnore,\n allowRangeVersionsInDependencies = true,\n } = {}) {\n jobs.push(\n new Job(this.checkExactVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(\n pkg,\n pkgPathName,\n !allowRangeVersionsInDependencies\n ? ['dependencies', 'devDependencies', 'resolutions']\n : ['devDependencies', 'resolutions'],\n {\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n getDependencyPackageJson,\n tryToAutoFix,\n },\n );\n }),\n );\n return this;\n },\n\n checkResolutionsVersionsMatch() {\n checkResolutionsVersionsMatch(pkg, pkgPathName, {\n tryToAutoFix,\n });\n return this;\n },\n\n /** @deprecated use checkExactVersions({ allowRangeVersionsInDependencies: true }) */\n checkExactVersionsForLibrary({ onlyWarnsFor } = {}) {\n jobs.push(\n new Job(this.checkExactDevVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersionsForLibrary.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(\n pkg,\n pkgPathName,\n ['devDependencies', 'resolutions'],\n {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n },\n );\n }),\n );\n return this;\n },\n\n checkExactDevVersions({ onlyWarnsFor } = {}) {\n jobs.push(\n new Job(this.checkExactDevVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactDevVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(pkg, pkgPathName, ['devDependencies'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n }),\n );\n return this;\n },\n\n checkNoDependencies(\n type = 'dependencies',\n moveToSuggestion = 'devDependencies',\n ) {\n checkNoDependencies(pkg, pkgPathName, type, moveToSuggestion);\n return this;\n },\n\n checkDirectPeerDependencies({\n isLibrary = false,\n onlyWarnsFor: deprecatedOnlyWarnsFor,\n missingOnlyWarnsFor = deprecatedOnlyWarnsFor,\n invalidOnlyWarnsFor = deprecatedOnlyWarnsFor,\n internalMissingConfigName = deprecatedOnlyWarnsFor\n ? 'onlyWarnsFor'\n : 'missingOnlyWarnsFor',\n internalInvalidConfigName = deprecatedOnlyWarnsFor\n ? 'onlyWarnsFor'\n : 'invalidOnlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectPeerDependencies.name, async () => {\n const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck(\n internalMissingConfigName,\n missingOnlyWarnsFor,\n );\n const invalidOnlyWarnsForCheck =\n internalInvalidConfigName === internalMissingConfigName\n ? missingOnlyWarnsForCheck\n : createOnlyWarnsForMappingCheck(\n internalInvalidConfigName,\n invalidOnlyWarnsFor,\n );\n await checkDirectPeerDependencies(\n isLibrary,\n pkg,\n pkgPathName,\n getDependencyPackageJson,\n missingOnlyWarnsForCheck,\n invalidOnlyWarnsForCheck,\n );\n }),\n );\n return this;\n },\n\n checkDirectDuplicateDependencies({\n onlyWarnsFor,\n internalConfigName = 'onlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectDuplicateDependencies.name, async () => {\n await checkDirectDuplicateDependencies(\n pkg,\n pkgPathName,\n 'dependencies',\n getDependencyPackageJson,\n createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor),\n );\n }),\n );\n return this;\n },\n\n checkResolutionsHasExplanation(\n checkMessage: CheckResolutionMessage = (depKey, message) => undefined,\n ) {\n checkResolutionsHasExplanation(\n pkg,\n pkgPathName,\n checkMessage,\n getDependencyPackageJson,\n );\n return this;\n },\n\n checkRecommended({\n isLibrary = false,\n onlyWarnsForInPackage,\n onlyWarnsForInDependencies,\n allowRangeVersionsInDependencies = isLibrary,\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n exactVersionsOnlyWarnsFor,\n internalExactVersionsIgnore,\n checkResolutionMessage,\n } = {}) {\n let internalMissingPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n peerDependenciesOnlyWarnsFor;\n let internalInvalidPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n peerDependenciesOnlyWarnsFor;\n let internalDirectDuplicateDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n directDuplicateDependenciesOnlyWarnsFor;\n\n if (onlyWarnsForInPackage) {\n if (exactVersionsOnlyWarnsFor) {\n console.warn(\n 'Ignoring \"exactVersionsOnlyWarnsFor\" as \"onlyWarnsForInPackage\" is used.',\n );\n }\n exactVersionsOnlyWarnsFor = onlyWarnsForInPackage.exactVersions || [];\n }\n if (onlyWarnsForInDependencies) {\n if (peerDependenciesOnlyWarnsFor) {\n console.warn(\n 'Ignoring \"peerDependenciesOnlyWarnsFor\" as \"onlyWarnsFor\" is used.',\n );\n }\n if (directDuplicateDependenciesOnlyWarnsFor) {\n console.warn(\n 'Ignoring \"directDuplicateDependenciesOnlyWarnsFor\" as \"onlyWarnsFor\" is used.',\n );\n }\n\n internalDirectDuplicateDependenciesOnlyWarnsFor = {};\n internalMissingPeerDependenciesOnlyWarnsFor = {};\n internalInvalidPeerDependenciesOnlyWarnsFor = {};\n\n getEntries(onlyWarnsForInDependencies).forEach(\n ([dependencyNameOrSpecialKey, onlyWarnsForValue]) => {\n if (onlyWarnsForValue.duplicateDirectDependency) {\n (\n internalDirectDuplicateDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.duplicateDirectDependency;\n }\n if (onlyWarnsForValue.missingPeerDependency) {\n (\n internalMissingPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.missingPeerDependency;\n }\n if (onlyWarnsForValue.invalidPeerDependencyVersion) {\n (\n internalInvalidPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.invalidPeerDependencyVersion;\n }\n },\n );\n }\n\n this.checkExactVersions({\n allowRangeVersionsInDependencies,\n onlyWarnsFor: exactVersionsOnlyWarnsFor,\n internalExactVersionsIgnore,\n });\n\n this.checkResolutionsVersionsMatch();\n this.checkResolutionsHasExplanation(checkResolutionMessage);\n\n this.checkDirectPeerDependencies({\n isLibrary,\n missingOnlyWarnsFor: internalMissingPeerDependenciesOnlyWarnsFor,\n invalidOnlyWarnsFor: internalInvalidPeerDependenciesOnlyWarnsFor,\n internalMissingConfigName: peerDependenciesOnlyWarnsFor\n ? 'peerDependenciesOnlyWarnsFor'\n : 'onlyWarnsForInDependencies.missingPeerDependency',\n internalInvalidConfigName: peerDependenciesOnlyWarnsFor\n ? 'peerDependenciesOnlyWarnsFor'\n : 'onlyWarnsForInDependencies.invalidPeerDependencyVersion',\n });\n\n this.checkDirectDuplicateDependencies({\n onlyWarnsFor: internalDirectDuplicateDependenciesOnlyWarnsFor,\n internalConfigName: directDuplicateDependenciesOnlyWarnsFor\n ? 'directDuplicateDependenciesOnlyWarnsFor'\n : 'onlyWarnsForInDependencies.duplicateDirectDependency',\n });\n\n return this;\n },\n\n checkIdenticalVersionsThanDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkIdenticalVersionsThanDependency.name, async () => {\n const depPkg = await getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkIdenticalVersionsThanDevDependencyOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsFromDependency.name, async () => {\n const depPkg = await getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkSatisfiesVersions(dependencies) {\n Object.entries(dependencies).forEach(\n ([dependencyType, dependenciesRanges]) => {\n checkSatisfiesVersions(\n pkg,\n pkgPathName,\n dependencyType as DependencyTypes,\n dependenciesRanges,\n );\n },\n );\n return this;\n },\n\n checkSatisfiesVersionsFromDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsFromDependency.name, async () => {\n const depPkg = await getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkSatisfiesVersionsInDevDependenciesOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(\n this.checkSatisfiesVersionsInDevDependenciesOfDependency.name,\n async () => {\n const depPkg = await getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n },\n ),\n );\n return this;\n },\n\n checkIdenticalVersions({ resolutions, dependencies, devDependencies }) {\n if (resolutions) {\n checkIdenticalVersions(pkg, pkgPathName, 'resolutions', resolutions);\n }\n if (dependencies) {\n checkIdenticalVersions(pkg, pkgPathName, 'dependencies', dependencies);\n }\n if (devDependencies) {\n checkIdenticalVersions(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n );\n }\n return this;\n },\n\n checkSatisfiesVersionsBetweenDependencies(\n depName1,\n depName2,\n { dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(\n this.checkSatisfiesVersionsBetweenDependencies.name,\n async () => {\n const [depPkg1, depPkg2] = await Promise.all([\n getDependencyPackageJson(depName1),\n getDependencyPackageJson(depName2),\n ]);\n\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg1,\n depPkg1.dependencies,\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg1,\n depPkg1.dependencies,\n );\n }\n },\n ),\n );\n return this;\n },\n };\n}\n","/* eslint-disable max-lines */\nimport fs from 'fs';\nimport path from 'path';\nimport glob from 'glob';\nimport type {\n CreateCheckPackageOptions,\n CheckPackageApi,\n OnlyWarnsForInDependenciesCheckPackageRecommendedOption,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption,\n OnlyWarnsForInPackageCheckPackageRecommendedOption,\n} from './check-package';\nimport { createCheckPackage } from './check-package';\nimport { checkDuplicateDependencies } from './checks/checkDuplicateDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport {\n createReportError,\n reportNotWarnedForMapping,\n} from './utils/createReportError';\nimport type {\n OnlyWarnsFor,\n OnlyWarnsForOptionalDependencyMapping,\n} from './utils/warnForUtils';\nimport { createOnlyWarnsForMappingCheck } from './utils/warnForUtils';\n\ninterface OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n extends OnlyWarnsForInPackageCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsForInDependencyCheckPackageRecommendedOption['duplicateDirectDependency'];\n}\n\ntype OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n '*' | string,\n OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n>;\n\ntype OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption =\n Record;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n isLibrary?: (pkgName: string) => boolean;\n allowRangeVersionsInLibraries?: boolean;\n /** @deprecated use onlyWarnsFor */\n peerDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n /** @deprecated use onlyWarnsFor */\n directDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsFor;\n monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n /** @deprecated use onlyWarnsForInRootDependencies */\n onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\n run: () => Promise;\n\n checkRecommended: (\n options?: CheckPackageWithWorkspacesRecommendedOptions,\n ) => CheckPackageWithWorkspacesApi;\n\n forRoot: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n forEach: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n for: (\n id: string,\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n}\n\nexport function createCheckPackageWithWorkspaces(\n pkgDirectoryPath = '.',\n createCheckPackageOptions: CreateCheckPackageOptions = {},\n): CheckPackageWithWorkspacesApi {\n const checkPackage = createCheckPackage(\n pkgDirectoryPath,\n createCheckPackageOptions,\n );\n const { pkg, pkgDirname } = checkPackage;\n\n const pkgWorkspaces: string[] | undefined =\n pkg.workspaces && !Array.isArray(pkg.workspaces)\n ? pkg.workspaces.packages\n : pkg.workspaces;\n\n if (!pkgWorkspaces) {\n throw new Error('Package is missing \"workspaces\"');\n }\n\n const workspacePackagesPaths: string[] = [];\n\n if (pkgWorkspaces) {\n pkgWorkspaces.forEach((pattern) => {\n const match = glob.sync(pattern, { cwd: pkgDirname });\n match.forEach((pathMatch) => {\n const stat = fs.statSync(pathMatch);\n if (!stat.isDirectory()) return;\n const subPkgDirectoryPath = path.relative(process.cwd(), pathMatch);\n workspacePackagesPaths.push(subPkgDirectoryPath);\n });\n });\n }\n\n const checksWorkspaces = new Map(\n workspacePackagesPaths.map((subPkgDirectoryPath) => {\n const checkPkg = createCheckPackage(subPkgDirectoryPath, {\n ...createCheckPackageOptions,\n internalWorkspacePkgDirectoryPath: pkgDirectoryPath,\n });\n return [checkPkg.pkg.name, checkPkg];\n }),\n );\n\n return {\n async run() {\n for (const checksWorkspace of [\n checkPackage,\n ...checksWorkspaces.values(),\n ]) {\n await checksWorkspace.run();\n }\n },\n\n checkRecommended({\n isLibrary = () => false,\n allowRangeVersionsInLibraries = true,\n onlyWarnsForInRootPackage,\n onlyWarnsForInMonorepoPackages,\n onlyWarnsForInDependencies,\n onlyWarnsForInRootDependencies = onlyWarnsForInDependencies,\n onlyWarnsForInMonorepoPackagesDependencies = onlyWarnsForInDependencies\n ? { '*': onlyWarnsForInDependencies }\n : {},\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n } = {}) {\n if (peerDependenciesOnlyWarnsFor) {\n console.warn(\n 'Option \"peerDependenciesOnlyWarnsFor\" in checkRecommended() is deprecated. Use \"onlyWarnsForInDependencies\" instead.',\n );\n }\n if (directDuplicateDependenciesOnlyWarnsFor) {\n console.warn(\n 'Option \"directDuplicateDependenciesOnlyWarnsFor\" in checkRecommended() is deprecated. Use \"onlyWarnsForInDependencies\" instead.',\n );\n }\n\n checkPackage.checkNoDependencies();\n checkPackage.checkRecommended({\n isLibrary: false,\n onlyWarnsForInPackage: onlyWarnsForInRootPackage,\n onlyWarnsForInDependencies: onlyWarnsForInRootDependencies,\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n });\n\n const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck =\n createOnlyWarnsForMappingCheck(\n 'monorepoDirectDuplicateDependenciesOnlyWarnsFor',\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n );\n\n const previousCheckedWorkspaces = new Map();\n checksWorkspaces.forEach((checkSubPackage, id) => {\n const isPackageALibrary = isLibrary(id);\n checkSubPackage.checkRecommended({\n isLibrary: isPackageALibrary,\n allowRangeVersionsInDependencies: isPackageALibrary\n ? allowRangeVersionsInLibraries\n : false,\n onlyWarnsForInPackage: onlyWarnsForInMonorepoPackages\n ? {\n ...onlyWarnsForInMonorepoPackages['*'],\n ...onlyWarnsForInMonorepoPackages[checkSubPackage.pkg.name],\n }\n : undefined,\n onlyWarnsForInDependencies:\n onlyWarnsForInMonorepoPackagesDependencies[\n checkSubPackage.pkg.name\n ],\n peerDependenciesOnlyWarnsFor,\n directDuplicateDependenciesOnlyWarnsFor,\n internalExactVersionsIgnore: [...checksWorkspaces.keys()],\n checkResolutionMessage,\n });\n\n const reportMonorepoDDDError = createReportError(\n 'Monorepo Direct Duplicate Dependencies',\n checkSubPackage.pkgPathName,\n );\n // Root\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n // previous packages\n previousCheckedWorkspaces.forEach((previousCheckSubPackage) => {\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n 'dependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n 'peerDependencies',\n ['peerDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n });\n\n previousCheckedWorkspaces.set(id, checkSubPackage);\n });\n reportNotWarnedForMapping(\n createReportError(\n 'Monorepo Direct Duplicate Dependencies',\n checkPackage.pkgPathName,\n ),\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck,\n );\n\n return this;\n },\n\n forRoot(callback) {\n callback(checkPackage);\n return this;\n },\n\n forEach(callback) {\n checksWorkspaces.forEach((checkSubPackage) => {\n callback(checkSubPackage);\n });\n return this;\n },\n\n for(id, callback) {\n const packageCheck = checksWorkspaces.get(id);\n if (!packageCheck) {\n throw new Error(\n `Invalid package name: ${id}. Known package names: \"${[\n ...checksWorkspaces.keys(),\n ].join('\",\"')}\"`,\n );\n }\n callback(packageCheck);\n return this;\n },\n };\n}\n"],"names":["getKeys","o","Object","keys","getEntries","entries","titleDisplayed","pkgPathDisplayed","logMessage","msgTitle","msgInfo","onlyWarns","console","error","chalk","yellow","red","createReportError","title","pkgPathName","reportError","cyan","process","exitCode","reportNotWarnedFor","onlyWarnsForCheck","notWarnedFor","getNotWarnedFor","length","configName","map","depName","join","reportNotWarnedForMapping","onlyWarnsForMappingCheck","notWarnedForMapping","forEach","depNameOrStar","checkDuplicateDependencies","pkg","depType","searchIn","depPkg","dependencies","searchInExisting","filter","type","depKey","range","versionsIn","versions","version","index","startsWith","semver","satisfies","includePrerelease","intersects","resolutions","versionInType","name","shouldWarnsFor","checkDirectDuplicateDependencies","getDependencyPackageJson","reportErrorNamePrefix","customCreateReportError","Promise","all","createFor","checkPeerDependencies","allowedPeerIn","missingOnlyWarnsForCheck","invalidOnlyWarnsForCheck","peerDependencies","peerDependenciesMeta","allowedPeerInExisting","allowedPeerInType","peerDepName","allowedPeerInExistingType","peerDependenciesMetaPeerDep","optional","versionsInType","minVersionOfVersion","minVersion","regularDependencyTypes","getAllowedPeerInFromType","depPkgType","isLibrary","checkDirectPeerDependencies","isVersionRange","checkExactVersions","types","internalExactVersionsIgnore","tryToAutoFix","pkgDependencies","dependencyName","versionConst","match","exec","Error","realVersion","includes","shouldOnlyWarn","resolvedDep","slice","checkIdenticalVersions","deps","depConfigArrayOrObject","depConfig","Array","isArray","depKeyType","pkgDependenciesType","depKeyIdentical","value","checkIdenticalVersionsThanDependency","depKeys","checkNoDependencies","pkgPath","moveToSuggestion","checkResolutionsHasExplanation","checkMessage","pkgResolutions","pkgResolutionsExplained","resolutionsExplained","checkResolutionsVersionsMatch","resolutionDepVersion","checkSatisfiesVersions","dependenciesRanges","checkSatisfiesVersionsFromDependency","readPkgJson","packagePath","JSON","parse","readFileSync","writePkgJson","writeFileSync","stringify","internalLoadPackageJsonFromNodeModules","pkgDepName","pkgDirname","packageUrl","importResolve","replace","platform","createGetDependencyPackageJson","nodeModulesPackagePathCache","Map","internalCustomLoadPackageJsonFromNodeModules","internalReadPkgJson","existing","get","err","code","message","matchPackageJson","set","createOnlyWarnsForArrayCheck","onlyWarnsFor","Set","delete","isMapping","createOnlyWarnsForMappingCheck","fromEntries","entryKey","entryValue","key","size","dependencyNameLevel1","arrayOnlyWarnsForCheck","createCheckPackage","pkgDirectoryPath","internalWorkspacePkgDirectoryPath","path","resolve","copyPkg","env","CI","CHECK_PACKAGE_DEPENDENCIES_ENABLE_CI_AUTOFIX","argv","writePackageIfChanged","util","isDeepStrictEqual","runCalled","on","Job","constructor","fn","run","jobs","job","allowRangeVersionsInDependencies","push","checkExactVersionsForLibrary","checkExactDevVersions","deprecatedOnlyWarnsFor","missingOnlyWarnsFor","invalidOnlyWarnsFor","internalMissingConfigName","internalInvalidConfigName","internalConfigName","undefined","checkRecommended","onlyWarnsForInPackage","onlyWarnsForInDependencies","peerDependenciesOnlyWarnsFor","directDuplicateDependenciesOnlyWarnsFor","exactVersionsOnlyWarnsFor","checkResolutionMessage","internalMissingPeerDependenciesOnlyWarnsFor","internalInvalidPeerDependenciesOnlyWarnsFor","internalDirectDuplicateDependenciesOnlyWarnsFor","warn","exactVersions","dependencyNameOrSpecialKey","onlyWarnsForValue","duplicateDirectDependency","missingPeerDependency","invalidPeerDependencyVersion","devDependencies","checkIdenticalVersionsThanDevDependencyOfDependency","dependencyType","checkSatisfiesVersionsInDevDependenciesOfDependency","checkSatisfiesVersionsBetweenDependencies","depName1","depName2","depPkg1","depPkg2","createCheckPackageWithWorkspaces","createCheckPackageOptions","checkPackage","pkgWorkspaces","workspaces","packages","workspacePackagesPaths","pattern","glob","sync","cwd","pathMatch","stat","fs","statSync","isDirectory","subPkgDirectoryPath","relative","checksWorkspaces","checkPkg","checksWorkspace","values","allowRangeVersionsInLibraries","onlyWarnsForInRootPackage","onlyWarnsForInMonorepoPackages","onlyWarnsForInRootDependencies","onlyWarnsForInMonorepoPackagesDependencies","monorepoDirectDuplicateDependenciesOnlyWarnsFor","monorepoDirectDuplicateDependenciesOnlyWarnsForCheck","previousCheckedWorkspaces","checkSubPackage","id","isPackageALibrary","reportMonorepoDDDError","previousCheckSubPackage","forRoot","callback","for","packageCheck"],"mappings":"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"} \ No newline at end of file diff --git a/dist/utils/createGetDependencyPackageJson.d.ts b/dist/utils/createGetDependencyPackageJson.d.ts index 9f5fe07f..d64c31c0 100644 --- a/dist/utils/createGetDependencyPackageJson.d.ts +++ b/dist/utils/createGetDependencyPackageJson.d.ts @@ -1,9 +1,6 @@ import type { PackageJson } from './packageTypes'; -export type GetDependencyPackageJson = (pkgDepName: string) => PackageJson; -export declare function readPkgJson(packagePath: string): PackageJson; -export declare function writePkgJson(packagePath: string, pkg: PackageJson): void; -/** @internal */ -export declare function internalLoadPackageJsonFromNodeModules(pkgDepName: string, pkgDirname: string): PackageJson; +import { internalLoadPackageJsonFromNodeModules, readPkgJson } from './pkgJsonUtils'; +export type GetDependencyPackageJson = (pkgDepName: string) => Promise; type NodeModulesPackagePathCache = Map; interface CreateGetDependencyPackageJsonOptions { pkgDirname: string; diff --git a/dist/utils/createGetDependencyPackageJson.d.ts.map b/dist/utils/createGetDependencyPackageJson.d.ts.map index 65d57b7f..45c915c2 100644 --- a/dist/utils/createGetDependencyPackageJson.d.ts.map +++ b/dist/utils/createGetDependencyPackageJson.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"createGetDependencyPackageJson.d.ts","sourceRoot":"","sources":["../../src/utils/createGetDependencyPackageJson.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,MAAM,wBAAwB,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,WAAW,CAAC;AAE3E,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAE5D;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAExE;AAED,gBAAgB;AAChB,wBAAgB,sCAAsC,CACpD,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,WAAW,CAKb;AAED,KAAK,2BAA2B,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAE5D,UAAU,qCAAqC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;IAC1D,gBAAgB;IAChB,4CAA4C,CAAC,EAAE,OAAO,sCAAsC,CAAC;IAC7F,gBAAgB;IAChB,mBAAmB,CAAC,EAAE,OAAO,WAAW,CAAC;CAC1C;AAED,wBAAgB,8BAA8B,CAAC,EAC7C,UAAU,EACV,2BAA4D,EAC5D,4CAAqF,EACrF,mBAAiC,GAClC,EAAE,qCAAqC,GAAG,wBAAwB,CAuClE"} \ No newline at end of file +{"version":3,"file":"createGetDependencyPackageJson.d.ts","sourceRoot":"","sources":["../../src/utils/createGetDependencyPackageJson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,sCAAsC,EACtC,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,wBAAwB,GAAG,CACrC,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,WAAW,CAAC,CAAC;AAE1B,KAAK,2BAA2B,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAE5D,UAAU,qCAAqC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;IAC1D,gBAAgB;IAChB,4CAA4C,CAAC,EAAE,OAAO,sCAAsC,CAAC;IAC7F,gBAAgB;IAChB,mBAAmB,CAAC,EAAE,OAAO,WAAW,CAAC;CAC1C;AAED,wBAAgB,8BAA8B,CAAC,EAC7C,UAAU,EACV,2BAA4D,EAC5D,4CAAqF,EACrF,mBAAiC,GAClC,EAAE,qCAAqC,GAAG,wBAAwB,CAuClE"} \ No newline at end of file diff --git a/dist/utils/pkgJsonUtils.d.ts b/dist/utils/pkgJsonUtils.d.ts new file mode 100644 index 00000000..b0b11d37 --- /dev/null +++ b/dist/utils/pkgJsonUtils.d.ts @@ -0,0 +1,6 @@ +import type { PackageJson } from './packageTypes'; +export declare function readPkgJson(packagePath: string): PackageJson; +export declare function writePkgJson(packagePath: string, pkg: PackageJson): void; +/** @internal */ +export declare function internalLoadPackageJsonFromNodeModules(pkgDepName: string, pkgDirname: string): Promise; +//# sourceMappingURL=pkgJsonUtils.d.ts.map \ No newline at end of file diff --git a/dist/utils/pkgJsonUtils.d.ts.map b/dist/utils/pkgJsonUtils.d.ts.map new file mode 100644 index 00000000..1c7219e9 --- /dev/null +++ b/dist/utils/pkgJsonUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"pkgJsonUtils.d.ts","sourceRoot":"","sources":["../../src/utils/pkgJsonUtils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAE5D;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAExE;AAED,gBAAgB;AAChB,wBAAsB,sCAAsC,CAC1D,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,CAWtB"} \ No newline at end of file diff --git a/package.json b/package.json index 994f23c4..b365060c 100644 --- a/package.json +++ b/package.json @@ -9,18 +9,19 @@ "license": "ISC", "repository": "https://github.com/christophehurpeau/check-package-dependencies.git", "homepage": "https://github.com/christophehurpeau/check-package-dependencies", - "type": "commonjs", + "type": "module", "engines": { "node": "^14.13.1 || >=16.0.0" }, "packageManager": "yarn@3.3.0", - "main": "./dist/index-node14.cjs.js", + "main": "./dist/index-node14.mjs", "types": "./dist/index.d.ts", "exports": { "./package.json": "./package.json", ".": { "node": { - "default": "./dist/index-node14.cjs.js" + "import": "./dist/index-node14.mjs", + "require": "./dist/index-node14.cjs.js" } } }, @@ -29,7 +30,7 @@ "scripts": { "build": "yarn clean:build && rollup --config rollup.config.mjs && yarn run build:definitions", "build:definitions": "tsc -p tsconfig.build.json", - "checks": "node scripts/check-package.mjs", + "checks": "node scripts/check-package.js", "clean": "yarn clean:build", "clean:build": "pob-babel-clean-out dist", "generate:api": "typedoc --tsconfig tsconfig.doc.json", @@ -39,8 +40,8 @@ "lint:prettier": "pob-root-prettier --check .", "lint:prettier:fix": "pob-root-prettier --write .", "postinstallDev": "pob-root-postinstall", - "test": "jest", - "test:watch": "jest --watch", + "test": "NODE_OPTIONS=--experimental-vm-modules jest", + "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch", "watch": "yarn clean:build && rollup --config rollup.config.mjs --watch" }, "prettier": { @@ -71,6 +72,9 @@ "testEnvironment": "node", "setupFiles": [ "/src/test-setup.ts" + ], + "extensionsToTreatAsEsm": [ + ".ts" ] }, "pob": { @@ -79,7 +83,7 @@ "target": "node", "version": "14", "formats": [ - "cjs" + "es" ] } ], @@ -90,6 +94,7 @@ "dependencies": { "chalk": "^4.1.0", "glob": "^8.0.0", + "import-meta-resolve": "^2.1.0", "semver": "^7.3.4", "type-fest": "^3.0.0" }, diff --git a/rollup.config.mjs b/rollup.config.mjs index 32144d88..5928075b 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,5 +1,6 @@ +import { fileURLToPath } from 'url'; import createRollupConfig from 'pob-babel/createRollupConfig.js'; export default createRollupConfig({ - cwd: new URL('.', import.meta.url).pathname, + cwd: fileURLToPath(new URL('.', import.meta.url)), }); diff --git a/scripts/check-package.mjs b/scripts/check-package.js similarity index 74% rename from scripts/check-package.mjs rename to scripts/check-package.js index f4d6efc4..5e7eca99 100644 --- a/scripts/check-package.mjs +++ b/scripts/check-package.js @@ -1,4 +1,4 @@ -import { createCheckPackage } from '../dist/index-node14.cjs.js'; +import { createCheckPackage } from '../dist/index-node14.mjs'; await createCheckPackage() .checkRecommended({ diff --git a/src/check-package-with-workspaces.ts b/src/check-package-with-workspaces.ts index d1d93811..861f725d 100644 --- a/src/check-package-with-workspaces.ts +++ b/src/check-package-with-workspaces.ts @@ -117,11 +117,12 @@ export function createCheckPackageWithWorkspaces( return { async run() { - await Promise.all( - [checkPackage, ...checksWorkspaces.values()].map((checksWorkspace) => - checksWorkspace.run(), - ), - ); + for (const checksWorkspace of [ + checkPackage, + ...checksWorkspaces.values(), + ]) { + await checksWorkspace.run(); + } }, checkRecommended({ diff --git a/src/check-package.ts b/src/check-package.ts index 8e02f07e..8247d269 100644 --- a/src/check-package.ts +++ b/src/check-package.ts @@ -14,17 +14,14 @@ import { checkResolutionsVersionsMatch } from './checks/checkResolutionsVersions import { checkSatisfiesVersions } from './checks/checkSatisfiesVersions'; import { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency'; import type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson'; -import { - createGetDependencyPackageJson, - readPkgJson, - writePkgJson, -} from './utils/createGetDependencyPackageJson'; +import { createGetDependencyPackageJson } from './utils/createGetDependencyPackageJson'; import { getEntries } from './utils/object'; import type { DependencyName, DependencyTypes, PackageJson, } from './utils/packageTypes'; +import { readPkgJson, writePkgJson } from './utils/pkgJsonUtils'; import type { OnlyWarnsForOptionalDependencyMapping, OnlyWarnsFor, @@ -304,17 +301,40 @@ export function createCheckPackage( if (!internalWorkspacePkgDirectoryPath) { process.on('beforeExit', () => { if (!runCalled) { - console.warn( - '\nFor future compatibility, call .run() and await the result.', - ); + throw new Error('Call .run() and await the result.'); } }); } + class Job { + name: string; + + fn: () => Promise; + + constructor(name: string, fn: () => Promise) { + this.name = name; + this.fn = fn; + } + + async run(): Promise { + try { + await this.fn(); + } catch (err) { + throw new Error(`${this.name} failed: ${(err as Error).message}`); + } + } + } + + const jobs: Job[] = []; + return { - run() { + async run() { runCalled = true; - return Promise.resolve(); + // TODO parallel + for (const job of jobs) { + await job.run(); + } + writePackageIfChanged(); }, pkg, @@ -326,24 +346,27 @@ export function createCheckPackage( internalExactVersionsIgnore, allowRangeVersionsInDependencies = true, } = {}) { - const onlyWarnsForCheck = createOnlyWarnsForArrayCheck( - 'checkExactVersions.onlyWarnsFor', - onlyWarnsFor, - ); - checkExactVersions( - pkg, - pkgPathName, - !allowRangeVersionsInDependencies - ? ['dependencies', 'devDependencies', 'resolutions'] - : ['devDependencies', 'resolutions'], - { - onlyWarnsForCheck, - internalExactVersionsIgnore, - getDependencyPackageJson, - tryToAutoFix, - }, + jobs.push( + new Job(this.checkExactVersions.name, async () => { + const onlyWarnsForCheck = createOnlyWarnsForArrayCheck( + 'checkExactVersions.onlyWarnsFor', + onlyWarnsFor, + ); + await checkExactVersions( + pkg, + pkgPathName, + !allowRangeVersionsInDependencies + ? ['dependencies', 'devDependencies', 'resolutions'] + : ['devDependencies', 'resolutions'], + { + onlyWarnsForCheck, + internalExactVersionsIgnore, + getDependencyPackageJson, + tryToAutoFix, + }, + ); + }), ); - writePackageIfChanged(); return this; }, @@ -351,36 +374,46 @@ export function createCheckPackage( checkResolutionsVersionsMatch(pkg, pkgPathName, { tryToAutoFix, }); - writePackageIfChanged(); return this; }, /** @deprecated use checkExactVersions({ allowRangeVersionsInDependencies: true }) */ checkExactVersionsForLibrary({ onlyWarnsFor } = {}) { - const onlyWarnsForCheck = createOnlyWarnsForArrayCheck( - 'checkExactVersionsForLibrary.onlyWarnsFor', - onlyWarnsFor, + jobs.push( + new Job(this.checkExactDevVersions.name, async () => { + const onlyWarnsForCheck = createOnlyWarnsForArrayCheck( + 'checkExactVersionsForLibrary.onlyWarnsFor', + onlyWarnsFor, + ); + await checkExactVersions( + pkg, + pkgPathName, + ['devDependencies', 'resolutions'], + { + onlyWarnsForCheck, + tryToAutoFix, + getDependencyPackageJson, + }, + ); + }), ); - checkExactVersions(pkg, pkgPathName, ['devDependencies', 'resolutions'], { - onlyWarnsForCheck, - tryToAutoFix, - getDependencyPackageJson, - }); - writePackageIfChanged(); return this; }, checkExactDevVersions({ onlyWarnsFor } = {}) { - const onlyWarnsForCheck = createOnlyWarnsForArrayCheck( - 'checkExactDevVersions.onlyWarnsFor', - onlyWarnsFor, + jobs.push( + new Job(this.checkExactDevVersions.name, async () => { + const onlyWarnsForCheck = createOnlyWarnsForArrayCheck( + 'checkExactDevVersions.onlyWarnsFor', + onlyWarnsFor, + ); + await checkExactVersions(pkg, pkgPathName, ['devDependencies'], { + onlyWarnsForCheck, + tryToAutoFix, + getDependencyPackageJson, + }); + }), ); - checkExactVersions(pkg, pkgPathName, ['devDependencies'], { - onlyWarnsForCheck, - tryToAutoFix, - getDependencyPackageJson, - }); - writePackageIfChanged(); return this; }, @@ -404,24 +437,28 @@ export function createCheckPackage( ? 'onlyWarnsFor' : 'invalidOnlyWarnsFor', } = {}) { - const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck( - internalMissingConfigName, - missingOnlyWarnsFor, - ); - const invalidOnlyWarnsForCheck = - internalInvalidConfigName === internalMissingConfigName - ? missingOnlyWarnsForCheck - : createOnlyWarnsForMappingCheck( - internalInvalidConfigName, - invalidOnlyWarnsFor, - ); - checkDirectPeerDependencies( - isLibrary, - pkg, - pkgPathName, - getDependencyPackageJson, - missingOnlyWarnsForCheck, - invalidOnlyWarnsForCheck, + jobs.push( + new Job(this.checkDirectPeerDependencies.name, async () => { + const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck( + internalMissingConfigName, + missingOnlyWarnsFor, + ); + const invalidOnlyWarnsForCheck = + internalInvalidConfigName === internalMissingConfigName + ? missingOnlyWarnsForCheck + : createOnlyWarnsForMappingCheck( + internalInvalidConfigName, + invalidOnlyWarnsFor, + ); + await checkDirectPeerDependencies( + isLibrary, + pkg, + pkgPathName, + getDependencyPackageJson, + missingOnlyWarnsForCheck, + invalidOnlyWarnsForCheck, + ); + }), ); return this; }, @@ -430,12 +467,16 @@ export function createCheckPackage( onlyWarnsFor, internalConfigName = 'onlyWarnsFor', } = {}) { - checkDirectDuplicateDependencies( - pkg, - pkgPathName, - 'dependencies', - getDependencyPackageJson, - createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor), + jobs.push( + new Job(this.checkDirectDuplicateDependencies.name, async () => { + await checkDirectDuplicateDependencies( + pkg, + pkgPathName, + 'dependencies', + getDependencyPackageJson, + createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor), + ); + }), ); return this; }, @@ -553,37 +594,41 @@ export function createCheckPackage( depName, { resolutions, dependencies, devDependencies }, ) { - const depPkg = getDependencyPackageJson(depName); - if (resolutions) { - checkIdenticalVersionsThanDependency( - pkg, - pkgPathName, - 'resolutions', - resolutions, - depPkg, - depPkg.dependencies, - ); - } - if (dependencies) { - checkIdenticalVersionsThanDependency( - pkg, - pkgPathName, - 'dependencies', - dependencies, - depPkg, - depPkg.dependencies, - ); - } - if (devDependencies) { - checkIdenticalVersionsThanDependency( - pkg, - pkgPathName, - 'devDependencies', - devDependencies, - depPkg, - depPkg.dependencies, - ); - } + jobs.push( + new Job(this.checkIdenticalVersionsThanDependency.name, async () => { + const depPkg = await getDependencyPackageJson(depName); + if (resolutions) { + checkIdenticalVersionsThanDependency( + pkg, + pkgPathName, + 'resolutions', + resolutions, + depPkg, + depPkg.dependencies, + ); + } + if (dependencies) { + checkIdenticalVersionsThanDependency( + pkg, + pkgPathName, + 'dependencies', + dependencies, + depPkg, + depPkg.dependencies, + ); + } + if (devDependencies) { + checkIdenticalVersionsThanDependency( + pkg, + pkgPathName, + 'devDependencies', + devDependencies, + depPkg, + depPkg.dependencies, + ); + } + }), + ); return this; }, @@ -591,37 +636,41 @@ export function createCheckPackage( depName, { resolutions, dependencies, devDependencies }, ) { - const depPkg = getDependencyPackageJson(depName); - if (resolutions) { - checkIdenticalVersionsThanDependency( - pkg, - pkgPathName, - 'resolutions', - resolutions, - depPkg, - depPkg.devDependencies, - ); - } - if (dependencies) { - checkIdenticalVersionsThanDependency( - pkg, - pkgPathName, - 'dependencies', - dependencies, - depPkg, - depPkg.devDependencies, - ); - } - if (devDependencies) { - checkIdenticalVersionsThanDependency( - pkg, - pkgPathName, - 'devDependencies', - devDependencies, - depPkg, - depPkg.devDependencies, - ); - } + jobs.push( + new Job(this.checkSatisfiesVersionsFromDependency.name, async () => { + const depPkg = await getDependencyPackageJson(depName); + if (resolutions) { + checkIdenticalVersionsThanDependency( + pkg, + pkgPathName, + 'resolutions', + resolutions, + depPkg, + depPkg.devDependencies, + ); + } + if (dependencies) { + checkIdenticalVersionsThanDependency( + pkg, + pkgPathName, + 'dependencies', + dependencies, + depPkg, + depPkg.devDependencies, + ); + } + if (devDependencies) { + checkIdenticalVersionsThanDependency( + pkg, + pkgPathName, + 'devDependencies', + devDependencies, + depPkg, + depPkg.devDependencies, + ); + } + }), + ); return this; }, @@ -643,37 +692,41 @@ export function createCheckPackage( depName, { resolutions, dependencies, devDependencies }, ) { - const depPkg = getDependencyPackageJson(depName); - if (resolutions) { - checkSatisfiesVersionsFromDependency( - pkg, - pkgPathName, - 'resolutions', - resolutions, - depPkg, - depPkg.dependencies, - ); - } - if (dependencies) { - checkSatisfiesVersionsFromDependency( - pkg, - pkgPathName, - 'dependencies', - dependencies, - depPkg, - depPkg.dependencies, - ); - } - if (devDependencies) { - checkSatisfiesVersionsFromDependency( - pkg, - pkgPathName, - 'devDependencies', - devDependencies, - depPkg, - depPkg.dependencies, - ); - } + jobs.push( + new Job(this.checkSatisfiesVersionsFromDependency.name, async () => { + const depPkg = await getDependencyPackageJson(depName); + if (resolutions) { + checkSatisfiesVersionsFromDependency( + pkg, + pkgPathName, + 'resolutions', + resolutions, + depPkg, + depPkg.dependencies, + ); + } + if (dependencies) { + checkSatisfiesVersionsFromDependency( + pkg, + pkgPathName, + 'dependencies', + dependencies, + depPkg, + depPkg.dependencies, + ); + } + if (devDependencies) { + checkSatisfiesVersionsFromDependency( + pkg, + pkgPathName, + 'devDependencies', + devDependencies, + depPkg, + depPkg.dependencies, + ); + } + }), + ); return this; }, @@ -681,37 +734,44 @@ export function createCheckPackage( depName, { resolutions, dependencies, devDependencies }, ) { - const depPkg = getDependencyPackageJson(depName); - if (resolutions) { - checkSatisfiesVersionsFromDependency( - pkg, - pkgPathName, - 'resolutions', - resolutions, - depPkg, - depPkg.devDependencies, - ); - } - if (dependencies) { - checkSatisfiesVersionsFromDependency( - pkg, - pkgPathName, - 'dependencies', - dependencies, - depPkg, - depPkg.devDependencies, - ); - } - if (devDependencies) { - checkSatisfiesVersionsFromDependency( - pkg, - pkgPathName, - 'devDependencies', - devDependencies, - depPkg, - depPkg.devDependencies, - ); - } + jobs.push( + new Job( + this.checkSatisfiesVersionsInDevDependenciesOfDependency.name, + async () => { + const depPkg = await getDependencyPackageJson(depName); + if (resolutions) { + checkSatisfiesVersionsFromDependency( + pkg, + pkgPathName, + 'resolutions', + resolutions, + depPkg, + depPkg.devDependencies, + ); + } + if (dependencies) { + checkSatisfiesVersionsFromDependency( + pkg, + pkgPathName, + 'dependencies', + dependencies, + depPkg, + depPkg.devDependencies, + ); + } + if (devDependencies) { + checkSatisfiesVersionsFromDependency( + pkg, + pkgPathName, + 'devDependencies', + devDependencies, + depPkg, + depPkg.devDependencies, + ); + } + }, + ), + ); return this; }, @@ -738,28 +798,38 @@ export function createCheckPackage( depName2, { dependencies, devDependencies }, ) { - const depPkg1 = getDependencyPackageJson(depName1); - const depPkg2 = getDependencyPackageJson(depName2); - if (dependencies) { - checkSatisfiesVersionsFromDependency( - depPkg2, - pkgPathName, - 'dependencies', - dependencies, - depPkg1, - depPkg1.dependencies, - ); - } - if (devDependencies) { - checkSatisfiesVersionsFromDependency( - depPkg2, - pkgPathName, - 'devDependencies', - devDependencies, - depPkg1, - depPkg1.dependencies, - ); - } + jobs.push( + new Job( + this.checkSatisfiesVersionsBetweenDependencies.name, + async () => { + const [depPkg1, depPkg2] = await Promise.all([ + getDependencyPackageJson(depName1), + getDependencyPackageJson(depName2), + ]); + + if (dependencies) { + checkSatisfiesVersionsFromDependency( + depPkg2, + pkgPathName, + 'dependencies', + dependencies, + depPkg1, + depPkg1.dependencies, + ); + } + if (devDependencies) { + checkSatisfiesVersionsFromDependency( + depPkg2, + pkgPathName, + 'devDependencies', + devDependencies, + depPkg1, + depPkg1.dependencies, + ); + } + }, + ), + ); return this; }, }; diff --git a/src/checks/checkDirectDuplicateDependencies.ts b/src/checks/checkDirectDuplicateDependencies.ts index 468e3cea..f02b57e5 100644 --- a/src/checks/checkDirectDuplicateDependencies.ts +++ b/src/checks/checkDirectDuplicateDependencies.ts @@ -8,15 +8,16 @@ import type { PackageJson, DependencyTypes } from '../utils/packageTypes'; import type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils'; import { checkDuplicateDependencies } from './checkDuplicateDependencies'; -export function checkDirectDuplicateDependencies( +export async function checkDirectDuplicateDependencies( pkg: PackageJson, pkgPathName: string, depType: DependencyTypes, getDependencyPackageJson: GetDependencyPackageJson, onlyWarnsForCheck: OnlyWarnsForMappingCheck, reportErrorNamePrefix = '', -): void { - const reportError = createReportError( + customCreateReportError = createReportError, +): Promise { + const reportError = customCreateReportError( `${reportErrorNamePrefix}Direct Duplicate Dependencies`, pkgPathName, ); @@ -31,21 +32,25 @@ export function checkDirectDuplicateDependencies( }, { type: 'dependencies', searchIn: ['devDependencies', 'dependencies'] }, ]; - checks.forEach(({ type, searchIn }) => { - const dependencies = pkg[type]; - if (!dependencies) return; - getKeys(dependencies).forEach((depName) => { - const depPkg = getDependencyPackageJson(depName); - checkDuplicateDependencies( - reportError, - pkg, - depType, - searchIn, - depPkg, - onlyWarnsForCheck.createFor(depName), - ); - }); - }); + + await Promise.all( + checks.map(async ({ type, searchIn }) => { + const dependencies = pkg[type]; + + if (!dependencies) return; + for (const depName of getKeys(dependencies)) { + const depPkg = await getDependencyPackageJson(depName); + checkDuplicateDependencies( + reportError, + pkg, + depType, + searchIn, + depPkg, + onlyWarnsForCheck.createFor(depName), + ); + } + }), + ); reportNotWarnedForMapping(reportError, onlyWarnsForCheck); } diff --git a/src/checks/checkDirectPeerDependencies.test.ts b/src/checks/checkDirectPeerDependencies.test.ts index 34564d68..7e2d2a46 100644 --- a/src/checks/checkDirectPeerDependencies.test.ts +++ b/src/checks/checkDirectPeerDependencies.test.ts @@ -1,25 +1,18 @@ /* eslint-disable max-lines */ -import { createReportError } from '../utils/createReportError'; import { createOnlyWarnsForMappingCheck } from '../utils/warnForUtils'; import { checkDirectPeerDependencies } from './checkDirectPeerDependencies'; -jest.mock('../utils/createReportError', () => ({ - ...jest.requireActual('../utils/createReportError'), - createReportError: jest.fn(), -})); - -const mockReportError = jest.fn(); -(createReportError as ReturnType).mockReturnValue( - mockReportError, -); +const jest = import.meta.jest; describe('checkDirectPeerDependencies', () => { + const mockReportError = jest.fn(); + const createReportError = jest.fn().mockReturnValue(mockReportError); beforeEach(() => { mockReportError.mockReset(); }); - it('should report error when peer dependency is missing', () => { - checkDirectPeerDependencies( + it('should report error when peer dependency is missing', async () => { + await checkDirectPeerDependencies( false, { name: 'test', @@ -32,6 +25,7 @@ describe('checkDirectPeerDependencies', () => { })), createOnlyWarnsForMappingCheck('test', []), createOnlyWarnsForMappingCheck('test', []), + createReportError, ); expect(mockReportError).toHaveBeenCalledWith( 'Missing "rollup" peer dependency from "some-lib-using-rollup" in devDependencies', @@ -40,8 +34,8 @@ describe('checkDirectPeerDependencies', () => { ); }); - it('should not report error when peer dependency is in devDependencies', () => { - checkDirectPeerDependencies( + it('should not report error when peer dependency is in devDependencies', async () => { + await checkDirectPeerDependencies( false, { name: 'test', @@ -59,12 +53,13 @@ describe('checkDirectPeerDependencies', () => { })), createOnlyWarnsForMappingCheck('test', []), createOnlyWarnsForMappingCheck('test', []), + createReportError, ); expect(mockReportError).not.toHaveBeenCalled(); }); - it('should not report error when peer dependency value is *', () => { - checkDirectPeerDependencies( + it('should not report error when peer dependency value is *', async () => { + await checkDirectPeerDependencies( false, { name: 'test', @@ -82,12 +77,13 @@ describe('checkDirectPeerDependencies', () => { })), createOnlyWarnsForMappingCheck('test', []), createOnlyWarnsForMappingCheck('test', []), + createReportError, ); expect(mockReportError).not.toHaveBeenCalled(); }); - it('should not report error when dev dependency value is a beta', () => { - checkDirectPeerDependencies( + it('should not report error when dev dependency value is a beta', async () => { + await checkDirectPeerDependencies( false, { name: 'test', @@ -108,12 +104,13 @@ describe('checkDirectPeerDependencies', () => { })), createOnlyWarnsForMappingCheck('test', []), createOnlyWarnsForMappingCheck('test', []), + createReportError, ); expect(mockReportError).not.toHaveBeenCalled(); }); - it('should not report error when dev dependency and peerDependency value are a beta', () => { - checkDirectPeerDependencies( + it('should not report error when dev dependency and peerDependency value are a beta', async () => { + await checkDirectPeerDependencies( false, { name: 'test', @@ -134,12 +131,13 @@ describe('checkDirectPeerDependencies', () => { })), createOnlyWarnsForMappingCheck('test', []), createOnlyWarnsForMappingCheck('test', []), + createReportError, ); expect(mockReportError).not.toHaveBeenCalled(); }); - it('should allow lib to have peer in both dependencies and peerDependencies', () => { - checkDirectPeerDependencies( + it('should allow lib to have peer in both dependencies and peerDependencies', async () => { + await checkDirectPeerDependencies( true, { name: 'test', @@ -159,12 +157,13 @@ describe('checkDirectPeerDependencies', () => { })), createOnlyWarnsForMappingCheck('test', []), createOnlyWarnsForMappingCheck('test', []), + createReportError, ); expect(mockReportError).not.toHaveBeenCalled(); }); - it('should allow missing peer dependency when optional', () => { - checkDirectPeerDependencies( + it('should allow missing peer dependency when optional', async () => { + await checkDirectPeerDependencies( false, { name: 'test', @@ -180,12 +179,13 @@ describe('checkDirectPeerDependencies', () => { })), createOnlyWarnsForMappingCheck('test', []), createOnlyWarnsForMappingCheck('test', []), + createReportError, ); expect(mockReportError).not.toHaveBeenCalled(); }); - it('should not report error when @types is in dev dependency of an app', () => { - checkDirectPeerDependencies( + it('should not report error when @types is in dev dependency of an app', async () => { + await checkDirectPeerDependencies( false, { name: 'test', @@ -208,12 +208,13 @@ describe('checkDirectPeerDependencies', () => { })), createOnlyWarnsForMappingCheck('test', []), createOnlyWarnsForMappingCheck('test', []), + createReportError, ); expect(mockReportError).not.toHaveBeenCalled(); }); - it('should not report error when @types is missing in dependencies/peerDependency of a library', () => { - checkDirectPeerDependencies( + it('should not report error when @types is missing in dependencies/peerDependency of a library', async () => { + await checkDirectPeerDependencies( true, { name: 'test', @@ -236,6 +237,7 @@ describe('checkDirectPeerDependencies', () => { })), createOnlyWarnsForMappingCheck('test', []), createOnlyWarnsForMappingCheck('test', []), + createReportError, ); expect(mockReportError).toHaveBeenCalledWith( 'Missing "@types/a" peer dependency from "some-lib-using-types" in dependencies', diff --git a/src/checks/checkDirectPeerDependencies.ts b/src/checks/checkDirectPeerDependencies.ts index aaee283f..94df7865 100644 --- a/src/checks/checkDirectPeerDependencies.ts +++ b/src/checks/checkDirectPeerDependencies.ts @@ -36,35 +36,38 @@ const getAllowedPeerInFromType = ( } }; -export function checkDirectPeerDependencies( +export async function checkDirectPeerDependencies( isLibrary: boolean, pkg: PackageJson, pkgPathName: string, getDependencyPackageJson: GetDependencyPackageJson, missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck, invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck, -): void { - const reportError = createReportError('Peer Dependencies', pkgPathName); + customCreateReportError = createReportError, +): Promise { + const reportError = customCreateReportError('Peer Dependencies', pkgPathName); - regularDependencyTypes.forEach((depType) => { - const dependencies = pkg[depType]; - if (!dependencies) return; - getKeys(dependencies).forEach((depName) => { - const depPkg = getDependencyPackageJson(depName); + await Promise.all( + regularDependencyTypes.map(async (depType) => { + const dependencies = pkg[depType]; + if (!dependencies) return; + for (const depName of getKeys(dependencies)) { + const depPkg = await getDependencyPackageJson(depName); - if (depPkg.peerDependencies) { - checkPeerDependencies( - pkg, - reportError, - depType, - getAllowedPeerInFromType(depType, isLibrary), - depPkg, - missingOnlyWarnsForCheck.createFor(depName), - invalidOnlyWarnsForCheck.createFor(depName), - ); + if (depPkg.peerDependencies) { + checkPeerDependencies( + pkg, + reportError, + depType, + getAllowedPeerInFromType(depType, isLibrary), + depPkg, + missingOnlyWarnsForCheck.createFor(depName), + invalidOnlyWarnsForCheck.createFor(depName), + ); + } } - }); - }); + }), + ); reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck); if (missingOnlyWarnsForCheck !== invalidOnlyWarnsForCheck) { diff --git a/src/checks/checkDuplicateDependencies.test.ts b/src/checks/checkDuplicateDependencies.test.ts index dde219cd..4b6b4b27 100644 --- a/src/checks/checkDuplicateDependencies.test.ts +++ b/src/checks/checkDuplicateDependencies.test.ts @@ -1,18 +1,11 @@ -import { createReportError } from '../utils/createReportError'; import { createOnlyWarnsForArrayCheck } from '../utils/warnForUtils'; import { checkDuplicateDependencies } from './checkDuplicateDependencies'; -jest.mock('../utils/createReportError', () => ({ - ...jest.requireActual('../utils/createReportError'), - createReportError: jest.fn(), -})); - -const mockReportError = jest.fn(); -(createReportError as ReturnType).mockReturnValue( - mockReportError, -); +const jest = import.meta.jest; describe('checkDuplicateDependencies', () => { + const mockReportError = jest.fn(); + beforeEach(() => { mockReportError.mockReset(); }); diff --git a/src/checks/checkExactVersions.test.ts b/src/checks/checkExactVersions.test.ts index 3ddb3a9c..b1ec956b 100644 --- a/src/checks/checkExactVersions.test.ts +++ b/src/checks/checkExactVersions.test.ts @@ -1,17 +1,9 @@ /* eslint-disable max-lines */ -import { createReportError } from '../utils/createReportError'; import { createOnlyWarnsForArrayCheck } from '../utils/warnForUtils'; import { checkExactVersions } from './checkExactVersions'; -jest.mock('../utils/createReportError', () => ({ - ...jest.requireActual('../utils/createReportError'), - createReportError: jest.fn(), -})); +const jest = import.meta.jest; -const mockReportError = jest.fn(); -(createReportError as ReturnType).mockReturnValue( - mockReportError, -); const onlyWarnsForConfigName = 'checkExactVersions.test.onlyWarnsFor'; const emptyOnlyWarnsForCheck = createOnlyWarnsForArrayCheck( onlyWarnsForConfigName, @@ -19,25 +11,34 @@ const emptyOnlyWarnsForCheck = createOnlyWarnsForArrayCheck( ); describe('checkExactVersions', () => { + const mockReportError = jest.fn(); + const createReportError = jest.fn().mockReturnValue(mockReportError); + beforeEach(() => { mockReportError.mockReset(); }); - it('should return no error when all versions are exact', () => { - checkExactVersions( + it('should return no error when all versions are exact', async () => { + await checkExactVersions( { name: 'test', devDependencies: { test: '1.0.0' } }, 'path', ['devDependencies'], - { onlyWarnsForCheck: emptyOnlyWarnsForCheck }, + { + onlyWarnsForCheck: emptyOnlyWarnsForCheck, + customCreateReportError: createReportError, + }, ); expect(createReportError).toHaveBeenCalledWith('Exact versions', 'path'); expect(mockReportError).not.toHaveBeenCalled(); }); - it('should return an error when one version has a caret range', () => { - checkExactVersions( + it('should return an error when one version has a caret range', async () => { + await checkExactVersions( { name: 'test', devDependencies: { test: '^1.0.0' } }, 'path', ['devDependencies'], - { onlyWarnsForCheck: emptyOnlyWarnsForCheck }, + { + onlyWarnsForCheck: emptyOnlyWarnsForCheck, + customCreateReportError: createReportError, + }, ); expect(createReportError).toHaveBeenCalled(); expect(mockReportError).toHaveBeenCalledTimes(1); @@ -47,8 +48,8 @@ describe('checkExactVersions', () => { false, ); }); - it('should return an warning when one version has a caret range and is in onlyWarnsFor', () => { - checkExactVersions( + it('should return an warning when one version has a caret range and is in onlyWarnsFor', async () => { + await checkExactVersions( { name: 'test', devDependencies: { test: '^1.0.0' } }, 'path', ['devDependencies'], @@ -57,6 +58,7 @@ describe('checkExactVersions', () => { onlyWarnsForConfigName, ['test'], ), + customCreateReportError: createReportError, }, ); expect(createReportError).toHaveBeenCalled(); @@ -68,12 +70,15 @@ describe('checkExactVersions', () => { ); }); - it('should return an error when one version has a tilde range', () => { - checkExactVersions( + it('should return an error when one version has a tilde range', async () => { + await checkExactVersions( { name: 'test', devDependencies: { test: '~1.0.0' } }, 'path', ['devDependencies'], - { onlyWarnsForCheck: emptyOnlyWarnsForCheck }, + { + onlyWarnsForCheck: emptyOnlyWarnsForCheck, + customCreateReportError: createReportError, + }, ); expect(createReportError).toHaveBeenCalled(); expect(mockReportError).toHaveBeenCalledTimes(1); @@ -84,12 +89,15 @@ describe('checkExactVersions', () => { ); }); - it('should return multiple errors when multiple versions have range', () => { - checkExactVersions( + it('should return multiple errors when multiple versions have range', async () => { + await checkExactVersions( { name: 'test', devDependencies: { test1: '~1.0.0', test2: '~1.0.0' } }, 'path', ['devDependencies'], - { onlyWarnsForCheck: emptyOnlyWarnsForCheck }, + { + onlyWarnsForCheck: emptyOnlyWarnsForCheck, + customCreateReportError: createReportError, + }, ); expect(createReportError).toHaveBeenCalled(); expect(mockReportError).toHaveBeenCalledTimes(2); @@ -107,15 +115,16 @@ describe('checkExactVersions', () => { ); }); - it('should fix and remove range', () => { + it('should fix and remove range', async () => { const getDependencyPackageJsonMock = jest .fn() .mockReturnValueOnce({ name: 'test1', version: '1.0.1' }); const pkg = { name: 'test', devDependencies: { test1: '~1.0.0' } }; - checkExactVersions(pkg, 'path', ['devDependencies'], { + await checkExactVersions(pkg, 'path', ['devDependencies'], { onlyWarnsForCheck: emptyOnlyWarnsForCheck, tryToAutoFix: true, getDependencyPackageJson: getDependencyPackageJsonMock, + customCreateReportError: createReportError, }); expect(createReportError).toHaveBeenCalled(); expect(mockReportError).toHaveBeenCalledTimes(0); @@ -126,17 +135,18 @@ describe('checkExactVersions', () => { }); }); - it('should error if autofix failed as package does not exists', () => { + it('should error if autofix failed as package does not exists', async () => { const getDependencyPackageJsonMock = jest .fn() .mockImplementationOnce(() => { throw new Error('Module not found'); }); const pkg = { name: 'test', devDependencies: { test1: '~1.0.0' } }; - checkExactVersions(pkg, 'path', ['devDependencies'], { + await checkExactVersions(pkg, 'path', ['devDependencies'], { onlyWarnsForCheck: emptyOnlyWarnsForCheck, tryToAutoFix: true, getDependencyPackageJson: getDependencyPackageJsonMock, + customCreateReportError: createReportError, }); expect(createReportError).toHaveBeenCalled(); expect(getDependencyPackageJsonMock).toHaveBeenCalled(); @@ -149,15 +159,16 @@ describe('checkExactVersions', () => { ); }); - it("should error if autofix failed because version doesn't match range", () => { + it("should error if autofix failed because version doesn't match range", async () => { const getDependencyPackageJsonMock = jest .fn() .mockReturnValueOnce({ name: 'test1', version: '2.0.0' }); const pkg = { name: 'test', devDependencies: { test1: '~1.0.0' } }; - checkExactVersions(pkg, 'path', ['devDependencies'], { + await checkExactVersions(pkg, 'path', ['devDependencies'], { onlyWarnsForCheck: emptyOnlyWarnsForCheck, tryToAutoFix: true, getDependencyPackageJson: getDependencyPackageJsonMock, + customCreateReportError: createReportError, }); expect(createReportError).toHaveBeenCalled(); expect(getDependencyPackageJsonMock).toHaveBeenCalled(); @@ -170,8 +181,8 @@ describe('checkExactVersions', () => { ); }); - it('should support npm: prefix', () => { - checkExactVersions( + it('should support npm: prefix', async () => { + await checkExactVersions( { name: 'test', devDependencies: { @@ -182,6 +193,7 @@ describe('checkExactVersions', () => { ['devDependencies'], { onlyWarnsForCheck: emptyOnlyWarnsForCheck, + customCreateReportError: createReportError, }, ); expect(createReportError).toHaveBeenCalled(); @@ -193,8 +205,8 @@ describe('checkExactVersions', () => { false, ); }); - it('should warn when onlyWarnsFor is passed', () => { - checkExactVersions( + it('should warn when onlyWarnsFor is passed', async () => { + await checkExactVersions( { name: 'test', devDependencies: { test1: '~1.0.0', test2: '~1.0.0' } }, 'path', ['devDependencies'], @@ -203,6 +215,7 @@ describe('checkExactVersions', () => { onlyWarnsForConfigName, ['test1'], ), + customCreateReportError: createReportError, }, ); expect(createReportError).toHaveBeenCalled(); @@ -220,11 +233,12 @@ describe('checkExactVersions', () => { false, ); }); - it('should error when onlyWarnsFor is not fully used', () => { - checkExactVersions({ name: 'test' }, 'path', ['devDependencies'], { + it('should error when onlyWarnsFor is not fully used', async () => { + await checkExactVersions({ name: 'test' }, 'path', ['devDependencies'], { onlyWarnsForCheck: createOnlyWarnsForArrayCheck(onlyWarnsForConfigName, [ 'testa', ]), + customCreateReportError: createReportError, }); expect(createReportError).toHaveBeenCalled(); expect(mockReportError).toHaveBeenCalledTimes(1); diff --git a/src/checks/checkExactVersions.ts b/src/checks/checkExactVersions.ts index fd4bb497..d53ee5fd 100644 --- a/src/checks/checkExactVersions.ts +++ b/src/checks/checkExactVersions.ts @@ -13,12 +13,13 @@ export interface CheckExactVersionsOptions { onlyWarnsForCheck: OnlyWarnsForCheck; internalExactVersionsIgnore?: OnlyWarnsFor; tryToAutoFix?: boolean; + customCreateReportError?: typeof createReportError; } const isVersionRange = (version: string): boolean => version.startsWith('^') || version.startsWith('~'); -export function checkExactVersions( +export async function checkExactVersions( pkg: PackageJson, pkgPathName: string, types: DependencyTypes[], @@ -27,13 +28,14 @@ export function checkExactVersions( onlyWarnsForCheck, internalExactVersionsIgnore, tryToAutoFix = false, + customCreateReportError = createReportError, }: CheckExactVersionsOptions, -): void { - const reportError = createReportError('Exact versions', pkgPathName); +): Promise { + const reportError = customCreateReportError('Exact versions', pkgPathName); - types.forEach((type) => { + for (const type of types) { const pkgDependencies = pkg[type]; - if (!pkgDependencies) return; + if (!pkgDependencies) continue; for (const [dependencyName, versionConst] of Object.entries( pkgDependencies, @@ -48,13 +50,13 @@ export function checkExactVersions( if (isVersionRange(version)) { if (internalExactVersionsIgnore?.includes(dependencyName)) { - return; + continue; } const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName); if (!shouldOnlyWarn && tryToAutoFix && getDependencyPackageJson) { let resolvedDep; try { - resolvedDep = getDependencyPackageJson(dependencyName); + resolvedDep = await getDependencyPackageJson(dependencyName); } catch { resolvedDep = null; } @@ -86,7 +88,7 @@ export function checkExactVersions( } } } - }); + } reportNotWarnedFor(reportError, onlyWarnsForCheck); } diff --git a/src/checks/checkIdenticalVersions.test.ts b/src/checks/checkIdenticalVersions.test.ts index b57d02b5..246578eb 100644 --- a/src/checks/checkIdenticalVersions.test.ts +++ b/src/checks/checkIdenticalVersions.test.ts @@ -1,17 +1,11 @@ -import { createReportError } from '../utils/createReportError'; import { checkIdenticalVersions } from './checkIdenticalVersions'; -jest.mock('../utils/createReportError', () => ({ - ...jest.requireActual('../utils/createReportError'), - createReportError: jest.fn(), -})); - -const mockReportError = jest.fn(); -(createReportError as ReturnType).mockReturnValue( - mockReportError, -); +const jest = import.meta.jest; describe('checkIdenticalVersions', () => { + const mockReportError = jest.fn(); + const createReportError = jest.fn().mockReturnValue(mockReportError); + beforeEach(() => { mockReportError.mockReset(); }); @@ -28,6 +22,8 @@ describe('checkIdenticalVersions', () => { { react: ['react-dom'], }, + undefined, + createReportError, ); expect(createReportError).toHaveBeenCalledWith( 'Identical Versions', @@ -47,6 +43,8 @@ describe('checkIdenticalVersions', () => { { react: ['react-dom'], }, + undefined, + createReportError, ); expect(createReportError).toHaveBeenCalledWith( 'Identical Versions', @@ -77,6 +75,8 @@ describe('checkIdenticalVersions', () => { devDependencies: ['react-test-renderer'], }, }, + undefined, + createReportError, ); expect(createReportError).toHaveBeenCalledWith( 'Identical Versions', @@ -100,6 +100,8 @@ describe('checkIdenticalVersions', () => { devDependencies: ['react-test-renderer'], }, }, + undefined, + createReportError, ); expect(createReportError).toHaveBeenCalledWith( 'Identical Versions', diff --git a/src/checks/checkIdenticalVersions.ts b/src/checks/checkIdenticalVersions.ts index ffca68b2..539ea83a 100644 --- a/src/checks/checkIdenticalVersions.ts +++ b/src/checks/checkIdenticalVersions.ts @@ -9,9 +9,13 @@ export function checkIdenticalVersions( type: DependencyTypes, deps: Record>>, onlyWarnsForCheck?: OnlyWarnsForCheck, + customCreateReportError = createReportError, ): void { const pkgDependencies = pkg[type] || {}; - const reportError = createReportError('Identical Versions', pkgPathName); + const reportError = customCreateReportError( + 'Identical Versions', + pkgPathName, + ); getKeys(deps).forEach((depKey) => { const version = pkgDependencies[depKey]; diff --git a/src/checks/checkIdenticalVersionsThanDependency.ts b/src/checks/checkIdenticalVersionsThanDependency.ts index 5f154b74..34ba1708 100644 --- a/src/checks/checkIdenticalVersionsThanDependency.ts +++ b/src/checks/checkIdenticalVersionsThanDependency.ts @@ -10,9 +10,10 @@ export function checkIdenticalVersionsThanDependency( depPkg: PackageJson, dependencies: PackageJson[DependencyTypes] = {}, onlyWarnsForCheck?: OnlyWarnsForCheck, + customCreateReportError = createReportError, ): void { const pkgDependencies = pkg[type] || {}; - const reportError = createReportError( + const reportError = customCreateReportError( `Same Versions than ${depPkg.name}`, pkgPathName, ); diff --git a/src/checks/checkNoDependencies.test.ts b/src/checks/checkNoDependencies.test.ts index 8fda0e73..c7668f5e 100644 --- a/src/checks/checkNoDependencies.test.ts +++ b/src/checks/checkNoDependencies.test.ts @@ -1,17 +1,11 @@ -import { createReportError } from '../utils/createReportError'; import { checkNoDependencies } from './checkNoDependencies'; -jest.mock('../utils/createReportError', () => ({ - ...jest.requireActual('../utils/createReportError'), - createReportError: jest.fn(), -})); - -const mockReportError = jest.fn(); -(createReportError as ReturnType).mockReturnValue( - mockReportError, -); +const jest = import.meta.jest; describe('checkNoDependencies', () => { + const mockReportError = jest.fn(); + const createReportError = jest.fn().mockReturnValue(mockReportError); + beforeEach(() => { mockReportError.mockReset(); }); @@ -19,6 +13,9 @@ describe('checkNoDependencies', () => { checkNoDependencies( { name: 'test', devDependencies: { test: '1.0.0' } }, 'path', + undefined, + undefined, + createReportError, ); expect(mockReportError).not.toHaveBeenCalled(); }); @@ -27,6 +24,8 @@ describe('checkNoDependencies', () => { { name: 'test', dependencies: { test: '1.0.0' } }, 'path', 'devDependencies', + undefined, + createReportError, ); expect(mockReportError).not.toHaveBeenCalled(); }); @@ -35,6 +34,9 @@ describe('checkNoDependencies', () => { checkNoDependencies( { name: 'test', dependencies: { test: '1.0.0' } }, 'path', + undefined, + undefined, + createReportError, ); expect(createReportError).toHaveBeenCalledWith('No dependencies', 'path'); expect(mockReportError).toHaveBeenCalledTimes(1); @@ -50,6 +52,7 @@ describe('checkNoDependencies', () => { 'path', 'dependencies', 'peerDependencies', + createReportError, ); expect(mockReportError).toHaveBeenCalledTimes(1); expect(mockReportError).toHaveBeenCalledWith( diff --git a/src/checks/checkNoDependencies.ts b/src/checks/checkNoDependencies.ts index dfa36b67..0d8b8178 100644 --- a/src/checks/checkNoDependencies.ts +++ b/src/checks/checkNoDependencies.ts @@ -6,11 +6,12 @@ export function checkNoDependencies( pkgPath: string, type: DependencyTypes = 'dependencies', moveToSuggestion: DependencyTypes = 'devDependencies', + customCreateReportError = createReportError, ): void { const pkgDependencies = pkg[type]; if (!pkgDependencies) return; - const reportError = createReportError('No dependencies', pkgPath); + const reportError = customCreateReportError('No dependencies', pkgPath); reportError( `Unexpected ${type}`, `you should move them in ${moveToSuggestion}`, diff --git a/src/checks/checkPeerDependencies.ts b/src/checks/checkPeerDependencies.ts index 7da73db8..177803ea 100644 --- a/src/checks/checkPeerDependencies.ts +++ b/src/checks/checkPeerDependencies.ts @@ -27,7 +27,7 @@ export function checkPeerDependencies( if (versionsIn.length === 0) { const peerDependenciesMetaPeerDep = peerDependenciesMeta?.[peerDepName]; if (peerDependenciesMetaPeerDep?.optional) { - return; + continue; } reportError( `Missing "${peerDepName}" peer dependency from "${depPkg.name}" in ${type}`, diff --git a/src/checks/checkResolutionsHasExplanation.ts b/src/checks/checkResolutionsHasExplanation.ts index b91f1da4..76825d08 100644 --- a/src/checks/checkResolutionsHasExplanation.ts +++ b/src/checks/checkResolutionsHasExplanation.ts @@ -15,10 +15,11 @@ export function checkResolutionsHasExplanation( pkgPathName: string, checkMessage: CheckResolutionMessage, getDependencyPackageJson: GetDependencyPackageJson, + customCreateReportError = createReportError, ): void { const pkgResolutions = pkg.resolutions || {}; const pkgResolutionsExplained = pkg.resolutionsExplained || {}; - const reportError = createReportError( + const reportError = customCreateReportError( 'Resolutions has explanation', pkgPathName, ); diff --git a/src/checks/checkResolutionsVersionsMatch.test.ts b/src/checks/checkResolutionsVersionsMatch.test.ts index 6a794580..2626bbfc 100644 --- a/src/checks/checkResolutionsVersionsMatch.test.ts +++ b/src/checks/checkResolutionsVersionsMatch.test.ts @@ -1,17 +1,11 @@ -import { createReportError } from '../utils/createReportError'; import { checkResolutionsVersionsMatch } from './checkResolutionsVersionsMatch'; -jest.mock('../utils/createReportError', () => ({ - ...jest.requireActual('../utils/createReportError'), - createReportError: jest.fn(), -})); - -const mockReportError = jest.fn(); -(createReportError as ReturnType).mockReturnValue( - mockReportError, -); +const jest = import.meta.jest; describe('checkResolutionsVersionsMatch', () => { + const mockReportError = jest.fn(); + const createReportError = jest.fn().mockReturnValue(mockReportError); + beforeEach(() => { mockReportError.mockReset(); }); @@ -19,6 +13,7 @@ describe('checkResolutionsVersionsMatch', () => { checkResolutionsVersionsMatch( { name: 'test', devDependencies: { test: '1.0.0' } }, 'path', + { customCreateReportError: createReportError }, ); expect(mockReportError).not.toHaveBeenCalled(); }); @@ -27,6 +22,7 @@ describe('checkResolutionsVersionsMatch', () => { checkResolutionsVersionsMatch( { name: 'test', resolutions: { test: '1.0.0' } }, 'path', + { customCreateReportError: createReportError }, ); expect(mockReportError).not.toHaveBeenCalled(); }); @@ -40,6 +36,7 @@ describe('checkResolutionsVersionsMatch', () => { dependencies: { test2: '1.0.0', test3: '^1.0.0' }, }, 'path', + { customCreateReportError: createReportError }, ); expect(mockReportError).not.toHaveBeenCalled(); }); @@ -53,6 +50,7 @@ describe('checkResolutionsVersionsMatch', () => { dependencies: { test2: '1.2.0' }, }, 'path', + { customCreateReportError: createReportError }, ); expect(mockReportError).toHaveBeenCalledTimes(2); expect(mockReportError).toHaveBeenNthCalledWith( @@ -74,7 +72,10 @@ describe('checkResolutionsVersionsMatch', () => { devDependencies: { test1: '1.1.0' }, dependencies: { test2: '1.2.0' }, }; - checkResolutionsVersionsMatch(pkg, 'path', { tryToAutoFix: true }); + checkResolutionsVersionsMatch(pkg, 'path', { + customCreateReportError: createReportError, + tryToAutoFix: true, + }); expect(mockReportError).toHaveBeenCalledTimes(0); expect(pkg.devDependencies.test1).toBe('1.0.0'); diff --git a/src/checks/checkResolutionsVersionsMatch.ts b/src/checks/checkResolutionsVersionsMatch.ts index f39d1114..f62e5843 100644 --- a/src/checks/checkResolutionsVersionsMatch.ts +++ b/src/checks/checkResolutionsVersionsMatch.ts @@ -4,15 +4,19 @@ import type { PackageJson } from '../utils/packageTypes'; export interface CheckResolutionsVersionsMatchOptions { tryToAutoFix?: boolean; + customCreateReportError?: typeof createReportError; } export function checkResolutionsVersionsMatch( pkg: PackageJson, pkgPathName: string, - { tryToAutoFix }: CheckResolutionsVersionsMatchOptions = {}, + { + tryToAutoFix, + customCreateReportError = createReportError, + }: CheckResolutionsVersionsMatchOptions = {}, ): void { const pkgResolutions = pkg.resolutions || {}; - const reportError = createReportError( + const reportError = customCreateReportError( 'Resolutions match other dependencies', pkgPathName, ); diff --git a/src/checks/checkSatisfiesVersionsFromDependency.ts b/src/checks/checkSatisfiesVersionsFromDependency.ts index 1a95cc39..8f3e585e 100644 --- a/src/checks/checkSatisfiesVersionsFromDependency.ts +++ b/src/checks/checkSatisfiesVersionsFromDependency.ts @@ -11,9 +11,10 @@ export function checkSatisfiesVersionsFromDependency( depPkg: PackageJson, dependencies: PackageJson[DependencyTypes] = {}, onlyWarnsForCheck?: OnlyWarnsForCheck, + customCreateReportError = createReportError, ): void { const pkgDependencies = pkg[type] || {}; - const reportError = createReportError( + const reportError = customCreateReportError( `Satisfies Versions from ${depPkg.name}`, pkgPathName, ); diff --git a/src/utils/createGetDependencyPackageJson.test.ts b/src/utils/createGetDependencyPackageJson.test.ts index 046b790a..9a21fe7d 100644 --- a/src/utils/createGetDependencyPackageJson.test.ts +++ b/src/utils/createGetDependencyPackageJson.test.ts @@ -1,20 +1,24 @@ import type { PackageJson } from 'type-fest'; import { createGetDependencyPackageJson } from './createGetDependencyPackageJson'; -jest.mock('./createGetDependencyPackageJson', () => ({ - ...jest.requireActual('./createGetDependencyPackageJson'), - readPkgJson: jest.fn(), - writePkgJson: jest.fn(), - internalLoadPackageJsonFromNodeModules: jest.fn(), -})); +const jest = import.meta.jest; + +((jest as any).unstable_mockModule as typeof jest.mock)( + './pkgJsonUtils', + () => ({ + readPkgJson: jest.fn(), + writePkgJson: jest.fn(), + internalLoadPackageJsonFromNodeModules: jest.fn(), + }), +); describe('createGetDependencyPackageJson', () => { - test('on windows with error', () => { + test('on windows with error', async () => { const internalLoadPackageJsonFromNodeModulesMock = jest .fn() - .mockImplementation(() => { + .mockImplementationOnce(() => { const err: NodeJS.ErrnoException = new Error( - 'Package subpath \'./package.json\' is not defined by "exports" in C:\\test\\check-package-dependencies\\node_modules\\test1\\package.json', + 'Package subpath \'./package.json\' is not defined by "exports" in C:\\test\\check-package-dependencies\\node_modules\\test1\\package.json imported from C:\\test\\check-package-dependencies\\package.json', ); err.code = 'ERR_PACKAGE_PATH_NOT_EXPORTED'; @@ -32,7 +36,7 @@ describe('createGetDependencyPackageJson', () => { internalReadPkgJson: readPkgJsonMock as any, }); - const res = getDependencyPackageJson('test1'); + const res = await getDependencyPackageJson('test1'); expect(res).toBe(mockPkg); expect(internalLoadPackageJsonFromNodeModulesMock).toBeCalledWith( diff --git a/src/utils/createGetDependencyPackageJson.ts b/src/utils/createGetDependencyPackageJson.ts index d10512a7..36166e1e 100644 --- a/src/utils/createGetDependencyPackageJson.ts +++ b/src/utils/createGetDependencyPackageJson.ts @@ -1,26 +1,12 @@ -import { readFileSync, writeFileSync } from 'fs'; import type { PackageJson } from './packageTypes'; +import { + internalLoadPackageJsonFromNodeModules, + readPkgJson, +} from './pkgJsonUtils'; -export type GetDependencyPackageJson = (pkgDepName: string) => PackageJson; - -export function readPkgJson(packagePath: string): PackageJson { - return JSON.parse(readFileSync(packagePath, 'utf8')) as PackageJson; -} - -export function writePkgJson(packagePath: string, pkg: PackageJson): void { - writeFileSync(packagePath, JSON.stringify(pkg, null, 2)); -} - -/** @internal */ -export function internalLoadPackageJsonFromNodeModules( +export type GetDependencyPackageJson = ( pkgDepName: string, - pkgDirname: string, -): PackageJson { - // eslint-disable-next-line import/no-dynamic-require, @typescript-eslint/no-var-requires - return require(require.resolve(`${pkgDepName}/package.json`, { - paths: [pkgDirname], - })) as PackageJson; -} +) => Promise; type NodeModulesPackagePathCache = Map; @@ -39,7 +25,7 @@ export function createGetDependencyPackageJson({ internalCustomLoadPackageJsonFromNodeModules = internalLoadPackageJsonFromNodeModules, internalReadPkgJson = readPkgJson, }: CreateGetDependencyPackageJsonOptions): GetDependencyPackageJson { - return (pkgDepName) => { + return async (pkgDepName) => { const existing = nodeModulesPackagePathCache.get(pkgDepName); if (existing) return existing; let pkg: PackageJson; @@ -48,7 +34,7 @@ export function createGetDependencyPackageJson({ pkg = internalReadPkgJson(packagePath); } else { try { - pkg = internalCustomLoadPackageJsonFromNodeModules( + pkg = await internalCustomLoadPackageJsonFromNodeModules( pkgDepName, pkgDirname, ); @@ -62,7 +48,7 @@ export function createGetDependencyPackageJson({ throw err; } - const match = / in (.*[/\\]package.json)($|\simported from)/.exec( + const match = / in (.*[/\\]package\.json)\s+imported from/.exec( err.message, ); diff --git a/src/utils/createReportError.test.ts b/src/utils/createReportError.test.ts index ed2de761..9f362275 100644 --- a/src/utils/createReportError.test.ts +++ b/src/utils/createReportError.test.ts @@ -1,6 +1,8 @@ import { logMessage, reportNotWarnedForMapping } from './createReportError'; import { createOnlyWarnsForMappingCheck } from './warnForUtils'; +const jest = import.meta.jest; + describe('logMessage', () => { beforeEach(() => { jest.restoreAllMocks(); diff --git a/src/utils/pkgJsonUtils.ts b/src/utils/pkgJsonUtils.ts new file mode 100644 index 00000000..5989c84f --- /dev/null +++ b/src/utils/pkgJsonUtils.ts @@ -0,0 +1,28 @@ +import { readFileSync, writeFileSync } from 'fs'; +import { resolve as importResolve } from 'import-meta-resolve'; +import type { PackageJson } from './packageTypes'; + +export function readPkgJson(packagePath: string): PackageJson { + return JSON.parse(readFileSync(packagePath, 'utf8')) as PackageJson; +} + +export function writePkgJson(packagePath: string, pkg: PackageJson): void { + writeFileSync(packagePath, JSON.stringify(pkg, null, 2)); +} + +/** @internal */ +export async function internalLoadPackageJsonFromNodeModules( + pkgDepName: string, + pkgDirname: string, +): Promise { + const packageUrl = await importResolve( + `${pkgDepName}/package.json`, + `file://${pkgDirname}/package.json`, + ); + return readPkgJson( + packageUrl.replace( + process.platform === 'win32' ? /^file:\/{3}/ : /^file:\/\//, + '', + ), + ); +} diff --git a/yarn.lock b/yarn.lock index dece7151..514b87c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1091,10 +1091,10 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.0.3": - version: 3.0.7 - resolution: "@jridgewell/resolve-uri@npm:3.0.7" - checksum: 94f454f4cef8f0acaad85745fd3ca6cd0d62ef731cf9f952ecb89b8b2ce5e20998cd52be31311cedc5fa5b28b1708a15f3ad9df0fe1447ee4f42959b036c4b5b +"@jridgewell/resolve-uri@npm:3.1.0, @jridgewell/resolve-uri@npm:^3.0.3": + version: 3.1.0 + resolution: "@jridgewell/resolve-uri@npm:3.1.0" + checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 languageName: node linkType: hard @@ -1105,10 +1105,10 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.13 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.13" - checksum: f14449096f60a5f921262322fef65ce0bbbfb778080b3b20212080bcefdeba621c43a58c27065bd536ecb4cc767b18eb9c45f15b6b98a4970139572b60603a1c +"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": + version: 1.4.14 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" + checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 languageName: node linkType: hard @@ -1123,12 +1123,12 @@ __metadata: linkType: hard "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.15 - resolution: "@jridgewell/trace-mapping@npm:0.3.15" + version: 0.3.16 + resolution: "@jridgewell/trace-mapping@npm:0.3.16" dependencies: - "@jridgewell/resolve-uri": ^3.0.3 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 38917e9c2b014d469a9f51c016ed506acbe44dd16ec2f6f99b553ebf3764d22abadbf992f2367b6d2b3511f3eae8ed3a8963f6c1030093fda23efd35ecab2bae + "@jridgewell/resolve-uri": 3.1.0 + "@jridgewell/sourcemap-codec": 1.4.14 + checksum: 881fa21ce066ab5e9c23991ac435dfae2ac8ffa74510379a028b0d002437b48a50464369436c5d242b6e648eec17f77003c73c1f54325cfcd8824967c2356910 languageName: node linkType: hard @@ -2508,6 +2508,7 @@ __metadata: chalk: ^4.1.0 eslint: 8.28.0 glob: ^8.0.0 + import-meta-resolve: ^2.1.0 jest: 29.3.1 pob-babel: 34.1.0 semver: ^7.3.4 @@ -4019,6 +4020,13 @@ __metadata: languageName: node linkType: hard +"import-meta-resolve@npm:^2.1.0": + version: 2.1.0 + resolution: "import-meta-resolve@npm:2.1.0" + checksum: 4554ea5e2daecbdeb7ebe4df23ced97e6a64ad41ed26889b3c86ed896830dbbe63889c8fad49b7dea76c0f9aad46f7d32412fa727c335e11f3cc79f63a91f8e1 + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4"