| Current Path : /var/node/inatote/Inatote-Backend/node_modules/stream-to-promise/ |
| Current File : /var/node/inatote/Inatote-Backend/node_modules/stream-to-promise/index.js |
'use strict'
var toArray = require('stream-to-array')
var Promise = require('any-promise')
var onEnd = require('end-of-stream')
module.exports = streamToPromise
function streamToPromise (stream) {
if (stream.readable) return fromReadable(stream)
if (stream.writable) return fromWritable(stream)
return Promise.resolve()
}
function fromReadable (stream) {
var promise = toArray(stream)
// Ensure stream is in flowing mode
if (stream.resume) stream.resume()
return promise
.then(function concat (parts) {
if (stream._readableState && stream._readableState.objectMode) {
return parts
}
return Buffer.concat(parts.map(bufferize))
})
}
function fromWritable (stream) {
return new Promise(function (resolve, reject) {
onEnd(stream, function (err) {
(err ? reject : resolve)(err)
})
})
}
function bufferize (chunk) {
return Buffer.isBuffer(chunk) ? chunk : new Buffer(chunk)
}