mirror of
				https://github.com/1disk/edp445.git
				synced 2024-08-14 22:47:02 +00:00 
			
		
		
		
	Changed alot of things.
This commit is contained in:
		
							parent
							
								
									a5a0523e5a
								
							
						
					
					
						commit
						3513d5390c
					
				
					 2016 changed files with 336930 additions and 9 deletions
				
			
		
							
								
								
									
										29
									
								
								node_modules/asynckit/lib/abort.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								node_modules/asynckit/lib/abort.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| // API
 | ||||
| module.exports = abort; | ||||
| 
 | ||||
| /** | ||||
|  * Aborts leftover active jobs | ||||
|  * | ||||
|  * @param {object} state - current state object | ||||
|  */ | ||||
| function abort(state) | ||||
| { | ||||
|   Object.keys(state.jobs).forEach(clean.bind(state)); | ||||
| 
 | ||||
|   // reset leftover jobs
 | ||||
|   state.jobs = {}; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Cleans up leftover job by invoking abort function for the provided job id | ||||
|  * | ||||
|  * @this  state | ||||
|  * @param {string|number} key - job id to abort | ||||
|  */ | ||||
| function clean(key) | ||||
| { | ||||
|   if (typeof this.jobs[key] == 'function') | ||||
|   { | ||||
|     this.jobs[key](); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										34
									
								
								node_modules/asynckit/lib/async.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								node_modules/asynckit/lib/async.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,34 @@ | |||
| var defer = require('./defer.js'); | ||||
| 
 | ||||
| // API
 | ||||
| module.exports = async; | ||||
| 
 | ||||
| /** | ||||
|  * Runs provided callback asynchronously | ||||
|  * even if callback itself is not | ||||
|  * | ||||
|  * @param   {function} callback - callback to invoke | ||||
|  * @returns {function} - augmented callback | ||||
|  */ | ||||
| function async(callback) | ||||
| { | ||||
|   var isAsync = false; | ||||
| 
 | ||||
|   // check if async happened
 | ||||
|   defer(function() { isAsync = true; }); | ||||
| 
 | ||||
|   return function async_callback(err, result) | ||||
|   { | ||||
|     if (isAsync) | ||||
|     { | ||||
|       callback(err, result); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|       defer(function nextTick_callback() | ||||
|       { | ||||
|         callback(err, result); | ||||
|       }); | ||||
|     } | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										26
									
								
								node_modules/asynckit/lib/defer.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								node_modules/asynckit/lib/defer.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | |||
| module.exports = defer; | ||||
| 
 | ||||
| /** | ||||
|  * Runs provided function on next iteration of the event loop | ||||
|  * | ||||
|  * @param {function} fn - function to run | ||||
|  */ | ||||
| function defer(fn) | ||||
| { | ||||
|   var nextTick = typeof setImmediate == 'function' | ||||
|     ? setImmediate | ||||
|     : ( | ||||
|       typeof process == 'object' && typeof process.nextTick == 'function' | ||||
|       ? process.nextTick | ||||
|       : null | ||||
|     ); | ||||
| 
 | ||||
|   if (nextTick) | ||||
|   { | ||||
|     nextTick(fn); | ||||
|   } | ||||
|   else | ||||
|   { | ||||
|     setTimeout(fn, 0); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										75
									
								
								node_modules/asynckit/lib/iterate.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								node_modules/asynckit/lib/iterate.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,75 @@ | |||
| var async = require('./async.js') | ||||
|   , abort = require('./abort.js') | ||||
|   ; | ||||
| 
 | ||||
| // API
 | ||||
| module.exports = iterate; | ||||
| 
 | ||||
| /** | ||||
|  * Iterates over each job object | ||||
|  * | ||||
|  * @param {array|object} list - array or object (named list) to iterate over | ||||
|  * @param {function} iterator - iterator to run | ||||
|  * @param {object} state - current job status | ||||
|  * @param {function} callback - invoked when all elements processed | ||||
|  */ | ||||
| function iterate(list, iterator, state, callback) | ||||
| { | ||||
|   // store current index
 | ||||
|   var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; | ||||
| 
 | ||||
|   state.jobs[key] = runJob(iterator, key, list[key], function(error, output) | ||||
|   { | ||||
|     // don't repeat yourself
 | ||||
|     // skip secondary callbacks
 | ||||
|     if (!(key in state.jobs)) | ||||
|     { | ||||
|       return; | ||||
|     } | ||||
| 
 | ||||
|     // clean up jobs
 | ||||
|     delete state.jobs[key]; | ||||
| 
 | ||||
|     if (error) | ||||
|     { | ||||
|       // don't process rest of the results
 | ||||
|       // stop still active jobs
 | ||||
|       // and reset the list
 | ||||
|       abort(state); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|       state.results[key] = output; | ||||
|     } | ||||
| 
 | ||||
|     // return salvaged results
 | ||||
|     callback(error, state.results); | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Runs iterator over provided job element | ||||
|  * | ||||
|  * @param   {function} iterator - iterator to invoke | ||||
|  * @param   {string|number} key - key/index of the element in the list of jobs | ||||
|  * @param   {mixed} item - job description | ||||
|  * @param   {function} callback - invoked after iterator is done with the job | ||||
|  * @returns {function|mixed} - job abort function or something else | ||||
|  */ | ||||
| function runJob(iterator, key, item, callback) | ||||
| { | ||||
|   var aborter; | ||||
| 
 | ||||
|   // allow shortcut if iterator expects only two arguments
 | ||||
|   if (iterator.length == 2) | ||||
|   { | ||||
|     aborter = iterator(item, async(callback)); | ||||
|   } | ||||
|   // otherwise go with full three arguments
 | ||||
|   else | ||||
|   { | ||||
|     aborter = iterator(item, key, async(callback)); | ||||
|   } | ||||
| 
 | ||||
|   return aborter; | ||||
| } | ||||
							
								
								
									
										91
									
								
								node_modules/asynckit/lib/readable_asynckit.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								node_modules/asynckit/lib/readable_asynckit.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,91 @@ | |||
| var streamify = require('./streamify.js') | ||||
|   , defer     = require('./defer.js') | ||||
|   ; | ||||
| 
 | ||||
| // API
 | ||||
| module.exports = ReadableAsyncKit; | ||||
| 
 | ||||
| /** | ||||
|  * Base constructor for all streams | ||||
|  * used to hold properties/methods | ||||
|  */ | ||||
| function ReadableAsyncKit() | ||||
| { | ||||
|   ReadableAsyncKit.super_.apply(this, arguments); | ||||
| 
 | ||||
|   // list of active jobs
 | ||||
|   this.jobs = {}; | ||||
| 
 | ||||
|   // add stream methods
 | ||||
|   this.destroy = destroy; | ||||
|   this._start  = _start; | ||||
|   this._read   = _read; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Destroys readable stream, | ||||
|  * by aborting outstanding jobs | ||||
|  * | ||||
|  * @returns {void} | ||||
|  */ | ||||
| function destroy() | ||||
| { | ||||
|   if (this.destroyed) | ||||
|   { | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   this.destroyed = true; | ||||
| 
 | ||||
|   if (typeof this.terminator == 'function') | ||||
|   { | ||||
|     this.terminator(); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Starts provided jobs in async manner | ||||
|  * | ||||
|  * @private | ||||
|  */ | ||||
| function _start() | ||||
| { | ||||
|   // first argument – runner function
 | ||||
|   var runner = arguments[0] | ||||
|     // take away first argument
 | ||||
|     , args   = Array.prototype.slice.call(arguments, 1) | ||||
|       // second argument - input data
 | ||||
|     , input  = args[0] | ||||
|       // last argument - result callback
 | ||||
|     , endCb  = streamify.callback.call(this, args[args.length - 1]) | ||||
|     ; | ||||
| 
 | ||||
|   args[args.length - 1] = endCb; | ||||
|   // third argument - iterator
 | ||||
|   args[1] = streamify.iterator.call(this, args[1]); | ||||
| 
 | ||||
|   // allow time for proper setup
 | ||||
|   defer(function() | ||||
|   { | ||||
|     if (!this.destroyed) | ||||
|     { | ||||
|       this.terminator = runner.apply(null, args); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|       endCb(null, Array.isArray(input) ? [] : {}); | ||||
|     } | ||||
|   }.bind(this)); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Implement _read to comply with Readable streams | ||||
|  * Doesn't really make sense for flowing object mode | ||||
|  * | ||||
|  * @private | ||||
|  */ | ||||
| function _read() | ||||
| { | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										25
									
								
								node_modules/asynckit/lib/readable_parallel.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								node_modules/asynckit/lib/readable_parallel.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| var parallel = require('../parallel.js'); | ||||
| 
 | ||||
| // API
 | ||||
| module.exports = ReadableParallel; | ||||
| 
 | ||||
| /** | ||||
|  * Streaming wrapper to `asynckit.parallel` | ||||
|  * | ||||
|  * @param   {array|object} list - array or object (named list) to iterate over | ||||
|  * @param   {function} iterator - iterator to run | ||||
|  * @param   {function} callback - invoked when all elements processed | ||||
|  * @returns {stream.Readable#} | ||||
|  */ | ||||
| function ReadableParallel(list, iterator, callback) | ||||
| { | ||||
|   if (!(this instanceof ReadableParallel)) | ||||
|   { | ||||
|     return new ReadableParallel(list, iterator, callback); | ||||
|   } | ||||
| 
 | ||||
|   // turn on object mode
 | ||||
|   ReadableParallel.super_.call(this, {objectMode: true}); | ||||
| 
 | ||||
|   this._start(parallel, list, iterator, callback); | ||||
| } | ||||
							
								
								
									
										25
									
								
								node_modules/asynckit/lib/readable_serial.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								node_modules/asynckit/lib/readable_serial.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| var serial = require('../serial.js'); | ||||
| 
 | ||||
| // API
 | ||||
| module.exports = ReadableSerial; | ||||
| 
 | ||||
| /** | ||||
|  * Streaming wrapper to `asynckit.serial` | ||||
|  * | ||||
|  * @param   {array|object} list - array or object (named list) to iterate over | ||||
|  * @param   {function} iterator - iterator to run | ||||
|  * @param   {function} callback - invoked when all elements processed | ||||
|  * @returns {stream.Readable#} | ||||
|  */ | ||||
| function ReadableSerial(list, iterator, callback) | ||||
| { | ||||
|   if (!(this instanceof ReadableSerial)) | ||||
|   { | ||||
|     return new ReadableSerial(list, iterator, callback); | ||||
|   } | ||||
| 
 | ||||
|   // turn on object mode
 | ||||
|   ReadableSerial.super_.call(this, {objectMode: true}); | ||||
| 
 | ||||
|   this._start(serial, list, iterator, callback); | ||||
| } | ||||
							
								
								
									
										29
									
								
								node_modules/asynckit/lib/readable_serial_ordered.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								node_modules/asynckit/lib/readable_serial_ordered.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| var serialOrdered = require('../serialOrdered.js'); | ||||
| 
 | ||||
| // API
 | ||||
| module.exports = ReadableSerialOrdered; | ||||
| // expose sort helpers
 | ||||
| module.exports.ascending  = serialOrdered.ascending; | ||||
| module.exports.descending = serialOrdered.descending; | ||||
| 
 | ||||
| /** | ||||
|  * Streaming wrapper to `asynckit.serialOrdered` | ||||
|  * | ||||
|  * @param   {array|object} list - array or object (named list) to iterate over | ||||
|  * @param   {function} iterator - iterator to run | ||||
|  * @param   {function} sortMethod - custom sort function | ||||
|  * @param   {function} callback - invoked when all elements processed | ||||
|  * @returns {stream.Readable#} | ||||
|  */ | ||||
| function ReadableSerialOrdered(list, iterator, sortMethod, callback) | ||||
| { | ||||
|   if (!(this instanceof ReadableSerialOrdered)) | ||||
|   { | ||||
|     return new ReadableSerialOrdered(list, iterator, sortMethod, callback); | ||||
|   } | ||||
| 
 | ||||
|   // turn on object mode
 | ||||
|   ReadableSerialOrdered.super_.call(this, {objectMode: true}); | ||||
| 
 | ||||
|   this._start(serialOrdered, list, iterator, sortMethod, callback); | ||||
| } | ||||
							
								
								
									
										37
									
								
								node_modules/asynckit/lib/state.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								node_modules/asynckit/lib/state.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,37 @@ | |||
| // API
 | ||||
| module.exports = state; | ||||
| 
 | ||||
| /** | ||||
|  * Creates initial state object | ||||
|  * for iteration over list | ||||
|  * | ||||
|  * @param   {array|object} list - list to iterate over | ||||
|  * @param   {function|null} sortMethod - function to use for keys sort, | ||||
|  *                                     or `null` to keep them as is | ||||
|  * @returns {object} - initial state object | ||||
|  */ | ||||
| function state(list, sortMethod) | ||||
| { | ||||
|   var isNamedList = !Array.isArray(list) | ||||
|     , initState = | ||||
|     { | ||||
|       index    : 0, | ||||
|       keyedList: isNamedList || sortMethod ? Object.keys(list) : null, | ||||
|       jobs     : {}, | ||||
|       results  : isNamedList ? {} : [], | ||||
|       size     : isNamedList ? Object.keys(list).length : list.length | ||||
|     } | ||||
|     ; | ||||
| 
 | ||||
|   if (sortMethod) | ||||
|   { | ||||
|     // sort array keys based on it's values
 | ||||
|     // sort object's keys just on own merit
 | ||||
|     initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) | ||||
|     { | ||||
|       return sortMethod(list[a], list[b]); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   return initState; | ||||
| } | ||||
							
								
								
									
										141
									
								
								node_modules/asynckit/lib/streamify.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								node_modules/asynckit/lib/streamify.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,141 @@ | |||
| var async = require('./async.js'); | ||||
| 
 | ||||
| // API
 | ||||
| module.exports = { | ||||
|   iterator: wrapIterator, | ||||
|   callback: wrapCallback | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Wraps iterators with long signature | ||||
|  * | ||||
|  * @this    ReadableAsyncKit# | ||||
|  * @param   {function} iterator - function to wrap | ||||
|  * @returns {function} - wrapped function | ||||
|  */ | ||||
| function wrapIterator(iterator) | ||||
| { | ||||
|   var stream = this; | ||||
| 
 | ||||
|   return function(item, key, cb) | ||||
|   { | ||||
|     var aborter | ||||
|       , wrappedCb = async(wrapIteratorCallback.call(stream, cb, key)) | ||||
|       ; | ||||
| 
 | ||||
|     stream.jobs[key] = wrappedCb; | ||||
| 
 | ||||
|     // it's either shortcut (item, cb)
 | ||||
|     if (iterator.length == 2) | ||||
|     { | ||||
|       aborter = iterator(item, wrappedCb); | ||||
|     } | ||||
|     // or long format (item, key, cb)
 | ||||
|     else | ||||
|     { | ||||
|       aborter = iterator(item, key, wrappedCb); | ||||
|     } | ||||
| 
 | ||||
|     return aborter; | ||||
|   }; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Wraps provided callback function | ||||
|  * allowing to execute snitch function before | ||||
|  * real callback | ||||
|  * | ||||
|  * @this    ReadableAsyncKit# | ||||
|  * @param   {function} callback - function to wrap | ||||
|  * @returns {function} - wrapped function | ||||
|  */ | ||||
| function wrapCallback(callback) | ||||
| { | ||||
|   var stream = this; | ||||
| 
 | ||||
|   var wrapped = function(error, result) | ||||
|   { | ||||
|     return finisher.call(stream, error, result, callback); | ||||
|   }; | ||||
| 
 | ||||
|   return wrapped; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Wraps provided iterator callback function | ||||
|  * makes sure snitch only called once, | ||||
|  * but passes secondary calls to the original callback | ||||
|  * | ||||
|  * @this    ReadableAsyncKit# | ||||
|  * @param   {function} callback - callback to wrap | ||||
|  * @param   {number|string} key - iteration key | ||||
|  * @returns {function} wrapped callback | ||||
|  */ | ||||
| function wrapIteratorCallback(callback, key) | ||||
| { | ||||
|   var stream = this; | ||||
| 
 | ||||
|   return function(error, output) | ||||
|   { | ||||
|     // don't repeat yourself
 | ||||
|     if (!(key in stream.jobs)) | ||||
|     { | ||||
|       callback(error, output); | ||||
|       return; | ||||
|     } | ||||
| 
 | ||||
|     // clean up jobs
 | ||||
|     delete stream.jobs[key]; | ||||
| 
 | ||||
|     return streamer.call(stream, error, {key: key, value: output}, callback); | ||||
|   }; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Stream wrapper for iterator callback | ||||
|  * | ||||
|  * @this  ReadableAsyncKit# | ||||
|  * @param {mixed} error - error response | ||||
|  * @param {mixed} output - iterator output | ||||
|  * @param {function} callback - callback that expects iterator results | ||||
|  */ | ||||
| function streamer(error, output, callback) | ||||
| { | ||||
|   if (error && !this.error) | ||||
|   { | ||||
|     this.error = error; | ||||
|     this.pause(); | ||||
|     this.emit('error', error); | ||||
|     // send back value only, as expected
 | ||||
|     callback(error, output && output.value); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   // stream stuff
 | ||||
|   this.push(output); | ||||
| 
 | ||||
|   // back to original track
 | ||||
|   // send back value only, as expected
 | ||||
|   callback(error, output && output.value); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Stream wrapper for finishing callback | ||||
|  * | ||||
|  * @this  ReadableAsyncKit# | ||||
|  * @param {mixed} error - error response | ||||
|  * @param {mixed} output - iterator output | ||||
|  * @param {function} callback - callback that expects final results | ||||
|  */ | ||||
| function finisher(error, output, callback) | ||||
| { | ||||
|   // signal end of the stream
 | ||||
|   // only for successfully finished streams
 | ||||
|   if (!error) | ||||
|   { | ||||
|     this.push(null); | ||||
|   } | ||||
| 
 | ||||
|   // back to original track
 | ||||
|   callback(error, output); | ||||
| } | ||||
							
								
								
									
										29
									
								
								node_modules/asynckit/lib/terminator.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								node_modules/asynckit/lib/terminator.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| var abort = require('./abort.js') | ||||
|   , async = require('./async.js') | ||||
|   ; | ||||
| 
 | ||||
| // API
 | ||||
| module.exports = terminator; | ||||
| 
 | ||||
| /** | ||||
|  * Terminates jobs in the attached state context | ||||
|  * | ||||
|  * @this  AsyncKitState# | ||||
|  * @param {function} callback - final callback to invoke after termination | ||||
|  */ | ||||
| function terminator(callback) | ||||
| { | ||||
|   if (!Object.keys(this.jobs).length) | ||||
|   { | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   // fast forward iteration index
 | ||||
|   this.index = this.size; | ||||
| 
 | ||||
|   // abort jobs
 | ||||
|   abort(this); | ||||
| 
 | ||||
|   // send back results we have so far
 | ||||
|   async(callback)(null, this.results); | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue