database reading

This commit is contained in:
micialware committed 2026-09-14 14:32:38 +03:00
1 parent 68c24dcec5
commit fc8455e353
418 files changed
+674410 -1561

No files matched your search

+27 -15
View File
@@ -1,26 +1,38 @@
import { defineConfig } from 'vite';
// Настройка проекта под wa-sqlite (SQLite в браузере через WebAssembly).
export default defineConfig({
// Файлы .wasm (сборка SQLite из пакета wa-sqlite) считаем статическими
// ассетами: Vite копирует их в dist/ без трансформации и отдаёт в dev
// как есть. Импорт вида `import url from '...wasm?url'` работает всегда.
// @sqlite.org/sqlite-wasm:
// - JS-часть идёт как ESM (sqlite3-bundler-friendly.mjs),
// - .wasm подхватывается относительно import.meta.url.
// Vite из коробки копирует такие ассеты в dist и переписывает URL,
// явно добавляем .wasm в assetsInclude и не оптимизируем пакет,
// чтобы dev-сервер отдавал оригинальный .wasm байт-в-байт.
assetsInclude: ['**/*.wasm'],
optimizeDeps: {
// wa-sqlite сам находит свой .wasm-бинарник по соседству с .mjs-загрузчиком
// (new URL("wa-sqlite.wasm", import.meta.url)). Если позволить Vite
// пре-баблить пакет в .vite/deps, import.meta.url укажет не туда и загрузка
// SQLite упадёт. Поэтому пакет исключаем из пре-баблинга.
exclude: ['wa-sqlite'],
exclude: ['@sqlite.org/sqlite-wasm'],
},
worker: {
// Воркер БД (Шаг 2) будет в формате ESM — так sqlite-wasm работает корректно.
format: 'es',
},
server: {
headers: {
// Требуется для OPFS (Origin Private File System): без этого заголовка
// браузер блокирует доступ к OPFS из встроенного (cross-origin)
// контекста. Дублируется через <meta> в index.html.
// Нужно для 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();
});
},
},
],
});