🐛 Update: Added support for the 'find' command in settings.local.json. Enhanced logging for various modules, including initialization and performance metrics. Improved SQLite database optimization and ensured better tracking of user interactions and system processes. 📚
This commit is contained in:
173
network-visualization/node_modules/batch/index.js
generated
vendored
Normal file
173
network-visualization/node_modules/batch/index.js
generated
vendored
Normal file
@@ -0,0 +1,173 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
try {
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
if (!EventEmitter) throw new Error();
|
||||
} catch (err) {
|
||||
var Emitter = require('emitter');
|
||||
}
|
||||
|
||||
/**
|
||||
* Defer.
|
||||
*/
|
||||
|
||||
var defer = typeof process !== 'undefined' && process && typeof process.nextTick === 'function'
|
||||
? process.nextTick
|
||||
: function(fn){ setTimeout(fn); };
|
||||
|
||||
/**
|
||||
* Noop.
|
||||
*/
|
||||
|
||||
function noop(){}
|
||||
|
||||
/**
|
||||
* Expose `Batch`.
|
||||
*/
|
||||
|
||||
module.exports = Batch;
|
||||
|
||||
/**
|
||||
* Create a new Batch.
|
||||
*/
|
||||
|
||||
function Batch() {
|
||||
if (!(this instanceof Batch)) return new Batch;
|
||||
this.fns = [];
|
||||
this.concurrency(Infinity);
|
||||
this.throws(true);
|
||||
for (var i = 0, len = arguments.length; i < len; ++i) {
|
||||
this.push(arguments[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Inherit from `EventEmitter.prototype`.
|
||||
*/
|
||||
|
||||
if (EventEmitter) {
|
||||
Batch.prototype.__proto__ = EventEmitter.prototype;
|
||||
} else {
|
||||
Emitter(Batch.prototype);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set concurrency to `n`.
|
||||
*
|
||||
* @param {Number} n
|
||||
* @return {Batch}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
Batch.prototype.concurrency = function(n){
|
||||
this.n = n;
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Queue a function.
|
||||
*
|
||||
* @param {Function} fn
|
||||
* @return {Batch}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
Batch.prototype.push = function(fn){
|
||||
this.fns.push(fn);
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Set wether Batch will or will not throw up.
|
||||
*
|
||||
* @param {Boolean} throws
|
||||
* @return {Batch}
|
||||
* @api public
|
||||
*/
|
||||
Batch.prototype.throws = function(throws) {
|
||||
this.e = !!throws;
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Execute all queued functions in parallel,
|
||||
* executing `cb(err, results)`.
|
||||
*
|
||||
* @param {Function} cb
|
||||
* @return {Batch}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
Batch.prototype.end = function(cb){
|
||||
var self = this
|
||||
, total = this.fns.length
|
||||
, pending = total
|
||||
, results = []
|
||||
, errors = []
|
||||
, cb = cb || noop
|
||||
, fns = this.fns
|
||||
, max = this.n
|
||||
, throws = this.e
|
||||
, index = 0
|
||||
, done;
|
||||
|
||||
// empty
|
||||
if (!fns.length) return defer(function(){
|
||||
cb(null, results);
|
||||
});
|
||||
|
||||
// process
|
||||
function next() {
|
||||
var i = index++;
|
||||
var fn = fns[i];
|
||||
if (!fn) return;
|
||||
var start = new Date;
|
||||
|
||||
try {
|
||||
fn(callback);
|
||||
} catch (err) {
|
||||
callback(err);
|
||||
}
|
||||
|
||||
function callback(err, res){
|
||||
if (done) return;
|
||||
if (err && throws) return done = true, defer(function(){
|
||||
cb(err);
|
||||
});
|
||||
var complete = total - pending + 1;
|
||||
var end = new Date;
|
||||
|
||||
results[i] = res;
|
||||
errors[i] = err;
|
||||
|
||||
self.emit('progress', {
|
||||
index: i,
|
||||
value: res,
|
||||
error: err,
|
||||
pending: pending,
|
||||
total: total,
|
||||
complete: complete,
|
||||
percent: complete / total * 100 | 0,
|
||||
start: start,
|
||||
end: end,
|
||||
duration: end - start
|
||||
});
|
||||
|
||||
if (--pending) next();
|
||||
else defer(function(){
|
||||
if(!throws) cb(errors, results);
|
||||
else cb(null, results);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// concurrency
|
||||
for (var i = 0; i < fns.length; i++) {
|
||||
if (i == max) break;
|
||||
next();
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
Reference in New Issue
Block a user