Heray-Was-Here
Server : Apache
System : Linux vps43555.mylogin.co 3.10.0-1160.53.1.vz7.185.3 #1 SMP Tue Jan 25 12:49:12 MSK 2022 x86_64
User : redsea ( 60651)
PHP Version : 7.4.32
Disable Function : NONE
Directory :  /usr/lib/node_modules/gulp-cli/lib/shared/log/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/lib/node_modules/gulp-cli/lib/shared/log/copy-tree.js
'use strict';

function copyNode(node) {
  var newNode = {};
  Object.keys(node).forEach(function(key) {
    newNode[key] = node[key];
  });
  return newNode;
}

var defaultNodeFactory = {
  topNode: copyNode,
  taskNode: copyNode,
  childNode: copyNode,
};

function copyTree(tree, opts, nodeFactory) {
  opts = opts || {};

  var depth = opts.tasksDepth;
  depth = typeof depth === 'number' ? ((depth < 1) ? 1 : depth) : null;

  nodeFactory = nodeFactory || defaultNodeFactory;

  var newTree = nodeFactory.topNode(tree);
  newTree.nodes = [];

  if (Array.isArray(tree.nodes)) {
    tree.nodes.forEach(visit);
  }

  function visit(node) {
    var newNode = nodeFactory.taskNode(node);
    newNode.nodes = [];
    newTree.nodes.push(newNode);

    if (opts.compactTasks) {
      forEach(node.nodes, copyNotRecursively, newNode);

    } else if (!depth || depth > 1) {
      forEach(node.nodes, copyRecursively, depth, 2, newNode);
    }
  }

  function copyNotRecursively(child, newParent) {
    var newChild = nodeFactory.childNode(child);
    newChild.nodes = [];
    newParent.nodes.push(newChild);

    if (child.branch) {
      forEach(child.nodes, copyNotRecursively, newChild);
    }
  }

  function copyRecursively(child, maxDepth, nowDepth, newParent) {
    var newChild = nodeFactory.childNode(child);
    newChild.nodes = [];
    newParent.nodes.push(newChild);

    if (!maxDepth || maxDepth > nowDepth) {
      forEach(child.nodes, copyRecursively, maxDepth, nowDepth + 1, newChild);
    }
  }

  return newTree;
}

function forEach(nodes, fn) {
  if (!Array.isArray(nodes)) {
    return;
  }

  var args = Array.prototype.slice.call(arguments, 2);

  for (var i = 0, n = nodes.length; i < n; i++) {
    fn.apply(nodes[i], [nodes[i]].concat(args));
  }
}

module.exports = copyTree;


Hry