import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
import { fileURLToPath } from 'node:url';
import { dirname, resolve as resolvePath } from 'node:path';

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const repoRoot = resolvePath(__dirname, '..', '..');

export default defineConfig(({ mode }) => {
	const isDev = mode === 'development';

	return {
		plugins: [sveltekit()],
		resolve: {
			// En desarrollo, alias para usar better-sqlite3 (Vite/HMR no entiende 'bun:sqlite')
			alias: isDev ? [{ find: 'bun:sqlite', replacement: 'better-sqlite3' }] : []
		},
		ssr: {
			// En dev, externalizar better-sqlite3 (CJS nativo) para que se cargue vía require;
			// en producción, externalizar 'bun:sqlite' y que lo resuelva Bun en runtime.
			external: isDev ? ['better-sqlite3'] : ['bun:sqlite']
		},
		optimizeDeps: {
			// Evitar prebundling de drivers nativos
			exclude: ['bun:sqlite', 'better-sqlite3']
		},
		// Permitir host remoto en desarrollo y permitir importar fuera del root (reexport desde core)
		server: isDev ? { allowedHosts: ['server.brobert.net'], fs: { allow: [repoRoot] } } : undefined
	};
});
