3.0.3 • Published 2 years ago
@windyroad/adapt-fetch-inputs v3.0.3
@windyroad/adapt-fetch-inputs
A library for adapting fetch inputs.
Installation
npm install adapt-fetch-inputsUsage
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 thefetchinputs.fetchImpl: Thefetchimplementation to adapt. Defaults to the globalfetchfunction.
Type Parameters
FetchFunction<Arguments, ResponseType>: The type of thefetchimplementation. 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. ❤️