Socket
Socket
Sign inDemoInstall

through2-filter

Package Overview
Dependencies
6
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    through2-filter

A through2 to create an Array.prototype.filter analog for streams.


Version published
Weekly downloads
1.8M
decreased by-19.66%
Maintainers
1
Install size
190 kB
Created
Weekly downloads
 

Package description

What is through2-filter?

The through2-filter npm package is a thin wrapper around node's transform streams designed to create filtering streams using a simple function. It is built on top of through2 and allows users to easily filter chunks of data in a stream based on a condition specified in a function.

What are through2-filter's main functionalities?

Synchronous Filtering

This feature allows for synchronous filtering of stream data. The provided code creates a filter stream that only passes through chunks of data that are longer than 10 characters.

const through2Filter = require('through2-filter');
const filterStream = through2Filter(chunk => chunk.length > 10);
process.stdin.pipe(filterStream).pipe(process.stdout);

Asynchronous Filtering

This feature supports asynchronous filtering. The example demonstrates filtering objects based on the 'age' property, allowing only those with an age greater than 20 to pass through, using an asynchronous test with a timeout.

const through2Filter = require('through2-filter').obj;
const filterStream = through2Filter((chunk, enc, callback) => {
  setTimeout(() => {
    callback(null, chunk.age > 20);
  }, 100);
});
process.stdin.pipe(filterStream).pipe(process.stdout);

Other packages similar to through2-filter

Readme

Source

through2-filter

NPM

This is a super thin wrapper around through2 that works like Array.prototype.filter but for streams.

For when through2 is just too verbose :wink:

Note you will NOT be able to alter the content of the chunks. This is intended for filtering only. If you want to modify the stream content, use either through2 or through2-map.

var filter = require("through2-filter")

var skip = filter(function (chunk) {
  // skip buffers longer than 100
  return chunk.length < 100
})

// vs. with through2:
var skip = through2(function (chunk, encoding, callback) {
  // skip buffers longer than 100
  if (chunk.length < 100) this.push(chunk)
  return callback()
})

// Then use your filter:
source.pipe(skip).pipe(sink)

// Additionally accepts `wantStrings` argument to conver buffers into strings
var alphanum = new RegExp("^[A-Za-z0-1]+$")
var scrub = filter({wantStrings: true}, function (str) {
  return alphanum.exec(str)
})

// Works like `Array.prototype.filter` meaning you can specify a function that
// takes up to two* arguments: fn(element, index)
var skip10 = filter(function (element, index) {
  return index > 10
})

*Differences from Array.prototype.filter:

  • No third array callback argument. That would require realizing the entire stream, which is generally counter-productive to stream operations.
  • Array.prototype.filter doesn't modify the source Array, which is somewhat nonsensical when applied to streams.

API

require("through2-filter")([options], fn)

Create a through2-filter instance that will call fn(chunk). If fn(chunk) returns "true" the chunk will be passed downstream. Otherwise it will be dropped.

require("through2-filter").ctor([options], fn)

Create a through2-filter Type that can be instantiated via new Type() or Type() to create reusable spies.

require("through2-filter").obj([options], fn)

Create a through2-filter that defaults to objectMode = true.

require("through2-filter").objCtor([options], fn)

Create a through2-filter Type that defaults to objectMode = true.

Options

  • wantStrings: Automatically call chunk.toString() for the super lazy.
  • all other through2 options

LICENSE

MIT

Keywords

FAQs

Last updated on 20 Apr 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc