/get-stdin-with-tty

Get stdin as a string or buffer from pipe or TTY (moos fork)

Primary LanguageJavaScriptMIT LicenseMIT

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