ink

  • Version 7.0.5
  • Published
  • 537 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 handleStaticChange

          handleStaticChange: () => 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>