Socket
Book a DemoInstallSign in
Socket

@building-block/xhr-fetch

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@building-block/xhr-fetch

XHR-powered fetch implementation with upload and download updates

1.0.0-alpha.8
latest
Source
npmnpm
Version published
Weekly downloads
34
100%
Maintainers
1
Weekly downloads
 
Created
Source

xhr-fetch

XHR-powered fetch implementation with extras

NPM Gzip Size

Although fetch is a relatively low-level API and in most cases more complete than XMLHttpRequest, it does not provide an API for request progression. A proposal for FetchObserver is being worked on but currently it is not possible to implement request progression using just fetch.

xhr-fetch provides a fetch-like interface, enough to make it a viable replacement for XMLHttpRequest, that also implements a non-standard request and response progression API.

If response progression is all you need, fetch does provide a low-level API for response progression. In that case we recommend that you stick with the standards unless you prefer a higher level abstraction.

Installation

Using npm:

$ npm install --save @building-block/xhr-fetch

Using yarn:

$ yarn add @building-block/xhr-fetch

Usage

import xhrFetch from '@building-block/xhr-fetch';

xhrFetch('https://postman-echo.com/put', {
  method: 'PUT',
  headers: { /* headers */ },
  body: { /* body */ },
  onDownloadProgress = (xhrEvent) => {
    console.log('Upload progression', xhrEvent);
  },
  onUploadProgress = (xhrEvent) => {
    console.log('Download progression', xhrEvent);
  },
});

Try with Runkit

Tracking progress

To provide a better user experience, you might want to display progression over time such as bitrate (speed), remaining time, transferred bytes, and overall transfer progress, you can use @building-block/track-progress.

Caveats

Aborting requests

xhr-fetch supports the abortable fetch API. This feature requires that you include additional polyfills for AbortController, AbortSignal and DOMException.

import xhrFetch from '@building-block/xhr-fetch';

const abortController = new AbortController();

xhrFetch('/endpoint', {
  signal: abortController.signal,
}).catch((error) => {
  if (error.name === 'AbortError') {
    console.log('Aborted');
  }
});

abortController.abort();

Looking for a fetch polyfill?

This package is not meant to replace fetch. If you're looking for a fetch polyfill, you should use whatwg-fetch. If you are looking to use fetch in Node.js, you can with node-fetch. In universal environments, you can replace whatwg-fetch and node-fetch with just cross-fetch.

Keywords

XHR

FAQs

Package last updated on 11 Jul 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.