npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

flexfetch

v1.0.2

Published

A simple HTTP client with caching features.

Downloads

100

Readme

FlexFetch

FlexFetch is a simple and flexible HTTP client built for performance and ease of use, featuring built-in caching, automatic retries, and customizable request/response interceptors.

Table of Contents

Installation

You can install FlexFetch via npm:

npm install flexfetch

Usage

Here's a simple example of how to use FlexFetch:

import FlexFetch from 'flexfetch';

const apiClient = new FlexFetch({
  baseURL: 'https://api.example.com',
  timeout: 5000,
  headers: {
    'Content-Type': 'application/json',
  },
});

async function fetchData() {
  try {
    const data = await apiClient.get('/endpoint');
    console.log(data);
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

fetchData();

Features

  • Supports:
    • GET, POST, PUT, and DELETE requests.
  • Automatic Retry:
    • Mechanism for handling failed requests with retry attempts.
  • Caching:
    • Caches responses to improve performance.
  • Interceptors:
    • Allows adding custom processing for requests and responses.
  • Configurable:
    • Easily set timeout, headers, and retry options.

API

Constructor

const client = new FlexFetch(config);

Parameters

  • config: An object to configure the client (optional).
    • baseURL: The base URL for the API (default: '').
    • timeout: The timeout for requests in milliseconds (default: 5000).
    • headers: Default headers to send with requests (default: {}).
    • retry: Number of retry attempts for failed requests (default: 3).
    • retryDelay: Delay between retry attempts in milliseconds (default: 1000).
    • cache: Enable or disable caching (default: true).

Methods

  • get(url, options): Makes a GET request.
  • post(url, data, options): Makes a POST request.
  • put(url, data, options): Makes a PUT request.
  • delete(url, options): Makes a DELETE request.
  • addInterceptor(type, interceptor): Adds an interceptor for requests or responses.
  • clearCache(): Clears the entire cache.
  • clearCacheEntry(url, method, headers): Clears a specific cache entry.

Examples

Basic Usage

Make a GET request:

const response = await apiClient.get('/users');
console.log(response);

Using Interceptors

You can add interceptors to modify requests or responses:

apiClient.addInterceptor('request', config => {
  console.log('Request:', config);
  return config;
});

apiClient.addInterceptor('response', data => {
  console.log('Response:', data);
  return data;
});

Cancelling a Request

To cancel a request, use the cancelRequest method:

const controller = new AbortController();
const signal = controller.signal;

apiClient.cancelRequest(controller);
// Call this method when needed to cancel the request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please open an issue or submit a pull request. For major changes, please open an issue first to discuss what you would like to change.

Acknowledgements

  • Thanks to the open-source community for inspiration and support.