UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

45 lines 4.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parallelPromises = void 0; /** * Run a number of promise generators with max parallelism * * Order is not maintained between the input and output. */ async function parallelPromises(n, promises) { const ret = new Array(); let count = 0; let error; const queue = [...promises]; return new Promise((ok, ko) => { tick(); function tick() { if (count === 0 && error) { ko(error); return; } if (count === 0 && queue.length === 0) { ok(ret); return; } while (count < n && queue.length > 0 && !error) { const next = queue.shift(); if (next !== undefined) { start(next); } } } function start(fn) { count += 1; fn() .then((result) => { ret.push(result); }) .catch((e) => { error = e; }) .finally(() => { count -= 1; tick(); }); } }); } exports.parallelPromises = parallelPromises; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwYXJhbGxlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLGdCQUFnQixDQUFJLENBQVMsRUFBRSxRQUFpQztJQUNwRixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBSyxDQUFDO0lBQzNCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksS0FBd0IsQ0FBQztJQUM3QixNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFFNUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUM1QixJQUFJLEVBQUUsQ0FBQztRQUVQLFNBQVMsSUFBSTtZQUNYLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQUU7Z0JBQ3hCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDVixPQUFPO2FBQ1I7WUFDRCxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3JDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDUixPQUFPO2FBQ1I7WUFFRCxPQUFPLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQzlDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO29CQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2I7YUFDRjtRQUNILENBQUM7UUFFRCxTQUFTLEtBQUssQ0FBQyxFQUFvQjtZQUNqQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ1gsRUFBRSxFQUFFO2lCQUNELElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDdkMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM1QixPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUNaLEtBQUssSUFBSSxDQUFDLENBQUM7Z0JBQ1gsSUFBSSxFQUFFLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUF0Q0QsNENBc0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSdW4gYSBudW1iZXIgb2YgcHJvbWlzZSBnZW5lcmF0b3JzIHdpdGggbWF4IHBhcmFsbGVsaXNtXG4gKlxuICogT3JkZXIgaXMgbm90IG1haW50YWluZWQgYmV0d2VlbiB0aGUgaW5wdXQgYW5kIG91dHB1dC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcmFsbGVsUHJvbWlzZXM8QT4objogbnVtYmVyLCBwcm9taXNlczogQXJyYXk8KCkgPT4gUHJvbWlzZTxBPj4pOiBQcm9taXNlPEFycmF5PEE+PiB7XG4gIGNvbnN0IHJldCA9IG5ldyBBcnJheTxBPigpO1xuICBsZXQgY291bnQgPSAwO1xuICBsZXQgZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xuICBjb25zdCBxdWV1ZSA9IFsuLi5wcm9taXNlc107XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaywga28pID0+IHtcbiAgICB0aWNrKCk7XG5cbiAgICBmdW5jdGlvbiB0aWNrKCkge1xuICAgICAgaWYgKGNvdW50ID09PSAwICYmIGVycm9yKSB7XG4gICAgICAgIGtvKGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGNvdW50ID09PSAwICYmIHF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBvayhyZXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChjb3VudCA8IG4gJiYgcXVldWUubGVuZ3RoID4gMCAmJiAhZXJyb3IpIHtcbiAgICAgICAgY29uc3QgbmV4dCA9IHF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgIGlmIChuZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzdGFydChuZXh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0KGZuOiAoKSA9PiBQcm9taXNlPEE+KSB7XG4gICAgICBjb3VudCArPSAxO1xuICAgICAgZm4oKVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7IHJldC5wdXNoKHJlc3VsdCk7IH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4geyBlcnJvciA9IGU7IH0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBjb3VudCAtPSAxO1xuICAgICAgICAgIHRpY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn0iXX0=