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

ascii-progress

v2.0.0

Published

Ascii progress-bar(s) in the terminal.

Downloads

679

Readme

Features:

  • Support multi progress-bars.
  • Relative and absolute width.
  • Colorful bar and text.
  • Highly customizable.

snapshot

Install

$ npm install ascii-progress

Usage

For more usage see the examples

const { ProgressBar } = require('ascii-progress');

const bar = new ProgressBar({
    schema: ':bar',
    total : 10,
});

const iv = setInterval(function () {
  bar.tick();
  if (bar.completed) {
    clearInterval(iv);
  }
}, 100);

Options

These are keys in the options object you can pass to the progress bar along with total as seen in the example above.

  • schema - template string of the progress bar. Default " [:bar] :current/:total :percent :elapseds :etas'".
  • total - total number of ticks to complete. Default 100.
  • current- number of completed ticks. Default 0.
  • width - display width, percentage or less than 1 is relative the terminal's width. Default 60.
  • fixedWidth - do not adjust the bar based on the terminal size
  • filled- completion character. Default "▇".
  • blank - blank character. Default "-".
  • clean - clear the progress bar on completion. Default false.
  • callback - optional function to call when the progress bar completes.

Properties

  • schema
  • total
  • current
  • completed

Methods

  • setSchema(schema, refresh/tokens) - Update the schema of the progress bar. If refresh or tokens is truely the progress bar will be refreshed.

  • tick(delta, tokens) - Update ticks of the progress bar by delta, then render the progress bar with optional tokens.

  • update(ratio, tokens) - Update the progress bar to ratio by percentage, then render the progress bar with optional tokens.

  • clear() - Clean the progress bar in the terminal.

Schema

The schema defines appearance the progress bar. Few inner tokens and many formatting methods can be used to customer you progress bar.

Tokens

These are tokens you can use in the format of your progress bar.

  • :filled Completed part of the progress bar.
  • :blank Blank part of the progress bar.
  • :bar Whole progress bar, equal to :completed:blank.
  • :current Current tick number.
  • :total Total ticks.
  • :percent Completion percentage.
  • :elapsed Time elapsed in seconds.
  • :eta Estimated completion time in seconds.

Custom Tokens

You can define custom tokens by adding a {name: value} object parameter to your method (tick(), update(), etc.) calls.

const bar = new ProgressBar({
    schema: ':current: :token1 :token2',
    total : 3,
});
bar.tick({
  'token1': "Hello",
  'token2': "World!"
})
bar.tick(2, {
  'token1': "Goodbye",
  'token2': "World!"
})

The above example would result in the output below.

1: Hello World!
3: Goodbye World!

Colors

Color names can be use in schema:

:bar.red :percent.green

Then the progress bar will be red, and the percentage will be green.

All available color names:

  • red
  • cyan
  • blue
  • grey
  • white
  • black
  • green
  • yellow
  • magenta
  • brightRed
  • brightBlue
  • brightCyan
  • brightWhite
  • brightBlack
  • brightGreen
  • brightYellow
  • brightMagenta

And with the bg prefix, such as bgRed, the color will be applied to the background.

:bar.red.bgBlue

The above progress bar has blue background and red foreground.

Gradient

:bar.gradient(red,blue)

The arguments can be color names or hex color:

  • red
  • cyan
  • blue
  • grey
  • white
  • black
  • green
  • yellow
  • magenta
  • #xxxxxx

Font style

Same as color names, font style can also be assigned by name:

  • bold
  • italic
  • inverse
  • underline
:bar.red :percent.green.bold

The percentage is green and bold.

Contributing

Please let us know how can we help. Do check out issues for bug reports or suggestions first.

To become a contributor, please follow our contributing guide.

License

The scripts and documentation in this project are released under the MIT License