UNPKG

fzo

Version:

fzo is simply freeze object library

61 lines (49 loc) 4.94 kB
/** * @license * fzo.js v0.1.3 * Released under the Apache License 2.0 License. **/ 'use strict'; function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } var fzo = function fzo(obj) { if (_typeof(obj) === 'object' && !Object.isFrozen(obj)) { Object.keys(obj).forEach(function (idx) { return fzo(obj[idx]); }); Object.freeze(obj); } else { return; } return obj; }; var shallowClone = function shallowClone(obj) { return Object.assign({}, obj); }; var deepClone = function deepClone(value) { var newObj; Array.isArray(value) ? newObj = value : newObj = shallowClone(value); if (Array.isArray(newObj)) { newObj = JSON.parse(JSON.stringify(newObj)); return newObj; } else { Object.keys(newObj).filter(function (k) { return _typeof(newObj[k]) === 'object'; }).forEach(function (k) { return newObj[k] = deepClone(newObj[k]); }); return newObj; } }; var src = Object.freeze({ fzo: fzo, deepClone: deepClone }); module.exports = src; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnpvLmNqcy5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2Z6by5qcyIsIi4uL3NyYy9kZWVwQ2xvbmUuanMiLCIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmem8ob2JqKSB7XHJcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmICFPYmplY3QuaXNGcm96ZW4ob2JqKSkge1xyXG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKChpZHgpID0+IGZ6byhvYmpbaWR4XSkpO1xyXG4gICAgT2JqZWN0LmZyZWV6ZShvYmopO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIHJldHVybiBvYmo7XHJcbn07XHJcbiIsImNvbnN0IHNoYWxsb3dDbG9uZSA9IChvYmopID0+IHtcclxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTtcclxufTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGVlcENsb25lKHZhbHVlKSB7XHJcbiAgbGV0IG5ld09iajtcclxuICBBcnJheS5pc0FycmF5KHZhbHVlKSA/IChuZXdPYmogPSB2YWx1ZSkgOiAobmV3T2JqID0gc2hhbGxvd0Nsb25lKHZhbHVlKSk7XHJcblxyXG4gIGlmIChBcnJheS5pc0FycmF5KG5ld09iaikpIHtcclxuICAgIG5ld09iaiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobmV3T2JqKSk7XHJcbiAgICByZXR1cm4gbmV3T2JqO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBPYmplY3Qua2V5cyhuZXdPYmopXHJcbiAgICAgIC5maWx0ZXIoKGspID0+IHR5cGVvZiBuZXdPYmpba10gPT09ICdvYmplY3QnKVxyXG4gICAgICAuZm9yRWFjaCgoaykgPT4gKG5ld09ialtrXSA9IGRlZXBDbG9uZShuZXdPYmpba10pKSk7XHJcbiAgICByZXR1cm4gbmV3T2JqO1xyXG4gIH1cclxufTtcclxuIiwibW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZnJlZXplKHtcclxuICBmem86IHJlcXVpcmUoJy4vZnpvJyksXHJcbiAgZGVlcENsb25lOiByZXF1aXJlKCcuL2RlZXBDbG9uZScpLFxyXG59KTtcclxuIl0sIm5hbWVzIjpbImZ6byIsIm9iaiIsIk9iamVjdCIsImlzRnJvemVuIiwia2V5cyIsImZvckVhY2giLCJpZHgiLCJmcmVlemUiLCJzaGFsbG93Q2xvbmUiLCJhc3NpZ24iLCJkZWVwQ2xvbmUiLCJ2YWx1ZSIsIm5ld09iaiIsIkFycmF5IiwiaXNBcnJheSIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImZpbHRlciIsImsiLCJzcmMiLCJyZXF1aXJlJCQwIiwicmVxdWlyZSQkMSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLEdBQWMsR0FBRyxTQUFTQSxHQUFULENBQWFDLEdBQWIsRUFBa0I7QUFDakMsRUFBQSxJQUFJLE9BQU9BLENBQUFBLEdBQVAsQ0FBZSxLQUFBLFFBQWYsSUFBMkIsQ0FBQ0MsTUFBTSxDQUFDQyxRQUFQLENBQWdCRixHQUFoQixDQUFoQyxFQUFzRDtBQUNwREMsSUFBQUEsTUFBTSxDQUFDRSxJQUFQLENBQVlILEdBQVosQ0FBaUJJLENBQUFBLE9BQWpCLENBQXlCLFVBQUNDLEdBQUQsRUFBQTtBQUFBLE1BQUEsT0FBU04sR0FBRyxDQUFDQyxHQUFHLENBQUNLLEdBQUQsQ0FBSixDQUFaLENBQUE7QUFBQSxLQUF6QixDQUFBLENBQUE7QUFDQUosSUFBQUEsTUFBTSxDQUFDSyxNQUFQLENBQWNOLEdBQWQsQ0FBQSxDQUFBO0FBQ0QsR0FIRCxNQUdPO0FBQ0wsSUFBQSxPQUFBO0FBQ0QsR0FBQTs7QUFDRCxFQUFBLE9BQU9BLEdBQVAsQ0FBQTtBQUNELENBUkQ7O0FDQUEsSUFBTU8sWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQ1AsR0FBRCxFQUFTO0FBQzVCLEVBQUEsT0FBT0MsTUFBTSxDQUFDTyxNQUFQLENBQWMsRUFBZCxFQUFrQlIsR0FBbEIsQ0FBUCxDQUFBO0FBQ0QsQ0FGRCxDQUFBOztBQUlBLElBQUFTLFNBQWMsR0FBRyxTQUFTQSxTQUFULENBQW1CQyxLQUFuQixFQUEwQjtBQUN6QyxFQUFBLElBQUlDLE1BQUosQ0FBQTtBQUNBQyxFQUFBQSxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsS0FBZCxDQUF3QkMsR0FBQUEsTUFBTSxHQUFHRCxLQUFqQyxHQUEyQ0MsTUFBTSxHQUFHSixZQUFZLENBQUNHLEtBQUQsQ0FBaEUsQ0FBQTs7QUFFQSxFQUFBLElBQUlFLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixNQUFkLENBQUosRUFBMkI7QUFDekJBLElBQUFBLE1BQU0sR0FBR0csSUFBSSxDQUFDQyxLQUFMLENBQVdELElBQUksQ0FBQ0UsU0FBTCxDQUFlTCxNQUFmLENBQVgsQ0FBVCxDQUFBO0FBQ0EsSUFBQSxPQUFPQSxNQUFQLENBQUE7QUFDRCxHQUhELE1BR087QUFDTFYsSUFBQUEsTUFBTSxDQUFDRSxJQUFQLENBQVlRLE1BQVosQ0FDR00sQ0FBQUEsTUFESCxDQUNVLFVBQUNDLENBQUQsRUFBQTtBQUFBLE1BQUEsT0FBTyxRQUFPUCxNQUFNLENBQUNPLENBQUQsQ0FBYixNQUFxQixRQUE1QixDQUFBO0FBQUEsS0FEVixDQUVHZCxDQUFBQSxPQUZILENBRVcsVUFBQ2MsQ0FBRCxFQUFBO0FBQUEsTUFBUVAsT0FBQUEsTUFBTSxDQUFDTyxDQUFELENBQU4sR0FBWVQsU0FBUyxDQUFDRSxNQUFNLENBQUNPLENBQUQsQ0FBUCxDQUE3QixDQUFBO0FBQUEsS0FGWCxDQUFBLENBQUE7QUFHQSxJQUFBLE9BQU9QLE1BQVAsQ0FBQTtBQUNELEdBQUE7QUFDRixDQWJEOztBQ0pBLElBQUFRLEdBQWMsR0FBR2xCLE1BQU0sQ0FBQ0ssTUFBUCxDQUFjO0FBQzdCUCxFQUFBQSxHQUFHLEVBQUVxQixHQUR3QjtBQUU3QlgsRUFBQUEsU0FBUyxFQUFFWSxTQUFBQTtBQUZrQixDQUFkOzs7OyJ9