import type { NextConfig } from "next";

const nextConfig: NextConfig = {
  poweredByHeader: false,
  turbopack: {
    root: process.cwd(),
  },
  experimental: {
    // o2switch limite le nombre de processus simultanés. Un seul worker évite
    // les erreurs EAGAIN pendant la génération des pages de production.
    cpus: 1,
    workerThreads: false,
    serverActions: {
      // Les routes d’upload acceptent 30 Mo ; conserver une marge pour
      // l’enveloppe multipart ajoutée par le navigateur.
      bodySizeLimit: "32mb",
    },
  },
  async redirects() {
    return [
      // Conserver l'autorité SEO des principales pages de l'ancien site.
      // Ces URL PHP circulent encore dans l'index Google et dans des liens externes.
      { source: "/index.php.html", destination: "/", permanent: true },
      { source: "/index.php", destination: "/", permanent: true },
      { source: "/lettre-boitiers.php.html", destination: "/lettres-boitiers", permanent: true },
      { source: "/lettre-boitiers.php", destination: "/lettres-boitiers", permanent: true },
      { source: "/produit.php-7.html", destination: "/cadres-textiles", permanent: true },
      { source: "/produit.php", destination: "/cadres-textiles", permanent: true },
      {
        source: "/:path*",
        has: [{ type: "host", value: "www.pyramidcom.fr" }],
        destination: "https://pyramidcom.fr/:path*",
        permanent: true,
      },
    ];
  },
  async headers() {
    const noIndex = [{ key: "X-Robots-Tag", value: "noindex, nofollow, noarchive" }];
    return [
      { source: "/admin/:path*", headers: noIndex },
      { source: "/api/:path*", headers: noIndex },
      { source: "/devis", headers: noIndex },
      { source: "/bat", headers: noIndex },
      { source: "/pro", headers: noIndex },
      { source: "/atelier/:path*", headers: noIndex },
      { source: "/connexion", headers: noIndex },
    ];
  },
};

export default nextConfig;
