# stdin
> Read data from [`stdin`][@stdlib/streams/node/stdin].
## Usage
```javascript
var stdin = require( '@stdlib/process/read-stdin' );
```
#### stdin( \[encoding,] clbk )
Reads data from [`stdin`][@stdlib/streams/node/stdin].
```javascript
function onRead( error, data ) {
if ( error ) {
return console.error( 'Error: %s', error.message );
}
console.log( data.toString() );
// => '...'
}
stdin( onRead );
```
By default, returned `data` is a [`Buffer`][buffer]. To return a `string` of a specified encoding, provide an `encoding` parameter.
```javascript
function onRead( error, data ) {
if ( error ) {
return console.error( 'Error: %s', error.message );
}
console.log( data );
// => '...'
}
stdin( 'utf8', onRead );
```
When a file's calling Node.js process is running in a [TTY][tty] context (i.e., no [`stdin`][@stdlib/streams/node/stdin]), `data` will either be an empty [`Buffer`][buffer] (no encoding provided) or an empty `string` (encoding provided).
```javascript
var stream = require( '@stdlib/streams/node/stdin' );
function onRead( error, data ) {
if ( error ) {
return console.error( 'Error: %s', error.message );
}
console.log( data );
// => ''
}
stream.isTTY = true;
stdin( 'utf8', onRead );
```
## Examples
```javascript
var string2buffer = require( '@stdlib/buffer/from-string' );
var stream = require( '@stdlib/streams/node/stdin' );
var stdin = require( '@stdlib/process/read-stdin' );
function onRead( error, data ) {
if ( error ) {
console.error( 'Error: %s', error.message );
} else {
console.log( data.toString() );
// => 'beep boop'
}
}
// Fake not being in a terminal context:
stream.isTTY = false;
// Provide a callback to consume all data from `stdin`:
stdin( onRead );
// Push some data to `stdin`:
stream.push( string2buffer( 'beep' ) );
stream.push( string2buffer( ' ' ) );
stream.push( string2buffer( 'boop' ) );
// End the stream:
stream.push( null );
```
[buffer]: https://nodejs.org/api/buffer.html
[tty]: https://nodejs.org/api/tty.html#tty_tty
[@stdlib/streams/node/stdin]: https://www.npmjs.com/package/@stdlib/streams-node-stdin