@microsoft/sp-webpart-base
Version:
SharePoint Framework support for building web parts
36 lines • 938 B
JavaScript
/**
* Utility code to help manipulate objects.
*/
import * as lodash from '@microsoft/sp-lodash-subset';
/**
* To make obj fully immutable, freeze each object in obj.
* @remarks
* this works only on pure JSON objects by design.
*
* @param obj - object to freeze
*/
export function deepFreeze(obj) {
if (!obj) {
return undefined;
}
if (!Object.isFrozen(obj)) {
Object.freeze(obj);
}
var depth = 0;
var func = function (o) {
// Do not go more than 5 level deep
if (++depth > 5) {
return;
}
var propNames = Object.getOwnPropertyNames(o);
propNames.forEach(function (name) {
var prop = o[name];
if (typeof prop === 'object' && !!prop && !lodash.isElement(prop) && !Object.isFrozen(prop)) {
func(prop);
}
});
};
func(obj);
return obj;
}
//# sourceMappingURL=Object.js.map