diff options
Diffstat (limited to 'node_modules/readable-stream/lib')
6 files changed, 150 insertions, 101 deletions
| diff --git a/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/readable-stream/lib/_stream_duplex.js index c599463dd..a1ca813e5 100644 --- a/node_modules/readable-stream/lib/_stream_duplex.js +++ b/node_modules/readable-stream/lib/_stream_duplex.js @@ -28,7 +28,7 @@  /*<replacement>*/ -var processNextTick = require('process-nextick-args'); +var pna = require('process-nextick-args');  /*</replacement>*/  /*<replacement>*/ @@ -52,10 +52,13 @@ var Writable = require('./_stream_writable');  util.inherits(Duplex, Readable); -var keys = objectKeys(Writable.prototype); -for (var v = 0; v < keys.length; v++) { -  var method = keys[v]; -  if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; +{ +  // avoid scope creep, the keys array can then be collected +  var keys = objectKeys(Writable.prototype); +  for (var v = 0; v < keys.length; v++) { +    var method = keys[v]; +    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; +  }  }  function Duplex(options) { @@ -74,6 +77,16 @@ function Duplex(options) {    this.once('end', onend);  } +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { +  // making it explicit this property is not enumerable +  // because otherwise some prototype manipulation in +  // userland will fail +  enumerable: false, +  get: function () { +    return this._writableState.highWaterMark; +  } +}); +  // the no-half-open enforcer  function onend() {    // if we allow half-open state, or if the writable side ended, @@ -82,7 +95,7 @@ function onend() {    // no more data can be written.    // But allow more writes to happen in this tick. -  processNextTick(onEndNT, this); +  pna.nextTick(onEndNT, this);  }  function onEndNT(self) { @@ -114,11 +127,5 @@ Duplex.prototype._destroy = function (err, cb) {    this.push(null);    this.end(); -  processNextTick(cb, err); -}; - -function forEach(xs, f) { -  for (var i = 0, l = xs.length; i < l; i++) { -    f(xs[i], i); -  } -}
\ No newline at end of file +  pna.nextTick(cb, err); +};
\ No newline at end of file diff --git a/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/readable-stream/lib/_stream_readable.js index ee9001cdf..bf34ac65e 100644 --- a/node_modules/readable-stream/lib/_stream_readable.js +++ b/node_modules/readable-stream/lib/_stream_readable.js @@ -23,7 +23,7 @@  /*<replacement>*/ -var processNextTick = require('process-nextick-args'); +var pna = require('process-nextick-args');  /*</replacement>*/  module.exports = Readable; @@ -50,9 +50,8 @@ var EElistenerCount = function (emitter, type) {  var Stream = require('./internal/streams/stream');  /*</replacement>*/ -// TODO(bmeurer): Change this back to const once hole checks are -// properly optimized away early in Ignition+TurboFan.  /*<replacement>*/ +  var Buffer = require('safe-buffer').Buffer;  var OurUint8Array = global.Uint8Array || function () {};  function _uint8ArrayToBuffer(chunk) { @@ -61,6 +60,7 @@ function _uint8ArrayToBuffer(chunk) {  function _isUint8Array(obj) {    return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;  } +  /*</replacement>*/  /*<replacement>*/ @@ -89,15 +89,13 @@ var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];  function prependListener(emitter, event, fn) {    // Sadly this is not cacheable as some libraries bundle their own    // event emitter implementation with them. -  if (typeof emitter.prependListener === 'function') { -    return emitter.prependListener(event, fn); -  } else { -    // This is a hack to make sure that our error handler is attached before any -    // userland ones.  NEVER DO THIS. This is here only because this code needs -    // to continue to work with older versions of Node.js that do not include -    // the prependListener() method. The goal is to eventually remove this hack. -    if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; -  } +  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + +  // This is a hack to make sure that our error handler is attached before any +  // userland ones.  NEVER DO THIS. This is here only because this code needs +  // to continue to work with older versions of Node.js that do not include +  // the prependListener() method. The goal is to eventually remove this hack. +  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];  }  function ReadableState(options, stream) { @@ -105,17 +103,26 @@ function ReadableState(options, stream) {    options = options || {}; +  // Duplex streams are both readable and writable, but share +  // the same options object. +  // However, some cases require setting options to different +  // values for the readable and the writable sides of the duplex stream. +  // These options can be provided separately as readableXXX and writableXXX. +  var isDuplex = stream instanceof Duplex; +    // object stream flag. Used to make read(n) ignore n and to    // make all the buffer merging and length checks go away    this.objectMode = !!options.objectMode; -  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; +  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;    // the point at which it stops calling _read() to fill the buffer    // Note: 0 is a valid value, means "don't call _read preemptively ever"    var hwm = options.highWaterMark; +  var readableHwm = options.readableHighWaterMark;    var defaultHwm = this.objectMode ? 16 : 16 * 1024; -  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; + +  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;    // cast to ints.    this.highWaterMark = Math.floor(this.highWaterMark); @@ -488,7 +495,7 @@ function emitReadable(stream) {    if (!state.emittedReadable) {      debug('emitReadable', state.flowing);      state.emittedReadable = true; -    if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); +    if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);    }  } @@ -507,7 +514,7 @@ function emitReadable_(stream) {  function maybeReadMore(stream, state) {    if (!state.readingMore) {      state.readingMore = true; -    processNextTick(maybeReadMore_, stream, state); +    pna.nextTick(maybeReadMore_, stream, state);    }  } @@ -552,7 +559,7 @@ Readable.prototype.pipe = function (dest, pipeOpts) {    var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;    var endFn = doEnd ? onend : unpipe; -  if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); +  if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);    dest.on('unpipe', onunpipe);    function onunpipe(readable, unpipeInfo) { @@ -742,7 +749,7 @@ Readable.prototype.on = function (ev, fn) {        state.readableListening = state.needReadable = true;        state.emittedReadable = false;        if (!state.reading) { -        processNextTick(nReadingNextTick, this); +        pna.nextTick(nReadingNextTick, this);        } else if (state.length) {          emitReadable(this);        } @@ -773,7 +780,7 @@ Readable.prototype.resume = function () {  function resume(stream, state) {    if (!state.resumeScheduled) {      state.resumeScheduled = true; -    processNextTick(resume_, stream, state); +    pna.nextTick(resume_, stream, state);    }  } @@ -810,18 +817,19 @@ function flow(stream) {  // This is *not* part of the readable stream interface.  // It is an ugly unfortunate mess of history.  Readable.prototype.wrap = function (stream) { +  var _this = this; +    var state = this._readableState;    var paused = false; -  var self = this;    stream.on('end', function () {      debug('wrapped end');      if (state.decoder && !state.ended) {        var chunk = state.decoder.end(); -      if (chunk && chunk.length) self.push(chunk); +      if (chunk && chunk.length) _this.push(chunk);      } -    self.push(null); +    _this.push(null);    });    stream.on('data', function (chunk) { @@ -831,7 +839,7 @@ Readable.prototype.wrap = function (stream) {      // don't skip over falsy values in objectMode      if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; -    var ret = self.push(chunk); +    var ret = _this.push(chunk);      if (!ret) {        paused = true;        stream.pause(); @@ -852,12 +860,12 @@ Readable.prototype.wrap = function (stream) {    // proxy certain important events.    for (var n = 0; n < kProxyEvents.length; n++) { -    stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n])); +    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));    }    // when we try to consume some more bytes, simply unpause the    // underlying stream. -  self._read = function (n) { +  this._read = function (n) {      debug('wrapped _read', n);      if (paused) {        paused = false; @@ -865,9 +873,19 @@ Readable.prototype.wrap = function (stream) {      }    }; -  return self; +  return this;  }; +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { +  // making it explicit this property is not enumerable +  // because otherwise some prototype manipulation in +  // userland will fail +  enumerable: false, +  get: function () { +    return this._readableState.highWaterMark; +  } +}); +  // exposed for testing purposes only.  Readable._fromList = fromList; @@ -980,7 +998,7 @@ function endReadable(stream) {    if (!state.endEmitted) {      state.ended = true; -    processNextTick(endReadableNT, state, stream); +    pna.nextTick(endReadableNT, state, stream);    }  } @@ -993,12 +1011,6 @@ function endReadableNT(state, stream) {    }  } -function forEach(xs, f) { -  for (var i = 0, l = xs.length; i < l; i++) { -    f(xs[i], i); -  } -} -  function indexOf(xs, x) {    for (var i = 0, l = xs.length; i < l; i++) {      if (xs[i] === x) return i; diff --git a/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/readable-stream/lib/_stream_transform.js index a0c23173d..5d1f8b876 100644 --- a/node_modules/readable-stream/lib/_stream_transform.js +++ b/node_modules/readable-stream/lib/_stream_transform.js @@ -74,39 +74,28 @@ util.inherits = require('inherits');  util.inherits(Transform, Duplex); -function TransformState(stream) { -  this.afterTransform = function (er, data) { -    return afterTransform(stream, er, data); -  }; - -  this.needTransform = false; -  this.transforming = false; -  this.writecb = null; -  this.writechunk = null; -  this.writeencoding = null; -} - -function afterTransform(stream, er, data) { -  var ts = stream._transformState; +function afterTransform(er, data) { +  var ts = this._transformState;    ts.transforming = false;    var cb = ts.writecb;    if (!cb) { -    return stream.emit('error', new Error('write callback called multiple times')); +    return this.emit('error', new Error('write callback called multiple times'));    }    ts.writechunk = null;    ts.writecb = null; -  if (data !== null && data !== undefined) stream.push(data); +  if (data != null) // single equals check for both `null` and `undefined` +    this.push(data);    cb(er); -  var rs = stream._readableState; +  var rs = this._readableState;    rs.reading = false;    if (rs.needReadable || rs.length < rs.highWaterMark) { -    stream._read(rs.highWaterMark); +    this._read(rs.highWaterMark);    }  } @@ -115,9 +104,14 @@ function Transform(options) {    Duplex.call(this, options); -  this._transformState = new TransformState(this); - -  var stream = this; +  this._transformState = { +    afterTransform: afterTransform.bind(this), +    needTransform: false, +    transforming: false, +    writecb: null, +    writechunk: null, +    writeencoding: null +  };    // start out asking for a readable event once data is transformed.    this._readableState.needReadable = true; @@ -134,11 +128,19 @@ function Transform(options) {    }    // When the writable side finishes, then flush out anything remaining. -  this.once('prefinish', function () { -    if (typeof this._flush === 'function') this._flush(function (er, data) { -      done(stream, er, data); -    });else done(stream); -  }); +  this.on('prefinish', prefinish); +} + +function prefinish() { +  var _this = this; + +  if (typeof this._flush === 'function') { +    this._flush(function (er, data) { +      done(_this, er, data); +    }); +  } else { +    done(this, null, null); +  }  }  Transform.prototype.push = function (chunk, encoding) { @@ -188,27 +190,25 @@ Transform.prototype._read = function (n) {  };  Transform.prototype._destroy = function (err, cb) { -  var _this = this; +  var _this2 = this;    Duplex.prototype._destroy.call(this, err, function (err2) {      cb(err2); -    _this.emit('close'); +    _this2.emit('close');    });  };  function done(stream, er, data) {    if (er) return stream.emit('error', er); -  if (data !== null && data !== undefined) stream.push(data); +  if (data != null) // single equals check for both `null` and `undefined` +    stream.push(data);    // if there's nothing in the write buffer, then that means    // that nothing more will ever be provided -  var ws = stream._writableState; -  var ts = stream._transformState; - -  if (ws.length) throw new Error('Calling transform done when ws.length != 0'); +  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); -  if (ts.transforming) throw new Error('Calling transform done when still transforming'); +  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');    return stream.push(null);  }
\ No newline at end of file diff --git a/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/readable-stream/lib/_stream_writable.js index d20da88c7..b3f4e85a2 100644 --- a/node_modules/readable-stream/lib/_stream_writable.js +++ b/node_modules/readable-stream/lib/_stream_writable.js @@ -27,7 +27,7 @@  /*<replacement>*/ -var processNextTick = require('process-nextick-args'); +var pna = require('process-nextick-args');  /*</replacement>*/  module.exports = Writable; @@ -54,7 +54,7 @@ function CorkedRequest(state) {  /* </replacement> */  /*<replacement>*/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;  /*</replacement>*/  /*<replacement>*/ @@ -79,6 +79,7 @@ var Stream = require('./internal/streams/stream');  /*</replacement>*/  /*<replacement>*/ +  var Buffer = require('safe-buffer').Buffer;  var OurUint8Array = global.Uint8Array || function () {};  function _uint8ArrayToBuffer(chunk) { @@ -87,6 +88,7 @@ function _uint8ArrayToBuffer(chunk) {  function _isUint8Array(obj) {    return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;  } +  /*</replacement>*/  var destroyImpl = require('./internal/streams/destroy'); @@ -100,18 +102,27 @@ function WritableState(options, stream) {    options = options || {}; +  // Duplex streams are both readable and writable, but share +  // the same options object. +  // However, some cases require setting options to different +  // values for the readable and the writable sides of the duplex stream. +  // These options can be provided separately as readableXXX and writableXXX. +  var isDuplex = stream instanceof Duplex; +    // object stream flag to indicate whether or not this stream    // contains buffers or objects.    this.objectMode = !!options.objectMode; -  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; +  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;    // the point at which write() starts returning false    // Note: 0 is a valid value, means that we always return false if    // the entire buffer is not flushed immediately on write()    var hwm = options.highWaterMark; +  var writableHwm = options.writableHighWaterMark;    var defaultHwm = this.objectMode ? 16 : 16 * 1024; -  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; + +  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;    // cast to ints.    this.highWaterMark = Math.floor(this.highWaterMark); @@ -225,6 +236,7 @@ if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.protot    Object.defineProperty(Writable, Symbol.hasInstance, {      value: function (object) {        if (realHasInstance.call(this, object)) return true; +      if (this !== Writable) return false;        return object && object._writableState instanceof WritableState;      } @@ -276,7 +288,7 @@ function writeAfterEnd(stream, cb) {    var er = new Error('write after end');    // TODO: defer error events consistently everywhere, not just the cb    stream.emit('error', er); -  processNextTick(cb, er); +  pna.nextTick(cb, er);  }  // Checks that a user-supplied chunk is valid, especially for the particular @@ -293,7 +305,7 @@ function validChunk(stream, state, chunk, cb) {    }    if (er) {      stream.emit('error', er); -    processNextTick(cb, er); +    pna.nextTick(cb, er);      valid = false;    }    return valid; @@ -302,7 +314,7 @@ function validChunk(stream, state, chunk, cb) {  Writable.prototype.write = function (chunk, encoding, cb) {    var state = this._writableState;    var ret = false; -  var isBuf = _isUint8Array(chunk) && !state.objectMode; +  var isBuf = !state.objectMode && _isUint8Array(chunk);    if (isBuf && !Buffer.isBuffer(chunk)) {      chunk = _uint8ArrayToBuffer(chunk); @@ -356,6 +368,16 @@ function decodeChunk(state, chunk, encoding) {    return chunk;  } +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { +  // making it explicit this property is not enumerable +  // because otherwise some prototype manipulation in +  // userland will fail +  enumerable: false, +  get: function () { +    return this._writableState.highWaterMark; +  } +}); +  // if we're already writing something, then just put this  // in the queue, and wait our turn.  Otherwise, call _write  // If we return false, then we need a drain event, so set that flag. @@ -413,10 +435,10 @@ function onwriteError(stream, state, sync, er, cb) {    if (sync) {      // defer the callback if we are being called synchronously      // to avoid piling up things on the stack -    processNextTick(cb, er); +    pna.nextTick(cb, er);      // this can emit finish, and it will always happen      // after error -    processNextTick(finishMaybe, stream, state); +    pna.nextTick(finishMaybe, stream, state);      stream._writableState.errorEmitted = true;      stream.emit('error', er);    } else { @@ -514,6 +536,7 @@ function clearBuffer(stream, state) {      } else {        state.corkedRequestsFree = new CorkedRequest(state);      } +    state.bufferedRequestCount = 0;    } else {      // Slow case, write chunks one-by-one      while (entry) { @@ -524,6 +547,7 @@ function clearBuffer(stream, state) {        doWrite(stream, state, false, len, chunk, encoding, cb);        entry = entry.next; +      state.bufferedRequestCount--;        // if we didn't call the onwrite immediately, then        // it means that we need to wait until it does.        // also, that means that the chunk and cb are currently @@ -536,7 +560,6 @@ function clearBuffer(stream, state) {      if (entry === null) state.lastBufferedRequest = null;    } -  state.bufferedRequestCount = 0;    state.bufferedRequest = entry;    state.bufferProcessing = false;  } @@ -590,7 +613,7 @@ function prefinish(stream, state) {      if (typeof stream._final === 'function') {        state.pendingcb++;        state.finalCalled = true; -      processNextTick(callFinal, stream, state); +      pna.nextTick(callFinal, stream, state);      } else {        state.prefinished = true;        stream.emit('prefinish'); @@ -614,7 +637,7 @@ function endWritable(stream, state, cb) {    state.ending = true;    finishMaybe(stream, state);    if (cb) { -    if (state.finished) processNextTick(cb);else stream.once('finish', cb); +    if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);    }    state.ended = true;    stream.writable = false; diff --git a/node_modules/readable-stream/lib/internal/streams/BufferList.js b/node_modules/readable-stream/lib/internal/streams/BufferList.js index d46761597..aefc68bd9 100644 --- a/node_modules/readable-stream/lib/internal/streams/BufferList.js +++ b/node_modules/readable-stream/lib/internal/streams/BufferList.js @@ -1,11 +1,9 @@  'use strict'; -/*<replacement>*/ -  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }  var Buffer = require('safe-buffer').Buffer; -/*</replacement>*/ +var util = require('util');  function copyBuffer(src, target, offset) {    src.copy(target, offset); @@ -71,4 +69,11 @@ module.exports = function () {    };    return BufferList; -}();
\ No newline at end of file +}(); + +if (util && util.inspect && util.inspect.custom) { +  module.exports.prototype[util.inspect.custom] = function () { +    var obj = util.inspect({ length: this.length }); +    return this.constructor.name + ' ' + obj; +  }; +}
\ No newline at end of file diff --git a/node_modules/readable-stream/lib/internal/streams/destroy.js b/node_modules/readable-stream/lib/internal/streams/destroy.js index b3e58c33b..5a0a0d88c 100644 --- a/node_modules/readable-stream/lib/internal/streams/destroy.js +++ b/node_modules/readable-stream/lib/internal/streams/destroy.js @@ -2,7 +2,7 @@  /*<replacement>*/ -var processNextTick = require('process-nextick-args'); +var pna = require('process-nextick-args');  /*</replacement>*/  // undocumented cb() API, needed for core, not for public API @@ -16,9 +16,9 @@ function destroy(err, cb) {      if (cb) {        cb(err);      } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { -      processNextTick(emitErrorNT, this, err); +      pna.nextTick(emitErrorNT, this, err);      } -    return; +    return this;    }    // we set destroyed to true before firing error callbacks in order @@ -35,7 +35,7 @@ function destroy(err, cb) {    this._destroy(err || null, function (err) {      if (!cb && err) { -      processNextTick(emitErrorNT, _this, err); +      pna.nextTick(emitErrorNT, _this, err);        if (_this._writableState) {          _this._writableState.errorEmitted = true;        } @@ -43,6 +43,8 @@ function destroy(err, cb) {        cb(err);      }    }); + +  return this;  }  function undestroy() { | 
