streamworks
Combine merge and pipe streams into stream architectures that can bend packets to your will.
merge stream
A merge stream will duplicate the input across all members and merge the output from all members (based on combine-stream.
pipe stream
A pipe stream will pass the output from each member as the input to the next (based on stream-combiner.
combo streams
Both types accepts streams in their list - you can combine merge and pipes with each other - it's stream inception!
installation
$ npm install streamworks
usage
There are 2 main methods:
- merge
- pipe
Create each type of stream by passing an array of either:
- functions - these are turned into streams using through2
- streams - these are used as is
example
var from = ;var streamworks = ; // a merge is a stream that splits the input across each function and merges the output back into one streamvar mergestream = streamworks // a pipe is a stream that passes values through each functionvar pipestream = streamworks // run some data through the merge stream (which will duplicate it) and then through the pipe stream (which will filter it)
nested streams
Because streamworks streams are, umm, streams - you can create complex nested stream-structures:
var bigAssStream = streamworks var arr = ; /* sub1:A1:hellosub1:A3:hellosub2:A3:hellosub1:A1:applesub1:A3:applesub2:A3:apple */
object streams
If you pass true or:
objectMode:true
as the first argument to pipe or merge - the stream will be in object mode.
this means that the 'chunks' will be what you sent and not buffers/strings.
You can also use:
- pipeObjects
- mergeObjects
Which are shortcuts for:
- pipe(true, [])
- merge(true, [])
api
streamworks.pipe([objectMode], fns)
create a new readable/writable stream that will pipe each value through the array of streams/functions
streamworks.pipeObjects(fns)
shorthand for pipe(true, [])
streamworks.merge([objectMode], fns)
create a new readable/writable stream that will duplicate each value into each of the streams/functions and merge the results back into the output
streamworks.mergeObjects(fns)
shorthand for merge(true, [])
license
MIT