UNPKG

@krebinkkj/safe-fetch

Version:

A fetch wrapper on top of Rust's Result

29 lines (25 loc) 1.46 kB
import { Result } from '@sapphire/result'; declare class HttpError extends Error { readonly response: Response; readonly body: string; private json; constructor(response: Response, body: string); get url(): string; get code(): number; get jsonBody(): unknown; } type Awaitable<T> = PromiseLike<T> | T; declare function safeFetch(input: RequestInfo | URL, init?: RequestInit): Promise<FetchResult<Response>>; declare function safeTimedFetch(input: RequestInfo | URL, ms: number, init?: Omit<RequestInit, 'signal'>): Promise<FetchResult<Response>>; declare function Text(result: Awaitable<FetchResult<Response>>): Promise<FetchResult<string>>; declare function Json<T extends object>(result: Awaitable<FetchResult<Response>>): Promise<FetchResult<T>>; declare function Blob(result: Awaitable<FetchResult<Response>>): Promise<FetchResult<Blob>>; declare function ArrayBuffer(result: Awaitable<FetchResult<Response>>): Promise<FetchResult<ArrayBuffer>>; declare function FormData(result: Awaitable<FetchResult<Response>>): Promise<FetchResult<FormData>>; declare function isAbortError(error: Error): error is AbortError; type AbortError = Error & { name: 'AbortError'; }; type FetchError = HttpError | AbortError; type FetchResult<T> = Result<T, FetchError>; export { type AbortError, ArrayBuffer, type Awaitable, Blob, type FetchError, type FetchResult, FormData, HttpError, Json, Text, isAbortError, safeFetch, safeTimedFetch };