@dmgt/google-ad-manager-api
Version:
Typed Google Ad Manager API
41 lines • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.paginate = paginate;
const promises_1 = require("node:timers/promises");
/**
* Paginate queries.
*
* @see {@link PaginateOptions}
* @see {@link iterate}
* @example
* ```
* for await (const page of paginate({
* executeQuery: (limit, offset) =>
* query(
* client,
* 'getLineItemsByStatementAsync',
* { limit, offset }
* )
* })) {
* console.info(page.items)
* }
* ```
*/
async function* paginate({ executeQuery, interval = 0, pageSize = 100, startingOffset = 0, }) {
let offset = startingOffset;
let finished = false;
let pageNum = 0;
while (!finished) {
const result = await executeQuery(pageSize, offset);
const response = Array.isArray(result) ? result[0] : result;
const items = response.rval?.results || [];
if (items.length)
yield { items, pageNum: ++pageNum };
finished = items.length < pageSize;
if (!finished) {
offset += pageSize;
await (0, promises_1.setTimeout)(interval);
}
}
}
//# sourceMappingURL=paginate.js.map