diff options
Diffstat (limited to 'deps/node/deps/npm/lib/install/action/extract.js')
-rw-r--r-- | deps/node/deps/npm/lib/install/action/extract.js | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/deps/node/deps/npm/lib/install/action/extract.js b/deps/node/deps/npm/lib/install/action/extract.js deleted file mode 100644 index c1c17cdf..00000000 --- a/deps/node/deps/npm/lib/install/action/extract.js +++ /dev/null @@ -1,139 +0,0 @@ -'use strict' - -const BB = require('bluebird') - -const figgyPudding = require('figgy-pudding') -const stat = BB.promisify(require('graceful-fs').stat) -const gentlyRm = BB.promisify(require('../../utils/gently-rm.js')) -const mkdirp = BB.promisify(require('mkdirp')) -const moduleStagingPath = require('../module-staging-path.js') -const move = require('../../utils/move.js') -const npa = require('npm-package-arg') -const npm = require('../../npm.js') -let npmConfig -const packageId = require('../../utils/package-id.js') -const path = require('path') -const localWorker = require('./extract-worker.js') -const workerFarm = require('worker-farm') -const isRegistry = require('../../utils/is-registry.js') - -const WORKER_PATH = require.resolve('./extract-worker.js') -let workers - -const ExtractOpts = figgyPudding({ - log: {} -}, { other () { return true } }) - -// Disabled for now. Re-enable someday. Just not today. -const ENABLE_WORKERS = false - -extract.init = () => { - if (ENABLE_WORKERS) { - workers = workerFarm({ - maxConcurrentCallsPerWorker: npm.limit.fetch, - maxRetries: 1 - }, WORKER_PATH) - } - return BB.resolve() -} -extract.teardown = () => { - if (ENABLE_WORKERS) { - workerFarm.end(workers) - workers = null - } - return BB.resolve() -} -module.exports = extract -function extract (staging, pkg, log) { - log.silly('extract', packageId(pkg)) - const extractTo = moduleStagingPath(staging, pkg) - if (!npmConfig) { - npmConfig = require('../../config/figgy-config.js') - } - let opts = ExtractOpts(npmConfig()).concat({ - integrity: pkg.package._integrity, - resolved: pkg.package._resolved - }) - const args = [ - pkg.package._requested, - extractTo, - opts - ] - return BB.fromNode((cb) => { - let launcher = localWorker - let msg = args - const spec = typeof args[0] === 'string' ? npa(args[0]) : args[0] - args[0] = spec.raw - if (ENABLE_WORKERS && (isRegistry(spec) || spec.type === 'remote')) { - // We can't serialize these options - opts = opts.concat({ - loglevel: opts.log.level, - log: null, - dirPacker: null, - Promise: null, - _events: null, - _eventsCount: null, - list: null, - sources: null, - _maxListeners: null, - root: null - }) - // workers will run things in parallel! - launcher = workers - try { - msg = JSON.stringify(msg) - } catch (e) { - return cb(e) - } - } - launcher(msg, cb) - }).then(() => { - if (pkg.package.bundleDependencies || anyBundled(pkg)) { - return readBundled(pkg, staging, extractTo) - } - }).then(() => { - return gentlyRm(path.join(extractTo, 'node_modules')) - }) -} - -function anyBundled (top, pkg) { - if (!pkg) pkg = top - return pkg.children.some((child) => child.fromBundle === top || anyBundled(top, child)) -} - -function readBundled (pkg, staging, extractTo) { - return BB.map(pkg.children, (child) => { - if (!child.fromBundle) return - if (child.error) { - throw child.error - } else { - return stageBundledModule(pkg, child, staging, extractTo) - } - }, {concurrency: 10}) -} - -function stageBundledModule (bundler, child, staging, parentPath) { - const stageFrom = path.join(parentPath, 'node_modules', child.package.name) - const stageTo = moduleStagingPath(staging, child) - - return BB.map(child.children, (child) => { - if (child.error) { - throw child.error - } else { - return stageBundledModule(bundler, child, staging, stageFrom) - } - }).then(() => { - return finishModule(bundler, child, stageTo, stageFrom) - }) -} - -function finishModule (bundler, child, stageTo, stageFrom) { - // If we were the one's who bundled this moduleā¦ - if (child.fromBundle === bundler) { - return mkdirp(path.dirname(stageTo)).then(() => { - return move(stageFrom, stageTo) - }) - } else { - return stat(stageFrom).then(() => gentlyRm(stageFrom), () => {}) - } -} |