import { z } from 'zod'; import { ExecuteRepositoryRuleResponsePayload, executeRepositoryRuleRouteDefinition, getMeRouteDefinition, getRepositoriesByOwnerRouteDefinition, getRepositoryDetailsByOwnerAndNameRouteDefinition, getRepositoryTokenTreeByOwnerAndNameRouteDefinition, } from '../routes/index.js'; import { createFetchClient } from './internals/createFetchClient.js'; export function createHttpApiClient(personalAccessToken?: string | undefined) { return { getMe() { return createFetchClient(personalAccessToken).get< z.infer >({ path: getMeRouteDefinition.makeRoute(), }); }, getRepositoriesByOwner(owner: string) { return createFetchClient(personalAccessToken).get< z.infer >({ path: getRepositoriesByOwnerRouteDefinition.makeRoute({ owner }), }); }, getRepositoryByOwnerAndName(owner: string, name: string) { return createFetchClient(personalAccessToken).get< z.infer >({ path: getRepositoryDetailsByOwnerAndNameRouteDefinition.makeRoute({ owner, name }), }); }, async getRepositoryTokenTreeByOwnerAndName(owner: string, name: string) { const { payload } = await createFetchClient(personalAccessToken).get< z.infer >({ path: getRepositoryTokenTreeByOwnerAndNameRouteDefinition.makeRoute({ owner, name }), }); return payload.tokenTree; }, /** * @deprecated use `createRPCClient` instead * @param owner * @param name * @param rule */ executeRepositoryRuleByOwnerAndName( owner: string, name: string, rule: z.infer, ) { return createFetchClient(personalAccessToken).post({ path: executeRepositoryRuleRouteDefinition.makeRoute({ owner, name }), body: rule, }); }, }; }