[ora] Add types for v3 (#31624)

* [ora] move v1 types to sub-dir

* [ora] Add types for v3
This commit is contained in:
Wesley Wigham
2018-12-24 20:54:03 -08:00
committed by GitHub
7 changed files with 509 additions and 158 deletions
+265 -127
View File
@@ -1,137 +1,275 @@
// Type definitions for ora 1.3
// Type definitions for ora 3.0
// Project: https://github.com/sindresorhus/ora
// Definitions by: Basarat Ali Syed <https://github.com/basarat>
// Christian Rackerseder <https://github.com/screendriver>
// BendingBender <https://github.com/BendingBender>
// Aleh Zasypkin <https://github.com/azasypkin>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.1
/// <reference types="node" />
type SpinnerName =
'dots'
| 'dots2'
| 'dots3'
| 'dots4'
| 'dots5'
| 'dots6'
| 'dots7'
| 'dots8'
| 'dots9'
| 'dots10'
| 'dots11'
| 'dots12'
| 'line'
| 'line2'
| 'pipe'
| 'simpleDots'
| 'simpleDotsScrolling'
| 'star'
| 'star2'
| 'flip'
| 'hamburger'
| 'growVertical'
| 'growHorizontal'
| 'balloon'
| 'balloon2'
| 'noise'
| 'bounce'
| 'boxBounce'
| 'boxBounce2'
| 'triangle'
| 'arc'
| 'circle'
| 'squareCorners'
| 'circleQuarters'
| 'circleHalves'
| 'squish'
| 'toggle'
| 'toggle2'
| 'toggle3'
| 'toggle4'
| 'toggle5'
| 'toggle6'
| 'toggle7'
| 'toggle8'
| 'toggle9'
| 'toggle10'
| 'toggle11'
| 'toggle12'
| 'toggle13'
| 'arrow'
| 'arrow2'
| 'arrow3'
| 'bouncingBar'
| 'bouncingBall'
| 'smiley'
| 'monkey'
| 'hearts'
| 'clock'
| 'earth'
| 'moon'
| 'runner'
| 'pong'
| 'shark'
| 'dqpb';
type Color = 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray';
interface Options {
text?: string;
spinner?: SpinnerName | Spinner;
color?: Color;
interval?: number;
stream?: NodeJS.WritableStream;
enabled?: boolean;
hideCursor?: boolean;
}
interface PersistOptions {
symbol?: string;
text?: string;
}
interface Spinner {
interval?: number;
frames: string[];
}
declare class Ora {
start(text?: string): Ora;
stop(): Ora;
succeed(text?: string): Ora;
fail(text?: string): Ora;
warn(text?: string): Ora;
info(text?: string): Ora;
stopAndPersist(options?: PersistOptions | string): Ora;
clear(): Ora;
render(): Ora;
frame(): Ora;
text: string;
color: Color;
frameIndex: number;
}
interface oraFactory {
(options?: Options | string): Ora;
new (options?: Options | string): Ora;
promise(action: PromiseLike<any>, options?: Options | string): Ora;
}
declare const ora: oraFactory;
export = ora;
/**
* Elegant terminal spinner.
*
* @param options If a string is provided, it is treated as a shortcut for `options.text`.
*/
declare function ora(options?: ora.Options | string): ora.Ora;
declare namespace 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
* @param options If a string is provided, it is treated as a shortcut for `options.text`.
* @returns The spinner instance.
*/
function promise(action: PromiseLike<any>, options?: Options | string): Ora;
interface Ora {
/**
* A boolean of whether the instance is currently spinning.
*/
readonly isSpinning: boolean;
/**
* Change the text.
*/
text: string;
/**
* Change the spinner color.
*/
color: Color;
/**
* 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.
*
* @param options
* @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;
}
interface Options {
/**
* Text to display after the spinner.
*/
text?: string;
/**
* Name of one of the provided spinners. See `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.
*
* Or an object like:
*
* @example
* {
* interval: 80, // optional
* frames: ['-', '+', '-']
* }
*
* @default 'dots'
*/
spinner?: SpinnerName | Spinner;
/**
* Color of the spinner.
* @default 'cyan'
*/
color?: Color;
/**
* Set to `false` to stop Ora from hiding the cursor.
* @default true
*/
hideCursor?: boolean;
/**
* 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
*/
interval?: number;
/**
* Stream to write the output.
*
* You could for example set this to `process.stdout` instead.
* @default process.stderr
*/
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.
*/
isEnabled?: boolean;
}
interface PersistOptions {
/**
* Symbol to replace the spinner with.
* @default ' '
*/
symbol?: string;
/**
* Text to be persisted.
* @default Current text
*/
text?: string;
}
interface Spinner {
interval?: number;
frames: string[];
}
type SpinnerName =
| 'dots'
| 'dots2'
| 'dots3'
| 'dots4'
| 'dots5'
| 'dots6'
| 'dots7'
| 'dots8'
| 'dots9'
| 'dots10'
| 'dots11'
| 'dots12'
| 'line'
| 'line2'
| 'pipe'
| 'simpleDots'
| 'simpleDotsScrolling'
| 'star'
| 'star2'
| 'flip'
| 'hamburger'
| 'growVertical'
| 'growHorizontal'
| 'balloon'
| 'balloon2'
| 'noise'
| 'bounce'
| 'boxBounce'
| 'boxBounce2'
| 'triangle'
| 'arc'
| 'circle'
| 'squareCorners'
| 'circleQuarters'
| 'circleHalves'
| 'squish'
| 'toggle'
| 'toggle2'
| 'toggle3'
| 'toggle4'
| 'toggle5'
| 'toggle6'
| 'toggle7'
| 'toggle8'
| 'toggle9'
| 'toggle10'
| 'toggle11'
| 'toggle12'
| 'toggle13'
| 'arrow'
| 'arrow2'
| 'arrow3'
| 'bouncingBar'
| 'bouncingBall'
| 'smiley'
| 'monkey'
| 'hearts'
| 'clock'
| 'earth'
| 'moon'
| 'runner'
| 'pong'
| 'shark'
| 'dqpb'
| 'weather'
| 'christmas'
| 'grenade'
| 'point'
| 'layer';
type Color =
| 'black'
| 'red'
| 'green'
| 'yellow'
| 'blue'
| 'magenta'
| 'cyan'
| 'white'
| 'gray';
}
+27 -30
View File
@@ -1,49 +1,46 @@
import { PassThrough } from 'stream';
import Ora = require('ora');
import ora = require('ora');
const spinner = Ora('Loading unicorns').start();
const spinner = ora('Loading unicorns');
ora({ text: 'Loading unicorns' });
ora({ spinner: 'squish' });
ora({ spinner: { frames: ['-', '+', '-'] } });
ora({ spinner: { interval: 80, frames: ['-', '+', '-'] } });
ora({ color: 'cyan' });
ora({ color: 'foo' }); // $ExpectError
ora({ hideCursor: true });
ora({ interval: 80 });
ora({ stream: new PassThrough() });
ora({ isEnabled: true });
const spinnerNothing = Ora().start();
const spinnerNew = new Ora({
text: 'Loading unicorns',
spinner: 'squish'
});
const spinnerNew2 = new Ora({
stream: new PassThrough(),
text: 'foo',
color: 'cyan',
enabled: true
});
spinner.color = 'yellow';
spinner.text = 'Loading rainbows';
spinner.isSpinning; // $ExpectType boolean
spinner.isSpinning = true; // $ExpectError
spinner.start();
spinner.start('Test text');
setTimeout(() => {
spinner.color = 'yellow';
spinner.text = 'Loading rainbows';
}, 1000);
setTimeout(() => {
spinner.succeed();
}, 2000);
spinner.stop();
spinner.succeed();
spinner.succeed('fooed');
spinner.fail();
spinner.fail('failed to foo');
spinner.warn();
spinner.warn('warn foo');
spinner.info();
spinner.info('info foo');
spinner.stopAndPersist();
spinner.stopAndPersist('@');
spinner.stopAndPersist({text: 'all done'});
spinner.stopAndPersist({symbol: '@', text: 'all done'});
spinner.stopAndPersist({ text: 'all done' });
spinner.stopAndPersist({ symbol: '@', text: 'all done' });
spinner.clear();
spinner.render();
spinner.frame();
const resolves = Promise.resolve(1);
Ora.promise(resolves, {
ora.promise(resolves, 'foo');
ora.promise(resolves, {
stream: new PassThrough(),
text: 'foo',
color: 'blue',
enabled: true
isEnabled: true,
});
+1 -1
View File
@@ -6,7 +6,7 @@
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": false,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
+137
View File
@@ -0,0 +1,137 @@
// Type definitions for ora 1.3
// Project: https://github.com/sindresorhus/ora
// Definitions by: Basarat Ali Syed <https://github.com/basarat>
// Christian Rackerseder <https://github.com/screendriver>
// BendingBender <https://github.com/BendingBender>
// Aleh Zasypkin <https://github.com/azasypkin>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
type SpinnerName =
'dots'
| 'dots2'
| 'dots3'
| 'dots4'
| 'dots5'
| 'dots6'
| 'dots7'
| 'dots8'
| 'dots9'
| 'dots10'
| 'dots11'
| 'dots12'
| 'line'
| 'line2'
| 'pipe'
| 'simpleDots'
| 'simpleDotsScrolling'
| 'star'
| 'star2'
| 'flip'
| 'hamburger'
| 'growVertical'
| 'growHorizontal'
| 'balloon'
| 'balloon2'
| 'noise'
| 'bounce'
| 'boxBounce'
| 'boxBounce2'
| 'triangle'
| 'arc'
| 'circle'
| 'squareCorners'
| 'circleQuarters'
| 'circleHalves'
| 'squish'
| 'toggle'
| 'toggle2'
| 'toggle3'
| 'toggle4'
| 'toggle5'
| 'toggle6'
| 'toggle7'
| 'toggle8'
| 'toggle9'
| 'toggle10'
| 'toggle11'
| 'toggle12'
| 'toggle13'
| 'arrow'
| 'arrow2'
| 'arrow3'
| 'bouncingBar'
| 'bouncingBall'
| 'smiley'
| 'monkey'
| 'hearts'
| 'clock'
| 'earth'
| 'moon'
| 'runner'
| 'pong'
| 'shark'
| 'dqpb';
type Color = 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray';
interface Options {
text?: string;
spinner?: SpinnerName | Spinner;
color?: Color;
interval?: number;
stream?: NodeJS.WritableStream;
enabled?: boolean;
hideCursor?: boolean;
}
interface PersistOptions {
symbol?: string;
text?: string;
}
interface Spinner {
interval?: number;
frames: string[];
}
declare class Ora {
start(text?: string): Ora;
stop(): Ora;
succeed(text?: string): Ora;
fail(text?: string): Ora;
warn(text?: string): Ora;
info(text?: string): Ora;
stopAndPersist(options?: PersistOptions | string): Ora;
clear(): Ora;
render(): Ora;
frame(): Ora;
text: string;
color: Color;
frameIndex: number;
}
interface oraFactory {
(options?: Options | string): Ora;
new (options?: Options | string): Ora;
promise(action: PromiseLike<any>, options?: Options | string): Ora;
}
declare const ora: oraFactory;
export = ora;
+49
View File
@@ -0,0 +1,49 @@
import { PassThrough } from 'stream';
import Ora = require('ora');
const spinner = Ora('Loading unicorns').start();
const spinnerNothing = Ora().start();
const spinnerNew = new Ora({
text: 'Loading unicorns',
spinner: 'squish'
});
const spinnerNew2 = new Ora({
stream: new PassThrough(),
text: 'foo',
color: 'cyan',
enabled: true
});
spinner.start();
spinner.start('Test text');
setTimeout(() => {
spinner.color = 'yellow';
spinner.text = 'Loading rainbows';
}, 1000);
setTimeout(() => {
spinner.succeed();
}, 2000);
spinner.succeed();
spinner.succeed('fooed');
spinner.fail();
spinner.fail('failed to foo');
spinner.warn();
spinner.info();
spinner.stopAndPersist();
spinner.stopAndPersist('@');
spinner.stopAndPersist({text: 'all done'});
spinner.stopAndPersist({symbol: '@', text: 'all done'});
const resolves = Promise.resolve(1);
Ora.promise(resolves, {
stream: new PassThrough(),
text: 'foo',
color: 'blue',
enabled: true
});
+29
View File
@@ -0,0 +1,29 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../../",
"typeRoots": [
"../../"
],
"paths": {
"ora": [
"ora/v1"
]
},
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true
},
"files": [
"index.d.ts",
"ora-tests.ts"
]
}
+1
View File
@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }