UNPKG

typescript-immutable-helper

Version:

Helpers for handling immutable objects with typescript

41 lines 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * freezes an object recursively * @param {T} object object child freeze * @returns {T} frozen object */ function deepFreeze(object) { Object.freeze(object); // skip deep freezing of non objects and functions if (typeof object !== 'object') { return object; } Object.getOwnPropertyNames(object) .filter(function (prop) { return object[prop] !== null && !Object.isFrozen(object[prop]); }) .forEach(function (prop) { return deepFreeze(object[prop]); }); return object; } exports.deepFreeze = deepFreeze; /** * checks if object is deep frozen with {@link deepFreeze] * @param object * @returns {boolean} */ function isDeepFrozen(object) { if (Object.isFrozen(object)) { // skip deep testing of non objects and functions if (typeof object !== 'object') { return true; } return Object.getOwnPropertyNames(object) // only objects, no functions .filter(function (prop) { return object[prop] !== null && typeof object === 'object'; }) .every(function (prop) { return isDeepFrozen(object[prop]); }); } else { return false; } } exports.isDeepFrozen = isDeepFrozen; //# sourceMappingURL=deepFreeze.js.map