UNPKG

fzo

Version:

fzo is simply freeze object library

64 lines (51 loc) 5.05 kB
/** * @license * fzo.js v0.1.3 * Released under the Apache License 2.0 License. **/ var fzo = (function () { '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 }); return src; })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnpvLmpzIiwic291cmNlcyI6WyIuLi9zcmMvZnpvLmpzIiwiLi4vc3JjL2RlZXBDbG9uZS5qcyIsIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZ6byhvYmopIHtcclxuICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgIU9iamVjdC5pc0Zyb3plbihvYmopKSB7XHJcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goKGlkeCkgPT4gZnpvKG9ialtpZHhdKSk7XHJcbiAgICBPYmplY3QuZnJlZXplKG9iaik7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgcmV0dXJuIG9iajtcclxufTtcclxuIiwiY29uc3Qgc2hhbGxvd0Nsb25lID0gKG9iaikgPT4ge1xyXG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBvYmopO1xyXG59O1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkZWVwQ2xvbmUodmFsdWUpIHtcclxuICBsZXQgbmV3T2JqO1xyXG4gIEFycmF5LmlzQXJyYXkodmFsdWUpID8gKG5ld09iaiA9IHZhbHVlKSA6IChuZXdPYmogPSBzaGFsbG93Q2xvbmUodmFsdWUpKTtcclxuXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkobmV3T2JqKSkge1xyXG4gICAgbmV3T2JqID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuZXdPYmopKTtcclxuICAgIHJldHVybiBuZXdPYmo7XHJcbiAgfSBlbHNlIHtcclxuICAgIE9iamVjdC5rZXlzKG5ld09iailcclxuICAgICAgLmZpbHRlcigoaykgPT4gdHlwZW9mIG5ld09ialtrXSA9PT0gJ29iamVjdCcpXHJcbiAgICAgIC5mb3JFYWNoKChrKSA9PiAobmV3T2JqW2tdID0gZGVlcENsb25lKG5ld09ialtrXSkpKTtcclxuICAgIHJldHVybiBuZXdPYmo7XHJcbiAgfVxyXG59O1xyXG4iLCJtb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5mcmVlemUoe1xyXG4gIGZ6bzogcmVxdWlyZSgnLi9mem8nKSxcclxuICBkZWVwQ2xvbmU6IHJlcXVpcmUoJy4vZGVlcENsb25lJyksXHJcbn0pO1xyXG4iXSwibmFtZXMiOlsiZnpvIiwib2JqIiwiT2JqZWN0IiwiaXNGcm96ZW4iLCJrZXlzIiwiZm9yRWFjaCIsImlkeCIsImZyZWV6ZSIsInNoYWxsb3dDbG9uZSIsImFzc2lnbiIsImRlZXBDbG9uZSIsInZhbHVlIiwibmV3T2JqIiwiQXJyYXkiLCJpc0FycmF5IiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiZmlsdGVyIiwiayIsInNyYyIsInJlcXVpcmUkJDAiLCJyZXF1aXJlJCQxIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUFBLElBQUFBLEdBQWMsR0FBRyxTQUFTQSxHQUFULENBQWFDLEdBQWIsRUFBa0I7RUFDakMsRUFBQSxJQUFJLE9BQU9BLENBQUFBLEdBQVAsQ0FBZSxLQUFBLFFBQWYsSUFBMkIsQ0FBQ0MsTUFBTSxDQUFDQyxRQUFQLENBQWdCRixHQUFoQixDQUFoQyxFQUFzRDtFQUNwREMsSUFBQUEsTUFBTSxDQUFDRSxJQUFQLENBQVlILEdBQVosQ0FBaUJJLENBQUFBLE9BQWpCLENBQXlCLFVBQUNDLEdBQUQsRUFBQTtFQUFBLE1BQUEsT0FBU04sR0FBRyxDQUFDQyxHQUFHLENBQUNLLEdBQUQsQ0FBSixDQUFaLENBQUE7RUFBQSxLQUF6QixDQUFBLENBQUE7RUFDQUosSUFBQUEsTUFBTSxDQUFDSyxNQUFQLENBQWNOLEdBQWQsQ0FBQSxDQUFBO0VBQ0QsR0FIRCxNQUdPO0VBQ0wsSUFBQSxPQUFBO0VBQ0QsR0FBQTs7RUFDRCxFQUFBLE9BQU9BLEdBQVAsQ0FBQTtFQUNELENBUkQ7O0VDQUEsSUFBTU8sWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQ1AsR0FBRCxFQUFTO0VBQzVCLEVBQUEsT0FBT0MsTUFBTSxDQUFDTyxNQUFQLENBQWMsRUFBZCxFQUFrQlIsR0FBbEIsQ0FBUCxDQUFBO0VBQ0QsQ0FGRCxDQUFBOztFQUlBLElBQUFTLFNBQWMsR0FBRyxTQUFTQSxTQUFULENBQW1CQyxLQUFuQixFQUEwQjtFQUN6QyxFQUFBLElBQUlDLE1BQUosQ0FBQTtFQUNBQyxFQUFBQSxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsS0FBZCxDQUF3QkMsR0FBQUEsTUFBTSxHQUFHRCxLQUFqQyxHQUEyQ0MsTUFBTSxHQUFHSixZQUFZLENBQUNHLEtBQUQsQ0FBaEUsQ0FBQTs7RUFFQSxFQUFBLElBQUlFLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixNQUFkLENBQUosRUFBMkI7RUFDekJBLElBQUFBLE1BQU0sR0FBR0csSUFBSSxDQUFDQyxLQUFMLENBQVdELElBQUksQ0FBQ0UsU0FBTCxDQUFlTCxNQUFmLENBQVgsQ0FBVCxDQUFBO0VBQ0EsSUFBQSxPQUFPQSxNQUFQLENBQUE7RUFDRCxHQUhELE1BR087RUFDTFYsSUFBQUEsTUFBTSxDQUFDRSxJQUFQLENBQVlRLE1BQVosQ0FDR00sQ0FBQUEsTUFESCxDQUNVLFVBQUNDLENBQUQsRUFBQTtFQUFBLE1BQUEsT0FBTyxRQUFPUCxNQUFNLENBQUNPLENBQUQsQ0FBYixNQUFxQixRQUE1QixDQUFBO0VBQUEsS0FEVixDQUVHZCxDQUFBQSxPQUZILENBRVcsVUFBQ2MsQ0FBRCxFQUFBO0VBQUEsTUFBUVAsT0FBQUEsTUFBTSxDQUFDTyxDQUFELENBQU4sR0FBWVQsU0FBUyxDQUFDRSxNQUFNLENBQUNPLENBQUQsQ0FBUCxDQUE3QixDQUFBO0VBQUEsS0FGWCxDQUFBLENBQUE7RUFHQSxJQUFBLE9BQU9QLE1BQVAsQ0FBQTtFQUNELEdBQUE7RUFDRixDQWJEOztBQ0pBLE1BQUFRLEdBQWMsR0FBR2xCLE1BQU0sQ0FBQ0ssTUFBUCxDQUFjO0VBQzdCUCxFQUFBQSxHQUFHLEVBQUVxQixHQUR3QjtFQUU3QlgsRUFBQUEsU0FBUyxFQUFFWSxTQUFBQTtFQUZrQixDQUFkOzs7Ozs7OzsifQ==