import { defineConfig } from "vitest/config";
import react from "@vitejs/plugin-react";
import tailwindcss from "@tailwindcss/vite";
import { vaultDevServer } from "./tools/vault-dev-server";

const host = process.env.TAURI_DEV_HOST;

// https://vite.dev/config/
export default defineConfig({
  plugins: [react(), tailwindcss(), vaultDevServer()],
  clearScreen: false,
  server: {
    port: 1420,
    strictPort: true,
    // Bind IPv4 loopback explicitly: an IPv6-only `localhost` listener makes the
    // HMR socket drop for Chromium/WebView2 clients that prefer 127.0.0.1.
    host: host || "127.0.0.1",
    hmr: host ? { protocol: "ws", host, port: 1421 } : undefined,
    watch: {
      ignored: [
        "**/src-tauri/**",
        "**/target/**",
        "**/dist/**",
        "**/.dev-vault/**",
        "**/.dev-remote/**",
        "**/.dev-clone/**",
        "**/.dev-config/**",
        "**/*.tsbuildinfo",
      ],
    },
  },
  envPrefix: ["VITE_", "TAURI_ENV_*"],
  build: {
    target: "es2021",
    minify: "esbuild",
    sourcemap: false,
  },
  test: {
    environment: "jsdom",
    include: ["src/**/*.test.{ts,tsx}", "pi-extension/**/*.test.ts"],
    setupFiles: ["./src/test/setup.ts"],
  },
});