fzo
Version:
fzo is simply freeze object library
61 lines (49 loc) • 4.94 kB
JavaScript
/**
* @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
});
module.exports = src;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnpvLmNqcy5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2Z6by5qcyIsIi4uL3NyYy9kZWVwQ2xvbmUuanMiLCIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmem8ob2JqKSB7XHJcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmICFPYmplY3QuaXNGcm96ZW4ob2JqKSkge1xyXG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKChpZHgpID0+IGZ6byhvYmpbaWR4XSkpO1xyXG4gICAgT2JqZWN0LmZyZWV6ZShvYmopO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIHJldHVybiBvYmo7XHJcbn07XHJcbiIsImNvbnN0IHNoYWxsb3dDbG9uZSA9IChvYmopID0+IHtcclxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTtcclxufTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGVlcENsb25lKHZhbHVlKSB7XHJcbiAgbGV0IG5ld09iajtcclxuICBBcnJheS5pc0FycmF5KHZhbHVlKSA/IChuZXdPYmogPSB2YWx1ZSkgOiAobmV3T2JqID0gc2hhbGxvd0Nsb25lKHZhbHVlKSk7XHJcblxyXG4gIGlmIChBcnJheS5pc0FycmF5KG5ld09iaikpIHtcclxuICAgIG5ld09iaiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobmV3T2JqKSk7XHJcbiAgICByZXR1cm4gbmV3T2JqO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBPYmplY3Qua2V5cyhuZXdPYmopXHJcbiAgICAgIC5maWx0ZXIoKGspID0+IHR5cGVvZiBuZXdPYmpba10gPT09ICdvYmplY3QnKVxyXG4gICAgICAuZm9yRWFjaCgoaykgPT4gKG5ld09ialtrXSA9IGRlZXBDbG9uZShuZXdPYmpba10pKSk7XHJcbiAgICByZXR1cm4gbmV3T2JqO1xyXG4gIH1cclxufTtcclxuIiwibW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZnJlZXplKHtcclxuICBmem86IHJlcXVpcmUoJy4vZnpvJyksXHJcbiAgZGVlcENsb25lOiByZXF1aXJlKCcuL2RlZXBDbG9uZScpLFxyXG59KTtcclxuIl0sIm5hbWVzIjpbImZ6byIsIm9iaiIsIk9iamVjdCIsImlzRnJvemVuIiwia2V5cyIsImZvckVhY2giLCJpZHgiLCJmcmVlemUiLCJzaGFsbG93Q2xvbmUiLCJhc3NpZ24iLCJkZWVwQ2xvbmUiLCJ2YWx1ZSIsIm5ld09iaiIsIkFycmF5IiwiaXNBcnJheSIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImZpbHRlciIsImsiLCJzcmMiLCJyZXF1aXJlJCQwIiwicmVxdWlyZSQkMSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLEdBQWMsR0FBRyxTQUFTQSxHQUFULENBQWFDLEdBQWIsRUFBa0I7QUFDakMsRUFBQSxJQUFJLE9BQU9BLENBQUFBLEdBQVAsQ0FBZSxLQUFBLFFBQWYsSUFBMkIsQ0FBQ0MsTUFBTSxDQUFDQyxRQUFQLENBQWdCRixHQUFoQixDQUFoQyxFQUFzRDtBQUNwREMsSUFBQUEsTUFBTSxDQUFDRSxJQUFQLENBQVlILEdBQVosQ0FBaUJJLENBQUFBLE9BQWpCLENBQXlCLFVBQUNDLEdBQUQsRUFBQTtBQUFBLE1BQUEsT0FBU04sR0FBRyxDQUFDQyxHQUFHLENBQUNLLEdBQUQsQ0FBSixDQUFaLENBQUE7QUFBQSxLQUF6QixDQUFBLENBQUE7QUFDQUosSUFBQUEsTUFBTSxDQUFDSyxNQUFQLENBQWNOLEdBQWQsQ0FBQSxDQUFBO0FBQ0QsR0FIRCxNQUdPO0FBQ0wsSUFBQSxPQUFBO0FBQ0QsR0FBQTs7QUFDRCxFQUFBLE9BQU9BLEdBQVAsQ0FBQTtBQUNELENBUkQ7O0FDQUEsSUFBTU8sWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQ1AsR0FBRCxFQUFTO0FBQzVCLEVBQUEsT0FBT0MsTUFBTSxDQUFDTyxNQUFQLENBQWMsRUFBZCxFQUFrQlIsR0FBbEIsQ0FBUCxDQUFBO0FBQ0QsQ0FGRCxDQUFBOztBQUlBLElBQUFTLFNBQWMsR0FBRyxTQUFTQSxTQUFULENBQW1CQyxLQUFuQixFQUEwQjtBQUN6QyxFQUFBLElBQUlDLE1BQUosQ0FBQTtBQUNBQyxFQUFBQSxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsS0FBZCxDQUF3QkMsR0FBQUEsTUFBTSxHQUFHRCxLQUFqQyxHQUEyQ0MsTUFBTSxHQUFHSixZQUFZLENBQUNHLEtBQUQsQ0FBaEUsQ0FBQTs7QUFFQSxFQUFBLElBQUlFLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixNQUFkLENBQUosRUFBMkI7QUFDekJBLElBQUFBLE1BQU0sR0FBR0csSUFBSSxDQUFDQyxLQUFMLENBQVdELElBQUksQ0FBQ0UsU0FBTCxDQUFlTCxNQUFmLENBQVgsQ0FBVCxDQUFBO0FBQ0EsSUFBQSxPQUFPQSxNQUFQLENBQUE7QUFDRCxHQUhELE1BR087QUFDTFYsSUFBQUEsTUFBTSxDQUFDRSxJQUFQLENBQVlRLE1BQVosQ0FDR00sQ0FBQUEsTUFESCxDQUNVLFVBQUNDLENBQUQsRUFBQTtBQUFBLE1BQUEsT0FBTyxRQUFPUCxNQUFNLENBQUNPLENBQUQsQ0FBYixNQUFxQixRQUE1QixDQUFBO0FBQUEsS0FEVixDQUVHZCxDQUFBQSxPQUZILENBRVcsVUFBQ2MsQ0FBRCxFQUFBO0FBQUEsTUFBUVAsT0FBQUEsTUFBTSxDQUFDTyxDQUFELENBQU4sR0FBWVQsU0FBUyxDQUFDRSxNQUFNLENBQUNPLENBQUQsQ0FBUCxDQUE3QixDQUFBO0FBQUEsS0FGWCxDQUFBLENBQUE7QUFHQSxJQUFBLE9BQU9QLE1BQVAsQ0FBQTtBQUNELEdBQUE7QUFDRixDQWJEOztBQ0pBLElBQUFRLEdBQWMsR0FBR2xCLE1BQU0sQ0FBQ0ssTUFBUCxDQUFjO0FBQzdCUCxFQUFBQSxHQUFHLEVBQUVxQixHQUR3QjtBQUU3QlgsRUFBQUEsU0FBUyxFQUFFWSxTQUFBQTtBQUZrQixDQUFkOzs7OyJ9