RequestModel
The definition form of a Request type. Mindset: "this specific endpoint".
Use
RequestModel
when you are defining a request inside an SDK schema or a request
factory. Unlike
RequestInstance
, every unspecified field stays strict instead of
falling back to
any
- because in a definition, an omitted field means "there is no payload / no query / no params here", not "anything goes". The type system will reject mismatches at the call site instead of silently erasing them.
The
client
field is also injected automatically by
createSdk(client)
at the SDK boundary,
so you never need to repeat it inside schema declarations.
Defaults for omitted fields
| Field | Default | Why |
|---|---|---|
response | ||
unknown | ||
| Forces narrowing in consumer code; never silently widened. | ||
payload | ||
undefined | ||
| "No body declared." | ||
.setData() | ||
| is required for typed bodies. | ||
queryParams | ||
undefined | ||
| Same as payload. | ||
error | ||
Error | ||
| Sensible default; override per-endpoint when the API has a known shape. | ||
endpoint | ||
string | ||
| Allows literal narrowing without erasure. Pass a string literal. | ||
client | ||
ClientInstance | ||
| Injected by | ||
createSdk(client) | ||
| ; you do not need to set this manually. | ||
hasPayload | ||
false | ||
| "Caller must call | ||
.setData() | ||
| ." Override only when payload is bound. | ||
hasParams | ||
false | ||
| Same as | ||
hasPayload | ||
| for params. | ||
hasQueryParams | ||
false | ||
| Same as | ||
hasPayload | ||
| for query params. | ||
mutationContext | ||
undefined | ||
| Optional context; default is "no context". |
Import
import { RequestModel } from "@hyper-fetch/core"
Source
Package
Preview
class Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext> {
constructor(client: Client, requestOptions: ClientRequestOptions<Endpoint, Client>, initialRequestConfiguration: RequestConfigurationType<Payload, Endpoint extends string ? ExtractUrlParams<Endpoint<Endpoint>> : never, QueryParams, Endpoint, ExtractAdapterOptionsType<ExtractClientAdapterType<Client>>, ExtractAdapterMethodType<ExtractClientAdapterType<Client>>>) {};
used: boolean;
unstable_mock: { config: MockerConfigType; fn: (options: { request: RequestInstance; requestId: string }) => MockResponseType<Response, LocalError | ExtractClientGlobalError<Client>, ExtractClientAdapterType<Client>> };
unstable_hasQuery: HasQuery;
unstable_hasPayload: HasPayload;
unstable_hasParams: HasParams;
unstable_hasMutationContext: MutationContext;
staleTime: number;
scope: null | string;
retryTime: number;
retry: number;
requestOptions: ClientRequestOptions<Endpoint, Client>;
queued: boolean;
queryParams: EmptyTypes | QueryParams;
queryKey: string;
payload: PayloadType<Payload>;
params: EmptyTypes | ExtractUrlParams<Endpoint>;
options: ExtractAdapterOptionsType<ExtractClientAdapterType<Client>>;
offline: boolean;
method: ExtractAdapterMethodType<ExtractClientAdapterType<Client>>;
isMockerEnabled: boolean;
initialRequestConfiguration: RequestConfigurationType<Payload, Endpoint extends string ? ExtractUrlParams<Endpoint<Endpoint>> : never, QueryParams, Endpoint, ExtractAdapterOptionsType<ExtractClientAdapterType<Client>>, ExtractAdapterMethodType<ExtractClientAdapterType<Client>>>;
headers: HeadersInit;
endpoint: Endpoint;
deduplicateTime: null | number;
deduplicate: boolean;
client: Client;
cancelable: boolean;
cacheTime: number;
cacheKey: string;
cache: boolean;
auth: boolean;
abortKey: string;
$hooks: RequestHooks<RequestInstance>;
exec() => RequestSendType<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>>;
send() => RequestSendType<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>>;
abort() => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
clearMock() => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
clone<NewData, NewParams, NewQueryParams>(configuration?: RequestConfigurationType<Payload, EmptyTypes | ExtractUrlParams<Endpoint>, QueryParams, Endpoint, ExtractAdapterOptionsType<ExtractClientAdapterType<Client>>, ExtractAdapterMethodType<ExtractClientAdapterType<Client>>>) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, NewData, NewParams, NewQueryParams, MutationContext>;
dehydrate(config?: { override?: boolean; response?: ResponseType<Response, LocalError | ExtractClientGlobalError<Client>, ExtractClientAdapterType<Client>> }) => undefined | HydrateDataType<Response, (LocalError | ExtractClientGlobalError<Client>), ExtractClientAdapterType<Client>>;
read() => undefined | ResponseType<Response, (LocalError | ExtractClientGlobalError<Client>), ExtractClientAdapterType<Client>>;
setAbortKey(abortKey: string) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setAuth(auth: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setCache(cache: undefined | boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setCacheKey(cacheKey: string) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setCacheTime(cacheTime: undefined | number) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setCancelable(cancelable: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setDeduplicate(deduplicate: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setDeduplicateTime(deduplicateTime: number) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setHeaders(headers: HeadersInit) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setMock(fn: (options: { request: Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, undefined>; requestId: string }) => SyncOrAsync<MockResponseType<Response, LocalError | ExtractClientGlobalError<Client>, ExtractClientAdapterType<Client>>>, config: MockerConfigType) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setMockingEnabled(isMockerEnabled: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setOffline(offline: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setOptimistic<Ctx>(callback: OptimisticCallback<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>, Ctx>) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, Ctx>;
setOptions(options: ExtractAdapterOptionsType<ExtractClientAdapterType<Client>>) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, true, MutationContext>;
setParams<P>(params: P) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, P extends null ? false : true, HasQuery, MutationContext>;
setPayload<P>(payload: P) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, P extends null ? false : true, HasParams, HasQuery, MutationContext>;
setPayloadMapper<MappedPayload>(payloadMapper: (data: Payload) => MappedPayload) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setQueryKey(queryKey: string) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setQueryParams(queryParams: QueryParams) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, true, MutationContext>;
setQueued(queued: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setRequestMapper<NewRequest>(requestMapper: RequestMapper<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>, NewRequest>) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setResponseMapper<MappedResponse>(responseMapper?: ResponseMapper<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>, MappedResponse>) => Request<MappedResponse extends ResponseType<R, any, any> ? R : Response, Payload, QueryParams, MappedResponse extends ResponseType<any, E, any> ? E : LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setRetry(retry: undefined | number) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setRetryOnError(callback: RetryOnErrorCallbackType<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, undefined>>) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setRetryTime(retryTime: undefined | number) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setScope(scopeId: string) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setStaleTime(staleTime: undefined | number) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setUsed(used: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
toJSON() => RequestJSON<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>>;
fromJSON<NewResponse, NewPayload, NewQueryParams, NewLocalError, NewEndpoint, NewClient, NewHasPayload, NewHasParams, NewHasQuery>(client: NewClient, json: RequestJSON<Request<NewResponse, NewPayload, NewQueryParams, NewLocalError, NewEndpoint, NewClient, NewHasPayload, NewHasParams, NewHasQuery, undefined>>) => Request<NewResponse, NewPayload, NewQueryParams, NewLocalError, NewEndpoint, NewClient, NewHasPayload, NewHasParams, NewHasQuery, undefined>;
}
