import { normalizeIssueLocator, pickAuthInput, request } from '../core.ts' import { asRecord, slimIssue } from '../shape.ts' /** * Fetch one GitLab issue by project + iid, or by issue URL. * * @example * import getGitlabIssue from 'kody:@kody/gitlab/issues/get' * const issue = await getGitlabIssue({ project: 'example-group/example-project', issueIid: 12 }) */ export default async function getGitlabIssue(params: Record = {}) { const auth = pickAuthInput(params) const { projectId, projectPath, issueIid } = normalizeIssueLocator(params) const response = await request>({ ...auth, path: `/projects/${projectId}/issues/${issueIid}`, throwOnError: true, }) return { ...slimIssue(asRecord(response.data)), projectPath, auth: response.auth, } }