import { gql, TypedDocumentNode } from "@apollo/client/core"; import { GetLabels, GetLabelsVariables, GetLabels_repository_labels_nodes } from "./schema/GetLabels"; import { GetProjectColumns } from "./schema/GetProjectColumns"; import { client } from "../graphql-client"; import { noNullish } from "../util/util"; export { getLabels, GetProjectColumns }; const GetLabelsQuery: TypedDocumentNode<GetLabels, GetLabelsVariables> = gql` query GetLabels($endCursor: String) { repository(name: "DefinitelyTyped", owner: "DefinitelyTyped") { id labels(first: 100, after: $endCursor) { nodes { id name } pageInfo { hasNextPage endCursor } } } }`; async function getLabels() { const labels: GetLabels_repository_labels_nodes[] = []; let endCursor: string | undefined | null; while (true) { const result = await client.query({ query: GetLabelsQuery, fetchPolicy: "no-cache", variables: { endCursor }, }); const someLabels = result.data.repository?.labels; labels.push(...noNullish(someLabels?.nodes)); if (!someLabels?.pageInfo.hasNextPage) return labels; endCursor = someLabels.pageInfo.endCursor; } } const GetProjectColumns: TypedDocumentNode<GetProjectColumns, never> = gql` query GetProjectColumns { repository(name:"DefinitelyTyped", owner:"DefinitelyTyped") { id project(number: 5) { id columns(first: 30) { nodes { id name } } } } }`;