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

/** Short git SHA + build date, injected as __EDITOR_BUILD__ so an issue
 *  report identifies exactly which bundle produced it. package.json's
 *  version is hand-maintained and never changes between builds. */
const editorBuild = (() => {
  let sha = 'nogit'
  try {
    sha = execSync('git rev-parse --short HEAD', {
      cwd: __dirname,
      stdio: ['ignore', 'pipe', 'ignore'],
    }).toString().trim()
  } catch {
    // Building outside a git checkout (release tarball) -- keep 'nogit'.
  }
  return `${sha}-${new Date().toISOString().slice(0, 10)}`
})()

export default defineConfig({
  plugins: [react()],
  base: './',
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
    },
  },
  define: {
    __EDITOR_BUILD__: JSON.stringify(editorBuild),
  },
  build: {
    outDir: 'dist',
    rollupOptions: {
      output: {
        entryFileNames: 'js/editor.js',
        chunkFileNames: 'js/[name].js',
        assetFileNames: (info) =>
          info.name?.endsWith('.css') ? 'css/editor.css' : 'assets/[name][extname]',
      },
    },
  },
  server: {
    port: 5173,
    proxy: {
      '/api': 'http://192.168.1.148:8080',
    },
  },
})
