Add telemetry for TRAP caching
This commit is contained in:
parent
ca10a6d552
commit
4139682b64
63 changed files with 1195 additions and 126 deletions
59
node_modules/tiny-each-async/index.js
generated
vendored
Normal file
59
node_modules/tiny-each-async/index.js
generated
vendored
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
/* eslint-disable no-use-before-define */
|
||||
'use strict';
|
||||
|
||||
module.exports = function eachAsync(arr, parallelLimit, iteratorFn, cb) {
|
||||
var pending = 0;
|
||||
var index = 0;
|
||||
var lastIndex = arr.length - 1;
|
||||
var called = false;
|
||||
var limit;
|
||||
var callback;
|
||||
var iterate;
|
||||
|
||||
if (typeof parallelLimit === 'number') {
|
||||
limit = parallelLimit;
|
||||
iterate = iteratorFn;
|
||||
callback = cb || function noop() {};
|
||||
} else {
|
||||
iterate = parallelLimit;
|
||||
callback = iteratorFn || function noop() {};
|
||||
limit = arr.length;
|
||||
}
|
||||
|
||||
if (!arr.length) { return callback(); }
|
||||
|
||||
var iteratorLength = iterate.length;
|
||||
|
||||
var shouldCallNextIterator = function shouldCallNextIterator() {
|
||||
return (!called && (pending < limit) && (index < lastIndex));
|
||||
};
|
||||
|
||||
var iteratorCallback = function iteratorCallback(err) {
|
||||
if (called) { return; }
|
||||
|
||||
pending--;
|
||||
|
||||
if (err || (index === lastIndex && !pending)) {
|
||||
called = true;
|
||||
|
||||
callback(err);
|
||||
} else if (shouldCallNextIterator()) {
|
||||
processIterator(++index);
|
||||
}
|
||||
};
|
||||
|
||||
var processIterator = function processIterator() {
|
||||
pending++;
|
||||
|
||||
var args = (iteratorLength === 2) ? [arr[index], iteratorCallback]
|
||||
: [arr[index], index, iteratorCallback];
|
||||
|
||||
iterate.apply(null, args);
|
||||
|
||||
if (shouldCallNextIterator()) {
|
||||
processIterator(++index);
|
||||
}
|
||||
};
|
||||
|
||||
processIterator();
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue