0.1.0 • Published 7 months ago
frogress-bar v0.1.0
frogress-bar
React based progress bar for command-line/terminal applications
Features
- 🌱 Simple & Easy to use
- 🔥 Supports single & multiple progress bar
- 🎨 Supports 256 & Truecolor
- 💧 Responsive size
- ⭐️ Fully customizable
Installation
# npm
npm install frogress-bar
# yarn
yarn add frogress-bar
Usage
import * as Frogress from 'frogress-bar';
// 1. Create new progress bar
const progressBar = Frogress.create({
total: 100,
template: '{label} {progress} ({percentage})',
placeholder: {
label: 'Downloader',
},
});
// 2. Render progress bar
progressBar.start({ value: 0 });
await download({
onProgress: (percent) => {
// 3. Update progress bar state
progressBar.update({ value: percent });
},
});
// 4. Unmount progress bar#
progressBar.stop();
// 5. Remove progress bar
Frogress.remove(progressBar);
Frogress.removeAll();
Documentation
create
Create a new ProgressBar
instance.
It can be called multiple times for multiple progress bars.
- Parameters
| Name | Type | Required |
|:--|:--|:--|
| options |
ProgressConfig
| No | - Return Value
| Type |
|:--|
|
ProgressBar
|
/* interfaces */
interface ProgressConfig {
/**
* Defaults to `0`.
*/
value?: number;
/**
* Defaults to `100`.
*/
total?: number;
/**
* Defaults to `50` (Depend on terminal size).
*/
progressBarSize?: number;
/**
* Defaults to `'█'`.
*/
activeChar?: string;
/**
* Defaults to `'░'`.
*/
inactiveChar?: string;
/**
* Template string.
*
* Defaults to `'{progress}'`.
*/
template?: string;
/**
* Key-Value data that replace of template's placeholders.
*
* Defaults to `{}`.
*/
placeholder?: Record<string, string>;
}
function create(config?: ProgressConfig): ProgressBar;
import * as Frogress from 'frogress-bar';
const progressBar = Frogress.create(config);
value
: Defaults to0
.total
: Defaults to100
.progressBarSize
: Defaults to50
(Depend on terminal size).activeChar
: Defaults to'█'
.inactiveChar
: Defaults to'░'
.template
: Template string. Defaults to'{progress}'
.placeholder
: Key-Value data that replace of template's placeholders. Defaults to{}
.
remove
Unmount & Remove specified ProgressBar
from current context.
- Parameters
| Name | Type | Required |
|:--|:--|:--|
| progressBar |
ProgressBar
| Yes | - Return Value
| Type |
|:--|
|
void
|
/* interfaces */
function remove(progressBar: ProgressBar): void;
removeAll
Unmount & Remove all progress bars from current context.
- Return Value
| Type |
|:--|
|
void
|
/* interfaces */
function removeAll(): void;
count
Returns the current instance count of the progress bar.
- Return Value
| Type |
|:--|
|
number
|
/* interfaces */
function count(): number;
setOptions
Applies the options to the Frogress container.
- Parameters
| Name | Type | Required |
|:--|:--|:--|
| options |
ContainerOptions
| Yes | - Return Value
| Type |
|:--|
|
void
|
/* interfaces */
interface ContainerOptions {
refreshRate: number;
}
function setOptions(options: ContainerOptions): void;
refreshRate
: Defaults to50
.
ProgressBar.start
Render progress bar.
- Parameters
| Name | Type | Required |
|:--|:--|:--|
| options |
ProgressValues
| Yes | - Return Value
| Type |
|:--|
|
void
|
/* interfaces */
interface ProgressValues {
value: number;
total?: number;
placeholder?: Record<string, string>;
}
function start(values: ProgressValues): void;
value
: current progress value.total
: total progress value.placeholder
: Key-Value data that replace of template's placeholders.
ProgressBar.update
Set new states and re-render progress bar.
- Parameters
| Name | Type | Required |
|:--|:--|:--|
| options |
ProgressValues
| Yes | - Return Value
| Type |
|:--|
|
void
|
/* interfaces */
interface ProgressValues {
value: number;
total?: number;
placeholder?: Record<string, string>;
}
function update(values: ProgressValues): void;
value
: current progress value.total
: total progress value.placeholder
: Key-Value data that replace of template's placeholders.
ProgressBar.stop
Unmount progress bar.
!NOTE
If you want to exit the process, you should remove all of progress bars using remove() or removeAll()
function stop(): void;
Template
!WARNING If you use reserved placeholder name, it will be overwritten to internal value of Frogress.
const templateString = 'Template {label} {progress} | {test}';
progressBar.update({
placeholder: {
// Plain placeholder
label: '#1',
// Placeholder with color
test: Frogress.color('Colored!!', '#00ffff'),
},
});
// Preview
// Template #1 ██████████████░░░░░░░░░░░░░░░░ | Colored!!
- Reserved placeholders
{progress}
: Progress bar (required){value}
: Current value{total}
: Total value{percentage}
:current / total * 100
% value
Development
# Lint
yarn lint
# Build
yarn build
# Run demo code
yarn start demo/{name}.ts
Resources
- Logo image generated by DALL-E
License
0.1.0
7 months ago
0.1.0-rc.3
7 months ago
0.0.0-dev.20241224014043
7 months ago
0.1.0-rc.1
7 months ago
0.1.0-rc.2
7 months ago
0.1.0-rc.0
1 year ago