UNPKG

@microsoft/sp-webpart-base

Version:

SharePoint Framework support for building web parts

36 lines 938 B
/** * 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