Need private packages and team management tools?Check out npm Teams »

streamfilter

3.0.0 • Public • Published

streamfilter

Filtering streams.

Build status Coverage Status NPM version Dependency Status devDependency Status Dependency Status Package Quality Code Climate

streamfilter is a function based filter for streams inspired per gulp-filter but no limited to Gulp nor to objectMode streams.

Installation

First, install streamfilter in your project:

npm install --save streamfilter

Getting started

There are 3 common usages:

Simple filter

import FilterStream from 'streamfilter';
 
const filter = new FilterStream((chunk, encoding, cb) => {
  const mustBeFiltered = chunk.length() > 128;
  if(mustBeFiltered) {
    cb(true);
    return;
  }
  cb(false);
});
 
// Print to stdout a filtered stdin
process.stdin
  .pipe(filter)
  .pipe(process.stdout);

Filter and restore

import FilterStream from 'streamfilter';
 
const filter = new FilterStream((chunk, encoding, cb) => {
  const mustBeFiltered = chunk.length() > 128;
  if(mustBeFiltered) {
    cb(true);
    return;
  }
  cb(false);
}, {
  restore: true
});
 
// Print accepted chunks in stdout
filter.pipe(process.stdout);
 
// Print filtered one to stderr
filter.restore.pipe(process.stderr);

Filter and restore as a passthrough stream

Let's reach total hype!

import FilterStream from 'streamfilter';
import { Transform } from 'stream';
 
// Filter values
const filter = new FilterStream((chunk, encoding, cb) => {
  const mustBeFiltered = chunk.length() > 128;
  if(mustBeFiltered) {
    cb(true);
    return;
  }
  cb(false);
}, {
  restore: true,
  passthrough: true
});
 
// Uppercase strings
const mySuperTransformStream = new Transform({
  transform: (chunk, encoding, cb) => cb(
    null,
    Buffer.from(
      chunk.toString(encoding).toUpperCase(),
      encoding,
    ),
  ),
});
 
// Pipe stdin
process.stdin.pipe(filter)
  // Edit kept chunks
  .pipe(mySuperTransformStream)
  // Restore filtered chunks
  .pipe(filter.restore)
  // and output!
  .pipe(process.stdout)

Note that in this case, this is your responsibility to end the restore stream by piping in another stream or ending him manually.

API

StreamFilter(filterCallback, options) ⇒ Stream

Filter piped in streams according to the given filterCallback that takes the following arguments: chunk the actual chunk, encoding the chunk encoding, filterResultCallbackthe function to call as the result of the filtering process withtruein argument to filter her orfalse` otherwise.

Options are passed in as is in the various stream instances spawned by this module. So, to use the objectMode, simply pass in the options.objectMode value set to true.

Kind: global function
Returns: Stream - The filtering stream

Param Type Description
filterCallback function Callback applying the filters
options Object Filtering options
options.passthrough boolean Set to true, this option change the restore stream nature from a readable stream to a passthrough one, allowing you to reuse the filtered chunks in an existing pipeline.
options.restore boolean Set to true, this option create a readable stream allowing you to use the filtered chunks elsewhere. The restore stream is exposed in the FilterStream instance as a restore named property.

Authors

License

MIT

Install

npm i streamfilter

DownloadsWeekly Downloads

219,389

Version

3.0.0

License

MIT

Unpacked Size

17.9 kB

Total Files

5

Last publish

Collaborators

  • avatar