| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | var Readable = require('readable-stream').Readablevar inherits = require('inherits')module.exports = from2from2.ctor = ctorfrom2.obj = objvar 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}
 |