Constant Stream
Create a readable stream which always streams the same value.
Usage
var constantStream = require( '@stdlib/streams/node/from-constant' );
constantStream( value[, options] )
Returns a readable stream which always streams the same value
.
var inspectStream = require( '@stdlib/streams/node/inspect-sink' );
var iStream;
var stream;
function log( chunk, i ) {
console.log( chunk.toString() );
if ( i === 10 ) {
stream.destroy();
}
}
stream = constantStream( 'beep' );
iStream = inspectStream( log );
stream.pipe( iStream );
The function accepts the following options
:
- objectMode: specifies whether a stream should operate in objectMode. Default:
false
. - encoding: specifies how
Buffer
objects should be decoded tostrings
. Default:null
. - highWaterMark: specifies the maximum number of bytes to store in an internal buffer before pausing streaming.
- sep: separator used to join streamed data. This option is only applicable when a stream is not in objectMode. Default:
'\n'
. - iter: number of iterations.
To set stream options
,
var opts = {
'objectMode': true,
'encoding': 'utf8',
'highWaterMark': 64
};
var stream = constantStream( 'beep', opts );
By default, the function returns a stream which streams an infinite number of values (i.e., the stream will never end). To limit the number of streamed values, set the iter
option.
var inspectStream = require( '@stdlib/streams/node/inspect-sink' );
function log( chunk ) {
console.log( chunk.toString() );
}
var opts = {
'iter': 10
};
var stream = constantStream( 'beep', opts );
var iStream = inspectStream( log );
stream.pipe( iStream );
By default, when not operating in objectMode, a returned stream delineates streamed values using a newline character. To specify an alternative separator, set the sep
option.
var inspectStream = require( '@stdlib/streams/node/inspect-sink' );
function log( chunk ) {
console.log( chunk.toString() );
}
var opts = {
'iter': 10,
'sep': ','
};
var stream = constantStream( 'beep', opts );
var iStream = inspectStream( log );
stream.pipe( iStream );
constantStream.factory( [value, ][options] )
Returns a function
for creating readable streams which always stream the same provided value
.
var opts = {
'objectMode': true,
'encoding': 'utf8',
'highWaterMark': 64
};
var createStream = constantStream.factory( opts );
If provided a value
to stream, the returned function returns readable streams which always stream the same value
.
var createStream = constantStream.factory( 'beep' );
var stream1 = createStream();
var stream2 = createStream();
// ...
If not provided a value
to stream, the returned function requires that a value
be provided at each invocation.
var createStream = constantStream.factory();
var stream1 = createStream( 'beep' );
var stream2 = createStream( 'boop' );
// ...
The method accepts the same options
as constantStream()
.
constantStream.objectMode( value[, options] )
This method is a convenience function to create streams which always operate in objectMode.
var inspectStream = require( '@stdlib/streams/node/inspect-sink' );
function log( v ) {
console.log( v );
}
var value = {
'beep': 'boop'
};
var opts = {
'iter': 10
};
var stream = constantStream.objectMode( value, opts );
opts = {
'objectMode': true
};
var iStream = inspectStream( opts, log );
stream.pipe( iStream );
This method accepts the same options
as constantStream()
; however, the method will always override the objectMode
option in options
.
Notes
- In binary mode, a provided
value
must be astring
,Buffer
, orUint8Array
. - In
objectMode
,null
is a reserved value. If providednull
, the returned stream will prematurely end. - If provided an
object
reference, thevalue
is not copied. To avoid unwanted mutation, copy thevalue
before creating a stream. - In older Node.js environments,
Uint8Array
contents may be copied to a newBuffer
object due to changes in the underlying Node.js APIs. - If the
factory
method is provided only one argument and that argument is anobject
(either empty or not containing any recognizedoptions
properties), the method treats the argument as a value to be streamed, not as anoptions
argument.
Examples
var inspectStream = require( '@stdlib/streams/node/inspect-sink' );
var constantStream = require( '@stdlib/streams/node/from-constant' );
function log( v ) {
console.log( v.toString() );
}
var opts = {
'objectMode': true,
'iter': 10
};
var stream = constantStream( 3.14, opts );
opts = {
'objectMode': true
};
var iStream = inspectStream( opts, log );
stream.pipe( iStream );
CLI
Usage
Usage: constant-stream [options] <value>
Options:
-h, --help Print this message.
-V, --version Print the package version.
--sep sep Separator used to join streamed data. Default: '\n'.
-n, --iter iterations Number of iterations.
Notes
- In accordance with POSIX convention, a trailing newline is always appended to generated output prior to exit.
Examples
$ constant-stream 'beep' -n 10