Socket
Book a DemoInstallSign in
Socket

eventual-pony

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eventual-pony

Process streams with generators

latest
Source
npmnpm
Version
0.0.2
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

Eventual Pony

Process streams with generators and co.

  • Write code and handle exceptions in sync style.
  • Stream2 readables, writables and transforms.
  • Has pipe()ing and backpressure.
  • Works natively on io.js. Works on node with --harmony.
  • Backed by co so do any co stuff.
  • Great name.

Install

npm install eventual-pony

Silly example

var pony = require('eventual-pony')

var upperify = pony.transform(function*(input, output){
  while (true) {
    var chunk = yield input('utf8')
    chunk = chunk.toUpperCase()
    yield output(chunk, 'utf8')
  }
})

fs.createReadStream('./foo')
.pipe(upperify)
.pipe(fs.createWriteStream('./foo-upper'))

API Documentation

pony.writable([opts], genFunc(input))

Create a writable stream.

  • opts - Options object passed to native Writable constructor. (optional)
  • input([encoding]) - Returns yieldable for next available upstream value. If not in object mode and encoding is provided, produces string, otherwise a buffer.
// consume a stream of numbers to produce a sum
var sum = 0
pony.writable({
  objectMode: true
}, function* (input){
  while (true) {
    sum += yield input()
  }
}).on('end', function(){
  console.log(sum)
})

pony.readable([opts], genFunc(output))

Create a readable stream.

  • opts - Options object passed to native Readable constructor. (optional)
  • output(value, [encoding]) - Sends a value downstream. Returns a yieldable that resolves more or less quickly depending on how fast downstream is accepting data.
// stream of fibonacci numbers
pony.readable({
  objectMode: true
}, function* (output){
  var f1 = 1
    , f2 = 1
  while (true) {
    let result = f2
    f2 = f1
    f1 = f1 + result
    yield output(result)
  }
}).pipe(downstream)

pony.transform([opts], genFunc(input, output))

Create a transform stream.

  • opts - Options object passed to native Transform constructor. (optional)
  • input([encoding]) - Returns a yieldable on next available upstream value. If not in object mode and encoding is provided, produces string, otherwise a buffer.
  • input.ended() - Once this returns true the input is ended, so output() any remaining stuff.
  • output(value, [encoding]) - Sends a value downstream. Returns a yieldable that resolves more or less quickly depending on how fast downstream is accepting data.
// dedupe an object stream
upstream.pipe(pony.transform({
  objectMode: true
}, function* (inp, out){
  var uniq = new Set()
  var chunk = yield inp()
  if (!uniq.has(chunk)) {
    uniq.add(chunk)
    yield out(chunk)
  }
})).pipe(downstream)

Change log

  • 0.0.2 - Updated header comments in code files.
  • 0.0.1 - Added a repository field in package.json.
  • 0.0.0 - First version. Has readables, writables and transforms.

Why "Eventual Pony"?

If you're good little boys and girls, eventually you'll get a pony.

Keywords

streams

FAQs

Package last updated on 03 Mar 2015

Did you know?

Socket

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