const BASE_URL = 'http://localhost:8000'; export async function fetchApi( endpoint: string, options: RequestInit = {} ): Promise { const headers = new Headers(options.headers || {}); // Default to JSON content type for non-FormData requests if (!headers.has('Content-Type') && !(options.body instanceof FormData)) { headers.set('Content-Type', 'application/json'); } const response = await fetch(`${BASE_URL}${endpoint}`, { ...options, headers, }); if (!response.ok) { let errorMsg = 'An unexpected error occurred'; try { const errorData = await response.json(); errorMsg = errorData.detail || errorMsg; } catch { /* ignore parse error */ } throw new Error(errorMsg); } // Handle empty responses if (response.status === 204) return {} as T; return response.json(); }