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

export default defineConfig(({ mode }) => {
  const plugins: PluginOption[] = [
    react(),
    tailwindcss(),
    tsconfigPaths({ ignoreConfigErrors: true }),
  ];

  if (mode !== "test" && process.env.VITEST !== "true") {
    plugins.push(cloudflare({ inspectorPort: 9232 }));
  }

  return {
    plugins,
    build: {
      sourcemap: mode === "test" ? false : "hidden",
    },
    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",
    },
  };
});
