import { createAuthClient } from 'better-auth/client' function apiUrl(): string { if (typeof window !== 'undefined' && (window as any).__E2E_API_URL) { return (window as any).__E2E_API_URL as string } return import.meta.env.VITE_API_URL ?? '/api' } // Better Auth mounts at /api/auth (default basePath); the client appends the // endpoint verbatim to baseURL, so the base must include /auth — otherwise it // emits /api/sign-in/email and 404s on both sandbox and deploy. export const authClient = createAuthClient({ baseURL: `${apiUrl()}/auth`, }) export async function signIn(email: string, password: string): Promise { const { error } = await authClient.signIn.email({ email, password }) if (error) throw new Error('Invalid credentials') } export async function signOut(): Promise { await authClient.signOut() }