Join Stream

Transform stream which joins streamed data.

Usage

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

joinStream( [options] )

Creates a transform stream which joins streamed data.

var stdout = require( '@stdlib/streams/node/stdout' );

var stream = joinStream();

stream.pipe( stdout );

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

stream.end();

// prints: 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] )

Returns a function for creating streams which are identically configured according to 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() );
}

This method accepts the same options as joinStream().

joinStream.objectMode( [options] )

This method is a convenience function to create streams which always operate in objectMode.

var stdout = require( '@stdlib/streams/node/stdout' );

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

stream.pipe( stdout );

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

stream.end();

// prints: a,b,c

This method accepts the same options as joinStream(); however, the method will always override the objectMode option in options.

Examples

var splitStream = require( '@stdlib/streams/node/split' );
var inspectStream = require( '@stdlib/streams/node/inspect-sink' );
var joinStream = require( '@stdlib/streams/node/join' );

var inspect;
var split;
var join;
var i;

function log( chunk ) {
    console.log( chunk.toString() );
}

// 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 to inspect joined output:
inspect = inspectStream( log );

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

// Write values to the split stream...
for ( i = 0; i < 10; i++ ) {
    split.write( i+'\t', 'utf8' );
}
split.end();
Did you find this page helpful?