From 4af33538f00a2022b455267201bf3d3c6ca84ed7 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Fri, 26 Jan 2024 14:10:46 -0600 Subject: [PATCH] feat: Add lazy release iterator --- src/octokit-wrapper.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/octokit-wrapper.ts b/src/octokit-wrapper.ts index c2e5213..f361d04 100644 --- a/src/octokit-wrapper.ts +++ b/src/octokit-wrapper.ts @@ -51,6 +51,40 @@ export async function setup_octokit( return octokit } +export async function* release_iter( + octokit: InstanceType +): AsyncGenerator { + const iterator = octokit.paginate.iterator( + octokit.rest.repos.listReleases, + NEXTFLOW_REPO + ) + let item_index = 0 + let release_items = [] + + /* eslint-disable-next-line @typescript-eslint/unbound-method */ + const { next } = iterator[Symbol.asyncIterator]() + + let request = await next() + + return { + async next() { + if (item_index >= release_items.length) { + if (request.done) { + return { done: true } + } + + request = await next() + release_items = request.value.data + item_index = 0 + } + return { + value: nextflow_release(release_items[item_index++]), + done: false + } + } + } +} + export async function pull_releases( ok: InstanceType ): Promise {