import {readFileSync} from 'node:fs'; import {fileURLToPath} from 'node:url'; import {vitePlugin as remix} from '@remix-run/dev'; import react from '@vitejs/plugin-react'; import sylvite from 'sylvite'; import {defineConfig} from 'vite'; import environment from './environment.server.js'; const { httpsCert, httpsKey, isInsecure, } = environment(); const {hooks} = await sylvite({ ...await import('./sylvite.config.js'), }); const plugins = []; if (!process.env.REMIX_DISABLED) { plugins.push( remix({ future: { v3_fetcherPersist: true, v3_relativeSplatPath: true, v3_throwAbortReason: true, unstable_singleFetch: true, unstable_lazyRouteDiscovery: true, }, routes(defineRoutes) { return defineRoutes((route) => { hooks.call('./sylvite/remix:defineRemixRoutes', route); }); }, }), ); } else { plugins.push(react()); } export default defineConfig(hooks.call('sylvite:viteConfig', { esbuild: { supported: { 'top-level-await': true, }, }, plugins, resolve: { alias: [ { find: '@', replacement: fileURLToPath(new URL('./app', import.meta.url)), }, ], }, server: { host: true, ...(!isInsecure && { https: { key: readFileSync(httpsKey), cert: readFileSync(httpsCert), }, }), }, worker: { format: 'es', }, }));