import { defineConfig } from 'vite'
import mdx from '@mdx-js/rollup'
import react from '@vitejs/plugin-react'
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
import { paraglideVitePlugin } from '@inlang/paraglide-js'
import path from 'node:path'
import { getSitemapPages } from './lib/sitemap'

// Plain-object config (not a callback): the fabric deploy injects a CF adapter
// via `mergeConfig(base, thisConfig)`, and vite's mergeConfig cannot merge a
// config in the form of a callback. Paraglide is a hard dependency, so import
// it statically (matches the green germantax/perauset apps).
export default defineConfig({
  plugins: [
    paraglideVitePlugin({
      project: './project.inlang',
      outdir: './i18n/paraglide',
    }),
    { enforce: 'pre', ...mdx() },
    tanstackStart({
      srcDirectory: 'src',
      pages: getSitemapPages(),
      sitemap: {
        host: process.env.VITE_SITE_URL ?? 'https://hey-germany.com',
      },
      // Absolute routes/tree paths (matching the green germantax/perauset apps):
      // the deploy's route-tree generator reads these literally, so a bare
      // 'routes' resolves to apps/website/routes (which doesn't exist) — point at
      // the real src/routes so it works in the deploy CI and locally alike.
      router: {
        routesDirectory: path.resolve(import.meta.dirname, 'src/routes'),
        generatedRouteTree: path.resolve(import.meta.dirname, 'src/routeTree.gen.ts'),
      },
    }),
    react({
      include: /\.(mdx|js|jsx|ts|tsx)$/,
    }),
  ],
})
