| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | 
							- 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
 
- }
 
 
  |