summaryrefslogtreecommitdiff
path: root/tools/node_modules/babel-eslint/node_modules/@babel/types/lib/clone/cloneDeep.js
blob: 4212edd2bc748283c155d2153ce98c64fdb55c79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"use strict";

exports.__esModule = true;
exports.default = cloneDeep;

function cloneDeep(node) {
  if (!node) return node;
  var newNode = {};
  Object.keys(node).forEach(function (key) {
    if (key[0] === "_") return;
    var val = node[key];

    if (val) {
      if (val.type) {
        val = cloneDeep(val);
      } else if (Array.isArray(val)) {
        val = val.map(cloneDeep);
      }
    }

    newNode[key] = val;
  });
  return newNode;
}