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

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

const nextConfig: NextConfig = {
  turbopack: {
    root: __dirname,
  },
  experimental: {
    serverActions: {
      bodySizeLimit: "50mb",
    },
  },
  images: {
    // Next 16 lehnt jeden quality-Wert ab, der nicht hier steht (Default nur
    // [75]). Die Seiten-Banner brauchen 92, damit detailreiche Fotos nicht
    // matschig komprimiert werden (siehe PageHeaderBanner).
    qualities: [75, 92],
  },
  // node-zugferd lädt seine XSD-Schemas zur Laufzeit per echtem Dateipfad
  // (für die Java-basierte XSD-Validierung) — beim Bundlen durch
  // Turbopack werden diese Pfade sonst kaputt umgeschrieben.
  serverExternalPackages: ["node-zugferd", "xsd-schema-validator", "pdf-lib"],
  async rewrites() {
    return {
      // beforeFiles, damit IMMER die live vom Dateisystem lesende API-Route
      // greift statt Next's public/-Static-Serving — das erkennt unter
      // Turbopack neu hochgeladene Dateien sonst erst nach einem Neustart
      // (siehe api/uploads/[category]/[filename]/route.ts).
      beforeFiles: [{ source: "/uploads/:category/:filename", destination: "/api/uploads/:category/:filename" }],
    };
  },
  async headers() {
    return [
      {
        source: "/:path*",
        headers: [
          { key: "X-Content-Type-Options", value: "nosniff" },
          { key: "X-Frame-Options", value: "SAMEORIGIN" },
          { key: "Referrer-Policy", value: "strict-origin-when-cross-origin" },
          { key: "Strict-Transport-Security", value: "max-age=15552000; includeSubDomains" },
          { key: "X-Permitted-Cross-Domain-Policies", value: "none" },
        ],
      },
    ];
  },
};

export default withNextIntl(nextConfig);
