export interface LfsBatchRequest { operation: "download" | "upload"; transfers?: string[]; objects: LfsObject[]; } export interface LfsObject { oid: string; size: number; } export interface LfsBatchResponse { transfer?: string; objects: LfsObjectResult[]; } export interface LfsObjectResult { oid: string; size: number; authenticated?: boolean; actions?: LfsActions; error?: LfsObjectError; } export interface LfsActions { download?: LfsAction; upload?: LfsAction; verify?: LfsAction; } export interface LfsAction { href: string; header?: Record; expires_in?: number; } export interface LfsObjectError { code: number; message: string; } export interface LfsVerifyRequest { oid: string; size: number; } const LFS_CONTENT_TYPE = "application/vnd.git-lfs+json"; export function lfsJson(body: unknown, status = 200): Response { return new Response(JSON.stringify(body), { status, headers: { "Content-Type": LFS_CONTENT_TYPE }, }); } export function lfsError(code: number, message: string): Response { return lfsJson({ message }, code); }