/** @type {import('next').NextConfig} */
import os from "os";
const isWindows = os.platform() === "win32";

// Security headers
const securityHeaders = [
    {
        key: "Referrer-Policy",
        value: "strict-origin-when-cross-origin",
    },
    {
        key: "X-Content-Type-Options",
        value: "nosniff",
    },
    {
        key: "X-Frame-Options",
        value: "DENY",
    },
    {
        key: "Permissions-Policy",
        value: "camera=(), microphone=(), geolocation=()",
    },
];

const nextConfig = {
    // Hide "X-Powered-By: Next.js"
    poweredByHeader: false,
    experimental: {
        serverComponentsExternalPackages: ["typeorm", "knex"],
    },
    reactStrictMode: true,

    async rewrites() {
        return [
            {
                source: "/api/:path*",
                destination: isWindows
                    ? "http://localhost:8080/api/:path*" // For Windows
                    : "http://localhost:8080/api/:path*", // For Linux/Mac/Server
            },
        ];
    },

    async headers() {
        return [
            {
                source: "/(.*)", // Apply to all routes
                headers: securityHeaders,
            },
        ];
    },
};

export default nextConfig;
