diff options
Diffstat (limited to 'deps/npm/node_modules/duplexer3')
-rw-r--r-- | deps/npm/node_modules/duplexer3/LICENSE.md | 26 | ||||
-rw-r--r-- | deps/npm/node_modules/duplexer3/README.md | 115 | ||||
-rw-r--r-- | deps/npm/node_modules/duplexer3/index.js | 76 | ||||
-rw-r--r-- | deps/npm/node_modules/duplexer3/package.json | 64 |
4 files changed, 281 insertions, 0 deletions
diff --git a/deps/npm/node_modules/duplexer3/LICENSE.md b/deps/npm/node_modules/duplexer3/LICENSE.md new file mode 100644 index 0000000000..75a50f3014 --- /dev/null +++ b/deps/npm/node_modules/duplexer3/LICENSE.md @@ -0,0 +1,26 @@ +Copyright (c) 2013, Deoxxa Development +====================================== +All rights reserved. +-------------------- + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of Deoxxa Development nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY DEOXXA DEVELOPMENT ''AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL DEOXXA DEVELOPMENT BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/deps/npm/node_modules/duplexer3/README.md b/deps/npm/node_modules/duplexer3/README.md new file mode 100644 index 0000000000..9f95ddf530 --- /dev/null +++ b/deps/npm/node_modules/duplexer3/README.md @@ -0,0 +1,115 @@ +# duplexer3 [![Build Status](https://travis-ci.org/floatdrop/duplexer3.svg?branch=master)](https://travis-ci.org/floatdrop/duplexer3) [![Coverage Status](https://coveralls.io/repos/floatdrop/duplexer3/badge.svg?branch=master&service=github)](https://coveralls.io/github/floatdrop/duplexer3?branch=master) + +Like [duplexer2](https://github.com/deoxxa/duplexer2) but using Streams3 without readable-stream dependency + +```javascript +var stream = require("stream"); + +var duplexer3 = require("duplexer3"); + +var writable = new stream.Writable({objectMode: true}), + readable = new stream.Readable({objectMode: true}); + +writable._write = function _write(input, encoding, done) { + if (readable.push(input)) { + return done(); + } else { + readable.once("drain", done); + } +}; + +readable._read = function _read(n) { + // no-op +}; + +// simulate the readable thing closing after a bit +writable.once("finish", function() { + setTimeout(function() { + readable.push(null); + }, 500); +}); + +var duplex = duplexer3(writable, readable); + +duplex.on("data", function(e) { + console.log("got data", JSON.stringify(e)); +}); + +duplex.on("finish", function() { + console.log("got finish event"); +}); + +duplex.on("end", function() { + console.log("got end event"); +}); + +duplex.write("oh, hi there", function() { + console.log("finished writing"); +}); + +duplex.end(function() { + console.log("finished ending"); +}); +``` + +``` +got data "oh, hi there" +finished writing +got finish event +finished ending +got end event +``` + +## Overview + +This is a reimplementation of [duplexer](https://www.npmjs.com/package/duplexer) using the +Streams3 API which is standard in Node as of v4. Everything largely +works the same. + + + +## Installation + +[Available via `npm`](https://docs.npmjs.com/cli/install): + +``` +$ npm i duplexer3 +``` + +## API + +### duplexer3 + +Creates a new `DuplexWrapper` object, which is the actual class that implements +most of the fun stuff. All that fun stuff is hidden. DON'T LOOK. + +```javascript +duplexer3([options], writable, readable) +``` + +```javascript +const duplex = duplexer3(new stream.Writable(), new stream.Readable()); +``` + +Arguments + +* __options__ - an object specifying the regular `stream.Duplex` options, as + well as the properties described below. +* __writable__ - a writable stream +* __readable__ - a readable stream + +Options + +* __bubbleErrors__ - a boolean value that specifies whether to bubble errors + from the underlying readable/writable streams. Default is `true`. + + +## License + +3-clause BSD. [A copy](./LICENSE) is included with the source. + +## Contact + +* GitHub ([deoxxa](http://github.com/deoxxa)) +* Twitter ([@deoxxa](http://twitter.com/deoxxa)) +* Email ([deoxxa@fknsrs.biz](mailto:deoxxa@fknsrs.biz)) diff --git a/deps/npm/node_modules/duplexer3/index.js b/deps/npm/node_modules/duplexer3/index.js new file mode 100644 index 0000000000..1339ffc51c --- /dev/null +++ b/deps/npm/node_modules/duplexer3/index.js @@ -0,0 +1,76 @@ +"use strict"; + +var stream = require("stream"); + +function DuplexWrapper(options, writable, readable) { + if (typeof readable === "undefined") { + readable = writable; + writable = options; + options = null; + } + + stream.Duplex.call(this, options); + + if (typeof readable.read !== "function") { + readable = (new stream.Readable(options)).wrap(readable); + } + + this._writable = writable; + this._readable = readable; + this._waiting = false; + + var self = this; + + writable.once("finish", function() { + self.end(); + }); + + this.once("finish", function() { + writable.end(); + }); + + readable.on("readable", function() { + if (self._waiting) { + self._waiting = false; + self._read(); + } + }); + + readable.once("end", function() { + self.push(null); + }); + + if (!options || typeof options.bubbleErrors === "undefined" || options.bubbleErrors) { + writable.on("error", function(err) { + self.emit("error", err); + }); + + readable.on("error", function(err) { + 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() { + var buf; + var reads = 0; + while ((buf = this._readable.read()) !== null) { + this.push(buf); + reads++; + } + if (reads === 0) { + this._waiting = true; + } +}; + +module.exports = function duplex2(options, writable, readable) { + return new DuplexWrapper(options, writable, readable); +}; + +module.exports.DuplexWrapper = DuplexWrapper; diff --git a/deps/npm/node_modules/duplexer3/package.json b/deps/npm/node_modules/duplexer3/package.json new file mode 100644 index 0000000000..fe28d33591 --- /dev/null +++ b/deps/npm/node_modules/duplexer3/package.json @@ -0,0 +1,64 @@ +{ + "_from": "duplexer3@^0.1.4", + "_id": "duplexer3@0.1.4", + "_inBundle": false, + "_integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "_location": "/duplexer3", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "duplexer3@^0.1.4", + "name": "duplexer3", + "escapedName": "duplexer3", + "rawSpec": "^0.1.4", + "saveSpec": null, + "fetchSpec": "^0.1.4" + }, + "_requiredBy": [ + "/got" + ], + "_resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "_shasum": "ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2", + "_spec": "duplexer3@^0.1.4", + "_where": "/Users/rebecca/code/npm/node_modules/got", + "author": { + "name": "Conrad Pankoff", + "email": "deoxxa@fknsrs.biz", + "url": "http://www.fknsrs.biz/" + }, + "bugs": { + "url": "https://github.com/floatdrop/duplexer3/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Like duplexer but using streams3", + "devDependencies": { + "mocha": "^2.2.5" + }, + "engine": { + "node": ">=4" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/floatdrop/duplexer3#readme", + "keywords": [ + "duplex", + "duplexer", + "stream", + "stream3", + "join", + "combine" + ], + "license": "BSD-3-Clause", + "name": "duplexer3", + "repository": { + "type": "git", + "url": "git+https://github.com/floatdrop/duplexer3.git" + }, + "scripts": { + "test": "mocha -R tap" + }, + "version": "0.1.4" +} |