1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- var stream = require("readable-stream");
- var duplex2 = module.exports = function duplex2(options, writable, readable) {
- return new DuplexWrapper(options, writable, readable);
- };
- var DuplexWrapper = exports.DuplexWrapper = function DuplexWrapper(options, writable, readable) {
- if (typeof readable === "undefined") {
- readable = writable;
- writable = options;
- options = null;
- }
- options = options || {};
- options.objectMode = true;
- stream.Duplex.call(this, options);
- this._bubbleErrors = (typeof options.bubbleErrors === "undefined") || !!options.bubbleErrors;
- this._writable = writable;
- this._readable = readable;
- var self = this;
- writable.once("finish", function() {
- self.end();
- });
- this.once("finish", function() {
- writable.end();
- });
- readable.on("data", function(e) {
- if (!self.push(e)) {
- readable.pause();
- }
- });
- readable.once("end", function() {
- return self.push(null);
- });
- if (this._bubbleErrors) {
- writable.on("error", function(err) {
- return self.emit("error", err);
- });
- readable.on("error", function(err) {
- return self.emit("error", err);
- });
- }
- };
- DuplexWrapper.prototype = Object.create(stream.Duplex.prototype, {constructor: {value: DuplexWrapper}});
- DuplexWrapper.prototype._write = function _write(input, encoding, done) {
- this._writable.write(input, encoding, done);
- };
- DuplexWrapper.prototype._read = function _read(n) {
- this._readable.resume();
- };
|