Files
personal_site/frontend/node_modules/@aws-cdk/toolkit-lib/lib/util/arrays.js
T

51 lines
4.3 KiB
JavaScript
Raw Normal View History

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.flatMap = flatMap;
exports.flatten = flatten;
exports.partition = partition;
exports.indexBy = indexBy;
/**
* Map a function over an array and concatenate the results
*/
function flatMap(xs, fn) {
return flatten(xs.map(fn));
}
/**
* Flatten a list of lists into a list of elements
*/
function flatten(xs) {
return Array.prototype.concat.apply([], xs);
}
/**
* Partition a collection by removing and returning all elements that match a predicate
*
* Note: the input collection is modified in-place!
*/
function partition(collection, pred) {
const ret = [];
let i = 0;
while (i < collection.length) {
if (pred(collection[i])) {
ret.push(collection.splice(i, 1)[0]);
}
else {
i++;
}
}
return ret;
}
async function indexBy(xs, fn) {
const ret = new Map();
for (const x of xs) {
const key = await fn(x);
const group = ret.get(key);
if (group) {
group.push(x);
}
else {
ret.set(key, [x]);
}
}
return ret;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJyYXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsMEJBRUM7QUFLRCwwQkFFQztBQU9ELDhCQVdDO0FBRUQsMEJBWUM7QUE1Q0Q7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQU8sRUFBTyxFQUFFLEVBQThCO0lBQ25FLE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQUksRUFBUztJQUNsQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixTQUFTLENBQUksVUFBZSxFQUFFLElBQXVCO0lBQ25FLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixPQUFPLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4QixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixDQUFDLEVBQUUsQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRU0sS0FBSyxVQUFVLE9BQU8sQ0FBTyxFQUFPLEVBQUUsRUFBd0I7SUFDbkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUM5QixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25CLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1hcCBhIGZ1bmN0aW9uIG92ZXIgYW4gYXJyYXkgYW5kIGNvbmNhdGVuYXRlIHRoZSByZXN1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0TWFwPFQsIFU+KHhzOiBUW10sIGZuOiAoKHg6IFQsIGk6IG51bWJlcikgPT4gVVtdKSk6IFVbXSB7XG4gIHJldHVybiBmbGF0dGVuKHhzLm1hcChmbikpO1xufVxuXG4vKipcbiAqIEZsYXR0ZW4gYSBsaXN0IG9mIGxpc3RzIGludG8gYSBsaXN0IG9mIGVsZW1lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuPFQ+KHhzOiBUW11bXSk6IFRbXSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCB4cyk7XG59XG5cbi8qKlxuICogUGFydGl0aW9uIGEgY29sbGVjdGlvbiBieSByZW1vdmluZyBhbmQgcmV0dXJuaW5nIGFsbCBlbGVtZW50cyB0aGF0IG1hdGNoIGEgcHJlZGljYXRlXG4gKlxuICogTm90ZTogdGhlIGlucHV0IGNvbGxlY3Rpb24gaXMgbW9kaWZpZWQgaW4tcGxhY2UhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJ0aXRpb248VD4oY29sbGVjdGlvbjogVFtdLCBwcmVkOiAoeDogVCkgPT4gYm9vbGVhbik6IFRbXSB7XG4gIGNvbnN0IHJldDogVFtdID0gW107XG4gIGxldCBpID0gMDtcbiAgd2hpbGUgKGkgPCBjb2xsZWN0aW9uLmxlbmd0aCkge1xuICAgIGlmIChwcmVkKGNvbGxlY3Rpb25baV0pKSB7XG4gICAgICByZXQucHVzaChjb2xsZWN0aW9uLnNwbGljZShpLCAxKVswXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGkrKztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluZGV4Qnk8QSwgQj4oeHM6IEFbXSwgZm46IChhOiBBKSA9PiBQcm9taXNlPEI+KTogUHJvbWlzZTxNYXA8QiwgQVtdPj4ge1xuICBjb25zdCByZXQgPSBuZXcgTWFwPEIsIEFbXT4oKTtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgZm4oeCk7XG4gICAgY29uc3QgZ3JvdXAgPSByZXQuZ2V0KGtleSk7XG4gICAgaWYgKGdyb3VwKSB7XG4gICAgICBncm91cC5wdXNoKHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXQuc2V0KGtleSwgW3hdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuIl19