| 123456789101112131415161718192021222324252627282930 | 'use strict'var createNode = require('./node.js').createmodule.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}
 |