Ensure Readable can start flowing after Writable finish #671

This commit is contained in:
Lovell Fuller
2017-01-22 14:03:06 +00:00
parent d241efcdbe
commit d8df503404
4 changed files with 49 additions and 4 deletions

View File

@@ -64,6 +64,12 @@ const _write = function _write (chunk, encoding, callback) {
if (Array.isArray(this.options.input.buffer)) {
/* istanbul ignore else */
if (is.buffer(chunk)) {
if (this.options.input.buffer.length === 0) {
const that = this;
this.on('finish', function () {
that.streamInFinished = true;
});
}
this.options.input.buffer.push(chunk);
callback();
} else {

View File

@@ -378,9 +378,9 @@ const _pipeline = function _pipeline (callback) {
// output=stream
if (this._isStreamInput()) {
// output=stream, input=stream
this.on('finish', function () {
that._flattenBufferIn();
sharp.pipeline(that.options, function (err, data, info) {
if (this.streamInFinished) {
this._flattenBufferIn();
sharp.pipeline(this.options, function (err, data, info) {
if (err) {
that.emit('error', err);
} else {
@@ -389,7 +389,20 @@ const _pipeline = function _pipeline (callback) {
}
that.push(null);
});
});
} else {
this.on('finish', function () {
that._flattenBufferIn();
sharp.pipeline(that.options, function (err, data, info) {
if (err) {
that.emit('error', err);
} else {
that.emit('info', info);
that.push(data);
}
that.push(null);
});
});
}
} else {
// output=stream, input=file/buffer
sharp.pipeline(this.options, function (err, data, info) {