smart-stream

A library and middleware for Node.js Streams. Implementing your own Stream is easy!

Usage no npm install needed!

<script type="module">
  import smartStream from 'https://cdn.skypack.dev/smart-stream';
</script>

README

node-SmartStream

Middleware for Node.js Streams. Creating your own Stream is easy!

npm install smart-stream

Example of an asynchronous pipeline:

var fs = require('fs');
var ss = require('smart-stream');

// open some file streams
var readStream = fs.createReadStream('./input.txt', { encoding: 'utf8' });
var writeStream = fs.createWriteStream('./output.txt');

// create your own stream middleware
var lowerCaseStream = new ss.BiStream(); // bi-directional stream
lowerCaseStream.setMiddleware(function(data, cb) {
    var result = data.toLowerCase();
    cb(null, result);
    // NOTE: set result to undefined to prevent it from moving downstream
});

// lay some pipe, Tex!
readStream
    .pipe(lowerCaseStream)
    .pipe(writeStream);

input.txt

WHY R U ALL
SO OFFENDED
BY ALL CAPS???

output.txt

why r u all
so offended
by all caps???

Throttling feature

Ever have a producer (e.g. database) that is too fast for the consumer (e.g. http api)? Streams solve this problem!

// when slowStream hits 1,000 concurrent operations, it will ask fastStream to pause.
// when slowStream completes the operations, it will ask fastStream to resume.
var slowStream = new ss.BiStream(1000);
fastStream.pipe(slowStream);