Sha256: 2822e067df3364dd6abdf1db2682dba3fcf2fbba676411d4ef8ffddcd4a274eb
Contents?: true
Size: 1.36 KB
Versions: 62
Compression:
Stored size: 1.36 KB
Contents
'use strict'; var Writable = require('readable-stream').Writable; var inherits = require('util').inherits; var Promise = require('pinkie-promise'); function BufferStream() { Writable.call(this, { objectMode: true }); this.buffer = []; this.length = 0; } inherits(BufferStream, Writable); BufferStream.prototype._write = function(chunk, enc, next) { if (!Buffer.isBuffer(chunk)) { chunk = new Buffer(chunk); } this.buffer.push(chunk); this.length += chunk.length; next(); }; module.exports = function read(stream, options, cb) { if (!stream) { throw new Error('stream argument is required'); } if (typeof options === 'function') { cb = options; options = {}; } if (typeof options === 'string' || options === undefined || options === null) { options = { encoding: options }; } if (options.encoding === undefined) { options.encoding = 'utf8'; } var promise; if (!cb) { var resolve, reject; promise = new Promise(function(_res, _rej) { resolve = _res; reject = _rej; }); cb = function (err, data) { if (err) { return reject(err); } resolve(data); }; } var sink = new BufferStream(); sink.on('finish', function () { var data = Buffer.concat(this.buffer, this.length); if (options.encoding) { data = data.toString(options.encoding); } cb(null, data); }); stream.once('error', cb); stream.pipe(sink); return promise; }
Version data entries
62 entries across 62 versions & 1 rubygems