import { withSentryConfig } from '@sentry/nextjs';
import { createJiti } from 'jiti';
import { withPlausibleProxy } from 'next-plausible';

const jiti = createJiti(import.meta.url);
await jiti.import('./src/env');

/** @type {import("next").NextConfig} */
const config = withPlausibleProxy({
  customDomain: process.env.NEXT_PUBLIC_PLAUSIBLE_URL,
})({
  output: 'standalone',
  images: {
    remotePatterns: [
      {
        protocol: 'https',
        hostname: '*.gbrown.org',
      },
    ],
  },
  serverExternalPackages: ['require-in-the-middle'],
  experimental: {
    serverActions: {
      bodySizeLimit: '10mb',
    },
  },
  /** Enables hot reloading for local packages without a build step */
  transpilePackages: ['@gib/backend', '@gib/ui'],
  typescript: { ignoreBuildErrors: true },
});

const sentryConfig = {
  // For all available options, see:
  // https://www.npmjs.com/package/@sentry/webpack-plugin#options
  org: process.env.NEXT_PUBLIC_SENTRY_ORG,
  project: process.env.NEXT_PUBLIC_SENTRY_PROJECT_NAME,
  sentryUrl: process.env.NEXT_PUBLIC_SENTRY_URL,
  authToken: process.env.SENTRY_AUTH_TOKEN,
  // Only print logs for uploading source maps in CI
  silent: !process.env.CI,
  // For all available options, see:
  // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
  // 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',
  // Automatically tree-shake Sentry logger statements to reduce bundle size
  disableLogger: true,
  // Capture React Component Names
  reactComponentAnnotation: {
    enabled: true,
  },
};
export default withSentryConfig(config, sentryConfig);
