@windyroad/adapt-fetch-inputs
v3.0.3
Published
A library for adapting fetch inputs
Downloads
27
Readme
@windyroad/adapt-fetch-inputs
A library for adapting fetch
inputs.
Installation
npm install adapt-fetch-inputs
Usage
import { adaptFetchInputs } from 'adapt-fetch-inputs';
const fetchWithAuth = adaptFetchInputs(fetch, (url, options): Parameters<typeof fetch> => {
const token = secureStorage.getItem('authToken');
const headers = options?.headers || {};
return [url, { ...options, headers: { ...headers, Authorization: `Bearer ${token}` } }];
});
fetchWithAuth('https://example.com', { method: 'GET' });
Examples
Adding authentication headers to a fetch
request
import { adaptFetchInputs } from 'adapt-fetch-inputs';
const fetchWithAuth = adaptFetchInputs(fetch, (url, options) => {
const token = localStorage.getItem('authToken');
const headers = options?.headers || {};
return [url, { ...options, headers: { ...headers, Authorization: `Bearer ${token}` } }];
});
fetchWithAuth('https://example.com', { method: 'GET' });
Modifying the request body of a POST
request
import { adaptFetchInputs } from 'adapt-fetch-inputs';
const fetchWithJsonBody = adaptFetchInputs(fetch, (url, options): Parameters<typeof fetch> => {
const body = options?.body;
const headers = options?.headers || {};
return [url, { ...options, headers: { ...headers, 'Content-Type': 'application/json' }, body: JSON.stringify(body) }];
});
fetchWithJsonBody('https://example.com', { method: 'POST', body: { foo: 'bar' } });
API
adaptFetchInputs
function adaptFetchInputs<
FetchFunction<Arguments, ResponseType> extends (...args: any) => Promise<any> = typeof fetch,
WrapInputs extends any[] = Parameters<FetchFunction<Arguments, ResponseType>>,
>(
adapter: (
...args: WrapInputs
) => FetchInputs<FetchFunction<Arguments, ResponseType>> | Promise<FetchInputs<FetchFunction<Arguments, ResponseType>>>,
fetchImpl?: FetchFunction<Arguments, ResponseType>,
): (...args: WrapInputs) => Promise<FetchReturns<typeof fetchImpl>>
Adapts a fetch
function with the given adapter function.
Parameters
adapter
: The adapter function to apply to thefetch
inputs.fetchImpl
: Thefetch
implementation to adapt. Defaults to the globalfetch
function.
Type Parameters
FetchFunction<Arguments, ResponseType>
: The type of thefetch
implementation. Defaults totypeof fetch
.WrapInputs
: The input types of the wrapper function.
Returns
The adapted fetch
function.
Contributing
Contributions are welcome! Please read the contributing guidelines for more information.
License
@windyroad/adapt-fetch-inputs
is lovingly licensed under the MIT License. ❤️