/// <reference types="vitest" />

import { cloudflare } from "@cloudflare/vite-plugin";
import tailwindcss from "@tailwindcss/vite";
import react from "@vitejs/plugin-react";
import { visualizer } from "rollup-plugin-visualizer";
import { defineConfig, type PluginOption } from "vite";
import tsconfigPaths from "vite-tsconfig-paths";

// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
  const plugins: PluginOption[] = [
    react(),
    visualizer() as PluginOption,
    tailwindcss(),
    tsconfigPaths(),
  ];

  // Only include cloudflare plugin when not in test mode
  if (mode !== "test" && process.env.VITEST !== "true") {
    plugins.push(cloudflare({ inspectorPort: 9230 }));
  }

  return {
    plugins,
    server: {
      cors: false,
    },
    define: process.env.VITEST
      ? {
          "import.meta.env.VITE_SUPABASE_URL": JSON.stringify("https://test.supabase.co"),
          "import.meta.env.VITE_SUPABASE_ANON_KEY": JSON.stringify("test-anon-key"),
        }
      : undefined,
    test: {
      globals: true,
      environment: "jsdom",
      setupFiles: "./src/setupTests.ts",
    },
  };
});
