@graphql-mesh/utils
Version:
28 lines (27 loc) • 819 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.iterateAsync = iterateAsync;
const utils_1 = require("@graphql-tools/utils");
function iterateAsync(iterable, callback, results) {
const iterator = iterable[Symbol.iterator]();
function iterate() {
const { done: endOfIterator, value } = iterator.next();
if (endOfIterator) {
return;
}
let endedEarly = false;
function endEarly() {
endedEarly = true;
}
return (0, utils_1.mapMaybePromise)(callback(value, endEarly), result => {
if (endedEarly) {
return;
}
if (result) {
results?.push(result);
}
return iterate();
});
}
return iterate();
}