import { defineConfig } from "vitest/config"; import { resolve } from "path"; import { readFileSync } from "fs"; import solid from "vite-plugin-solid"; function loadEnvFile(filePath: string): Record { try { const content = readFileSync(filePath, "utf-8"); const env: Record = {}; for (const line of content.split("\n")) { const trimmed = line.trim(); if (!trimmed || trimmed.startsWith("#")) continue; const eqIndex = trimmed.indexOf("="); if (eqIndex === -1) continue; const key = trimmed.slice(0, eqIndex).trim(); let value = trimmed.slice(eqIndex + 1).trim(); if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) { value = value.slice(1, -1); } env[key] = value; } return env; } catch { return {}; } } const env = { ...loadEnvFile(".env"), ...loadEnvFile(".env.local") }; const mocksDir = resolve(__dirname, "./test/__mocks__"); export default defineConfig({ plugins: [solid()], test: { environment: "jsdom", setupFiles: ["./test/setup.ts"], exclude: ["**/node_modules/**", "**/e2e/**", "**/dist/**", "**/onnx.inference.test.ts"], env: { RESEND_API_KEY: env.RESEND_API_KEY ?? "", STRIPE_SECRET_KEY: env.STRIPE_SECRET_KEY ?? "", STRIPE_WEBHOOK_SECRET: env.STRIPE_WEBHOOK_SECRET ?? "", STRIPE_PRICE_BASIC: env.STRIPE_PRICE_BASIC ?? "", STRIPE_PRICE_PLUS: env.STRIPE_PRICE_PLUS ?? "", STRIPE_PRICE_PREMIUM: env.STRIPE_PRICE_PREMIUM ?? "", OPENAI_API_KEY: env.OPENAI_API_KEY ?? "", JWT_SECRET: env.JWT_SECRET ?? "test-secret-for-testing", }, }, resolve: { alias: [ { find: "~", replacement: resolve(__dirname, "./src") }, { find: /^ws$/, replacement: resolve(mocksDir, "ws.js") }, { find: /^@libsql\/client$/, replacement: resolve(mocksDir, "libsql.js") }, { find: /^drizzle-orm\/libsql\/migrator$/, replacement: resolve(mocksDir, "drizzle-orm-libsql-migrator.js") }, { find: /^drizzle-orm\/libsql$/, replacement: resolve(mocksDir, "drizzle-orm-libsql.js") }, { find: /^drizzle-orm\/sqlite-core$/, replacement: resolve(mocksDir, "drizzle-orm-sqlite-core.js") }, { find: /^drizzle-orm$/, replacement: resolve(mocksDir, "drizzle-orm.js") }, ], }, });