@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
TypeScript
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 {};