UNPKG

@candriajs/git-neko-kit

Version:

Github, Gitee, GitCode API封装库

1 lines 12.7 kB
const e=require(`./root-s6IKP4Xz.cjs`),t=require(`./client-Bmkb1ges.cjs`),n=e.__toESM(require(`radash`));var r=class extends t.GitHubClient{constructor(e){super(e),this.userToken=e.userToken,this.api_url=e.api_url,this.base_url=e.base_url}async get_org_repos_list(e){if(!e.org)throw Error(t.OrgNotFoundMsg);try{this.setRequestConfig({token:this.userToken});let{org:r,...i}=e,a={};i?.type&&(a.type=i.type),i?.sort&&(a.sort=i.sort),i?.direction&&(a.direction=i.direction),i?.per_page&&(a.per_page=i.per_page.toString()),i?.page&&(a.page=i.page.toString());let o=`/orgs/${r}/repos`,s=await this.get(o,a);switch(s.statusCode){case 404:throw Error(t.OrgNotFoundMsg);case 401:throw Error(t.RepoOrPermissionDeniedMsg)}if(s.data){let e=await Promise.all(s.data.map(async e=>({id:e.id,name:e.name,full_name:e.full_name,owner:{id:e.owner.id,login:e.owner.login,name:(0,n.isEmpty)(e.owner.name)?null:e.owner.name,avatar_url:e.owner.avatar_url,type:e.owner.type,html_url:e.owner.html_url},public:!e.private,private:e.private,visibility:e.private?`private`:`public`,fork:e.fork,archived:e.archived,disabled:e.disabled,html_url:e.html_url,description:e.description,stargazers_count:e.stargazers_count,watchers_count:e.watchers_count,language:e.language,forks_count:e.forks_count,open_issues_count:e.open_issues_count,default_branch:e.default_branch,created_at:this.format?await t.format_date(e.created_at):e.created_at,updated_at:this.format?await t.format_date(e.updated_at):e.updated_at,pushed_at:this.format?await t.format_date(e.pushed_at):e.pushed_at})));s.data=e}return s}catch(e){throw Error(`[GitHub] 获取组织仓库列表失败: ${e.message}`)}}async get_user_repos_list_by_token(e){try{this.setRequestConfig({token:this.userToken});let{...r}=e,i={};!e?.visibility&&!e?.affiliation&&r?.type&&(i.type=r.type),r?.visibility&&(i.visibility=r.visibility),r?.affiliation&&(i.affiliation=r.affiliation),r?.sort&&(i.sort=r.sort),r?.direction&&(i.direction=r.direction),r?.per_page&&(i.per_page=r.per_page.toString()),r?.page&&(i.page=r.page.toString());let a=`/uses/repos`,o=await this.get(a,i);if(o.statusCode===401)throw Error(t.RepoOrPermissionDeniedMsg);if(o.data){let e=await Promise.all(o.data.map(async e=>({id:e.id,name:e.name,full_name:e.full_name,owner:{id:e.owner.id,login:e.owner.login,name:(0,n.isEmpty)(e.owner.name)?null:e.owner.name,avatar_url:e.owner.avatar_url,type:e.owner.type,html_url:e.owner.html_url},public:!e.private,private:e.private,visibility:e.private?`private`:`public`,fork:e.fork,archived:e.archived,disabled:e.disabled,html_url:e.html_url,description:e.description,stargazers_count:e.stargazers_count,watchers_count:e.watchers_count,language:e.language,forks_count:e.forks_count,open_issues_count:e.open_issues_count,default_branch:e.default_branch,created_at:this.format?await t.format_date(e.created_at):e.created_at,updated_at:this.format?await t.format_date(e.updated_at):e.updated_at,pushed_at:this.format?await t.format_date(e.pushed_at):e.pushed_at})));o.data=e}return o}catch(e){throw Error(`[GitHub] 获取授权用户仓库列表失败: ${e.message}`)}}async get_user_repos_list(e){try{if(!e.username)throw Error(t.MissingUserNameParamMsg);this.setRequestConfig({token:this.userToken});let{username:r,...i}=e,a={};i?.type&&(a.type=i.type),i?.sort&&(a.sort=i.sort),i?.direction&&(a.direction=i.direction),i?.per_page&&(a.per_page=i.per_page.toString()),i?.page&&(a.page=i.page.toString());let o=`/users/${r}/repos`,s=await this.get(o,a);switch(s.statusCode){case 404:throw Error(t.UserNotFoundMsg);case 401:throw Error(t.RepoOrPermissionDeniedMsg)}if(s.data){let e=await Promise.all(s.data.map(async e=>({id:e.id,name:e.name,full_name:e.full_name,owner:{id:e.owner.id,login:e.owner.login,name:(0,n.isEmpty)(e.owner.name)?null:e.owner.name,avatar_url:e.owner.avatar_url,type:e.owner.type,html_url:e.owner.html_url},public:!e.private,private:e.private,visibility:e.private?`private`:`public`,fork:e.fork,archived:e.archived,disabled:e.disabled,html_url:e.html_url,description:e.description,stargazers_count:e.stargazers_count,watchers_count:e.watchers_count,language:e.language,forks_count:e.forks_count,open_issues_count:e.open_issues_count,default_branch:e.default_branch,created_at:this.format?await t.format_date(e.created_at):e.created_at,updated_at:this.format?await t.format_date(e.updated_at):e.updated_at,pushed_at:this.format?await t.format_date(e.pushed_at):e.pushed_at})));s.data=e}return s}catch(e){throw Error(`[GitHub] 获取用户仓库列表失败: ${e.message}`)}}async get_repo_info(e){if(!e.owner||!e.repo)throw Error(t.MissingRepoOwnerOrNameMsg);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:i}=e,a=await this.get(`/repos/${r}/${i}`);switch(a.statusCode){case 401:throw Error(t.RepoOrPermissionDeniedMsg);case 404:throw Error(t.OrgOrUserNotFoundMsg)}if(a.data){let e={id:a.data.id,name:a.data.name,full_name:a.data.full_name,owner:{id:a.data.owner.id,login:a.data.owner.login,name:(0,n.isEmpty)(a.data.owner.name)?null:a.data.owner.name,avatar_url:a.data.owner.avatar_url,type:a.data.owner.type,html_url:a.data.owner.html_url},public:!a.data.private,private:a.data.private,visibility:a.data.private?`private`:`public`,fork:a.data.fork,archived:a.data.archived,disabled:a.data.disabled,html_url:a.data.html_url,description:a.data.description,stargazers_count:a.data.stargazers_count,watchers_count:a.data.watchers_count,language:a.data.language,forks_count:a.data.forks_count,open_issues_count:a.data.open_issues_count,default_branch:a.data.default_branch,created_at:this.format?await t.format_date(a.data.created_at):a.data.created_at,updated_at:this.format?await t.format_date(a.data.updated_at):a.data.updated_at,pushed_at:this.format?await t.format_date(a.data.pushed_at):a.data.pushed_at};a.data=e}return a}catch(e){throw Error(`[GitHub] 获取仓库信息失败: ${e.message}`)}}async get_repo_languages_list(e){if(!e.owner||!e.repo)throw Error(t.MissingRepoOwnerOrNameMsg);try{this.setRequestConfig({token:this.userToken});let{owner:n,repo:r}=e,i=await this.get(`/repos/${n}/${r}/languages`);switch(i.statusCode){case 401:throw Error(t.RepoOrPermissionDeniedMsg);case 404:throw Error(t.RepoNotFoundMsg)}if(i.data){let e=Object.entries(i.data),n=e.reduce((e,[,t])=>e+t,0),r=e.map(([e,r])=>({language:e,color:t.get_langage_color(e.toLowerCase()),percent:Number((r/n*100).toFixed(2)),bytes:r})),a={languages:r};i.data=a}return i}catch(e){throw Error(`[GitHub] 获取仓库语言列表失败: ${e.message}`)}}async create_org_repo(e){try{let{org:r,...i}=e;if(!r||!e.name)throw Error(t.OrgOrRepoNotFoundMsg);let a={};a.name=i.name,i.description&&(a.description=i.description.toString()),i.homepage&&(a.homepage=i.homepage.toString()),i.visibility&&(a.private=i.visibility.toString()),i.has_wiki&&(a.has_wiki=i.has_wiki),i.auto_init&&(a.auto_init=i.auto_init);let o=await this.post(`/orgs/${r}/repos`,a);if(o.statusCode===401)throw Error(t.RepoOrPermissionDeniedMsg);if(o.data){let e={id:o.data.id,name:o.data.name,full_name:o.data.full_name,owner:{id:o.data.owner.id,login:o.data.owner.login,name:(0,n.isEmpty)(o.data.owner.name)?null:o.data.owner.name,avatar_url:o.data.owner.avatar_url,type:o.data.owner.type,html_url:o.data.owner.html_url},public:!o.data.private,private:o.data.private,visibility:o.data.private?`private`:`public`,fork:o.data.fork,archived:o.data.archived,disabled:o.data.disabled,html_url:o.data.html_url,description:o.data.description,stargazers_count:o.data.stargazers_count,watchers_count:o.data.watchers_count,language:o.data.language,forks_count:o.data.forks_count,open_issues_count:o.data.open_issues_count,default_branch:o.data.default_branch,created_at:this.format?await t.format_date(o.data.created_at):o.data.created_at,updated_at:this.format?await t.format_date(o.data.updated_at):o.data.updated_at,pushed_at:this.format?await t.format_date(o.data.pushed_at):o.data.pushed_at};o.data=e}return o}catch(e){throw Error(`[GitHub] 创建组织仓库失败: ${e.message}`)}}async create_user_repo(e){try{let{owner:r,...i}=e;if(!r||!e.name)throw Error(t.MissingRepoOwnerOrNameMsg);let a={};a.name=i.name,i.description&&(a.description=i.description.toString()),i.homepage&&(a.homepage=i.homepage.toString()),i.visibility===`private`&&(a.private=!0),i.has_wiki&&(a.has_wiki=i.has_wiki),i.auto_init&&(a.auto_init=i.auto_init);let o=await this.post(`/user/repos`,a);if(o.statusCode===401)throw Error(t.RepoOrPermissionDeniedMsg);if(o.data){let e={id:o.data.id,name:o.data.name,full_name:o.data.full_name,owner:{id:o.data.owner.id,login:o.data.owner.login,name:(0,n.isEmpty)(o.data.owner.name)?null:o.data.owner.name,avatar_url:o.data.owner.avatar_url,type:o.data.owner.type,html_url:o.data.owner.html_url},public:!o.data.private,private:o.data.private,visibility:o.data.private?`private`:`public`,fork:o.data.fork,archived:o.data.archived,disabled:o.data.disabled,html_url:o.data.html_url,description:o.data.description,stargazers_count:o.data.stargazers_count,watchers_count:o.data.watchers_count,language:o.data.language,forks_count:o.data.forks_count,open_issues_count:o.data.open_issues_count,default_branch:o.data.default_branch,created_at:this.format?await t.format_date(o.data.created_at):o.data.created_at,updated_at:this.format?await t.format_date(o.data.updated_at):o.data.updated_at,pushed_at:this.format?await t.format_date(o.data.pushed_at):o.data.pushed_at};o.data=e}return o}catch(e){throw Error(`[GitHub] 创建用户仓库失败: ${e.message}`)}}async create_repo(e){return this.create_user_repo(e)}async get_collaborators_list(e){if(!e.owner||!e.repo)throw Error(t.MissingRepoOwnerOrNameMsg);try{this.setRequestConfig({token:this.userToken});let{owner:t,repo:r}=e,{...i}=e,a={};i.affiliation&&(a.milestone=i.affiliation.toString()),i.permission&&(a.permission=i.permission.toString()),i.per_page&&(a.per_page=i.per_page.toString()),i.page&&(a.page=i.page.toString());let o=await this.get(`/repos/${t}/${r}/collaborators`,a);if(o.data){let e=await Promise.all(o.data.map(e=>({id:e.id,login:e.login,avatar_url:e.avatar_url,email:e.email,name:(0,n.isEmpty)(e.name)?null:e.owner.name,permissions:e.permissions===`triage`||e.permissions===`maintain`?`admin`:e.permissions})));o.data=e}return o}catch(e){throw Error(`[GitHub] 获取仓库协作者列表失败: ${e.message}`)}}async add_collaborator(e){if(!e.owner||!e.repo)throw Error(t.MissingRepoOwnerOrNameMsg);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:i,username:a,permission:o}=e,s={};o===`pull`?s.permission=`pull`:o===`push`?s.permission=`push`:o===`admin`?s.permission=`admin`:s.permission=`pull`;let c=await this.put(`/repos/${r}/${i}/collaborators/${a}`,s);if(c.statusCode===404)throw Error(t.RepoOrPermissionDeniedMsg);if(c.statusCode===422){let e=c.data.message;if(e&&e.includes(`is not a valid permission`))throw Error(t.PermissionDeniedMsg)}if(c.data){let e={id:c.data.inviter.id,login:c.data.inviter.login,name:(0,n.isEmpty)(c.data.inviter.name)?null:c.data.inviter.name,html_url:c.data.repository.html_url,permissions:c.data.permissions};c.data=e}return c}catch(e){throw Error(`[GitHub] 添加协作者失败: ${e.message}`)}}async remove_collaborator(e){if(!e.owner||!e.repo)throw Error(t.MissingRepoOwnerOrNameMsg);try{this.setRequestConfig({token:this.userToken});let{owner:n,repo:r,username:i}=e,a=await this.delete(`/repos/${n}/${r}/collaborators/${i}`);if(a.statusCode===404)throw Error(t.RepoOrPermissionDeniedMsg);let o;return o=a.status&&a.statusCode===204?{success:!0,message:t.RemoveCollaboratorSuccessMsg(i)}:{success:!1,message:t.FailedToRemoveCollaboratorMsg(i)},a.data=o,a}catch(e){throw Error(`[GitHub] 移除协作者失败: ${e.message}`)}}async delete_collaborator(e){return this.remove_collaborator(e)}async get_repo_visibility(e){try{let{owner:t,repo:n}=e;return(await this.get_repo_info({owner:t,repo:n})).data.visibility}catch(e){throw Error(`[GitHub] 获取仓库可见性失败: ${e.message}`)}}async get_repo_default_branch(e){if(!e.owner||!e.repo)throw Error(t.MissingRepoOwnerOrNameMsg);try{let{owner:r,repo:i}=e,a=t.get_base_url(this.type,{proxyType:t.ProxyType.Original})+`/`+r+`/`+i,o,[s,c]=await(0,n.tryit)(t.get_remote_repo_default_branch)(a);return o=s?(await this.get_repo_info({owner:r,repo:i})).data.default_branch:c,o}catch(e){throw Error(`[GitHub] 获取仓库默认分支失败: ${e.message}`)}}async get_repo_main_language(e){if(!e.owner||!e.repo)throw Error(t.MissingRepoOwnerOrNameMsg);try{let{owner:t,repo:n}=e;return(await this.get_repo_info({owner:t,repo:n})).data.language}catch(e){throw Error(`[GitHub] 获取仓库语言失败: ${e.message}`)}}};Object.defineProperty(exports,`Repo`,{enumerable:!0,get:function(){return r}});