docs: function freeze(obj) {
      if (typeof obj !== 'object' || obj === null) {
          return obj;
      }
  
      if (!Object.isFrozen(obj)) {
          Object.freeze(obj);
      }
  
      Object.getOwnPropertyNames(obj).forEach(name => freeze(obj[name]));
  
      return obj;
  }