[6a3a178] | 1 | import {SpinnerName} from 'cli-spinners';
|
---|
| 2 |
|
---|
| 3 | declare namespace ora {
|
---|
| 4 | interface Spinner {
|
---|
| 5 | readonly interval?: number;
|
---|
| 6 | readonly frames: string[];
|
---|
| 7 | }
|
---|
| 8 |
|
---|
| 9 | type Color =
|
---|
| 10 | | 'black'
|
---|
| 11 | | 'red'
|
---|
| 12 | | 'green'
|
---|
| 13 | | 'yellow'
|
---|
| 14 | | 'blue'
|
---|
| 15 | | 'magenta'
|
---|
| 16 | | 'cyan'
|
---|
| 17 | | 'white'
|
---|
| 18 | | 'gray';
|
---|
| 19 |
|
---|
| 20 | type PrefixTextGenerator = () => string;
|
---|
| 21 |
|
---|
| 22 | interface Options {
|
---|
| 23 | /**
|
---|
| 24 | Text to display after the spinner.
|
---|
| 25 | */
|
---|
| 26 | readonly text?: string;
|
---|
| 27 |
|
---|
| 28 | /**
|
---|
| 29 | Text or a function that returns text to display before the spinner. No prefix text will be displayed if set to an empty string.
|
---|
| 30 | */
|
---|
| 31 | readonly prefixText?: string | PrefixTextGenerator;
|
---|
| 32 |
|
---|
| 33 | /**
|
---|
| 34 | 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.
|
---|
| 35 |
|
---|
| 36 | @default 'dots'
|
---|
| 37 |
|
---|
| 38 | Or an object like:
|
---|
| 39 |
|
---|
| 40 | @example
|
---|
| 41 | ```
|
---|
| 42 | {
|
---|
| 43 | interval: 80, // Optional
|
---|
| 44 | frames: ['-', '+', '-']
|
---|
| 45 | }
|
---|
| 46 | ```
|
---|
| 47 | */
|
---|
| 48 | readonly spinner?: SpinnerName | Spinner;
|
---|
| 49 |
|
---|
| 50 | /**
|
---|
| 51 | Color of the spinner.
|
---|
| 52 |
|
---|
| 53 | @default 'cyan'
|
---|
| 54 | */
|
---|
| 55 | readonly color?: Color;
|
---|
| 56 |
|
---|
| 57 | /**
|
---|
| 58 | Set to `false` to stop Ora from hiding the cursor.
|
---|
| 59 |
|
---|
| 60 | @default true
|
---|
| 61 | */
|
---|
| 62 | readonly hideCursor?: boolean;
|
---|
| 63 |
|
---|
| 64 | /**
|
---|
| 65 | Indent the spinner with the given number of spaces.
|
---|
| 66 |
|
---|
| 67 | @default 0
|
---|
| 68 | */
|
---|
| 69 | readonly indent?: number;
|
---|
| 70 |
|
---|
| 71 | /**
|
---|
| 72 | Interval between each frame.
|
---|
| 73 |
|
---|
| 74 | Spinners provide their own recommended interval, so you don't really need to specify this.
|
---|
| 75 |
|
---|
| 76 | Default: Provided by the spinner or `100`.
|
---|
| 77 | */
|
---|
| 78 | readonly interval?: number;
|
---|
| 79 |
|
---|
| 80 | /**
|
---|
| 81 | Stream to write the output.
|
---|
| 82 |
|
---|
| 83 | You could for example set this to `process.stdout` instead.
|
---|
| 84 |
|
---|
| 85 | @default process.stderr
|
---|
| 86 | */
|
---|
| 87 | readonly stream?: NodeJS.WritableStream;
|
---|
| 88 |
|
---|
| 89 | /**
|
---|
| 90 | 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.
|
---|
| 91 |
|
---|
| 92 | 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.
|
---|
| 93 | */
|
---|
| 94 | readonly isEnabled?: boolean;
|
---|
| 95 |
|
---|
| 96 | /**
|
---|
| 97 | Disable the spinner and all log text. All output is suppressed and `isEnabled` will be considered `false`.
|
---|
| 98 |
|
---|
| 99 | @default false
|
---|
| 100 | */
|
---|
| 101 | readonly isSilent?: boolean;
|
---|
| 102 |
|
---|
| 103 | /**
|
---|
| 104 | 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.
|
---|
| 105 |
|
---|
| 106 | This has no effect on Windows as there's no good way to implement discarding stdin properly there.
|
---|
| 107 |
|
---|
| 108 | @default true
|
---|
| 109 | */
|
---|
| 110 | readonly discardStdin?: boolean;
|
---|
| 111 | }
|
---|
| 112 |
|
---|
| 113 | interface PersistOptions {
|
---|
| 114 | /**
|
---|
| 115 | Symbol to replace the spinner with.
|
---|
| 116 |
|
---|
| 117 | @default ' '
|
---|
| 118 | */
|
---|
| 119 | readonly symbol?: string;
|
---|
| 120 |
|
---|
| 121 | /**
|
---|
| 122 | Text to be persisted after the symbol.
|
---|
| 123 |
|
---|
| 124 | Default: Current `text`.
|
---|
| 125 | */
|
---|
| 126 | readonly text?: string;
|
---|
| 127 |
|
---|
| 128 | /**
|
---|
| 129 | 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.
|
---|
| 130 |
|
---|
| 131 | Default: Current `prefixText`.
|
---|
| 132 | */
|
---|
| 133 | readonly prefixText?: string | PrefixTextGenerator;
|
---|
| 134 | }
|
---|
| 135 |
|
---|
| 136 | interface Ora {
|
---|
| 137 | /**
|
---|
| 138 | A boolean of whether the instance is currently spinning.
|
---|
| 139 | */
|
---|
| 140 | readonly isSpinning: boolean;
|
---|
| 141 |
|
---|
| 142 | /**
|
---|
| 143 | Change the text after the spinner.
|
---|
| 144 | */
|
---|
| 145 | text: string;
|
---|
| 146 |
|
---|
| 147 | /**
|
---|
| 148 | Change the text or function that returns text before the spinner. No prefix text will be displayed if set to an empty string.
|
---|
| 149 | */
|
---|
| 150 | prefixText: string | PrefixTextGenerator;
|
---|
| 151 |
|
---|
| 152 | /**
|
---|
| 153 | Change the spinner color.
|
---|
| 154 | */
|
---|
| 155 | color: Color;
|
---|
| 156 |
|
---|
| 157 | /**
|
---|
| 158 | Change the spinner.
|
---|
| 159 | */
|
---|
| 160 | spinner: SpinnerName | Spinner;
|
---|
| 161 |
|
---|
| 162 | /**
|
---|
| 163 | Change the spinner indent.
|
---|
| 164 | */
|
---|
| 165 | indent: number;
|
---|
| 166 |
|
---|
| 167 | /**
|
---|
| 168 | Start the spinner.
|
---|
| 169 |
|
---|
| 170 | @param text - Set the current text.
|
---|
| 171 | @returns The spinner instance.
|
---|
| 172 | */
|
---|
| 173 | start(text?: string): Ora;
|
---|
| 174 |
|
---|
| 175 | /**
|
---|
| 176 | Stop and clear the spinner.
|
---|
| 177 |
|
---|
| 178 | @returns The spinner instance.
|
---|
| 179 | */
|
---|
| 180 | stop(): Ora;
|
---|
| 181 |
|
---|
| 182 | /**
|
---|
| 183 | Stop the spinner, change it to a green `✔` and persist the current text, or `text` if provided.
|
---|
| 184 |
|
---|
| 185 | @param text - Will persist text if provided.
|
---|
| 186 | @returns The spinner instance.
|
---|
| 187 | */
|
---|
| 188 | succeed(text?: string): Ora;
|
---|
| 189 |
|
---|
| 190 | /**
|
---|
| 191 | Stop the spinner, change it to a red `✖` and persist the current text, or `text` if provided.
|
---|
| 192 |
|
---|
| 193 | @param text - Will persist text if provided.
|
---|
| 194 | @returns The spinner instance.
|
---|
| 195 | */
|
---|
| 196 | fail(text?: string): Ora;
|
---|
| 197 |
|
---|
| 198 | /**
|
---|
| 199 | Stop the spinner, change it to a yellow `⚠` and persist the current text, or `text` if provided.
|
---|
| 200 |
|
---|
| 201 | @param text - Will persist text if provided.
|
---|
| 202 | @returns The spinner instance.
|
---|
| 203 | */
|
---|
| 204 | warn(text?: string): Ora;
|
---|
| 205 |
|
---|
| 206 | /**
|
---|
| 207 | Stop the spinner, change it to a blue `ℹ` and persist the current text, or `text` if provided.
|
---|
| 208 |
|
---|
| 209 | @param text - Will persist text if provided.
|
---|
| 210 | @returns The spinner instance.
|
---|
| 211 | */
|
---|
| 212 | info(text?: string): Ora;
|
---|
| 213 |
|
---|
| 214 | /**
|
---|
| 215 | Stop the spinner and change the symbol or text.
|
---|
| 216 |
|
---|
| 217 | @returns The spinner instance.
|
---|
| 218 | */
|
---|
| 219 | stopAndPersist(options?: PersistOptions): Ora;
|
---|
| 220 |
|
---|
| 221 | /**
|
---|
| 222 | Clear the spinner.
|
---|
| 223 |
|
---|
| 224 | @returns The spinner instance.
|
---|
| 225 | */
|
---|
| 226 | clear(): Ora;
|
---|
| 227 |
|
---|
| 228 | /**
|
---|
| 229 | Manually render a new frame.
|
---|
| 230 |
|
---|
| 231 | @returns The spinner instance.
|
---|
| 232 | */
|
---|
| 233 | render(): Ora;
|
---|
| 234 |
|
---|
| 235 | /**
|
---|
| 236 | Get a new frame.
|
---|
| 237 |
|
---|
| 238 | @returns The spinner instance text.
|
---|
| 239 | */
|
---|
| 240 | frame(): string;
|
---|
| 241 | }
|
---|
| 242 | }
|
---|
| 243 |
|
---|
| 244 | declare const ora: {
|
---|
| 245 | /**
|
---|
| 246 | Elegant terminal spinner.
|
---|
| 247 |
|
---|
| 248 | @param options - If a string is provided, it is treated as a shortcut for `options.text`.
|
---|
| 249 |
|
---|
| 250 | @example
|
---|
| 251 | ```
|
---|
| 252 | import ora = require('ora');
|
---|
| 253 |
|
---|
| 254 | const spinner = ora('Loading unicorns').start();
|
---|
| 255 |
|
---|
| 256 | setTimeout(() => {
|
---|
| 257 | spinner.color = 'yellow';
|
---|
| 258 | spinner.text = 'Loading rainbows';
|
---|
| 259 | }, 1000);
|
---|
| 260 | ```
|
---|
| 261 | */
|
---|
| 262 | (options?: ora.Options | string): ora.Ora;
|
---|
| 263 |
|
---|
| 264 | /**
|
---|
| 265 | Starts a spinner for a promise. The spinner is stopped with `.succeed()` if the promise fulfills or with `.fail()` if it rejects.
|
---|
| 266 |
|
---|
| 267 | @param action - The promise to start the spinner for.
|
---|
| 268 | @param options - If a string is provided, it is treated as a shortcut for `options.text`.
|
---|
| 269 | @returns The spinner instance.
|
---|
| 270 | */
|
---|
| 271 | promise(
|
---|
| 272 | action: PromiseLike<unknown>,
|
---|
| 273 | options?: ora.Options | string
|
---|
| 274 | ): ora.Ora;
|
---|
| 275 | };
|
---|
| 276 |
|
---|
| 277 | export = ora;
|
---|