import { defineConfig } from 'vite'; export default defineConfig({ // @sqlite.org/sqlite-wasm: // - JS-часть идёт как ESM (sqlite3-bundler-friendly.mjs), // - .wasm подхватывается относительно import.meta.url. // Vite из коробки копирует такие ассеты в dist и переписывает URL, // явно добавляем .wasm в assetsInclude и не оптимизируем пакет, // чтобы dev-сервер отдавал оригинальный .wasm байт-в-байт. assetsInclude: ['**/*.wasm'], optimizeDeps: { exclude: ['@sqlite.org/sqlite-wasm'], }, worker: { // Воркер БД (Шаг 2) будет в формате ESM — так sqlite-wasm работает корректно. format: 'es', }, server: { headers: { // Нужно для OPFS + SharedArrayBuffer (sqlite-wasm использует воркеры). // COOP/COEP обязательны для crossOriginIsolated. 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', }, }, plugins: [ { name: 'configure-response-headers', configureServer: (server) => { server.middlewares.use((_req, res, next) => { res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp'); res.setHeader('Cross-Origin-Opener-Policy', 'same-origin'); next(); }); }, }, ], });