GitXplorerGitXplorer
b

through2-filter

public
35 stars
4 forks
1 issues

Commits

List of commits on branch master.
Unverified
3b670652159c33f072022fd9eac7a3aa8cde1629

Bump through2 to version 4

rrealityking committed 6 years ago
Unverified
80539399044f524c7905f0a78d5828c87792077d

Require Node.js 6

rrealityking committed 6 years ago
Unverified
6b5f6684a420a3029e5258737caef1276d53a1dc

3.0.0

bbrycebaril committed 7 years ago
Unverified
6504f57da01641f1b3c2fd43139da1be7e89febf

Catch errors in the filter function.

aalnorth committed 7 years ago
Unverified
fd290780ed8f8a9e9452c947e7f8cd9f8fefba72

2.0.0

bbrycebaril committed 10 years ago
Unverified
33f76de96af4bdfb222c0bd1bff4c4f493f1f478

Remove david.dm badges

bbrycebaril committed 10 years ago

README

The README file for this repository.

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 😉

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