From 21931c358d9124b3833cfd4fca8b0706b7cefa22 Mon Sep 17 00:00:00 2001 From: abnud1 Date: Tue, 24 Mar 2020 21:51:18 +0200 Subject: [PATCH] fixed bug: timeout wasn't passed to pacote also requests to check updates for dependencies are now made in batches instead of making all of them at once resulting in default timeout being exeeded when number of dependencies is big modified: lib/package-managers/npm.js modified: lib/versionmanager.js modified: package-lock.json modified: package.json --- lib/package-managers/npm.js | 2 +- lib/versionmanager.js | 5 +++-- package-lock.json | 16 +++++++++++++--- package.json | 1 + 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/lib/package-managers/npm.js b/lib/package-managers/npm.js index 50b9be1d..5fd748f3 100644 --- a/lib/package-managers/npm.js +++ b/lib/package-managers/npm.js @@ -70,7 +70,7 @@ function viewMany(packageName, fields, currentVersion, {timeout} = {}) { npmConfig.fullMetadata = _.includes(fields, 'time'); - return pacote.packument(packageName, Object.assign({}, npmConfig, timeout)).then(result => + return pacote.packument(packageName, Object.assign({}, npmConfig, {timeout})).then(result => fields.reduce((accum, field) => Object.assign( accum, { diff --git a/lib/versionmanager.js b/lib/versionmanager.js index 7dcff55b..e259a81e 100644 --- a/lib/versionmanager.js +++ b/lib/versionmanager.js @@ -7,7 +7,8 @@ const ProgressBar = require('progress'); const versionUtil = require('./version-util.js'); const packageManagers = require('./package-managers'); const prompts = require('prompts'); - +const pMap = require('p-map'); +const os = require('os'); // keep order for setPrecision const DEFAULT_WILDCARD = '^'; @@ -456,7 +457,7 @@ function queryVersions(packageMap, options = {}) { }); } - return Promise.all(packageList.map(getPackageVersionProtected)) + return pMap(packageList,getPackageVersionProtected,{concurrency: os.cpus().length}) .then(zipVersions) .then(_.partialRight(_.pickBy, _.identity)); } diff --git a/package-lock.json b/package-lock.json index facb6a9a..c32bb5df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -884,6 +884,16 @@ "ssri": "^8.0.0", "tar": "^6.0.1", "unique-filename": "^1.1.1" + }, + "dependencies": { + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + } } }, "cacheable-request": { @@ -3635,9 +3645,9 @@ } }, "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "requires": { "aggregate-error": "^3.0.0" } diff --git a/package.json b/package.json index a8fa617f..158d9693 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "libnpmconfig": "^1.2.1", "lodash": "^4.17.15", "node-alias": "^1.0.4", + "p-map": "^4.0.0", "pacote": "^11.1.0", "progress": "^2.0.3", "prompts": "^2.3.1",