import { XllmError } from "../core/errors"; import type { ProviderAdapter, ProviderHttpRequest } from "../providers/types"; const toNetworkError = (error: unknown, provider: string): XllmError => { if (error instanceof XllmError) return error; const err = error as Error; return new XllmError({ code: "NETWORK_ERROR", message: err?.message || "Network request failed", provider, raw: error, }); }; export const postJSON = async ( fetchImpl: typeof fetch, request: ProviderHttpRequest, adapter: ProviderAdapter, ): Promise => { try { return await fetchImpl(request.url, { method: request.method, headers: request.headers, body: JSON.stringify(request.body), }); } catch (error) { throw toNetworkError(error, adapter.name); } }; export const throwForBadStatus = async (response: Response, adapter: ProviderAdapter): Promise => { if (response.ok) return; let raw: unknown = undefined; const textBody = await response.text(); try { raw = JSON.parse(textBody); } catch { raw = textBody; } throw adapter.normalizeError({ statusCode: response.status, message: (raw as any)?.error?.message ?? `HTTP ${response.status}`, raw, }); };