@krebinkkj/safe-fetch
Version:
A fetch wrapper on top of Rust's Result
29 lines (25 loc) • 1.46 kB
text/typescript
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 };