@benev/slate
Version:
frontend web stuff
24 lines • 790 B
JavaScript
import { is } from "../../is.js";
export function deepFreeze(item) {
function recurse(x, parents) {
if (!is.object(x) || parents.includes(x))
return x;
const newParents = [...parents, x];
if (x instanceof Map)
for (const arr of x.entries())
for (const y of arr)
recurse(y, newParents);
else if (x instanceof Set)
for (const y of x)
recurse(y, newParents);
else if (Array.isArray(x))
for (const y of x)
recurse(y, newParents);
else
for (const y of Object.values(x))
recurse(y, newParents);
return Object.freeze(x);
}
return recurse(item, []);
}
//# sourceMappingURL=freeze.js.map