aboutsummaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/duplexer3
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/duplexer3')
-rw-r--r--deps/npm/node_modules/duplexer3/LICENSE.md26
-rw-r--r--deps/npm/node_modules/duplexer3/README.md115
-rw-r--r--deps/npm/node_modules/duplexer3/index.js76
-rw-r--r--deps/npm/node_modules/duplexer3/package.json64
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"
+}