diff --git a/dist/index.js b/dist/index.js index 1104bd6..b381405 100644 --- a/dist/index.js +++ b/dist/index.js @@ -505,33 +505,56 @@ class PullsHelper { params.head = head; if (base.length > 0) params.base = base; - const query = `query Pulls($owner: String!, $repo: String!, $head: String, $base: String) { - repository(owner:$owner, name:$repo) { - pullRequests(first: 100, states: OPEN, headRefName: $head, baseRefName: $base) { - edges { - node { - baseRefName - headRefName - headRepository { - nameWithOwner - url - } - headRepositoryOwner { - login - } - isDraft - labels(first: 100) { - nodes { - name + const pulls = { + repository: { + pullRequests: { + edges: [], + pageInfo: { + hasNextPage: false + } + } } + }; + let cursor = undefined; + do { + const query = `query Pulls($owner: String!, $repo: String!, $head: String, $base: String, $cursor: String) { + repository(owner:$owner, name:$repo) { + pullRequests(first: 100, states: OPEN, headRefName: $head, baseRefName: $base, after: $cursor) { + edges { + cursor + node { + baseRefName + headRefName + headRepository { + nameWithOwner + url + } + headRepositoryOwner { + login + } + isDraft + labels(first: 100) { + nodes { + name + } + } + maintainerCanModify } - maintainerCanModify + } + pageInfo { + hasNextPage } } } - } - }`; - const pulls = yield this.octokit.graphql(query, params); + }`; + params.cursor = cursor; + const result = yield this.octokit.graphql(query, params); + pulls.repository.pullRequests.edges.push(...result.repository.pullRequests.edges); + const pageInfo = result.repository.pullRequests.pageInfo; + cursor = pageInfo.hasNextPage + ? result.repository.pullRequests.edges[result.repository.pullRequests.edges.length - 1].cursor + : undefined; + } while (cursor); core.debug(`Pulls: ${(0, util_1.inspect)(pulls.repository.pullRequests.edges)}`); const filteredPulls = pulls.repository.pullRequests.edges .map(p => { diff --git a/src/pulls-helper.ts b/src/pulls-helper.ts index b078493..46f2daf 100644 --- a/src/pulls-helper.ts +++ b/src/pulls-helper.ts @@ -29,33 +29,63 @@ export class PullsHelper { } if (head.length > 0) params.head = head if (base.length > 0) params.base = base - const query = `query Pulls($owner: String!, $repo: String!, $head: String, $base: String) { - repository(owner:$owner, name:$repo) { - pullRequests(first: 100, states: OPEN, headRefName: $head, baseRefName: $base) { - edges { - node { - baseRefName - headRefName - headRepository { - nameWithOwner - url - } - headRepositoryOwner { - login - } - isDraft - labels(first: 100) { - nodes { - name + + const pulls: Pulls = { + repository: { + pullRequests: { + edges: [], + pageInfo: { + hasNextPage: false + } + } + } + } + let cursor: string | undefined = undefined + + do { + const query = `query Pulls($owner: String!, $repo: String!, $head: String, $base: String, $cursor: String) { + repository(owner:$owner, name:$repo) { + pullRequests(first: 100, states: OPEN, headRefName: $head, baseRefName: $base, after: $cursor) { + edges { + cursor + node { + baseRefName + headRefName + headRepository { + nameWithOwner + url + } + headRepositoryOwner { + login } + isDraft + labels(first: 100) { + nodes { + name + } + } + maintainerCanModify } - maintainerCanModify + } + pageInfo { + hasNextPage } } } - } - }` - const pulls = await this.octokit.graphql(query, params) + }` + params.cursor = cursor + const result = await this.octokit.graphql(query, params) + pulls.repository.pullRequests.edges.push( + ...result.repository.pullRequests.edges + ) + const pageInfo = result.repository.pullRequests.pageInfo + cursor = pageInfo.hasNextPage + ? result.repository.pullRequests.edges[ + result.repository.pullRequests.edges.length - 1 + ].cursor + : undefined + } while (cursor) + core.debug(`Pulls: ${inspect(pulls.repository.pullRequests.edges)}`) const filteredPulls = pulls.repository.pullRequests.edges @@ -103,6 +133,7 @@ type Label = { } type Edge = { + cursor: string node: { baseRefName: string headRefName: string @@ -125,6 +156,9 @@ type Pulls = { repository: { pullRequests: { edges: Edge[] + pageInfo: { + hasNextPage: boolean + } } } }