summaryrefslogtreecommitdiff
path: root/deps/npm/lib/install/copy-tree.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/lib/install/copy-tree.js')
-rw-r--r--deps/npm/lib/install/copy-tree.js17
1 files changed, 9 insertions, 8 deletions
diff --git a/deps/npm/lib/install/copy-tree.js b/deps/npm/lib/install/copy-tree.js
index 2bf7064f33..a5b558cf59 100644
--- a/deps/npm/lib/install/copy-tree.js
+++ b/deps/npm/lib/install/copy-tree.js
@@ -1,26 +1,27 @@
'use strict'
var createNode = require('./node.js').create
-module.exports = function (tree) {
- return copyTree(tree, {})
+module.exports = function (tree, filter) {
+ return copyTree(tree, {}, filter)
}
-function copyTree (tree, cache) {
+function copyTree (tree, cache, filter) {
+ if (filter && !filter(tree)) { return null }
if (cache[tree.path]) { return cache[tree.path] }
var newTree = cache[tree.path] = createNode(Object.assign({}, tree))
- copyModuleList(newTree, 'children', cache)
+ copyModuleList(newTree, 'children', cache, filter)
newTree.children.forEach(function (child) {
child.parent = newTree
})
- copyModuleList(newTree, 'requires', cache)
- copyModuleList(newTree, 'requiredBy', cache)
+ copyModuleList(newTree, 'requires', cache, filter)
+ copyModuleList(newTree, 'requiredBy', cache, filter)
return newTree
}
-function copyModuleList (tree, key, cache) {
+function copyModuleList (tree, key, cache, filter) {
var newList = []
if (tree[key]) {
tree[key].forEach(function (child) {
- const copy = copyTree(child, cache)
+ const copy = copyTree(child, cache, filter)
if (copy) {
newList.push(copy)
}