Implement deepFreeze(obj)
Object.freeze only freezes the top level, nested objects stay mutable. Write deepFreeze(obj) that recursively freezes an object and all objects reachable from it, then returns it.
const config = deepFreeze({ api: { retries: 3 } });
config.api.retries = 999; // silently ignored
config.api.retries; // still 3