UNPKG

fzo

Version:

fzo is simply freeze object library

59 lines (48 loc) 4.92 kB
/** * @license * fzo.js v0.1.3 * Released under the Apache License 2.0 License. **/ 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 }); export { src as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnpvLmVzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvZnpvLmpzIiwiLi4vc3JjL2RlZXBDbG9uZS5qcyIsIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZ6byhvYmopIHtcclxuICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgIU9iamVjdC5pc0Zyb3plbihvYmopKSB7XHJcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goKGlkeCkgPT4gZnpvKG9ialtpZHhdKSk7XHJcbiAgICBPYmplY3QuZnJlZXplKG9iaik7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgcmV0dXJuIG9iajtcclxufTtcclxuIiwiY29uc3Qgc2hhbGxvd0Nsb25lID0gKG9iaikgPT4ge1xyXG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBvYmopO1xyXG59O1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkZWVwQ2xvbmUodmFsdWUpIHtcclxuICBsZXQgbmV3T2JqO1xyXG4gIEFycmF5LmlzQXJyYXkodmFsdWUpID8gKG5ld09iaiA9IHZhbHVlKSA6IChuZXdPYmogPSBzaGFsbG93Q2xvbmUodmFsdWUpKTtcclxuXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkobmV3T2JqKSkge1xyXG4gICAgbmV3T2JqID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuZXdPYmopKTtcclxuICAgIHJldHVybiBuZXdPYmo7XHJcbiAgfSBlbHNlIHtcclxuICAgIE9iamVjdC5rZXlzKG5ld09iailcclxuICAgICAgLmZpbHRlcigoaykgPT4gdHlwZW9mIG5ld09ialtrXSA9PT0gJ29iamVjdCcpXHJcbiAgICAgIC5mb3JFYWNoKChrKSA9PiAobmV3T2JqW2tdID0gZGVlcENsb25lKG5ld09ialtrXSkpKTtcclxuICAgIHJldHVybiBuZXdPYmo7XHJcbiAgfVxyXG59O1xyXG4iLCJtb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5mcmVlemUoe1xyXG4gIGZ6bzogcmVxdWlyZSgnLi9mem8nKSxcclxuICBkZWVwQ2xvbmU6IHJlcXVpcmUoJy4vZGVlcENsb25lJyksXHJcbn0pO1xyXG4iXSwibmFtZXMiOlsiZnpvIiwib2JqIiwiT2JqZWN0IiwiaXNGcm96ZW4iLCJrZXlzIiwiZm9yRWFjaCIsImlkeCIsImZyZWV6ZSIsInNoYWxsb3dDbG9uZSIsImFzc2lnbiIsImRlZXBDbG9uZSIsInZhbHVlIiwibmV3T2JqIiwiQXJyYXkiLCJpc0FycmF5IiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiZmlsdGVyIiwiayIsInNyYyIsInJlcXVpcmUkJDAiLCJyZXF1aXJlJCQxIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLEdBQWMsR0FBRyxTQUFTQSxHQUFULENBQWFDLEdBQWIsRUFBa0I7QUFDakMsRUFBQSxJQUFJLE9BQU9BLENBQUFBLEdBQVAsQ0FBZSxLQUFBLFFBQWYsSUFBMkIsQ0FBQ0MsTUFBTSxDQUFDQyxRQUFQLENBQWdCRixHQUFoQixDQUFoQyxFQUFzRDtBQUNwREMsSUFBQUEsTUFBTSxDQUFDRSxJQUFQLENBQVlILEdBQVosQ0FBaUJJLENBQUFBLE9BQWpCLENBQXlCLFVBQUNDLEdBQUQsRUFBQTtBQUFBLE1BQUEsT0FBU04sR0FBRyxDQUFDQyxHQUFHLENBQUNLLEdBQUQsQ0FBSixDQUFaLENBQUE7QUFBQSxLQUF6QixDQUFBLENBQUE7QUFDQUosSUFBQUEsTUFBTSxDQUFDSyxNQUFQLENBQWNOLEdBQWQsQ0FBQSxDQUFBO0FBQ0QsR0FIRCxNQUdPO0FBQ0wsSUFBQSxPQUFBO0FBQ0QsR0FBQTs7QUFDRCxFQUFBLE9BQU9BLEdBQVAsQ0FBQTtBQUNELENBUkQ7O0FDQUEsSUFBTU8sWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQ1AsR0FBRCxFQUFTO0FBQzVCLEVBQUEsT0FBT0MsTUFBTSxDQUFDTyxNQUFQLENBQWMsRUFBZCxFQUFrQlIsR0FBbEIsQ0FBUCxDQUFBO0FBQ0QsQ0FGRCxDQUFBOztBQUlBLElBQUFTLFNBQWMsR0FBRyxTQUFTQSxTQUFULENBQW1CQyxLQUFuQixFQUEwQjtBQUN6QyxFQUFBLElBQUlDLE1BQUosQ0FBQTtBQUNBQyxFQUFBQSxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsS0FBZCxDQUF3QkMsR0FBQUEsTUFBTSxHQUFHRCxLQUFqQyxHQUEyQ0MsTUFBTSxHQUFHSixZQUFZLENBQUNHLEtBQUQsQ0FBaEUsQ0FBQTs7QUFFQSxFQUFBLElBQUlFLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixNQUFkLENBQUosRUFBMkI7QUFDekJBLElBQUFBLE1BQU0sR0FBR0csSUFBSSxDQUFDQyxLQUFMLENBQVdELElBQUksQ0FBQ0UsU0FBTCxDQUFlTCxNQUFmLENBQVgsQ0FBVCxDQUFBO0FBQ0EsSUFBQSxPQUFPQSxNQUFQLENBQUE7QUFDRCxHQUhELE1BR087QUFDTFYsSUFBQUEsTUFBTSxDQUFDRSxJQUFQLENBQVlRLE1BQVosQ0FDR00sQ0FBQUEsTUFESCxDQUNVLFVBQUNDLENBQUQsRUFBQTtBQUFBLE1BQUEsT0FBTyxRQUFPUCxNQUFNLENBQUNPLENBQUQsQ0FBYixNQUFxQixRQUE1QixDQUFBO0FBQUEsS0FEVixDQUVHZCxDQUFBQSxPQUZILENBRVcsVUFBQ2MsQ0FBRCxFQUFBO0FBQUEsTUFBUVAsT0FBQUEsTUFBTSxDQUFDTyxDQUFELENBQU4sR0FBWVQsU0FBUyxDQUFDRSxNQUFNLENBQUNPLENBQUQsQ0FBUCxDQUE3QixDQUFBO0FBQUEsS0FGWCxDQUFBLENBQUE7QUFHQSxJQUFBLE9BQU9QLE1BQVAsQ0FBQTtBQUNELEdBQUE7QUFDRixDQWJEOztBQ0pBLElBQUFRLEdBQWMsR0FBR2xCLE1BQU0sQ0FBQ0ssTUFBUCxDQUFjO0FBQzdCUCxFQUFBQSxHQUFHLEVBQUVxQixHQUR3QjtBQUU3QlgsRUFBQUEsU0FBUyxFQUFFWSxTQUFBQTtBQUZrQixDQUFkOzs7OyJ9