@candriajs/git-neko-kit
Version:
Github, Gitee, GitCode API封装库
1 lines • 30.3 kB
JavaScript
import{FailedtoLockIssueMsg as e,FailedtoRemoveIssueMsg as t,FailedtoUnlockIssueMsg as n,GitHubClient as r,IssueCommentNotFoundMsg as i,IssueCommentRemoveSuccessMsg as a,IssueMovedMsg as o,IssueNotFoundMsg as s,IssueUnlockSuccessMsg as c,MissingIssueCommentBodyMsg as l,MissingIssueCommentNumberMsg as u,MissingIssueNumberMsg as d,MissingIssueTitleMsg as f,MissingRepoOwnerOrNameMsg as p,MissingSubIssueNumberMsg as m,PermissionDeniedMsg as h,RepoNotFoundMsg as g,format_date as _}from"./client-sGV7POG-.mjs";import{isEmpty as v}from"radash";var y=class extends r{constructor(e){super(e),this.userToken=e.userToken,this.api_url=e.api_url,this.base_url=e.base_url}async get_issue_info(e){if(!e.owner||!e.repo)throw Error(p);if(!e.issue_number)throw Error(d);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,issue_number:r}=e,i=await this.get(`/repos/${t}/${n}/issues/${Number(r)}`);switch(i.statusCode){case 404:throw Error(s);case 301:throw Error(o)}if(i.data){let[e,t,n,r,a,o,s]=await Promise.all([this.format?_(i.data.created_at):i.data.created_at,this.format?_(i.data.updated_at):i.data.updated_at,v(i.data.closed_at)?null:this.format?await _(i.data.closed_at):i.data.closed_at,v(i.data.milestone)?null:this.format?await _(i.data.milestone.created_at):i.data.milestone.created_at,v(i.data.milestone)?null:this.format?await _(i.data.milestone.updated_at):i.data.milestone.updated_at,v(i.data.milestone)?null:this.format?await _(i.data.milestone.closed_at):i.data.milestone.closed_at,v(i.data.milestone)?null:this.format?await _(i.data.milestone.due_on):i.data.milestone.due_on]),c={id:i.data.id,html_url:i.data.html_url,number:i.data.number,state:i.data.state,title:i.data.title,body:i.data.body,user:{id:i.data.user.id,login:i.data.user.login,name:v(i.data.user.name)?null:i.data.user.name,email:v(i.data.user.email)?null:i.data.user.email,html_url:i.data.user.html_url,avatar_url:i.data.user.avatar_url},labels:v(i.data.labels)?null:i.data.labels.map(e=>({id:e.id,name:e.name,color:e.color})),assignee:v(i.data.assignee)?null:{id:i.data.assignee.id,login:i.data.assignee.login,name:v(i.data.assignee.name)?null:i.data.assignee.name,email:v(i.data.assignee.email)?null:i.data.assignee.email,html_url:i.data.assignee.html_url,avatar_url:i.data.assignee.avatar_url},assignees:v(i.data.assignees)?null:i.data.assignees.map(e=>({id:e.id,login:e.login,name:v(e.name)?null:e.name,email:v(e.email)?null:e.email,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:v(i.data.milestone)?null:{id:i.data.milestone.id,url:i.data.milestone.url,number:i.data.milestone.number,state:i.data.milestone.state,title:i.data.milestone.title,description:i.data.milestone.description,open_issues:i.data.milestone.open_issues,closed_issues:i.data.milestone.closed_issues,created_at:r,updated_at:a,closed_at:o,due_on:s},created_at:e,updated_at:t,closed_at:n};i.data=c}return i}catch(e){throw Error(`[GitHub] 获取议题详情失败: ${e.message}`)}}async get_issues_list(e){if(!e.owner||!e.repo)throw Error(p);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,...r}=e,i={};r.milestone&&(i.milestone=r.milestone.toString()),r.state&&(i.state=r.state),r.assignee&&(i.assignee=r.assignee),r.creator&&(i.creator=r.creator),r.labels&&(i.labels=r.labels),r.sort&&(i.sort=r.sort),r.direction&&(i.direction=r.direction),r.since&&(i.since=r.since),r.per_page&&(i.per_page=r.per_page.toString()),r.page&&(i.page=r.page.toString());let a=`/repos/${t}/${n}/issues`,o=await this.get(a,i);if(o.statusCode===401)throw Error(h);if(o.data){let e=await Promise.all(o.data.map(async e=>({id:e.id,html_url:e.html_url,number:e.number,state:e.state,title:e.title,body:e.body,user:{id:e.user.id,login:e.user.login,name:v(e.user.name)?null:e.user.name,email:v(e.user.email)?null:e.user.email,html_url:e.user.html_url,avatar_url:e.user.avatar_url},labels:v(e.labels)?null:e.labels.map(e=>({id:e.id,name:e.name,color:e.color})),assignee:v(e.assignee)?null:{id:e.assignee.id,login:e.assignee.login,name:v(e.assignee.name)?null:e.assignee.name,email:v(e.assignee.email)?null:e.assignee.email,html_url:e.assignee.html_url,avatar_url:e.assignee.avatar_url},assignees:v(e.assignees)?null:e.assignees.map(e=>({id:e.id,login:e.login,name:v(e.name)?null:e.name,email:v(e.email)?null:e.email,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:v(e.milestone)?null:{id:e.milestone.id,url:e.milestone.url,number:e.milestone.number,state:e.milestone.state,title:e.milestone.title,description:e.milestone.description,open_issues:e.milestone.open_issues,closed_issues:e.milestone.closed_issues,created_at:this.format?await _(e.milestone.created_at):e.milestone.created_at,updated_at:this.format?await _(e.milestone.updated_at):e.milestone.updated_at,closed_at:e.milestone.closed_at?this.format?await _(e.milestone.closed_at):e.milestone.closed_at:null,due_on:e.milestone.due_on?this.format?await _(e.milestone.due_on):e.milestone.due_on:null},created_at:this.format?await _(o.data.created_at):o.data.created_at,updated_at:this.format?await _(o.data.updated_at):o.data.updated_at,closed_at:o.data.closed_at?this.format?await _(o.data.closed_at):o.data.closed_at:null})));o.data=e}return o}catch(e){throw Error(`[GitHub] 获取仓库的议题列表失败: ${e.message}`)}}async create_issue(e){if(!e.owner||!e.repo)throw Error(p);if(!e.title)throw Error(f);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,...r}=e,i={...r,...r.labels&&{labels:Array.isArray(r.labels)?r.labels:[r.labels]},...r.assignees&&{assignees:Array.isArray(r.assignees)?r.assignees:[r.assignees]}},a=await this.post(`/repos/${t}/${n}/issues`,i);switch(a.statusCode){case 403:throw Error(h);case 301:throw Error(g)}if(a.data&&a.data){let[e,t,n,r,i,o,s]=await Promise.all([this.format?_(a.data.created_at):a.data.created_at,this.format?_(a.data.updated_at):a.data.updated_at,v(a.data.closed_at)?null:this.format?await _(a.data.closed_at):a.data.closed_at,v(a.data.milestone)?null:this.format?await _(a.data.milestone.created_at):a.data.milestone.created_at,v(a.data.milestone)?null:this.format?await _(a.data.milestone.updated_at):a.data.milestone.updated_at,v(a.data.milestone)?null:this.format?await _(a.data.milestone.closed_at):a.data.milestone.closed_at,v(a.data.milestone)?null:this.format?await _(a.data.milestone.due_on):a.data.milestone.due_on]),c={id:a.data.id,html_url:a.data.html_url,number:a.data.number,state:a.data.state,title:a.data.title,body:a.data.body,user:{id:a.data.user.id,login:a.data.user.login,name:v(a.data.user.name)?null:a.data.user.name,email:v(a.data.user.email)?null:a.data.user.email,html_url:a.data.user.html_url,avatar_url:a.data.user.avatar_url},labels:v(a.data.labels)?null:a.data.labels.map(e=>({id:e.id,name:e.name,color:e.color})),assignee:v(a.data.assignee)?null:{id:a.data.assignee.id,login:a.data.assignee.login,name:v(a.data.assignee.name)?null:a.data.assignee.name,email:v(a.data.assignee.email)?null:a.data.assignee.email,html_url:a.data.assignee.html_url,avatar_url:a.data.assignee.avatar_url},assignees:v(a.data.assignees)?null:a.data.assignees.map(e=>({id:e.id,login:e.login,name:v(e.name)?null:e.name,email:v(e.email)?null:e.email,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:v(a.data.milestone)?null:{id:a.data.milestone.id,url:a.data.milestone.url,number:a.data.milestone.number,state:a.data.milestone.state,title:a.data.milestone.title,description:a.data.milestone.description,open_issues:a.data.milestone.open_issues,closed_issues:a.data.milestone.closed_issues,created_at:r,updated_at:i,closed_at:o,due_on:s},created_at:e,updated_at:t,closed_at:n};a.data=c}return a}catch(e){throw Error(`[GitHub]创建议题失败: ${e.message}`)}}async update_issue(e){if(!e.owner||!e.repo)throw Error(p);if(!e.issue_number)throw Error(d);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,issue_number:r,...i}=e,a={...i,...i.labels&&{labels:Array.isArray(i.labels)?i.labels:[i.labels]},...i.assignees&&{assignees:Array.isArray(i.assignees)?i.assignees:[i.assignees]}},o=await this.patch(`/repos/${t}/${n}/issues/${Number(r)}`,null,a);switch(o.statusCode){case 404:throw Error(s);case 403:throw Error(h);case 301:throw Error(g)}if(o.data&&o.data){let[e,t,n,r,i,a,s]=await Promise.all([this.format?_(o.data.created_at):o.data.created_at,this.format?_(o.data.updated_at):o.data.updated_at,v(o.data.closed_at)?null:this.format?await _(o.data.closed_at):o.data.closed_at,v(o.data.milestone)?null:this.format?await _(o.data.milestone.created_at):o.data.milestone.created_at,v(o.data.milestone)?null:this.format?await _(o.data.milestone.updated_at):o.data.milestone.updated_at,v(o.data.milestone)?null:this.format?await _(o.data.milestone.closed_at):o.data.milestone.closed_at,v(o.data.milestone)?null:this.format?await _(o.data.milestone.due_on):o.data.milestone.due_on]),c={id:o.data.id,html_url:o.data.html_url,number:o.data.number,state:o.data.state,title:o.data.title,body:o.data.body,user:{id:o.data.user.id,login:o.data.user.login,name:v(o.data.user.name)?null:o.data.user.name,email:v(o.data.user.email)?null:o.data.user.email,html_url:o.data.user.html_url,avatar_url:o.data.user.avatar_url},labels:v(o.data.labels)?null:o.data.labels.map(e=>({id:e.id,name:e.name,color:e.color})),assignee:v(o.data.assignee)?null:{id:o.data.assignee.id,login:o.data.assignee.login,name:v(o.data.assignee.name)?null:o.data.assignee.name,email:v(o.data.assignee.email)?null:o.data.assignee,html_url:o.data.assignee.html_url,avatar_url:o.data.assignee.avatar_url},assignees:v(o.data.assignees)?null:o.data.assignees.map(e=>({id:e.id,login:e.login,name:v(e.name)?null:e.name,email:v(e.email)?null:e.email,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:v(o.data.milestone)?null:{id:o.data.milestone.id,url:o.data.milestone.url,number:o.data.milestone.number,state:o.data.milestone.state,title:o.data.milestone.title,description:o.data.milestone.description,open_issues:o.data.milestone.open_issues,closed_issues:o.data.milestone.closed_issues,created_at:r,updated_at:i,closed_at:a,due_on:s},created_at:e,updated_at:t,closed_at:n};o.data=c}return o}catch(e){throw Error(`[GitHub] 更新议题失败: ${e.message}`)}}async open_issue(e){if(!e.owner||!e.repo)throw Error(p);if(!e.issue_number)throw Error(d);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,issue_number:r}=e,i=await this.patch(`/repos/${t}/${n}/issues/${r}`,null,{state:`open`});switch(i.statusCode){case 404:throw Error(s);case 403:throw Error(h);case 301:throw Error(g)}if(i.data&&i.data){let[e,t,n,r,a,o,s]=await Promise.all([this.format?_(i.data.created_at):i.data.created_at,this.format?_(i.data.updated_at):i.data.updated_at,v(i.data.closed_at)?null:this.format?await _(i.data.closed_at):i.data.closed_at,v(i.data.milestone)?null:this.format?await _(i.data.milestone.created_at):i.data.milestone.created_at,v(i.data.milestone)?null:this.format?await _(i.data.milestone.updated_at):i.data.milestone.updated_at,v(i.data.milestone)?null:this.format?await _(i.data.milestone.closed_at):i.data.milestone.closed_at,v(i.data.milestone)?null:this.format?await _(i.data.milestone.due_on):i.data.milestone.due_on]),c={id:i.data.id,html_url:i.data.html_url,number:i.data.number,state:i.data.state,title:i.data.title,body:i.data.body,user:{id:i.data.user.id,login:i.data.user.login,name:v(i.data.user.name)?null:i.data.user.name,email:v(i.data.user.email)?null:i.data.user.email,html_url:i.data.user.html_url,avatar_url:i.data.user.avatar_url},labels:v(i.data.labels)?null:i.data.labels.map(e=>({id:e.id,name:e.name,color:e.color})),assignee:v(i.data.assignee)?null:{id:i.data.assignee.id,login:i.data.assignee.login,name:v(i.data.assignee.name)?null:i.data.assignee.name,email:v(i.data.assignee.email)?null:i.data.assignee.email,html_url:i.data.assignee.html_url,avatar_url:i.data.assignee.avatar_url},assignees:v(i.data.assignees)?null:i.data.assignees.map(e=>({id:e.id,login:e.login,name:v(e.name)?null:e.name,email:v(e.email)?null:e.email,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:v(i.data.milestone)?null:{id:i.data.milestone.id,url:i.data.milestone.url,number:i.data.milestone.number,state:i.data.milestone.state,title:i.data.milestone.title,description:i.data.milestone.description,open_issues:i.data.milestone.open_issues,closed_issues:i.data.milestone.closed_issues,created_at:r,updated_at:a,closed_at:o,due_on:s},created_at:e,updated_at:t,closed_at:n};i.data=c}return i}catch(e){throw Error(`[GitHub] 打开议题失败: ${e.message}`)}}async reopen_issue(e){return this.open_issue(e)}async close_issue(e){if(!e.owner||!e.repo)throw Error(p);if(!e.issue_number)throw Error(d);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,issue_number:r}=e,i=await this.patch(`/repos/${t}/${n}/issues/${r}`,null,{state:`closed`});switch(i.statusCode){case 404:throw Error(s);case 403:throw Error(h);case 301:throw Error(g)}if(i.data){let[e,t,n,r,a,o,s]=await Promise.all([this.format?_(i.data.created_at):i.data.created_at,this.format?_(i.data.updated_at):i.data.updated_at,v(i.data.closed_at)?null:this.format?await _(i.data.closed_at):i.data.closed_at,v(i.data.milestone)?null:this.format?await _(i.data.milestone.created_at):i.data.milestone.created_at,v(i.data.milestone)?null:this.format?await _(i.data.milestone.updated_at):i.data.milestone.updated_at,v(i.data.milestone)?null:this.format?await _(i.data.milestone.closed_at):i.data.milestone.closed_at,v(i.data.milestone)?null:this.format?await _(i.data.milestone.due_on):i.data.milestone.due_on]),c={id:i.data.id,html_url:i.data.html_url,number:i.data.number,state:i.data.state,title:i.data.title,body:i.data.body,user:{id:i.data.user.id,login:i.data.user.login,name:v(i.data.user.name)?null:i.data.user.name,email:v(i.data.user.email)?null:i.data.user.email,html_url:i.data.user.html_url,avatar_url:i.data.user.avatar_url},labels:v(i.data.labels)?null:i.data.labels.map(e=>({id:e.id,name:e.name,color:e.color})),assignee:v(i.data.assignee)?null:{id:i.data.assignee.id,login:i.data.assignee.login,name:v(i.data.assignee.name)?null:i.data.assignee.name,email:v(i.data.assignee.email)?null:i.data.assignee.email,html_url:i.data.assignee.html_url,avatar_url:i.data.assignee.avatar_url},assignees:v(i.data.assignees)?null:i.data.assignees.map(e=>({id:e.id,login:e.login,name:v(e.name)?null:e.name,email:v(e.email)?null:e.email,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:v(i.data.milestone)?null:{id:i.data.milestone.id,url:i.data.milestone.url,number:i.data.milestone.number,state:i.data.milestone.state,title:i.data.milestone.title,description:i.data.milestone.description,open_issues:i.data.milestone.open_issues,closed_issues:i.data.milestone.closed_issues,created_at:r,updated_at:a,closed_at:o,due_on:s},created_at:e,updated_at:t,closed_at:n};i.data=c}return i}catch(e){throw Error(`[GitHub] 关闭议题失败: ${e.message}`)}}async lock_issue(t){if(!t.owner||!t.repo)throw Error(p);if(!t.issue_number)throw Error(d);try{this.setRequestConfig({token:this.userToken});let{owner:n,repo:r,issue_number:i,lock_reason:a}=t,o=await this.put(`/repos/${n}/${r}/issues/${Number(i)}`,{locked:!0,lock_reason:a});switch(o.statusCode){case 404:throw Error(s);case 403:throw Error(h);case 301:throw Error(g)}let l;return l=o.statusCode===204?{success:!0,message:c}:{success:!1,message:e},o.data=l,o}catch(e){throw Error(`[GitHub] 锁定议题失败: ${e.message}`)}}async unlock_issue(e){if(!e.owner||!e.repo)throw Error(p);if(!e.issue_number)throw Error(d);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:r,issue_number:i}=e,a=await this.delete(`/repos/${t}/${r}/issues/${i}/lock`);switch(a.statusCode){case 404:throw Error(s);case 403:throw Error(h);case 301:throw Error(g)}let o;return o=a.statusCode===204?{success:!0,message:c}:{success:!1,message:n},a.data=o,a}catch(e){throw Error(`[GitHub] 解锁议题失败: ${e.message}`)}}async get_repo_comments_list(e){if(!e.owner||!e.repo)throw Error(p);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,...r}=e,a={};r.sort&&(a.sort=r.sort),r.direction&&r.direction&&(a.direction=r.direction),r.since&&(a.since=r.since),r.per_page&&(a.per_page=r.per_page.toString()),r.page&&(a.page=r.page.toString());let o=`/repos/${t}/${n}/issues/comments/`,s=await this.get(o,a);if(s.statusCode===404)throw Error(i);if(s.data){let e=await Promise.all(s.data.map(async e=>({id:e.id,html_url:e.html_url,body:e.body,user:{id:e.user.id,login:e.user.login,name:v(e.user.name)?null:e.user.name,email:v(e.user.email)?null:e.user.email,html_url:e.user.html_url,avatar_url:e.user.avatar_url},created_at:this.format?await _(e.created_at):e.created_at,updated_at:this.format?await _(e.updated_at):e.updated_at})));s.data=e}return s}catch(e){throw Error(`[GitHub] 获取仓库评论列表失败: ${e.message}`)}}async get_issue_comments_list(e){if(!e.owner||!e.repo)throw Error(p);if(!e.issue_number)throw Error(d);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,issue_number:r,...a}=e,o={};a.since&&(o.since=a.since),a.per_page&&(o.per_page=a.per_page.toString()),a.page&&(o.page=a.page.toString());let s=`/repos/${t}/${n}/issues/${Number(r)}/comments`,c=await this.get(s,o);if(c.statusCode===404)throw Error(i);if(c.data){let e=await Promise.all(c.data.map(async e=>({id:e.id,html_url:e.html_url,body:e.body,user:{id:e.user.id,login:e.user.login,name:v(e.user.name)?null:e.user.name,email:v(e.user.email)?null:e.user.email,html_url:e.user.html_url,avatar_url:e.user.avatar_url},created_at:this.format?await _(e.created_at):e.created_at,updated_at:this.format?await _(e.updated_at):e.updated_at})));c.data=e}return c}catch(e){throw Error(`[GitHub] 获取议题评论列表失败: ${e.message}`)}}async get_issue_comment_info(e){if(!e.owner||!e.repo)throw Error(p);if(!e.comment_id)throw Error(u);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,comment_id:r}=e,a=await this.get(`/repos/${t}/${n}/issues/comments/${Number(r)}`);if(a.statusCode===404)throw Error(i);if(a.data){let[e,t]=await Promise.all([this.format?await _(a.data.created_at):a.data.created_at,this.format?await _(a.data.updated_at):a.data.updated_at]),n={id:a.data.id,html_url:a.data.html_url,body:a.data.body,user:{id:a.data.user.id,login:a.data.user.login,name:v(a.data.user.name)?null:a.data.user.name,email:v(a.data.user.email)?null:a.data.user.email,html_url:a.data.user.html_url,avatar_url:a.data.user.avatar_url},created_at:e,updated_at:t};a.data=n}return a}catch(e){throw Error(`[GitHub] 获取议题评论信息失败: ${e.message}`)}}async create_issue_comment(e){if(!e.owner||!e.repo)throw Error(p);if(!e.issue_number)throw Error(i);if(!e.body)throw Error(l);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,issue_number:r,body:a}=e,o=await this.post(`/repos/${t}/${n}/issues/${Number(r)}/comments`,{body:a});if(o.statusCode===404)throw Error(i);if(o.data){let[e,i]=await Promise.all([this.format?await _(o.data.created_at):o.data.created_at,this.format?await _(o.data.updated_at):o.data.updated_at]),a={id:o.data.id,html_url:`${this.base_url}/${t}/${n}/issues/${r}#${o.data.id}`,body:o.data.body,user:{id:o.data.user.id,login:o.data.user.login,name:v(o.data.user.name)?null:o.data.user.name,email:v(o.data.user.email)?null:o.data.user.email,html_url:o.data.user.html_url,avatar_url:o.data.user.avatar_url},created_at:e,updated_at:i};o.data=a}return o}catch(e){throw Error(`[GitHub] 创建议题评论失败: ${e.message}`)}}async update_issue_comment(e){if(!e.owner||!e.repo)throw Error(p);if(!e.comment_id)throw Error(u);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,comment_id:r,...a}=e,o=await this.patch(`/repos/${t}/${n}/issues/comments/${Number(r)}`,null,a);if(o.statusCode===404)throw Error(i);if(o.data){let[e,t]=await Promise.all([this.format?await _(o.data.created_at):o.data.created_at,this.format?await _(o.data.updated_at):o.data.updated_at]),n={id:o.data.id,html_url:o.data.html_url,body:o.data.body,user:{id:o.data.user.id,login:o.data.user.login,name:v(o.data.user.name)?null:o.data.user.name,email:v(o.data.user.email)?null:o.data.user.email,html_url:o.data.user.html_url,avatar_url:o.data.user.avatar_url},created_at:e,updated_at:t};o.data=n}return o}catch(e){throw Error(`[GitHub] 更新议题评论信息失败: ${e.message}`)}}async remove_issue_comment(e){if(!e.owner||!e.repo)throw Error(p);if(!e.comment_id)throw Error(u);try{this.setRequestConfig({token:this.userToken});let{owner:n,repo:r,comment_id:o}=e,s=await this.delete(`/repos/${n}/${r}/issues/comments/${Number(o)}`);if(s.statusCode===404)throw Error(i);let c;return c=s.statusCode===204?{success:!0,message:a}:{success:!1,message:t},s.data=c,s}catch(e){throw Error(`[GitHub] 删除议题评论信息失败: ${e.message}`)}}async delete_issue_comment(e){return this.remove_issue_comment(e)}async get_sub_issue_list(e){if(!e.owner||!e.repo)throw Error(p);if(!e.issue_number)throw Error(i);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,issue_number:r,...i}=e,a={};i.per_page&&(a.per_page=i.per_page.toString()),i.page&&(a.page=i.page.toString());let o=`/repos/${t}/${n}/issues/${Number(r)}/sub_issues`,c=await this.get(o,a);if(c.statusCode===404)throw Error(s);if(c.data){let e=await Promise.all(c.data.map(async e=>({id:e.id,html_url:e.html_url,number:e.number,state:e.state,title:e.title,body:e.body,user:{id:e.user.id,login:e.user.login,name:v(c.data.user.name)?null:c.data.user.name,email:v(c.data.user.email)?null:c.data.user.email,html_url:e.user.html_url,avatar_url:e.user.avatar_url},labels:v(e.labels)?null:e.labels.map(e=>({id:e.id,name:e.name,color:e.color})),assignee:v(e.assignee)?null:{id:e.assignee.id,login:e.assignee.login,name:v(c.data.assignee.name)?null:c.data.assignee.name,email:v(c.data.assignee.email)?null:c.data.assignee.email,html_url:e.assignee.html_url,avatar_url:e.assignee.avatar_url},assignees:v(e.assignees)?null:e.assignees.map(e=>({id:e.id,login:e.login,name:v(e.name)?null:e.name,email:v(e.email)?null:e.email,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:v(e.milestone)?null:{id:e.milestone.id,url:e.milestone.url,number:e.milestone.number,state:e.milestone.state,title:e.milestone.title,description:e.milestone.description,open_issues:e.milestone.open_issues,closed_issues:e.milestone.closed_issues,created_at:this.format?await _(e.milestone.created_at):e.milestone.created_at,updated_at:this.format?await _(e.milestone.updated_at):e.milestone.updated_at,closed_at:e.milestone.closed_at?this.format?await _(e.milestone.closed_at):e.milestone.closed_at:null,due_on:e.milestone.due_on?this.format?await _(e.milestone.due_on):e.milestone.due_on:null},created_at:this.format?await _(e.created_at):e.created_at,updated_at:this.format?await _(e.updated_at):e.updated_at,closed_at:v(e.closed_at)?null:this.format?await _(e.closed_at):e.closed_at})));c.data=e}return c}catch(e){throw Error(`[GitHub] 获取子议题列表失败: ${e.message}`)}}async create_sub_issue(e){if(!e.owner||!e.repo)throw Error(p);if(!e.issue_number)throw Error(i);if(!e.sub_issue_id)throw Error(m);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,issue_number:r,sub_issue_id:i,replace_parent:a}=e,o=await this.post(`/repos/${t}/${n}/issues/${r}/sub_issues`,{sub_issue_id:i,replace_parent:a});if(o.statusCode===404)throw Error(s);if(o.data){let[e,t,n,r,i,a,s]=await Promise.all([this.format?_(o.data.created_at):o.data.created_at,this.format?_(o.data.updated_at):o.data.updated_at,v(o.data.closed_at)?null:this.format?await _(o.data.closed_at):o.data.closed_at,v(o.data.milestone)?null:this.format?await _(o.data.milestone.created_at):o.data.milestone.created_at,v(o.data.milestone)?null:this.format?await _(o.data.milestone.updated_at):o.data.milestone.updated_at,v(o.data.milestone)?null:this.format?await _(o.data.milestone.closed_at):o.data.milestone.closed_at,v(o.data.milestone)?null:this.format?await _(o.data.milestone.due_on):o.data.milestone.due_on]),c={id:o.data.id,html_url:o.data.html_url,number:o.data.number,state:o.data.state,title:o.data.title,body:o.data.body,user:{id:o.data.user.id,login:o.data.user.login,name:v(o.data.user.name)?null:o.data.user.name,email:v(o.data.user.email)?null:o.data.user.email,html_url:o.data.user.html_url,avatar_url:o.data.user.avatar_url},labels:v(o.data.labels)?null:o.data.labels.map(e=>({id:e.id,name:e.name,color:e.color})),assignee:v(o.data.assignee)?null:{id:o.data.assignee.id,login:o.data.assignee.login,name:v(o.data.assignee.name)?null:o.data.assignee.name,email:v(o.data.assignee.email)?null:o.data.assignee.email,html_url:o.data.assignee.html_url,avatar_url:o.data.assignee.avatar_url},assignees:v(o.data.assignees)?null:o.data.assignees.map(e=>({id:e.id,login:e.login,name:v(e.name)?null:e.name,email:v(e.email)?null:e.email,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:v(o.data.milestone)?null:{id:o.data.milestone.id,url:o.data.milestone.url,number:o.data.milestone.number,state:o.data.milestone.state,title:o.data.milestone.title,description:o.data.milestone.description,open_issues:o.data.milestone.open_issues,closed_issues:o.data.milestone.closed_issues,created_at:r,updated_at:i,closed_at:a,due_on:s},created_at:e,updated_at:t,closed_at:n};o.data=c}return o}catch(e){throw Error(`[GitHub] 添加子议题失败: ${e.message}`)}}async add_sub_issue(e){return await this.create_sub_issue(e)}async remove_sub_issue(e){if(!e.owner||!e.repo)throw Error(p);if(!e.issue_number)throw Error(i);if(!e.sub_issue_id)throw Error(m);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,issue_number:r,sub_issue_id:i}=e,a=await this.delete(`/repos/${t}/${n}/issues/${r}/sub_issue`,null,{sub_issue_id:i});if(a.statusCode===404)throw Error(s);if(a.data){let[e,t,n,r,i,o,s]=await Promise.all([this.format?_(a.data.created_at):a.data.created_at,this.format?_(a.data.updated_at):a.data.updated_at,v(a.data.closed_at)?null:this.format?await _(a.data.closed_at):a.data.closed_at,v(a.data.milestone)?null:this.format?await _(a.data.milestone.created_at):a.data.milestone.created_at,v(a.data.milestone)?null:this.format?await _(a.data.milestone.updated_at):a.data.milestone.updated_at,v(a.data.milestone)?null:this.format?await _(a.data.milestone.closed_at):a.data.milestone.closed_at,v(a.data.milestone)?null:this.format?await _(a.data.milestone.due_on):a.data.milestone.due_on]),c={id:a.data.id,html_url:a.data.html_url,number:a.data.number,state:a.data.state,title:a.data.title,body:a.data.body,user:{id:a.data.user.id,login:a.data.user.login,name:v(a.data.user.name)?null:a.data.user.name,email:v(a.data.user.email)?null:a.data.user.email,html_url:a.data.user.html_url,avatar_url:a.data.user.avatar_url},labels:v(a.data.labels)?null:a.data.labels.map(e=>({id:e.id,name:e.name,color:e.color})),assignee:v(a.data.assignee)?null:{id:a.data.assignee.id,login:a.data.assignee.login,name:v(a.data.assignee.name)?null:a.data.assignee.name,email:v(a.data.assignee.email)?null:a.data.assignee.email,html_url:a.data.assignee.html_url,avatar_url:a.data.assignee.avatar_url},assignees:v(a.data.assignees)?null:a.data.assignees.map(e=>({id:e.id,login:e.login,name:v(e.name)?null:e.name,email:v(e.email)?null:e.email,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:v(a.data.milestone)?null:{id:a.data.milestone.id,url:a.data.milestone.url,number:a.data.milestone.number,state:a.data.milestone.state,title:a.data.milestone.title,description:a.data.milestone.description,open_issues:a.data.milestone.open_issues,closed_issues:a.data.milestone.closed_issues,created_at:r,updated_at:i,closed_at:o,due_on:s},created_at:e,updated_at:t,closed_at:n};a.data=c}return a}catch(e){throw Error(`[GitHub] 删除子议题失败: ${e.message}`)}}async delete_sub_issue(e){return this.remove_sub_issue(e)}async reprioritize_sub_issue(e){if(!e.owner||!e.repo)throw Error(p);if(!e.issue_number)throw Error(i);if(!e.sub_issue_id)throw Error(m);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,issue_number:r,sub_issue_id:i,...a}=e,o={};a.before_id&&!a.after_id&&(o.before_id=a.before_id.toString()),a.after_id&&!a.before_id&&(o.after_id=a.after_id.toString());let c=`/repos/${t}/${n}/issues/${r}/sub_issues/priority`,l=await this.patch(c,o,{sub_issue_id:String(i)});if(l.statusCode===404)throw Error(s);if(l.data){let[e,t,n,r,i,a,o]=await Promise.all([this.format?_(l.data.created_at):l.data.created_at,this.format?_(l.data.updated_at):l.data.updated_at,v(l.data.closed_at)?null:this.format?await _(l.data.closed_at):l.data.closed_at,v(l.data.milestone)?null:this.format?await _(l.data.milestone.created_at):l.data.milestone.created_at,v(l.data.milestone)?null:this.format?await _(l.data.milestone.updated_at):l.data.milestone.updated_at,v(l.data.milestone)?null:this.format?await _(l.data.milestone.closed_at):l.data.milestone.closed_at,v(l.data.milestone)?null:this.format?await _(l.data.milestone.due_on):l.data.milestone.due_on]),s={id:l.data.id,html_url:l.data.html_url,number:l.data.number,state:l.data.state,title:l.data.title,body:l.data.body,user:{id:l.data.user.id,login:l.data.user.login,name:v(l.data.user.name)?null:l.data.user.name,email:v(l.data.user.email)?null:l.data.user.email,html_url:l.data.user.html_url,avatar_url:l.data.user.avatar_url},labels:v(l.data.labels)?null:l.data.labels.map(e=>({id:e.id,name:e.name,color:e.color})),assignee:v(l.data.assignee)?null:{id:l.data.assignee.id,login:l.data.assignee.login,name:v(l.data.assignee.name)?null:l.data.assignee.name,email:v(l.data.assignee.email)?null:l.data.assignee.email,html_url:l.data.assignee.html_url,avatar_url:l.data.assignee.avatar_url},assignees:v(l.data.assignees)?null:l.data.assignees.map(e=>({id:e.id,login:e.login,name:v(e.name)?null:e.name,email:v(e.email)?null:e.email,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:v(l.data.milestone)?null:{id:l.data.milestone.id,url:l.data.milestone.url,number:l.data.milestone.number,state:l.data.milestone.state,title:l.data.milestone.title,description:l.data.milestone.description,open_issues:l.data.milestone.open_issues,closed_issues:l.data.milestone.closed_issues,created_at:r,updated_at:i,closed_at:a,due_on:o},created_at:e,updated_at:t,closed_at:n};l.data=s}return l}catch(e){throw Error(`[GitHub] 重新排序子议题失败: ${e.message}`)}}};export{y as Issue};