diff --git a/package-lock.json b/package-lock.json index a37f80d..bf6c966 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "inquirer": "7.3.3", "libnpmconfig": "1.2.1", "lodash": "4.17.21", - "npm-check-updates": "11.4.0", + "npm-check-updates": "11.5.3", "open": "7.4.2", "pacote": "11.2.7", "semver": "7.3.4", @@ -6226,9 +6226,9 @@ } }, "node_modules/mem": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.0.tgz", - "integrity": "sha512-FIkgXo0kTi3XpvaznV5Muk6Y6w8SkdmRXcY7ZLonQesuYezp59UooLxAVBcGuN6PH2tXN84mR3vyzSc6oSMUfA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", + "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", "dependencies": { "map-age-cleaner": "^0.1.3", "mimic-fn": "^3.1.0" @@ -6621,11 +6621,11 @@ } }, "node_modules/npm-check-updates": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-11.4.0.tgz", - "integrity": "sha512-AZHhgOrH7CUIopbuveCTOae1a9lheH1qgjKJgOXl+f6f0HAn4ps5dYLJGr2+E+tn8/9mC0ani4ilHmmCXMTkfg==", + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-11.5.3.tgz", + "integrity": "sha512-/HCLL3BdTp8X9H7M/LxKkkpPAaLvXeSt5HAW4BLqt+I6Hd68itVYqg4CGhivm/64sQ2CCfRjXxOpXAU2GwxwAA==", "dependencies": { - "chalk": "^4.1.0", + "chalk": "^4.1.1", "cint": "^8.2.1", "cli-table": "^0.3.6", "commander": "^6.2.1", @@ -6638,10 +6638,10 @@ "jsonlines": "^0.1.1", "libnpmconfig": "^1.2.1", "lodash": "^4.17.21", - "mem": "^8.1.0", + "mem": "^8.1.1", "minimatch": "^3.0.4", "p-map": "^4.0.0", - "pacote": "^11.3.1", + "pacote": "^11.3.3", "parse-github-url": "^1.0.2", "progress": "^2.0.3", "prompts": "^2.4.1", @@ -6661,6 +6661,21 @@ "node": ">=10.17" } }, + "node_modules/npm-check-updates/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/npm-check-updates/node_modules/cli-table": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", @@ -6706,6 +6721,23 @@ "node": ">=10" } }, + "node_modules/npm-check-updates/node_modules/npm-registry-fetch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-10.1.1.tgz", + "integrity": "sha512-F6a3l+ffCQ7hvvN16YG5bpm1rPZntCg66PLHDQ1apWJPOCUVHoKnL2w5fqEaTVhp42dmossTyXeR7hTGirfXrg==", + "dependencies": { + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-check-updates/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -6729,9 +6761,9 @@ } }, "node_modules/npm-check-updates/node_modules/pacote": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.1.tgz", - "integrity": "sha512-TymtwoAG12cczsJIrwI/euOQKtjrQHlD0k0oyt9QSmZGpqa+KdlxKdWR/YUjYizkixaVyztxt/Wsfo8bL3A6Fg==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.3.tgz", + "integrity": "sha512-GQxBX+UcVZrrJRYMK2HoG+gPeSUX/rQhnbPkkGrCYa4n2F/bgClFPaMm0nsdnYrxnmUy85uMHoFXZ0jTD0drew==", "dependencies": { "@npmcli/git": "^2.0.1", "@npmcli/installed-package-contents": "^1.0.6", @@ -6746,7 +6778,7 @@ "npm-package-arg": "^8.0.1", "npm-packlist": "^2.1.4", "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^9.0.0", + "npm-registry-fetch": "^10.0.0", "promise-retry": "^2.0.1", "read-package-json-fast": "^2.0.1", "rimraf": "^3.0.2", @@ -15098,9 +15130,9 @@ } }, "mem": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.0.tgz", - "integrity": "sha512-FIkgXo0kTi3XpvaznV5Muk6Y6w8SkdmRXcY7ZLonQesuYezp59UooLxAVBcGuN6PH2tXN84mR3vyzSc6oSMUfA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", + "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", "requires": { "map-age-cleaner": "^0.1.3", "mimic-fn": "^3.1.0" @@ -15404,11 +15436,11 @@ } }, "npm-check-updates": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-11.4.0.tgz", - "integrity": "sha512-AZHhgOrH7CUIopbuveCTOae1a9lheH1qgjKJgOXl+f6f0HAn4ps5dYLJGr2+E+tn8/9mC0ani4ilHmmCXMTkfg==", + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-11.5.3.tgz", + "integrity": "sha512-/HCLL3BdTp8X9H7M/LxKkkpPAaLvXeSt5HAW4BLqt+I6Hd68itVYqg4CGhivm/64sQ2CCfRjXxOpXAU2GwxwAA==", "requires": { - "chalk": "^4.1.0", + "chalk": "^4.1.1", "cint": "^8.2.1", "cli-table": "^0.3.6", "commander": "^6.2.1", @@ -15421,10 +15453,10 @@ "jsonlines": "^0.1.1", "libnpmconfig": "^1.2.1", "lodash": "^4.17.21", - "mem": "^8.1.0", + "mem": "^8.1.1", "minimatch": "^3.0.4", "p-map": "^4.0.0", - "pacote": "^11.3.1", + "pacote": "^11.3.3", "parse-github-url": "^1.0.2", "progress": "^2.0.3", "prompts": "^2.4.1", @@ -15437,6 +15469,15 @@ "update-notifier": "^5.1.0" }, "dependencies": { + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "cli-table": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", @@ -15470,6 +15511,20 @@ "p-locate": "^5.0.0" } }, + "npm-registry-fetch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-10.1.1.tgz", + "integrity": "sha512-F6a3l+ffCQ7hvvN16YG5bpm1rPZntCg66PLHDQ1apWJPOCUVHoKnL2w5fqEaTVhp42dmossTyXeR7hTGirfXrg==", + "requires": { + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + } + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -15487,9 +15542,9 @@ } }, "pacote": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.1.tgz", - "integrity": "sha512-TymtwoAG12cczsJIrwI/euOQKtjrQHlD0k0oyt9QSmZGpqa+KdlxKdWR/YUjYizkixaVyztxt/Wsfo8bL3A6Fg==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.3.tgz", + "integrity": "sha512-GQxBX+UcVZrrJRYMK2HoG+gPeSUX/rQhnbPkkGrCYa4n2F/bgClFPaMm0nsdnYrxnmUy85uMHoFXZ0jTD0drew==", "requires": { "@npmcli/git": "^2.0.1", "@npmcli/installed-package-contents": "^1.0.6", @@ -15504,7 +15559,7 @@ "npm-package-arg": "^8.0.1", "npm-packlist": "^2.1.4", "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^9.0.0", + "npm-registry-fetch": "^10.0.0", "promise-retry": "^2.0.1", "read-package-json-fast": "^2.0.1", "rimraf": "^3.0.2", diff --git a/package.json b/package.json index c4c380a..2b8b949 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "inquirer": "7.3.3", "libnpmconfig": "1.2.1", "lodash": "4.17.21", - "npm-check-updates": "11.4.0", + "npm-check-updates": "11.5.3", "open": "7.4.2", "pacote": "11.2.7", "semver": "7.3.4", diff --git a/src/commands/check.js b/src/commands/check.js index 263cf6c..efd3db1 100644 --- a/src/commands/check.js +++ b/src/commands/check.js @@ -75,18 +75,25 @@ export const handler = catchAsyncError(async opts => { .filter(({name}) => opts[name]) .map(({ncuValue}) => ncuValue) .join(','); + const currentVersions = ncu.getCurrentDependencies(packageJson, {dep: ncuDepGroups}); const peerDependencies = ncu.getPeerDependencies(currentVersions, {}); - const compatibleVersions = await ncu.queryVersions(currentVersions, {versionTarget: 'latest', peerDependencies}); - const latestVersions = await ncu.queryVersions(currentVersions, {versionTarget: 'latest', loglevel: 'silent'}); - + const [upgradedCompatibleVersionsFull, compatibleVersions, upgradedPeerDependencies] = + await ncu.upgradePackageDefinitions( + currentVersions, + {versionTarget: 'latest', peer: true, peerDependencies} + ); + const [upgradedLatestVersionsFull, latestVersions] = await ncu.upgradePackageDefinitions( + currentVersions, + {versionTarget: 'latest', loglevel: 'silent'} + ); // Filtering modules that have to be updated const upgradedLatestVersions = _.pickBy( - ncu.upgradeDependencies(currentVersions, latestVersions), + upgradedLatestVersionsFull, (newVersion, moduleName) => filterModuleName(moduleName) ); const upgradedCompatibleVersions = _.pickBy( - ncu.upgradeDependencies(currentVersions, compatibleVersions), + upgradedCompatibleVersionsFull, (newVersion, moduleName) => filterModuleName(moduleName) ); @@ -135,10 +142,15 @@ export const handler = catchAsyncError(async opts => { if (!_.isEmpty(incompatibleVersions)) { const rows = _.map(Object.entries(incompatibleVersions), ([name, to]) => [ strong(name), - currentVersions[name], '→', colorizeDiff(currentVersions[name], to) + currentVersions[name], '→', colorizeDiff(currentVersions[name], to), + 'reason: ' + Object.entries(upgradedPeerDependencies) + .filter(([, peers]) => peers[name] !== undefined && !semver.satisfies(latestVersions[name], peers[name])) + .map(([pkg, peers]) => pkg + ' requires ' + peers[name]) + .join(', ') ]); - console.log(`\n${strong('Ignored incompatible updates (peer dependencies):')}\n\n${createSimpleTable(rows)}`); + console.log(`\n${strong('Ignored incompatible updates (peer dependencies):')}\n`); + console.log(`\n${createSimpleTable(rows, {colAligns: 'lrrrl'})}`); } if (!_.isEmpty(ignoredModules)) {