278 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			278 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 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;
 |