UNPKG

@bitrix24/b24jssdk

Version:

Bitrix24 REST API JavaScript SDK

70 lines (67 loc) 2.07 kB
/** * @package @bitrix24/b24jssdk * @version 2.0.0 * @copyright (c) 2026 Bitrix24 * @license MIT * @see https://github.com/bitrix24/b24jssdk * @see https://bitrix24.github.io/b24jssdk/ */ 'use strict'; var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); class KeysetPaginationError extends Error { static { __name(this, "KeysetPaginationError"); } errors; messages; constructor(errors, messages) { super(messages.join("; ")); this.name = "KeysetPaginationError"; this.errors = errors; this.messages = messages; } } async function* keysetPaginate(b24, logger, strategy) { let cursor = strategy.initialCursor; let maxPageSize = 0; while (true) { const response = await b24.actions.v3.call.make({ method: strategy.method, params: strategy.buildParams(cursor), requestId: strategy.requestId }); if (!response.isSuccess) { logger.error(strategy.errorLabel, { method: strategy.method, requestId: strategy.requestId, messages: response.getErrorMessages() }); throw new KeysetPaginationError(response.errors, response.getErrorMessages()); } const responseData = response.getData(); if (!responseData) { break; } const resultData = responseData.result[strategy.customKeyForResult]; if (!Array.isArray(resultData) || resultData.length === 0) { break; } yield resultData; maxPageSize = Math.max(maxPageSize, resultData.length); if (resultData.length < maxPageSize) { break; } const lastItem = resultData[resultData.length - 1]; const next = lastItem ? strategy.readNextCursor(lastItem) : null; if (next === null || next === void 0) { logger.warning(strategy.noCursorWarning); break; } cursor = next; } } __name(keysetPaginate, "keysetPaginate"); exports.KeysetPaginationError = KeysetPaginationError; exports.keysetPaginate = keysetPaginate; //# sourceMappingURL=_keyset-paginate.cjs.map