123456789101112131415161718192021222324252627282930 |
- 'use strict'
- var createNode = require('./node.js').create
- module.exports = function (tree) {
- return copyTree(tree, {})
- }
- function copyTree (tree, cache) {
- if (cache[tree.path]) { return cache[tree.path] }
- var newTree = cache[tree.path] = createNode(Object.assign({}, tree))
- copyModuleList(newTree, 'children', cache)
- newTree.children.forEach(function (child) {
- child.parent = newTree
- })
- copyModuleList(newTree, 'requires', cache)
- copyModuleList(newTree, 'requiredBy', cache)
- return newTree
- }
- function copyModuleList (tree, key, cache) {
- var newList = []
- if (tree[key]) {
- tree[key].forEach(function (child) {
- const copy = copyTree(child, cache)
- if (copy) {
- newList.push(copy)
- }
- })
- }
- tree[key] = newList
- }
|