import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
  build: {
    outDir: '../dist',
    emptyOutDir: true,
    // Увеличиваем лимит для предупреждений о размере chunk
    chunkSizeWarningLimit: 1000,
    // Минификация и оптимизация (esbuild быстрее terser)
    minify: 'esbuild',
    esbuild: {
      drop: ['console', 'debugger'], // Удаляем console.log и debugger в production
    },
    rollupOptions: {
      output: {
        // Code splitting: разделяем vendor библиотеки и app код
        manualChunks: (id) => {
          // React и React-DOM в отдельный chunk
          if (id.includes('node_modules/react') || id.includes('node_modules/react-dom')) {
            return 'react-vendor';
          }
          // React Router в отдельный chunk
          if (id.includes('node_modules/react-router-dom')) {
            return 'router-vendor';
          }
          // Axios в отдельный chunk
          if (id.includes('node_modules/axios')) {
            return 'axios-vendor';
          }
          // Headless UI в отдельный chunk
          if (id.includes('node_modules/@headlessui')) {
            return 'ui-vendor';
          }
          // i18next в отдельный chunk
          if (id.includes('node_modules/i18next') || id.includes('node_modules/react-i18next')) {
            return 'i18n-vendor';
          }
          // BIP39 words в отдельный chunk (большой массив)
          if (id.includes('bip39-words')) {
            return 'bip39-words';
          }
          // Остальные node_modules в общий vendor
          if (id.includes('node_modules')) {
            return 'vendor';
          }
        },
        entryFileNames: 'main.[hash].js',
        chunkFileNames: 'chunks/[name].[hash].js',
        assetFileNames: (assetInfo) => {
          if (assetInfo.name.endsWith('.css')) {
            return 'main.[hash].css'
          }
          return 'assets/[name].[hash][extname]'
        }
      }
    }
  },
  server: {
    port: 3000,
    proxy: {
      '/api': {
        target: 'http://localhost:8080',
        changeOrigin: true
      }
    }
  }
})
