ink

  • Version 7.0.0
  • Published
  • 533 kB
  • 25 dependencies
  • MIT license

Install

npm i ink
yarn add ink
pnpm add ink

Overview

React for CLI

Index

Classes

class Ink

class Ink {}

    constructor

    constructor(options: Options);

      property calculateLayout

      calculateLayout: () => void;

        property handleAppExit

        handleAppExit: (errorOrResult?: unknown) => void;

          property isConcurrent

          readonly isConcurrent: boolean;
          • Whether this instance is using concurrent rendering mode.

          property onRender

          onRender: () => void;

            property rejectExitPromise

            rejectExitPromise: (reason?: Error) => void;

              property resized

              resized: () => void;

                property resolveExitPromise

                resolveExitPromise: (result?: unknown) => void;

                  property restoreLastOutput

                  restoreLastOutput: () => void;

                    property setCursorPosition

                    setCursorPosition: (position: CursorPosition | undefined) => void;

                      property unsubscribeExit

                      unsubscribeExit: () => void;

                        method clear

                        clear: () => void;

                          method patchConsole

                          patchConsole: () => void;

                            method render

                            render: (node: ReactNode) => void;

                              method unmount

                              unmount: (error?: Error | number | null) => void;

                                method waitUntilExit

                                waitUntilExit: () => Promise<unknown>;

                                  method waitUntilRenderFlush

                                  waitUntilRenderFlush: () => Promise<void>;

                                    method writeToStderr

                                    writeToStderr: (data: string) => void;

                                      method writeToStdout

                                      writeToStdout: (data: string) => void;

                                        Type Aliases

                                        type Options

                                        type Options = {
                                        stdout: NodeJS.WriteStream;
                                        stdin: NodeJS.ReadStream;
                                        stderr: NodeJS.WriteStream;
                                        debug: boolean;
                                        exitOnCtrlC: boolean;
                                        patchConsole: boolean;
                                        onRender?: (metrics: RenderMetrics) => void;
                                        isScreenReaderEnabled?: boolean;
                                        waitUntilExit?: () => Promise<unknown>;
                                        maxFps?: number;
                                        incrementalRendering?: boolean;
                                        /**
                                        Enable React Concurrent Rendering mode.
                                        When enabled:
                                        - Suspense boundaries work correctly with async data
                                        - `useTransition` and `useDeferredValue` are fully functional
                                        - Updates can be interrupted for higher priority work
                                        Note: Concurrent mode changes the timing of renders. Some tests may need to use `act()` to properly await updates. Reusing the same stdout across multiple `render()` calls without unmounting is unsupported. Call `unmount()` first if you need to change the rendering mode or create a fresh instance.
                                        @default false
                                        @experimental
                                        */
                                        concurrent?: boolean;
                                        kittyKeyboard?: KittyKeyboardOptions;
                                        /**
                                        Override automatic interactive mode detection.
                                        By default, Ink detects whether the environment is interactive based on CI detection (via [`is-in-ci`](https://github.com/sindresorhus/is-in-ci)) and `stdout.isTTY`. Most users should not need to set this.
                                        When non-interactive, Ink disables ANSI erase sequences, cursor manipulation, synchronized output, resize handling, and kitty keyboard auto-detection, writing only the final frame at unmount.
                                        Set to `false` to force non-interactive mode or `true` to force interactive mode when the automatic detection doesn't suit your use case.
                                        Note: Reusing the same stdout across multiple `render()` calls without unmounting is unsupported. Call `unmount()` first if you need to change this option or create a fresh instance.
                                        @default true (false if in CI or `stdout.isTTY` is falsy)
                                        @see {@link RenderOptions.interactive}
                                        */
                                        interactive?: boolean;
                                        /**
                                        Render the app in the terminal's alternate screen buffer. When enabled, the app renders on a separate screen, and the original terminal content is restored when the app exits. This is the same mechanism used by programs like vim, htop, and less.
                                        Note: The terminal's scrollback buffer is not available while in the alternate screen. This is standard terminal behavior; programs like vim use the alternate screen specifically to avoid polluting the user's scrollback history.
                                        Note: Ink intentionally treats alternate-screen teardown output as disposable. It does not preserve or replay teardown-time frames, hook writes, or `console.*` output after restoring the primary screen.
                                        Only works in interactive mode. Ignored when `interactive` is `false` or in a non-interactive environment (CI, piped stdout).
                                        Note: Reusing the same stdout across multiple `render()` calls without unmounting is unsupported. Call `unmount()` first if you need to change this option or create a fresh instance.
                                        @default false
                                        @see {@link RenderOptions.alternateScreen}
                                        */
                                        alternateScreen?: boolean;
                                        };

                                          type RenderMetrics

                                          type RenderMetrics = {
                                          /**
                                          Time spent rendering in milliseconds.
                                          */
                                          renderTime: number;
                                          };
                                          • Performance metrics for a render operation.

                                          Package Files (1)

                                          Dependencies (25)

                                          Dev Dependencies (29)

                                          Peer Dependencies (3)

                                          Badge

                                          To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

                                          You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/ink.

                                          • Markdown
                                            [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/ink)
                                          • HTML
                                            <a href="https://www.jsdocs.io/package/ink"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>