const BASE = import.meta.env.DEV ? 'http://127.0.0.1:8801' : ''; let token = localStorage.getItem('hub_token') ?? ''; export function setToken(value: string): void { token = value.trim(); if (token) localStorage.setItem('hub_token', token); else localStorage.removeItem('hub_token'); } async function call(method: string, path: string, body?: unknown): Promise { const response = await fetch(BASE + path, { method, headers: { 'Content-Type': 'application/json', ...(token ? { Authorization: `Bearer ${token}` } : {}), }, body: body === undefined ? undefined : JSON.stringify(body), }); const data = (await response.json().catch(() => ({}))) as Record; if (!response.ok) { throw new Error(typeof data.detail === 'string' ? data.detail : `${response.status} ${response.statusText}`); } return data as T; } export const api = { get: (path: string) => call('GET', path), post: (path: string, body?: unknown) => call('POST', path, body ?? {}), del: (path: string) => call('DELETE', path), }; export function errorText(error: unknown): string { return error instanceof Error ? error.message : String(error); }