fetch-in-chunks
TypeScript icon, indicating that this package has built-in type declarations

1.3.0 • Public • Published

fetch-in-chunks

A utility for fetching large files in chunks with support for parallel downloads, progress tracking, and request abortion.

Installation

Install the package using npm:

npm install fetch-in-chunks

Usage

Importing the Module

import fetchInChunks from 'fetch-in-chunks';

Function Signature

async function fetchInChunks(url, options = {})

Parameters

  • url (string): The URL of the file to download.
  • options (object, optional): An object containing additional options.
    • options.chunkSize (number, default: 5 * 1024 * 1024): The size of each chunk to download in bytes.
    • options.maxParallelRequests (number, default: 1): The number of chunks to download in parallel.
    • options.progressCallback (function, optional): A callback function that will be called with the number of bytes downloaded and the total size of the file.
    • options.signal (AbortSignal, optional): An AbortSignal object that can be used to abort the download.

Returns

  • Promise<Blob>: A promise that resolves to a Blob containing the downloaded file.

Example

Basic Usage

import fetchInChunks from 'fetch-in-chunks';  async function downloadFile() {   try {     const blob = await fetchInChunks('https://example.com/largefile.zip');     return blob;   } catch (error) {     console.error('Error fetching file:', error);   } }  downloadFile();

With Progress Callback

import fetchInChunks from 'fetch-in-chunks';  async function downloadFileWithProgress() {   try {     const blob = await fetchInChunks('https://example.com/largefile.zip', {       progressCallback: (downloaded, total) => {         console.log(`Downloaded ${((downloaded / total) * 100).toFixed(2)}%`);       },     });     return blob;   } catch (error) {     console.error('Error fetching file:', error);   } }  downloadFileWithProgress();

With AbortController

import fetchInChunks from 'fetch-in-chunks';  async function downloadFileWithAbort() {   const controller = new AbortController();   const signal = controller.signal;    try {     const blob = await fetchInChunks('https://example.com/largefile.zip', {       signal,     });     return blob;   } catch (error) {     if (error.name === 'AbortError') {       console.log('Download aborted');     } else {       console.error('Error fetching file:', error);     }   } }  // To abort the download at any time controller.abort();

License

This project is licensed under the Apache 2.0 License. See the LICENSE file for details.

Package Sidebar

Install

npm i fetch-in-chunks

Weekly Downloads

3

Version

1.3.0

License

Apache-2.0

Unpacked Size

20 kB

Total Files

5

Last publish

Collaborators

  • tomayac