import { defineConfig, loadEnv } from 'vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'
import path from 'path'

// https://vite.dev/config/
export default defineConfig(({ mode }) => {
  const env = loadEnv(mode, __dirname, '')
  const appwriteDevOrigin = (env.APPWRITE_DEV_ORIGIN || '').replace(/\/$/, '')
  // 127.0.0.1 avoids Windows localhost → IPv6 (::1) vs backend listening on IPv4-only
  const apiDevTarget = (env.VITE_DEV_API_ORIGIN || 'http://127.0.0.1:3000').replace(
    /\/$/,
    ''
  )

  const proxy: Record<
    string,
    { target: string; changeOrigin: boolean; secure?: boolean }
  > = {
    '/api': {
      target: apiDevTarget,
      changeOrigin: true,
    },
    '/stripe': {
      target: apiDevTarget,
      changeOrigin: true,
    },
  }

  // Dev: Browser → localhost:5173/v1/* → Appwrite (umgeht CORS, wenn die Console nur z. B. webklar.com erlaubt)
  if (mode === 'development' && appwriteDevOrigin) {
    proxy['/v1'] = {
      target: appwriteDevOrigin,
      changeOrigin: true,
      secure: true,
    }
  }

  return {
    plugins: [react(), tailwindcss()],
    resolve: {
      alias: {
        '@': path.resolve(__dirname, './src'),
      },
    },
    server: {
      port: 5173,
      // Wenn 5173 schon belegt ist, nicht still auf einen anderen Port wechseln — sonst öffnet man oft noch die alte URL und bekommt für /api 404.
      strictPort: true,
      proxy,
    },
  }
})
