1.0.0 • Published 8 years ago

co-pipe v1.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

co-pipe

Build Status Coverage Status JavaScript Style Guide dependencies Status devDependencies Status

Wait the completion of piping.

Install

$ npm install co-pipe

Usage

Vanilla Promise

const fs = require('fs')
const pipe = require('co-pipe')

const reader = fs.createReadStream('foo.txt')
const writer = fs.createWriteStream('bar.txt')

pipe(reader, writer).then(
  () => console.log('File successfully copied.'),
  (error) => console.log(`Something was wrong with ${
    error.stream === reader ? 'reader' : 'writer'
  }`)
)

Use with co

const fs = require('fs')
const co = require('co')
const pipe = require('co-pipe')

co(function * () {
  const reader = fs.createReadStream('foo.txt')
  const writer = fs.createWriteStream('bar.txt')

  try {
    yield pipe(reader, writer)
    console.log('File successfully copied.')
  } catch (error) {
    console.log(`Something was wrong with ${
      error.stream === reader ? 'reader' : 'writer'
    }`)
  }
})

Use with koa

const fs = require('fs')
const koa = require('koa')
const pipe = require('co-pipe')

const app = koa()

app.use(function * () {
  const writer = fs.createWriteStream('foo.txt')
  yield pipe(this.req, writer)
  this.body = 'Request successfully written to foo.txt'
})

Multiple Streams

const fs = require('fs')
const zlib = require('zlib')
const pipe = require('co-pipe')

const reader = fs.createReadStream('foo.txt')
const gzip = zlib.createGzip()
const writer = fs.createWriteStream('bar.txt.gz')

pipe(reader, gzip, writer).then(
  () => console.log('File successfully gzipped.'),
  (error) => console.log(`Something was wrong with ${
    error.stream === reader ? 'reader' :
      (error.stream === gzip ? 'gzip' : 'writer')
  }`)
)

License

MIT