2025-09-16 23:06:40 -05:00

25 lines
653 B
TypeScript

// frontend/src/api.ts
import 'tus-js-client'
declare module 'tus-js-client' {
interface UploadOptions {
withCredentials?: boolean
}
}
export async function api<T=any>(path: string, init?: RequestInit): Promise<T> {
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<T>;
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[];
};