UNPKG

@azure-rest/arm-appservice

Version:
68 lines 2.87 kB
import type { Client, PathUncheckedResponse } from "@azure-rest/core-client"; /** * An interface that tracks the settings for paged iteration */ export interface PageSettings { /** * The token that keeps track of where to continue the iterator */ continuationToken?: string; } /** * An interface that allows async iterable iteration both to completion and by page. */ export interface PagedAsyncIterableIterator<TElement, TPage = TElement[], TPageSettings = PageSettings> { /** * The next method, part of the iteration protocol */ next(): Promise<IteratorResult<TElement>>; /** * The connection to the async iterator, part of the iteration protocol */ [Symbol.asyncIterator](): PagedAsyncIterableIterator<TElement, TPage, TPageSettings>; /** * Return an AsyncIterableIterator that works a page at a time */ byPage: (settings?: TPageSettings) => AsyncIterableIterator<TPage>; } /** * Helper type to extract the type of an array */ export type GetArrayType<T> = T extends Array<infer TData> ? TData : never; /** * The type of a custom function that defines how to get a page and a link to the next one if any. */ export type GetPage<TPage> = (pageLink: string) => Promise<{ page: TPage; nextPageLink?: string; }>; /** * Options for the paging helper */ export interface PagingOptions<TResponse> { /** * Custom function to extract pagination details for crating the PagedAsyncIterableIterator */ customGetPage?: GetPage<PaginateReturn<TResponse>[]>; } /** * Helper type to infer the Type of the paged elements from the response type * This type is generated based on the swagger information for x-ms-pageable * specifically on the itemName property which indicates the property of the response * where the page items are found. The default value is `value`. * This type will allow us to provide strongly typed Iterator based on the response we get as second parameter */ export type PaginateReturn<TResult> = TResult extends { body: { value?: infer TPage; }; } ? GetArrayType<TPage> : Array<unknown>; /** * Helper to paginate results from an initial response that follows the specification of Autorest `x-ms-pageable` extension * @param client - Client to use for sending the next page requests * @param initialResponse - Initial response containing the nextLink and current page of elements * @param customGetPage - Optional - Function to define how to extract the page and next link to be used to paginate the results * @returns - PagedAsyncIterableIterator to iterate the elements */ export declare function paginate<TResponse extends PathUncheckedResponse>(client: Client, initialResponse: TResponse, options?: PagingOptions<TResponse>): PagedAsyncIterableIterator<PaginateReturn<TResponse>>; //# sourceMappingURL=paginateHelper.d.ts.map