UNPKG

@microsoft/sp-webpart-base

Version:

SharePoint Framework support for building web parts

41 lines 1.12 kB
"use strict"; /** * Utility code to help manipulate objects. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.deepFreeze = void 0; var tslib_1 = require("tslib"); var lodash = tslib_1.__importStar(require("@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 */ 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; } exports.deepFreeze = deepFreeze; //# sourceMappingURL=Object.js.map