diff options
author | Rebecca Turner <me@re-becca.org> | 2016-06-24 13:43:51 -0700 |
---|---|---|
committer | Jeremiah Senkpiel <fishrock123@rocketmail.com> | 2016-06-27 11:46:15 +0200 |
commit | d538811fc8b920f3f36d5f21a4c23e270367ceb0 (patch) | |
tree | 11cee6c00aa843f16a71819039396f80bf6abe22 /deps/npm/lib/install/is-extraneous.js | |
parent | 1db31a34948eee311abd9881bbf5d906d0cd678b (diff) | |
download | node-new-d538811fc8b920f3f36d5f21a4c23e270367ceb0.tar.gz |
deps: upgrade npm to 3.10.2
Contains the following npm releases:
- https://github.com/npm/npm/releases/tag/v3.9.6
- https://github.com/npm/npm/releases/tag/v3.10.0
- https://github.com/npm/npm/releases/tag/v3.10.1
- https://github.com/npm/npm/releases/tag/v3.10.2
PR-URL: https://github.com/nodejs/node/pull/7410
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Diffstat (limited to 'deps/npm/lib/install/is-extraneous.js')
-rw-r--r-- | deps/npm/lib/install/is-extraneous.js | 47 |
1 files changed, 35 insertions, 12 deletions
diff --git a/deps/npm/lib/install/is-extraneous.js b/deps/npm/lib/install/is-extraneous.js index cd4d954668..f0d599965f 100644 --- a/deps/npm/lib/install/is-extraneous.js +++ b/deps/npm/lib/install/is-extraneous.js @@ -1,14 +1,37 @@ 'use strict' -var path = require('path') -var isDev = require('./is-dev.js').isDev -var npm = require('../npm.js') - -module.exports = function (tree) { - var pkg = tree.package - var requiredBy = pkg._requiredBy.filter(function (req) { return req[0] !== '#' }) - var isTopLevel = tree.parent == null - var isChildOfTop = !isTopLevel && tree.parent.parent == null - var isTopGlobal = isChildOfTop && tree.parent.path === path.resolve(npm.globalDir, '..') - var topHasNoPackageJson = isChildOfTop && tree.parent.error - return !isTopLevel && (!isChildOfTop || !topHasNoPackageJson) && !isTopGlobal && requiredBy.length === 0 && !isDev(tree) +module.exports = isExtraneous + +function isExtraneous (tree) { + var result = !isNotExtraneous(tree) + return result +} + +function isNotRequired (tree) { + return tree.requiredBy && tree.requiredBy.length === 0 +} + +function parentHasNoPjson (tree) { + return tree.parent && tree.parent.isTop && tree.parent.error +} + +function topHasNoPjson (tree) { + var top = tree + while (!top.isTop) top = top.parent + return top.error +} + +function isNotExtraneous (tree, isCycle) { + if (!isCycle) isCycle = {} + if (tree.isTop || tree.userRequired) { + return true + } else if (isNotRequired(tree) && parentHasNoPjson(tree)) { + return true + } else if (isCycle[tree.path]) { + return topHasNoPjson(tree) + } else { + isCycle[tree.path] = true + return tree.requiredBy && tree.requiredBy.some(function (node) { + return isNotExtraneous(node, Object.create(isCycle)) + }) + } } |