"use client";

import * as React from "react";

const noop = (): void => {};

const CONSOLE_METHODS = [
  "log",
  "info",
  "debug",
  "warn",
  "error",
  "trace",
  "dir",
  "dirxml",
  "group",
  "groupEnd",
  "groupCollapsed",
  "table",
  "time",
  "timeEnd",
  "timeLog",
  "assert",
  "count",
  "countReset",
  "clear",
] as const;

/**
 * **Browser DevTools console** (Chrome / Edge / Firefox): production-only no-ops on
 * `console.*` so app + dependency code cannot print there at runtime.
 *
 * Ye user ke khud console mein likhne ko band **nahi** karta — wo browser ki cheez hai.
 * Build par `next.config` `compiler.removeConsole` bhi saari `console.*` calls hata deta hai.
 * Root `layout` mein pehle ek chhota inline script bhi hai taake hydration se pehle hi silence ho.
 */
export function ConsoleSilencer() {
  React.useLayoutEffect(() => {
    if (process.env.NODE_ENV !== "production") return;
    const c = console as unknown as Record<string, unknown>;
    for (const name of CONSOLE_METHODS) {
      try {
        c[name] = noop;
      } catch {
        /* some engines may lock individual methods */
      }
    }
  }, []);

  return null;
}
