import type { NextConfig } from "next";

// Dockerfile builder katmanı BUILD_KAYNAK_KISITLI=1 verir: imaj build'i prod
// VPS'te çalışan uygulamayla aynı makinede koştuğu için bellek/paralellik kısılır.
// Lokal build ve dev bu kısıtlardan etkilenmez.
const kaynakKisitli = process.env.BUILD_KAYNAK_KISITLI === "1";

const nextConfig: NextConfig = {
  // PPR: statik kabuk anında servis edilir, dinamik parçalar (UserNav vb.)
  // Suspense sınırlarının içinde akar. Bkz. docs/cacheComponents.md.
  cacheComponents: true,
  output: "standalone",
  // Server-only paketler bundle dışında tutulur: Turbopack bunları derlemez
  // (build belleği ciddi düşer), runtime'da native require ile yüklenir ve
  // standalone trace'i imaja kopyalar. (Tarihçe: @google/genai'nin sürüklediği
  // bağımlılık zinciri VPS'te build OOM'unu tetiklemişti; AI katmanı artık
  // yalnızca openai paketiyle OpenRouter'a gidiyor.)
  serverExternalPackages: [
    "better-sqlite3",
    "iyzipay",
    "@libsql/client",
    "openai",
    "resend",
  ],
  ...(kaynakKisitli
    ? {
        // cacheComponents açıkken prerender fazında source map üretimi varsayılan
        // açık; 1900+ statik sayfada ciddi bellek maliyeti var.
        enablePrerenderSourceMaps: false,
        experimental: {
          // Turbopack'ın Rust tarafı NODE_OPTIONS heap sınırını görmez; bellek
          // hedefi byte cinsinden ayrıca verilir (1.5 GB).
          turbopackMemoryLimit: 1_610_612_736,
          // Statik üretim: varsayılan 4 worker × 8 eşzamanlı sayfa yerine tek
          // worker × 4 sayfa. Her worker ayrı bir Node süreci/heap'idir.
          cpus: 1,
          staticGenerationMaxConcurrency: 4,
        },
      }
    : {}),
  async redirects() {
    // Eski akış /sonuc modalına taşındı. /rapor/yazdir korunur (tam eşleşme).
    return [
      { source: "/rapor", destination: "/sonuc", permanent: false },
      { source: "/sohbet", destination: "/listem", permanent: false },
      // Ayrı robot sayfası kaldırıldı; rehber içi linkler hero formuna düşer.
      { source: "/tercih-robotu", destination: "/#hero-form", permanent: true },
    ];
  },
};

export default nextConfig;
