import unfetch from 'isomorphic-unfetch' ; export interface ErrorBuilder < T = unknown > extends Error { info ? : T ; status ? : number ; } export type APIResponse < T = { } > = { status : 'ok' ; data : T ; } | { status : 'error' ; data : { message : string ; } ; } ; param input param init export async function fetch < TResponse = any > ( input , init ? ) { const res = await unfetch ( input , init ) ; if ( ! res . ok ) { const error = new Error ( 'An error occurred while fetching the data.' ) ; error . info = await res . json ( ) ; error . status = res . status ; throw error ; } const data = await res . json ( ) ; return data ; }