'use strict'
var createNode = require('./node.js').create
module.exports = function (tree, filter) {
return copyTree(tree, {}, filter)
}
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, filter)
newTree.children.forEach(function (child) {
child.parent = newTree
})
copyModuleList(newTree, 'requires', cache, filter)
copyModuleList(newTree, 'requiredBy', cache, filter)
return newTree
}
function copyModuleList (tree, key, cache, filter) {
var newList = []
if (tree[key]) {
tree[key].forEach(function (child) {
const copy = copyTree(child, cache, filter)
if (copy) {
newList.push(copy)
}
})
}
tree[key] = newList
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| action | Folder | 0755 |
|
|
| access-error.js | File | 202 B | 0644 |
|
| actions.js | File | 5.52 KB | 0644 |
|
| and-add-parent-to-errors.js | File | 324 B | 0644 |
|
| and-finish-tracker.js | File | 360 B | 0644 |
|
| and-ignore-errors.js | File | 204 B | 0644 |
|
| check-permissions.js | File | 1.85 KB | 0644 |
|
| copy-tree.js | File | 881 B | 0644 |
|
| decompose-actions.js | File | 1.81 KB | 0644 |
|
| deps.js | File | 26.41 KB | 0644 |
|
| diff-trees.js | File | 8.52 KB | 0644 |
|
| exists.js | File | 775 B | 0644 |
|
| flatten-tree.js | File | 1021 B | 0644 |
|
| get-requested.js | File | 427 B | 0644 |
|
| inflate-bundled.js | File | 628 B | 0644 |
|
| inflate-shrinkwrap.js | File | 7.24 KB | 0644 |
|
| is-dev-dep.js | File | 175 B | 0644 |
|
| is-extraneous.js | File | 618 B | 0644 |
|
| is-fs-access-available.js | File | 763 B | 0644 |
|
| is-only-dev.js | File | 1.19 KB | 0644 |
|
| is-only-optional.js | File | 462 B | 0644 |
|
| is-opt-dep.js | File | 185 B | 0644 |
|
| is-prod-dep.js | File | 172 B | 0644 |
|
| module-staging-path.js | File | 259 B | 0644 |
|
| mutate-into-logical-tree.js | File | 4.52 KB | 0644 |
|
| node.js | File | 1.85 KB | 0644 |
|
| read-shrinkwrap.js | File | 1.97 KB | 0644 |
|
| realize-shrinkwrap-specifier.js | File | 621 B | 0644 |
|
| report-optional-failure.js | File | 1.02 KB | 0644 |
|
| save.js | File | 5.6 KB | 0644 |
|
| update-package-json.js | File | 1.87 KB | 0644 |
|
| validate-args.js | File | 2.45 KB | 0644 |
|
| validate-tree.js | File | 3.1 KB | 0644 |
|
| writable.js | File | 1 KB | 0644 |
|