typescript-immutable-helper
Version:
Helpers for handling immutable objects with typescript
41 lines • 1.33 kB
JavaScript
;
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