Dynamic, dependency-free loading bars using Deno's --unstable API. Exports 3 items: cl LoadingBar, cl BarStyle and en NumberStyle. Distributed under Sam Hocevar's permissive DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE.
// Example as found in LoadingBar's JSDoc
const bar = new LoadingBar(new BarStyle("Hello", "World!"), 10);
for (let i = 0; i < 10; i++) {
console.log(bar.display(i));
await (() => new Promise((r) => setTimeout(r, 100)))();
}
console.log(bar.display(10));import LoadingBar, {BarStyle} from "https://x.nest.land/loadingbar.ts@1.0.0/mod.ts"
// A practical example
let bar = new LoadingBar(new BarStyle("Counting"), 10);
let tasks = [8, 5, 9, 2, 1, 6, 4, 0, 7, 3];
for (const i in tasks) {
console.log(bar.display(+i));
tasks[i] = tasks[i]*5
}
console.log(bar.display(10))
console.log(tasks)With the default settings your bar will size itself to the screen with every task completed.
// All of these arguments are optional so only set what you need
const bar = new LoadingBar(
new BarStyle(
leftMessage, // string ...
rightMessage,
fillChar, // string of length 1 ...
endChar,
leftCap,
rightCap,
number // NumberStyle
),
max, // Total number of tasks to be completed
reset, // Don't use ESC[F to overwrite the previous bar
cols // Width of the screen - don't set or set to -1 for a dynamically sized bar
)Examples with current value 67, max 100
| Member | Result | Length |
|---|---|---|
| single | 67 |
2 |
| percent | 67% |
3 |
| divide | 67/100 |
6 |
// Actual source for NumberStyle
export enum NumberStyle {
percent, // % truncated to a whole number
single, // Just the current completed number
divide // Current/Maximum
}| Style Name | Gutter Characters | Fill | Empty |
|---|---|---|---|
| Default | [, ] |
# |
|
| Slim | <, > |
= |
|
| Original | [, ] |
# |
. |
| Lines | |, | |
= |
- |
| Modern | ▐, ▌ |
█ |
|
The | characters in the Lines style may be double escaped on some renderers
// Modern style
new BarStyle("Left", "Right", "█", " ", "▐", "▌")