const BASE = import.meta.env.VITE_API_URL ?? '/api' export async function apiFetch(path: string, init?: RequestInit): Promise { const res = await fetch(`${BASE}${path}`, { ...init, credentials: 'include', headers: { 'Content-Type': 'application/json', ...init?.headers }, }) if (!res.ok) { let message = `Request failed (${res.status})` try { const body = await res.json() if (body?.detail) message = body.detail else if (body?.title) message = body.title } catch { // ignore parse errors } throw new Error(message) } return res.status === 204 ? (undefined as T) : res.json() }