0.4.0 • Published 6 years ago

bulletproof-fetch v0.4.0

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

bulletproof-fetch

Travis npm package

Fetches made easy.

What is this package about?

bulletproof-fetch is a whatwg/fetch abstraction and factory.

Why would I need this package?

The fetch abstraction

Conceptually the fetch abstraction is just a proxy to whatwg/fetch that handles exceptions due to network errors for you (e.g. the client is offline). In addition it yelds an object with the following properties:

error

It's undefined if no network errors occur during the fetch. It contains the caught exception due to a network error if that occurred during the fetch.

ok

It's true if no network errors occur during the fetch and the response status code goes from 200 to 299. It's false otherwise.

response

It contains the plain whatwg/fetch response.

payload

It contains the payload extracted from the response if we provide a function to extract it. It is undefined otherwise.

The createFetch factory

The createFetch factory allows you to create different fetch functions with different default values and payload extraction behaviours.

Example

Create a new flavour of the fetch function:

const extractPayload = response => response.json()
const jsonFetch = createFetch({
  headers: {
    'Content-Type': 'application/json',
  },
}, extractPayload)

Now all the following fetch functions fancy:

  • the header 'Content-Type': 'application/json'.
  • a payload property in the yielded object containing the result of response.json().
const { error, ok, payload, response } = await jsonFetch('https://jsonplaceholder.typicode.com/todos/1')

console.log(error) // undefined
console.log(ok) // true
console.log(payload) // { userId: 1, id: 1, title: delectus aut autem, completed: false }
console.log(response) // the plain response object

Installation

Yarn

yarn add bulletproof-fetch

NPM

npm install --save bulletproof-fetch

Usage

Abstraction

Example

Factory

Example

0.4.0

6 years ago

0.3.0

6 years ago

0.2.0

6 years ago

0.1.0

6 years ago