UNPKG

@dmgt/google-ad-manager-api

Version:
41 lines 1.17 kB
"use strict"; 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