UNPKG

@discublog/api

Version:

A ready-to-use, reusable wrapper for the GitHub Discussions API, based on the GitHub GraphQL API.

45 lines (44 loc) 2.31 kB
import { Octokit } from '@octokit/core'; import type { DiscussionsQuery, DiscussionsQueryVariables, DiscussionCategoriesQuery, AllLabelsQuery, DiscussionsSearchQuery, DiscussionsSearchQueryVariables, DiscussionQueryVariables, DiscussionQuery } from './interface'; type RepositoryOmit<T, K extends keyof T = never> = Omit<T, 'owner' | 'name' | K>; type PickPartial<T, K extends keyof T> = { [P in keyof T]: P extends K ? T[P] | undefined : T[P]; }; export interface Configuration { client: Octokit | null; owner: string | null; name: string | null; } export type RequiredConfiguration = { [K in keyof Configuration]: NonNullable<Configuration[K]>; }; export type AuthParams = { token: string; owner: string; name: string; }; export declare function auth(config: Configuration, params: AuthParams): void; export declare function queryCategories(config: Configuration): Promise<DiscussionCategoriesQuery>; export type QueryByCategoryIdParams = RepositoryOmit<DiscussionsQueryVariables>; export declare function queryByCategoryId(config: Configuration, { first, categoryId, body, bodyHTML, bodyText, cursor, }: QueryByCategoryIdParams): Promise<DiscussionsQuery>; export interface QueryByCategoryNameParams extends PickPartial<RepositoryOmit<DiscussionsQueryVariables, 'categoryId'>, 'first' | 'body' | 'bodyHTML'> { name: string; } export declare function queryByCategoryName(config: Configuration, params: QueryByCategoryNameParams): Promise<DiscussionsQuery | null>; export type QueryByNumberParams = DiscussionQueryVariables; export declare function queryByNumber(config: Configuration, { number, body, bodyHTML, bodyText }: QueryByNumberParams): Promise<DiscussionQuery>; export declare function queryLabels(config: Configuration): Promise<AllLabelsQuery>; interface SearchParamsByLabelAndCategory extends DiscussionsSearchQueryVariables { label?: string; category?: string; query?: never; } interface SearchParamsByQuery extends DiscussionsSearchQueryVariables { label?: never; category?: never; } export type SearchParams = (SearchParamsByLabelAndCategory | SearchParamsByQuery) & { orderBy?: 'createdAt' | 'updatedAt'; }; export declare function search(config: Configuration, params: SearchParams): Promise<DiscussionsSearchQuery>; export {};