# flagstaff/ora

> Every export of flagstaff/ora, with its signature and doc comment: ora, oraPromise, spinners, Ora, plus 10 types.

Source: https://flagstaff.interlace.tools/docs/api/ora

<!-- Generated by scripts/api-reference.ts from the built dist/*.d.ts. Do not edit; run `npx tsx scripts/api-reference.ts`. -->

```ts
import ora from 'flagstaff/ora';
import { oraPromise, spinners, Ora } from 'flagstaff/ora';
```

## Functions

### default

The default export, declared as `ora`.

```ts
function ora(options?: Options | string): Ora;
```

| Parameter | Type |
| :-- | :-- |
| `options` (optional) | `Options \| string` |

**Returns** `Ora`

### oraPromise

Run an action under a spinner, and land on the right symbol whichever way it ends.

```ts
function oraPromise<T>(action: Promise<T> | ((spinner: Ora) => Promise<T>), options?: PromiseOptions<T> | string): Promise<T>;
```

| Parameter | Type |
| :-- | :-- |
| `action` | `Promise<T> \| ((spinner: Ora) => Promise<T>)` |
| `options` (optional) | `PromiseOptions<T> \| string` |

**Returns** `Promise<T>`

## Classes

### Ora

```ts
class Ora {
    #private;
    constructor(options?: Options | string);
    get indent(): number;
    set indent(indent: number | undefined);
    get interval(): number;
    get spinner(): SpinnerDefinition;
    set spinner(spinner: SpinnerDefinition | string | undefined);
    get text(): string;
    set text(value: string | undefined);
    get prefixText(): Affix;
    set prefixText(value: Affix | undefined);
    get suffixText(): Affix;
    set suffixText(value: Affix | undefined);
    get isSpinning(): boolean;
    get color(): Color | false | undefined;
    set color(value: Color | false | undefined);
    get isEnabled(): boolean;
    set isEnabled(value: boolean);
    get isSilent(): boolean;
    set isSilent(value: boolean);
    frame(): string;
    clear(): this;
    render(): this;
    start(text?: string): this;
    stop(): this;
    succeed(text?: string): this;
    fail(text?: string): this;
    warn(text?: string): this;
    info(text?: string): this;
    stopAndPersist(options?: PersistOptions): this;
}
```

## Constants

### spinners

Every spinner cli-spinners ships, unedited — ora re-exports it and so do we.

```ts
const spinners: Record<string, SpinnerDefinition>;
```

## Interfaces

### Options

```ts
interface Options {
    text?: string;
    prefixText?: Affix;
    suffixText?: Affix;
    spinner?: SpinnerDefinition | string;
    color?: Color | false;
    hideCursor?: boolean;
    indent?: number;
    interval?: number | undefined;
    stream?: OraStream;
    isEnabled?: boolean;
    isSilent?: boolean;
    discardStdin?: boolean;
}
```

### OraStream

What ora writes to: the runtime's stderr by default, anything stream-shaped in a test.

```ts
interface OraStream {
    write(chunk: string, encoding?: unknown, callback?: unknown): boolean;
    isTTY?: boolean;
    columns?: number;
    rows?: number;
    cursorTo?(x: number): unknown;
    moveCursor?(dx: number, dy: number): unknown;
    clearLine?(direction: number): unknown;
    once?(event: string, listener: () => void): unknown;
    removeListener?(event: string, listener: () => void): unknown;
}
```

### PersistOptions

```ts
interface PersistOptions {
    symbol?: string;
    text?: string;
    prefixText?: Affix;
    suffixText?: Affix;
}
```

### PromiseOptions

```ts
interface PromiseOptions<T> extends Options {
    successText?: string | ((result: T) => string);
    failText?: string | ((error: unknown) => string);
    successSymbol?: string;
    failSymbol?: string;
}
```

### SpinnerDefinition

```ts
interface SpinnerDefinition {
    interval?: number;
    frames: string[];
}
```

## Types

### Affix

A prefix or suffix, resolved on every frame when it is a function.

```ts
type Affix = string | (() => string);
```

### Color

```ts
type Color = 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray';
```

### PrefixTextGenerator

```ts
type PrefixTextGenerator = () => string;
```

### Spinner

```ts
type Spinner = SpinnerDefinition;
```

### SuffixTextGenerator

```ts
type SuffixTextGenerator = () => string;
```
