Coder Social home page Coder Social logo

aqdm's Introduction

aqdm

Simple terminal progress indicator that works

  • โœ… Simple API to show progress of a loop
  • ๐Ÿซก Both CommonJS and ESM imports are supported
  • ๐Ÿ”ฅ Examples of usage provided below
  • ๐Ÿฅณ Written in TypeScript

Installation

npm install aqdm

Usage

With iterable objects

import aqdm from 'aqdm'

// Array, Generator, etc..
const arr = [...Array(1000)]

for(const v of aqdm(arr)) {
	// do something
}

Results:

  4.70% [=====>                                                            ] 00:00:04 00:01:37 [1923.72 iter/sec]

Specify times of iteration instead of iterables

for(const i of aqdm(300)) {
	// do something
}

Results:

  4.70% [=====>                                                            ] 00:00:04 00:01:37 [1923.72 iter/sec]

Manualy process

const prgrs = aqdm()
while(true) {
	prgrs.process()
}

Results:

  327 [=============================================================================] 00:00:04 [2089.72 iter/sec]

Options

length

You can manually specify total length of items when you works with iterable objects without length property. (Typically for generators.)

function* gen(num) {
	for (let i = 0; i < num; i++) {
		yield i
	}
}

const g = gen(100)

for(const v of aqdm(g, {length: 100})){
	// do something
}

dest

Choose where to write progress indicator ('stdout' or 'stderr'), another value will be ignored.
Defaults to be 'stdout'.

for(const v of aqdm(arr, {dest: 'stderr'})) {
	// now aqdm will write the progress into process.stderr
}

callback

You can define your own callback function being called per iteration.

const cb = ({current, total, ratio, elapsed, remain, perSec}) => {
	console.log({current, total, ratio, elapsed, remain, perSec})
}

for(const v of aqdm(arr, {callback: cb})) {
	// do something
}

silent

aqdm will display nothing when set this option to true. (designed to use with callback function.)

for(const v of aqdm(arr, {silent: true})) {
	// now aqdm displays nothing.
}

aqdm's People

Contributors

bring-shrubbery avatar yuhsak avatar

Stargazers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.