Module exports

Scramjet main exports expose all the stream classes and a number of methods.

All scramjet streams allow writing, reading or transform modes - currently exclusively (meaning you can't have two at once). Any of the scramjet streams can be constructed with the following options passed to mimic node.js standard streams:

  • async promiseTransform(chunk) - transform method that resolves with a single output chunk
  • async promiseWrite(chunk) - write method that that resolves when chunk is written
  • async promiseRead(count) - read method that resolves with an array of chunks when called

See node.js API for stream implementers for details

The object exposes the following classes:

  • DataStream {@see DataStream} - the basic object stream of any type
  • StringStream {@see StringStream} - a stream of strings
  • BufferStream {@see BufferStream} - a stream of buffers
  • MultiStream {@see MultiStream} - a group of streams
  • NumberStream {@see NumberStream} - a stream of numbers
  • WindowStream {@see WindowStream} - a stream of windows of objects

The general concept of Scramjet streams is facilitating node's TransformStream mechanism so that you don't need to create a number of streams and create the pipeline, but use the concept of chaining instead. When you call parse method for instance, scramjet creates a new stream, pipes it to the callee and forwards errors.

What's worth mentioning - scramjet tries to limit the number of created transform streams and pushes the transforms one after another into the same stream class therefore a code stream.map(transform1).map(transform2).filter(transform3) will only operate on a single transform stream that evaluates all three transforms one after another.

scramjet:StreamWorker : StreamWorker

A Stream Worker class

Kind: static property of scramjet
Inject: StreamWorker

scramjet:from(input, [options]) : DataStream

Creates a DataStream that's piped from the passed readable.

Kind: static method of scramjet

Param Type Default Description
input Array | Iterable.<any> | AsyncGeneratorFunction | GeneratorFunction | AsyncFunction | function | string | Readable argument to be turned into new stream
[options] DataStreamOptions | Writable {} options for creation of a new stream or the target stream
...args Array.<any> additional arguments for the stream - will be passed to the function or generator

scramjet:fromArray(array, [options]) : DataStream

Creates a DataStream from an Array

Kind: static method of scramjet

Param Type Default Description
array Array list of chunks
[options] DataStreamOptions {} the read stream options

scramjet:createTransformModule(transform, [options]) : function

Creates a safe wrapper for scramjet transform module. See Modules documentation for more info.

Kind: static method of scramjet
Returns: function - a scramjet module function

Param Type Default
transform UseCallback
[options] CreateModuleOptions {}
...initialArgs Array.<any>

scramjet:createReadModule(anything, [options]) : function

Creates a safe wrapper for scramjet read module. See Modules documentation for more info.

Kind: static method of scramjet
Returns: function - a scramjet module function

Param Type Default
anything Array | Iterable.<any> | AsyncGeneratorFunction | GeneratorFunction | AsyncFunction | function | string | Readable
[options] CreateModuleOptions {}
...initialArgs Array.<any>

scramjet:plugin(mixin) : ScramjetPlugin

Plugs in methods for any of the classes

Kind: static method of scramjet
Test: test/methods/scramjet-plugin.js

Param Type Description
mixin ScramjetPlugin the plugin object

scramjet:API(version) : ScramjetPlugin

Gets an API version (this may be important for future use)

Kind: static method of scramjet

Param Type Description
version number The required version (currently only: 1)