node/deps/npm/lib/install/is-extraneous.js
Kat Marchán c58cea5a16
deps: upgrade npm to 5.0.0
PR-URL: https://github.com/nodejs/node/pull/13276
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
2017-05-29 18:06:04 +02:00

28 lines
618 B
JavaScript

'use strict'
module.exports = isExtraneous
function isExtraneous (tree) {
var result = !isNotExtraneous(tree)
return result
}
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 (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))
})
}
}