import { withSentryConfig } from "@sentry/nextjs";

/** @type {import('next').Config} */
const nextConfig = {
    output: 'standalone',
    // Enable source maps for Sentry stack traces in production
    productionBrowserSourceMaps: !!process.env.GLITCHTIP_DSN,
    experimental: {
        serverActions: {
            bodySizeLimit: '10mb',
        },
    },
};

// Wrap with Sentry only if DSN is configured
const sentryEnabled = !!process.env.GLITCHTIP_DSN || !!process.env.NEXT_PUBLIC_GLITCHTIP_DSN;

const sentryWebpackPluginOptions = {
    // Suppresses source map uploading logs during build
    silent: true,

    // Organization and project slugs (optional - for source map upload)
    org: process.env.GLITCHTIP_ORG,
    project: process.env.GLITCHTIP_PROJECT,

    // GlitchTip server URL
    sentryUrl: process.env.GLITCHTIP_URL,

    // Auth token for source map upload
    authToken: process.env.GLITCHTIP_AUTH_TOKEN,

    // Hides source maps from generated client bundles
    hideSourceMaps: true,

    // Automatically tree-shake Sentry logger statements
    disableLogger: true,

    // Prevent bundling of native binaries
    widenClientFileUpload: true,
};

export default sentryEnabled
    ? withSentryConfig(nextConfig, sentryWebpackPluginOptions)
    : nextConfig;
