/** * Auto-paginate a list endpoint. * If opts includes a specific page, returns just that page (no auto-pagination). */ export async function autoPaginate( fetchPage: (page: number, perPage: number) => Promise, opts?: { page?: number; perPage?: number }, ): Promise { const perPage = opts?.perPage || 50; // If caller requests a specific page, return just that page if (opts?.page) { return fetchPage(opts.page, perPage); } // Otherwise auto-paginate through all pages const all: T[] = []; let page = 1; while (true) { const items = await fetchPage(page, perPage); all.push(...items); if (items.length < perPage) break; page++; } return all; }