import { getToken, clearToken } from './auth.mjs'; const BASE = '/api'; async function request(method, path, body, isFormData = false) { const token = getToken(); const headers = {}; if (token) headers['Authorization'] = `Bearer ${token}`; if (!isFormData && body !== undefined) headers['Content-Type'] = 'application/json'; const res = await fetch(BASE + path, { method, headers, body: body !== undefined ? (isFormData ? body : JSON.stringify(body)) : undefined, }); if (res.status === 401) { clearToken(); window.dispatchEvent(new CustomEvent('auth:expired')); throw new Error('Session expired'); } const json = await res.json().catch(() => ({})); if (!res.ok) throw new Error(json.error || `Request failed (${res.status})`); return json.data; } export const api = { get: (path) => request('GET', path), post: (path, body) => request('POST', path, body), put: (path, body) => request('PUT', path, body), delete: (path) => request('DELETE', path), upload: (path, form) => request('POST', path, form, true), };