corde
Version:
A simple library for Discord bot tests
36 lines (26 loc) • 849 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true,
});
exports.deepFreeze = void 0;
const isPrimitiveValue_1 = require("./isPrimitiveValue");
const typeOf_1 = require("./typeOf");
function deepFreeze(obj) {
if ((0, isPrimitiveValue_1.isPrimitiveValue)(obj) || !obj) {
return Object.freeze({});
}
const propNames = Object.getOwnPropertyNames(obj).filter((name) => !name.startsWith("_"));
const freezedObj = {};
for (const propName of propNames) {
const prop = obj[propName];
if ((0, typeOf_1.typeOf)(prop) === "object") {
freezedObj[propName] = deepFreeze(prop);
} else if (Array.isArray(prop)) {
freezedObj[propName] = Object.freeze(prop.slice());
} else {
freezedObj[propName] = prop;
}
}
return Object.freeze(freezedObj);
}
exports.deepFreeze = deepFreeze;