@candriajs/git-neko-kit
Version:
Github, Gitee, GitCode API封装库
5 lines • 118 kB
JavaScript
import ae from'fs';import F from'path';import {exec}from'@candriajs/exec';import Er from'color-convert';import re from'dayjs';import vr from'dayjs/plugin/relativeTime.js';import Mr from'git-url-parse';import Ar from'language-colors';import {simpleGit}from'simple-git';import {tasklist}from'@mdit/plugin-tasklist';import Dr from'markdown-it';import {full}from'markdown-it-emoji';import {isEmpty,capitalize,isString,isObject}from'lodash';import {URL as URL$1,fileURLToPath}from'url';import {v4}from'uuid';import ie from'axios';import {HttpProxyAgent}from'http-proxy-agent';import {HttpsProxyAgent}from'https-proxy-agent';import {SocksProxyAgent}from'socks-proxy-agent';import wr from'crypto';import ts from'jsonwebtoken';var xr=Object.defineProperty;var h=(m,t)=>()=>(m&&(t=m(m=0)),t);var A=(m,t)=>{for(var r in t)xr(m,r,{get:t[r],enumerable:true});};var x,ft,z,wt,bt,Rt,Tt,Le,G,Oe,Pt,kt,Ct,j,xt,De,He,Ne,It,Et,Y,de,vt,Mt,At,qt,R,K,$t,St,f,Be,I,me,C,Ut,We,X,B,Gt,Lt,Ot,Dt,Ht,Nt,Bt,Q,Wt,$,Ft,Z,L,zt,ee,Fe,jt,S,Kt,q,Jt,Vt,O,Yt,ce,Xt,ge,Qt,Zt,ea,ze,_e,W,ta,aa,ra,ye,te,sa,oa,na,ia,la,pa,ua,da,je,J,Ke=h(()=>{x="\u55B5\u545C~ \u5F53\u524D\u5BA2\u6237\u7AEF\u7C7B\u578B\u4E0D\u662FApp\u7C7B\u578B, \u4E0D\u652F\u6301\u6B64\u64CD\u4F5C\u54E6",ft="\u55B5\u545C~ \u5E94\u7528\u5BA2\u6237\u7AEF\u914D\u7F6E\u4E0D\u5B8C\u6574",z="\u55B5\u545C~ \u8BF7\u6C42\u8DEF\u5F84\u4E0D\u80FD\u4E3A\u7A7A",wt="\u55B5\u545C~ \u5E94\u7528\u5BA2\u6237\u7AEFID\u4E0D\u80FD\u4E3A\u7A7A",bt="\u55B5\u545C~ \u5E94\u7528\u5BA2\u6237\u7AEFID\u4E0D\u80FD\u4E3A\u7A7A",Rt="\u55B5\u545C~ \u5E94\u7528\u5BC6\u94A5\u4E0D\u80FD\u4E3A\u7A7A",Tt="\u55B5\u545C~ \u5E94\u7528\u6807\u8BC6\u7B26\u4E0D\u80FD\u4E3A\u7A7A",Le="\u55B5\u545C~ \u6388\u6743\u7801\u4E0D\u80FD\u4E3A\u7A7A",G="\u55B5\u545C~ \u8BBF\u95EE\u4EE4\u724C\u4E0D\u80FD\u4E3A\u7A7A",Oe="\u55B5\u545C~ \u5237\u65B0\u4EE4\u724C\u4E0D\u80FD\u4E3A\u7A7A",Pt="\u55B5\u545C~ \u8BF7\u63D0\u4F9B\u6807\u9898",kt="\u55B5\u545C~ \u4EE3\u7801\u914D\u7F6E\u4E0D\u6B63\u786E\u5462",Ct="\u55B5\u545C~ \u4EE3\u7406\u5730\u5740\u683C\u5F0F\u4E0D\u6B63\u786E\u54E6",j="\u55B5\u545C~ \u672C\u5730\u4ED3\u5E93\u8DEF\u5F84\u4E0D\u80FD\u4E3A\u7A7A",xt="\u55B5\u545C~ \u8FDC\u7A0B\u4ED3\u5E93URL\u4E0D\u80FD\u4E3A\u7A7A",De="\u55B5\u545C~ \u4EE3\u7406URL\u4E0D\u80FD\u4E3A\u7A7A",He="\u55B5\u545C~ \u8FD9\u4E2A Git \u7C7B\u578B\u4E0D\u652F\u6301\u54E6",Ne="\u55B5\u545C~ \u8FD9\u4E2A URL \u534F\u8BAE\u4E0D\u652F\u6301\u54E6",It=m=>`\u55B5\u545C~ \u4EE3\u7406\u7C7B\u578B ${m} \u4E0D\u652F\u6301\u54E6`,Et=m=>`\u55B5\u545C~ \u4ED3\u5E93URL ${m} \u4E0D\u5B58\u5728\u54E6`,Y=m=>`\u55B5\u545C~ \u672C\u5730\u4ED3\u5E93\u8DEF\u5F84 ${m} \u4E0D\u5B58\u5728\u54E6`,de="\u55B5\u545C~ Git \u5BA2\u6237\u7AEF\u672A\u5B89\u88C5\u6216\u672A\u6B63\u786E\u914D\u7F6E",vt="\u55B5\u545C~ \u8FD9\u4E2A\u4EE4\u724C\u4F3C\u4E4E\u4E0D\u662F\u6709\u6548\u7684",Mt="\u55B5\u545C~ \u8BBF\u95EE\u4EE4\u724C\u5DF2\u8FC7\u671F",At="\u55B5\u545C~ \u8BBF\u95EE\u4EE4\u724C\u5237\u65B0\u5931\u8D25",qt="\u55B5\u545C~ \u83B7\u53D6\u8BBF\u95EE\u4EE4\u724C\u5931\u8D25",R="\u55B5\u545C~ \u8BBF\u95EE\u88AB\u62D2\u7EDD\u5566\uFF0C\u53EF\u80FD\u662F\u4EE4\u724C\u8FC7\u671F\u4E86\u6216\u6743\u9650\u4E0D\u8DB3",K="\u55B5\u545C~ \u8BBF\u95EE\u88AB\u62D2\u7EDD\uFF0C\u8BF7\u68C0\u67E5\u4EE4\u724C\u662F\u5426\u6B63\u786E",$t="\u55B5\u545C~ \u5E94\u7528\u5B89\u88C5ID\u4E0D\u80FD\u4E3A\u7A7A",St="\u55B5\u545C~ \u64A4\u9500\u8BBF\u95EE\u4EE4\u724C\u5931\u8D25",f="\u55B5\u545C~ \u4ED3\u5E93\u62E5\u6709\u8005\u6216\u4ED3\u5E93\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A",Be="\u55B5\u545C~ \u8BF7\u63D0\u4F9B\u4ED3\u5E93\u4FE1\u606F(\u4ED3\u5E93\u62E5\u6709\u8005/\u4ED3\u5E93\u540D\u6216\u5B8C\u6574URL)",I="\u55B5\u545C~ \u8FD9\u4E2A\u4ED3\u5E93\u4E0D\u5B58\u5728\u54E6",me="\u55B5\u545C~ \u8FD9\u4E2A\u4ED3\u5E93\u5DF2\u88AB\u79FB\u52A8",C="\u55B5\u545C~ \u8FD9\u4E2A\u4ED3\u5E93\u4E0D\u5B58\u5728\u6216\u8BBF\u95EE\u88AB\u62D2\u7EDD\u5566\uFF0C\u53EF\u80FD\u662F\u4EE4\u724C\u8FC7\u671F\u4E86\u6216\u6743\u9650\u4E0D\u8DB3",Ut="\u55B5\u545C~ \u8FD9\u4E2A\u63D0\u4EA4\u4E0D\u5B58\u5728\u54E6",We="\u55B5\u545C~ \u8FD9\u4E2A\u63D0\u4EA4\u6216\u4ED3\u5E93\u4E0D\u5B58\u5728\u54E6",X="\u55B5\u545C~ \u5DE5\u4F5C\u6D41ID\u4E0D\u80FD\u4E3A\u7A7A",B="\u55B5\u545C~ \u8FD9\u4E2A\u5DE5\u4F5C\u6D41\u6216\u4ED3\u5E93\u4E0D\u5B58\u5728\u54E6",Gt=m=>`\u55B5\u545C~ \u79FB\u9664\u534F\u4F5C\u8005\u5931\u8D25${m}\u54E6`,Lt="\u55B5\u545C~ \u5F15\u7528\u5206\u652F\u6216\u6807\u7B7E\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\u54E6",Ot="\u55B5\u545C~ \u5DE5\u4F5C\u6D41\u4F5C\u4E1AID\u4E0D\u80FD\u4E3A\u7A7A",Dt=m=>`\u55B5\u545C~ \u5DE5\u4F5C\u6D41${m}\u624B\u52A8\u89E6\u53D1\u89E6\u53D1\u5931\u8D25`,Ht=m=>`\u55B5\u545C~ \u5DE5\u4F5C\u6D41${m}\u542F\u7528\u5931\u8D25`,Nt=m=>`\u55B5\u545C~ \u5DE5\u4F5C\u6D41${m}\u7981\u7528\u5931\u8D25`,Bt=m=>`\u55B5\u545C~ \u5DE5\u4F5C\u6D41\u4F5C\u4E1A${m}\u91CD\u65B0\u8FD0\u884C\u5931\u8D25`,Q="\u55B5\u545C~ \u8FD9\u4E2A\u7528\u6237\u4E0D\u5B58\u5728\u54E6",Wt="\u55B5\u545C~ \u7528\u6237ID\u4E0D\u80FD\u4E3A\u7A7A",$="\u55B5\u545C~ \u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A",Ft="\u55B5\u545C~ \u7EC4\u7EC7\u8D26\u53F7\u6682\u4E0D\u652F\u6301",Z="\u55B5\u545C~ \u8FD9\u4E2A\u7EC4\u7EC7\u4E0D\u5B58\u5728\u54E6",L="\u55B5\u545C~ \u7EC4\u7EC7\u540D\u4E0D\u80FD\u4E3A\u7A7A",zt="\u55B5\u545C~ \u8FD9\u4E2A\u7EC4\u7EC7\u6216\u4ED3\u5E93\u4E0D\u5B58\u5728\u54E6",ee="\u55B5\u545C~ \u8FD9\u4E2A\u7EC4\u7EC7\u6216\u7528\u6237\u4E0D\u5B58\u5728\u54E6",Fe="\u55B5\u545C~ \u627E\u4E0D\u5230\u7528\u6237\u7BA1\u7406\u7684\u7EC4\u7EC7\u54E6",jt=m=>`\u55B5\u545C~ \u79FB\u9664\u7EC4\u7EC7\u6210\u5458\u5931\u8D25${m}\u54E6`,S="\u55B5\u545C~ \u8FD9\u4E2A\u8BAE\u9898\u4E0D\u5B58\u5728\u54E6",Kt="\u55B5\u545C~ \u8FD9\u4E2A\u8BAE\u9898\u5DF2\u88AB\u79FB\u52A8",q="\u55B5\u545C~ \u8FD9\u4E2A\u8BAE\u9898\u8BC4\u8BBA\u4E0D\u5B58\u5728\u54E6",Jt="\u55B5\u545C~ \u8FD9\u4E2A\u5173\u8054\u8BAE\u9898\u4E0D\u80FD\u4E3A\u7A7A\u54E6",Vt="\u55B5\u545C~ \u8FD9\u4E2A\u5173\u8054\u8BAE\u9898\u7F16\u53F7\u6216\u6807\u9898\u4E0D\u80FD\u4E3A\u7A7A\u54E6",O="\u55B5\u545C~ \u8FD9\u4E2A\u8BAE\u9898\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A\u54E6",Yt="\u55B5\u545C~ \u8BAE\u9898\u6807\u9898\u4E0D\u80FD\u4E3A\u7A7A\u54E6",ce="\u55B5\u545C~ \u8FD9\u4E2A\u8BAE\u9898\u8BC4\u8BBA\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A\u54E6",Xt="\u55B5\u545C~ \u8FD9\u4E2A\u8BAE\u9898\u8BC4\u8BBA\u5185\u5BB9\u4E0D\u80FD\u4E3A\u7A7A\u54E6",ge="\u55B5\u545C~ \u8FD9\u4E2A\u5B50\u8BAE\u9898\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A\u54E6",Qt="\u55B5\u545C~ \u9501\u5B9A\u8BAE\u9898\u5931\u8D25",Zt="\u55B5\u545C~ \u89E3\u9501\u8BAE\u9898\u5931\u8D25",ea="\u55B5\u545C~ \u5220\u9664\u8BAE\u9898\u5931\u8D25",ze="\u55B5\u545C~ \u8FD9\u4E2A\u62C9\u53D6\u8BF7\u6C42\u8BC4\u8BBA\u5185\u5BB9\u4E0D\u80FD\u4E3A\u7A7A\u54E6",_e="\u55B5\u545C~ \u8FD9\u4E2A\u62C9\u53D6\u8BF7\u6C42\u8BC4\u8BBA\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A\u54E6",W="\u55B5\u545C~ \u8FD9\u4E2A\u62C9\u53D6\u8BF7\u6C42\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A\u54E6",ta="\u55B5\u545C~ \u8BF7\u63D0\u4F9B\u6E90\u5206\u652F",aa="\u55B5\u545C~ \u8BF7\u63D0\u4F9B\u76EE\u6807\u5206\u652F",ra="\u55B5\u545C~ \u62C9\u53D6\u8BF7\u6C42\u7684\u5408\u5E76\u65B9\u5F0F\u4E0D\u652F\u6301",ye="\u55B5\u545C~ \u62C9\u53D6\u8BF7\u6C42\u7F16\u53F7\u6216\u4ED3\u5E93\u4E0D\u5B58\u5728",te="\u55B5\u545C~ \u62C9\u53D6\u8BF7\u6C42\u8BC4\u8BBA\u7F16\u53F7\u6216\u4ED3\u5E93\u4E0D\u5B58\u5728",sa="\u55B5\u545C~ \u8FD9\u4E2ASHA\u503C\u4E0E\u5934\u90E8\u5206\u652F\u7684SHA\u503C\u4E0D\u5339\u914D",oa="\u55B5\u545C~ \u62C9\u53D6\u8BF7\u6C42\u8BC4\u8BBA\u66F4\u65B0\u5931\u8D25",na="\u55B5\u545C~ \u62C9\u53D6\u8BF7\u6C42\u8BC4\u8BBA\u5220\u9664\u5931\u8D25",ia="\u55B5\u545C~ WebHook \u7B7E\u540D\u683C\u5F0F\u4E0D\u6B63\u786E",la="\u55B5\u545C~ WebHook \u7B7E\u540D\u9A8C\u8BC1\u5931\u8D25",pa="\u55B5\u545C~ WebHook \u7B7E\u540D\u5BC6\u94A5\u4E0D\u80FD\u4E3A\u7A7A\u54E6",ua="\u55B5\u545C~ WebHook \u8BF7\u6C42\u4F53\u4E0D\u80FD\u4E3A\u7A7A\u54E6",da="\u55B5\u545C~ WebHook \u7B7E\u540D\u5934\u4E0D\u80FD\u4E3A\u7A7A\u54E6",je="\u55B5\u545C~ \u641C\u7D22\u67E5\u8BE2\u4E0D\u80FD\u4E3A\u7A7A\u54E6",J="\u55B5\u545C~ \u8BBF\u95EE\u901F\u7387\u53D7\u9650\u5566 \u8BF7\u7B49\u5F851\u5C0F\u65F6\u540E\u518D\u8BD5 \u6216 \u4F7F\u7528\u8BBF\u95EE\u4EE4\u724C\u63D0\u5347\u9650\u989D";});async function Je(m,t){return await exec(m,t)}async function E(m){try{return await ae.promises.access(m,ae.constants.F_OK),!0}catch{return false}}function ca(m=""){try{let t=F.resolve(m).replace(/\\/g,"/");if(!ae.existsSync(t))return {};let r=ae.readFileSync(t,"utf8");return JSON.parse(r)}catch(t){return console.error(`\u8BFB\u53D6 JSON \u6587\u4EF6\u5931\u8D25: ${m}`,t),{}}}async function Ve(m=""){try{let t=F.resolve(m).replace(/\\/g,"/");if(!await E(t))return {};let r=await ae.promises.readFile(t,"utf8");return JSON.parse(r)}catch(t){return console.error(`\u8BFB\u53D6 JSON \u6587\u4EF6\u5931\u8D25: ${m}`,t),{}}}async function ga(m="zh-cn"){let t=String(m).toLowerCase();if(qr.has(t)){re.locale(t);return}await import(`dayjs/locale/${t}.js`),re.locale(m);}async function p(m,t="zh-cn",r="YYYY-MM-DD HH:mm:ss"){return await ga(t),re(m).locale(t).format(r)}async function $r(m,t="zh-cn"){return await ga(t),re.extend(vr),re(m).fromNow()}function D(m){let t=/^https?:\/\/[^/]+\/(?:https?:\/\/)?([^/]+\/[^/]+\/[^/]+)/,r=m.match(t);if(r){let o=r[1];m=o.startsWith("https")?o:`https://${o}`;}let s=Mr(m);return {html_url:s.toString("https").replace(/\.git$/,""),owner:s.owner,repo:s.name}}function Sr(m){if(!Array.isArray(m))throw new Error("RGB\u503C\u5FC5\u987B\u662F\u6570\u7EC4\u7C7B\u578B");if(m.length!==3)throw new Error("RGB\u6570\u7EC4\u5FC5\u987B\u5305\u542B\u4E14\u4EC5\u5305\u542B3\u4E2A\u503C");if(!m.every(t=>Number.isInteger(t)&&t>=0&&t<=255))throw new Error("RGB\u503C\u5FC5\u987B\u90FD\u662F0-255\u4E4B\u95F4\u7684\u6574\u6570");return `#${Er.rgb.hex(m)}`}function Ye(m){return m=String(m).toLowerCase(),Sr(Ar[m].color)??"#ededed"}async function Ur(m,t){return Promise.resolve(Array.from({length:Math.ceil(m.length/t)},(r,s)=>m.slice(s*t,s*t+t)))}async function _a(m){try{if(!m)return {total:0,contributions:[]};let t=/data-date="(.*?)" id="contribution-day-component/g,r=/<tool-tip .*?class="sr-only position-absolute">(.*?) contribution/g,s=Array.from(m.matchAll(t),n=>n[1]),o=Array.from(m.matchAll(r),n=>String(n[1]).toLowerCase()==="no"?0:parseInt(n[1]));if(!s.length||!o.length)return {total:0,contributions:[]};let e=s.map((n,i)=>({date:n,count:o[i]})).sort((n,i)=>n.date.localeCompare(i.date)),a=await Ur(e,7);return {total:o.reduce((n,i)=>n+i,0),contributions:a}}catch(t){throw new Error(`\u89E3\u6790\u8D21\u732E\u6570\u636E\u5931\u8D25: ${t.message}`)}}var qr,he=h(()=>{qr=new Set(["en"]);});async function Gr(){try{return await simpleGit().raw(["--version"])}catch{return null}}async function Xe(){return !!await Gr()}async function ha(m){try{if(!m)throw new Error(j);if(!await E(F.join(m))||!await E(F.join(m,".git")))return null;let r=await simpleGit(m).getRemotes(!0);if(r.length>0){let s=r[0].refs.push,{owner:o,repo:e,html_url:a}=D(s);return {name:F.basename(m),path:F.join(m),url:s,html_url:a,owner:o,repo:e,default_branch:await fa(m)}}return null}catch(t){throw new Error(`\u83B7\u53D6\u672C\u5730\u4ED3\u5E93\u4FE1\u606F\u5931\u8D25: ${t}`)}}async function Lr(m,t={loop:false,maxDepth:5,dir:[]}){let{loop:r=false,maxDepth:s=5,dir:o=[]}=t,e=async(a,n=0)=>{try{if(!await E(a))return [];if(!(await ae.promises.stat(a)).isDirectory())return [];let l=[],u=await ha(a);if(u&&l.push(u),r&&n<s){let _=await ae.promises.readdir(a,{withFileTypes:!0}),T=await Promise.all(_.filter(y=>y.isDirectory()&&!o.includes(y.name)).map(async y=>{let c=F.join(a,y.name);return await e(c,n+1)}));l.push(...T.flat());}return l}catch{return []}};try{if(!m)throw new Error(j);if(m=F.resolve(m).replace(/\\/g,"/"),!await E(m))throw new Error(Y(m));if(!await Xe())throw new Error(de);let a=await e(m);return {total:a.length,items:a}}catch(a){throw new Error(`\u83B7\u53D6\u672C\u5730\u76EE\u5F55git\u4ED3\u5E93\u5217\u8868\u5931\u8D25: ${a.message}`)}}async function fa(m){if(!m)throw new Error(j);try{if(!await Xe())throw new Error(de);let t=F.join(m);if(!await E(t))throw new Error(Y(t));let o=await simpleGit(m).revparse(["--abbrev-ref","HEAD"]);if(!o)throw new Error("\u55B5\u545C~, \u65E0\u6CD5\u83B7\u53D6\u4ED3\u5E93\u5206\u652F\u4FE1\u606F\uFF0C\u8BF7\u786E\u4FDD\u4ED3\u5E93\u5DF2\u521D\u59CB\u5316");return o.trim()}catch(t){throw new Error(`\u83B7\u53D6\u672C\u5730\u4ED3\u5E93\u9ED8\u8BA4\u5206\u652F\u5931\u8D25: ${t.message}`)}}async function se(m){if(!m)throw new Error(xt);try{if(!await Xe())throw new Error(de);let t=new URL(m),{owner:r,repo:s}=D(t.href);if(!(r||s))throw new Error(Et(t.href));let a=(await simpleGit().raw(["ls-remote","--symref",m,"HEAD"])).match(/^ref: refs\/heads\/([^\t\n]+)/m);if(!a)throw new Error("\u55B5\u545C~, \u65E0\u6CD5\u4ECE\u8FDC\u7A0B\u4ED3\u5E93\u83B7\u53D6\u9ED8\u8BA4\u5206\u652F\u4FE1\u606F");return a[1]}catch(t){throw new Error(`\u83B7\u53D6\u8FDC\u7A0B\u4ED3\u5E93\u9ED8\u8BA4\u5206\u652F\u5931\u8D25: ${t.message}`)}}var wa=h(()=>{Ke();he();});async function Nr(){let m=new Dr({html:true,breaks:true});return m.use(full),m.use(tasklist),m.renderer.rules.bullet_list_open=()=>'<ul style="list-style: none;">',Promise.resolve(m)}async function Br(m){let t=await Nr();return Promise.resolve(t.render(m))}var ba=h(()=>{});function Ra(m){if(isString(m))return m;if(isObject(m))return m.url}async function Ta(m,t,r){let s=D(r);return {name:m.name,path:t,html_url:s.html_url,owner:s.owner,repo:s.repo,default_branch:await se(r)}}async function Pa(m){try{if(!m)return null;let t=F.join(process.cwd(),"node_modules",m);try{let{stdout:e}=await Je(`npm view ${m} --json`);if(e&&!isEmpty(e)){let a=JSON.parse(e),n=Ra(a.repository)?.replace(/^git\+/,"");if(n)return await Ta(a,t,n)}}catch{}if(!await E(t))return null;let r=F.join(t,"package.json");if(!await E(r))return null;let s=await Ve(r);if(isEmpty(s))return null;let o=Ra(s.repository)?.replace(/^git\+/,"");return o?await Ta(s,t,o):null}catch{return null}}async function zr(m,t){let{packageName:r=[],prefix:s=""}=t??{};if(!F)throw new Error(j);if(!await E(m))throw new Error(Y(m));let o=F.join(m,"node_modules");if(!await E(o))return {total:0,items:[]};let e=[];try{let{stdout:l}=await Je("npm list --prod --depth=0 --json",{cwd:m});if(l&&!isEmpty(l)){let u=JSON.parse(l);u.dependencies&&(e=Object.keys(u.dependencies));}}catch{let u=F.join(m,"package.json");if(!await E(u))return {total:0,items:[]};let _=await Ve(u);if(isEmpty(_))return {total:0,items:[]};e=Object.keys(_.dependencies??{});}let n=e.filter(l=>!r.includes(l)).filter(l=>!s||l.startsWith(s)).map(l=>Pa(l)),i=(await Promise.all(n)).filter(l=>l!==null);return {total:i.length,items:i}}var ka=h(()=>{k();});var Ca,xa,Ia,Ea,va,Ma,Aa,qa,$a,Sa,Qe,Ua,Ga,La,Oa,Da=h(()=>{Ca="\u55B5\u545C~ \u8BBF\u95EE\u4EE4\u724C\u64A4\u9500\u6210\u529F",xa="\u55B5\u545C~ \u8BBF\u95EE\u4EE4\u724C\u5237\u65B0\u6210\u529F",Ia="\u55B5\u545C~ \u8BBF\u95EE\u4EE4\u724C\u83B7\u53D6\u6210\u529F",Ea="\u55B5\u545C~ \u8BBF\u95EE\u4EE4\u724C\u6709\u6548",va=m=>`\u55B5\u545C~ \u79FB\u9664\u534F\u4F5C\u8005\u6210\u529F${m}\u54E6`,Ma=m=>`\u55B5\u545C~ \u5DE5\u4F5C\u6D41\u8FD0\u884C\u6210\u529F${m}\u54E6`,Aa=m=>`\u55B5\u545C~ \u5DE5\u4F5C\u6D41\u542F\u7528\u6210\u529F${m}\u54E6`,qa=m=>`\u55B5\u545C~ \u5DE5\u4F5C\u6D41\u7981\u7528\u6210\u529F${m}\u54E6`,$a=m=>`\u55B5\u545C~ \u5DE5\u4F5C\u6D41\u4EFB\u52A1\u91CD\u65B0\u8FD0\u884C\u6210\u529F${m}\u54E6`,Sa=m=>`\u55B5\u545C~ \u79FB\u9664\u7EC4\u7EC7\u6210\u5458${m}\u6210\u529F`,Qe="\u55B5\u545C~ \u8BAE\u9898\u89E3\u9501\u6210\u529F",Ua="\u55B5\u545C~ \u8BAE\u9898\u8BC4\u8BBA\u5220\u9664\u6210\u529F",Ga="\u55B5\u545C~ \u62C9\u53D6\u8BF7\u6C42\u8BC4\u8BBA\u66F4\u65B0\u6210\u529F",La="\u55B5\u545C~ \u62C9\u53D6\u8BF7\u6C42\u8BC4\u8BBA\u5220\u9664\u6210\u529F",Oa="\u55B5\u545C~ WebHook\u7B7E\u540D\u9A8C\u8BC1\u6210\u529F";});var Jr,Ha,Na=h(()=>{Jr=Object.freeze(fileURLToPath(import.meta.url)),Ha=Object.freeze(F.join(Jr,"../..").replace(/\\/g,"/"));});var ne,Ba=h(()=>{he();Na();ne=ca(`${Ha}/package.json`);});var k=h(()=>{Ke();wa();ba();ka();Da();he();Ba();});function Ze(m="github",t={}){if(!["github","gitee","gitcode"].includes(m))throw new Error(He);let{proxyUrl:s,proxyType:o="original"}=t,e={github:"api.github.com",gitee:"gitee.com/api/v5",gitcode:"api.gitcode.com/api/v5"},a=`https://${e[m]}`;if(o!=="original"){if(!s)throw new Error(De);if(!s.startsWith("http"))throw new Error(Ne);let n=s.replace(/(^\/|\/$)/g,"");return o==="common"?`${n}/${e[m]}`:n}return a.replace(/\/$/,"")}function V(m="github",t={}){if(!["github","gitee","gitcode"].includes(m))throw new Error(He);let{proxyUrl:s,proxyType:o="original"}=t,e={github:"github.com",gitee:"gitee.com",gitcode:"gitcode.com"},a=`https://${e[m]}`;if(o!=="original"){if(!s)throw new Error(De);if(!s.startsWith("http"))throw new Error(Ne);let n=s.replace(/(^\/|\/$)/g,"");return o==="common"?`${n}/${e[m]}`:n}return a.replace(/\/$/,"")}async function Yr(){return Promise.resolve(v4().replace(/-/g,""))}var et=h(()=>{k();});var be,tt=h(()=>{k();be=class{baseUrl;tokenType;authorization;proxy;defaultHeaders;constructor(t,r="Bearer",s,o,e){this.baseUrl=t.replace(/\/$/,""),this.authorization=s,this.proxy=o,this.tokenType=r,this.defaultHeaders=e;}async request(t,r,s,o,e){let a=`${this.baseUrl}/${r}`.replace(/\/+/g,"/"),n={headers:this.createHeaders(e),params:s,validateStatus:()=>true};if(this.proxy){let i=this.proxy.type,l=this.proxy.address;switch(i){case "http":n.httpAgent=new HttpProxyAgent(l),n.httpsAgent=new HttpsProxyAgent(l);break;case "https":n.httpsAgent=new HttpsProxyAgent(l);break;case "socks":case "socks5":{let u=new SocksProxyAgent(l);n.httpAgent=u,n.httpsAgent=u;break}}}try{let i;switch(t){case "get":i=await ie.get(a,n);break;case "post":i=await ie.post(a,o,n);break;case "patch":i=await ie.patch(a,o,n);break;case "put":i=await ie.put(a,o,n);break;case "delete":i=await ie.delete(a,{...n,data:o});break;default:throw new Error(`\u4E0D\u652F\u6301\u7684\u8BF7\u6C42\u65B9\u6CD5: ${t}`)}let l=Object.fromEntries(Object.entries(i.headers).filter(([u,_])=>_!==void 0).map(([u,_])=>[u.toLowerCase(),_]));return {success:!0,statusCode:i.status,headers:l,data:i.data,msg:i.status>=200&&i.status<500?"\u8BF7\u6C42\u6210\u529F":"\u8BF7\u6C42\u5F02\u5E38"}}catch(i){let l=i,u=l.response?.headers?Object.fromEntries(Object.entries(l.response.headers).filter(([_,T])=>T!==void 0).map(([_,T])=>[_,T])):{};return {success:false,statusCode:l.response?.status??500,headers:u,msg:l.message??"\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25",data:null}}}async get(t,r,s){return this.request("get",t,r,null,s)}async post(t,r,s,o){return this.request("post",t,r,s,o)}async patch(t,r=null,s,o){return this.request("patch",t,r,s,o)}async put(t,r,s,o){return this.request("put",t,r,s,o)}async delete(t,r=null,s,o){return this.request("delete",t,r,s,o)}createHeaders(t){let s={"Content-Type":"application/json","User-Agent":`${ne.name.includes("/")?ne.name.split("/").pop():ne.name}/v${ne.version}`,...this.defaultHeaders??{}};if(this.authorization)if(this.tokenType==="Basic"){let o=Buffer.from(this.authorization).toString("base64");s.Authorization=`Basic ${o}`;}else this.tokenType==="Bearer"?s.Authorization=`Bearer ${this.authorization}`:s.Authorization=`${this.tokenType} ${this.authorization}`;return t&&Object.assign(s,t),s}};});var Re=h(()=>{et();tt();});var le,at,Fa=h(()=>{le=(s=>(s.Reverse="reverse",s.Original="original",s.Common="common",s))(le||{}),at=(o=>(o.HTTP="http",o.HTTPS="https",o.SOCKS="socks",o.SOCKS5="socks5",o))(at||{});});var za=h(()=>{});var ja=h(()=>{});var Ka=h(()=>{});var Ja=h(()=>{});var Va=h(()=>{});var Ya=h(()=>{});var Xa=h(()=>{Fa();za();ja();Ka();Ja();Va();Ya();});var Qa=h(()=>{});var Za=h(()=>{});var rt=h(()=>{});var er=h(()=>{});var tr=h(()=>{});var Zr,ar=h(()=>{Zr=(e=>(e.Active="active",e.Deleted="deleted",e.DisabledFork="disabled_fork",e.DisabledInactivity="disabled_inactivity",e.DisabledManually="disabled_manually",e))(Zr||{});});var rr=h(()=>{rt();er();tr();ar();});var sr=h(()=>{});var or=h(()=>{});var nr=h(()=>{});var ir=h(()=>{});var lr=h(()=>{});var pr=h(()=>{});var ur=h(()=>{});var dr=h(()=>{});var mr=h(()=>{Za();rt();rr();sr();or();nr();ir();lr();pr();ur();dr();});var pe=h(()=>{Xa();Qa();mr();});var cr={};A(cr,{Auth:()=>Te});var Te,st=h(()=>{k();v();Te=class extends P{constructor(t){super(t),this.userToken=t.userToken,this.api_url=t.api_url,this.base_url=t.base_url;}async get_token_by_code(t){if(!this.is_app_client)throw new Error(x);if(!t.code)throw new Error(Le);try{this.setRequestConfig({url:this.base_url});let r=await this.post("/login/oauth/access_token",{client_id:this.Client_ID,client_secret:this.Client_Secret,code:t.code},{Accept:"application/json"}),s=r.status==="ok"&&r.statusCode===200&&!r.data.error;if(!s)throw new Error(qt);if(r.data){let o={success:s,message:Ia,access_token:r.data.access_token,expires_in:r.data.expires_in??null,refresh_token:r.data.refresh_token??null,refresh_token_expires_in:r.data.refresh_token_expires_in??null,scope:r.data.scope,token_type:r.data.token_type};r.data=o;}return r}catch(r){throw new Error(`[GitHub] \u83B7\u53D6\u8BBF\u95EE\u4EE4\u724C\u5931\u8D25: ${r.message}`)}}async check_token_status(t){try{if(!this.is_app_client)throw new Error(x);let r=t?.access_token??this.userToken;if(!r)throw new Error(vt);if(!r.startsWith("ghu_"))throw new Error(G);this.setRequestConfig({url:this.api_url,tokenType:"Basic",token:`${this.Client_ID}:${this.Client_Secret}`});let s=await this.post(`/applications/${this.Client_ID}/token`,{access_token:r}),o=!(s.status==="ok"&&(s.statusCode===404||s.statusCode===422)),e={success:o,message:o?Ea:Mt};return s.data=e,s}catch(r){throw new Error(`[GitHub] \u83B7\u53D6\u8BBF\u95EE\u4EE4\u724C\u72B6\u6001\u5931\u8D25: ${r.message}`)}}async refresh_token(t){try{if(!this.is_app_client)throw new Error(x);if(!t.refresh_token)throw new Error(Le);if(!t.refresh_token.startsWith("ghr_"))throw new Error(Oe);this.setRequestConfig({url:this.base_url});let r=await this.post("/login/oauth/access_token",{client_id:this.Client_ID,client_secret:this.Client_Secret,grant_type:"refresh_token",refresh_token:t.refresh_token},{Accept:"application/json"}),s=r.status==="ok"&&r.statusCode===200&&!r.data.error,o=At;switch(r.data.error){case "bad_refresh_token":o=Oe;break;case "unauthorized":o=R;break}if(!s)throw new Error(o);if(r.data){let e={success:s,message:xa,access_token:r.data.access_token,expires_in:r.data.expires_in??null,refresh_token:r.data.refresh_token??null,refresh_token_expires_in:r.data.refresh_token_expires_in??null,scope:r.data.scope,token_type:r.data.token_type};r.data=e;}return r}catch(r){throw new Error(`[GitHub] \u5237\u65B0\u8BBF\u95EE\u4EE4\u724C\u5931\u8D25: ${r.message}`)}}async create_auth_link(t){try{if(!this.is_app_client)throw new Error(x);let r=new URL("/login/oauth/authorize",this.base_url);return r.search=new URLSearchParams({client_id:this.Client_ID,...t&&{state:t}}).toString(),Promise.resolve(r.toString())}catch(r){throw new Error(`[GitHub] \u751F\u6210\u6388\u6743\u94FE\u63A5\u5931\u8D25: ${r.message}`)}}};});var gr={};A(gr,{Commit:()=>ke});var ke,ot=h(()=>{k();v();ke=class extends P{constructor(t){super(t),this.userToken=t.userToken,this.api_url=t.api_url,this.base_url=t.base_url;}async get_commit_info(t){try{this.setRequestConfig({token:this.userToken});let r,s,o,e;if("url"in t){o=t.url;let n=D(o);r=n?.owner,s=n?.repo;}else if("owner"in t&&"repo"in t)r=t.owner,s=t.repo;else throw new Error(Be);t.sha?e=t.sha:e=await(await this.get_repo()).get_repo_default_branch({owner:r,repo:s});let a=await this.get(`/repos/${r}/${s}/commits/${e}`);switch(a.statusCode){case 401:throw new Error(C);case 404:throw new Error(We);case 422:throw new Error(Ut)}if(a.data){let[n,i]=await Promise.all([this.format?await p(a.data.commit.author.date):a.data.commit.author.date,this.format?await p(a.data.commit.committer.date):a.data.commit.committer.date]),l=a.data?.commit?.message,[u,..._]=l.split(`
`),T={html_url:a.data.html_url,sha:a.data.sha,comments_url:a.data.comments_url,commit:{url:a.data.commit.url,author:{id:a.data.author.id,login:a.data.author.login,name:isEmpty(a.data.commit.author.name)?null:a.data.commit.author.name,email:isEmpty(a.data.commit.author.email)?null:a.data.commit.author.email,avatar_url:a.data.author.avatar_url,html_url:a.data.author.html_url,type:capitalize(String(a.data.author.type).toLowerCase()),date:n},committer:{id:a.data.committer.id,login:a.data.committer.login,name:isEmpty(a.data.commit.committer.name)?null:a.data.commit.committer.name,email:isEmpty(a.data.commit.committer.email)?null:a.data.commit.committer.email,avatar_url:a.data.committer.avatar_url,html_url:a.data.committer.html_url,type:capitalize(String(a.data.committer.type).toLowerCase()),date:i},message:a.data.commit.message,...this.format&&{title:u,body:_.length>0?_.join(`
`):null},tree:{url:a.data.commit.tree.url,sha:a.data.commit.tree.sha}},parents:a.data.parents.map(y=>({sha:y.sha,url:y.url})),stats:{additions:a.data.stats.additions,deletions:a.data.stats.deletions,total:a.data.stats.total},files:a.data.files.map(y=>({sha:y.sha,filename:y.filename,status:y.status,additions:y.additions,deletions:y.deletions,changes:y.changes,blob_url:y.blob_url,raw_url:y.raw_url}))};a.data=T;}return a}catch(r){throw new Error(`[GitHub] \u83B7\u53D6\u63D0\u4EA4\u4FE1\u606F\u5931\u8D25: ${r.message}`)}}async get_commit_list(t){try{this.setRequestConfig({token:this.userToken});let r,s,o;if("url"in t){o=t.url;let l=D(o);r=l?.owner,s=l?.repo;}else if("owner"in t&&"repo"in t)r=t.owner,s=t.repo;else throw new Error(Be);let{...e}=t;if(t.sha)e.sha=t.sha;else {let u=await(await this.get_repo()).get_repo_default_branch({owner:r,repo:s});u&&(e.sha=u);}let a={};e.sha&&(a.sha=e.sha),e.path&&(a.path=e.path),e.author&&(a.author=e.author),e.since&&(a.since=e.since),e.until&&(a.until=e.until),e.per_page&&(a.per_page=e.per_page.toString()),e.page&&(a.page=e.page.toString());let n=`/repos/${r}/${s}/commits`,i=await this.get(n,a);switch(i.statusCode){case 401:throw new Error(C);case 404:throw new Error(We)}if(i.data){let l=await Promise.all(i.data.map(async u=>{let[_,...T]=u.commit.message.split(`
`);return {html_url:u.html_url,sha:u.sha,comments_url:u.comments_url,commit:{url:u.commit.url,author:{id:u.author.id,login:u.author.login,name:isEmpty(u.committer.name)?null:u.committer.name,email:isEmpty(u.committer.email)?null:u.committer.email,avatar_url:u.author.avatar_url,html_url:u.author.html_url,type:capitalize(String(u.author.type).toLowerCase()),date:this.format?await p(u.commit.author.date):u.commit.author.date},committer:{id:u.committer.id,login:u.committer.login,name:isEmpty(u.committer.name)?null:u.committer.name,email:isEmpty(u.committer.email)?null:u.committer.email,avatar_url:u.committer.avatar_url,html_url:u.committer.html_url,type:capitalize(String(u.committer.type).toLowerCase()),date:this.format?await p(u.commit.committer.date):u.commit.committer.date},message:u.commit.message,...this.format&&{title:_,body:T.length>0?T.join(`
`):null},tree:{url:u.commit.tree.url,sha:u.commit.tree.sha}},parents:u.parents.map(y=>({sha:y.sha,url:y.url})),stats:{additions:u.stats.additions,deletions:u.stats.deletions,total:u.stats.total},files:u.files.map(y=>({sha:y.sha,filename:y.filename,status:y.status,additions:y.additions,deletions:y.deletions,changes:y.changes,blob_url:y.blob_url,raw_url:y.raw_url}))}}));i.data=l;}return i}catch(r){throw new Error(`[GitHub] \u83B7\u53D6\u63D0\u4EA4\u5217\u8868\u5931\u8D25: ${r.message}`)}}};});var _r={};A(_r,{Issue:()=>Ce});var Ce,nt=h(()=>{k();v();Ce=class extends P{constructor(t){super(t),this.userToken=t.userToken,this.api_url=t.api_url,this.base_url=t.base_url;}async get_issue_info(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.issue_number)throw new Error(O);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,issue_number:o}=t,e=await this.get(`/repos/${r}/${s}/issues/${Number(o)}`);switch(e.statusCode){case 404:throw new Error(S);case 301:throw new Error(Kt)}if(e.data){let[a,n,i,l,u,_,T]=await Promise.all([this.format?p(e.data.created_at):e.data.created_at,this.format?p(e.data.updated_at):e.data.updated_at,isEmpty(e.data.closed_at)?null:this.format?await p(e.data.closed_at):e.data.closed_at,isEmpty(e.data.milestone)?null:this.format?await p(e.data.milestone.created_at):e.data.milestone.created_at,isEmpty(e.data.milestone)?null:this.format?await p(e.data.milestone.updated_at):e.data.milestone.updated_at,isEmpty(e.data.milestone)?null:this.format?await p(e.data.milestone.closed_at):e.data.milestone.closed_at,isEmpty(e.data.milestone)?null:this.format?await p(e.data.milestone.due_on):e.data.milestone.due_on]),y={id:e.data.id,html_url:e.data.html_url,number:e.data.number,state:e.data.state,title:e.data.title,body:e.data.body,user:{id:e.data.user.id,login:e.data.user.login,name:isEmpty(e.data.user.name)?null:e.data.user.name,email:isEmpty(e.data.user.email)?null:e.data.user.email,html_url:e.data.user.html_url,avatar_url:e.data.user.avatar_url},labels:isEmpty(e.data.labels)?null:e.data.labels.map(c=>({id:c.id,name:c.name,color:c.color})),assignee:isEmpty(e.data.assignee)?null:{id:e.data.assignee.id,login:e.data.assignee.login,name:isEmpty(e.data.assignee.name)?null:e.data.assignee.name,email:isEmpty(e.data.assignee.email)?null:e.data.assignee.email,html_url:e.data.assignee.html_url,avatar_url:e.data.assignee.avatar_url},assignees:isEmpty(e.data.assignees)?null:e.data.assignees.map(c=>({id:c.id,login:c.login,name:isEmpty(c.name)?null:c.name,email:isEmpty(c.email)?null:c.email,html_url:c.html_url,avatar_url:c.avatar_url})),milestone:isEmpty(e.data.milestone)?null:{id:e.data.milestone.id,url:e.data.milestone.url,number:e.data.milestone.number,state:e.data.milestone.state,title:e.data.milestone.title,description:e.data.milestone.description,open_issues:e.data.milestone.open_issues,closed_issues:e.data.milestone.closed_issues,created_at:l,updated_at:u,closed_at:_,due_on:T},created_at:a,updated_at:n,closed_at:i};e.data=y;}return e}catch(r){throw new Error(`[GitHub] \u83B7\u53D6\u8BAE\u9898\u8BE6\u60C5\u5931\u8D25: ${r.message}`)}}async get_issues_list(t){if(!t.owner||!t.repo)throw new Error(f);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,...o}=t,e={};o.milestone&&(e.milestone=o.milestone.toString()),o.state&&(e.state=o.state),o.assignee&&(e.assignee=o.assignee),o.creator&&(e.creator=o.creator),o.labels&&(e.labels=o.labels),o.sort&&(e.sort=o.sort),o.direction&&(e.direction=o.direction),o.since&&(e.since=o.since),o.per_page&&(e.per_page=o.per_page.toString()),o.page&&(e.page=o.page.toString());let a=`/repos/${r}/${s}/issues`,n=await this.get(a,e);if(n.statusCode===401)throw new Error(R);if(n.data){let i=await Promise.all(n.data.map(async l=>({id:l.id,html_url:l.html_url,number:l.number,state:l.state,title:l.title,body:l.body,user:{id:l.user.id,login:l.user.login,name:isEmpty(l.user.name)?null:l.user.name,email:isEmpty(l.user.email)?null:l.user.email,html_url:l.user.html_url,avatar_url:l.user.avatar_url},labels:isEmpty(l.labels)?null:l.labels.map(u=>({id:u.id,name:u.name,color:u.color})),assignee:isEmpty(l.assignee)?null:{id:l.assignee.id,login:l.assignee.login,name:isEmpty(l.assignee.name)?null:l.assignee.name,email:isEmpty(l.assignee.email)?null:l.assignee.email,html_url:l.assignee.html_url,avatar_url:l.assignee.avatar_url},assignees:isEmpty(l.assignees)?null:l.assignees.map(u=>({id:u.id,login:u.login,name:isEmpty(u.name)?null:u.name,email:isEmpty(u.email)?null:u.email,html_url:u.html_url,avatar_url:u.avatar_url})),milestone:isEmpty(l.milestone)?null:{id:l.milestone.id,url:l.milestone.url,number:l.milestone.number,state:l.milestone.state,title:l.milestone.title,description:l.milestone.description,open_issues:l.milestone.open_issues,closed_issues:l.milestone.closed_issues,created_at:this.format?await p(l.milestone.created_at):l.milestone.created_at,updated_at:this.format?await p(l.milestone.updated_at):l.milestone.updated_at,closed_at:l.milestone.closed_at?this.format?await p(l.milestone.closed_at):l.milestone.closed_at:null,due_on:l.milestone.due_on?this.format?await p(l.milestone.due_on):l.milestone.due_on:null},created_at:this.format?await p(n.data.created_at):n.data.created_at,updated_at:this.format?await p(n.data.updated_at):n.data.updated_at,closed_at:n.data.closed_at?this.format?await p(n.data.closed_at):n.data.closed_at:null})));n.data=i;}return n}catch(r){throw new Error(`[GitHub] \u83B7\u53D6\u4ED3\u5E93\u7684\u8BAE\u9898\u5217\u8868\u5931\u8D25: ${r.message}`)}}async create_issue(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.title)throw new Error(Yt);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,...o}=t,e={...o,...o.labels&&{labels:Array.isArray(o.labels)?o.labels:[o.labels]},...o.assignees&&{assignees:Array.isArray(o.assignees)?o.assignees:[o.assignees]}},a=await this.post(`/repos/${r}/${s}/issues`,e);switch(a.statusCode){case 403:throw new Error(R);case 301:throw new Error(I)}if(a.data&&a.data){let[n,i,l,u,_,T,y]=await Promise.all([this.format?p(a.data.created_at):a.data.created_at,this.format?p(a.data.updated_at):a.data.updated_at,isEmpty(a.data.closed_at)?null:this.format?await p(a.data.closed_at):a.data.closed_at,isEmpty(a.data.milestone)?null:this.format?await p(a.data.milestone.created_at):a.data.milestone.created_at,isEmpty(a.data.milestone)?null:this.format?await p(a.data.milestone.updated_at):a.data.milestone.updated_at,isEmpty(a.data.milestone)?null:this.format?await p(a.data.milestone.closed_at):a.data.milestone.closed_at,isEmpty(a.data.milestone)?null:this.format?await p(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:isEmpty(a.data.user.name)?null:a.data.user.name,email:isEmpty(a.data.user.email)?null:a.data.user.email,html_url:a.data.user.html_url,avatar_url:a.data.user.avatar_url},labels:isEmpty(a.data.labels)?null:a.data.labels.map(g=>({id:g.id,name:g.name,color:g.color})),assignee:isEmpty(a.data.assignee)?null:{id:a.data.assignee.id,login:a.data.assignee.login,name:isEmpty(a.data.assignee.name)?null:a.data.assignee.name,email:isEmpty(a.data.assignee.email)?null:a.data.assignee.email,html_url:a.data.assignee.html_url,avatar_url:a.data.assignee.avatar_url},assignees:isEmpty(a.data.assignees)?null:a.data.assignees.map(g=>({id:g.id,login:g.login,name:isEmpty(g.name)?null:g.name,email:isEmpty(g.email)?null:g.email,html_url:g.html_url,avatar_url:g.avatar_url})),milestone:isEmpty(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:u,updated_at:_,closed_at:T,due_on:y},created_at:n,updated_at:i,closed_at:l};a.data=c;}return a}catch(r){throw new Error(`[GitHub]\u521B\u5EFA\u8BAE\u9898\u5931\u8D25: ${r.message}`)}}async update_issue(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.issue_number)throw new Error(O);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,issue_number:o,...e}=t,a={...e,...e.labels&&{labels:Array.isArray(e.labels)?e.labels:[e.labels]},...e.assignees&&{assignees:Array.isArray(e.assignees)?e.assignees:[e.assignees]}},n=await this.patch(`/repos/${r}/${s}/issues/${Number(o)}`,null,a);switch(n.statusCode){case 404:throw new Error(S);case 403:throw new Error(R);case 301:throw new Error(I)}if(n.data&&n.data){let[i,l,u,_,T,y,c]=await Promise.all([this.format?p(n.data.created_at):n.data.created_at,this.format?p(n.data.updated_at):n.data.updated_at,isEmpty(n.data.closed_at)?null:this.format?await p(n.data.closed_at):n.data.closed_at,isEmpty(n.data.milestone)?null:this.format?await p(n.data.milestone.created_at):n.data.milestone.created_at,isEmpty(n.data.milestone)?null:this.format?await p(n.data.milestone.updated_at):n.data.milestone.updated_at,isEmpty(n.data.milestone)?null:this.format?await p(n.data.milestone.closed_at):n.data.milestone.closed_at,isEmpty(n.data.milestone)?null:this.format?await p(n.data.milestone.due_on):n.data.milestone.due_on]),g={id:n.data.id,html_url:n.data.html_url,number:n.data.number,state:n.data.state,title:n.data.title,body:n.data.body,user:{id:n.data.user.id,login:n.data.user.login,name:isEmpty(n.data.user.name)?null:n.data.user.name,email:isEmpty(n.data.user.email)?null:n.data.user.email,html_url:n.data.user.html_url,avatar_url:n.data.user.avatar_url},labels:isEmpty(n.data.labels)?null:n.data.labels.map(b=>({id:b.id,name:b.name,color:b.color})),assignee:isEmpty(n.data.assignee)?null:{id:n.data.assignee.id,login:n.data.assignee.login,name:isEmpty(n.data.assignee.name)?null:n.data.assignee.name,email:isEmpty(n.data.assignee.email)?null:n.data.assignee,html_url:n.data.assignee.html_url,avatar_url:n.data.assignee.avatar_url},assignees:isEmpty(n.data.assignees)?null:n.data.assignees.map(b=>({id:b.id,login:b.login,name:isEmpty(b.name)?null:b.name,email:isEmpty(b.email)?null:b.email,html_url:b.html_url,avatar_url:b.avatar_url})),milestone:isEmpty(n.data.milestone)?null:{id:n.data.milestone.id,url:n.data.milestone.url,number:n.data.milestone.number,state:n.data.milestone.state,title:n.data.milestone.title,description:n.data.milestone.description,open_issues:n.data.milestone.open_issues,closed_issues:n.data.milestone.closed_issues,created_at:_,updated_at:T,closed_at:y,due_on:c},created_at:i,updated_at:l,closed_at:u};n.data=g;}return n}catch(r){throw new Error(`[GitHub] \u66F4\u65B0\u8BAE\u9898\u5931\u8D25: ${r.message}`)}}async open_issue(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.issue_number)throw new Error(O);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,issue_number:o}=t,e=await this.patch(`/repos/${r}/${s}/issues/${o}`,null,{state:"open"});switch(e.statusCode){case 404:throw new Error(S);case 403:throw new Error(R);case 301:throw new Error(I)}if(e.data&&e.data){let[a,n,i,l,u,_,T]=await Promise.all([this.format?p(e.data.created_at):e.data.created_at,this.format?p(e.data.updated_at):e.data.updated_at,isEmpty(e.data.closed_at)?null:this.format?await p(e.data.closed_at):e.data.closed_at,isEmpty(e.data.milestone)?null:this.format?await p(e.data.milestone.created_at):e.data.milestone.created_at,isEmpty(e.data.milestone)?null:this.format?await p(e.data.milestone.updated_at):e.data.milestone.updated_at,isEmpty(e.data.milestone)?null:this.format?await p(e.data.milestone.closed_at):e.data.milestone.closed_at,isEmpty(e.data.milestone)?null:this.format?await p(e.data.milestone.due_on):e.data.milestone.due_on]),y={id:e.data.id,html_url:e.data.html_url,number:e.data.number,state:e.data.state,title:e.data.title,body:e.data.body,user:{id:e.data.user.id,login:e.data.user.login,name:isEmpty(e.data.user.name)?null:e.data.user.name,email:isEmpty(e.data.user.email)?null:e.data.user.email,html_url:e.data.user.html_url,avatar_url:e.data.user.avatar_url},labels:isEmpty(e.data.labels)?null:e.data.labels.map(c=>({id:c.id,name:c.name,color:c.color})),assignee:isEmpty(e.data.assignee)?null:{id:e.data.assignee.id,login:e.data.assignee.login,name:isEmpty(e.data.assignee.name)?null:e.data.assignee.name,email:isEmpty(e.data.assignee.email)?null:e.data.assignee.email,html_url:e.data.assignee.html_url,avatar_url:e.data.assignee.avatar_url},assignees:isEmpty(e.data.assignees)?null:e.data.assignees.map(c=>({id:c.id,login:c.login,name:isEmpty(c.name)?null:c.name,email:isEmpty(c.email)?null:c.email,html_url:c.html_url,avatar_url:c.avatar_url})),milestone:isEmpty(e.data.milestone)?null:{id:e.data.milestone.id,url:e.data.milestone.url,number:e.data.milestone.number,state:e.data.milestone.state,title:e.data.milestone.title,description:e.data.milestone.description,open_issues:e.data.milestone.open_issues,closed_issues:e.data.milestone.closed_issues,created_at:l,updated_at:u,closed_at:_,due_on:T},created_at:a,updated_at:n,closed_at:i};e.data=y;}return e}catch(r){throw new Error(`[GitHub] \u6253\u5F00\u8BAE\u9898\u5931\u8D25: ${r.message}`)}}async reopen_issue(t){return this.open_issue(t)}async close_issue(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.issue_number)throw new Error(O);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,issue_number:o}=t,e=await this.patch(`/repos/${r}/${s}/issues/${o}`,null,{state:"closed"});switch(e.statusCode){case 404:throw new Error(S);case 403:throw new Error(R);case 301:throw new Error(I)}if(e.data){let[a,n,i,l,u,_,T]=await Promise.all([this.format?p(e.data.created_at):e.data.created_at,this.format?p(e.data.updated_at):e.data.updated_at,isEmpty(e.data.closed_at)?null:this.format?await p(e.data.closed_at):e.data.closed_at,isEmpty(e.data.milestone)?null:this.format?await p(e.data.milestone.created_at):e.data.milestone.created_at,isEmpty(e.data.milestone)?null:this.format?await p(e.data.milestone.updated_at):e.data.milestone.updated_at,isEmpty(e.data.milestone)?null:this.format?await p(e.data.milestone.closed_at):e.data.milestone.closed_at,isEmpty(e.data.milestone)?null:this.format?await p(e.data.milestone.due_on):e.data.milestone.due_on]),y={id:e.data.id,html_url:e.data.html_url,number:e.data.number,state:e.data.state,title:e.data.title,body:e.data.body,user:{id:e.data.user.id,login:e.data.user.login,name:isEmpty(e.data.user.name)?null:e.data.user.name,email:isEmpty(e.data.user.email)?null:e.data.user.email,html_url:e.data.user.html_url,avatar_url:e.data.user.avatar_url},labels:isEmpty(e.data.labels)?null:e.data.labels.map(c=>({id:c.id,name:c.name,color:c.color})),assignee:isEmpty(e.data.assignee)?null:{id:e.data.assignee.id,login:e.data.assignee.login,name:isEmpty(e.data.assignee.name)?null:e.data.assignee.name,email:isEmpty(e.data.assignee.email)?null:e.data.assignee.email,html_url:e.data.assignee.html_url,avatar_url:e.data.assignee.avatar_url},assignees:isEmpty(e.data.assignees)?null:e.data.assignees.map(c=>({id:c.id,login:c.login,name:isEmpty(c.name)?null:c.name,email:isEmpty(c.email)?null:c.email,html_url:c.html_url,avatar_url:c.avatar_url})),milestone:isEmpty(e.data.milestone)?null:{id:e.data.milestone.id,url:e.data.milestone.url,number:e.data.milestone.number,state:e.data.milestone.state,title:e.data.milestone.title,description:e.data.milestone.description,open_issues:e.data.milestone.open_issues,closed_issues:e.data.milestone.closed_issues,created_at:l,updated_at:u,closed_at:_,due_on:T},created_at:a,updated_at:n,closed_at:i};e.data=y;}return e}catch(r){throw new Error(`[GitHub] \u5173\u95ED\u8BAE\u9898\u5931\u8D25: ${r.message}`)}}async lock_issue(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.issue_number)throw new Error(O);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,issue_number:o,lock_reason:e}=t,a=await this.put(`/repos/${r}/${s}/issues/${Number(o)}`,{locked:!0,lock_reason:e});switch(a.statusCode){case 404:throw new Error(S);case 403:throw new Error(R);case 301:throw new Error(I)}let n;return a.statusCode===204?n={success:!0,message:Qe}:n={success:!1,message:Qt},a.data=n,a}catch(r){throw new Error(`[GitHub] \u9501\u5B9A\u8BAE\u9898\u5931\u8D25: ${r.message}`)}}async unlock_issue(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.issue_number)throw new Error(O);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,issue_number:o}=t,e=await this.delete(`/repos/${r}/${s}/issues/${o}/lock`);switch(e.statusCode){case 404:throw new Error(S);case 403:throw new Error(R);case 301:throw new Error(I)}let a;return e.statusCode===204?a={success:!0,message:Qe}:a={success:!1,message:Zt},e.data=a,e}catch(r){throw new Error(`[GitHub] \u89E3\u9501\u8BAE\u9898\u5931\u8D25: ${r.message}`)}}async get_repo_comments_list(t){if(!t.owner||!t.repo)throw new Error(f);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,...o}=t,e={};o.sort&&(e.sort=o.sort),o.direction&&o.direction&&(e.direction=o.direction),o.since&&(e.since=o.since),o.per_page&&(e.per_page=o.per_page.toString()),o.page&&(e.page=o.page.toString());let a=`/repos/${r}/${s}/issues/comments/`,n=await this.get(a,e);if(n.statusCode===404)throw new Error(q);if(n.data){let i=await Promise.all(n.data.map(async l=>({id:l.id,html_url:l.html_url,body:l.body,user:{id:l.user.id,login:l.user.login,name:isEmpty(l.user.name)?null:l.user.name,email:isEmpty(l.user.email)?null:l.user.email,html_url:l.user.html_url,avatar_url:l.user.avatar_url},created_at:this.format?await p(l.created_at):l.created_at,updated_at:this.format?await p(l.updated_at):l.updated_at})));n.data=i;}return n}catch(r){throw new Error(`[GitHub] \u83B7\u53D6\u4ED3\u5E93\u8BC4\u8BBA\u5217\u8868\u5931\u8D25: ${r.message}`)}}async get_issue_comments_list(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.issue_number)throw new Error(O);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,issue_number:o,...e}=t,a={};e.since&&(a.since=e.since),e.per_page&&(a.per_page=e.per_page.toString()),e.page&&(a.page=e.page.toString());let n=`/repos/${r}/${s}/issues/${Number(o)}/comments`,i=await this.get(n,a);if(i.statusCode===404)throw new Error(q);if(i.data){let l=await Promise.all(i.data.map(async u=>({id:u.id,html_url:u.html_url,body:u.body,user:{id:u.user.id,login:u.user.login,name:isEmpty(u.user.name)?null:u.user.name,email:isEmpty(u.user.email)?null:u.user.email,html_url:u.user.html_url,avatar_url:u.user.avatar_url},created_at:this.format?await p(u.created_at):u.created_at,updated_at:this.format?await p(u.updated_at):u.updated_at})));i.data=l;}return i}catch(r){throw new Error(`[GitHub] \u83B7\u53D6\u8BAE\u9898\u8BC4\u8BBA\u5217\u8868\u5931\u8D25: ${r.message}`)}}async get_issue_comment_info(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.comment_id)throw new Error(ce);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,comment_id:o}=t,e=await this.get(`/repos/${r}/${s}/issues/comments/${Number(o)}`);if(e.statusCode===404)throw new Error(q);if(e.data){let[a,n]=await Promise.all([this.format?await p(e.data.created_at):e.data.created_at,this.format?await p(e.data.updated_at):e.data.updated_at]),i={id:e.data.id,html_url:e.data.html_url,body:e.data.body,user:{id:e.data.user.id,login:e.data.user.login,name:isEmpty(e.data.user.name)?null:e.data.user.name,email:isEmpty(e.data.user.email)?null:e.data.user.email,html_url:e.data.user.html_url,avatar_url:e.data.user.avatar_url},created_at:a,updated_at:n};e.data=i;}return e}catch(r){throw new Error(`[GitHub] \u83B7\u53D6\u8BAE\u9898\u8BC4\u8BBA\u4FE1\u606F\u5931\u8D25: ${r.message}`)}}async create_issue_comment(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.issue_number)throw new Error(q);if(!t.body)throw new Error(Xt);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,issue_number:o,body:e}=t,a=await this.post(`/repos/${r}/${s}/issues/${Number(o)}/comments`,{body:e});if(a.statusCode===404)throw new Error(q);if(a.data){let[n,i]=await Promise.all([this.format?await p(a.data.created_at):a.data.created_at,this.format?await p(a.data.updated_at):a.data.updated_at]),l={id:a.data.id,html_url:`${this.base_url}/${r}/${s}/issues/${o}#${a.data.id}`,body:a.data.body,user:{id:a.data.user.id,login:a.data.user.login,name:isEmpty(a.data.user.name)?null:a.data.user.name,email:isEmpty(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:n,updated_at:i};a.data=l;}return a}catch(r){throw new Error(`[GitHub] \u521B\u5EFA\u8BAE\u9898\u8BC4\u8BBA\u5931\u8D25: ${r.message}`)}}async update_issue_comment(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.comment_id)throw new Error(ce);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,comment_id:o,...e}=t,a=await this.patch(`/repos/${r}/${s}/issues/comments/${Number(o)}`,null,e);if(a.statusCode===404)throw new Error(q);if(a.data){let[n,i]=await Promise.all([this.format?await p(a.data.created_at):a.data.created_at,this.format?await p(a.data.updated_at):a.data.updated_at]),l={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:isEmpty(a.data.user.name)?null:a.data.user.name,email:isEmpty(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:n,updated_at:i};a.data=l;}return a}catch(r){throw new Error(`[GitHub] \u66F4\u65B0\u8BAE\u9898\u8BC4\u8BBA\u4FE1\u606F\u5931\u8D25: ${r.message}`)}}async remove_issue_comment(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.comment_id)throw new Error(ce);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,comment_id:o}=t,e=await this.delete(`/repos/${r}/${s}/issues/comments/${Number(o)}`);if(e.statusCode===404)throw new Error(q);let a;return e.statusCode===204?a={success:!0,message:Ua}:a={success:!1,message:ea},e.data=a,e}catch(r){throw new Error(`[GitHub] \u5220\u9664\u8BAE\u9898\u8BC4\u8BBA\u4FE1\u606F\u5931\u8D25: ${r.message}`)}}async delete_issue_comment(t){return this.remove_issue_comment(t)}async get_sub_issue_list(t){if(!t.owner||!t.repo)throw new Error(f);if(!t.issue_number)throw new Error(q);try{this.setRequestConfig({token:this.userToken});let{owner:r,repo:s,issue_number:o,...e}=t,a={};e.per_page&&(a.per_page=e.per_page.toString()),e.page&&(a.page=e.page.toString());let n=`/repos/${r}/${s}/issues/${Number(o)}/sub_issues`,i=await this.get(n,a);if(i.statusCode===404)throw new Error(S);if(i.data){let l=await Promise.all(i.data.map(async u=>({id:u.id,html_url:u.html_url,number:u.number,state:u.state,title:u.title,body:u.body,user:{id:u.user.id,login:u.user.login,name:isEmpty(i.data.user.name)?null:i.data.user.name,email:isEmpty(i.data.user.email)?null:i.data.user.email,html_url:u.user.html_url,avatar_url:u.user.avatar_url},labels:isEmpty(u.labels)?null:u.labels.map(_=>({id:_.id,name:_.name,color:_.color})),assignee:isEmpty(u.assignee)?null:{id:u.assignee.id,login:u.assignee.login,name:isEmpty(i.data.assignee.name)?null:i.data.assignee.name,em