Index: tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_duplex.js |
diff --git a/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_duplex.js b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_duplex.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a2e0d8e0dac03688a882bad193681e7601671738 |
--- /dev/null |
+++ b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_duplex.js |
@@ -0,0 +1,69 @@ |
+// Copyright Joyent, Inc. and other Node contributors. |
+// |
+// Permission is hereby granted, free of charge, to any person obtaining a |
+// copy of this software and associated documentation files (the |
+// "Software"), to deal in the Software without restriction, including |
+// without limitation the rights to use, copy, modify, merge, publish, |
+// distribute, sublicense, and/or sell copies of the Software, and to permit |
+// persons to whom the Software is furnished to do so, subject to the |
+// following conditions: |
+// |
+// The above copyright notice and this permission notice shall be included |
+// in all copies or substantial portions of the Software. |
+// |
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN |
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR |
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE |
+// USE OR OTHER DEALINGS IN THE SOFTWARE. |
+ |
+// 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. |
+ |
+module.exports = Duplex; |
+var util = require('util'); |
+var Readable = require('./_stream_readable'); |
+var Writable = require('./_stream_writable'); |
+ |
+util.inherits(Duplex, Readable); |
+ |
+Object.keys(Writable.prototype).forEach(function(method) { |
+ 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. |
+ process.nextTick(this.end.bind(this)); |
+} |