UNPKG

update-deep-copy

Version:
36 lines (27 loc) 1.14 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var clone = require("lodash.clonedeep"); module.exports = function (object, changeSet) { var cloneObject = clone(object); return changeSet ? update(cloneObject, changeSet) : cloneObject; }; function update(obj, changeSet) { var updateReduce = function updateReduce(state, key) { var change = changeSet[key]; if (typeof change === "undefined") { delete state[key]; return state; } if (!change) { state[key] = change; return state; } if (_typeof(change) === "object" && !Array.isArray(change)) { state[key] = update(state[key], change); return state; } state[key] = clone(change); return state; }; return Object.keys(changeSet).reduce(updateReduce, obj || {}); }