index.js 1010 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. 'use strict'
  2. var Writable = require('readable-stream').Writable
  3. var inherits = require('inherits')
  4. function CallbackStream (options, callback) {
  5. if (!(this instanceof CallbackStream)) {
  6. return new CallbackStream(options, callback)
  7. }
  8. if (typeof options === 'function') {
  9. callback = options
  10. options = {}
  11. }
  12. Writable.call(this, options)
  13. this.results = []
  14. this.callback = callback
  15. this.on('finish', deliversCallback)
  16. this.once('pipe', handlePipe)
  17. }
  18. function deliversCallback () {
  19. this.callback(null, this.results)
  20. }
  21. function handlePipe (source) {
  22. source.on('error', this.callback)
  23. }
  24. inherits(CallbackStream, Writable)
  25. CallbackStream.prototype._write = function (data, encoding, done) {
  26. this.results.push(data)
  27. done()
  28. }
  29. CallbackStream.obj = function (options, callback) {
  30. if (typeof options === 'function') {
  31. callback = options
  32. options = {}
  33. }
  34. options.objectMode = true
  35. return new CallbackStream(options, callback)
  36. }
  37. module.exports = CallbackStream