import type { NextConfig } from "next";
import createNextIntlPlugin from 'next-intl/plugin';

const withNextIntl = createNextIntlPlugin('./src/i18n/request.ts');

const nextConfig: NextConfig = {
  reactStrictMode: false, // 🧪 TEST: Strict Mode 비활성화로 중복 요청 테스트
  turbopack: {}, // ✅ CRITICAL: Next.js 15 + next-intl compatibility
  allowedDevOrigins: ['dev.sam.kr', '192.168.0.*'], // 로컬 도메인 + 네트워크 기기 접속 허용
  serverExternalPackages: ['puppeteer'], // PDF 생성용 - Webpack 번들 제외
  images: {
    remotePatterns: [
      {
        protocol: 'https',
        hostname: 'placehold.co',
      },
    ],
  },
  experimental: {
    serverActions: {
      bodySizeLimit: '10mb', // 이미지 업로드를 위한 제한 증가
    },
  },
  typescript: {
    ignoreBuildErrors: false,
  },
  eslint: {
    ignoreDuringBuilds: true,
  },
  // Capacitor 패키지는 모바일 앱 전용 - 웹 빌드에서 제외
  webpack: (config, { isServer }) => {
    // macOS 26 호환성: webpack 캐시 비활성화 (rename ENOENT 방지)
    config.cache = false;

    if (!isServer) {
      config.resolve.fallback = {
        ...config.resolve.fallback,
        '@capacitor/core': false,
        '@capacitor/push-notifications': false,
        '@capacitor/app': false,
      };
    }
    return config;
  },
};

export default withNextIntl(nextConfig);
