ipsos-components
Version:
Material Design components for Angular
44 lines (35 loc) • 1.34 kB
text/typescript
import {githubApiV4} from './github-api';
/** GraphQL query that finds all Pull Requests and their mergeable state. */
const getOpenPullRequestsWithMergeableStateQuery = `
query getOpenPullRequestsWithMergeableState($lastCursor: String) {
repository(owner: "angular", name: "material2") {
pullRequests(states: OPEN, first: 100, after: $lastCursor) {
pageInfo {
hasNextPage,
endCursor
}
nodes {
number,
mergeable
}
}
}
}`;
/** Pull Request node that will be returned by the Github V4 API. */
export interface PullRequestWithMergeableState {
number: number;
mergeable: string;
}
/** Queries the GitHub API to find all open pull requests and their mergeable state. */
export async function getOpenPullRequestsWithMergeableState()
: Promise<PullRequestWithMergeableState[]> {
const nodes: PullRequestWithMergeableState[] = [];
let lastData: any|null = null;
while (!lastData || lastData.repository.pullRequests.pageInfo.hasNextPage) {
lastData = await githubApiV4.request(getOpenPullRequestsWithMergeableStateQuery, {
lastCursor: lastData && lastData.repository.pullRequests.pageInfo.endCursor
});
nodes.push(...lastData.repository.pullRequests.nodes);
}
return nodes;
}