@iahuang/pending
v1.0.1
Published
Terminal spinners and progress bars for Node-like JavaScript environments.
Readme
pending
Terminal spinners and progress bars for Node-like JavaScript environments.
Installation
npm install @iahuang/pendingUsage
Basic spinner
import { createSpinner } from "pending";
const spinner = createSpinner();
spinner.update("Doing something...");
// later
spinner.release();Progress bar
import { createSpinner, progressBar } from "pending";
const spinner = createSpinner();
const bar = progressBar(spinner);
for (let i = 0; i <= 100; i++) {
bar.update(i / 100, `Step ${i}`);
await sleep(20);
}
spinner.release();Multiple spinners at once
import { createMultiSpinner, progressBar } from "pending";
const multi = createMultiSpinner({ lines: 3 });
const downloadBar = progressBar({ base: multi, index: 1 });
const buildBar = progressBar({ base: multi, index: 2 });
multi.update(0, "Starting...");
downloadBar.update(0.5, "Downloading packages...");
buildBar.update(0.3, "Compiling...");
// later
multi.release();tqdm-style iteration
If you've used Python's tqdm, this should feel familiar:
import { tqdm } from "pending";
for (const item of tqdm(items, { desc: "Processing" })) {
// do work
}Works with generators too:
for (const num of tqdm(generateNumbers(100), { total: 100 })) {
// do work
}Options
createSpinner({
drawInterval: 50, // ms between redraws
spinnerCyclesPerSecond: 2, // animation speed
showStatusIndicator: true, // show spinner/checkmark
showTimeElapsed: true, // show elapsed time
logLimit: Infinity, // max log lines above spinner
spinnerChars: SpinnerAnimations.dots, // animation frames
});Built-in animations
import { SpinnerAnimations } from "pending";
SpinnerAnimations.dots // ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏
SpinnerAnimations.moon // 🌑 🌒 🌓 🌔 🌕 🌖 🌗 🌘
// ... more in themes.tsLicense
ISC
