function getAuthHeader(): string { const token = localStorage.getItem('token'); return token ? `Bearer ${token}` : ''; } async function apiGet(url: string): Promise { return fetch(`/api${url}`, { headers: { 'Authorization': getAuthHeader(), 'Content-Type': 'application/json' } }); } async function apiPost(url: string, data?: unknown): Promise { return fetch(`/api${url}`, { method: 'POST', headers: { 'Authorization': getAuthHeader(), 'Content-Type': 'application/json' }, body: data ? JSON.stringify(data) : undefined }); } async function apiPut(url: string, data?: unknown): Promise { return fetch(`/api${url}`, { method: 'PUT', headers: { 'Authorization': getAuthHeader(), 'Content-Type': 'application/json' }, body: data ? JSON.stringify(data) : undefined }); } async function apiDelete(url: string): Promise { return fetch(`/api${url}`, { method: 'DELETE', headers: { 'Authorization': getAuthHeader() } }); } async function apiPatch(url: string, data?: unknown): Promise { return fetch(`/api${url}`, { method: 'PATCH', headers: { 'Authorization': getAuthHeader(), 'Content-Type': 'application/json' }, body: data ? JSON.stringify(data) : undefined }); } async function handleResponse(response: Response): Promise { if (!response.ok) { const errorData = await response.json().catch(() => ({ error: 'Unknown error' })); throw new Error(errorData.error || `HTTP ${response.status}`); } return response.json(); } async function handleVoidResponse(response: Response): Promise { if (!response.ok) { const errorData = await response.json().catch(() => ({ error: 'Unknown error' })); throw new Error(errorData.error || `HTTP ${response.status}`); } } function handleError(error: unknown, context: string): void { console.error(`${context}:`, error); const message = error instanceof Error ? error.message : 'An unexpected error occurred'; if ((window as any).showToast?.error) { (window as any).showToast.error(message); } } (window as any).api = { get: apiGet, post: apiPost, put: apiPut, delete: apiDelete, patch: apiPatch, handleResponse, handleVoidResponse, handleError }; export { getAuthHeader, apiGet, apiPost, apiPut, apiDelete, apiPatch, handleResponse, handleVoidResponse, handleError };