import { defineConfig, type Plugin } from "vite"; import react from "@vitejs/plugin-react"; const isolationHeaders = { "Cross-Origin-Opener-Policy": "same-origin", "Cross-Origin-Embedder-Policy": "require-corp", "Cross-Origin-Resource-Policy": "same-origin", }; function preserveIsolationHeaders(): Plugin { const install = (server: { middlewares: { use: (handler: (request: unknown, response: { setHeader: (name: string, value: string) => void }, next: () => void) => void) => void } }) => { server.middlewares.use((_request, response, next) => { for (const [name, value] of Object.entries(isolationHeaders)) response.setHeader(name, value); next(); }); }; return { name: "preserve-isolation-headers", configureServer: install, configurePreviewServer: install, }; } export default defineConfig({ root: "app", plugins: [preserveIsolationHeaders(), react()], server: { port: 5173, strictPort: false, headers: { ...isolationHeaders, }, }, preview: { headers: { ...isolationHeaders, }, }, build: { outDir: "../dist", emptyOutDir: true, }, });