const BASE = "/api"; async function request(path: string, init?: RequestInit): Promise { const headers = new Headers(init?.headers ?? undefined); const body = init?.body; if (!(body instanceof FormData) && !headers.has("Content-Type")) { headers.set("Content-Type", "application/json"); } const res = await fetch(`${BASE}${path}`, { headers, ...init, }); if (!res.ok) { const body = await res.json().catch(() => null); throw new Error(body?.error ?? `Request failed: ${res.status}`); } return res.json(); } export const api = { get: (path: string) => request(path), post: (path: string, body: unknown) => request(path, { method: "POST", body: JSON.stringify(body) }), postForm: (path: string, body: FormData) => request(path, { method: "POST", body }), patch: (path: string, body: unknown) => request(path, { method: "PATCH", body: JSON.stringify(body) }), delete: (path: string) => request(path, { method: "DELETE" }), };