import devServer, { defaultOptions } from "@hono/vite-dev-server";
import react from "@vitejs/plugin-react";
import tailwindcss from "@tailwindcss/vite";
import tsconfigPaths from "vite-tsconfig-paths";
import { defineConfig, loadEnv } from "vite";

export default defineConfig(({ mode }) => {
  if (process.env.QUESTS_INSIDE_STUDIO !== "true") {
    // When app is run outside Quests, this ensure .env* files are loaded
    // Removes need for VITE_ prefix in .env files for the server as well
    const env = loadEnv(mode, process.cwd(), "");
    process.env = env;
  }
  return {
    root: ".",
    server: {
      host: "0.0.0.0",
      port: 5173,
      // Erlaube Zugriffe von beliebigen Hosts (lokal + Proxy/Funnel)
      cors: true,
      // Keine explizite HMR/Origin-Konfiguration, Vite-Defaults für localhost funktionieren am stabilsten
    },
    publicDir: "public",
    build: {
      outDir: "dist",
      manifest: true,
      rollupOptions: {
        input: "index.html"
      }
    },
    plugins: [
      tsconfigPaths(),
      react(),
      tailwindcss(),
      devServer({
        // Exclude client folder from server because we only client render and
        // it interferes with image imports.
        exclude: [/src\/client\/.*/, ...defaultOptions.exclude],
        entry: "./src/server/index.ts",
      }),
    ],
  };
});
