UNPKG

cloudflare

Version:

The official TypeScript library for the Cloudflare API

260 lines • 8.73 kB
"use strict"; var _AbstractPage_client; Object.defineProperty(exports, "__esModule", { value: true }); exports.SinglePage = exports.PageTokenPagination = exports.ContainersInstancesV1Pagination = exports.CursorLimitPagination = exports.CursorPaginationAfter = exports.CursorPagination = exports.V4PagePaginationArray = exports.V4PagePagination = exports.PagePromise = exports.AbstractPage = void 0; const tslib_1 = require("../internal/tslib.js"); // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. const error_1 = require("./error.js"); const parse_1 = require("../internal/parse.js"); const api_promise_1 = require("./api-promise.js"); const values_1 = require("../internal/utils/values.js"); var AbstractPage = /* @__PURE__ */ (() => { class AbstractPage { constructor(client, response, body, options) { _AbstractPage_client.set(this, void 0); tslib_1.__classPrivateFieldSet(this, _AbstractPage_client, client, "f"); this.options = options; this.response = response; this.body = body; } hasNextPage() { const items = this.getPaginatedItems(); if (!items.length) return false; return this.nextPageRequestOptions() != null; } async getNextPage() { const nextOptions = this.nextPageRequestOptions(); if (!nextOptions) { throw new error_1.CloudflareError('No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.'); } return await tslib_1.__classPrivateFieldGet(this, _AbstractPage_client, "f").requestAPIList(this.constructor, nextOptions); } async *iterPages() { let page = this; yield page; while (page.hasNextPage()) { page = await page.getNextPage(); yield page; } } async *[(_AbstractPage_client = new WeakMap(), Symbol.asyncIterator)]() { for await (const page of this.iterPages()) { for (const item of page.getPaginatedItems()) { yield item; } } } } return AbstractPage; })(); exports.AbstractPage = AbstractPage; var PagePromise = /* @__PURE__ */ (() => { /** * This subclass of Promise will resolve to an instantiated Page once the request completes. * * It also implements AsyncIterable to allow auto-paginating iteration on an unawaited list call, eg: * * for await (const item of client.items.list()) { * console.log(item) * } */ class PagePromise extends api_promise_1.APIPromise { constructor(client, request, Page) { super(client, request, async (client, props) => new Page(client, props.response, await (0, parse_1.defaultParseResponse)(client, props), props.options)); } /** * Allow auto-paginating iteration on an unawaited list call, eg: * * for await (const item of client.items.list()) { * console.log(item) * } */ async *[Symbol.asyncIterator]() { const page = await this; for await (const item of page) { yield item; } } } return PagePromise; })(); exports.PagePromise = PagePromise; class V4PagePagination extends AbstractPage { constructor(client, response, body, options) { super(client, response, body, options); this.result = body.result || {}; this.result_info = body.result_info || {}; } getPaginatedItems() { return this.result?.items ?? []; } nextPageRequestOptions() { const query = this.options.query; const currentPage = query?.page ?? 1; return { ...this.options, query: { ...(0, values_1.maybeObj)(this.options.query), page: currentPage + 1, }, }; } } exports.V4PagePagination = V4PagePagination; class V4PagePaginationArray extends AbstractPage { constructor(client, response, body, options) { super(client, response, body, options); this.result = body.result || []; this.result_info = body.result_info || {}; } getPaginatedItems() { return this.result ?? []; } nextPageRequestOptions() { const query = this.options.query; const currentPage = query?.page ?? 1; return { ...this.options, query: { ...(0, values_1.maybeObj)(this.options.query), page: currentPage + 1, }, }; } } exports.V4PagePaginationArray = V4PagePaginationArray; class CursorPagination extends AbstractPage { constructor(client, response, body, options) { super(client, response, body, options); this.result = body.result || []; this.result_info = body.result_info || {}; } getPaginatedItems() { return this.result ?? []; } nextPageRequestOptions() { const cursor = this.result_info?.cursor; if (!cursor) { return null; } return { ...this.options, query: { ...(0, values_1.maybeObj)(this.options.query), cursor, }, }; } } exports.CursorPagination = CursorPagination; class CursorPaginationAfter extends AbstractPage { constructor(client, response, body, options) { super(client, response, body, options); this.result = body.result || []; this.result_info = body.result_info || {}; } getPaginatedItems() { return this.result ?? []; } nextPageRequestOptions() { const cursor = this.result_info?.cursors?.after; if (!cursor) { return null; } return { ...this.options, query: { ...(0, values_1.maybeObj)(this.options.query), cursor, }, }; } } exports.CursorPaginationAfter = CursorPaginationAfter; class CursorLimitPagination extends AbstractPage { constructor(client, response, body, options) { super(client, response, body, options); this.result = body.result || []; this.result_info = body.result_info || {}; } getPaginatedItems() { return this.result ?? []; } nextPageRequestOptions() { const cursor = this.result_info?.cursor; if (!cursor) { return null; } return { ...this.options, query: { ...(0, values_1.maybeObj)(this.options.query), cursor, }, }; } } exports.CursorLimitPagination = CursorLimitPagination; class ContainersInstancesV1Pagination extends AbstractPage { constructor(client, response, body, options) { super(client, response, body, options); this.result = body.result || {}; this.result_info = body.result_info || {}; } getPaginatedItems() { return this.result?.instances ?? []; } nextPageRequestOptions() { const cursor = this.result_info?.next_page_token; if (!cursor) { return null; } return { ...this.options, query: { ...(0, values_1.maybeObj)(this.options.query), page_token: cursor, }, }; } } exports.ContainersInstancesV1Pagination = ContainersInstancesV1Pagination; class PageTokenPagination extends AbstractPage { constructor(client, response, body, options) { super(client, response, body, options); this.result = body.result || []; this.result_info = body.result_info || {}; } getPaginatedItems() { return this.result ?? []; } nextPageRequestOptions() { const cursor = this.result_info?.next_page_token; if (!cursor) { return null; } return { ...this.options, query: { ...(0, values_1.maybeObj)(this.options.query), page_token: cursor, }, }; } } exports.PageTokenPagination = PageTokenPagination; class SinglePage extends AbstractPage { constructor(client, response, body, options) { super(client, response, body, options); this.result = body.result || []; } getPaginatedItems() { return this.result ?? []; } nextPageRequestOptions() { return null; } } exports.SinglePage = SinglePage; //# sourceMappingURL=pagination.js.map