/**
 * DevOnly — `/dev/*` 라우트 가드.
 *
 * 허용 조건:
 *  - 빌드 시 `VITE_ENABLE_DEV_ROUTES=true` 가 설정된 경우, 또는
 *  - `window.location.hostname` 이 로컬호스트 계열인 경우.
 * 그 외에는 루트로 리다이렉트.
 *
 * 클라이언트 사이드 가드라 보안 의미보다는 "운영 도메인에서 실수로 노출되는 것 방지" 용도.
 * 진짜 차단이 필요하면 서버/CDN 레벨에서 경로를 막아야 한다.
 */
import { Navigate, Outlet } from 'react-router';

const LOCAL_HOSTNAMES = new Set([
  'localhost',
  '127.0.0.1',
  '0.0.0.0',
  '::1',
  '[::1]',
]);

function isLocalHost(): boolean {
  if (typeof window === 'undefined') return false;
  return LOCAL_HOSTNAMES.has(window.location.hostname);
}

function isDevRoutesEnabled(): boolean {
  return import.meta.env.VITE_ENABLE_DEV_ROUTES === 'true';
}

export default function DevOnly() {
  if (!isDevRoutesEnabled() && !isLocalHost()) {
    return <Navigate to="/" replace />;
  }
  return <Outlet />;
}
