import type { AxiosResponseHeaders, RawAxiosResponseHeaders } from "axios"; export async function withRetry( fn: () => Promise, retry: number = 0 ): Promise { let lastErr; for (let i = 0; i <= retry; i++) { try { return await fn(); } catch (e) { lastErr = e; } } throw lastErr; } export type AxiosLikeHeaders = | AxiosResponseHeaders | Partial | Record | undefined; export function normalizeHeaders(headers: AxiosLikeHeaders): Record { const out: Record = {}; if (!headers) return out; for (const [key, value] of Object.entries(headers)) { if (value === undefined || value === null) continue; if (Array.isArray(value)) { out[key] = value.map(String).join(", "); continue; } out[key] = String(value); } return out; }