import adapter from '@sveltejs/adapter-static' import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' /** @type {import('@sveltejs/kit').Config} */ const config = { preprocess: vitePreprocess(), kit: { // Site 100 % prérendu : servi par nginx sur l'infra OKI, mirrorable // (ADR-001 ; doctrine §4.4 — HTML rendu serveur, un lien marche sans JS). adapter: adapter({ fallback: '404.html' }), // Déployé à la racine de https://chatcontrol.o-k-i.net/ (YunoHost) : // pas de paths.base. Pour servir sous un sous-chemin, ajouter ici // paths: { base: '/prefixe' } et adapter les règles du serveur. // Le script de démarrage SvelteKit est inline (il embarque les données de // la page) : une CSP `script-src 'self'` posée en en-tête HTTP le bloque // et tue l'hydratation (recherche et filtres morts — vécu sur o2switch). // En mode hash, chaque page prérendue porte une CSP avec l'empreinte // de SON script inline. L'en-tête serveur ne doit donc plus fixer // script-src (voir DEPLOYMENT.md §2/§3). csp: { mode: 'hash', directives: { 'script-src': ['self'] } }, // Un seul bundle JS + une seule feuille CSS au lieu de ~30 chunks : // moins de requêtes par page (3G, anti-flood o2switch qui répond 429). output: { bundleStrategy: 'single' }, prerender: { handleHttpError: 'fail' } } } export default config