import { handleError, handleResponse, handleResponseError, constructHeaders } from './base' import { uuidv4 } from '../../helpers' import { SupaResponse } from 'types/base' export async function get( url: string, options?: { [prop: string]: any } ): Promise> { const requestId = uuidv4() try { const { headers: optionHeaders, ...otherOptions } = options ?? {} const headers = await constructHeaders(requestId, optionHeaders) const response = await fetch(url, { method: 'GET', credentials: 'include', referrerPolicy: 'no-referrer-when-downgrade', headers, ...otherOptions, }) if (!response.ok) return handleResponseError(response, requestId) return handleResponse(response, requestId) } catch (error) { return handleError(error, requestId) } } export async function getWithTimeout( url: string, options?: { [prop: string]: any } ): Promise> { const requestId = uuidv4() try { const timeout = options?.timeout ?? 60000 const controller = new AbortController() const id = setTimeout(() => controller.abort(), timeout) const { headers: optionHeaders, ...otherOptions } = options ?? {} const headers = await constructHeaders(requestId, optionHeaders) const response = await fetch(url, { method: 'GET', credentials: 'include', referrerPolicy: 'no-referrer-when-downgrade', headers, ...otherOptions, signal: controller.signal, }) clearTimeout(id) if (!response.ok) return handleResponseError(response, requestId) return handleResponse(response, requestId) } catch (error) { return handleError(error, requestId) } }