export async function apiFetch(url: string, init?: RequestInit): Promise { const headers = { ...(init?.headers as Record) }; delete headers['content-length']; delete headers['transfer-encoding']; delete headers['connection']; delete headers['host']; const method = String(init?.method || 'GET').toUpperCase(); const isIdempotent = method === 'GET' || method === 'HEAD'; try { return await $fetch(url, { method: init?.method as any, headers, body: init?.body, responseType: 'json', retry: isIdempotent ? 2 : 0, retryDelay: 300, retryStatusCodes: [408, 425, 429, 500, 502, 503, 504], }); } catch (error: any) { throw createError({ statusCode: error?.statusCode || 502, statusMessage: 'API Error', message: `API error: ${error?.statusCode || 502} ${error?.statusMessage || error?.message || ''}`, data: error?.data || error?.response?._data, }); } }