Sha256: 11050e597ecfbb54bbde78de9934ad2b72a701291da492daaa4d6de1264d6f09

Contents?: true

Size: 1.8 KB

Versions: 87

Compression:

Stored size: 1.8 KB

Contents

// a duplex stream is just a stream that is both readable and writable.
// Since JS doesn't have multiple prototypal inheritance, this class
// prototypally inherits from Readable, and then parasitically from
// Writable.

'use strict';

/*<replacement>*/

var objectKeys = Object.keys || function (obj) {
  var keys = [];
  for (var key in obj) {
    keys.push(key);
  }return keys;
};
/*</replacement>*/

module.exports = Duplex;

/*<replacement>*/
var processNextTick = require('process-nextick-args');
/*</replacement>*/

/*<replacement>*/
var util = require('core-util-is');
util.inherits = require('inherits');
/*</replacement>*/

var Readable = require('./_stream_readable');
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];
}

function Duplex(options) {
  if (!(this instanceof Duplex)) return new Duplex(options);

  Readable.call(this, options);
  Writable.call(this, options);

  if (options && options.readable === false) this.readable = false;

  if (options && options.writable === false) this.writable = false;

  this.allowHalfOpen = true;
  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;

  this.once('end', onend);
}

// the no-half-open enforcer
function onend() {
  // if we allow half-open state, or if the writable side ended,
  // then we're ok.
  if (this.allowHalfOpen || this._writableState.ended) return;

  // no more data can be written.
  // But allow more writes to happen in this tick.
  processNextTick(onEndNT, this);
}

function onEndNT(self) {
  self.end();
}

function forEach(xs, f) {
  for (var i = 0, l = xs.length; i < l; i++) {
    f(xs[i], i);
  }
}

Version data entries

87 entries across 31 versions & 9 rubygems

Version Path
affiliator-0.2.1 node_modules/fsevents/node_modules/readable-stream/lib/_stream_duplex.js
guard-sass-lint-0.1.2 node_modules/readable-stream/lib/_stream_duplex.js
guard-sass-lint-0.1.1 node_modules/readable-stream/lib/_stream_duplex.js
lanes-0.8.0 node_modules/fsevents/node_modules/readable-stream/lib/_stream_duplex.js
lanes-0.8.0 node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js
lanes-0.8.0 node_modules/fsevents/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js
lanes-0.8.0 node_modules/readable-stream/lib/_stream_duplex.js
node-compiler-0.9.1 vendor/node/deps/npm/node_modules/readable-stream/lib/_stream_duplex.js
node-compiler-0.9.1 vendor/node/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js
node-compiler-0.9.1 vendor/node/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js
node-compiler-0.9.0 vendor/node-v7.2.1/deps/npm/node_modules/readable-stream/lib/_stream_duplex.js
node-compiler-0.9.0 vendor/node-v7.2.1/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js
node-compiler-0.9.0 vendor/node-v7.2.1/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js
node-compiler-0.8.0 vendor/node-v7.2.0/deps/npm/node_modules/readable-stream/lib/_stream_duplex.js
node-compiler-0.8.0 vendor/node-v7.2.0/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js
node-compiler-0.8.0 vendor/node-v7.2.0/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js
xcodebuild-helper-1.2.5 externals/ios-sim-master/node_modules/readable-stream/lib/_stream_duplex.js
node-compiler-0.7.0 vendor/node-v6.9.1/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js
node-compiler-0.7.0 vendor/node-v7.1.0/deps/npm/node_modules/readable-stream/lib/_stream_duplex.js
node-compiler-0.7.0 vendor/node-v6.9.1/deps/npm/node_modules/readable-stream/lib/_stream_duplex.js