Blame view
node_modules/es5-ext/object/copy-deep.js
939 Bytes
f7563de62
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
'use strict'; var forEach = require('./for-each') , isPlainObject = require('./is-plain-object') , value = require('./valid-value') , isArray = Array.isArray , copy, copyItem; copyItem = function (value, key) { var index; if (!isPlainObject(value) && !isArray(value)) return value; index = this[0].indexOf(value); if (index === -1) return copy.call(this, value); return this[1][index]; }; copy = function (source) { var target = isArray(source) ? [] : {}; this[0].push(source); this[1].push(target); if (isArray(source)) { source.forEach(function (value, key) { target[key] = copyItem.call(this, value, key); }, this); } else { forEach(source, function (value, key) { target[key] = copyItem.call(this, value, key); }, this); } return target; }; module.exports = function (source) { var obj = Object(value(source)); if (obj !== source) return obj; return copy.call([[], []], obj); }; |