// File: next.config.mjs

/** @type {import('next').NextConfig} */
const nextConfig = {
  // 1. Standalone Output: จำเป็นสำหรับการ Deploy บน Docker (QNAP)
  // Next.js จะคัดแยกเฉพาะไฟล์ที่จำเป็นต้องใช้จริงออกมาไว้ในโฟลเดอร์ .next/standalone
  // TEMPORARILY DISABLED: pnpm standalone build issues
  // output: "standalone",

  // 2. React Strict Mode: ช่วยดักจับ Bug ในช่วง Dev (เช่น Component render ซ้ำ)
  reactStrictMode: true,

  // 3. Image Configuration: อนุญาตโหลดรูปจาก Domain ภายนอก
  images: {
    remotePatterns: [
      {
        protocol: 'https',
        hostname: '**', // อนุญาตทุก Domain สำหรับ Avatar (ในการใช้งานจริงควรระบุ Domain เฉพาะ เช่น googleusercontent.com)
      },
    ],
    // ลดขนาดไฟล์รูปภาพที่จะถูก optimize
    deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
    // Cache optimized images for 24h (reduces re-optimization on containers)
    minimumCacheTTL: 86400,
  },

  // 4. (Optional) Rewrites: กรณีต้องการ Proxy API ผ่าน Next.js เพื่อเลี่ยง CORS ใน Dev
  // แต่ในโปรเจกต์นี้เราใช้ Axios BaseURL ชี้ไปที่ Backend โดยตรงแล้ว จึงอาจไม่จำเป็นต้องเปิด
  /*
  async rewrites() {
    return [
      {
        source: '/api/backend/:path*',
        destination: `${process.env.NEXT_PUBLIC_API_URL}/:path*`,
      },
    ]
  },
  */

  // 5. Turbopack config for Next.js 16
  turbopack: {
    // Empty config to silence Turbopack warnings
  },

  // 5.1. Webpack config (fallback for Turbopack)
  webpack: (config, { dev, isServer }) => {
    if (!dev && !isServer) {
      config.stats = {
        ...config.stats,
        warnings: false,
      };
    }
    return config;
  },

  // 6. Static Generation Prevention for Dynamic Routes
  // Individual pages will use dynamic exports

  // 7. Security Headers + MIME Types
  async headers() {
    return [
      {
        source: '/:path*',
        headers: [
          {
            key: 'X-DNS-Prefetch-Control',
            value: 'on',
          },
          {
            key: 'X-XSS-Protection',
            value: '1; mode=block',
          },
          {
            key: 'X-Frame-Options',
            value: 'SAMEORIGIN', // ป้องกันการถูก Embedding ใน Iframe (Clickjacking)
          },
          {
            key: 'X-Content-Type-Options',
            value: 'nosniff',
          },
        ],
      },
    ];
  },
};

export default nextConfig;
