| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | 'use strict';Object.defineProperty(exports, "__esModule", {    value: true});exports.default = asyncEachOfLimit;var _breakLoop = require('./breakLoop.js');var _breakLoop2 = _interopRequireDefault(_breakLoop);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// for async generatorsfunction asyncEachOfLimit(generator, limit, iteratee, callback) {    let done = false;    let canceled = false;    let awaiting = false;    let running = 0;    let idx = 0;    function replenish() {        //console.log('replenish')        if (running >= limit || awaiting || done) return;        //console.log('replenish awaiting')        awaiting = true;        generator.next().then(({ value, done: iterDone }) => {            //console.log('got value', value)            if (canceled || done) return;            awaiting = false;            if (iterDone) {                done = true;                if (running <= 0) {                    //console.log('done nextCb')                    callback(null);                }                return;            }            running++;            iteratee(value, idx, iterateeCallback);            idx++;            replenish();        }).catch(handleError);    }    function iterateeCallback(err, result) {        //console.log('iterateeCallback')        running -= 1;        if (canceled) return;        if (err) return handleError(err);        if (err === false) {            done = true;            canceled = true;            return;        }        if (result === _breakLoop2.default || done && running <= 0) {            done = true;            //console.log('done iterCb')            return callback(null);        }        replenish();    }    function handleError(err) {        if (canceled) return;        awaiting = false;        done = true;        callback(err);    }    replenish();}module.exports = exports.default;
 |