You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					127 lines
				
				2.7 KiB
			
		
		
			
		
	
	
					127 lines
				
				2.7 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var nr = { results: false }
							 | 
						||
| 
								 | 
							
								var fastparallel = require('fastparallel')
							 | 
						||
| 
								 | 
							
								var fastseries = require('fastseries')
							 | 
						||
| 
								 | 
							
								var fastfall = require('fastfall')
							 | 
						||
| 
								 | 
							
								var fastq = require('fastq')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function steed (context) {
							 | 
						||
| 
								 | 
							
								  if (!context) {
							 | 
						||
| 
								 | 
							
								    context = {}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var _parNr = fastparallel(nr)
							 | 
						||
| 
								 | 
							
								  var _serNr = fastseries(nr)
							 | 
						||
| 
								 | 
							
								  var _par = fastparallel()
							 | 
						||
| 
								 | 
							
								  var _ser = fastseries()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  context.each = each
							 | 
						||
| 
								 | 
							
								  context.map = map
							 | 
						||
| 
								 | 
							
								  context.eachSeries = eachSeries
							 | 
						||
| 
								 | 
							
								  context.mapSeries = mapSeries
							 | 
						||
| 
								 | 
							
								  context.parallel = parallel
							 | 
						||
| 
								 | 
							
								  context.series = series
							 | 
						||
| 
								 | 
							
								  context.waterfall = fastfall()
							 | 
						||
| 
								 | 
							
								  context.queue = fastq
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return context
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function each (that, array, func, cb) {
							 | 
						||
| 
								 | 
							
								    if (!func || typeof func === 'function' && typeof array === 'function') {
							 | 
						||
| 
								 | 
							
								      cb = func
							 | 
						||
| 
								 | 
							
								      func = array
							 | 
						||
| 
								 | 
							
								      array = that
							 | 
						||
| 
								 | 
							
								      that = null
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    _parNr(that, func, array, cb)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function eachSeries (that, array, func, cb) {
							 | 
						||
| 
								 | 
							
								    if (!func || typeof func === 'function' && typeof array === 'function') {
							 | 
						||
| 
								 | 
							
								      cb = func
							 | 
						||
| 
								 | 
							
								      func = array
							 | 
						||
| 
								 | 
							
								      array = that
							 | 
						||
| 
								 | 
							
								      that = null
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    _serNr(that, func, array, cb)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function map (that, array, func, cb) {
							 | 
						||
| 
								 | 
							
								    if (!func || typeof func === 'function' && typeof array === 'function') {
							 | 
						||
| 
								 | 
							
								      cb = func
							 | 
						||
| 
								 | 
							
								      func = array
							 | 
						||
| 
								 | 
							
								      array = that
							 | 
						||
| 
								 | 
							
								      that = null
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    _par(that, func, array, cb)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function mapSeries (that, array, func, cb) {
							 | 
						||
| 
								 | 
							
								    if (!func || typeof func === 'function' && typeof array === 'function') {
							 | 
						||
| 
								 | 
							
								      cb = func
							 | 
						||
| 
								 | 
							
								      func = array
							 | 
						||
| 
								 | 
							
								      array = that
							 | 
						||
| 
								 | 
							
								      that = null
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    _ser(that, func, array, cb)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function parallel (that, funcs, cb) {
							 | 
						||
| 
								 | 
							
								    if (!funcs || typeof funcs === 'function') {
							 | 
						||
| 
								 | 
							
								      cb = funcs
							 | 
						||
| 
								 | 
							
								      funcs = that
							 | 
						||
| 
								 | 
							
								      that = null
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    if (Array.isArray(funcs)) {
							 | 
						||
| 
								 | 
							
								      _par(that, funcs, null, cb)
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      _handleObjectMap(that, _par, funcs, cb)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function series (that, funcs, cb) {
							 | 
						||
| 
								 | 
							
								    if (!funcs || typeof funcs === 'function') {
							 | 
						||
| 
								 | 
							
								      cb = funcs
							 | 
						||
| 
								 | 
							
								      funcs = that
							 | 
						||
| 
								 | 
							
								      that = null
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    if (Array.isArray(funcs)) {
							 | 
						||
| 
								 | 
							
								      _ser(that, funcs, null, cb)
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      _handleObjectMap(that, _ser, funcs, cb)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _handleObjectMap (that, iterator, funcs, cb) {
							 | 
						||
| 
								 | 
							
								  var keys = Object.keys(funcs)
							 | 
						||
| 
								 | 
							
								  iterator(new MapStatus(keys, funcs, cb), callNamedFunc, keys, mapResults)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function MapStatus (keys, funcs, cb) {
							 | 
						||
| 
								 | 
							
								  this.cb = cb
							 | 
						||
| 
								 | 
							
								  this.keys = keys
							 | 
						||
| 
								 | 
							
								  this.funcs = funcs
							 | 
						||
| 
								 | 
							
								  this.results = {}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function callNamedFunc (key, cb) {
							 | 
						||
| 
								 | 
							
								  this.funcs[key](cb)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function mapResults (err, results) {
							 | 
						||
| 
								 | 
							
								  if (err) { return this.cb(err) }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var keys = this.keys
							 | 
						||
| 
								 | 
							
								  var toReturn = {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for (var i = 0; i < keys.length; i++) {
							 | 
						||
| 
								 | 
							
								    toReturn[keys[i]] = results[i]
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  this.cb(null, toReturn)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = steed(steed)
							 |