import type { BobbinContext, XrpcRequestInit } from "#lib/api/client.ts"; import { jsonGet } from "#lib/api/_request.ts"; import type { TicketState } from "#lib/api/records.ts"; // count endpoints share { subject } params and { count, distinctAuthors } output. export type CountName = | "org.tangled.feed.countStars" | "org.tangled.feed.countStarsBy" | "org.tangled.feed.countComments" | "org.tangled.feed.countCommentsBy" | "org.tangled.feed.countReactions" | "org.tangled.feed.countReactionsBy" | "org.tangled.graph.countFollows" | "org.tangled.graph.countFollowsBy" | "org.tangled.label.countDefinitions" | "org.tangled.publicKey.countKeys" | "org.tangled.repo.countArtifacts" | "org.tangled.repo.countArtifactsBy" | "org.tangled.repo.countCollaborators" | "org.tangled.repo.countCollaboratorsBy" | "org.tangled.repo.countForks" | "org.tangled.repo.countIssues" | "org.tangled.repo.countPulls" | "org.tangled.repo.countRepos" | "org.tangled.string.countStrings"; export interface CountResult { count: number; distinctAuthors: number; } export interface CountFilter { author?: string; state?: TicketState; status?: TicketState; } export const count = ( ctx: BobbinContext, name: CountName, subject: string, filter: CountFilter = {}, init?: XrpcRequestInit ): Promise => jsonGet(ctx, name, { subject, ...filter }, init);