UNPKG

openai

Version:

The official TypeScript library for the OpenAI API

99 lines (77 loc) 2.25 kB
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { AbstractPage, Response, APIClient, FinalRequestOptions, PageInfo } from './core'; export interface PageResponse<Item> { data: Array<Item>; object: string; } /** * Note: no pagination actually occurs yet, this is for forwards-compatibility. */ export class Page<Item> extends AbstractPage<Item> implements PageResponse<Item> { data: Array<Item>; object: string; constructor(client: APIClient, response: Response, body: PageResponse<Item>, options: FinalRequestOptions) { super(client, response, body, options); this.data = body.data || []; this.object = body.object; } getPaginatedItems(): Item[] { return this.data ?? []; } // @deprecated Please use `nextPageInfo()` instead /** * This page represents a response that isn't actually paginated at the API level * so there will never be any next page params. */ nextPageParams(): null { return null; } nextPageInfo(): null { return null; } } export interface CursorPageResponse<Item> { data: Array<Item>; } export interface CursorPageParams { after?: string; limit?: number; } export class CursorPage<Item extends { id: string }> extends AbstractPage<Item> implements CursorPageResponse<Item> { data: Array<Item>; constructor( client: APIClient, response: Response, body: CursorPageResponse<Item>, options: FinalRequestOptions, ) { super(client, response, body, options); this.data = body.data || []; } getPaginatedItems(): Item[] { return this.data ?? []; } // @deprecated Please use `nextPageInfo()` instead nextPageParams(): Partial<CursorPageParams> | null { const info = this.nextPageInfo(); if (!info) return null; if ('params' in info) return info.params; const params = Object.fromEntries(info.url.searchParams); if (!Object.keys(params).length) return null; return params; } nextPageInfo(): PageInfo | null { const data = this.getPaginatedItems(); if (!data.length) { return null; } const id = data[data.length - 1]?.id; if (!id) { return null; } return { params: { after: id } }; } }