UNPKG

@candriajs/git-neko-kit

Version:

Github, Gitee, GitCode API封装库

1 lines 18.6 kB
import{ConflictPullRequestShaValueMsg as e,GitHubClient as t,MissingBaseBranchMsg as n,MissingHeadBranchMsg as r,MissingLinkedIssueIdentifierMsg as i,MissingLinkedIssueMsg as a,MissingPullRequestCommentBodyMsg as o,MissingPullRequestCommentNumberMsg as s,MissingPullRequestNumberMsg as c,MissingRepoOwnerOrNameMsg as l,MissingTitleMsg as u,PermissionDeniedMsg as d,PullRequestCommentOrRepoNotFoundMsg as f,PullRequestCommentRemoveFailedMsg as p,PullRequestCommentRemoveSuccessMsg as m,PullRequestCommentUpdateFailedMsg as h,PullRequestCommentUpdateSuccessMsg as g,PullRequestMergeMethodNotSupportedMsg as _,PullRequestOrRepoNotFoundMsg as v,format_date as y}from"./client-sGV7POG-.mjs";import{isEmpty as b}from"radash";var x=class extends t{constructor(e){super(e),this.userToken=e.userToken,this.api_url=e.api_url,this.base_url=e.base_url}async get_pull_request_info(e){if(!(e.owner||e.repo))throw Error(l);if(!e.pr_number)throw Error(c);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,pr_number:r}=e,i=await this.get(`/repos/${t}/${n}/pulls/${r}`);if(i.data){let[e,t,n,r,a,o,s,c]=await Promise.all([this.format?y(i.data.created_at):i.data.created_at,b(i.data.merged_at)?null:this.format?await y(i.data.merged_at):i.data.merged_at,this.format?await y(i.data.updated_at):i.data.updated_at,b(i.data.closed_at)?null:this.format?await y(i.data.closed_at):i.data.closed_at,b(i.data.milestone)?null:this.format?await y(i.data.milestone.created_at):i.data.milestone.created_at,b(i.data.milestone)?null:this.format?await y(i.data.milestone.updated_at):i.data.milestone.updated_at,b(i.data.milestone)?null:this.format?await y(i.data.milestone.closed_at):i.data.milestone.closed_at,b(i.data.milestone)?null:this.format?await y(i.data.milestone.due_on):i.data.milestone.due_on]),l={id:i.data.id,html_url:i.data.html_url,number:i.data.number,state:i.data.merged_at&&!b(i.data.merged_at)?`merged`:i.data.state,locked:i.data.locked,title:i.data.title,body:i.data.body,draft:i.data.draft,created_at:e,merged_at:t,updated_at:n,closed_at:r,user:{id:i.data.user.id,login:i.data.user.login,name:b(i.data.user.name)?null:i.data.user.name,html_url:i.data.user.html_url,avatar_url:i.data.user.avatar_url},base:{label:i.data.base.label,ref:i.data.base.ref,sha:i.data.base.sha,user:{id:i.data.base.user.id,login:i.data.base.user.login,name:b(i.data.base.user.name)?null:i.data.base.user.name,html_url:i.data.base.user.html_url,avatar_url:i.data.base.user.avatar_url},repo:{id:i.data.base.repo.id,owner:i.data.base.repo.owner,name:i.data.base.repo.name,full_name:i.data.base.repo.full_name}},head:{label:i.data.head.label,ref:i.data.head.ref,sha:i.data.head.sha,user:{id:i.data.head.user.id,login:i.data.head.user.login,name:b(i.data.head.user.name)?null:i.data.head.user.name,html_url:i.data.head.user.html_url,avatar_url:i.data.head.user.avatar_url},repo:{id:i.data.head.repo.id,owner:i.data.head.repo.owner,name:i.data.head.repo.name,full_name:i.data.head.repo.full_name}},assignee:b(i.data.assignee)?null:{id:i.data.assignee.id,login:i.data.assignee.login,name:b(i.data.assignee.name)?null:i.data.assignee.name,html_url:i.data.assignee.html_url,avatar_url:i.data.assignee.avatar_url},assignees:b(i.data.assignees)?null:i.data.assignees.map(e=>({id:e.id,login:e.login,name:b(e.name)?null:e.name,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:b(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:a,updated_at:o,closed_at:s,due_on:c},labels:b(i.data.labels)?null:i.data.labels.map(e=>({id:e.id,name:e.name,color:e.color})),commits:i.data.commits,additions:i.data.additions,deletions:i.data.deletions,changed_files:i.data.changed_files};i.data=l}return i}catch(e){throw Error(`[GitHub] 获取拉取请求信息失败: ${e.message}`)}}async get_get_pull_request_list(e){if(!(e.owner||e.repo))throw Error(l);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,...r}=e,i={};r.state&&(i.state=r.state),r.base&&(i.base=r.base),r.sort&&(i.sort=r.sort),r.direction&&!r.sort&&(i.direction=r.direction),r.per_page&&(i.per_page=r.per_page.toString()),r.page&&(i.page=r.page.toString());let a=await this.get(`/repos/${t}/${n}/pulls`,i);if(a.data){let e=await Promise.all(a.data.map(async e=>({id:e.id,html_url:e.html_url,number:e.number,state:b(e.merged_at)?e.state:`merged`,locked:e.locked,title:e.title,body:e.body,draft:e.draft,created_at:this.format?y(e.created_at):e.created_at,merged_at:b(e.merged_at)?null:this.format?await y(e.merged_at):e.merged_at,updated_at:this.format?y(e.updated_at):e.updated_at,closed_at:b(e.closed_at)?null:this.format?await y(e.closed_at):e.closed_at,user:{id:e.user.id,login:e.user.login,name:b(e.user.name)?null:e.user.name,html_url:e.user.html_url,avatar_url:e.user.avatar_url},base:{label:e.base.label,ref:e.base.ref,sha:e.base.sha,user:{id:e.base.user.id,login:e.base.user.login,name:b(e.base.user.name)?e.base.user.login:e.base.user.name,html_url:e.base.user.html_url,avatar_url:e.base.user.avatar_url},repo:{id:e.base.repo.id,owner:e.base.repo.owner,name:e.base.repo.name,full_name:e.base.repo.full_name}},head:{label:e.head.label,ref:e.head.ref,sha:e.head.sha,user:{id:e.head.user.id,login:e.head.user.login,name:b(e.head.user.name)?null:e.head.user.name,html_url:e.head.user.html_url,avatar_url:e.head.user.avatar_url},repo:{id:e.head.repo.id,owner:e.head.repo.owner,name:e.head.repo.name,full_name:e.head.repo.full_name}},assignee:b(e.assignee)?null:{id:e.assignee.id,name:e.assignee.name,login:e.assignee.login,html_url:e.assignee.html_url,avatar_url:e.assignee.avatar_url},assignees:b(e.assignees)?null:e.assignees.map(e=>({id:e.id,name:e.name,login:e.login,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:b(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 y(e.milestone.created_at):e.milestone.created_at,updated_at:this.format?await y(e.milestone.updated_at):e.milestone.updated_at,closed_at:e.milestone.closed_at?this.format?await y(e.milestone.closed_at):e.milestone.closed_at:null,due_on:e.milestone.due_on?this.format?await y(e.milestone.due_on):e.milestone.due_on:null},labels:b(e.labels)?null:e.labels.map(e=>({id:e.id,name:e.name,color:e.color})),commits:e.commits,additions:e.additions,deletions:e.deletions,changed_files:e.changed_files})));a.data=e}return a}catch(e){throw Error(`[GitHub] 获取拉取请求列表失败: ${e.message}`)}}async create_pull_request(e){if(!(e.owner||e.repo))throw Error(l);if(!e.head)throw Error(r);if(!e.base)throw Error(n);if(!(`issue`in e)&&!(`title`in e))throw Error(i);try{this.setRequestConfig({token:this.userToken});let t={};if(`issue`in e){if(!e.issue)throw Error(a);t.issue=e.issue}else if(`title`in e){if(!e.title)throw Error(u);t.title=e.title,e.body&&(t.body=e.body)}e.head&&(t.head=e.head),e.head_repo&&(t.head_repo=e.head_repo),e.base&&(t.base=e.base),e.draft&&(t.draft=e.draft);let{owner:n,repo:r}=e,i=await this.post(`/repos/${n}/${r}/pulls`,t);if(i.statusCode===403)throw Error(d);if(i.data){let[e,t,n,r,a,o,s,c]=await Promise.all([this.format?y(i.data.created_at):i.data.created_at,b(i.data.merged_at)?null:this.format?await y(i.data.merged_at):i.data.merged_at,this.format?await y(i.data.updated_at):i.data.updated_at,b(i.data.closed_at)?null:this.format?await y(i.data.closed_at):i.data.closed_at,b(i.data.milestone)?null:this.format?await y(i.data.milestone.created_at):i.data.milestone.created_at,b(i.data.milestone)?null:this.format?await y(i.data.milestone.updated_at):i.data.milestone.updated_at,b(i.data.milestone)?null:this.format?await y(i.data.milestone.closed_at):i.data.milestone.closed_at,b(i.data.milestone)?null:this.format?await y(i.data.milestone.due_on):i.data.milestone.due_on]),l={id:i.data.id,html_url:i.data.html_url,number:i.data.number,state:b(i.data.merged_at)?i.data.state:`merged`,locked:i.data.locked,title:i.data.title,body:i.data.body,draft:i.data.draft,created_at:e,merged_at:t,updated_at:n,closed_at:r,user:{id:i.data.user.id,login:i.data.user.login,name:b(i.data.user.name)?null:i.data.user.name,html_url:i.data.user.html_url,avatar_url:i.data.user.avatar_url},base:{label:i.data.base.label,ref:i.data.base.ref,sha:i.data.base.sha,user:{id:i.data.base.user.id,login:i.data.base.user.login,name:b(i.data.base.user.name)?null:i.data.base.user.name,html_url:i.data.base.user.html_url,avatar_url:i.data.base.user.avatar_url},repo:{id:i.data.base.repo.id,owner:i.data.base.repo.owner,name:i.data.base.repo.name,full_name:i.data.base.repo.full_name}},head:{label:i.data.head.label,ref:i.data.head.ref,sha:i.data.head.sha,user:{id:i.data.head.user.id,login:i.data.head.user.login,name:b(i.data.head.user.name)?null:i.data.head.user.name,html_url:i.data.head.user.html_url,avatar_url:i.data.head.user.avatar_url},repo:{id:i.data.head.repo.id,owner:i.data.head.repo.owner,name:i.data.head.repo.name,full_name:i.data.head.repo.full_name}},assignee:b(i.data.assignee)?null:{id:i.data.assignee.id,login:i.data.assignee.login,name:b(i.data.assignee.name)?null:i.data.assignee.name,html_url:i.data.assignee.html_url,avatar_url:i.data.assignee.avatar_url},assignees:b(i.data.assignees)?null:i.data.assignees.map(e=>({id:e.id,login:e.login,name:b(e.name)?null:e.name,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:b(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:a,updated_at:o,closed_at:s,due_on:c},labels:b(i.data.labels)?null:i.data.labels.map(e=>({id:e.id,name:e.name,color:e.color})),commits:i.data.commits,additions:i.data.additions,deletions:i.data.deletions,changed_files:i.data.changed_files};i.data=l}return i}catch(e){throw Error(`[GitHub] 创建拉取请求失败: ${e.message}`)}}async update_pull_request(e){if(!(e.owner||e.repo))throw Error(l);if(!e.pr_number)throw Error(c);try{this.setRequestConfig({token:this.userToken});let t={};e.title&&(t.title=e.title),e.body&&(t.body=e.body),e.state&&(t.state=e.state);let{owner:n,repo:r,pr_number:i}=e,a=await this.patch(`/repos/${n}/${r}/pulls/${i}`,null,t);if(a.statusCode===403)throw Error(d);if(a.data){let[e,t,n,r,i,o,s,c]=await Promise.all([this.format?y(a.data.created_at):a.data.created_at,b(a.data.merged_at)?null:this.format?await y(a.data.merged_at):a.data.merged_at,this.format?await y(a.data.updated_at):a.data.updated_at,b(a.data.closed_at)?null:this.format?await y(a.data.closed_at):a.data.closed_at,b(a.data.milestone)?null:this.format?await y(a.data.milestone.created_at):a.data.milestone.created_at,b(a.data.milestone)?null:this.format?await y(a.data.milestone.updated_at):a.data.milestone.updated_at,b(a.data.milestone)?null:this.format?await y(a.data.milestone.closed_at):a.data.milestone.closed_at,b(a.data.milestone)?null:this.format?await y(a.data.milestone.due_on):a.data.milestone.due_on]),l={id:a.data.id,html_url:a.data.html_url,number:a.data.number,state:b(a.data.merged_at)?a.data.state:`merged`,locked:a.data.locked,title:a.data.title,body:a.data.body,draft:a.data.draft,created_at:e,merged_at:t,updated_at:n,closed_at:r,user:{id:a.data.user.id,login:a.data.user.login,name:b(a.data.user.name)?null:a.data.user.name,html_url:a.data.user.html_url,avatar_url:a.data.user.avatar_url},base:{label:a.data.base.label,ref:a.data.base.ref,sha:a.data.base.sha,user:{id:a.data.base.user.id,login:a.data.base.user.login,name:b(a.data.base.user.name)?null:a.data.base.user.name,html_url:a.data.base.user.html_url,avatar_url:a.data.base.user.avatar_url},repo:{id:a.data.base.repo.id,owner:a.data.base.repo.owner,name:a.data.base.repo.name,full_name:a.data.base.repo.full_name}},head:{label:a.data.head.label,ref:a.data.head.ref,sha:a.data.head.sha,user:{id:a.data.head.user.id,login:a.data.head.user.login,name:b(a.data.head.user.name)?null:a.data.head.user.name,html_url:a.data.head.user.html_url,avatar_url:a.data.head.user.avatar_url},repo:{id:a.data.head.repo.id,owner:a.data.head.repo.owner,name:a.data.head.repo.name,full_name:a.data.head.repo.full_name}},assignee:b(a.data.assignee)?null:{id:a.data.assignee.id,login:a.data.assignee.login,name:b(a.data.assignee.name)?null:a.data.assignee.name,html_url:a.data.assignee.html_url,avatar_url:a.data.assignee.avatar_url},assignees:b(a.data.assignees)?null:a.data.assignees.map(e=>({id:e.id,login:e.login,name:b(e.name)?null:e.name,html_url:e.html_url,avatar_url:e.avatar_url})),milestone:b(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:i,updated_at:o,closed_at:s,due_on:c},labels:b(a.data.labels)?null:a.data.labels.map(e=>({id:e.id,name:e.name,color:e.color})),commits:a.data.commits,additions:a.data.additions,deletions:a.data.deletions,changed_files:a.data.changed_files};a.data=l}return a}catch(e){throw Error(`[GitHub] 更新拉取请求失败: ${e.message}`)}}async merge_pull_request(t){if(!(t.owner||t.repo))throw Error(l);if(!t.pr_number)throw Error(c);try{this.setRequestConfig({token:this.userToken});let n={};if(t.commit_title&&(n.commit_title=t.commit_title),t.commit_message&&(n.commit_message=t.commit_message),t.sha&&(n.sha=t.sha),t.merge_method){let e=[`merge`,`squash`,`rebase`];n.merge_method=e.includes(t.merge_method)?t.merge_method:e[0]}let{owner:r,repo:i,pr_number:a}=t,o=await this.put(`/repos/${r}/${i}/pulls/${a}/merge`,n);switch(o.statusCode){case 403:throw Error(d);case 404:throw Error(v);case 405:throw Error(_);case 409:throw Error(e)}if(o.statusCode===200&&o.data){let e={sha:o.data.sha,merged:o.data.merged,message:o.data.message};o.data=e}return o}catch(e){throw Error(`[GitHub] 合并拉取请求失败: ${e.message}`)}}async get_pull_request_diff(e){if(!(e.owner||e.repo))throw Error(l);if(!e.pr_number)throw Error(c);try{this.setRequestConfig({url:this.base_url});let{owner:t,repo:n,pr_number:r}=e,i=await this.get(`/${t}/${n}/pull/${r}.diff`,null,{Accept:`text/plain`});return i}catch(e){throw Error(`[GitHub] 获取拉取请求diff失败: ${e.message}`)}}async get_pull_request_files_list(e){if(!(e.owner||e.repo))throw Error(l);if(!e.pr_number)throw Error(c);try{this.setRequestConfig({token:this.userToken});let t={};e.per_page&&(t.per_page=e.per_page),e.page&&(t.page=e.page);let{owner:n,repo:r,pr_number:i}=e,a=await this.get(`/repos/${n}/${r}/pulls/${i}/files`,t);switch(a.statusCode){case 403:throw Error(d);case 404:throw Error(v)}if(a.data){let e=a.data.map(e=>({sha:e.sha,filename:e.filename,status:e.status,additions:e.additions,deletions:e.deletions,changes:e.changes,blob_url:e.blob_url,raw_url:e.raw_url,patch:e.patch}));a.data=e}return a}catch(e){throw Error(`[GitHub] 获取拉取请求文件列表失败: ${e.message}`)}}async get_pull_request_comment_info(e){if(!(e.owner||e.repo))throw Error(l);if(!e.comment_id)throw Error(s);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,comment_id:r}=e,i=await this.get(`/repos/${t}/${n}/pulls/comments/${r}`);switch(i.statusCode){case 403:throw Error(d);case 404:throw Error(f)}if(i.data){let[e,t]=await Promise.all([this.format?y(i.data.created_at):i.data.created_at,this.format?y(i.data.updated_at):i.data.updated_at]),n={id:i.data.id,body:i.data.body,user:{id:i.data.user.id,login:i.data.user.login,name:b(i.data.user.name)?null:i.data.user.name,avatar_url:i.data.user.avatar_url,html_url:i.data.user.html_url},created_at:e,updated_at:t};i.data=n}return i}catch(e){throw Error(`[GitHub] 获取拉取请求评论评论信息失败: ${e.message}`)}}async get_pull_request_comments_list(e){if(!(e.owner||e.repo))throw Error(l);if(!e.pr_number)throw Error(c);try{this.setRequestConfig({token:this.userToken});let t={};e.direction&&(t.direction=e.direction),e.per_page&&(t.per_page=e.per_page),e.page&&(t.page=e.page);let{owner:n,repo:r,pr_number:i}=e,a=await this.get(`/repos/${n}/${r}/pulls/${i}/comments`,t);switch(a.statusCode){case 403:throw Error(d);case 404:throw Error(f)}if(a.data){let e=await Promise.all(a.data.map(async e=>({id:e.id,body:e.body,user:{id:e.user.id,login:e.user.login,name:b(e.user.name)?null:e.user.name,html_url:e.user.html_url,avatar_url:e.user.avatar_url},created_at:this.format?await y(e.created_at):e.created_at,updated_at:this.format?await y(e.updated_at):e.updated_at})));a.data=e}return a}catch(e){throw Error(`[GitHub] 获取拉取请求评论列表失败: ${e.message}`)}}async create_pull_request_comment(e){if(!(e.owner||e.repo))throw Error(l);if(!e.pr_number)throw Error(c);if(!e.body)throw Error(o);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,pr_number:r,body:i}=e,a=await this.post(`/repos/${t}/${n}/pulls/${r}/comments`,{body:i});switch(a.statusCode){case 403:throw Error(d);case 404:throw Error(v)}if(a.data){let e={id:a.data.id,body:a.data.body};a.data=e}return a}catch(e){throw Error(`[GitHub] 创建拉取请求评论失败: ${e.message}`)}}async update_pull_request_comment(e){if(!(e.owner||e.repo))throw Error(l);if(!e.comment_id)throw Error(s);if(!e.body)throw Error(o);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:n,comment_id:r,body:i}=e,a=await this.patch(`/repos/${t}/${n}/issues/comments/${r}`,null,{body:i});switch(a.statusCode){case 403:throw Error(d);case 404:throw Error(f)}let o;return o=a.statusCode===200?{success:!0,message:g}:{success:!1,message:h},a.data=o,a}catch(e){throw Error(`[GitHub] 更新拉取请求评论失败: ${e.message}`)}}async edit_pull_request_comment(e){return await this.update_pull_request_comment(e)}async delete_pull_request_comment(e){if(!(e.owner||e.repo))throw Error(l);if(!e.comment_id)throw Error(s);try{let t=await this.delete(`/repos/${e.owner}/${e.repo}/pulls/comments/${e.comment_id}`);switch(t.statusCode){case 403:throw Error(d);case 404:throw Error(f)}let n;return t.statusCode===204?n={success:!0,message:m}:(n={success:!1,message:p},t.data=n),t}catch(e){throw Error(`[GitHub] 删除拉取请求评论失败: ${e.message}`)}}};export{x as Pull_Request};