import { defineConfig } from "vitest/config" import react, { reactCompilerPreset } from "@vitejs/plugin-react" import babel from "@rolldown/plugin-babel" import tailwindcss from "@tailwindcss/vite" import path from "node:path" // Box-Wart-Umbau (09/2026): Vite 8 (Rolldown) + React 19.3 mit React Compiler 1.0. // Der Compiler läuft über Babel (stabil); die Rust-Variante von plugin-react ist noch // experimentell. Er memoisiert selbst — useMemo/useCallback braucht der Code nicht. const ziel = process.env.MC_API_TARGET || "http://127.0.0.1:9000" export default defineConfig({ plugins: [react(), babel({ presets: [reactCompilerPreset()] }), tailwindcss()], resolve: { alias: { "@": path.resolve(__dirname, "./src") }, }, server: { proxy: { // Dev: /api → FastAPI-Backend (Override via MC_API_TARGET, z.B. die Box) "/api": { target: ziel, changeOrigin: true }, // Hermes-Dashboard läuft same-origin über den MC2-Reverse-Proxy, mit WebSockets. "/hermes-ui": { target: ziel, changeOrigin: true, ws: true }, }, }, build: { outDir: "dist" }, // Vitest teilt sich diese Konfiguration (Aliase, Plugins) — kein zweiter Build-Aufbau. // jsdom, weil die Tests echte Komponenten mounten; `globals` spart den import in jeder Datei. test: { environment: "jsdom", globals: true, setupFiles: ["./src/test/setup.ts"], include: ["src/**/*.test.{ts,tsx}"], restoreMocks: true, }, })