60 lines
2.3 KiB
TypeScript
60 lines
2.3 KiB
TypeScript
import { defineConfig } from "vitest/config";
|
|
import { resolve } from "path";
|
|
import { readFileSync } from "fs";
|
|
import solid from "vite-plugin-solid";
|
|
|
|
function loadEnvFile(filePath: string): Record<string, string> {
|
|
try {
|
|
const content = readFileSync(filePath, "utf-8");
|
|
const env: Record<string, string> = {};
|
|
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") },
|
|
],
|
|
},
|
|
});
|