@candriajs/git-neko-kit
Version:
Github, Gitee, GitCode API封装库
1 lines • 24.3 kB
JavaScript
import{basePath as e}from"./root--c209M1Y.mjs";import*as t from"diff2html";import{ColorSchemeType as n}from"diff2html/lib/types";import r from"node:fs";import i from"node:path";import{simpleGit as a}from"simple-git";import{exec as o}from"@candriajs/exec";import s from"color-convert";import c from"dayjs";import l from"dayjs/plugin/relativeTime.js";import u from"git-url-parse";import ee from"language-colors";import{tasklist as te}from"@mdit/plugin-tasklist";import d from"markdown-it";import{full as ne}from"markdown-it-emoji";import{isEmpty as f,isObject as re,isString as ie}from"radash";import{URL as ae}from"node:url";import{v4 as oe}from"uuid";import p from"axios";import{HttpProxyAgent as se}from"http-proxy-agent";import{HttpsProxyAgent as m}from"https-proxy-agent";import{SocksProxyAgent as h}from"socks-proxy-agent";import ce from"jsonwebtoken";const g=`喵呜~ 当前客户端类型不是App类型, 不支持此操作哦`,le=`喵呜~ 应用客户端配置不完整`,_=`喵呜~ 请求路径不能为空`,ue=`喵呜~ 应用客户端ID不能为空`,de=`喵呜~ 应用客户端ID不能为空`,fe=`喵呜~ 应用密钥不能为空`,pe=`喵呜~ 应用标识符不能为空`,me=`喵呜~ 授权码不能为空`,v=`喵呜~ 访问令牌不能为空`,he=`喵呜~ 刷新令牌不能为空`,ge=`喵呜~ 请提供标题`,_e=`喵呜~ 代码配置不正确呢`,ve=`喵呜~ 代理地址格式不正确哦`,y=`喵呜~ 本地仓库路径不能为空`,ye=`喵呜~ 远程仓库URL不能为空`,b=`喵呜~ 代理URL不能为空`,x=`喵呜~ 这个 Git 类型不支持哦`,S=`喵呜~ 这个 URL 协议不支持哦`,be=e=>`喵呜~ 代理类型 ${e} 不支持哦`,xe=e=>`喵呜~ 仓库URL ${e} 不存在哦`,C=e=>`喵呜~ 本地仓库路径 ${e} 不存在哦`,w=`喵呜~ Git 客户端未安装或未正确配置`,T=`喵呜~ 这个令牌似乎不是有效的`,E=`喵呜~ 访问令牌已过期`,D=`喵呜~ 访问令牌刷新失败`,O=`喵呜~ 获取访问令牌失败`,k=`喵呜~ 访问被拒绝啦,可能是令牌过期了或权限不足`,A=`喵呜~ 访问被拒绝,请检查令牌是否正确`,j=`喵呜~ 应用安装ID不能为空`,M=`喵呜~ 撤销访问令牌失败`,Se=`喵呜~ 仓库拥有者或仓库名称不能为空`,Ce=`喵呜~ 请提供仓库信息(仓库拥有者/仓库名或完整URL)`,we=`喵呜~ 这个仓库不存在哦`,Te=`喵呜~ 这个仓库已被移动`,Ee=`喵呜~ 这个仓库不存在或访问被拒绝啦,可能是令牌过期了或权限不足`,De=`喵呜~ 这个提交不存在哦`,Oe=`喵呜~ 这个提交或仓库不存在哦`,ke=`喵呜~ 工作流ID不能为空`,Ae=`喵呜~ 这个工作流或仓库不存在哦`,je=e=>`喵呜~ 移除协作者失败${e}哦`,Me=`喵呜~ 引用分支或标签名称不能为空哦`,Ne=`喵呜~ 工作流作业ID不能为空`,Pe=e=>`喵呜~ 工作流${e}手动触发触发失败`,Fe=e=>`喵呜~ 工作流${e}启用失败`,Ie=e=>`喵呜~ 工作流${e}禁用失败`,Le=e=>`喵呜~ 工作流作业${e}重新运行失败`,Re=`喵呜~ 这个用户不存在哦`,ze=`喵呜~ 用户ID不能为空`,Be=`喵呜~ 用户名不能为空`,Ve=`喵呜~ 组织账号暂不支持`,He=`喵呜~ 这个组织不存在哦`,Ue=`喵呜~ 组织名不能为空`,We=`喵呜~ 这个组织或仓库不存在哦`,Ge=`喵呜~ 这个组织或用户不存在哦`,Ke=`喵呜~ 找不到用户管理的组织哦`,qe=e=>`喵呜~ 移除组织成员失败${e}哦`,Je=`喵呜~ 这个议题不存在哦`,Ye=`喵呜~ 这个议题已被移动`,Xe=`喵呜~ 这个议题评论不存在哦`,Ze=`喵呜~ 这个关联议题不能为空哦`,Qe=`喵呜~ 这个关联议题编号或标题不能为空哦`,$e=`喵呜~ 这个议题编号不能为空哦`,et=`喵呜~ 议题标题不能为空哦`,tt=`喵呜~ 这个议题评论编号不能为空哦`,nt=`喵呜~ 这个议题评论内容不能为空哦`,rt=`喵呜~ 这个子议题编号不能为空哦`,it=`喵呜~ 锁定议题失败`,at=`喵呜~ 解锁议题失败`,ot=`喵呜~ 删除议题失败`,st=`喵呜~ 这个拉取请求评论内容不能为空哦`,ct=`喵呜~ 这个拉取请求评论编号不能为空哦`,lt=`喵呜~ 这个拉取请求编号不能为空哦`,ut=`喵呜~ 请提供源分支`,dt=`喵呜~ 请提供目标分支`,ft=`喵呜~ 拉取请求的合并方式不支持`,pt=`喵呜~ 拉取请求编号或仓库不存在`,mt=`喵呜~ 拉取请求评论编号或仓库不存在`,ht=`喵呜~ 这个SHA值与头部分支的SHA值不匹配`,gt=`喵呜~ 拉取请求评论更新失败`,_t=`喵呜~ 拉取请求评论删除失败`,vt=`喵呜~ WebHook 签名格式不正确`,yt=`喵呜~ WebHook 签名验证失败`,bt=`喵呜~ WebHook 签名密钥不能为空哦`,xt=`喵呜~ WebHook 请求体不能为空哦`,St=`喵呜~ WebHook 签名头不能为空哦`,Ct=`喵呜~ 搜索查询不能为空哦`,N=`喵呜~ 访问速率受限啦 请等待1小时后再试 或 使用访问令牌提升限额`,P=`喵呜~ 网络错误,请检查网络连接或代理设置`,wt=`喵呜~ Diff 内容不能为空`;function Tt(e,r){if(!e)throw Error(wt);let i={drawFileList:!1,diffMaxChanges:100,diffMaxLineLength:300,matching:`lines`,colorScheme:n.LIGHT,outputFormat:`side-by-side`,...r},a=t.html(e,i);return a}const Et=new Set([`en`]);async function F(e,t){return await o(e,t)}async function I(e){try{return await r.promises.access(e,r.constants.F_OK),!0}catch{return!1}}function Dt(e=``){try{let t=i.resolve(e).replace(/\\/g,`/`);if(!r.existsSync(t))return{};let n=r.readFileSync(t,`utf8`);return JSON.parse(n)}catch(t){return console.error(`读取 JSON 文件失败: ${e}`,t),{}}}async function L(e=``){try{let t=i.resolve(e).replace(/\\/g,`/`);if(!await I(t))return{};let n=await r.promises.readFile(t,`utf8`);return JSON.parse(n)}catch(t){return console.error(`读取 JSON 文件失败: ${e}`,t),{}}}async function R(e=`zh-cn`){let t=String(e).toLowerCase();if(Et.has(t)){c.locale(t);return}await import(`dayjs/locale/${t}.js`),c.locale(e)}async function Ot(e,t=`zh-cn`,n=`YYYY-MM-DD HH:mm:ss`){await R(t);let r=c(e).locale(t);return r.format(n)}async function kt(e,t){let{locale:n=`zh-cn`,useAbsoluteIfOver30Days:r=!1}=t??{};await R(n),c.extend(l);let i=c(e).locale(n),a=c(),o=a.diff(i,`day`);return r&&o>30?i.format(`YYYY-MM-DD HH:mm:ss`):i.fromNow()}function z(e){let t=/^https?:\/\/[^/]+\/(?:https?:\/\/)?([^/]+\/[^/]+\/[^/]+)/,n=e.match(t);if(n){let t=n[1];e=t.startsWith(`https`)?t:`https://${t}`}let r=u(e);return{html_url:r.toString(`https`).replace(/\.git$/,``),owner:r.owner,repo:r.name}}function At(e){if(!Array.isArray(e))throw Error(`RGB值必须是数组类型`);if(e.length!==3)throw Error(`RGB数组必须包含且仅包含3个值`);if(!e.every(e=>Number.isInteger(e)&&e>=0&&e<=255))throw Error(`RGB值必须都是0-255之间的整数`);return`#${s.rgb.hex(e)}`}function jt(e){return e=String(e).toLowerCase(),At(ee[e].color)??`#ededed`}async function Mt(e,t){return Promise.resolve(Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,r*t+t)))}async function Nt(e){try{if(!e)return{total:0,contributions:[]};let t=/data-date="(.*?)" id="contribution-day-component/g,n=/<tool-tip .*?class="sr-only position-absolute">(.*?) contribution/g,r=Array.from(e.matchAll(t),e=>e[1]),i=Array.from(e.matchAll(n),e=>String(e[1]).toLowerCase()===`no`?0:parseInt(e[1]));if(!r.length||!i.length)return{total:0,contributions:[]};let a=r.map((e,t)=>({date:e,count:i[t]})).sort((e,t)=>e.date.localeCompare(t.date)),o=await Mt(a,7);return{total:i.reduce((e,t)=>e+t,0),contributions:o}}catch(e){throw Error(`解析贡献数据失败: ${e.message}`)}}async function Pt(){try{return await a().raw([`--version`])}catch{return null}}async function B(){return!!await Pt()}async function V(e){try{if(!e)throw Error(y);if(!await I(i.join(e))||!await I(i.join(e,`.git`)))return null;let t=a(e),n=await t.getRemotes(!0);if(n.length>0){let t=n[0].refs.push,{owner:r,repo:a,html_url:o}=z(t);return{name:i.basename(e),path:i.join(e),url:t,html_url:o,owner:r,repo:a,default_branch:await H(e)}}return null}catch(e){throw Error(`获取本地仓库信息失败: ${e}`)}}async function Ft(e,t={loop:!1,maxDepth:5,dir:[]}){let{loop:n=!1,maxDepth:a=5,dir:o=[]}=t,s=async(e,t=0)=>{try{if(!await I(e))return[];let c=await r.promises.stat(e);if(!c.isDirectory())return[];let l=[],u=await V(e);if(u&&l.push(u),n&&t<a){let n=await r.promises.readdir(e,{withFileTypes:!0}),a=await Promise.all(n.filter(e=>e.isDirectory()&&!o.includes(e.name)).map(async n=>{let r=i.join(e,n.name);return await s(r,t+1)}));l.push(...a.flat())}return l}catch(e){return[]}};try{if(!e)throw Error(y);if(e=i.resolve(e).replace(/\\/g,`/`),!await I(e))throw Error(C(e));if(!await B())throw Error(w);let t=await s(e);return{total:t.length,items:t}}catch(e){throw Error(`获取本地目录git仓库列表失败: ${e.message}`)}}async function H(e){if(!e)throw Error(y);try{if(!await B())throw Error(w);let t=i.join(e),n=await I(t);if(!n)throw Error(C(t));let r=a(e),o=await r.revparse([`--abbrev-ref`,`HEAD`]);if(!o)throw Error(`喵呜~, 无法获取仓库分支信息,请确保仓库已初始化`);return o.trim()}catch(e){throw Error(`获取本地仓库默认分支失败: ${e.message}`)}}async function U(e){if(!e)throw Error(ye);try{if(!await B())throw Error(w);let t=new URL(e),{owner:n,repo:r}=z(t.href);if(!(n||r))throw Error(xe(t.href));let i=a(),o=await i.raw([`ls-remote`,`--symref`,e,`HEAD`]),s=o.match(/^ref: refs\/heads\/([^\t\n]+)/m);if(!s)throw Error(`喵呜~, 无法从远程仓库获取默认分支信息`);return s[1]}catch(e){throw Error(`获取远程仓库默认分支失败: ${e.message}`)}}async function It(){let e=new d({html:!0,breaks:!0});return e.use(ne),e.use(te),e.renderer.rules.bullet_list_open=()=>`<ul style="list-style: none;">`,Promise.resolve(e)}async function Lt(e){let t=await It();return e=e.replace(/\[([^[\]]+?)\]\s*:/g,`\\[$1\\]:`),Promise.resolve(t.render(e))}function W(e){if(ie(e))return e;if(re(e))return e.url}async function G(e,t,n){let r=z(n);return{name:e.name,path:t,html_url:r.html_url,owner:r.owner,repo:r.repo,default_branch:await U(n)}}async function K(e){try{if(!e)return null;let t=i.join(process.cwd(),`node_modules`,e);try{let{stdout:n}=await F(`npm view ${e} --json`);if(n&&!f(n)){let e=JSON.parse(n),r=W(e.repository)?.replace(/^git\+/,``);if(r)return await G(e,t,r)}}catch{}if(!await I(t))return null;let n=i.join(t,`package.json`);if(!await I(n))return null;let r=await L(n);if(f(r))return null;let a=W(r.repository)?.replace(/^git\+/,``);return a?await G(r,t,a):null}catch{return null}}async function Rt(e,t){let{packageName:n=[],prefix:r=``}=t??{};if(!i)throw Error(y);if(!await I(e))throw Error(C(e));let a=i.join(e,`node_modules`);if(!await I(a))return{total:0,items:[]};let o=[];try{let{stdout:t}=await F(`npm list --prod --depth=0 --json`,{cwd:e});if(t&&!f(t)){let e=JSON.parse(t);e.dependencies&&(o=Object.keys(e.dependencies))}}catch(t){let n=i.join(e,`package.json`);if(!await I(n))return{total:0,items:[]};let r=await L(n);if(f(r))return{total:0,items:[]};o=Object.keys(r.dependencies??{})}let s=o.filter(e=>!n.includes(e)).filter(e=>!r||e.startsWith(r)),c=s.map(e=>K(e)),l=(await Promise.all(c)).filter(e=>e!==null);return{total:l.length,items:l}}const zt=`喵呜~ 访问令牌撤销成功`,Bt=`喵呜~ 访问令牌刷新成功`,Vt=`喵呜~ 访问令牌获取成功`,Ht=`喵呜~ 访问令牌有效`,Ut=e=>`喵呜~ 移除协作者成功${e}哦`,Wt=e=>`喵呜~ 工作流运行成功${e}哦`,Gt=e=>`喵呜~ 工作流启用成功${e}哦`,Kt=e=>`喵呜~ 工作流禁用成功${e}哦`,q=e=>`喵呜~ 工作流任务重新运行成功${e}哦`,qt=e=>`喵呜~ 移除组织成员${e}成功`,Jt=`喵呜~ 议题解锁成功`,Yt=`喵呜~ 议题评论删除成功`,Xt=`喵呜~ 拉取请求评论更新成功`,Zt=`喵呜~ 拉取请求评论删除成功`,Qt=`喵呜~ WebHook签名验证成功`,J=Dt(`${e}/package.json`);function Y(e=`github`,t={}){let n=[`github`,`gitee`,`gitcode`];if(!n.includes(e))throw Error(x);let{proxyUrl:r,proxyType:i=`original`}=t,a={github:`api.github.com`,gitee:`gitee.com/api/v5`,gitcode:`api.gitcode.com/api/v5`},o=`https://${a[e]}`;if(i!==`original`){if(!r)throw Error(b);if(!r.startsWith(`http`))throw Error(S);let t=r.replace(/(^\/|\/$)/g,``);return i===`common`?`${t}/${a[e]}`:t}return o.replace(/\/$/,``)}function X(e=`github`,t={}){let n=[`github`,`gitee`,`gitcode`];if(!n.includes(e))throw Error(x);let{proxyUrl:r,proxyType:i=`original`}=t,a={github:`github.com`,gitee:`gitee.com`,gitcode:`gitcode.com`},o=`https://${a[e]}`;if(i!==`original`){if(!r)throw Error(b);if(!r.startsWith(`http`))throw Error(S);let t=r.replace(/(^\/|\/$)/g,``);return i===`common`?`${t}/${a[e]}`:t}return o.replace(/\/$/,``)}async function $t(){return Promise.resolve(oe().replace(/-/g,``))}var en=class{baseUrl;tokenType;authorization;proxy;defaultHeaders;constructor(e,t=`Bearer`,n,r,i){this.baseUrl=e.replace(/\/$/,``),this.authorization=n,this.proxy=r,this.tokenType=t,this.defaultHeaders=i}async request(e,t,n,r,i){let a=`${this.baseUrl.replace(/\/+$/,``)}/${t.replace(/^\/+|\/+$/g,``)}`,o={headers:this.createHeaders(i),params:n,maxRedirects:2,validateStatus:()=>!0};if(this.proxy){let e=this.proxy.type,t=this.proxy.address;switch(e){case`http`:o.httpAgent=new se(t),o.httpsAgent=new m(t);break;case`https`:o.httpsAgent=new m(t);break;case`socks`:{let e=new h(t);o.httpAgent=e,o.httpsAgent=e;break}}}try{let t;switch(e){case`get`:t=await p.get(a,o);break;case`post`:t=await p.post(a,r,o);break;case`patch`:t=await p.patch(a,r,o);break;case`put`:t=await p.put(a,r,o);break;case`delete`:t=await p.delete(a,{...o,data:r});break;default:throw Error(`不支持的请求方法: ${e}`)}let n=Object.fromEntries(Object.entries(t.headers).filter(([e,t])=>t!==void 0).map(([e,t])=>[e.toLowerCase(),t]));return{success:!0,statusCode:t.status,headers:n,data:t.data,msg:t.status>=200&&t.status<500?`请求成功`:`请求异常`}}catch(e){let t=e,n=t.response?.headers?Object.fromEntries(Object.entries(t.response.headers).filter(([e,t])=>t!==void 0).map(([e,t])=>[e,t])):{};return{success:!1,statusCode:t.response?.status??500,headers:n,msg:t.message??`网络连接失败`,data:null}}}async get(e,t,n){return this.request(`get`,e,t,null,n)}async post(e,t,n,r){return this.request(`post`,e,t,n,r)}async patch(e,t=null,n,r){return this.request(`patch`,e,t,n,r)}async put(e,t,n,r){return this.request(`put`,e,t,n,r)}async delete(e,t=null,n,r){return this.request(`delete`,e,t,n,r)}createHeaders(e){let t=J.name.includes(`/`)?J.name.split(`/`).pop():J.name,n={"Content-Type":`application/json`,"User-Agent":`${t}/v${J.version}`,...this.defaultHeaders??{}};if(this.authorization)if(this.tokenType===`Basic`){let e=Buffer.from(this.authorization).toString(`base64`);n.Authorization=`Basic ${e}`}else this.tokenType===`Bearer`?n.Authorization=`Bearer ${this.authorization}`:n.Authorization=`${this.tokenType} ${this.authorization}`;return e&&Object.assign(n,e),n}};let Z=function(e){return e.Reverse=`reverse`,e.Original=`original`,e.Common=`common`,e}({}),Q=function(e){return e.HTTP=`http`,e.HTTPS=`https`,e.SOCKS=`socks`,e}({});const $=`github`;var tn=class{base_url;api_url;jwtToken;userToken;Private_Key;Client_ID;Client_Secret;WebHook_Secret;format;currentRequestConfig;proxy;constructor(e){this.Private_Key=`Private_Key`in e?e.Private_Key:null,this.Client_ID=`Client_ID`in e?e.Client_ID:null,this.Client_Secret=`Client_Secret`in e?e.Client_Secret:null,this.WebHook_Secret=`WebHook_Secret`in e?e.WebHook_Secret:null,this.validateAppClient(),this.jwtToken=this.generate_jwt(),this.base_url=X($,{proxyType:Z.Original}),this.api_url=Y($,{proxyType:Z.Original}),this.userToken=`access_token`in e?e.access_token:null,this.currentRequestConfig={url:this.api_url,token:null,tokenType:`Bearer`},this.format=e.format??!1}get type(){return $}get is_app_client(){return!!(this.Client_ID&&this.Client_Secret&&this.Private_Key)}validateAppClient(){if(!this.is_app_client)return;let{Private_Key:e,Client_ID:t,Client_Secret:n}=this,r=e!==null&&e!==``,i=t!==null&&t!==``,a=n!==null&&n!==``,o=[];if(i||o.push(`Client_ID`),a||o.push(`Client_Secret`),r||o.push(`Private_Key`),o.length!==0){if(o.length>0&&o.length<3){let e=o[0];if(e===`Client_ID`)throw Error(ue);if(e===`Client_Secret`)throw Error(de);if(e===`Private_Key`)throw Error(fe)}if(o.length===3)throw Error(le)}}async get_app(){let{App:e}=await import(`./app-B5x_z1xR.mjs`);return this.app=new e(this),this.app}async get_auth(){let{Auth:e}=await import(`./auth-Db-FCcPo.mjs`);return this.auth=new e(this),this.auth}async get_commit(){let{Commit:e}=await import(`./commit-DUYHx6WQ.mjs`);return this.commit=new e(this),this.commit}async get_issue(){let{Issue:e}=await import(`./issue-BFS72RBD.mjs`);return this.issue=new e(this),this.issue}async get_repo(){let{Repo:e}=await import(`./repo-C3bmC1kp.mjs`);return this.repo=new e(this),this.repo}async get_user(){let{User:e}=await import(`./user-CkLZNCr4.mjs`);return this.user=new e(this),this.user}async get_org(){let{Org:e}=await import(`./org-DGNhfEZK.mjs`);return this.org=new e(this),this.org}async get_webhook(){let{WebHook:e}=await import(`./webhook-at9Unv7b.mjs`);return this.webhook=new e(this),this.webhook}async get_pull_request(){let{Pull_Request:e}=await import(`./pull_request-CfU8bWD3.mjs`);return this.pull_request=new e(this),this.pull_request}async get_workflow(){let{Workflow:e}=await import(`./workflow-vxjTvuWu.mjs`);return this.workflow=new e(this),this.workflow}async get_search(){let{Search:e}=await import(`./search-DxL-o1yv.mjs`);return this.search=new e(this),this.search}setProxy(e){if(!e?.address||!e?.type)throw this.proxy=null,Error(_e);try{let t=new ae(e.address);if(!(Object.values(Z).includes(e.type)||Object.values(Q).includes(e.type)))throw Error(be(e.type));switch(e.type){case Z.Common:case Z.Reverse:{let t=e.type;this.api_url=Y($,{proxyUrl:e.address,proxyType:t}),this.currentRequestConfig.url=this.api_url;break}case Q.HTTP:case Q.HTTPS:case Q.SOCKS:e.address=`${t.protocol}//${t.host}`;break}this.proxy=e}catch(e){throw this.proxy=null,Error(ve)}}setToken(e){if(!e.startsWith(`ghu_`)&&!e.startsWith(`ghp_`)&&!e.startsWith(`ghs_`))throw this.userToken=null,Error(v);this.userToken=e}generate_jwt(){if(!this.is_app_client&&!this.Private_Key)throw Error(g);let e={exp:Math.floor(Date.now()/1e3)+10*60,iat:Math.floor(Date.now()/1e3),iss:this.Client_ID};return ce.sign(e,this.Private_Key,{algorithm:`RS256`})}setRequestConfig(e){e.url&&(this.currentRequestConfig.url=e.url),e.token&&(this.currentRequestConfig.token=e.token),e.tokenType&&(this.currentRequestConfig.tokenType=e.tokenType)}createRequest(){let{url:e,token:t,tokenType:n}=this.currentRequestConfig,r=this.proxy?.type===`common`?null:this.proxy,i={"X-GitHub-Api-Version":`2022-11-28`,Accept:`application/vnd.github+json`};return new en(e,n,t,r,i)}async get(e,t,n){try{if(!e)throw Error(_);this.setRequestConfig({token:this.userToken});let r=this.createRequest(),i=await r.get(e,t,n);if(i.statusCode===500&&i.msg===`Network Error`)throw Error(P);if(i.statusCode===401)throw Error(A);if((i.statusCode===403||i.statusCode===429)&&i.headers[`x-ratelimit-remaining`]===`0`)throw Error(N);return{success:i.success,status:i.success?`ok`:`error`,statusCode:i.statusCode,msg:i.msg,data:i.data}}catch(t){throw Error(`[GitHub] GET 请求${e}失败: ${t.message}`)}}async post(e,t,n){try{if(!e)throw Error(_);this.setRequestConfig({token:this.userToken});let r=this.createRequest(),i=await r.post(e,t,n);if(i.statusCode===500&&i.msg===`Network Error`)throw Error(P);if(i.statusCode===401)throw Error(A);if((i.statusCode===403||i.statusCode===429)&&i.headers[`x-ratelimit-remaining`]===`0`)throw Error(N);return{success:i.success,status:i.success?`ok`:`error`,statusCode:i.statusCode,msg:i.msg,data:i.data}}catch(t){throw Error(`[GitHUb] POST 请求${e}失败: ${t.message}`)}}async patch(e,t=null,n,r){try{if(!e)throw Error(_);this.setRequestConfig({token:this.userToken});let i=this.createRequest(),a=await i.patch(e,t,n,r);if(a.statusCode===500&&a.msg===`Network Error`)throw Error(P);if(a.statusCode===401)throw Error(A);if((a.statusCode===403||a.statusCode===429)&&a.headers[`x-ratelimit-remaining`]===`0`)throw Error(N);return{success:a.success,status:a.success?`ok`:`error`,statusCode:a.statusCode,msg:a.msg,data:a.data}}catch(t){throw Error(`[GitHub] PATCH 请求${e}失败: ${t.message}`)}}async put(e,t,n){try{if(!e)throw Error(_);this.setRequestConfig({token:this.userToken});let r=this.createRequest(),i=await r.put(e,t,n);if(i.statusCode===500&&i.msg===`Network Error`)throw Error(P);if(i.statusCode===401)throw Error(A);if((i.statusCode===403||i.statusCode===429)&&i.headers[`x-ratelimit-remaining`]===`0`)throw Error(N);return{success:i.success,status:i.success?`ok`:`error`,statusCode:i.statusCode,msg:i.msg,data:i.data}}catch(t){throw Error(`[GitHUb] PUT 请求${e}失败: ${t.message}`)}}async delete(e,t=null,n,r){try{if(!e)throw Error(_);this.setRequestConfig({token:this.userToken});let i=this.createRequest(),a=await i.delete(e,t,n,r);if(a.statusCode===500&&a.msg===`Network Error`)throw Error(P);if(a.statusCode===401)throw Error(A);if((a.statusCode===403||a.statusCode===429)&&a.headers[`x-ratelimit-remaining`]===`0`)throw Error(N);return{success:a.success,status:a.success?`ok`:`error`,statusCode:a.statusCode,msg:a.msg,data:a.data}}catch(t){throw Error(`[GitHub] DELETE请求 ${e} 失败: ${t.message}`)}}};export{Vt as AccessTokenSuccessMsg,Ht as AccessTokenValidMsg,De as CommitNotFoundMsg,Oe as CommitOrRepoNotFoundMsg,ht as ConflictPullRequestShaValueMsg,Kt as DisableRepoWorkflowSuccessMsg,Gt as EnableRepoWorkflowSuccessMsg,E as ExpiredAccessTokenMsg,M as FailedRevokeAppAccrssTokenMsg,Ie as FailedToDisableRepoWorkflowFailedMsg,Fe as FailedToEnableRepoWorkflowFailedMsg,O as FailedToFetchAccessTokenMsg,Le as FailedToReRunRepoWorkflowFailedMsg,D as FailedToRefreshAccessTokenMsg,je as FailedToRemoveCollaboratorMsg,qe as FailedToRemoveOrgMemberMsg,Pe as FailedToRepoWorkflowDispatchMsg,it as FailedtoLockIssueMsg,ot as FailedtoRemoveIssueMsg,at as FailedtoUnlockIssueMsg,tn as GitHubClient,T as InvalidAccessTokenMsg,vt as InvalidWebHookSignatureFormatMsg,Xe as IssueCommentNotFoundMsg,Yt as IssueCommentRemoveSuccessMsg,Ye as IssueMovedMsg,Je as IssueNotFoundMsg,Jt as IssueUnlockSuccessMsg,Ct as MIssingSearchQueryMsg,me as MissingAccessCodeMsg,v as MissingAccessTokenMsg,g as MissingAppClientMsg,j as MissingAppInstallIdMsg,pe as MissingAppSlugMsg,dt as MissingBaseBranchMsg,ut as MissingHeadBranchMsg,nt as MissingIssueCommentBodyMsg,tt as MissingIssueCommentNumberMsg,$e as MissingIssueNumberMsg,et as MissingIssueTitleMsg,Ne as MissingJobIdMsg,Qe as MissingLinkedIssueIdentifierMsg,Ze as MissingLinkedIssueMsg,Ue as MissingOrgParamMsg,st as MissingPullRequestCommentBodyMsg,ct as MissingPullRequestCommentNumberMsg,lt as MissingPullRequestNumberMsg,Me as MissingRefMsg,he as MissingRefreshTokenMsg,Ce as MissingRepoIdentifierMsg,Se as MissingRepoOwnerOrNameMsg,rt as MissingSubIssueNumberMsg,ge as MissingTitleMsg,ze as MissingUserIdParamMsg,Be as MissingUserNameParamMsg,xt as MissingWebHookPayloadMsg,bt as MissingWebHookSecretMsg,St as MissingWebHookSignatureMsg,ke as MissingWorkflowIdMsg,Ke as OrgForUserNotFoundMsg,He as OrgNotFoundMsg,Ve as OrgNotSupportedMsg,We as OrgOrRepoNotFoundMsg,Ge as OrgOrUserNotFoundMsg,k as PermissionDeniedMsg,Q as ProxyProtocol,Z as ProxyType,mt as PullRequestCommentOrRepoNotFoundMsg,_t as PullRequestCommentRemoveFailedMsg,Zt as PullRequestCommentRemoveSuccessMsg,gt as PullRequestCommentUpdateFailedMsg,Xt as PullRequestCommentUpdateSuccessMsg,ft as PullRequestMergeMethodNotSupportedMsg,pt as PullRequestOrRepoNotFoundMsg,q as ReRunRepoWorkflowSuccessMsg,Bt as RefreshAccessTokenSuccessMsg,Ut as RemoveCollaboratorSuccessMsg,qt as RemoveOrgMemberSuccessMsg,Te as RepoMovedMsg,we as RepoNotFoundMsg,Ee as RepoOrPermissionDeniedMsg,zt as RevokeAccessTokenSuccessMsg,Wt as RunRepoWorkflowSuccessMsg,Re as UserNotFoundMsg,Qt as WebHookSignatureSuccessMsg,yt as WebHookSignatureVerificationFailedMsg,Ae as WorkflowOrRepoNotFoundMsg,$t as create_state_id,Ot as format_date,X as get_base_url,Nt as get_contribution_data,jt as get_langage_color,V as get_local_git_repo_info,Ft as get_local_git_repos_list,K as get_local_npm_package_info,Rt as get_local_npm_packages_list,H as get_local_repo_default_branch,kt as get_relative_time,U as get_remote_repo_default_branch,z as parse_git_url,Tt as render_diff,Lt as render_markdown};