summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/cacache/node_modules/mississippi/node_modules/from2/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/cacache/node_modules/mississippi/node_modules/from2/index.js')
-rw-r--r--deps/npm/node_modules/cacache/node_modules/mississippi/node_modules/from2/index.js103
1 files changed, 103 insertions, 0 deletions
diff --git a/deps/npm/node_modules/cacache/node_modules/mississippi/node_modules/from2/index.js b/deps/npm/node_modules/cacache/node_modules/mississippi/node_modules/from2/index.js
new file mode 100644
index 0000000000..cb200c610a
--- /dev/null
+++ b/deps/npm/node_modules/cacache/node_modules/mississippi/node_modules/from2/index.js
@@ -0,0 +1,103 @@
+var Readable = require('readable-stream').Readable
+var inherits = require('inherits')
+
+module.exports = from2
+
+from2.ctor = ctor
+from2.obj = obj
+
+var Proto = ctor()
+
+function toFunction(list) {
+ list = list.slice()
+ return function (_, cb) {
+ var err = null
+ var item = list.length ? list.shift() : null
+ if (item instanceof Error) {
+ err = item
+ item = null
+ }
+
+ cb(err, item)
+ }
+}
+
+function from2(opts, read) {
+ if (typeof opts !== 'object' || Array.isArray(opts)) {
+ read = opts
+ opts = {}
+ }
+
+ var rs = new Proto(opts)
+ rs._from = Array.isArray(read) ? toFunction(read) : (read || noop)
+ return rs
+}
+
+function ctor(opts, read) {
+ if (typeof opts === 'function') {
+ read = opts
+ opts = {}
+ }
+
+ opts = defaults(opts)
+
+ inherits(Class, Readable)
+ function Class(override) {
+ if (!(this instanceof Class)) return new Class(override)
+ this._reading = false
+ this._callback = check
+ this.destroyed = false
+ Readable.call(this, override || opts)
+
+ var self = this
+ var hwm = this._readableState.highWaterMark
+
+ function check(err, data) {
+ if (self.destroyed) return
+ if (err) return self.destroy(err)
+ if (data === null) return self.push(null)
+ self._reading = false
+ if (self.push(data)) self._read(hwm)
+ }
+ }
+
+ Class.prototype._from = read || noop
+ Class.prototype._read = function(size) {
+ if (this._reading || this.destroyed) return
+ this._reading = true
+ this._from(size, this._callback)
+ }
+
+ Class.prototype.destroy = function(err) {
+ if (this.destroyed) return
+ this.destroyed = true
+
+ var self = this
+ process.nextTick(function() {
+ if (err) self.emit('error', err)
+ self.emit('close')
+ })
+ }
+
+ return Class
+}
+
+function obj(opts, read) {
+ if (typeof opts === 'function' || Array.isArray(opts)) {
+ read = opts
+ opts = {}
+ }
+
+ opts = defaults(opts)
+ opts.objectMode = true
+ opts.highWaterMark = 16
+
+ return from2(opts, read)
+}
+
+function noop () {}
+
+function defaults(opts) {
+ opts = opts || {}
+ return opts
+}