123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- 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';
-
- type PrefixTextGenerator = () => string;
-
- interface Options {
- /**
- Text to display after the spinner.
- */
- readonly text?: string;
-
- /**
- Text or a function that returns text to display before the spinner. No prefix text will be displayed if set to an empty string.
- */
- readonly prefixText?: string | PrefixTextGenerator;
-
- /**
- Name of one of the provided spinners. See [`example.js`](https://github.com/BendingBender/ora/blob/main/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: 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;
-
- /**
- Disable the spinner and all log text. All output is suppressed and `isEnabled` will be considered `false`.
-
- @default false
- */
- readonly isSilent?: boolean;
-
- /**
- Discard stdin input (except Ctrl+C) while running if it's TTY. This prevents the spinner from twitching on input, outputting broken lines on `Enter` key presses, and prevents buffering of input while the spinner is running.
-
- This has no effect on Windows as there's no good way to implement discarding stdin properly there.
-
- @default true
- */
- readonly discardStdin?: 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 or a function that returns text to be persisted before the symbol. No prefix text will be displayed if set to an empty string.
-
- Default: Current `prefixText`.
- */
- readonly prefixText?: string | PrefixTextGenerator;
- }
-
- 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 or function that returns text before the spinner. No prefix text will be displayed if set to an empty string.
- */
- prefixText: string | PrefixTextGenerator;
-
- /**
- 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 text.
- */
- frame(): string;
- }
- }
-
- 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;
- };
-
- export = ora;
|