fzo
Version:
fzo is simply freeze object library
64 lines (51 loc) • 5.05 kB
JavaScript
/**
* @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==