Join Stream

Transform stream which joins streamed data.

Usage

var joinStream = require( '@stdlib/streams/utils/join' );

joinStream( [options] )

Creates a transform stream which joins streamed data.

var stream = joinStream();

stream.pipe( process.stdout );

stream.write( '1' );
stream.write( '2' );
stream.write( '3' );

stream.end();
// => '1\n2\n3'

The function accepts the following options:

  • sep: separator used to join streamed data. Default: '\n'.
  • objectMode: specifies whether a stream should operate in object mode. Default: false.
  • encoding: specifies how Buffer objects should be decoded to strings. Default: null.
  • highWaterMark: specifies the Buffer level at which write() calls start returning false.
  • allowHalfOpen: specifies whether a stream should remain open even if one side ends. Default: false.
  • readableObjectMode: specifies whether the readable side should be in object mode. Default: false.

To set stream options,

var opts = {
    'sep': ',',
    'objectMode': true,
    'encoding': 'utf8',
    'highWaterMark': 64,
    'allowHalfOpen': true,
    'readableObjectMode': false // overridden by `objectMode` option when `objectMode=true`
};

var stream = joinStream( opts );

joinStream.factory( [options] )

Creates a reusable stream factory. The factory method ensures streams are configured identically by using the same set of provided options.

var opts = {
    'sep': '\t',
    'objectMode': true,
    'encoding': 'utf8',
    'highWaterMark': 64
};

var factory = joinStream.factory( opts );

// Create 10 identically configured streams...
var streams = [];
var i;
for ( i = 0; i < 10; i++ ) {
    streams.push( factory() );
}

joinStream.objectMode( [options] )

This method is a convenience function to create streams which always operate in objectMode. The method will always override the objectMode option in options.

var stream = joinStream.objectMode({
    'sep': ','
});

stream.pipe( process.stdout );

stream.write( 'a' );
stream.write( 'b' );
stream.write( 'c' );

stream.end();
// => 'a,b,c'

Examples

var splitStream = require( '@stdlib/streams/utils/split' );
var joinStream = require( '@stdlib/streams/utils/join' );

var split;
var join;
var i;

// Create a split stream for tab delimited data:
split = splitStream({
    'sep': /\t/
});

// Create a stream to make newline delimited data:
join = joinStream({
    'sep': '\n'
});

// Create a stream pipeline:
split
    .pipe( join )
    .pipe( process.stdout );

// Write values to the split stream...
for ( i = 0; i < 10; i++ ) {
    split.write( i+'\t', 'utf8' );
}
split.end();