import { configDefaults, defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
import react from '@vitejs/plugin-react';
import svgr from 'vite-plugin-svgr';
import envCompatible from 'vite-plugin-env-compatible';

const UNLEASH_API = process.env.UNLEASH_API || 'http://localhost:4242';
const UNLEASH_BASE_PATH = process.env.UNLEASH_BASE_PATH || '/';

if (!UNLEASH_BASE_PATH.startsWith('/') || !UNLEASH_BASE_PATH.endsWith('/')) {
    console.error('UNLEASH_BASE_PATH must both start and end with /');
    process.exit(1);
}

export default defineConfig({
    base: UNLEASH_BASE_PATH,
    build: {
        outDir: 'build',
        assetsDir: 'static',
    },
    test: {
        globals: true,
        setupFiles: 'src/setupTests.ts',
        environment: 'jsdom',
        exclude: [...configDefaults.exclude, '**/cypress/**'],
    },
    server: {
        open: true,
        host: true,
        proxy: {
            [`${UNLEASH_BASE_PATH}api`]: {
                target: UNLEASH_API,
                changeOrigin: true,
            },
            [`${UNLEASH_BASE_PATH}auth`]: {
                target: UNLEASH_API,
                changeOrigin: true,
            },
            [`${UNLEASH_BASE_PATH}logout`]: {
                target: UNLEASH_API,
                changeOrigin: true,
            },
        },
    },
    plugins: [react(), tsconfigPaths(), svgr(), envCompatible()],
});
