@hazae41/glacier
Version:
Yet another React data (re)fetching library
66 lines (64 loc) • 2.06 kB
TypeScript
interface RequestLike extends RequestInit {
url: string;
destination: RequestDestination;
}
interface EmptyRequestInit extends Omit<RequestInit, "body"> {
}
declare namespace EmptyRequest {
/**
* Hack to only allow EmptyRequest or Request-like but not any other variant
*/
interface From extends RequestLike {
bodyAsText?: undefined;
bodyAsJson?: undefined;
}
}
declare class EmptyRequest extends Request {
#private;
constructor(input: RequestInfo, init?: EmptyRequestInit);
static from(from: EmptyRequest.From): Promise<EmptyRequest>;
get headersAsJson(): Record<string, string>;
toJSON(): RequestLike;
}
interface TextRequestInit extends Omit<RequestInit, "body"> {
body: string;
}
declare namespace TextRequest {
/**
* Hack to only allow TextRequest or Request-like but not any other variant
*/
interface From extends RequestLike {
bodyAsText?: string;
bodyAsJson?: undefined;
}
}
declare class TextRequest extends Request {
#private;
constructor(input: RequestInfo, init: TextRequestInit);
static from(from: TextRequest.From): Promise<TextRequest>;
get headersAsJson(): Record<string, string>;
get bodyAsText(): string;
toJSON(): RequestLike;
}
interface JsonRequestInit<T> extends Omit<RequestInit, "body"> {
body: T;
}
declare namespace JsonRequest {
/**
* Hack to only allow JsonRequest<T> or Request-like but not any other variant
*/
interface From<T> extends RequestLike {
bodyAsText?: string;
bodyAsJson?: T;
}
}
declare class JsonRequest<T> extends Request {
#private;
constructor(input: RequestInfo, init: JsonRequestInit<T>);
static from<T>(from: JsonRequest.From<T>): Promise<JsonRequest<T>>;
get headersAsJson(): Record<string, string>;
get bodyAsJson(): T;
get bodyAsText(): string;
toJSON(): RequestLike;
}
export { EmptyRequest, type EmptyRequestInit, JsonRequest, type JsonRequestInit, type RequestLike, TextRequest, type TextRequestInit };