89 lines
3.5 KiB
TypeScript
89 lines
3.5 KiB
TypeScript
|
|
import { FinalRequestOptions } from "../internal/request-options.mjs";
|
||
|
|
import { APIPromise } from "./api-promise.mjs";
|
||
|
|
import { type OpenAI } from "../client.mjs";
|
||
|
|
import { type APIResponseProps } from "../internal/parse.mjs";
|
||
|
|
export type PageRequestOptions = Pick<FinalRequestOptions, 'query' | 'headers' | 'body' | 'path' | 'method'>;
|
||
|
|
export declare abstract class AbstractPage<Item> implements AsyncIterable<Item> {
|
||
|
|
#private;
|
||
|
|
protected options: FinalRequestOptions;
|
||
|
|
protected response: Response;
|
||
|
|
protected body: unknown;
|
||
|
|
constructor(client: OpenAI, response: Response, body: unknown, options: FinalRequestOptions);
|
||
|
|
abstract nextPageRequestOptions(): PageRequestOptions | null;
|
||
|
|
abstract getPaginatedItems(): Item[];
|
||
|
|
hasNextPage(): boolean;
|
||
|
|
getNextPage(): Promise<this>;
|
||
|
|
iterPages(): AsyncGenerator<this>;
|
||
|
|
[Symbol.asyncIterator](): AsyncGenerator<Item>;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* 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)
|
||
|
|
* }
|
||
|
|
*/
|
||
|
|
export declare class PagePromise<PageClass extends AbstractPage<Item>, Item = ReturnType<PageClass['getPaginatedItems']>[number]> extends APIPromise<PageClass> implements AsyncIterable<Item> {
|
||
|
|
constructor(client: OpenAI, request: Promise<APIResponseProps>, Page: new (...args: ConstructorParameters<typeof AbstractPage>) => PageClass);
|
||
|
|
/**
|
||
|
|
* Allow auto-paginating iteration on an unawaited list call, eg:
|
||
|
|
*
|
||
|
|
* for await (const item of client.items.list()) {
|
||
|
|
* console.log(item)
|
||
|
|
* }
|
||
|
|
*/
|
||
|
|
[Symbol.asyncIterator](): AsyncGenerator<Item>;
|
||
|
|
}
|
||
|
|
export interface PageResponse<Item> {
|
||
|
|
data: Array<Item>;
|
||
|
|
object: string;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Note: no pagination actually occurs yet, this is for forwards-compatibility.
|
||
|
|
*/
|
||
|
|
export declare class Page<Item> extends AbstractPage<Item> implements PageResponse<Item> {
|
||
|
|
data: Array<Item>;
|
||
|
|
object: string;
|
||
|
|
constructor(client: OpenAI, response: Response, body: PageResponse<Item>, options: FinalRequestOptions);
|
||
|
|
getPaginatedItems(): Item[];
|
||
|
|
nextPageRequestOptions(): PageRequestOptions | null;
|
||
|
|
}
|
||
|
|
export interface CursorPageResponse<Item> {
|
||
|
|
data: Array<Item>;
|
||
|
|
has_more: boolean;
|
||
|
|
}
|
||
|
|
export interface CursorPageParams {
|
||
|
|
after?: string;
|
||
|
|
limit?: number;
|
||
|
|
}
|
||
|
|
export declare class CursorPage<Item extends {
|
||
|
|
id: string;
|
||
|
|
}> extends AbstractPage<Item> implements CursorPageResponse<Item> {
|
||
|
|
data: Array<Item>;
|
||
|
|
has_more: boolean;
|
||
|
|
constructor(client: OpenAI, response: Response, body: CursorPageResponse<Item>, options: FinalRequestOptions);
|
||
|
|
getPaginatedItems(): Item[];
|
||
|
|
hasNextPage(): boolean;
|
||
|
|
nextPageRequestOptions(): PageRequestOptions | null;
|
||
|
|
}
|
||
|
|
export interface ConversationCursorPageResponse<Item> {
|
||
|
|
data: Array<Item>;
|
||
|
|
has_more: boolean;
|
||
|
|
last_id: string;
|
||
|
|
}
|
||
|
|
export interface ConversationCursorPageParams {
|
||
|
|
after?: string;
|
||
|
|
limit?: number;
|
||
|
|
}
|
||
|
|
export declare class ConversationCursorPage<Item> extends AbstractPage<Item> implements ConversationCursorPageResponse<Item> {
|
||
|
|
data: Array<Item>;
|
||
|
|
has_more: boolean;
|
||
|
|
last_id: string;
|
||
|
|
constructor(client: OpenAI, response: Response, body: ConversationCursorPageResponse<Item>, options: FinalRequestOptions);
|
||
|
|
getPaginatedItems(): Item[];
|
||
|
|
hasNextPage(): boolean;
|
||
|
|
nextPageRequestOptions(): PageRequestOptions | null;
|
||
|
|
}
|
||
|
|
//# sourceMappingURL=pagination.d.mts.map
|