@windyroad/adapt-fetch-inputs
TypeScript icon, indicating that this package has built-in type declarations

3.0.3 • Public • Published

@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 the fetch inputs.
  • fetchImpl: The fetch implementation to adapt. Defaults to the global fetch function.

Type Parameters

  • FetchFunction<Arguments, ResponseType>: The type of the fetch implementation. Defaults to typeof 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. ❤️

Readme

Keywords

Package Sidebar

Install

npm i @windyroad/adapt-fetch-inputs

Weekly Downloads

1

Version

3.0.3

License

MIT

Unpacked Size

7.48 kB

Total Files

10

Last publish

Collaborators

  • tompahoward