index.js 839 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. exports.array = toArray
  2. exports.buffer = toBuffer
  3. function toArray(stream, callback) {
  4. var arr = []
  5. stream.on('data', onData)
  6. stream.once('end', onEnd)
  7. stream.once('error', callback)
  8. stream.once('error', cleanup)
  9. stream.once('close', cleanup)
  10. function onData(doc) {
  11. arr.push(doc)
  12. }
  13. function onEnd() {
  14. callback(null, arr)
  15. cleanup()
  16. }
  17. function cleanup() {
  18. arr = null
  19. stream.removeListener('data', onData)
  20. stream.removeListener('end', onEnd)
  21. stream.removeListener('error', callback)
  22. stream.removeListener('error', cleanup)
  23. stream.removeListener('close', cleanup)
  24. }
  25. return stream
  26. }
  27. function toBuffer(stream, callback) {
  28. toArray(stream, function (err, arr) {
  29. if (err || !arr)
  30. callback(err)
  31. else
  32. callback(null, Buffer.concat(arr))
  33. })
  34. return stream
  35. }