get-stdin-with-tty

Get stdin as a string or buffer from pipe or TTY

Usage no npm install needed!

<script type="module">
  import getStdinWithTty from 'https://cdn.skypack.dev/get-stdin-with-tty';
</script>

README

get-stdin-with-tty

NPM version Build Status

Get stdin as a string or buffer

Install

$ npm install get-stdin-with-tty

Usage

// example.js
const getStdin = require('get-stdin-with-tty');

(async () => {
    console.log(await getStdin());
})();
$ echo unicorns | node example.js
unicorns

API

Both methods returns a promise that is resolved when the end event fires on the stdin stream, indicating that there is no more data to be read.

getStdin(options) ← Promise<String>

Get stdin as a string.

In a TTY context, a promise that resolves to an empty string is returned, unless options.tty or getStdin.tty is true.

getStdin.buffer() ← Promise<Buffer>

Get stdin as a Buffer.

In a TTY context, a promise that resolves to an empty Buffer is returned.

Options / Settings

  • tty | getStdin.tty (Boolean) - Set global TTY handling. When true, accepts input from TTY until a new line beginning with Ctrl-d or Ctrl-z is entered. Double Ctrl-d anywhere in the line also ends the stream. (Default = true)

    When enabled for the example above:

    $ node example.js
    foobar
    barfoo
    ^d
    // =>
    foobar
    barfoo
    
  • EOF | getStdin.EOF (String) - The end-of-file (aka EOT) character to use to signal end of stream. Defaults to Ctrl-d on *nix and cygwin, and Ctrl-z on Windows. Acceptable values:

    • getStdin.CTRL_D - Ctrl-d (ASCII 04)
    • getStdin.CTRL_Z - Ctrl-z (ASCII 26)
    • '*' - Use both Ctrl-d and Ctrl-z
    (win) c:\> node example.js
    foobar
    ^z
    # => foobar
    
    $ node example.js
    foobar^d^d
    # => foobar
    

Moos Fork

The moos fork includes support for reading stdin from TTY by default.

Related

Change log

  • 6.0.0 - tty option is now defaulted to true. Double Ctrl-d in middle of line also ends stream.
  • 5.0.2 - Initial fork.

License

MIT © Sindre Sorhus © Moos