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

export default defineConfig({
  plugins: [
    react(),
    {
      name: 'legacy-earth',
      configureServer(server) {
        server.middlewares.use('/legacy/earth', (req, res, next) => {
          let url = req.url || '/'
          
          if (url === '' || url === '/') {
            url = '/3dearthmult.html'
          }
          
          const filePath = path.resolve(__dirname, 'legacy/3dearthmult' + url)
          
          if (fs.existsSync(filePath) && fs.statSync(filePath).isFile()) {
            const ext = path.extname(filePath).toLowerCase()
            const contentTypes = {
              '.html': 'text/html',
              '.json': 'application/json',
              '.jpg': 'image/jpeg',
              '.jpeg': 'image/jpeg',
              '.png': 'image/png',
              '.js': 'application/javascript',
              '.css': 'text/css'
            }
            res.setHeader('Content-Type', contentTypes[ext] || 'text/plain')
            fs.createReadStream(filePath).pipe(res)
          } else {
            next()
          }
        })
      }
    }
  ],
  server: {
    port: 3000,
    proxy: {
      '/api': {
        target: 'http://localhost:8000',
        changeOrigin: true,
        secure: false,
      },
      '/ws': {
        target: 'ws://localhost:8000',
        ws: true,
        changeOrigin: true,
        secure: false,
      },
    },
    fs: {
      allow: ['..'],
    },
  },
  publicDir: 'public',
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
    },
  },
  optimizeDeps: {
    exclude: ['satellite.js'],
  },
})
