Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

257 lines
5.1 KiB

/// <reference types="node"/>
import {SpinnerName} from 'cli-spinners';
declare namespace ora {
interface Spinner {
readonly interval?: number;
readonly frames: string[];
}
type Color =
| 'black'
| 'red'
| 'green'
| 'yellow'
| 'blue'
| 'magenta'
| 'cyan'
| 'white'
| 'gray';
interface Options {
/**
Text to display after the spinner.
*/
readonly text?: string;
/**
Text to display before the spinner.
*/
readonly prefixText?: string;
/**
Name of one of the provided spinners. See [`example.js`](https://github.com/BendingBender/ora/blob/master/example.js) in this repo if you want to test out different spinners. On Windows, it will always use the line spinner as the Windows command-line doesn't have proper Unicode support.
@default 'dots'
Or an object like:
@example
```
{
interval: 80, // Optional
frames: ['-', '+', '-']
}
```
*/
readonly spinner?: SpinnerName | Spinner;
/**
Color of the spinner.
@default 'cyan'
*/
readonly color?: Color;
/**
Set to `false` to stop Ora from hiding the cursor.
@default true
*/
readonly hideCursor?: boolean;
/**
Indent the spinner with the given number of spaces.
@default 0
*/
readonly indent?: number;
/**
Interval between each frame.
Spinners provide their own recommended interval, so you don't really need to specify this. Default value: Provided by the spinner or `100`.
*/
readonly interval?: number;
/**
Stream to write the output.
You could for example set this to `process.stdout` instead.
@default process.stderr
*/
readonly stream?: NodeJS.WritableStream;
/**
Force enable/disable the spinner. If not specified, the spinner will be enabled if the `stream` is being run inside a TTY context (not spawned or piped) and/or not in a CI environment.
Note that `{isEnabled: false}` doesn't mean it won't output anything. It just means it won't output the spinner, colors, and other ansi escape codes. It will still log text.
*/
readonly isEnabled?: boolean;
}
interface PersistOptions {
/**
Symbol to replace the spinner with.
@default ' '
*/
readonly symbol?: string;
/**
Text to be persisted after the symbol. Default: Current `text`.
*/
readonly text?: string;
/**
Text to be persisted before the symbol. Default: Current `prefixText`.
*/
readonly prefixText?: string;
}
interface Ora {
/**
A boolean of whether the instance is currently spinning.
*/
readonly isSpinning: boolean;
/**
Change the text after the spinner.
*/
text: string;
/**
Change the text before the spinner.
*/
prefixText: string;
/**
Change the spinner color.
*/
color: Color;
/**
Change the spinner.
*/
spinner: SpinnerName | Spinner;
/**
Change the spinner indent.
*/
indent: number;
/**
Start the spinner.
@param text - Set the current text.
@returns The spinner instance.
*/
start(text?: string): Ora;
/**
Stop and clear the spinner.
@returns The spinner instance.
*/
stop(): Ora;
/**
Stop the spinner, change it to a green `✔` and persist the current text, or `text` if provided.
@param text - Will persist text if provided.
@returns The spinner instance.
*/
succeed(text?: string): Ora;
/**
Stop the spinner, change it to a red `✖` and persist the current text, or `text` if provided.
@param text - Will persist text if provided.
@returns The spinner instance.
*/
fail(text?: string): Ora;
/**
Stop the spinner, change it to a yellow `⚠` and persist the current text, or `text` if provided.
@param text - Will persist text if provided.
@returns The spinner instance.
*/
warn(text?: string): Ora;
/**
Stop the spinner, change it to a blue `ℹ` and persist the current text, or `text` if provided.
@param text - Will persist text if provided.
@returns The spinner instance.
*/
info(text?: string): Ora;
/**
Stop the spinner and change the symbol or text.
@returns The spinner instance.
*/
stopAndPersist(options?: PersistOptions): Ora;
/**
Clear the spinner.
@returns The spinner instance.
*/
clear(): Ora;
/**
Manually render a new frame.
@returns The spinner instance.
*/
render(): Ora;
/**
Get a new frame.
@returns The spinner instance.
*/
frame(): Ora;
}
}
declare const ora: {
/**
Elegant terminal spinner.
@param options - If a string is provided, it is treated as a shortcut for `options.text`.
@example
```
import ora = require('ora');
const spinner = ora('Loading unicorns').start();
setTimeout(() => {
spinner.color = 'yellow';
spinner.text = 'Loading rainbows';
}, 1000);
```
*/
(options?: ora.Options | string): ora.Ora;
/**
Starts a spinner for a promise. The spinner is stopped with `.succeed()` if the promise fulfills or with `.fail()` if it rejects.
@param action - The promise to start the spinner for.
@param options - If a string is provided, it is treated as a shortcut for `options.text`.
@returns The spinner instance.
*/
promise(
action: PromiseLike<unknown>,
options?: ora.Options | string
): ora.Ora;
// TODO: Remove this for the next major release
default: typeof ora;
};
export = ora;