@whyour/qinglong 0.15.3 → 0.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whyour/qinglong",
3
- "version": "0.15.3",
3
+ "version": "0.15.5",
4
4
  "description": "Timed task management platform supporting Python3, JavaScript, Shell, Typescript",
5
5
  "repository": {
6
6
  "type": "git",
@@ -196,7 +196,7 @@ exports.default = (app) => {
196
196
  });
197
197
  route.put('/reload', (0, celebrate_1.celebrate)({
198
198
  body: celebrate_1.Joi.object({
199
- type: celebrate_1.Joi.string().required(),
199
+ type: celebrate_1.Joi.string().optional().allow('').allow(null),
200
200
  }),
201
201
  }), async (req, res, next) => {
202
202
  const logger = typedi_1.Container.get('logger');
@@ -31,6 +31,7 @@ const tar_1 = __importDefault(require("tar"));
31
31
  const path_1 = __importDefault(require("path"));
32
32
  const fs_1 = __importDefault(require("fs"));
33
33
  const sum_1 = __importDefault(require("lodash/sum"));
34
+ const dependence_1 = require("../data/dependence");
34
35
  let SystemService = class SystemService {
35
36
  constructor(logger, scheduleService, sockService) {
36
37
  this.logger = logger;
@@ -109,7 +110,13 @@ let SystemService = class SystemService {
109
110
  if (info.nodeMirror) {
110
111
  cmd = `pnpm config set registry ${info.nodeMirror}`;
111
112
  }
112
- const command = `cd && ${cmd} && pnpm i -g`;
113
+ let command = `cd && ${cmd}`;
114
+ const docs = await dependence_1.DependenceModel.findAll({
115
+ where: { type: dependence_1.DependenceTypes.nodejs },
116
+ });
117
+ if (docs.length > 0) {
118
+ command += ` && pnpm i -g`;
119
+ }
113
120
  this.scheduleService.runTask(command, {
114
121
  onStart: async (cp) => {
115
122
  res === null || res === void 0 ? void 0 : res.setHeader('QL-Task-Pid', `${cp.pid}`);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[8008],{78008:function(e,t,n){n.r(t);var a=n(54306),i=n.n(a),o=n(88265),r=n(63313),s=n(89065),l=n(9835),c=n(84163),u=n(24378),p=n(57229),g=n(15207),h=n(21758),d=n(99120),P=n.n(d),b=n(11527),m=s.Z.Countdown;t.default=function(e){var t=e.systemInfo,n=(0,r.useState)(!1),a=i()(n,2),s=a[0],d=a[1],f=(0,r.useState)(""),v=i()(f,2),Z=v[0],k=v[1],y=(0,r.useRef)(),x=function(e){c.Z.confirm({width:500,title:o.ZP.get("更新"),content:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{children:o.ZP.get("已经是最新版了!")}),(0,b.jsxs)("div",{style:{fontSize:12,fontWeight:400,marginTop:5},children:[o.ZP.get("青龙")," ",e.lastVersion," ",o.ZP.get("是目前检测到的最新可用版本了。")]})]}),okText:o.ZP.get("重新下载"),onOk:function(){q(),p.W.put("".concat(g.Z.apiPrefix,"system/update")).then((function(e){})).catch((function(e){console.log(e)}))}})},w=function(e){var n=e.lastVersion,a=e.lastLog;c.Z.confirm({width:500,title:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{children:o.ZP.get("更新可用")}),(0,b.jsxs)("div",{style:{fontSize:12,fontWeight:400,marginTop:5},children:[o.ZP.get("新版本")," ",n," ",o.ZP.get("可用,你使用的版本为")," ",t.version,"。"]})]}),content:(0,b.jsx)("pre",{children:(0,b.jsx)(P(),{children:a})}),okText:o.ZP.get("下载更新"),cancelText:o.ZP.get("以后再说"),onOk:function(){q(),p.W.put("".concat(g.Z.apiPrefix,"system/update")).then((function(e){})).catch((function(e){console.log(e)}))}})},q=function(){k(""),y.current=c.Z.info({width:600,maskClosable:!1,closable:!1,keyboard:!1,okButtonProps:{disabled:!0},title:o.ZP.get("下载更新中..."),centered:!0,content:(0,b.jsx)("pre",{children:(0,b.jsx)(P(),{children:Z})})})},B=function(e){p.W.put("".concat(g.Z.apiPrefix,"system/reload"),{type:e}).then((function(e){l.ZP.success({content:(0,b.jsxs)("span",{children:[o.ZP.get("系统将在"),(0,b.jsx)(m,{className:"inline-countdown",format:"ss",value:Date.now()+3e4}),o.ZP.get("秒后自动刷新")]}),duration:30}),setTimeout((function(){window.location.reload()}),3e4)})).catch((function(e){console.log(e)}))};(0,r.useEffect)((function(){if(Z){var e=Z.includes("失败,请检查");y.current.update({maskClosable:e,closable:e,okButtonProps:{disabled:!e},content:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("pre",{children:(0,b.jsx)(P(),{children:Z})}),(0,b.jsx)("div",{id:"log-identifier",style:{paddingBottom:5}})]})})}}),[Z]);var T=(0,r.useCallback)((function(e){var t=e.message;t.includes("失败,请检查")&&l.ZP.error(o.ZP.get("更新失败,请检查网络及日志或稍后再试")),setTimeout((function(){document.querySelector("#log-identifier").scrollIntoView({behavior:"smooth"})}),600),t.includes("更新包下载成功")&&setTimeout((function(){c.Z.confirm({width:600,maskClosable:!1,title:o.ZP.get("确认重启"),centered:!0,content:o.ZP.get("系统安装包下载成功,确认重启"),okText:o.ZP.get("重启"),onOk:function(){B("system")},onCancel:function(){y.current.update({maskClosable:!0,closable:!0,okButtonProps:{disabled:!1}})}})}),1e3),k((function(e){return"".concat(e).concat(t)}))}),[]);return(0,r.useEffect)((function(){var e=h.Z.getInstance();return e.subscribe("updateSystemVersion",T),function(){e.unsubscribe("updateSystemVersion",T)}}),[]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(u.Z,{type:"primary",onClick:function(){s||(d(!0),l.ZP.loading(o.ZP.get("检查更新中..."),0),p.W.put("".concat(g.Z.apiPrefix,"system/update-check")).then((function(e){var t=e.code,n=e.data;l.ZP.destroy(),200===t&&(n.hasNewVersion?w(n):x(n))})).catch((function(e){l.ZP.destroy(),console.log(e)})).finally((function(){d(!1)})))},children:o.ZP.get("检查更新")}),(0,b.jsx)(u.Z,{type:"primary",onClick:function(){return B()},style:{marginLeft:8},children:o.ZP.get("重新启动")})]})}},15207:function(e,t,n){var a=n(88265),i=window.__ENV__QlBaseUrl||"/";t.Z={siteName:a.ZP.get("青龙"),baseUrl:i,apiPrefix:"".concat(i,"api/"),authKey:"token",layouts:[{name:"primary",include:[/.*/],exclude:[/(\/(en|zh))*\/login/]}],i18n:{languages:[{key:"pt-br",title:"Português",flag:"/portugal.svg"},{key:"en",title:"English",flag:"/america.svg"},{key:"zh",title:a.ZP.get("中文"),flag:"/china.svg"}],defaultLanguage:"en"},scopes:[{name:a.ZP.get("定时任务"),value:"crons"},{name:a.ZP.get("环境变量"),value:"envs"},{name:a.ZP.get("订阅管理"),value:"subscriptions"},{name:a.ZP.get("配置文件"),value:"configs"},{name:a.ZP.get("脚本管理"),value:"scripts"},{name:a.ZP.get("日志管理"),value:"logs"},{name:a.ZP.get("依赖管理"),value:"dependencies"},{name:a.ZP.get("系统信息"),value:"system"}],scopesMap:{crons:a.ZP.get("定时任务"),envs:a.ZP.get("环境变量"),subscriptions:a.ZP.get("订阅管理"),configs:a.ZP.get("配置文件"),scripts:a.ZP.get("脚本管理"),logs:a.ZP.get("日志管理"),dependencies:a.ZP.get("依赖管理"),system:a.ZP.get("系统信息")},notificationModes:[{value:"gotify",label:"Gotify"},{value:"goCqHttpBot",label:"GoCqHttpBot"},{value:"serverChan",label:a.ZP.get("Server酱")},{value:"pushDeer",label:"PushDeer"},{value:"bark",label:"Bark"},{value:"telegramBot",label:a.ZP.get("Telegram机器人")},{value:"dingtalkBot",label:a.ZP.get("钉钉机器人")},{value:"weWorkBot",label:a.ZP.get("企业微信机器人")},{value:"weWorkApp",label:a.ZP.get("企业微信应用")},{value:"aibotk",label:a.ZP.get("智能微秘书")},{value:"iGot",label:"IGot"},{value:"pushPlus",label:"PushPlus"},{value:"chat",label:a.ZP.get("群晖chat")},{value:"email",label:a.ZP.get("邮箱")},{value:"lark",label:a.ZP.get("飞书机器人")},{value:"pushMe",label:"PushMe"},{value:"chronocat",label:"Chronocat"},{value:"webhook",label:a.ZP.get("自定义通知")},{value:"closed",label:a.ZP.get("已关闭")}],notificationModeMap:{gotify:[{label:"gotifyUrl",tip:a.ZP.get("gotify的url地址,例如 https://push.example.de:8080"),required:!0},{label:"gotifyToken",tip:a.ZP.get("gotify的消息应用token码"),required:!0},{label:"gotifyPriority",tip:a.ZP.get("推送消息的优先级")}],chat:[{label:"chatUrl",tip:a.ZP.get("chat的url地址"),required:!0},{label:"chatToken",tip:a.ZP.get("chat的token码"),required:!0}],goCqHttpBot:[{label:"goCqHttpBotUrl",tip:a.ZP.get("推送到个人QQ: http://127.0.0.1/send_private_msg,群:http://127.0.0.1/send_group_msg"),required:!0},{label:"goCqHttpBotToken",tip:a.ZP.get("访问密钥"),required:!0},{label:"goCqHttpBotQq",tip:a.ZP.get("如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群"),required:!0}],serverChan:[{label:"serverChanKey",tip:a.ZP.get("Server酱SENDKEY"),required:!0}],pushDeer:[{label:"pushDeerKey",tip:a.ZP.get("PushDeer的Key,https://github.com/easychen/pushdeer"),required:!0},{label:"pushDeerUrl",tip:a.ZP.get("PushDeer的自架API endpoint,默认是 https://api2.pushdeer.com/message/push")}],bark:[{label:"barkPush",tip:a.ZP.get("Bark的信息IP/设备码,例如:https://api.day.app/XXXXXXXX"),required:!0},{label:"barkIcon",tip:a.ZP.get("BARK推送图标,自定义推送图标 (需iOS15或以上才能显示)")},{label:"barkSound",tip:a.ZP.get("BARK推送铃声,铃声列表去APP查看复制填写")},{label:"barkGroup",tip:a.ZP.get("BARK推送消息的分组,默认为qinglong")},{label:"barkLevel",tip:a.ZP.get("BARK推送消息的时效性,默认为active")},{label:"barkUrl",tip:a.ZP.get("BARK推送消息的跳转URL")}],telegramBot:[{label:"telegramBotToken",tip:a.ZP.get("telegram机器人的token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw"),required:!0},{label:"telegramBotUserId",tip:a.ZP.get("telegram用户的id,例如:129xxx206"),required:!0},{label:"telegramBotProxyHost",tip:a.ZP.get("代理IP")},{label:"telegramBotProxyPort",tip:a.ZP.get("代理端口")},{label:"telegramBotProxyAuth",tip:a.ZP.get("telegram代理配置认证参数,用户名与密码用英文冒号连接 user:password")},{label:"telegramBotApiHost",tip:a.ZP.get("telegram api自建的反向代理地址,默认tg官方api")}],dingtalkBot:[{label:"dingtalkBotToken",tip:a.ZP.get("钉钉机器人webhook token,例如:5a544165465465645d0f31dca676e7bd07415asdasd"),required:!0},{label:"dingtalkBotSecret",tip:a.ZP.get("密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串")}],weWorkBot:[{label:"weWorkBotKey",tip:a.ZP.get("企业微信机器人的webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa"),required:!0},{label:"weWorkOrigin",tip:a.ZP.get("企业微信代理地址")}],weWorkApp:[{label:"weWorkAppKey",tip:a.ZP.get("corpid、corpsecret、touser(注:多个成员ID使用|隔开)、agentid、消息类型(选填,不填默认文本消息类型) 注意用,号隔开(英文输入法的逗号),例如:wwcfrs,B-76WERQ,qinglong,1000001,2COat"),required:!0},{label:"weWorkOrigin",tip:a.ZP.get("企业微信代理地址")}],aibotk:[{label:"aibotkKey",tip:a.ZP.get("密钥key,智能微秘书个人中心获取apikey,申请地址:https://wechat.aibotk.com/signup?from=ql"),required:!0},{label:"aibotkType",tip:a.ZP.get("发送的目标,群组或者好友"),required:!0,placeholder:a.ZP.get("请输入要发送的目标"),items:[{value:"room",label:a.ZP.get("群聊")},{value:"contact",label:a.ZP.get("好友")}]},{label:"aibotkName",tip:a.ZP.get("要发送的用户昵称或群名,如果目标是群,需要填群名,如果目标是好友,需要填好友昵称"),required:!0}],iGot:[{label:"iGotPushKey",tip:a.ZP.get("iGot的信息推送key,例如:https://push.hellyw.com/XXXXXXXX"),required:!0}],pushPlus:[{label:"pushPlusToken",tip:a.ZP.get("微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送,参考 https://www.pushplus.plus/"),required:!0},{label:"pushPlusUser",tip:a.ZP.get("一对多推送的“群组编码”(一对多推送下面->您的群组(如无则创建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)")}],lark:[{label:"larkKey",tip:a.ZP.get("飞书群组机器人:https://www.feishu.cn/hc/zh-CN/articles/360024984973"),required:!0}],email:[{label:"emailService",tip:a.ZP.get("邮箱服务名称,比如126、163、Gmail、QQ等,支持列表https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json"),required:!0},{label:"emailUser",tip:a.ZP.get("邮箱地址"),required:!0},{label:"emailPass",tip:a.ZP.get("SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定"),required:!0}],pushMe:[{label:"pushMeKey",tip:a.ZP.get("PushMe的Key,https://push.i-i.me/"),required:!0}],chronocat:[{label:"chronocatURL",tip:a.ZP.get("Chronocat Red 服务的连接地址 https://chronocat.vercel.app/install/docker/official/"),required:!0},{label:"chronocatQQ",tip:a.ZP.get("个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx"),required:!0},{label:"chronocatToken",tip:a.ZP.get("docker安装在持久化config目录下的chronocat.yml文件可找到"),required:!0}],webhook:[{label:"webhookMethod",tip:a.ZP.get("请求方法"),required:!0,items:[{value:"GET"},{value:"POST"},{value:"PUT"}]},{label:"webhookContentType",tip:a.ZP.get("请求头Content-Type"),required:!0,items:[{value:"text/plain"},{value:"application/json"},{value:"multipart/form-data"},{value:"application/x-www-form-urlencoded"}]},{label:"webhookUrl",tip:a.ZP.get("请求链接以http或者https开头。url或者body中必须包含$title,$content可选,对应api内容的位置"),required:!0,placeholder:"https://xxx.cn/api?content=$title\n"},{label:"webhookHeaders",tip:a.ZP.get("请求头格式Custom-Header1: Header1,多个换行分割"),placeholder:"Custom-Header1: Header1\nCustom-Header2: Header2"},{label:"webhookBody",tip:a.ZP.get("请求体格式key1: value1,多个换行分割。url或者body中必须包含$title,$content可选,对应api内容的位置"),placeholder:"key1: $title\nkey2: $content"}]},documentTitleMap:{"/login":a.ZP.get("登录"),"/initialization":a.ZP.get("初始化"),"/crontab":a.ZP.get("定时任务"),"/env":a.ZP.get("环境变量"),"/subscription":a.ZP.get("订阅管理"),"/config":a.ZP.get("配置文件"),"/script":a.ZP.get("脚本管理"),"/diff":a.ZP.get("对比工具"),"/log":a.ZP.get("日志管理"),"/setting":a.ZP.get("系统设置"),"/error":a.ZP.get("错误日志"),"/dependence":a.ZP.get("依赖管理")},dependenceTypes:["nodejs","python3","linux"]}},57229:function(e,t,n){n.d(t,{W:function(){return P}});var a=n(25359),i=n.n(a),o=n(49811),r=n.n(o),s=n(88265),l=n(9835),c=n(15207),u=n(14851),p=n(73669);l.ZP.config({duration:2});var g=Date.now(),h=p.Z.create({timeout:6e4,params:{t:g}}),d=["/api/user/login","/open/auth/token","/api/user/two-factor/login","/api/system","/api/user/init","/api/user/notification/init"];h.interceptors.request.use((function(e){var t=localStorage.getItem(c.Z.authKey);return t&&!d.includes(e.url)?(e.headers.Authorization="Bearer ".concat(t),e):e})),h.interceptors.response.use(function(){var e=r()(i()().mark((function e(t){var n,a,o;return i()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.status,![502,504].includes(n)){e.next=5;break}u.history.push("/error"),e.next=18;break;case 5:if(401!==n){e.next=9;break}"/login"!==u.history.location.pathname&&(localStorage.removeItem(c.Z.authKey),u.history.push("/login")),e.next=18;break;case 9:return e.prev=9,200!==(a=t.data).code&&(o=a.message||a.data)&&l.ZP.error({content:o,style:{maxWidth:500,margin:"0 auto"}}),e.abrupt("return",a);case 15:e.prev=15,e.t0=e.catch(9);case 17:case 18:return e.abrupt("return",t);case 19:case"end":return e.stop()}}),e,null,[[9,15]])})));return function(t){return e.apply(this,arguments)}}(),(function(e){if(e.response){var t=e.response.data?e.response.data.message||e.message||e.response.data:e.response.statusText,n=e.response.status;[502,504].includes(n)?u.history.push("/error"):401===n?"/login"!==u.history.location.pathname&&(l.ZP.error(s.ZP.get("登录已过期,请重新登录")),localStorage.removeItem(c.Z.authKey),u.history.push("/login")):l.ZP.error({content:t,style:{maxWidth:500,margin:"0 auto"}})}else console.log(e.message);return Promise.reject(e)}));var P=h},21758:function(e,t,n){var a=n(93525),i=n.n(a),o=n(12342),r=n.n(o),s=n(25359),l=n.n(s),c=n(49811),u=n.n(c),p=n(21140),g=n.n(p),h=n(63466),d=n.n(h),P=n(52510),b=n.n(P),m=n(78078),f=n.n(m),v=["type"],Z=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};g()(this,e),b()(this,"url",void 0),b()(this,"socket",null),b()(this,"subscriptions",new Map),b()(this,"options",void 0),b()(this,"reconnectAttempts",0),b()(this,"heartbeatTimeout",null),b()(this,"state","closed"),this.url=t,this.options={maxReconnectAttempts:n.maxReconnectAttempts||5,reconnectInterval:n.reconnectInterval||3e3,heartbeatInterval:n.heartbeatInterval||3e4},this.init()}var t,n;return d()(e,[{key:"init",value:(n=u()(l()().mark((function e(){var t=this;return l()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,this.state="connecting",this.emit("connecting");case 3:if(!(this.reconnectAttempts<this.options.maxReconnectAttempts)){e.next=16;break}return this.socket=new(f())(this.url),this.setupEventListeners(),this.startHeartbeat(),e.next=9,this.waitForClose();case 9:return this.stopHeartbeat(),this.socket=null,this.reconnectAttempts++,e.next=14,new Promise((function(e){return setTimeout(e,t.options.reconnectInterval)}));case 14:e.next=3;break;case 16:e.next=21;break;case 18:e.prev=18,e.t0=e.catch(0),this.handleError(e.t0);case 21:case"end":return e.stop()}}),e,this,[[0,18]])}))),function(){return n.apply(this,arguments)})},{key:"setupEventListeners",value:function(){var e=this;this.socket&&(this.socket.onopen=function(){e.state="open",e.emit("open")},this.socket.onmessage=function(t){var n=JSON.parse(t.data);e.dispatchMessage(n)},this.socket.onclose=function(){e.state="closed",e.emit("close")})}},{key:"waitForClose",value:(t=u()(l()().mark((function e(){var t;return l()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((null===(t=this.socket)||void 0===t?void 0:t.readyState)===f().CLOSED){e.next=5;break}return e.next=3,new Promise((function(e){return setTimeout(e,100)}));case 3:e.next=0;break;case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"subscribe",value:function(e,t){var n=this.subscriptions.get(e)||new Set;if(!n.has(t)){n.add(t),this.subscriptions.set(e,n);var a={action:"subscribe",topic:e};this.send(a)}}},{key:"unsubscribe",value:function(e,t){var n=this.subscriptions.get(e)||new Set;if(n.has(t)){n.delete(t);var a={action:"unsubscribe",topic:e};this.send(a)}}},{key:"send",value:function(e){var t;(null===(t=this.socket)||void 0===t?void 0:t.readyState)===f().OPEN&&this.socket.send(JSON.stringify(e))}},{key:"dispatchMessage",value:function(e){var t=e.type,n=r()(e,v),a=this.subscriptions.get(t)||new Set;i()(a).forEach((function(e){return e(n)}))}},{key:"startHeartbeat",value:function(){var e=this;this.heartbeatTimeout=setInterval((function(){var t;(null===(t=e.socket)||void 0===t?void 0:t.readyState)===f().OPEN&&e.socket.send(JSON.stringify({type:"heartbeat"}))}),this.options.heartbeatInterval)}},{key:"stopHeartbeat",value:function(){this.heartbeatTimeout&&clearInterval(this.heartbeatTimeout)}},{key:"close",value:function(){this.socket&&(this.state="closed",this.stopHeartbeat(),this.socket.close(),this.emit("close"))}},{key:"handleError",value:function(e){console.error("WebSocket错误:",e),this.emit("error",e)}},{key:"on",value:function(e,t){}},{key:"emit",value:function(e,t){}}],[{key:"getInstance",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0;return e.instance||(e.instance=new e(t,n)),e.instance}}]),e}();b()(Z,"instance",null),t.Z=Z}}]);
@@ -10,6 +10,6 @@
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
13
- <script src="./umi.d9511dd2.js"></script>
13
+ <script src="./umi.889d3656.js"></script>
14
14
 
15
15
  </body></html>
@@ -0,0 +1 @@
1
+ (self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[2340,8490,8008],{42742:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return E}});var r=n(88265),a=n(63313),i=n(92260),o=n(22481),s=n(41171),l=n(69947),c=n(84875),u=n.n(c),d=n(51026),h=n(82259),p=n(25515),f=n(11847),g=function(e){return e.children},m=n(88028);function Z(e){return null!=e}var y=function(e){var t,n=e.itemPrefixCls,r=e.component,i=e.span,s=e.className,l=e.style,c=e.labelStyle,d=e.contentStyle,h=e.bordered,p=e.label,f=e.content,g=e.colon,m=r;return h?a.createElement(m,{className:u()((t={},(0,o.Z)(t,"".concat(n,"-item-label"),Z(p)),(0,o.Z)(t,"".concat(n,"-item-content"),Z(f)),t),s),style:l,colSpan:i},Z(p)&&a.createElement("span",{style:c},p),Z(f)&&a.createElement("span",{style:d},f)):a.createElement(m,{className:u()("".concat(n,"-item"),s),style:l,colSpan:i},a.createElement("div",{className:"".concat(n,"-item-container")},(p||0===p)&&a.createElement("span",{className:u()("".concat(n,"-item-label"),(0,o.Z)({},"".concat(n,"-item-no-colon"),!g)),style:c},p),(f||0===f)&&a.createElement("span",{className:u()("".concat(n,"-item-content")),style:d},f)))};function v(e,t,n){var r=t.colon,i=t.prefixCls,o=t.bordered,s=n.component,l=n.type,c=n.showLabel,u=n.showContent,d=n.labelStyle,h=n.contentStyle;return e.map((function(e,t){var n=e.props,p=n.label,f=n.children,g=n.prefixCls,Z=void 0===g?i:g,v=n.className,x=n.style,P=n.labelStyle,b=n.contentStyle,k=n.span,w=void 0===k?1:k,j=e.key;return"string"==typeof s?a.createElement(y,{key:"".concat(l,"-").concat(j||t),className:v,style:x,labelStyle:(0,m.Z)((0,m.Z)({},d),P),contentStyle:(0,m.Z)((0,m.Z)({},h),b),span:w,colon:r,component:s,itemPrefixCls:Z,bordered:o,label:c?p:null,content:u?f:null}):[a.createElement(y,{key:"label-".concat(j||t),className:v,style:(0,m.Z)((0,m.Z)((0,m.Z)({},d),x),P),span:1,colon:r,component:s[0],itemPrefixCls:Z,bordered:o,label:p}),a.createElement(y,{key:"content-".concat(j||t),className:v,style:(0,m.Z)((0,m.Z)((0,m.Z)({},h),x),b),span:2*w-1,component:s[1],itemPrefixCls:Z,bordered:o,content:f})]}))}var x=function(e){var t=a.useContext(P),n=e.prefixCls,r=e.vertical,i=e.row,o=e.index,s=e.bordered;return r?a.createElement(a.Fragment,null,a.createElement("tr",{key:"label-".concat(o),className:"".concat(n,"-row")},v(i,e,(0,m.Z)({component:"th",type:"label",showLabel:!0},t))),a.createElement("tr",{key:"content-".concat(o),className:"".concat(n,"-row")},v(i,e,(0,m.Z)({component:"td",type:"content",showContent:!0},t)))):a.createElement("tr",{key:o,className:"".concat(n,"-row")},v(i,e,(0,m.Z)({component:s?["th","td"]:"td",type:"item",showLabel:!0,showContent:!0},t)))},P=a.createContext({}),b={xxl:3,xl:3,lg:3,md:3,sm:2,xs:1};function k(e,t,n){var r=e;return(void 0===t||t>n)&&(r=(0,p.Tm)(e,{span:n})),r}function w(e){var t,n=e.prefixCls,r=e.title,i=e.extra,c=e.column,p=void 0===c?b:c,g=e.colon,m=void 0===g||g,Z=e.bordered,y=e.layout,v=e.children,w=e.className,j=e.style,S=e.size,C=e.labelStyle,M=e.contentStyle,$=a.useContext(h.E_),_=$.getPrefixCls,I=$.direction,T=_("descriptions",n),q=a.useState({}),E=(0,s.Z)(q,2),D=E[0],B=E[1],W=function(e,t){if("number"==typeof e)return e;if("object"===(0,l.Z)(e))for(var n=0;n<f.c4.length;n++){var r=f.c4[n];if(t[r]&&void 0!==e[r])return e[r]||b[r]}return 3}(p,D);a.useEffect((function(){var e=f.ZP.subscribe((function(e){"object"===(0,l.Z)(p)&&B(e)}));return function(){f.ZP.unsubscribe(e)}}),[]);var O=function(e,t){var n=(0,d.Z)(e).filter((function(e){return e})),r=[],a=[],i=t;return n.forEach((function(e,o){var s,l=null===(s=e.props)||void 0===s?void 0:s.span,c=l||1;if(o===n.length-1)return a.push(k(e,l,i)),void r.push(a);c<i?(i-=c,a.push(e)):(a.push(k(e,c,i)),r.push(a),i=t,a=[])})),r}(v,W),N=a.useMemo((function(){return{labelStyle:C,contentStyle:M}}),[C,M]);return a.createElement(P.Provider,{value:N},a.createElement("div",{className:u()(T,(t={},(0,o.Z)(t,"".concat(T,"-").concat(S),S&&"default"!==S),(0,o.Z)(t,"".concat(T,"-bordered"),!!Z),(0,o.Z)(t,"".concat(T,"-rtl"),"rtl"===I),t),w),style:j},(r||i)&&a.createElement("div",{className:"".concat(T,"-header")},r&&a.createElement("div",{className:"".concat(T,"-title")},r),i&&a.createElement("div",{className:"".concat(T,"-extra")},i)),a.createElement("div",{className:"".concat(T,"-view")},a.createElement("table",null,a.createElement("tbody",null,O.map((function(e,t){return a.createElement(x,{key:t,index:t,colon:m,prefixCls:T,vertical:"vertical"===y,bordered:Z,row:e})})))))))}w.Item=g;var j=w,S="container___nww32",C="right___o0xXT",M="title___DHxWh",$="desc___frhI6",_=n(52053),I=n.n(_),T=n(11527),q=i.Z.Link,E=function(e){var t=e.systemInfo;return(0,T.jsxs)("div",{className:S,children:[(0,T.jsx)("img",{alt:"logo",style:{width:140,marginRight:20},src:"https://qn.whyour.cn/logo.png"}),(0,T.jsxs)("div",{className:C,children:[(0,T.jsx)("span",{className:M,children:r.ZP.get("青龙")}),(0,T.jsx)("span",{className:$,children:r.ZP.get("支持python3、javascript、shell、typescript 的定时任务管理面板")}),(0,T.jsxs)(j,{children:[(0,T.jsxs)(j.Item,{label:r.ZP.get("版本"),span:3,children:["develop"===(null==t?void 0:t.branch)?r.ZP.get("开发版"):r.ZP.get("正式版")," ","v",t.version]}),(0,T.jsx)(j.Item,{label:r.ZP.get("更新时间"),span:3,children:I()(1e3*t.publishTime).format("YYYY-MM-DD HH:mm")}),(0,T.jsx)(j.Item,{label:r.ZP.get("更新日志"),span:3,children:(0,T.jsx)(q,{href:"https://qn.whyour.cn/version.yaml?t=".concat(Date.now()),target:"_blank",children:r.ZP.get("查看")})})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)(q,{href:"https://github.com/whyour/qinglong",target:"_blank",style:{marginRight:15},children:"Github"}),(0,T.jsx)(q,{href:"https://t.me/jiao_long",target:"_blank",style:{marginRight:15},children:r.ZP.get("Telegram频道")}),(0,T.jsx)(q,{href:"https://github.com/whyour/qinglong/issues",target:"_blank",children:r.ZP.get("提交BUG")})]})]})]})}},32659:function(e,t,n){"use strict";n.r(t);var r=n(25359),a=n.n(r),i=n(57213),o=n.n(i),s=n(49811),l=n.n(s),c=n(54306),u=n.n(c),d=n(88265),h=n(63313),p=n(67393),f=n(9835),g=n(84163),m=n(22159),Z=n(28756),y=n(57229),v=n(15207),x=n(11527);t.default=function(e){var t=e.app,n=e.handleCancel,r=e.visible,i=p.Z.useForm(),s=u()(i,1)[0],c=(0,h.useState)(!1),P=u()(c,2),b=P[0],k=P[1],w=function(){var e=l()(a()().mark((function e(r){var i,s,l,c,u;return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return k(!0),i=t?"put":"post",s=o()({},r),t&&(s.id=t.id),e.prev=4,e.next=7,y.W[i]("".concat(v.Z.apiPrefix,"apps"),s);case 7:l=e.sent,c=l.code,u=l.data,200===c&&(f.ZP.success(t?d.ZP.get("更新应用成功"):d.ZP.get("创建应用成功")),n(u)),k(!1),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(4),k(!1);case 17:case"end":return e.stop()}}),e,null,[[4,14]])})));return function(t){return e.apply(this,arguments)}}();return(0,h.useEffect)((function(){s.resetFields()}),[t,r]),(0,x.jsx)(g.Z,{title:t?d.ZP.get("编辑应用"):d.ZP.get("创建应用"),open:r,forceRender:!0,centered:!0,maskClosable:!1,onOk:function(){s.validateFields().then((function(e){w(e)})).catch((function(e){console.log("Validate Failed:",e)}))},onCancel:function(){return n()},confirmLoading:b,children:(0,x.jsxs)(p.Z,{form:s,layout:"vertical",name:"form_app_modal",initialValues:t,children:[(0,x.jsx)(p.Z.Item,{name:"name",label:d.ZP.get("名称"),rules:[{validator:function(e,t){return["system"].includes(t)?Promise.reject(new Error(d.ZP.get("名称不能为保留关键字"))):Promise.resolve()}}],children:(0,x.jsx)(m.Z,{placeholder:d.ZP.get("请输入应用名称")})}),(0,x.jsx)(p.Z.Item,{name:"scopes",label:d.ZP.get("权限"),rules:[{required:!0}],children:(0,x.jsx)(Z.Z,{mode:"multiple",placeholder:d.ZP.get("请选择模块权限"),allowClear:!0,style:{width:"100%"},children:v.Z.scopes.map((function(e){return(0,x.jsx)(Z.Z.Option,{value:e.value,children:e.name},e.value)}))})})]})})}},78008:function(e,t,n){"use strict";n.r(t);var r=n(54306),a=n.n(r),i=n(88265),o=n(63313),s=n(89065),l=n(9835),c=n(84163),u=n(24378),d=n(57229),h=n(15207),p=n(21758),f=n(99120),g=n.n(f),m=n(11527),Z=s.Z.Countdown;t.default=function(e){var t=e.systemInfo,n=(0,o.useState)(!1),r=a()(n,2),s=r[0],f=r[1],y=(0,o.useState)(""),v=a()(y,2),x=v[0],P=v[1],b=(0,o.useRef)(),k=function(e){c.Z.confirm({width:500,title:i.ZP.get("更新"),content:(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)("div",{children:i.ZP.get("已经是最新版了!")}),(0,m.jsxs)("div",{style:{fontSize:12,fontWeight:400,marginTop:5},children:[i.ZP.get("青龙")," ",e.lastVersion," ",i.ZP.get("是目前检测到的最新可用版本了。")]})]}),okText:i.ZP.get("重新下载"),onOk:function(){j(),d.W.put("".concat(h.Z.apiPrefix,"system/update")).then((function(e){})).catch((function(e){console.log(e)}))}})},w=function(e){var n=e.lastVersion,r=e.lastLog;c.Z.confirm({width:500,title:(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)("div",{children:i.ZP.get("更新可用")}),(0,m.jsxs)("div",{style:{fontSize:12,fontWeight:400,marginTop:5},children:[i.ZP.get("新版本")," ",n," ",i.ZP.get("可用,你使用的版本为")," ",t.version,"。"]})]}),content:(0,m.jsx)("pre",{children:(0,m.jsx)(g(),{children:r})}),okText:i.ZP.get("下载更新"),cancelText:i.ZP.get("以后再说"),onOk:function(){j(),d.W.put("".concat(h.Z.apiPrefix,"system/update")).then((function(e){})).catch((function(e){console.log(e)}))}})},j=function(){P(""),b.current=c.Z.info({width:600,maskClosable:!1,closable:!1,keyboard:!1,okButtonProps:{disabled:!0},title:i.ZP.get("下载更新中..."),centered:!0,content:(0,m.jsx)("pre",{children:(0,m.jsx)(g(),{children:x})})})},S=function(e){d.W.put("".concat(h.Z.apiPrefix,"system/reload"),{type:e}).then((function(e){l.ZP.success({content:(0,m.jsxs)("span",{children:[i.ZP.get("系统将在"),(0,m.jsx)(Z,{className:"inline-countdown",format:"ss",value:Date.now()+3e4}),i.ZP.get("秒后自动刷新")]}),duration:30}),setTimeout((function(){window.location.reload()}),3e4)})).catch((function(e){console.log(e)}))};(0,o.useEffect)((function(){if(x){var e=x.includes("失败,请检查");b.current.update({maskClosable:e,closable:e,okButtonProps:{disabled:!e},content:(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)("pre",{children:(0,m.jsx)(g(),{children:x})}),(0,m.jsx)("div",{id:"log-identifier",style:{paddingBottom:5}})]})})}}),[x]);var C=(0,o.useCallback)((function(e){var t=e.message;t.includes("失败,请检查")&&l.ZP.error(i.ZP.get("更新失败,请检查网络及日志或稍后再试")),setTimeout((function(){document.querySelector("#log-identifier").scrollIntoView({behavior:"smooth"})}),600),t.includes("更新包下载成功")&&setTimeout((function(){c.Z.confirm({width:600,maskClosable:!1,title:i.ZP.get("确认重启"),centered:!0,content:i.ZP.get("系统安装包下载成功,确认重启"),okText:i.ZP.get("重启"),onOk:function(){S("system")},onCancel:function(){b.current.update({maskClosable:!0,closable:!0,okButtonProps:{disabled:!1}})}})}),1e3),P((function(e){return"".concat(e).concat(t)}))}),[]);return(0,o.useEffect)((function(){var e=p.Z.getInstance();return e.subscribe("updateSystemVersion",C),function(){e.unsubscribe("updateSystemVersion",C)}}),[]),(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(u.Z,{type:"primary",onClick:function(){s||(f(!0),l.ZP.loading(i.ZP.get("检查更新中..."),0),d.W.put("".concat(h.Z.apiPrefix,"system/update-check")).then((function(e){var t=e.code,n=e.data;l.ZP.destroy(),200===t&&(n.hasNewVersion?w(n):k(n))})).catch((function(e){l.ZP.destroy(),console.log(e)})).finally((function(){f(!1)})))},children:i.ZP.get("检查更新")}),(0,m.jsx)(u.Z,{type:"primary",onClick:function(){return S()},style:{marginLeft:8},children:i.ZP.get("重新启动")})]})}},27609:function(e,t,n){"use strict";n.r(t);var r=n(57213),a=n.n(r),i=n(54306),o=n.n(i),s=n(88265),l=n(63313),c=n(67393),u=n(9835),d=n(22159),h=n(24378),p=n(15207),f=n(57229),g=(n(10761),n(99120)),m=n.n(g),Z=n(19334),y=n.n(Z),v=n(21758),x=n(11527),P={"dependence-proxy":"dependenceProxy","node-mirror":"nodeMirror","python-mirror":"pythonMirror","linux-mirror":"linuxMirror"};t.default=function(){var e=(0,l.useState)(),t=o()(e,2),n=t[0],r=t[1],i=c.Z.useForm(),g=o()(i,1)[0],Z=(0,l.useState)(""),b=o()(Z,2),k=b[0],w=b[1],j=(0,l.useState)(!1),S=o()(j,2),C=S[0],M=S[1],$=function(e){M(!0),w("in progress...\n"),f.W.put("".concat(p.Z.apiPrefix,"system/config/").concat(e),y()(n,P[e])).then((function(e){})).catch((function(e){console.log(e)}))},_=function(e){M(!0),w(""),f.W.put("".concat(p.Z.apiPrefix,"system/config/").concat(e),y()(n,P[e])).then((function(e){var t=e.code;e.data;200===t&&u.ZP.success(s.ZP.get("更新成功"))})).catch((function(e){console.log(e)})).finally((function(){return M(!1)}))},I=function(e){var t=e.message;w((function(e){return"".concat(e).concat(t)})),(t.includes("update node mirror end")||t.includes("update linux mirror end"))&&M(!1)};return(0,l.useEffect)((function(){var e=v.Z.getInstance();return e.subscribe("updateNodeMirror",I),e.subscribe("updateLinuxMirror",I),function(){e.subscribe("updateNodeMirror",I),e.unsubscribe("updateLinuxMirror",I)}}),[]),(0,l.useEffect)((function(){f.W.get("".concat(p.Z.apiPrefix,"system/config")).then((function(e){var t=e.code,n=e.data;200===t&&n.info&&r(n.info)})).catch((function(e){console.log(e)}))}),[]),(0,x.jsxs)("div",{className:"dependence-config-wrapper",children:[(0,x.jsxs)(c.Z,{layout:"vertical",form:g,style:{flexShrink:0},children:[(0,x.jsx)(c.Z.Item,{label:s.ZP.get("代理"),name:"proxy",extra:s.ZP.get("代理与镜像源二选一即可"),tooltip:{title:s.ZP.get("代理地址, 支持HTTP(S)/SOCK5"),placement:"topLeft"},children:(0,x.jsxs)(d.Z.Group,{compact:!0,children:[(0,x.jsx)(d.Z,{placeholder:"http://1.1.1.1:8080",style:{width:250},value:null==n?void 0:n.dependenceProxy,onChange:function(e){r(a()(a()({},n),{},{dependenceProxy:e.target.value}))}}),(0,x.jsx)(h.Z,{type:"primary",loading:C,onClick:function(){_("dependence-proxy")},style:{width:100},children:s.ZP.get("确认")})]})}),(0,x.jsx)(c.Z.Item,{label:s.ZP.get("Node 软件包镜像源"),name:"node",tooltip:s.ZP.get("NPM 镜像源"),children:(0,x.jsxs)(d.Z.Group,{compact:!0,children:[(0,x.jsx)(d.Z,{style:{width:250},placeholder:"https://registry.npmmirror.com",value:null==n?void 0:n.nodeMirror,onChange:function(e){r(a()(a()({},n),{},{nodeMirror:e.target.value}))}}),(0,x.jsx)(h.Z,{type:"primary",loading:C,onClick:function(){$("node-mirror")},style:{width:100},children:s.ZP.get("确认")})]})}),(0,x.jsx)(c.Z.Item,{label:s.ZP.get("Python 软件包镜像源"),name:"python",tooltip:s.ZP.get("PyPI 镜像源"),children:(0,x.jsxs)(d.Z.Group,{compact:!0,children:[(0,x.jsx)(d.Z,{style:{width:250},placeholder:"https://pypi.doubanio.com/simple/",value:null==n?void 0:n.pythonMirror,onChange:function(e){r(a()(a()({},n),{},{pythonMirror:e.target.value}))}}),(0,x.jsx)(h.Z,{type:"primary",loading:C,onClick:function(){_("python-mirror")},style:{width:100},children:s.ZP.get("确认")})]})}),(0,x.jsx)(c.Z.Item,{label:s.ZP.get("Linux 软件包镜像源"),name:"linux",tooltip:s.ZP.get("debian linux 镜像源"),children:(0,x.jsxs)(d.Z.Group,{compact:!0,children:[(0,x.jsx)(d.Z,{style:{width:250},placeholder:"http://deb.debian.org",value:null==n?void 0:n.linuxMirror,onChange:function(e){r(a()(a()({},n),{},{linuxMirror:e.target.value}))}}),(0,x.jsx)(h.Z,{type:"primary",loading:C,onClick:function(){$("linux-mirror")},style:{width:100},children:s.ZP.get("确认")})]})})]}),(0,x.jsx)("pre",{style:{fontFamily:"Source Code Pro",zoom:.83,maxHeight:"100%",overflowY:"auto"},children:(0,x.jsx)(m(),{children:k})})]})}},38228:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return U}});var r=n(25359),a=n.n(r),i=n(49811),o=n.n(i),s=n(57213),l=n.n(s),c=n(93525),u=n.n(c),d=n(54306),h=n.n(d),p=n(88265),f=n(63313),g=n(92260),m=n(51704),Z=n(2947),y=n(15367),v=n(84163),x=n(9835),P=n(24378),b=n(86986),k=n(94674),w=n(15207),j=n(23435),S=n(57229),C=n(32659),M=n(32132),$=n(14797),_={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z"}}]},name:"reload",theme:"outlined"},I=n(46420),T=function(e,t){return f.createElement(I.Z,(0,$.Z)((0,$.Z)({},e),{},{ref:t,icon:_}))};T.displayName="ReloadOutlined";var q=f.forwardRef(T),E=n(13740),D=n(5565),B=n(55396),W=n(24023),O=n(123),N=n(42742),H=n(14851),A=(n(10761),n(61761)),F=n(4273),L=n(27609),R=n(11527),z=g.Z.Text,K="demo"===window.__ENV__DeployEnv,U=function(){var e=(0,H.useOutletContext)(),t=e.headerStyle,n=e.isPhone,r=e.user,i=e.theme,s=e.reloadUser,c=e.reloadTheme,d=e.systemInfo,g=[{title:p.ZP.get("名称"),dataIndex:"name",key:"name"},{title:"Client ID",dataIndex:"client_id",key:"client_id",render:function(e,t){return(0,R.jsx)(z,{copyable:!0,children:t.client_id})}},{title:"Client Secret",dataIndex:"client_secret",key:"client_secret",render:function(e,t){return(0,R.jsx)(z,{copyable:{text:t.client_secret},children:"*******"})}},{title:p.ZP.get("权限"),dataIndex:"scopes",key:"scopes",width:500,render:function(e,t){return(0,R.jsx)("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:t.scopes.map((function(e){return(0,R.jsx)(m.Z,{style:{marginRight:0},children:w.Z.scopesMap[e]},e)}))})}},{title:p.ZP.get("操作"),key:"action",render:function(e,t,r){var a=!n;return(0,R.jsxs)(Z.Z,{size:"middle",style:{paddingLeft:8},children:[(0,R.jsx)(y.Z,{title:a?p.ZP.get("编辑"):"",children:(0,R.jsx)("a",{onClick:function(){return Ce(t,r)},children:(0,R.jsx)(M.Z,{})})}),(0,R.jsx)(y.Z,{title:a?p.ZP.get("重置secret"):"",children:(0,R.jsx)("a",{onClick:function(){return $e(t,r)},children:(0,R.jsx)(q,{})})}),(0,R.jsx)(y.Z,{title:a?p.ZP.get("删除"):"",children:(0,R.jsx)("a",{onClick:function(){return Me(t,r)},children:(0,R.jsx)(E.Z,{})})})]})}}],$=(0,f.useState)(!0),_=h()($,2),I=_[0],T=_[1],U=(0,f.useState)([]),G=h()(U,2),Y=G[0],V=G[1],Q=(0,f.useState)(!1),X=h()(Q,2),J=X[0],ee=X[1],te=(0,f.useState)(),ne=h()(te,2),re=ne[0],ae=ne[1],ie=(0,f.useState)("security"),oe=h()(ie,2),se=oe[0],le=oe[1],ce=(0,f.useState)([]),ue=h()(ce,2),de=ue[0],he=ue[1],pe=(0,f.useState)(""),fe=h()(pe,2),ge=fe[0],me=fe[1],Ze=(0,f.useState)(),ye=h()(Ze,2),ve=ye[0],xe=ye[1],Pe=(0,f.useRef)(null),be=(0,f.useState)(0),ke=h()(be,2),we=ke[0],je=ke[1];(0,A.Z)(Pe,(function(e){var t,n,r=null===(t=e.target.parentElement)||void 0===t||null===(n=t.parentElement)||void 0===n?void 0:n.offsetHeight;r&&we!==r-66&&je(r-66)}));var Se=function(){T(!0),S.W.get("".concat(w.Z.apiPrefix,"apps")).then((function(e){var t=e.code,n=e.data;200===t&&V(n)})).finally((function(){return T(!1)}))},Ce=function(e,t){ae(e),ee(!0)},Me=function(e,t){v.Z.confirm({title:p.ZP.get("确认删除"),content:(0,R.jsxs)(R.Fragment,{children:[p.ZP.get("确认删除应用")," ",(0,R.jsx)(z,{style:{wordBreak:"break-all"},type:"warning",children:e.name})," ",p.ZP.get("吗")]}),onOk:function(){S.W.delete("".concat(w.Z.apiPrefix,"apps"),{data:[e.id]}).then((function(e){var n=e.code;e.data;if(200===n){x.ZP.success(p.ZP.get("删除成功"));var r=u()(Y);r.splice(t,1),V(r)}}))},onCancel:function(){console.log("Cancel")}})},$e=function(e,t){v.Z.confirm({title:p.ZP.get("确认重置"),content:(0,R.jsxs)(R.Fragment,{children:[p.ZP.get("确认重置应用")," ",(0,R.jsx)(z,{style:{wordBreak:"break-all"},type:"warning",children:e.name})," ",p.ZP.get("的Secret吗"),(0,R.jsx)("br",{}),(0,R.jsx)(z,{type:"secondary",children:p.ZP.get("重置Secret会让当前应用所有token失效")})]}),onOk:function(){S.W.put("".concat(w.Z.apiPrefix,"apps/").concat(e.id,"/reset-secret")).then((function(e){var t=e.code,n=e.data;200===t&&(x.ZP.success(p.ZP.get("重置成功")),_e(n))}))},onCancel:function(){console.log("Cancel")}})},_e=function(e){var t=Y.findIndex((function(t){return t.id===e.id})),n=u()(Y);-1===t?n.push(e):n.splice(t,1,l()({},e)),V(n)},Ie=function(){S.W.get("".concat(w.Z.apiPrefix,"user/notification")).then((function(e){var t=e.code,n=e.data;200===t&&xe(n)})).catch((function(e){console.log(e)}))};return(0,f.useEffect)((function(){K&&Se()}),[]),(0,R.jsxs)(j.ZP,{className:"ql-container-wrapper ql-container-wrapper-has-tab ql-setting-container",title:p.ZP.get("系统设置"),header:{style:t},extra:"app"===se?[(0,R.jsx)(P.Z,{type:"primary",onClick:function(){return ae(null),void ee(!0)},children:p.ZP.get("创建应用")},"2")]:[],children:[(0,R.jsx)("div",{ref:Pe,children:(0,R.jsx)(b.Z,{defaultActiveKey:"security",size:"small",tabPosition:"top",onChange:function(e){le(e),"app"===e?Se():"login"===e?S.W.get("".concat(w.Z.apiPrefix,"user/login-log")).then((function(e){var t=e.code,n=e.data;200===t&&he(n)})).catch((function(e){console.log(e)})):"notification"===e?Ie():"syslog"===e&&S.W.get("".concat(w.Z.apiPrefix,"system/log"),{responseType:"blob"}).then(function(){var e=o()(a()().mark((function e(t){return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=me,e.next=3,t.text();case 3:e.t1=e.sent,(0,e.t0)(e.t1);case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){console.log(e)}))},items:[].concat(u()(K?[]:[{key:"security",label:p.ZP.get("安全设置"),children:(0,R.jsx)(D.default,{user:r,userChange:s})}]),[{key:"app",label:p.ZP.get("应用设置"),children:(0,R.jsx)(k.Z,{columns:g,pagination:!1,dataSource:Y,rowKey:"id",size:"middle",scroll:{x:1e3},loading:I})},{key:"notification",label:p.ZP.get("通知设置"),children:(0,R.jsx)(W.default,{data:ve})},{key:"syslog",label:p.ZP.get("系统日志"),children:(0,R.jsx)(F.default,{data:ge,height:we,theme:i})},{key:"login",label:p.ZP.get("登录日志"),children:(0,R.jsx)(B.default,{data:de})},{key:"dependence",label:p.ZP.get("依赖设置"),children:(0,R.jsx)(L.default,{})},{key:"other",label:p.ZP.get("其他设置"),children:(0,R.jsx)(O.default,{reloadTheme:c,systemInfo:d})},{key:"about",label:p.ZP.get("关于"),children:(0,R.jsx)(N.default,{systemInfo:d})}])})}),(0,R.jsx)(C.default,{visible:J,handleCancel:function(e){ee(!1),e&&_e(e)},app:re})]})}},55396:function(e,t,n){"use strict";n.r(t);var r=n(88265),a=(n(63313),n(92260)),i=n(51704),o=n(94674),s=n(52053),l=n.n(s),c=n(11527),u=(a.Z.Text,a.Z.Link,function(e){return e[e["成功"]=0]="成功",e[e["失败"]=1]="失败",e}(u||{})),d=function(e){return e[e.success=0]="success",e[e.error=1]="error",e}(d||{}),h=[{title:r.ZP.get("序号"),width:50,render:function(e,t,n){return n+1}},{title:r.ZP.get("登录时间"),dataIndex:"timestamp",key:"timestamp",width:120,render:function(e,t){return l()(t.timestamp).format("YYYY-MM-DD HH:mm:ss")}},{title:r.ZP.get("登录地址"),dataIndex:"address",width:120,key:"address"},{title:r.ZP.get("登录IP"),dataIndex:"ip",width:100,key:"ip"},{title:r.ZP.get("登录设备"),dataIndex:"platform",key:"platform",width:80},{title:r.ZP.get("登录状态"),dataIndex:"status",key:"status",width:80,render:function(e,t){return(0,c.jsx)(i.Z,{color:d[t.status],style:{marginRight:0},children:r.ZP.get(u[t.status])})}}];t.default=function(e){var t=e.data;return(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(o.Z,{columns:h,pagination:!1,dataSource:t,rowKey:"id",size:"middle",scroll:{x:1e3},sticky:!0})})}},24023:function(e,t,n){"use strict";n.r(t);var r=n(57213),a=n.n(r),i=n(54306),o=n.n(i),s=n(88265),l=n(63313),c=n(28756),u=n(67393),d=n(9835),h=n(22159),p=n(24378),f=n(57229),g=n(15207),m=n(11527),Z=c.Z.Option;t.default=function(e){var t=e.data,n=(0,l.useState)(!1),r=o()(n,2),i=r[0],y=r[1],v=(0,l.useState)("closed"),x=o()(v,2),P=x[0],b=x[1],k=(0,l.useState)([]),w=o()(k,2),j=w[0],S=w[1],C=u.Z.useForm(),M=o()(C,1)[0],$=function(e){b(e);var t=g.Z.notificationModeMap[e];S(t||[])};return(0,l.useEffect)((function(){t&&t.type&&($(t.type),M.setFieldsValue(a()({},t)))}),[t]),(0,m.jsx)("div",{children:(0,m.jsxs)(u.Z,{onFinish:function(e){y(!0),"closed"==e.type&&(e.type=""),f.W.put("".concat(g.Z.apiPrefix,"user/notification"),e).then((function(t){var n=t.code;t.data;200===n&&d.ZP.success(e.type?s.ZP.get("通知发送成功"):s.ZP.get("通知关闭成功"))})).catch((function(e){console.log(e)})).finally((function(){return y(!1)}))},form:M,layout:"vertical",children:[(0,m.jsx)(u.Z.Item,{label:s.ZP.get("通知方式"),name:"type",rules:[{required:!0}],style:{maxWidth:400},initialValue:P,children:(0,m.jsx)(c.Z,{onChange:$,disabled:i,children:g.Z.notificationModes.map((function(e){return(0,m.jsx)(Z,{value:e.value,children:e.label},e.value)}))})}),j.map((function(e){return(0,m.jsx)(u.Z.Item,{label:e.label,name:e.label,extra:e.tip,rules:[{required:e.required}],style:{maxWidth:400},children:e.items?(0,m.jsx)(c.Z,{placeholder:e.placeholder||"".concat(s.ZP.get("请选择")," ").concat(e.label),disabled:i,children:e.items.map((function(e){return(0,m.jsx)(Z,{value:e.value,children:e.label||e.value},e.value)}))}):(0,m.jsx)(h.Z.TextArea,{disabled:i,autoSize:{minRows:1,maxRows:5},placeholder:e.placeholder||"".concat(s.ZP.get("请输入")," ").concat(e.label)})},e.label)})),(0,m.jsx)(p.Z,{type:"primary",htmlType:"submit",disabled:i,children:i?s.ZP.get("测试中..."):s.ZP.get("保存")})]})})}},123:function(e,t,n){"use strict";n.r(t);var r=n(57213),a=n.n(r),i=n(54306),o=n.n(i),s=n(88265),l=n(63313),c=n(67393),u=n(9835),d=n(84163),h=n(84468),p=n(22159),f=n(55484),g=n(24378),m=n(28756),Z=n(57679),y=n(71571),v=n(15207),x=n(57229),P=n(78008),b=n(87105),k=(n(10761),n(59953)),w=n(41422),j=n(7154),S=n(19334),C=n.n(S),M=n(11527),$={"log-remove-frequency":"logRemoveFrequency","cron-concurrency":"cronConcurrency"};t.default=function(e){var t=e.systemInfo,n=e.reloadTheme,r=localStorage.getItem("qinglong_dark_theme")||"auto",i=(0,l.useState)(),S=o()(i,2),_=S[0],I=S[1],T=c.Z.useForm(),q=o()(T,1)[0],E=(0,l.useState)(!1),D=o()(E,2),B=D[0],W=D[1],O=(0,j.default)(s.ZP.get("上传")),N=(0,j.default)(s.ZP.get("下载")),H=y||{},A=H.enable,F=H.disable,L=(H.exportGeneratedCSS,H.setFetchMethod),R=H.auto,z=function(e){x.W.put("".concat(v.Z.apiPrefix,"system/config/").concat(e),C()(_,$[e])).then((function(e){var t=e.code;e.data;200===t&&u.ZP.success(s.ZP.get("更新成功"))})).catch((function(e){console.log(e)}))};return(0,l.useEffect)((function(){x.W.get("".concat(v.Z.apiPrefix,"system/config")).then((function(e){var t=e.code,n=e.data;200===t&&n.info&&I(n.info)})).catch((function(e){console.log(e)}))}),[]),(0,M.jsxs)(c.Z,{layout:"vertical",form:q,children:[(0,M.jsx)(c.Z.Item,{label:s.ZP.get("主题"),name:"theme",initialValue:r,children:(0,M.jsxs)(h.ZP.Group,{onChange:function(e){var t=e.target.value;localStorage.setItem("qinglong_dark_theme",e.target.value),L(fetch),"dark"===t?A({}):"light"===t?F():R({}),n()},value:r,optionType:"button",buttonStyle:"solid",children:[(0,M.jsx)(h.ZP.Button,{value:"light",style:{width:70,textAlign:"center"},children:s.ZP.get("亮色")}),(0,M.jsx)(h.ZP.Button,{value:"dark",style:{width:66,textAlign:"center"},children:s.ZP.get("暗色")}),(0,M.jsx)(h.ZP.Button,{value:"auto",style:{width:129,textAlign:"center"},children:s.ZP.get("跟随系统")})]})}),(0,M.jsx)(c.Z.Item,{label:s.ZP.get("日志删除频率"),name:"frequency",tooltip:s.ZP.get("每x天自动删除x天以前的日志"),children:(0,M.jsxs)(p.Z.Group,{compact:!0,children:[(0,M.jsx)(f.Z,{addonBefore:s.ZP.get("每"),addonAfter:s.ZP.get("天"),style:{width:180},min:0,value:null==_?void 0:_.logRemoveFrequency,onChange:function(e){I(a()(a()({},_),{},{logRemoveFrequency:e}))}}),(0,M.jsx)(g.Z,{type:"primary",onClick:function(){z("log-remove-frequency")},style:{width:84},children:s.ZP.get("确认")})]})}),(0,M.jsx)(c.Z.Item,{label:s.ZP.get("定时任务并发数"),name:"frequency",children:(0,M.jsxs)(p.Z.Group,{compact:!0,children:[(0,M.jsx)(f.Z,{style:{width:180},min:1,value:null==_?void 0:_.cronConcurrency,onChange:function(e){I(a()(a()({},_),{},{cronConcurrency:e}))}}),(0,M.jsx)(g.Z,{type:"primary",onClick:function(){z("cron-concurrency")},style:{width:84},children:s.ZP.get("确认")})]})}),(0,M.jsx)(c.Z.Item,{label:s.ZP.get("语言"),name:"lang",children:(0,M.jsx)(m.Z,{defaultValue:localStorage.getItem("lang")||"",style:{width:264},onChange:function(e){localStorage.setItem("lang",e),setTimeout((function(){window.location.reload()}),500)},options:[{value:"",label:s.ZP.get("跟随系统")},{value:"zh",label:"简体中文"},{value:"en",label:"English"}]})}),(0,M.jsxs)(c.Z.Item,{label:s.ZP.get("数据备份还原"),name:"frequency",children:[(0,M.jsx)(g.Z,{type:"primary",onClick:function(){W(!0),x.W.put("".concat(v.Z.apiPrefix,"system/data/export"),{},{responseType:"blob",timeout:864e5,onDownloadProgress:function(e){e.progress&&N(parseFloat((100*e.progress).toFixed(1)))}}).then((function(e){(0,b.saveAs)(e,"data.tgz")})).catch((function(e){console.log(e)})).finally((function(){return W(!1)}))},loading:B,children:B?s.ZP.get("生成数据中..."):s.ZP.get("备份")}),(0,M.jsx)(Z.Z,{method:"put",showUploadList:!1,maxCount:1,action:"".concat(v.Z.apiPrefix,"system/data/import"),onChange:function(e){var t,n,r;null!==(t=e.event)&&void 0!==t&&t.percent&&(O(parseFloat(null===(n=e.event)||void 0===n?void 0:n.percent.toFixed(1))),100===(null===(r=e.event)||void 0===r?void 0:r.percent)&&d.Z.confirm({width:600,maskClosable:!1,title:s.ZP.get("确认重启"),centered:!0,content:(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)("div",{children:s.ZP.get("备份数据上传成功,确认覆盖数据")}),(0,M.jsxs)("div",{children:[s.ZP.get("如果恢复失败,可进入容器执行")," ql reload data"]})]}),okText:s.ZP.get("重启"),onOk:function(){x.W.put("".concat(v.Z.apiPrefix,"system/reload"),{type:"data"}).then((function(){u.ZP.success({content:(0,M.jsxs)("span",{children:[s.ZP.get("系统将在"),(0,M.jsx)(w.Z,{className:"inline-countdown",format:"ss",value:Date.now()+3e4}),s.ZP.get("秒后自动刷新")]}),duration:30}),setTimeout((function(){window.location.reload()}),3e4)})).catch((function(e){console.log(e)}))}}))},name:"data",headers:{Authorization:"Bearer ".concat(localStorage.getItem(v.Z.authKey))},children:(0,M.jsx)(g.Z,{icon:(0,M.jsx)(k.Z,{}),style:{marginLeft:8},children:s.ZP.get("还原数据")})})]}),(0,M.jsx)(c.Z.Item,{label:s.ZP.get("检查更新"),name:"update",children:(0,M.jsx)(P.default,{systemInfo:t})})]})}},7154:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return l}});var r=n(88265),a=n(13800),i=n(84163),o=n(63313),s=n(11527);function l(e){var t=(0,o.useRef)(),n=function(e){var t=e.percent;return(0,s.jsx)(a.Z,{style:{display:"flex",justifyContent:"center"},type:"circle",percent:t})};return function(a){t.current?t.current.update({title:"".concat(e).concat(a>=100?r.ZP.get("成功"):r.ZP.get("中...")),content:(0,s.jsx)(n,{percent:a})}):t.current=i.Z.info({width:600,maskClosable:!1,title:"".concat(e).concat(a>=100?r.ZP.get("成功"):r.ZP.get("中...")),centered:!0,content:(0,s.jsx)(n,{percent:a})})}}},5565:function(e,t,n){"use strict";n.r(t);var r=n(54306),a=n.n(r),i=n(88265),o=n(63313),s=n(92260),l=n(9835),c=n(22159),u=n(24378),d=n(67393),h=n(83535),p=n(57679),f=n(57229),g=n(15207),m=n(14851),Z=n(48039),y=n.n(Z),v=n(4574),x=n(3513),P=n(59953),b=n(24244),k=(n(73324),n(11527)),w=s.Z.Title,j=s.Z.Link;t.default=function(e){var t=e.user,n=e.userChange,r=(0,o.useState)(!1),s=a()(r,2),Z=s[0],S=s[1],C=(0,o.useState)(),M=a()(C,2),$=M[0],_=M[1],I=(0,o.useState)(!1),T=a()(I,2),q=T[0],E=T[1],D=(0,o.useState)(),B=a()(D,2),W=B[0],O=B[1],N=(0,o.useState)(),H=a()(N,2),A=H[0],F=H[1],L=(0,o.useState)(),R=a()(L,2),z=R[0],K=R[1],U=function(){f.W.put("".concat(g.Z.apiPrefix,"user/two-factor/deactive")).then((function(e){var t=e.code,r=e.data;200===t&&r&&(_(!1),n())})).catch((function(e){console.log(e)}))},G=function(){f.W.get("".concat(g.Z.apiPrefix,"user/two-factor/init")).then((function(e){var t=e.code,n=e.data;200===t&&O(n)})).catch((function(e){console.log(e)}))};return(0,o.useEffect)((function(){_(t&&t.twoFactorActivated),K(t.avatar&&"".concat(g.Z.apiPrefix,"static/").concat(t.avatar))}),[t]),q?(0,k.jsx)(k.Fragment,{children:W?(0,k.jsxs)("div",{children:[(0,k.jsx)(w,{level:5,children:i.ZP.get("第一步")}),i.ZP.get("下载两步验证手机应用,比如 Google Authenticator 、"),(0,k.jsx)(j,{href:"https://www.microsoft.com/en-us/security/mobile-authenticator-app",target:"_blank",children:"Microsoft Authenticator"}),"、",(0,k.jsx)(j,{href:"https://authy.com/download/",target:"_blank",children:"Authy"}),"、",(0,k.jsx)(j,{href:"https://support.1password.com/one-time-passwords/",target:"_blank",children:"1Password"}),"、",(0,k.jsx)(j,{href:"https://support.logmeininc.com/lastpass/help/lastpass-authenticator-lp030014",target:"_blank",children:"LastPass Authenticator"}),(0,k.jsx)(w,{style:{marginTop:5},level:5,children:i.ZP.get("第二步")}),i.ZP.get("使用手机应用扫描二维码,或者输入秘钥")," ",null==W?void 0:W.secret,(0,k.jsx)("div",{style:{marginTop:10},children:(0,k.jsx)(y(),{style:{border:"1px solid #21262d",borderRadius:6},includeMargin:!0,size:187,value:null==W?void 0:W.url})}),(0,k.jsx)(w,{style:{marginTop:5},level:5,children:i.ZP.get("第三步")}),i.ZP.get("输入手机应用上的6位数字"),(0,k.jsx)(c.Z,{style:{margin:"10px 0 10px 0",display:"block",maxWidth:200},value:A,onChange:function(e){return F(e.target.value)},placeholder:"123456"}),(0,k.jsx)(u.Z,{type:"primary",loading:Z,onClick:function(){S(!0),f.W.put("".concat(g.Z.apiPrefix,"user/two-factor/active"),{code:A}).then((function(e){var t=e.code,r=e.data;200===t&&(r?(l.ZP.success(i.ZP.get("激活成功")),E(!1),_(!0),n()):l.ZP.success(i.ZP.get("验证失败")))})).catch((function(e){console.log(e)})).finally((function(){return S(!1)}))},children:i.ZP.get("完成设置")})]}):(0,k.jsx)(v.Z,{})}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)("div",{style:{fontSize:18,borderBottom:"1px solid #f0f0f0",marginBottom:8,paddingBottom:4},children:i.ZP.get("修改用户名密码")}),(0,k.jsxs)(d.Z,{onFinish:function(e){f.W.put("".concat(g.Z.apiPrefix,"user"),{username:e.username,password:e.password}).then((function(e){var t=e.code;e.data;200===t&&(localStorage.removeItem(g.Z.authKey),m.history.push("/login"))})).catch((function(e){console.log(e)}))},layout:"vertical",children:[(0,k.jsx)(d.Z.Item,{label:i.ZP.get("用户名"),name:"username",rules:[{required:!0}],hasFeedback:!0,style:{maxWidth:300},children:(0,k.jsx)(c.Z,{autoComplete:"username",placeholder:i.ZP.get("用户名")})}),(0,k.jsx)(d.Z.Item,{label:i.ZP.get("密码"),name:"password",rules:[{required:!0},{pattern:/^(?!admin$).*$/,message:i.ZP.get("密码不能为admin")}],hasFeedback:!0,style:{maxWidth:300},children:(0,k.jsx)(c.Z,{type:"password",autoComplete:"current-password",placeholder:i.ZP.get("密码")})}),(0,k.jsx)(u.Z,{type:"primary",htmlType:"submit",children:i.ZP.get("保存")})]}),(0,k.jsx)("div",{style:{fontSize:18,borderBottom:"1px solid #f0f0f0",marginBottom:8,paddingBottom:4,marginTop:16},children:i.ZP.get("两步验证")}),(0,k.jsx)(u.Z,{type:"primary",danger:$,onClick:function(){$?U():(G(),E(!0))},children:$?i.ZP.get("禁用"):i.ZP.get("启用")}),(0,k.jsx)("div",{style:{fontSize:18,borderBottom:"1px solid #f0f0f0",marginBottom:8,paddingBottom:4,marginTop:16},children:i.ZP.get("头像")}),(0,k.jsx)(h.C,{size:128,shape:"square",icon:(0,k.jsx)(x.Z,{}),src:z}),(0,k.jsx)(b.Z,{rotationSlider:!0,children:(0,k.jsx)(p.Z,{method:"put",showUploadList:!1,maxCount:1,action:"".concat(g.Z.apiPrefix,"user/avatar"),onChange:function(e){e.file&&e.file.response&&(K("".concat(g.Z.apiPrefix,"static/").concat(e.file.response.data)),n())},name:"avatar",headers:{Authorization:"Bearer ".concat(localStorage.getItem(g.Z.authKey))},children:(0,k.jsx)(u.Z,{icon:(0,k.jsx)(P.Z,{}),style:{marginLeft:8},children:i.ZP.get("更换头像")})})})]})}},4273:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return g}});var r=n(63313),a=n(31988),i=n(24378),o=n(14797),s={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z"}}]},name:"vertical-align-top",theme:"outlined"},l=n(46420),c=function(e,t){return r.createElement(l.Z,(0,o.Z)((0,o.Z)({},e),{},{ref:t,icon:s}))};c.displayName="VerticalAlignTopOutlined";var u=r.forwardRef(c),d={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M859.9 780H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM505.7 669a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V176c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8z"}}]},name:"vertical-align-bottom",theme:"outlined"},h=function(e,t){return r.createElement(l.Z,(0,o.Z)((0,o.Z)({},e),{},{ref:t,icon:d}))};h.displayName="VerticalAlignBottomOutlined";var p=r.forwardRef(h),f=n(11527),g=function(e){var t=e.data,n=e.height,o=e.theme,s=(0,r.useRef)(null),l=function(e){s.current.scrollDOM.scrollTo({top:"start"===e?0:s.current.scrollDOM.scrollHeight})};return(0,f.jsxs)("div",{style:{position:"relative"},children:[(0,f.jsx)(a.ZP,{maxHeight:"".concat(n,"px"),value:t,onCreateEditor:function(e){s.current=e},readOnly:!0,theme:o.includes("dark")?"dark":"light"}),(0,f.jsxs)("div",{style:{position:"absolute",bottom:20,right:20,display:"flex",flexDirection:"column",gap:10},children:[(0,f.jsx)(i.Z,{size:"small",icon:(0,f.jsx)(u,{}),onClick:function(){l("start")}}),(0,f.jsx)(i.Z,{size:"small",icon:(0,f.jsx)(p,{}),onClick:function(){l("end")}})]})]})}},15207:function(e,t,n){"use strict";var r=n(88265),a=window.__ENV__QlBaseUrl||"/";t.Z={siteName:r.ZP.get("青龙"),baseUrl:a,apiPrefix:"".concat(a,"api/"),authKey:"token",layouts:[{name:"primary",include:[/.*/],exclude:[/(\/(en|zh))*\/login/]}],i18n:{languages:[{key:"pt-br",title:"Português",flag:"/portugal.svg"},{key:"en",title:"English",flag:"/america.svg"},{key:"zh",title:r.ZP.get("中文"),flag:"/china.svg"}],defaultLanguage:"en"},scopes:[{name:r.ZP.get("定时任务"),value:"crons"},{name:r.ZP.get("环境变量"),value:"envs"},{name:r.ZP.get("订阅管理"),value:"subscriptions"},{name:r.ZP.get("配置文件"),value:"configs"},{name:r.ZP.get("脚本管理"),value:"scripts"},{name:r.ZP.get("日志管理"),value:"logs"},{name:r.ZP.get("依赖管理"),value:"dependencies"},{name:r.ZP.get("系统信息"),value:"system"}],scopesMap:{crons:r.ZP.get("定时任务"),envs:r.ZP.get("环境变量"),subscriptions:r.ZP.get("订阅管理"),configs:r.ZP.get("配置文件"),scripts:r.ZP.get("脚本管理"),logs:r.ZP.get("日志管理"),dependencies:r.ZP.get("依赖管理"),system:r.ZP.get("系统信息")},notificationModes:[{value:"gotify",label:"Gotify"},{value:"goCqHttpBot",label:"GoCqHttpBot"},{value:"serverChan",label:r.ZP.get("Server酱")},{value:"pushDeer",label:"PushDeer"},{value:"bark",label:"Bark"},{value:"telegramBot",label:r.ZP.get("Telegram机器人")},{value:"dingtalkBot",label:r.ZP.get("钉钉机器人")},{value:"weWorkBot",label:r.ZP.get("企业微信机器人")},{value:"weWorkApp",label:r.ZP.get("企业微信应用")},{value:"aibotk",label:r.ZP.get("智能微秘书")},{value:"iGot",label:"IGot"},{value:"pushPlus",label:"PushPlus"},{value:"chat",label:r.ZP.get("群晖chat")},{value:"email",label:r.ZP.get("邮箱")},{value:"lark",label:r.ZP.get("飞书机器人")},{value:"pushMe",label:"PushMe"},{value:"chronocat",label:"Chronocat"},{value:"webhook",label:r.ZP.get("自定义通知")},{value:"closed",label:r.ZP.get("已关闭")}],notificationModeMap:{gotify:[{label:"gotifyUrl",tip:r.ZP.get("gotify的url地址,例如 https://push.example.de:8080"),required:!0},{label:"gotifyToken",tip:r.ZP.get("gotify的消息应用token码"),required:!0},{label:"gotifyPriority",tip:r.ZP.get("推送消息的优先级")}],chat:[{label:"chatUrl",tip:r.ZP.get("chat的url地址"),required:!0},{label:"chatToken",tip:r.ZP.get("chat的token码"),required:!0}],goCqHttpBot:[{label:"goCqHttpBotUrl",tip:r.ZP.get("推送到个人QQ: http://127.0.0.1/send_private_msg,群:http://127.0.0.1/send_group_msg"),required:!0},{label:"goCqHttpBotToken",tip:r.ZP.get("访问密钥"),required:!0},{label:"goCqHttpBotQq",tip:r.ZP.get("如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群"),required:!0}],serverChan:[{label:"serverChanKey",tip:r.ZP.get("Server酱SENDKEY"),required:!0}],pushDeer:[{label:"pushDeerKey",tip:r.ZP.get("PushDeer的Key,https://github.com/easychen/pushdeer"),required:!0},{label:"pushDeerUrl",tip:r.ZP.get("PushDeer的自架API endpoint,默认是 https://api2.pushdeer.com/message/push")}],bark:[{label:"barkPush",tip:r.ZP.get("Bark的信息IP/设备码,例如:https://api.day.app/XXXXXXXX"),required:!0},{label:"barkIcon",tip:r.ZP.get("BARK推送图标,自定义推送图标 (需iOS15或以上才能显示)")},{label:"barkSound",tip:r.ZP.get("BARK推送铃声,铃声列表去APP查看复制填写")},{label:"barkGroup",tip:r.ZP.get("BARK推送消息的分组,默认为qinglong")},{label:"barkLevel",tip:r.ZP.get("BARK推送消息的时效性,默认为active")},{label:"barkUrl",tip:r.ZP.get("BARK推送消息的跳转URL")}],telegramBot:[{label:"telegramBotToken",tip:r.ZP.get("telegram机器人的token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw"),required:!0},{label:"telegramBotUserId",tip:r.ZP.get("telegram用户的id,例如:129xxx206"),required:!0},{label:"telegramBotProxyHost",tip:r.ZP.get("代理IP")},{label:"telegramBotProxyPort",tip:r.ZP.get("代理端口")},{label:"telegramBotProxyAuth",tip:r.ZP.get("telegram代理配置认证参数,用户名与密码用英文冒号连接 user:password")},{label:"telegramBotApiHost",tip:r.ZP.get("telegram api自建的反向代理地址,默认tg官方api")}],dingtalkBot:[{label:"dingtalkBotToken",tip:r.ZP.get("钉钉机器人webhook token,例如:5a544165465465645d0f31dca676e7bd07415asdasd"),required:!0},{label:"dingtalkBotSecret",tip:r.ZP.get("密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串")}],weWorkBot:[{label:"weWorkBotKey",tip:r.ZP.get("企业微信机器人的webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa"),required:!0},{label:"weWorkOrigin",tip:r.ZP.get("企业微信代理地址")}],weWorkApp:[{label:"weWorkAppKey",tip:r.ZP.get("corpid、corpsecret、touser(注:多个成员ID使用|隔开)、agentid、消息类型(选填,不填默认文本消息类型) 注意用,号隔开(英文输入法的逗号),例如:wwcfrs,B-76WERQ,qinglong,1000001,2COat"),required:!0},{label:"weWorkOrigin",tip:r.ZP.get("企业微信代理地址")}],aibotk:[{label:"aibotkKey",tip:r.ZP.get("密钥key,智能微秘书个人中心获取apikey,申请地址:https://wechat.aibotk.com/signup?from=ql"),required:!0},{label:"aibotkType",tip:r.ZP.get("发送的目标,群组或者好友"),required:!0,placeholder:r.ZP.get("请输入要发送的目标"),items:[{value:"room",label:r.ZP.get("群聊")},{value:"contact",label:r.ZP.get("好友")}]},{label:"aibotkName",tip:r.ZP.get("要发送的用户昵称或群名,如果目标是群,需要填群名,如果目标是好友,需要填好友昵称"),required:!0}],iGot:[{label:"iGotPushKey",tip:r.ZP.get("iGot的信息推送key,例如:https://push.hellyw.com/XXXXXXXX"),required:!0}],pushPlus:[{label:"pushPlusToken",tip:r.ZP.get("微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送,参考 https://www.pushplus.plus/"),required:!0},{label:"pushPlusUser",tip:r.ZP.get("一对多推送的“群组编码”(一对多推送下面->您的群组(如无则创建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)")}],lark:[{label:"larkKey",tip:r.ZP.get("飞书群组机器人:https://www.feishu.cn/hc/zh-CN/articles/360024984973"),required:!0}],email:[{label:"emailService",tip:r.ZP.get("邮箱服务名称,比如126、163、Gmail、QQ等,支持列表https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json"),required:!0},{label:"emailUser",tip:r.ZP.get("邮箱地址"),required:!0},{label:"emailPass",tip:r.ZP.get("SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定"),required:!0}],pushMe:[{label:"pushMeKey",tip:r.ZP.get("PushMe的Key,https://push.i-i.me/"),required:!0}],chronocat:[{label:"chronocatURL",tip:r.ZP.get("Chronocat Red 服务的连接地址 https://chronocat.vercel.app/install/docker/official/"),required:!0},{label:"chronocatQQ",tip:r.ZP.get("个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx"),required:!0},{label:"chronocatToken",tip:r.ZP.get("docker安装在持久化config目录下的chronocat.yml文件可找到"),required:!0}],webhook:[{label:"webhookMethod",tip:r.ZP.get("请求方法"),required:!0,items:[{value:"GET"},{value:"POST"},{value:"PUT"}]},{label:"webhookContentType",tip:r.ZP.get("请求头Content-Type"),required:!0,items:[{value:"text/plain"},{value:"application/json"},{value:"multipart/form-data"},{value:"application/x-www-form-urlencoded"}]},{label:"webhookUrl",tip:r.ZP.get("请求链接以http或者https开头。url或者body中必须包含$title,$content可选,对应api内容的位置"),required:!0,placeholder:"https://xxx.cn/api?content=$title\n"},{label:"webhookHeaders",tip:r.ZP.get("请求头格式Custom-Header1: Header1,多个换行分割"),placeholder:"Custom-Header1: Header1\nCustom-Header2: Header2"},{label:"webhookBody",tip:r.ZP.get("请求体格式key1: value1,多个换行分割。url或者body中必须包含$title,$content可选,对应api内容的位置"),placeholder:"key1: $title\nkey2: $content"}]},documentTitleMap:{"/login":r.ZP.get("登录"),"/initialization":r.ZP.get("初始化"),"/crontab":r.ZP.get("定时任务"),"/env":r.ZP.get("环境变量"),"/subscription":r.ZP.get("订阅管理"),"/config":r.ZP.get("配置文件"),"/script":r.ZP.get("脚本管理"),"/diff":r.ZP.get("对比工具"),"/log":r.ZP.get("日志管理"),"/setting":r.ZP.get("系统设置"),"/error":r.ZP.get("错误日志"),"/dependence":r.ZP.get("依赖管理")},dependenceTypes:["nodejs","python3","linux"]}},57229:function(e,t,n){"use strict";n.d(t,{W:function(){return g}});var r=n(25359),a=n.n(r),i=n(49811),o=n.n(i),s=n(88265),l=n(9835),c=n(15207),u=n(14851),d=n(73669);l.ZP.config({duration:2});var h=Date.now(),p=d.Z.create({timeout:6e4,params:{t:h}}),f=["/api/user/login","/open/auth/token","/api/user/two-factor/login","/api/system","/api/user/init","/api/user/notification/init"];p.interceptors.request.use((function(e){var t=localStorage.getItem(c.Z.authKey);return t&&!f.includes(e.url)?(e.headers.Authorization="Bearer ".concat(t),e):e})),p.interceptors.response.use(function(){var e=o()(a()().mark((function e(t){var n,r,i;return a()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.status,![502,504].includes(n)){e.next=5;break}u.history.push("/error"),e.next=18;break;case 5:if(401!==n){e.next=9;break}"/login"!==u.history.location.pathname&&(localStorage.removeItem(c.Z.authKey),u.history.push("/login")),e.next=18;break;case 9:return e.prev=9,200!==(r=t.data).code&&(i=r.message||r.data)&&l.ZP.error({content:i,style:{maxWidth:500,margin:"0 auto"}}),e.abrupt("return",r);case 15:e.prev=15,e.t0=e.catch(9);case 17:case 18:return e.abrupt("return",t);case 19:case"end":return e.stop()}}),e,null,[[9,15]])})));return function(t){return e.apply(this,arguments)}}(),(function(e){if(e.response){var t=e.response.data?e.response.data.message||e.message||e.response.data:e.response.statusText,n=e.response.status;[502,504].includes(n)?u.history.push("/error"):401===n?"/login"!==u.history.location.pathname&&(l.ZP.error(s.ZP.get("登录已过期,请重新登录")),localStorage.removeItem(c.Z.authKey),u.history.push("/login")):l.ZP.error({content:t,style:{maxWidth:500,margin:"0 auto"}})}else console.log(e.message);return Promise.reject(e)}));var g=p},21758:function(e,t,n){"use strict";var r=n(93525),a=n.n(r),i=n(12342),o=n.n(i),s=n(25359),l=n.n(s),c=n(49811),u=n.n(c),d=n(21140),h=n.n(d),p=n(63466),f=n.n(p),g=n(52510),m=n.n(g),Z=n(78078),y=n.n(Z),v=["type"],x=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};h()(this,e),m()(this,"url",void 0),m()(this,"socket",null),m()(this,"subscriptions",new Map),m()(this,"options",void 0),m()(this,"reconnectAttempts",0),m()(this,"heartbeatTimeout",null),m()(this,"state","closed"),this.url=t,this.options={maxReconnectAttempts:n.maxReconnectAttempts||5,reconnectInterval:n.reconnectInterval||3e3,heartbeatInterval:n.heartbeatInterval||3e4},this.init()}var t,n;return f()(e,[{key:"init",value:(n=u()(l()().mark((function e(){var t=this;return l()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,this.state="connecting",this.emit("connecting");case 3:if(!(this.reconnectAttempts<this.options.maxReconnectAttempts)){e.next=16;break}return this.socket=new(y())(this.url),this.setupEventListeners(),this.startHeartbeat(),e.next=9,this.waitForClose();case 9:return this.stopHeartbeat(),this.socket=null,this.reconnectAttempts++,e.next=14,new Promise((function(e){return setTimeout(e,t.options.reconnectInterval)}));case 14:e.next=3;break;case 16:e.next=21;break;case 18:e.prev=18,e.t0=e.catch(0),this.handleError(e.t0);case 21:case"end":return e.stop()}}),e,this,[[0,18]])}))),function(){return n.apply(this,arguments)})},{key:"setupEventListeners",value:function(){var e=this;this.socket&&(this.socket.onopen=function(){e.state="open",e.emit("open")},this.socket.onmessage=function(t){var n=JSON.parse(t.data);e.dispatchMessage(n)},this.socket.onclose=function(){e.state="closed",e.emit("close")})}},{key:"waitForClose",value:(t=u()(l()().mark((function e(){var t;return l()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((null===(t=this.socket)||void 0===t?void 0:t.readyState)===y().CLOSED){e.next=5;break}return e.next=3,new Promise((function(e){return setTimeout(e,100)}));case 3:e.next=0;break;case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"subscribe",value:function(e,t){var n=this.subscriptions.get(e)||new Set;if(!n.has(t)){n.add(t),this.subscriptions.set(e,n);var r={action:"subscribe",topic:e};this.send(r)}}},{key:"unsubscribe",value:function(e,t){var n=this.subscriptions.get(e)||new Set;if(n.has(t)){n.delete(t);var r={action:"unsubscribe",topic:e};this.send(r)}}},{key:"send",value:function(e){var t;(null===(t=this.socket)||void 0===t?void 0:t.readyState)===y().OPEN&&this.socket.send(JSON.stringify(e))}},{key:"dispatchMessage",value:function(e){var t=e.type,n=o()(e,v),r=this.subscriptions.get(t)||new Set;a()(r).forEach((function(e){return e(n)}))}},{key:"startHeartbeat",value:function(){var e=this;this.heartbeatTimeout=setInterval((function(){var t;(null===(t=e.socket)||void 0===t?void 0:t.readyState)===y().OPEN&&e.socket.send(JSON.stringify({type:"heartbeat"}))}),this.options.heartbeatInterval)}},{key:"stopHeartbeat",value:function(){this.heartbeatTimeout&&clearInterval(this.heartbeatTimeout)}},{key:"close",value:function(){this.socket&&(this.state="closed",this.stopHeartbeat(),this.socket.close(),this.emit("close"))}},{key:"handleError",value:function(e){console.error("WebSocket错误:",e),this.emit("error",e)}},{key:"on",value:function(e,t){}},{key:"emit",value:function(e,t){}}],[{key:"getInstance",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0;return e.instance||(e.instance=new e(t,n)),e.instance}}]),e}();m()(x,"instance",null),t.Z=x},10761:function(){},52053:function(e){e.exports=function(){"use strict";var e=1e3,t=6e4,n=36e5,r="millisecond",a="second",i="minute",o="hour",s="day",l="week",c="month",u="quarter",d="year",h="date",p="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},Z=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},y={s:Z,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),a=n%60;return(t<=0?"+":"-")+Z(r,2,"0")+":"+Z(a,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),a=t.clone().add(r,c),i=n-a<0,o=t.clone().add(r+(i?-1:1),c);return+(-(r+(n-a)/(i?a-o:o-a))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:c,y:d,w:l,d:s,D:h,h:o,m:i,s:a,ms:r,Q:u}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},v="en",x={};x[v]=m;var P=function(e){return e instanceof j},b=function e(t,n,r){var a;if(!t)return v;if("string"==typeof t){var i=t.toLowerCase();x[i]&&(a=i),n&&(x[i]=n,a=i);var o=t.split("-");if(!a&&o.length>1)return e(o[0])}else{var s=t.name;x[s]=t,a=s}return!r&&a&&(v=a),a||!r&&v},k=function(e,t){if(P(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new j(n)},w=y;w.l=b,w.i=P,w.w=function(e,t){return k(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var j=function(){function m(e){this.$L=b(e.locale,null,!0),this.parse(e)}var Z=m.prototype;return Z.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(w.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(f);if(r){var a=r[2]-1||0,i=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)):new Date(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},Z.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},Z.$utils=function(){return w},Z.isValid=function(){return!(this.$d.toString()===p)},Z.isSame=function(e,t){var n=k(e);return this.startOf(t)<=n&&n<=this.endOf(t)},Z.isAfter=function(e,t){return k(e)<this.startOf(t)},Z.isBefore=function(e,t){return this.endOf(t)<k(e)},Z.$g=function(e,t,n){return w.u(e)?this[t]:this.set(n,e)},Z.unix=function(){return Math.floor(this.valueOf()/1e3)},Z.valueOf=function(){return this.$d.getTime()},Z.startOf=function(e,t){var n=this,r=!!w.u(t)||t,u=w.p(e),p=function(e,t){var a=w.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return r?a:a.endOf(s)},f=function(e,t){return w.w(n.toDate()[e].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},g=this.$W,m=this.$M,Z=this.$D,y="set"+(this.$u?"UTC":"");switch(u){case d:return r?p(1,0):p(31,11);case c:return r?p(1,m):p(0,m+1);case l:var v=this.$locale().weekStart||0,x=(g<v?g+7:g)-v;return p(r?Z-x:Z+(6-x),m);case s:case h:return f(y+"Hours",0);case o:return f(y+"Minutes",1);case i:return f(y+"Seconds",2);case a:return f(y+"Milliseconds",3);default:return this.clone()}},Z.endOf=function(e){return this.startOf(e,!1)},Z.$set=function(e,t){var n,l=w.p(e),u="set"+(this.$u?"UTC":""),p=(n={},n[s]=u+"Date",n[h]=u+"Date",n[c]=u+"Month",n[d]=u+"FullYear",n[o]=u+"Hours",n[i]=u+"Minutes",n[a]=u+"Seconds",n[r]=u+"Milliseconds",n)[l],f=l===s?this.$D+(t-this.$W):t;if(l===c||l===d){var g=this.clone().set(h,1);g.$d[p](f),g.init(),this.$d=g.set(h,Math.min(this.$D,g.daysInMonth())).$d}else p&&this.$d[p](f);return this.init(),this},Z.set=function(e,t){return this.clone().$set(e,t)},Z.get=function(e){return this[w.p(e)]()},Z.add=function(r,u){var h,p=this;r=Number(r);var f=w.p(u),g=function(e){var t=k(p);return w.w(t.date(t.date()+Math.round(e*r)),p)};if(f===c)return this.set(c,this.$M+r);if(f===d)return this.set(d,this.$y+r);if(f===s)return g(1);if(f===l)return g(7);var m=(h={},h[i]=t,h[o]=n,h[a]=e,h)[f]||1,Z=this.$d.getTime()+r*m;return w.w(Z,this)},Z.subtract=function(e,t){return this.add(-1*e,t)},Z.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||p;var r=e||"YYYY-MM-DDTHH:mm:ssZ",a=w.z(this),i=this.$H,o=this.$m,s=this.$M,l=n.weekdays,c=n.months,u=function(e,n,a,i){return e&&(e[n]||e(t,r))||a[n].slice(0,i)},d=function(e){return w.s(i%12||12,e,"0")},h=n.meridiem||function(e,t,n){var r=e<12?"AM":"PM";return n?r.toLowerCase():r},f={YY:String(this.$y).slice(-2),YYYY:w.s(this.$y,4,"0"),M:s+1,MM:w.s(s+1,2,"0"),MMM:u(n.monthsShort,s,c,3),MMMM:u(c,s),D:this.$D,DD:w.s(this.$D,2,"0"),d:String(this.$W),dd:u(n.weekdaysMin,this.$W,l,2),ddd:u(n.weekdaysShort,this.$W,l,3),dddd:l[this.$W],H:String(i),HH:w.s(i,2,"0"),h:d(1),hh:d(2),a:h(i,o,!0),A:h(i,o,!1),m:String(o),mm:w.s(o,2,"0"),s:String(this.$s),ss:w.s(this.$s,2,"0"),SSS:w.s(this.$ms,3,"0"),Z:a};return r.replace(g,(function(e,t){return t||f[e]||a.replace(":","")}))},Z.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},Z.diff=function(r,h,p){var f,g=w.p(h),m=k(r),Z=(m.utcOffset()-this.utcOffset())*t,y=this-m,v=w.m(this,m);return v=(f={},f[d]=v/12,f[c]=v,f[u]=v/3,f[l]=(y-Z)/6048e5,f[s]=(y-Z)/864e5,f[o]=y/n,f[i]=y/t,f[a]=y/e,f)[g]||y,p?v:w.a(v)},Z.daysInMonth=function(){return this.endOf(c).$D},Z.$locale=function(){return x[this.$L]},Z.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=b(e,t,!0);return r&&(n.$L=r),n},Z.clone=function(){return w.w(this.$d,this)},Z.toDate=function(){return new Date(this.valueOf())},Z.toJSON=function(){return this.isValid()?this.toISOString():null},Z.toISOString=function(){return this.$d.toISOString()},Z.toString=function(){return this.$d.toUTCString()},m}(),S=j.prototype;return k.prototype=S,[["$ms",r],["$s",a],["$m",i],["$H",o],["$W",s],["$M",c],["$y",d],["$D",h]].forEach((function(e){S[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),k.extend=function(e,t){return e.$i||(e(t,j,k),e.$i=!0),k},k.locale=b,k.isDayjs=P,k.unix=function(e){return k(1e3*e)},k.en=x[v],k.Ls=x,k.p={},k}()}}]);