@planet-a/affinity-node
Version:
API wrapper for the affinity.co API
22 lines (21 loc) • 770 B
JavaScript
// TODO(@joscha): this is a mess, simplify types here whilst preserving the required paged request/response types
export const createSearchIteratorFn = (searchFn, key) => {
async function* searchIterator(params) {
let page_token = undefined;
while (true) {
const response = await searchFn(
// TODO(@joscha): remove cast
(page_token ? { ...params, page_token } : params));
// TODO(@joscha): remove cast
yield response[key];
if (response.next_page_token === null) {
// no more pages to fetch
return;
}
else {
page_token = response.next_page_token;
}
}
}
return searchIterator;
};