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

5.2.1 • Public • Published

Alwatr Fetch

Enhanced fetch API with cache strategy, retry pattern, timeout, helper methods and enhanced types.

Installation

yarn add @alwatr/fetch

Usage

import {fetch} from 'https://esm.run/@alwatr/fetch';

const response = await fetch({
  url: '/api/products',
  queryParameters: {limit: 10},
  timeout: 5_000,
  retry: 3,
  cacheStrategy: 'stale_while_revalidate',
});

if (!response.ok) throw new Error('fetch_failed');

const productList = await response.json();

console.log(productList);

Fetch Options

FetchOptions inherited from the fetch standard parameters and some other...

  • url: Request URL.
  • bodyJson: Body as JS Object.
  • queryParameters: URL Query Parameters as JS Object.
  • timeout: A timeout in ms for the fetch request (default 10_000ms).
  • retry: If fetch response not acceptable or timed out, it will retry the request (default 3).
  • retryDelay: Delay before each retries (default 1_000).
  • removeDuplicate: Simple memory caching for remove duplicate/parallel requests (default never).
    • never: Never use memory caching.
    • always: Always use memory caching and remove all duplicate requests (just by method+url).
    • until_load: Cache parallel requests until request completed (it will be removed after the promise resolved).
    • auto: If CacheStorage was supported use until_load strategy else use always.
  • cacheStrategy: Strategies for caching (default network_only).
    • network_only: Only network request without any cache.
    • network_first: Network first, falling back to cache.
    • cache_only: Cache only without any network request.
    • cache_first: Cache first, falling back to network.
    • stale_while_revalidate: Fastest strategy, Use cached first but always request network to update the cache.
  • revalidateCallback: Revalidate callback for stale_while_revalidate cache strategy.
  • cacheStorageName: Cache storage custom name (default alwatr_fetch_cache).

Read more about standard cache strategies

Sponsors

The following companies, organizations, and individuals support Nanolib ongoing maintenance and development. Become a Sponsor to get your logo on our README and website.

Exir Studio

Contributing

Contributions are welcome! Please read our contribution guidelines before submitting a pull request.

License

This project is licensed under the AGPL-3.0 License.

Package Sidebar

Install

npm i @alwatr/fetch

Weekly Downloads

74

Version

5.2.1

License

AGPL-3.0-only

Unpacked Size

118 kB

Total Files

17

Last publish

Collaborators

  • alimd