@safeapi/safeapi
Version:
SafeAPI: Secure, deterministic, and tamper-resistant API policy engine for Node and browser.
24 lines (23 loc) • 579 B
JavaScript
/** @internal */
export function deepFreeze(value, seen = new WeakSet()) {
if (value === null || typeof value !== "object") {
return value;
}
const reference = value;
if (seen.has(reference)) {
return reference;
}
seen.add(reference);
if (Array.isArray(value)) {
for (const item of value) {
deepFreeze(item, seen);
}
}
else {
const record = value;
for (const key of Object.keys(record)) {
deepFreeze(record[key], seen);
}
}
return Object.freeze(value);
}