import { execSync } from "node:child_process"; import { readFileSync } from "node:fs"; import tailwindcss from "@tailwindcss/vite"; import { defineConfig } from "vite"; import solid from "vite-plugin-solid"; const { version } = JSON.parse(readFileSync(new URL("package.json", import.meta.url), "utf8")) as { version: string; }; function gitCommit(): string { try { return execSync("git rev-parse --short HEAD", { encoding: "utf8" }).trim(); } catch { return "unknown"; } } // @tursodatabase/database-wasm uses SharedArrayBuffer, which requires cross-origin // isolation in dev AND production (see public/_headers for deployed hosts). const crossOriginIsolation = { "Cross-Origin-Opener-Policy": "same-origin", "Cross-Origin-Embedder-Policy": "require-corp", }; export default defineConfig({ define: { __APP_VERSION__: JSON.stringify(version), __GIT_COMMIT__: JSON.stringify(gitCommit()), }, plugins: [solid(), tailwindcss()], server: { headers: crossOriginIsolation }, preview: { headers: crossOriginIsolation }, // optimizeDeps: { // exclude: ["@tursodatabase/database-wasm"], // }, });