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

proload

v1.0.0-beta.4

Published

File & Buffer URI downloader with a progress bar, compatible with ora.

Downloads

3

Readme

proload

License NPM Version Build Status Code Coverage

File & Buffer URI downloader with a progress bar, compatible with ora.

TOC

  1. Install
  2. Features
  3. API
    1. Options
  4. Examples
    1. Download to Buffer
    2. Download to File
    3. Existing Ora Spinner
  5. Known Issues
  6. Contribute

Install

npm i -D proload

Features

  • Ora optional integration (= ability to attach an existing ora instance).
  • Automatically creates the destination directory if it does not exist.
  • Can return a buffer of the data instead of creating a new file.

API

proload(uri: string, options?: Object): Promise<Buffer>
proload(uri: string, destFilePath: string, options?: Object): Promise<Buffer>

Options

{
  request: request.CoreOptions; // @see https://github.com/request/request#requestoptions-callback
  spinner: {
    instance: ora.Ora;
    progressPrefix: string; // Prefix message while downloading (before the `XXX%`)
    progressSuffix: string; // Suffix message while downloading (after the `XXX%`)
    successMessage: string; // Success message once the download has ended
  }
}

Examples

Download to Buffer

import proload from "proload";

(async () => {
  const dataBuffer = await proload("https://www.gutenberg.org/files/308/308-h.zip");

  console.log(dataBuffer.toString());
})();

Download to File

import proload from "proload";

(async () => {
  await proload("https://www.gutenberg.org/files/308/308-h.zip", "./Three Men in a Boat.zip");
})();

Existing Ora Spinner

import ora from "ora";
import proload from "proload";

const spinner = ora();

(async () => {
  const uri = "https://www.gutenberg.org/files/308/308-h.zip";
  const options = {
    spinner: {
      instance: spinner
    }
  };

  const dataBuffer = await proload(uri, options);
  // Or:
  await proload(uri, "./Three Men in a Boat.zip", options);

  // Don't forget that the spinner is on your side, so you will have to stop it yourself
  // or do something else with it:
  spinner.stop();
})();

Known Issues

If you want to use rimraf or make-dir before calling proload() in your code, you will have to use the .sync() method instead of the await mode. I don't know yet why this issue happens and will try my best to find a fix.

Contribute

Get Started

npm i

Test

  • All Tests: npm test
  • Lint Tests: npm run test:lint
  • Unit Tests: npm run test:unit
  • Unit Tests (watch): npm run test:watch