UNPKG

@boxyhq/svelte-ui

Version:

Svelte UI components from BoxyHQ

45 lines (44 loc) 1.21 kB
async function parseResponseContent(response) { const responseText = await response.text(); try { return responseText.length ? JSON.parse(responseText) : ''; } catch (err) { return responseText; } } export async function sendHTTPRequest(url, options) { try { const response = await fetch(url, options); if (response.status === 204) { return; } const pageToken = response.headers.get('jackson-pagetoken'); const responseContent = await parseResponseContent(response); if (!response.ok) { throw new ApiError(response.status, responseContent.error.message); } if (pageToken && typeof responseContent === 'object') { return { data: responseContent, pageToken }; } return responseContent; } catch (error) { const message = error.message || 'Something went wrong'; return { error: { message } }; } } class ApiError extends Error { status; constructor(status, message) { super(message); this.status = status; } }