import type { NextConfig } from "next";
import { defaultLocale, locales } from "./src/i18n/routes";

const PUBLIC_TO_INTERNAL: Record<string, string> = {
  "/": "/de",
  "/ueber-mich": "/de/about",
  "/projekte": "/de/projects",
  "/kontakt": "/de/contact",
  "/impressum": "/de/legal",
  "/datenschutz": "/de/privacy",
  "/en": "/en",
  "/en/about": "/en/about",
  "/en/projects": "/en/projects",
  "/en/contact": "/en/contact",
  "/en/legal": "/en/legal",
  "/en/privacy": "/en/privacy",
};

// Rewrites für Projekt-Detail: /projekte/[slug] -> /de/projects/[slug] (dynamisch).
function projectItemRewrite(srcPrefix: string, destLocale: "de" | "en") {
  return {
    source: `${srcPrefix}/:slug`,
    destination: `/${destLocale}/projects/:slug`,
  };
}

const config: NextConfig = {
  // better-sqlite3 ist ein nativer Server-only Import. Wir halten ihn aus dem
  // Client-Bundle, indem wir ihn ausschließlich in `src/lib/db/**` und Server-
  // Komponenten verwenden — keine externen Imports in `src/app/**/page.tsx`
  // ohne expliziten server boundary.
  serverExternalPackages: ["better-sqlite3"],
  images: { unoptimized: true },
  // Rewrites als Backup zum proxy.ts (manche Next.js 16 Setups greifen den
  // proxy nicht konsistent für statische Routen). Der proxy.ts macht
  // zusätzlich den Locale-Header-Set und Auth — wir behalten beides.
  async rewrites() {
    return [
      ...Object.entries(PUBLIC_TO_INTERNAL).map(([from, to]) => ({
        source: from,
        destination: to,
      })),
      projectItemRewrite("/projekte", "de"),
      projectItemRewrite("/en/projects", "en"),
    ];
  },
  // Standalone-Build: Next.js erzeugt unter .next/standalone einen getrimmten
  // Server-Tree mit nur den Dependencies, die er zur Runtime braucht. Image
  // schrumpft von ~1.2 GB auf ~150 MB.
  output: "standalone",
  // Traefik vertraut uns — wir akzeptieren X-Forwarded-For.
  // (trustHostHeader ist die Next.js-Default ab 16, wenn hinter einem
  // Reverse-Proxy deployed.)
};

export default config;
