import { fileURLToPath } from 'node:url'
import { nstartAuth } from '@nstart/auth/vite'
import react from '@vitejs/plugin-react'
// vitest/config расширяет vite defineConfig — нужно для блока test ниже.
import { defineConfig } from 'vitest/config'

// Сборочная заглушка @nstart/ui: @nstart/auth реэкспортирует ProfilePage/UserPanel
// (с lottie ~6 МБ), которые в сервисе не используются. Алиас отдаёт их импорты в
// лёгкий стаб, чтобы их UI не попадал в бандл. Типы tsc берёт из реального пакета.
const nstartUiStub = fileURLToPath(new URL('./src/stubs/nstart-ui.tsx', import.meta.url))

export default defineConfig({
  // nstartAuth() обслуживает /silent-check-sso.html (нужен части режимов входа);
  // при loginMode=redirect безвреден. @nstart/ui-плагины и tailwind НЕ подключаем —
  // их UI в сервисе не используется.
  plugins: [nstartAuth(), react()],
  resolve: {
    dedupe: ['react', 'react-dom'],
    alias: [{ find: /^@nstart\/ui$/, replacement: nstartUiStub }],
  },
  server: {
    host: '0.0.0.0',
    port: 5174,
    // Всё /api/* уходит на gateway (Spring Cloud Gateway, dev :7080). Gateway сам
    // срезает префиксы pcp-* (StripPrefix) и выбирает бэкенд — ровно то, что раньше
    // делали правила-зеркала здесь. В проде то же делает nginx.conf.
    proxy: {
      '/api': {
        target: 'http://localhost:7080',
        changeOrigin: true,
      },
    },
  },
  test: {
    environment: 'jsdom',
    globals: true,
  },
})
