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

unfetcher

v1.1.2

Published

Tiny fetch wrapper for creating predefined requests with typescript support

Downloads

25

Readme

unfetcher

npm Build Status npm npm bundle size (minified + gzip)

unfetch wrapper for creating predefined abortable requests with Typescript support

Features

  • Uses a modified version of unfetch internally (Thanks to developit and other contributors ✌, see LICENSE-unfetch.md)
  • Supports older browsers if Promise is polyfilled (promise-polyfill - ~1kb gzipped)
  • Compact - about 740B gzipped
  • Standalone - no dependencies
  • Abortable without polyfills

Install

Save as dependency using npm

npm i unfetcher

Import in your module bundler

import Fetcher from 'unfetcher'; // ES6
var Fetcher = require('unfetcher'); // CommonJS

Or expose globally as Unfetcher using UMD build from unpkg

<script src="//unpkg.com/unfetcher/dist/unfetcher.umd.js"></script>

Specs

  • rejects an ABORT message Error on request abort
  • rejects an TIMEOUT message Error on request timeout
  • Error with ABORT message is catched internally by default in Fetcher.onCatch, to change this behavior modify this static method

Fetcher constructor options:

Option | Type | Description --- | --- | --- url | string or (payload: Payload) => string | Defines request URL. Can be payload-based using function. method | string | Request type. Defaults to GET credentials | string, "include" or "omit" | Use cookies in request. Defaults to Fetcher.credentials or include headers | object | Map of headers to be included. Defaults to Fetcher.headers (none by default) prepare | (params?: Payload, request?: Request) => any | Method to transform request body and/or request before sending. Defaults to Fetcher.prepare (none by default) transform | (request?: Request) => ResponseType | Method to parse response from server called inside fetch before resolve. Also available as "transform" in response of fetchR. multiple | boolean | Allows multiple request of same type without aborting. Defaults to false. timeout | number | Time in milliseconds to timeout. Defaults to Fetcher.timeout or 0 (never)

Usage

Optionally configure for application/json communication to reduce boilerplate:

import Fetcher from 'unfetcher';

Fetcher.prepare = (params) => JSON.stringify(params);
Fetcher.headers = {'Content-Type': 'application/json'};
// Fetcher.transform = (params, request) => JSON.parse(params); // default behavior

Javascript, GET:

import Fetcher from 'unfetcher';

const GETPreactStars = new Fetcher({
    url: 'https://api.github.com/repos/developit/preact'
});

GETPreactStars.fetch()
    .then((data) => console.log(data.watchers_count));

// or
GETPreactStars.fetchR()
    .then((response) => response.json())
    .then((data) => console.log(data.watchers_count));

Typescript, GET:

import Fetcher from 'unfetcher';

// Define API response model
type GithubRepoResponse = {
    watchers_count: number;
    // ...
};

const GETPreactStars = new Fetcher<GithubRepoResponse>({
    url: 'https://api.github.com/repos/developit/preact'
});

GETPreactStars.fetch()
    .then((data) => console.log(data.watchers_count)); // strongly typed