// frontend/src/api.ts import 'tus-js-client' declare module 'tus-js-client' { interface UploadOptions { withCredentials?: boolean } } export async function api(path: string, init?: RequestInit): Promise { const r = await fetch(path, { credentials:'include', ...init }); if (!r.ok) throw new Error(await r.text()); const ct = r.headers.get('content-type') || ''; if (ct.includes('json')) return r.json() as Promise; const txt = await r.text(); try { return JSON.parse(txt) as T } catch { return txt as any as T } } export type WhoAmI = { username: string; root?: string; roots?: string[]; libs?: string[]; };