/* eslint-disable @typescript-eslint/no-var-requires */ /** @type {import("next").NextConfig} */ require("dotenv").config({ path: ".env" }); const { withSentryConfig } = require("@sentry/nextjs"); const nextConfig = { reactStrictMode: false, swcMinify: true, output: "standalone", async headers() { return [ { source: "/(.*)?", headers: [ { key: "X-Frame-Options", value: "SAMEORIGIN" }, { key: "Referrer-Policy", value: "origin-when-cross-origin", }, ], }, ]; }, images: { remotePatterns: [ { protocol: "https", hostname: "**", }, ], unoptimized: true, }, async redirects() { return [ { source: "/accounts/sign-up", destination: "/sign-up", permanent: true, }, { source: "/sign-in", destination: "/", permanent: true, }, { source: "/register", destination: "/sign-up", permanent: true, }, { source: "/login", destination: "/", permanent: true, }, ]; }, async rewrites() { const posthogHost = process.env.NEXT_PUBLIC_POSTHOG_HOST || "https://app.posthog.com" const rewrites = [ { source: "/ingest/static/:path*", destination: `${posthogHost}/static/:path*`, }, { source: "/ingest/:path*", destination: `${posthogHost}/:path*`, }, ]; if (process.env.NEXT_PUBLIC_ADMIN_BASE_URL || process.env.NEXT_PUBLIC_ADMIN_BASE_PATH) { const ADMIN_BASE_URL = process.env.NEXT_PUBLIC_ADMIN_BASE_URL || ""; const ADMIN_BASE_PATH = process.env.NEXT_PUBLIC_ADMIN_BASE_PATH || ""; const GOD_MODE_BASE_URL = ADMIN_BASE_URL + ADMIN_BASE_PATH; rewrites.push({ source: "/god-mode", destination: `${GOD_MODE_BASE_URL}/`, }) rewrites.push({ source: "/god-mode/:path*", destination: `${GOD_MODE_BASE_URL}/:path*`, }); } return rewrites; }, }; const sentryConfig = { // For all available options, see: // https://github.com/getsentry/sentry-webpack-plugin#options org: process.env.SENTRY_ORG_ID || "plane-hq", project: process.env.SENTRY_PROJECT_ID || "plane-web", authToken: process.env.SENTRY_AUTH_TOKEN, // Only print logs for uploading source maps in CI silent: true, // Upload a larger set of source maps for prettier stack traces (increases build time) widenClientFileUpload: true, // Route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers. // This can increase your server load as well as your hosting bill. // Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client- // side errors will fail. tunnelRoute: "/monitoring", // Hides source maps from generated client bundles hideSourceMaps: true, // Automatically tree-shake Sentry logger statements to reduce bundle size disableLogger: true, // Enables automatic instrumentation of Vercel Cron Monitors. (Does not yet work with App Router route handlers.) // See the following for more information: // https://docs.sentry.io/product/crons/ // https://vercel.com/docs/cron-jobs automaticVercelMonitors: true, } if (parseInt(process.env.SENTRY_MONITORING_ENABLED || "0", 10)) { module.exports = withSentryConfig(nextConfig, sentryConfig); } else { module.exports = nextConfig; }