UNPKG

@alwatr/fetch

Version:

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

68 lines (48 loc) 2.64 kB
# Alwatr Fetch Enhanced fetch API with cache strategy, retry pattern, timeout, helper methods and enhanced types. ## Installation ```bash yarn add @alwatr/fetch ``` ## Usage ```ts 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](https://developer.mozilla.org/en-US/docs/Web/API/fetch#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_000`ms). - `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](https://developer.chrome.com/docs/workbox/caching-strategies-overview/#caching-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. ### Contributing Contributions are welcome! Please read our [contribution guidelines](https://github.com/Alwatr/.github/blob/next/CONTRIBUTING.md) before submitting a pull request. ### License This project is licensed under the [AGPL-3.0 License](LICENSE).