Variable: fetch
constfetch: {<T,TOptions,TAs,TReturn>(url,options):IPromise_Fetch<TReturn>;defaults:FetchOptionsDefault; } &object
Defined in: packages/fetch/src/index.ts:178
A fetch() replacement that simplifies data fetching with automatic JSON parsing, request timeouts, retries, and handy interceptors that also work as transformers. It also includes deferred and throttled request capabilities for complex asynchronous control flows.
Will reject promise if response status code is not 2xx (200 <= status < 300).
Method Specific Functions
While fetch() provides access to all HTTP request methods by specifying it in options (eg: { method: 'get' }), for ease of use you can also use the following:
fetch.delete(...)fetch.get(...)fetch.head(...)fetch.options(...)fetch.patch(...)fetch.post(...)fetch.put(...)
Deferred variants: To debounce/throttle requests.
fetch.delete.deferred(...)fetch.get.deferred(...)fetch.head.deferred(...)fetch.options.deferred(...)fetch.patch.deferred(...)fetch.post.deferred(...)fetch.put.deferred(...)
Type Declaration
delete
delete: {<
T,Options,Result>(url,data?,options?):IPromise_Fetch<Result>;deferred: <T,Options,TReturn>(...args) =>IPromise_Fetch<TReturn>; }
Make HTTP requests with method DELETE
Executes the HTTP request using the configured client options.
This function is specifically designed for methods that require a request body (e.g., POST, PUT, PATCH), allowing the payload to be passed directly as the second argument.
Type Parameters
T
T extends unknown = never
Options
Options extends object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Result
Result = GetFetchResult<[{ method: "delete"; }, Options, object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
url
string | URL
data?
PostBody | () => ValueOrPromise<PostBody>
options?
Options
Returns
IPromise_Fetch<Result>
delete.deferred()
deferred<
ThisArg,DefaultUrl,DefaultData,DefaultOptions,Delay>(deferOptions?,defaultUrl?,defaultData?,defaultOptions?): <T,Options,TReturn>(...args) =>IPromise_Fetch<TReturn>
Returns a version of the client configured for debounced, throttled, or sequential execution.
This is particularly useful for optimizing high-frequency operations, such as auto-saving forms or managing rapid state updates, by automatically handling request cancellation and execution timing.
Type Parameters
ThisArg
ThisArg
DefaultUrl
DefaultUrl extends string | URL | undefined
DefaultData
DefaultData extends PostBody | () => ValueOrPromise<PostBody> | undefined
DefaultOptions
DefaultOptions extends object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Delay
Delay extends number = number
Parameters
deferOptions?
DeferredAsyncOptions<ThisArg, Delay>
defaultUrl?
DefaultUrl
defaultData?
DefaultData
defaultOptions?
DefaultOptions
Returns
<
T,Options,TReturn>(...args):IPromise_Fetch<TReturn>
Type Parameters
T
T extends unknown = never
Options
Options extends object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
TReturn
TReturn = GetFetchResult<[{ method: "delete"; }, Options, DefaultOptions, object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
args
...PostDeferredCbArgs<DefaultUrl, DefaultData, Options>
Returns
IPromise_Fetch<TReturn>
get
get: {<
T,TOptions,Result>(url,options?):IPromise_Fetch<Result>;deferred: <T,TOptions,Result>(...args) =>IPromise_Fetch<Result>; }
Make HTTP requests with method GET
Type Parameters
T
T extends unknown = never
TOptions
TOptions extends object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Result
Result = GetFetchResult<[{ method: string; }, TOptions, object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
url
string | URL
options?
TOptions
Returns
IPromise_Fetch<Result>
get.deferred()
deferred<
ThisArg,Delay,DefaultUrl,DefaultOptions>(deferOptions?,defaultUrl?,defaultOptions?): <T,TOptions,Result>(...args) =>IPromise_Fetch<Result>
Make requests with debounce/throttle behavior
Type Parameters
ThisArg
ThisArg
Delay
Delay extends number
DefaultUrl
DefaultUrl extends string | URL | undefined = string | URL | undefined
DefaultOptions
DefaultOptions extends object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Parameters
deferOptions?
DeferredAsyncOptions<ThisArg, Delay>
defaultUrl?
DefaultUrl
defaultOptions?
DefaultOptions
Returns
<
T,TOptions,Result>(...args):IPromise_Fetch<Result>
Type Parameters
T
T extends unknown = never
TOptions
TOptions extends object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Result
Result = GetFetchResult<[{ method: string; }, TOptions, DefaultOptions, object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
args
...DefaultUrl extends undefined ? [string | URL, TOptions] : [TOptions]
Returns
IPromise_Fetch<Result>
head
head: {<
T,TOptions,Result>(url,options?):IPromise_Fetch<Result>;deferred: <T,TOptions,Result>(...args) =>IPromise_Fetch<Result>; }
Make HTTP requests with method HEAD
Type Parameters
T
T extends unknown = never
TOptions
TOptions extends object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Result
Result = GetFetchResult<[{ method: string; }, TOptions, object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
url
string | URL
options?
TOptions
Returns
IPromise_Fetch<Result>
head.deferred()
deferred<
ThisArg,Delay,DefaultUrl,DefaultOptions>(deferOptions?,defaultUrl?,defaultOptions?): <T,TOptions,Result>(...args) =>IPromise_Fetch<Result>
Make requests with debounce/throttle behavior
Type Parameters
ThisArg
ThisArg
Delay
Delay extends number
DefaultUrl
DefaultUrl extends string | URL | undefined = string | URL | undefined
DefaultOptions
DefaultOptions extends object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Parameters
deferOptions?
DeferredAsyncOptions<ThisArg, Delay>
defaultUrl?
DefaultUrl
defaultOptions?
DefaultOptions
Returns
<
T,TOptions,Result>(...args):IPromise_Fetch<Result>
Type Parameters
T
T extends unknown = never
TOptions
TOptions extends object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Result
Result = GetFetchResult<[{ method: string; }, TOptions, DefaultOptions, object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
args
...DefaultUrl extends undefined ? [string | URL, TOptions] : [TOptions]
Returns
IPromise_Fetch<Result>
options
options: {<
T,TOptions,Result>(url,options?):IPromise_Fetch<Result>;deferred: <T,TOptions,Result>(...args) =>IPromise_Fetch<Result>; }
Make HTTP requests with method OPTIONS
Type Parameters
T
T extends unknown = never
TOptions
TOptions extends object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Result
Result = GetFetchResult<[{ method: string; }, TOptions, object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
url
string | URL
options?
TOptions
Returns
IPromise_Fetch<Result>
options.deferred()
deferred<
ThisArg,Delay,DefaultUrl,DefaultOptions>(deferOptions?,defaultUrl?,defaultOptions?): <T,TOptions,Result>(...args) =>IPromise_Fetch<Result>
Make requests with debounce/throttle behavior
Type Parameters
ThisArg
ThisArg
Delay
Delay extends number
DefaultUrl
DefaultUrl extends string | URL | undefined = string | URL | undefined
DefaultOptions
DefaultOptions extends object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Parameters
deferOptions?
DeferredAsyncOptions<ThisArg, Delay>
defaultUrl?
DefaultUrl
defaultOptions?
DefaultOptions
Returns
<
T,TOptions,Result>(...args):IPromise_Fetch<Result>
Type Parameters
T
T extends unknown = never
TOptions
TOptions extends object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Result
Result = GetFetchResult<[{ method: string; }, TOptions, DefaultOptions, object & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
args
...DefaultUrl extends undefined ? [string | URL, TOptions] : [TOptions]
Returns
IPromise_Fetch<Result>
patch
patch: {<
T,Options,Result>(url,data?,options?):IPromise_Fetch<Result>;deferred: <T,Options,TReturn>(...args) =>IPromise_Fetch<TReturn>; }
Make HTTP requests with method PATCH
Executes the HTTP request using the configured client options.
This function is specifically designed for methods that require a request body (e.g., POST, PUT, PATCH), allowing the payload to be passed directly as the second argument.
Type Parameters
T
T extends unknown = never
Options
Options extends object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Result
Result = GetFetchResult<[{ method: "patch"; }, Options, object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
url
string | URL
data?
PostBody | () => ValueOrPromise<PostBody>
options?
Options
Returns
IPromise_Fetch<Result>
patch.deferred()
deferred<
ThisArg,DefaultUrl,DefaultData,DefaultOptions,Delay>(deferOptions?,defaultUrl?,defaultData?,defaultOptions?): <T,Options,TReturn>(...args) =>IPromise_Fetch<TReturn>
Returns a version of the client configured for debounced, throttled, or sequential execution.
This is particularly useful for optimizing high-frequency operations, such as auto-saving forms or managing rapid state updates, by automatically handling request cancellation and execution timing.
Type Parameters
ThisArg
ThisArg
DefaultUrl
DefaultUrl extends string | URL | undefined
DefaultData
DefaultData extends PostBody | () => ValueOrPromise<PostBody> | undefined
DefaultOptions
DefaultOptions extends object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Delay
Delay extends number = number
Parameters
deferOptions?
DeferredAsyncOptions<ThisArg, Delay>
defaultUrl?
DefaultUrl
defaultData?
DefaultData
defaultOptions?
DefaultOptions
Returns
<
T,Options,TReturn>(...args):IPromise_Fetch<TReturn>
Type Parameters
T
T extends unknown = never
Options
Options extends object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
TReturn
TReturn = GetFetchResult<[{ method: "patch"; }, Options, DefaultOptions, object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
args
...PostDeferredCbArgs<DefaultUrl, DefaultData, Options>
Returns
IPromise_Fetch<TReturn>
post
post: {<
T,Options,Result>(url,data?,options?):IPromise_Fetch<Result>;deferred: <T,Options,TReturn>(...args) =>IPromise_Fetch<TReturn>; }
Make HTTP requests with method POST
Executes the HTTP request using the configured client options.
This function is specifically designed for methods that require a request body (e.g., POST, PUT, PATCH), allowing the payload to be passed directly as the second argument.
Type Parameters
T
T extends unknown = never
Options
Options extends object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Result
Result = GetFetchResult<[{ method: "post"; }, Options, object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
url
string | URL
data?
PostBody | () => ValueOrPromise<PostBody>
options?
Options
Returns
IPromise_Fetch<Result>
post.deferred()
deferred<
ThisArg,DefaultUrl,DefaultData,DefaultOptions,Delay>(deferOptions?,defaultUrl?,defaultData?,defaultOptions?): <T,Options,TReturn>(...args) =>IPromise_Fetch<TReturn>
Returns a version of the client configured for debounced, throttled, or sequential execution.
This is particularly useful for optimizing high-frequency operations, such as auto-saving forms or managing rapid state updates, by automatically handling request cancellation and execution timing.
Type Parameters
ThisArg
ThisArg
DefaultUrl
DefaultUrl extends string | URL | undefined
DefaultData
DefaultData extends PostBody | () => ValueOrPromise<PostBody> | undefined
DefaultOptions
DefaultOptions extends object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Delay
Delay extends number = number
Parameters
deferOptions?
DeferredAsyncOptions<ThisArg, Delay>
defaultUrl?
DefaultUrl
defaultData?
DefaultData
defaultOptions?
DefaultOptions
Returns
<
T,Options,TReturn>(...args):IPromise_Fetch<TReturn>
Type Parameters
T
T extends unknown = never
Options
Options extends object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
TReturn
TReturn = GetFetchResult<[{ method: "post"; }, Options, DefaultOptions, object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
args
...PostDeferredCbArgs<DefaultUrl, DefaultData, Options>
Returns
IPromise_Fetch<TReturn>
put
put: {<
T,Options,Result>(url,data?,options?):IPromise_Fetch<Result>;deferred: <T,Options,TReturn>(...args) =>IPromise_Fetch<TReturn>; }
Make HTTP requests with method PUT
Executes the HTTP request using the configured client options.
This function is specifically designed for methods that require a request body (e.g., POST, PUT, PATCH), allowing the payload to be passed directly as the second argument.
Type Parameters
T
T extends unknown = never
Options
Options extends object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Result
Result = GetFetchResult<[{ method: "put"; }, Options, object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
url
string | URL
data?
PostBody | () => ValueOrPromise<PostBody>
options?
Options
Returns
IPromise_Fetch<Result>
put.deferred()
deferred<
ThisArg,DefaultUrl,DefaultData,DefaultOptions,Delay>(deferOptions?,defaultUrl?,defaultData?,defaultOptions?): <T,Options,TReturn>(...args) =>IPromise_Fetch<TReturn>
Returns a version of the client configured for debounced, throttled, or sequential execution.
This is particularly useful for optimizing high-frequency operations, such as auto-saving forms or managing rapid state updates, by automatically handling request cancellation and execution timing.
Type Parameters
ThisArg
ThisArg
DefaultUrl
DefaultUrl extends string | URL | undefined
DefaultData
DefaultData extends PostBody | () => ValueOrPromise<PostBody> | undefined
DefaultOptions
DefaultOptions extends object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
Delay
Delay extends number = number
Parameters
deferOptions?
DeferredAsyncOptions<ThisArg, Delay>
defaultUrl?
DefaultUrl
defaultData?
DefaultData
defaultOptions?
DefaultOptions
Returns
<
T,Options,TReturn>(...args):IPromise_Fetch<TReturn>
Type Parameters
T
T extends unknown = never
Options
Options extends object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined = object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined
TReturn
TReturn = GetFetchResult<[{ method: "put"; }, Options, DefaultOptions, object & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>> | undefined], T>
Parameters
args
...PostDeferredCbArgs<DefaultUrl, DefaultData, Options>
Returns
IPromise_Fetch<TReturn>
Template
The type of the value that the fetch resolves to.
Template
Return value type.
If T is not specified defaults to the following based on the value of options.as:
- FetchAs.arrayBuffer:
ArrayBuffer - FetchAs.blob:
Blob - FetchAs.bytes:
Uint8Array<ArrayBuffer> - FetchAs.formData:
FormData - FetchAs.json:
unknown - FetchAs.text:
string - FetchAs.response:
Response
Param
Param
(optional) Standard fetch options extended with FetchCustomOptions
Param
(optional) if not provided AbortController will be instantiated when timeout used.
Default: new AbortController()
Param
(optional) (optional) specify how to parse the result. For raw Response use FetchAs.response
Default: FetchAs.json
Param
(optional) request headers
Default: { 'content-type': 'application/json' }
Param
(optional) request interceptor/transformer callbacks. See FetchInterceptors for details.
Param
(optional) fetch method.
Default: 'get'
Param
(optional) duration in milliseconds to abort the request. This duration includes the execution of all interceptors/transformers.
Default: 60_000
Examples
Drop-in replacement for built-in fetch
import fetch from '@superutils/fetch'
fetch('[DUMMYJSON-DOT-COM]/products/1')
.then(response => response.json())
.then(console.log, console.error)Method specific function with JSON parsing by default
import fetch from '@superutils/fetch'
// no need for `response.json()` or "result.data.data" drilling
fetch.get('[DUMMYJSON-DOT-COM]/products/1')
.then(product => console.log(product))
fetch.post('[DUMMYJSON-DOT-COM]/products/add', { title: 'Product title' })
.then(product => console.log(product))Set default options.
Options' default values (excluding as and method) can be configured to be EFFECTIVE GLOBALLY.
import fetch from '@superutils/fetch'
const { defaults, errorMsgs, interceptors } = fetch
// set default request timeout duration in milliseconds
defaults.timeout = 40_000
// default headers
defaults.headers = { 'content-type': 'text/plain' }
// override error messages
errorMsgs.invalidUrl = 'URL is not valid'
errorMsgs.timedout = 'Request took longer than expected'
// add an interceptor to log all request failures.
const fetchLogger = (fetchErr, url, options) => console.log('Fetch error log', fetchErr)
interceptors.error.push(fetchLogger)
// add an interceptor to conditionally include header before making requests
interceptors.request.push((url, options) => {
// ignore login requests
if (`${url}`.includes('/login')) return
options.headers.set('x-auth-token', 'my-auth-token')
})