sumor 1.2.9 → 1.3.0
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/index.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Yo from"chokidar";var ut=t=>{let e={running:!1,next:!1};return async(...r)=>{if(e.running){e.next=!0;return}e.running=!0,await t(...r),await new Promise(o=>{setTimeout(o,500)}),e.running=!1,e.next&&(e.next=!1,await t())}};import zo from"@vitejs/plugin-vue";import Be from"fs-extra";import Bo from"vite-plugin-rewrite-all";var ft={"font-size-base":"font-size","font-size-lg":"font-size-large","border-radius-base":"border-radius","border-radius-sm":"border-radius-small","primary-color":"color-primary","info-color":"color-info","success-color":"color-success","processing-color":"color-info","error-color":"color-danger","highlight-color":"color-danger","warning-color":"color-warning","link-color":"color-primary","--color-primary":"color-primary","--color-success":"color-success","--color-warning":"color-warning","--color-danger":"color-danger","--color-info":"color-info","--border-radius-base":"border-radius","--border-radius-small":"border-radius-small"};var pt=t=>{let e={"color-blue":"#50a1ff","color-indigo":"#6610f2","color-purple":"#926dde","color-pink":"#e83e8c","color-red":"#ff4954","color-orange":"#ffbe00","color-yellow":"#ffba00","color-green":"#3cd458","color-teal":"#20c997","color-cyan":"#17a2b8","color-white":"#fff","color-gray":"#868e96","color-gray-dark":"#343a40","color-primary":"#50a1ff","color-secondary":"#e9ecf0","color-success":"#3cd458","color-info":"#926dde","color-warning":"#ffba00","color-danger":"#ff4954","color-light":"#f8f9fa","color-dark":"#273343","color-background":"#f8f8f8","font-size":"14px","font-size-small":"12px","font-size-large":"16px","border-radius":"2px"},r={"border-radius-small":"1px"};try{let o=parseInt(t["border-radius"].replace("px",""),10);r["border-radius-small"]=`${parseInt(o/2,10)}px`}catch{}return{...e,...t,...r}};var Uo=(t,e)=>{let r="";for(let s in t)r+=`$${s}:${t[s]};
|
|
2
2
|
`;for(let s in e)r+=`$${s}:$${e[s]};
|
|
3
|
-
`;let o={};for(let s in t)o[s]=t[s];for(let s in e)o[s]=`@${e[s]}`;return{scss:r,less:o}},dt=t=>(t=pt(t),
|
|
3
|
+
`;let o={};for(let s in t)o[s]=t[s];for(let s in e)o[s]=`@${e[s]}`;return{scss:r,less:o}},dt=t=>(t=pt(t),Uo(t,ft));var gt=t=>{let e=dt(t);return{preprocessorOptions:{scss:{additionalData:e.scss},less:{modifyVars:e.less,javascriptEnabled:!0}}}};import{pathToFileURL as Ho}from"url";var wt=async(t,e)=>{let r={};await Be.exists(process.cwd()+"/vite.config.js")&&(r=(await import(Ho(process.cwd()+"/vite.config.js"))).default);let o=t.config.styleVars,s=gt(o),i=t.uiPort;return await Be.remove(process.cwd()+"/tmp/web/.vite"),await Be.ensureDir(process.cwd()+"/tmp/web/.vite"),r=Object.assign({root:process.cwd()+"/tmp/web",base:"/",publicDir:process.cwd()+"/web/public",cacheDir:process.cwd()+"/tmp/web/.vite"},r),r.server=Object.assign({},r.server,{server:{middlewareMode:"html"},port:i}),r.plugins=[Bo(),zo()].concat(r.plugins),r.css=Object.assign({},r.css,s),r.build=Object.assign({},r.build),r.resolve=Object.assign({extensions:[".vue",".mjs",".js",".ts",".jsx",".tsx",".json"]},r.resolve),r};import ge from"path";import Go from"fs-extra";var we=async t=>{let e=t.root,r={root:e,pages:ge.join(e,"/web/pages"),stores:ge.join(e,"/web/stores"),tmp:ge.join(e,"/tmp"),tmpWeb:ge.join(e,"/tmp/web")};for(let o in r)r[o]=r[o].replace(/\\/g,"/"),await Go.ensureDir(r[o]);return r};var re=async t=>{let e=await we(t);return await wt(t,e)};import j from"fs-extra";import Jo from"node:path";import{fileURLToPath as Wo}from"node:url";var he=Jo.dirname(Wo(import.meta.url));var ht=async(t,e,r)=>{let o=`${he}/template/web`,s=await j.exists(`${e.tmpWeb}/index.html`);(r||!s)&&await j.copy(`${o}/index.html`,`${e.tmpWeb}/index.html`);let i=await j.exists(`${e.tmpWeb}/src`);(r||!i)&&await j.copy(`${o}/src`,`${e.tmpWeb}/src`);let n=`${e.root}/web/Frame.vue`,m=await j.exists(n);(r||m)&&await j.copy(`${o}/AppWithFrame.vue`,`${e.tmpWeb}/src/App.vue`);let a={dark:!!t.config.dark};await j.writeFile(`${e.tmpWeb}/src/env.js`,`export default ${JSON.stringify(a,null,4)}`)};import ye from"yaml";import E from"fs-extra";import He from"fs-extra";var B=async(t,e)=>{await He.ensureFile(t),await He.readFile(t,"utf-8")!==e&&await He.writeFile(t,e)};var oe=async(t,e)=>{let r=await E.exists(`${t}.json`),o=await E.exists(`${t}.yaml`),s=await E.exists(`${t}.yml`),i={};if(s){let n=await E.readFile(`${t}.yml`,"utf-8");i=ye.parse(n)}else if(o){let n=await E.readFile(`${t}.yaml`,"utf-8");i=ye.parse(n)}else r?i=await E.readJson(`${t}.json`):e||(await E.ensureFile(`${t}.yml`),await E.writeFile(`${t}.yml`,ye.stringify(i)));return!e&&(r||o)&&!s&&(await E.remove(`${t}.json`),await E.remove(`${t}.yaml`),await B(`${t}.yml`,ye.stringify(i))),i};import Ko from"path";import{glob as Vo}from"glob";var $e=async(t,e)=>{e=e||{};let r=await Vo(t,e);return r=r.map(o=>(o=Ko.normalize(o),o=o.replace(/\\/g,"/"),o)),r};var yt=async(t,e)=>{let r=await $e("**/*.vue",{cwd:e.pages}),o=[];for(let n in r){let m=r[n],c=`${e.pages}/${m}`.replace(/\\/g,"/").replace(".vue",""),l=`../../web/pages/${m}`.replace(/\\/g,"/"),u=await oe(c,t.mode==="production"),f=`/${m}`.replace(e.pages,"").replace(".vue","").replace(/\\/g,"/").toLowerCase().replace("/index","");f===""&&(f="/");let w="";if(u.alive&&(w=`,
|
|
4
4
|
meta:{keepAlive:true}`),u.routes)for(let d of u.routes)o.push(` {
|
|
5
5
|
path: "${d}",
|
|
6
6
|
component: ()=>import("${l}"),
|
|
@@ -20,15 +20,15 @@ import Xo from"chokidar";var ut=t=>{let e={running:!1,next:!1};return async(...r
|
|
|
20
20
|
}`)}let i=`export default [
|
|
21
21
|
${o.join(`,
|
|
22
22
|
`)}
|
|
23
|
-
]`;await
|
|
23
|
+
]`;await B(`${e.tmpWeb}/routes.js`,i)};var $t=async t=>{let e=await $e("**/*.js",{cwd:t.stores}),r=[],o=[];for(let i in e){let n=`store${parseInt(i)+1}`;r.push(`import ${n} from "../../web/stores/${e[i]}"`),o.push(`"${e[i].replace(".js","").replace(/\\/g,"/").replace(/\//g,".")}":${n}`)}let s=`${r.join(`;
|
|
24
24
|
`)};
|
|
25
25
|
const stores = {
|
|
26
26
|
${o.join(`,
|
|
27
27
|
`)}
|
|
28
28
|
}
|
|
29
|
-
export default stores;`;await
|
|
29
|
+
export default stores;`;await B(`${t.tmpWeb}/stores.js`,s)};var xe=async(t,e)=>{let r=await we(t);await ht(t,r,e),await yt(t,r),await $t(r)};import{createServer as Zo,defineConfig as Xo}from"vite";var xt=async t=>{let{getLogger:e,root:r,config:o}=t,s=e("DEV"),i=ut(async c=>{await xe(t,c),s.info("\u4EE3\u7801\u5DF2\u66F4\u65B0")});await i(!0),Yo.watch(".",{cwd:`${r}/web`,ignored:/(^|[\/\\])(tmp|node_modules|\.git|\.nuxt|\.idea|\.vscode|\.cache|\.sass-cache|\.DS_Store|\.env)/,persistent:!0}).on("all",async(c,l)=>{await i()});let m=await re(t),a=await Zo(Xo(m));await a.listen(),a.printUrls()};var _t=t=>{let e={},r={};e.setContext=(i,n)=>{typeof i=="object"?(Object.assign(e,i),Object.assign(r,i)):(e[i]=n,r[i]=n)},e.getContext=()=>({...r});let o=(t.mode||process.env.mode||"production").toLowerCase(),s;switch(o){case"dev":s="development";break;case"debug":s="development";break;case"development":s="development";break;case"build":s="build";break;case"setup":s="setup";break;case"preview":s="preview";break;case"production":s="production";break;case"run":s="production";break;default:s="production";break}return e.setContext({mode:s}),e.root=process.cwd(),e};var bt=async t=>new Promise(e=>{setTimeout(()=>{e()},t*1e3)});import qo from"uuid";var _e=()=>qo.v4().replace(/-/g,"");import Qo from"stream";var es=t=>{let e=t,r;return typeof t=="string"?r=Buffer.from(t):Buffer.isBuffer(t)&&(r=t),r&&(e=new Qo.PassThrough,e.end(r)),e},be=es;function St(t){return new Promise((e,r)=>{let o=[];t.on("error",r),t.on("data",s=>o.push(s)),t.on("end",()=>e(Buffer.concat(o)))})}var Se=async(t,e)=>{if(t){e=e||"stream";let r,o;switch(e){case"string":o=await St(t),r=o.toString();break;case"buffer":r=await St(t);break;default:r=t;break}return r}return t};var vt={from:Se,to:be};var Et=t=>{let e="0123456789abcdefghigklmnopqrstuvwxyz".split(""),r=e.length,o=+t,s=[];do{let i=o%r;o=(o-i)/r,s.unshift(e[i])}while(o);return s.join("")};var kt=t=>{let e="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ".split(""),r=e.length,o=+t,s=[];do{let i=o%r;o=(o-i)/r,s.unshift(e[i])}while(o);return s.join("")};var Tt=t=>{let e="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ",r=e.length;t=String(t);let o=t.length,s=0,i=0;for(;s<o;)i+=r**s++*e.indexOf(t.charAt(o-s)||0);return i};var Ot=t=>{let e="0123456789abcdefghigklmnopqrstuvwxyz",r=e.length;t=String(t);let o=t.length,s=0,i=0;for(;s<o;)i+=r**s++*e.indexOf(t.charAt(o-s)||0);return i};var Nt={from10to36:Et,from10to62:kt,from62to10:Tt,from36to10:Ot};var Ct={delay:bt,uuid:_e,stream:vt,number:Nt};var It=async t=>{let e=`${t.root}/sumor`,r=await oe(e,t.mode==="production"),o=`${t.root}/config/config`,s=await oe(o,t.mode==="production");return{...r,...s}};import se from"fs-extra";var ts=async t=>{if(await se.exists(t)){let e={key:await se.readFile(`${t}/domain.key`,"utf-8"),cert:await se.readFile(`${t}/domain.cer`,"utf-8")};return await se.exists(`${t}/ca.cer`)&&(e.ca=await se.readFile(`${t}/ca.cer`,"utf-8")),e}},Dt=async t=>{let e=await ts(`${t.root}/ssl`),r=t.config.protocol||"https";r==="https"&&!e&&(r="http");let o=t.config.domain||"localhost",s=parseInt(t.config.port||(r==="http"?80:443),10),i=r==="http"&&s===80||r==="https"&&s===443?"":`:${s}`,n=t.config.origin||`${r}://${o}${i}`,m=t.mode==="development"||t.mode==="preview"?s+1:s;return{ssl:e,protocol:r,domain:o,port:s,origin:n,uiPort:m}};import is from"fs";var Rt=(t,e,r,o,s,i)=>{let n=new Date(t).toISOString(),m=e.toUpperCase(),a=r.toUpperCase(),c=o?` [${o}]`:"",l="";return i&&(l=` | ${JSON.stringify(i)}`),`# ${n} [${m}] [${a}]${c} - ${s}${l}`};import{Chalk as rs}from"chalk";var ve=new rs({}),At={trace:"#00a3af",debug:"#1183d3",info:"#2ecc71",warn:"#f39c12",error:"#b91f12",fatal:"#ff1300"},os={trace:"gray",debug:"blue",info:"green",warn:"yellow",error:"red",fatal:"red"},ss=(t,e)=>{let r=new Date(t+e*60*1e3),o=r.getUTCFullYear(),s=`0${r.getUTCMonth()+1}`.slice(-2),i=`0${r.getUTCDate()}`.slice(-2),n=`0${r.getUTCHours()}`.slice(-2),m=`0${r.getUTCMinutes()}`.slice(-2),a=`0${r.getUTCSeconds()}`.slice(-2),c=`00${r.getUTCMilliseconds()}`.slice(-3);return`${o}-${s}-${i} ${n}:${m}:${a}.${c}`},Ge=({time:t,offset:e,level:r,scope:o,id:s,message:i})=>{let n=ss(t,e||0),m=s?` ${s}`:"",a=`${n} ${r.toUpperCase()} ${o.toUpperCase()}${m} - `,c;switch(ve.level){case 1:c=ve[os[r.toLowerCase()]](a);break;case 2:c=ve.hex(At[r.toLowerCase()]).visible(a);break;case 3:c=ve.hex(At[r.toLowerCase()]).visible(a);break;default:c=a;break}return c+i};var Lt=t=>{let e=/#(.*?)\s-\s/g,r=t.match(e),o=[],s=(n,m)=>{let a=n.trim().replace("# ","").replace(" -","").split(" ");for(let h=0;h<a.length;h+=1)a[h]=a[h].trim().replace("[","").replace("]","");let c=new Date(a[0]).getTime(),l=a[1],u=a[2],f=a[3],w=m.split("|"),d=w.shift().trim(),p;if(w.length>0){let h=w.join("|").trim();p=JSON.parse(h)}let g={time:c,level:l,scope:u};f&&(g.id=f),g.message=d,p&&(g.data=p),o.push(g)},i=t;for(let n=0;n<r.length;n+=1){let m=r[n],a=i.split(m),c=a.shift();i=a.join(m),n>0&&s(r[n-1],c)}return s(r[r.length-1],i),o};var Je=(t,e)=>{e=e||{};let r=/\{([a-zA-Z0-9]+)\}/g,o=t.match(r),s=t;for(let i=0;i<o.length;i+=1){let n=o[i],m=n.replace("{","").replace("}","");e[m]?s=s.replace(n,e[m]):s=s.replace(n,"")}return s};var ie=class{constructor(e){e=e||{};let r=e.scope||"MAIN",o=(e.level||"trace").toLowerCase(),s=e.id||"",i=e.saver||function(){},n=["trace","debug","info","warn","error","fatal"],a=((c,l)=>{let u=c.indexOf(l);return u===-1?[]:c.slice(u)})(n,o);for(let c=0;c<n.length;c+=1){let l=n[c];a.indexOf(l)===-1?this[l]=function(){}:this[l]=function(u,f){let w=Date.now();i(`${Rt(w,l,r,s,u,f)}
|
|
30
30
|
`);let d=u;e.i18n&&e.i18n[u]&&(d=Je(e.i18n[u],f));let p=e.offset!==void 0?e.offset:-new Date().getTimezoneOffset();console.log(Ge({time:w,offset:p,level:l,scope:r,id:s,message:d}))}}this.load=c=>{let l=Lt(c),u="";for(let f=0;f<l.length;f+=1){let w=l[f],{message:d,data:p}=w,g=d;e.i18n&&e.i18n[d]&&(g=Je(e.i18n[d],p)),u+=`${Ge({...w,offset:e.offset||new Date().getTimezoneOffset(),message:g})}
|
|
31
|
-
`}return u}}};var Pt=async t=>{let e=`${t.root}/tmp/main.log`,r=o=>{as.appendFileSync(e,o)};return(o,s)=>new ne({scope:o,level:t.config.logLevel,id:s,saver:r})};import cs from"fs-extra";import Ft from"knex";var We=t=>{t=t||{};let e={};switch(t.type=t.type||"better-sqlite3",t.type){case"sqlite":e.client="better-sqlite3";break;case"sqlite3":e.client="better-sqlite3";break;case"better-sqlite3":e.client="better-sqlite3";break;case"mysql":e.client="mysql2";break;case"mysql2":e.client="mysql2";break;default:throw new Error(`\u4E0D\u652F\u6301\u6570\u636E\u5E93\u7C7B\u578B${t.type}`)}switch(e.client){case"better-sqlite3":e.connection={filename:t.path||`${process.cwd()}/main.sqlite`},e.useNullAsDefault=!0;break;case"mysql2":e.connection={host:t.host,port:t.port||3306,user:t.user,password:t.password,database:t.database,charset:t.charset||"utf8mb4"},e.pool=t.pool||{min:2,max:10};break;default:break}return e};var M=class{constructor(e,r){this.config=e,this._config=We(e),this._logger=r||{debug:console.log,trace:console.log}}async ensure(){let e,r,o,s,i;switch(this._config.client){case"better-sqlite3":await cs.ensureFile(this._config.connection.filename);break;case"mysql2":e={...this.config},r=e.database,delete e.database,o=Ft(We(e)),s=await o.raw("show databases"),i=!!s[0].filter(n=>n.Database===r)[0],i||(this._logger.trace("\u6570\u636E\u5E93\u4E0D\u5B58\u5728\uFF0C\u6B63\u5728\u521B\u5EFA"),await o.raw(`CREATE DATABASE IF NOT EXISTS ${r} default charset utf8mb4 COLLATE utf8mb4_general_ci`),this._logger.trace("\u6570\u636E\u5E93\u521B\u5EFA\u5B8C\u6210")),await new Promise(n=>{o.destroy(()=>{n()})});break;default:this._logger.trace(`\u6682\u4E0D\u652F\u6301${this._config.client}\u7C7B\u578B\u6570\u636E\u5E93\u521B\u5EFA\uFF0C\u8BF7\u81EA\u884C\u786E\u8BA4\u6570\u636E\u5E93\u5B58\u5728`);break}}async connect(){this.knex||(this.knex=Ft(this._config))}async destroy(){this.knex&&(await new Promise(e=>{this.knex.destroy(()=>{e()})}),delete this.knex)}};var ae=t=>{let e=typeof t;if(t===null)e="null";else if(e==="object"){let r=Object.prototype.toString.call(t);r==="[object Array]"?e="array":r==="[object RegExp]"&&(e="regexp")}return e};var G=(t,e,r)=>{e=e||"-",t=t.toLowerCase();let o=t.split(e);t="";for(let s in o){let i=o[s];t+=i.replace(i[0],i[0].toUpperCase())}return r&&(t=t.replace(t[0],t[0].toLowerCase())),t};var $=(t,e)=>{e=e||"-";let r=function(s){return s>="A"&&s<="Z"},o=[];for(let s=0;s<t.length;s++){let i=t.charAt(s),n=i.toLowerCase();o.length===0?o.push(n):(r(i)&&o.push(""),o[o.length-1]=o[o.length-1]+=n)}return o.join(e)};var J=t=>{let e={};for(let r in t){let o=$(r,"_");e[o]=t[r]}return e};var jt=t=>{let e={};for(let r in t){let o=G(r,"_",!0);e[o]=t[r]}return e};var Mt=(t,e,r,o,s)=>{s=s||"";let i={},n,m=async function(){n||(n=await e.knex.transaction(),t.workingConnections++)};return i.setUser=a=>{s=a,o.trace(`\u5DF2\u4FEE\u6539\u64CD\u4F5C\u7528\u6237\u4E3A${a}`)},i.info=async(a,c)=>{if(!c&&r.info[a])return r.info[a];let l=await n.from(a).columnInfo(),u={};for(let f in l){let w=G(f,"_",!0),d;switch(l[f].type){case"char":d="string";break;case"varchar":d="string";break;case"text":d="string";break;case"mediumtext":d="string";break;case"tinyint":d="number";break;case"smallint":d="number";break;case"int":d="number";break;case"integer":d="number";break;case"bigint":d="number";break;case"float":d="number";break;case"double":d="number";break;case"":d="string";break;default:d="string",console.log(`\u672A\u77E5\u6570\u636E\u7C7B\u578B ${f} ${JSON.stringify(l[f])}`);break}u[w]={type:d,length:parseInt(l[f].maxLength,10)}}return r.info[a]=u,u},i.count=async(a,c,l)=>{await m(),l=l||{},a=$(a,"_");let u=n.from(a);u.count({count:"*"});let f=!1;if(c){c=J(c);for(let d in c)if(ae(c[d])==="object")for(let p in c[d]){let g=p,h=c[d][p];g==="<>"&&h===null?u.whereNotNull(d):u.where(d,g,h)}else c[d]===null?u.whereNull(d):u.where(d,c[d]);f=!0}if(l.term&&l.term!==""&&l.termRange)for(let d in l.termRange){let p=l.termRange[d];parseInt(d)===0?f?u.andWhere(p,"like",`%${l.term}%`):(u.where(p,"like",`%${l.term}%`),f=!0):u.orWhere(p,"like",`%${l.term}%`)}return o.trace(u.toSQL().sql,u.toSQL().bindings),(await u)[0].count},i.single=async(a,c,l)=>{l=l||{},l.top=1;let u=await i.select(a,c,l);return u.length>1,u[0]},i.select=async(a,c,l)=>{o.trace(`\u67E5\u8BE2${a}\uFF0C\u6761\u4EF6${JSON.stringify(c)}\uFF0C\u53C2\u6570${JSON.stringify(l)}`),await m(),l=l||{},a=$(a,"_");let u=await i.info(a),f=n.from(a),w=l.field;w&&(w=w.map(g=>$(g,"_"))),f.select(w);let d=!1;if(c){c=J(c);for(let g in c)if(ae(c[g])==="object")for(let h in c[g]){let y=h,O=c[g][h];y==="<>"&&O===null?f.whereNotNull(g):f.where(g,y,O)}else c[g]===null?f.whereNull(g):f.where(g,c[g]);d=!0}if(l.term&&l.term!==""&&l.termRange)for(let g in l.termRange){let h=l.termRange[g];parseInt(g)===0?d?f.andWhere(h,"like",`%${l.term}%`):(f.where(h,"like",`%${l.term}%`),d=!0):f.orWhere(h,"like",`%${l.term}%`)}if(!l.sort&&u.createdTime&&(l.sort="created_time DESC"),l.sort)if(typeof l.sort=="string"){let g=l.sort.split(",");for(let h in g){let y=g[h].trim();y=y.split(" "),y[0]=$(y[0],"_"),g[h]=y.join(" ")}f.orderByRaw(g.join(","))}else f.orderBy(l.sort);return l.top&&f.limit(l.top),l.skip&&f.offset(l.skip),o.trace(f.toSQL().sql,f.toSQL().bindings),(await f).map(g=>jt(g))},i.insert=async(a,c)=>{c=c||{},a=$(a,"_"),await m();let l=async()=>{let f=_e();return await i.count(a,{id:f})!==0?await l():f};c.id||(c.id=await l()),c.createdBy=s||"",c.createdTime=Date.now(),c.updatedBy=s||"",c.updatedTime=Date.now(),c=J(c);let u=n.insert(c).into(a);return o.trace(u.toSQL().sql,u.toSQL().bindings),await u,c.id},i.update=async(a,c)=>{c=c||{},a=$(a,"_"),await m();let l=c.id;if(delete c.id,l==null)throw new Error("\u6570\u636EID\u4E0D\u5B58\u5728\uFF0C\u65E0\u6CD5\u627E\u5230\u8981\u66F4\u65B0\u7684\u6570\u636E");c.updatedBy=s||"",c.updatedTime=Date.now(),c=J(c);let u=n.update(c).from(a).where({id:l});o.trace(u.toSQL().sql,u.toSQL().bindings),await u},i.modify=async(a,c,l)=>{o.trace(`\u5F3A\u5236\u4FEE\u6539${a}\uFF0C\u6570\u636E${JSON.stringify(l)}\uFF0C\u68C0\u67E5\u5B57\u6BB5${JSON.stringify(c)}`),a=$(a,"_");let u={};for(let d of c)u[$(d,"_")]=l[d];let f=await i.single(a,u,{field:["id"]}),w;return f?(w=f.id,l.id=w,await i.update(a,l)):w=await i.insert(a,l),w},i.ensure=async(a,c,l)=>{o.trace(`\u786E\u4FDD${a}\u5B58\u5728\u6570\u636E${JSON.stringify(l)}\uFF0C\u68C0\u67E5\u5B57\u6BB5${JSON.stringify(c)}`),a=$(a,"_");let u={};for(let d of c)u[$(d,"_")]=l[d];let f=await i.select(a,u,{field:["id"]}),w;return f[0]?w=f[0].id:w=await i.insert(a,l),w},i.delete=async(a,c)=>{a=$(a,"_");let l=n.from(a);return c&&(c=J(c),l.where(c)),o.trace(l.toSQL().sql,l.toSQL().bindings),await l.del()},i.sql=async(a,c)=>(await m(),await n.raw(a,c)),i.commit=async()=>{if(n)try{await n.commit(),n=null,t.workingConnections--}catch(a){o.error(a)}},i.release=i.commit,i.rollback=async()=>{if(n)try{await n.rollback(),t.workingConnections--,n=null}catch(a){o.error(a)}},i};var W=async({config:t,logger:e})=>{e=e||{debug:console.log,trace:console.log};let r={workingConnections:0,alertConnections:20};setInterval(()=>{r.workingConnections>r.alertConnections&&console.log(`\u6570\u636E\u5E93\u8FDE\u63A5\u8FC7\u591A\uFF0C\u8BF7\u68C0\u67E5\u662F\u5426\u6709\u672A\u63D0\u4EA4\u7684\u4E8B\u52A1\uFF0C\u5F53\u524D\u8FDE\u63A5\u6570${r.workingConnections}`)},1e3);let o=new M(t,e);await o.ensure(),await o.connect();let s={info:{}};return{connect:async(m,a)=>Mt(r,o,s,m,a),destroy:async()=>{await o.destroy()}}};var Ut=async t=>{let e=t.config.database,r=t.getLogger("DATABASE"),o=await W({config:e,logger:r});return async s=>await o.connect(s||r)};import ke from"fs-extra";import{pathToFileURL as Kt}from"url";var ms=t=>(t=t||{},t.name=t.name||"",t.desc=t.desc||"",t.origin=t.origin||{},t.target=t.target||{},t),ls=t=>(t=t||{},t.name=t.name||"",t.desc=t.desc||"",t.text=t.text||"",t.expression=t.expression||"",t),Ke=t=>(t=t||{},t.name=t.name||"",t.desc=t.desc||"",t.type=t.type||"any",t.placeholder=t.placeholder||"",t.required=t.required===!0,t.length=t.length||0,t.rule=t.rule||[],t.helper=t.helper||{},t.type==="string"&&(t.trim=t.trim!==!1,t.upperCase=t.upperCase===!0,t.lowerCase=t.lowerCase===!0),t),us=(t,e,r)=>{t=t||{},t.name=t.name||"",t.desc=t.desc||"",t.property=t.property||{};for(let o in t.property){let s=t.property[o].type;s&&e.type[s]?(t.property[o]={...e.type[s],...t.property[o]},t.property[o].type=e.type[s].type):t.property[o]=Ke(t.property[o]),e.type[`${r}.${o}`]=t.property[o]}return t.join=t.join||{},t},fs=(t,e)=>{t=t||{},t.name=t.name||"",t.desc=t.desc||"",t.parameters=t.parameters||{};for(let r in t.parameters){let o=t.parameters[r].type;o&&e.type[o]?(t.parameters[r]={...e.type[o],...t.parameters[r]},t.parameters[r].type=e.type[o].type):t.parameters[r]=Ke(t.parameters[r])}return t},Ee={text:ms,rule:ls,type:Ke,entity:us,program:fs};import Ve from"fs-extra";import ps from"path";import{glob as ds}from"glob";var K=async({condition:t,options:e})=>{e=e||{};let r=await ds(t,e);return r=r.map(o=>(o=ps.normalize(o),o=o.replace(/\\/g,"/"),o)),r};var V=t=>{let e=t.split("/"),o=e.pop().split("."),s=o.pop(),i=o.shift(),n=null;o.length>0&&(n=o.pop());let m=[...e,i].join(".");return{path:m,route:`/api/${m.replace(/\./g,"/")}`,name:i,suffix:s,type:n}};var Ye=async(t,e,r)=>{let o={};if(await Ve.exists(t)){let s=e?`**/**.${e}.json`:"**/**.json",i=await K({condition:s,options:{cwd:t}});for(let n of i){let m=`${t}/${n}`,a=V(n);o[a.path]=await Ve.readJson(m)}if(r&&r!=="json"){let n=e?`**/**.${e}.${r}`:`**/**.${r}`,m=await K({condition:n,options:{cwd:t}});for(let a of m){let c=`${t}/${a}`,l=V(a);o[l.path]=o[l.path]||{},o[l.path][l.suffix]=await Ve.readFile(c,"utf-8")}}}return o};var zt={sumorApp:{name:"\u8F7B\u5448\u4E91\u5E94\u7528\u6587\u672C",origin:{INTERNAL_ERROR:"\u7A0B\u5E8F\u5185\u90E8\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF0C\u6216\u8054\u7CFB\u7BA1\u7406\u5458",NETWORK_ERROR:"\u7F51\u7EDC\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF0C\u6216\u8054\u7CFB\u7BA1\u7406\u5458",PERMISSION_DENIED:"\u6CA1\u6709\u8BBF\u95EE\u8BE5\u529F\u80FD\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u3002\u7F3A\u5C11\u6743\u9650\uFF1A${auth}",LOGIN_EXPIRED:"\u767B\u9646\u6388\u6743\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u9646",PERMISSION_EDIT_FORBIDDEN_DIRECTLY:"\u7981\u6B62\u76F4\u63A5\u4FEE\u6539permission\uFF0C\u8BF7\u4F7F\u7528setPermission",LOGIN_STATUS_EDIT_FORBIDDEN_DIRECTLY:"\u7981\u6B62\u76F4\u63A5\u4FEE\u6539\u767B\u5F55\u72B6\u6001",USER_EDIT_FORBIDDEN_DIRECTLY:"\u7981\u6B62\u76F4\u63A5\u4FEE\u6539user\uFF0C\u8BF7\u4F7F\u7528setUser",TOKEN_ID_EDIT_FORBIDDEN_DIRECTLY:"\u7981\u6B62\u76F4\u63A5\u4FEE\u6539\u4EE4\u724CID\uFF0C\u8BF7\u4F7F\u7528setID",TOKEN_TIME_EDIT_FORBIDDEN_DIRECTLY:"\u7981\u6B62\u76F4\u63A5\u4FEE\u6539\u4EE4\u724C\u65F6\u95F4",TOKEN_DATA_EDIT_FORBIDDEN_DIRECTLY:"\u7981\u6B62\u76F4\u63A5\u4FEE\u6539\u4EE4\u724C\u6570\u636E",LACK_USER_ID:"\u7F3A\u5C11\u7528\u6237ID",AUTH_ERROR:"\u6388\u6743\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",AUTH_ERROR_COOKIE_MISSING:"cookie\u4E22\u5931",API_NOT_FOUND:"\u63A5\u53E3\u672A\u627E\u5230",INVALID_PARAMETER:"\u65E0\u6548\u6570\u636E:${msg}",RULE_LOGIC_NOT_FUNCTION:"\u89C4\u5219\u903B\u8F91\u4E0D\u662F\u6709\u6548\u51FD\u6570\u65B9\u6CD5",SUFFIX_REQUIRED:"\u8F6C\u6362\u4E3A\u5BF9\u8C61\u7F3A\u5C11\u5FC5\u8981\u7684\u540E\u7F00\u540D",PATH_ARROGATION:"\u8DEF\u5F84\u8D8A\u7EA7",NOT_SUPPORT_ABSOLUTE_PATH:"\u4E0D\u652F\u6301\u7EDD\u5BF9\u8DEF\u5F84",REQUIRED:"\u5FC5\u586B\u9879",LENGTH_OUT_OF_LIMIT:"\u957F\u5EA6\u5FC5\u987B\u5C0F\u4E8E${length}",WECHAT_DISABLED:"\u5FAE\u4FE1\u672A\u542F\u7528\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458"},target:{en:{INTERNAL_ERROR:"Internal program error, please try again later, or contact administrator",NETWORK_ERROR:"Network error. Please try again later or contact the administrator",PERMISSION_DENIED:"You do not have permission ${auth}, please contact administrator",LOGIN_EXPIRED:"Login expired, please login",INVALID_PARAMETER:"Invalid data: ${msg}",RULE_LOGIC_NOT_FUNCTION:"Rule logic isn't valid function",SUFFIX_REQUIRED:"Suffix required for object path",PATH_ARROGATION:"Path arrogation",NOT_SUPPORT_ABSOLUTE_PATH:"Not support absolute path",REQUIRED:"Required",LENGTH_OUT_OF_LIMIT:"The length must be less than ${length}"}}},sumorSMS:{origin:{MOBILE_FORMAT:"\u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF",MOBILE_PREFIX_NOT_SUPPORT:"\u8BE5\u56FD\u5BB6\u5730\u533A\u6682\u672A\u5F00\u901A\u670D\u52A1",SMS_SEND_FAILED:"\u6D88\u606F\u53D1\u9001\u5931\u8D25:${msg}"}},sumorStorage:{name:"\u8F7B\u5448\u4E91\u5B58\u50A8\u6587\u672C",origin:{STORAGE_INSTANCE_ERROR:"\u5B58\u50A8\u7CFB\u7EDF\u4EA4\u4E92\u5F02\u5E38:${msg}",STORAGE_FILE_SAVE_FAILED:"\u6587\u4EF6\u5199\u5165\u5931\u8D25",STORAGE_NOT_CONNECTED:"\u672A\u914D\u7F6E\u5B58\u50A8\u670D\u52A1\u5668\u8FDE\u63A5",STORAGE_FILE_READ_FAILED:"\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25",STORAGE_FILE_DELETE_FAILED:"\u6587\u4EF6\u5220\u9664\u5931\u8D25",STORAGE_FILE_INFO_FAILED:"\u6587\u4EF6\u83B7\u53D6\u4FE1\u606F\u5931\u8D25"}},sumorDemo:{origin:{DEMO_TEXT_ZH:"\u6F14\u793A\u6587\u672C\uFF1A\u4E2D\u6587\uFF0C\u5F53\u524D\u8BED\u8A00\u73AF\u5883\u4E0D\u5339\u914D\uFF0C\u5DF2\u56DE\u5F52\u539F\u59CB\u6587\u672C",DEMO_TEXT_ZHCN:"\u6F14\u793A\u6587\u672C\uFF1A\u4E2D\u56FD\u5927\u9646\u7B80\u4F53\u4E2D\u6587\uFF0C\u5F53\u524D\u8BED\u8A00\u73AF\u5883\u4E0D\u5339\u914D\uFF0C\u5DF2\u56DE\u5F52\u539F\u59CB\u6587\u672C",DEMO_TEXT_ZHHK:"\u6F14\u793A\u6587\u672C\uFF1A\u4E2D\u56FD\u9999\u6E2F\u7E41\u4F53\u4E2D\u6587\uFF0C\u5F53\u524D\u8BED\u8A00\u73AF\u5883\u4E0D\u5339\u914D\uFF0C\u5DF2\u56DE\u5F52\u539F\u59CB\u6587\u672C",DEMO_TEXT_EN:"\u6F14\u793A\u6587\u672C\uFF1A\u82F1\u6587\uFF0C\u5F53\u524D\u8BED\u8A00\u73AF\u5883\u4E0D\u5339\u914D\uFF0C\u5DF2\u56DE\u5F52\u539F\u59CB\u6587\u672C"},target:{en:{DEMO_TEXT_EN:"Demo text for english"},zh:{DEMO_TEXT_ZH:"\u6F14\u793A\u6587\u672C\uFF1A\u4E2D\u6587"},"zh-CN":{DEMO_TEXT_ZHCN:"\u6F14\u793A\u6587\u672C\uFF1A\u4E2D\u56FD\u5927\u9646\u7B80\u4F53\u4E2D\u6587"},"zh-HK":{DEMO_TEXT_ZHHK:"\u6F14\u793A\u6587\u672C\uFF1A\u4E2D\u570B\u9999\u6E2F\u7E41\u9AD4\u4E2D\u6587"}}}};var Bt={"sumorApp.term":{name:"\u67E5\u8BE2\u6761\u4EF6",required:!1},"sumorApp.skip":{name:"\u8DF3\u8FC7\u6761\u6570",type:"number",default:0,required:!1},"sumorApp.top":{name:"\u6761\u6570",type:"number",default:100,required:!1},"sumorApp.sort":{name:"\u6392\u5E8F\u89C4\u5219",type:"string",required:!1}};var Ht=`sq=\u963F\u5C14\u5DF4\u5C3C\u4E9A\u8BED|Shqip
|
|
31
|
+
`}return u}}};var Pt=async t=>{let e=`${t.root}/tmp/main.log`,r=o=>{is.appendFileSync(e,o)};return(o,s)=>new ie({scope:o,level:t.config.logLevel,id:s,saver:r})};import ns from"fs-extra";import Ft from"knex";var We=t=>{t=t||{};let e={};switch(t.type=t.type||"better-sqlite3",t.type){case"sqlite":e.client="better-sqlite3";break;case"sqlite3":e.client="better-sqlite3";break;case"better-sqlite3":e.client="better-sqlite3";break;case"mysql":e.client="mysql2";break;case"mysql2":e.client="mysql2";break;default:throw new Error(`\u4E0D\u652F\u6301\u6570\u636E\u5E93\u7C7B\u578B${t.type}`)}switch(e.client){case"better-sqlite3":e.connection={filename:t.path||`${process.cwd()}/main.sqlite`},e.useNullAsDefault=!0;break;case"mysql2":e.connection={host:t.host,port:t.port||3306,user:t.user,password:t.password,database:t.database,charset:t.charset||"utf8mb4"},e.pool=t.pool||{min:2,max:10};break;default:break}return e};var M=class{constructor(e,r){this.config=e,this._config=We(e),this._logger=r||{debug:console.log,trace:console.log}}async ensure(){let e,r,o,s,i;switch(this._config.client){case"better-sqlite3":await ns.ensureFile(this._config.connection.filename);break;case"mysql2":e={...this.config},r=e.database,delete e.database,o=Ft(We(e)),s=await o.raw("show databases"),i=!!s[0].filter(n=>n.Database===r)[0],i||(this._logger.trace("\u6570\u636E\u5E93\u4E0D\u5B58\u5728\uFF0C\u6B63\u5728\u521B\u5EFA"),await o.raw(`CREATE DATABASE IF NOT EXISTS ${r} default charset utf8mb4 COLLATE utf8mb4_general_ci`),this._logger.trace("\u6570\u636E\u5E93\u521B\u5EFA\u5B8C\u6210")),await new Promise(n=>{o.destroy(()=>{n()})});break;default:this._logger.trace(`\u6682\u4E0D\u652F\u6301${this._config.client}\u7C7B\u578B\u6570\u636E\u5E93\u521B\u5EFA\uFF0C\u8BF7\u81EA\u884C\u786E\u8BA4\u6570\u636E\u5E93\u5B58\u5728`);break}}async connect(){this.knex||(this.knex=Ft(this._config))}async destroy(){this.knex&&(await new Promise(e=>{this.knex.destroy(()=>{e()})}),delete this.knex)}};var ne=t=>{let e=typeof t;if(t===null)e="null";else if(e==="object"){let r=Object.prototype.toString.call(t);r==="[object Array]"?e="array":r==="[object RegExp]"&&(e="regexp")}return e};var H=(t,e,r)=>{e=e||"-",t=t.toLowerCase();let o=t.split(e);t="";for(let s in o){let i=o[s];t+=i.replace(i[0],i[0].toUpperCase())}return r&&(t=t.replace(t[0],t[0].toLowerCase())),t};var $=(t,e)=>{e=e||"-";let r=function(s){return s>="A"&&s<="Z"},o=[];for(let s=0;s<t.length;s++){let i=t.charAt(s),n=i.toLowerCase();o.length===0?o.push(n):(r(i)&&o.push(""),o[o.length-1]=o[o.length-1]+=n)}return o.join(e)};var G=t=>{let e={};for(let r in t){let o=$(r,"_");e[o]=t[r]}return e};var jt=t=>{let e={};for(let r in t){let o=H(r,"_",!0);e[o]=t[r]}return e};var Mt=(t,e,r,o,s)=>{s=s||"";let i={},n,m=async function(){n||(n=await e.knex.transaction(),t.workingConnections++)};return i.setUser=a=>{s=a,o.trace(`\u5DF2\u4FEE\u6539\u64CD\u4F5C\u7528\u6237\u4E3A${a}`)},i.info=async(a,c)=>{if(!c&&r.info[a])return r.info[a];let l=await n.from(a).columnInfo(),u={};for(let f in l){let w=H(f,"_",!0),d;switch(l[f].type){case"char":d="string";break;case"varchar":d="string";break;case"text":d="string";break;case"mediumtext":d="string";break;case"tinyint":d="number";break;case"smallint":d="number";break;case"int":d="number";break;case"integer":d="number";break;case"bigint":d="number";break;case"float":d="number";break;case"double":d="number";break;case"":d="string";break;default:d="string",console.log(`\u672A\u77E5\u6570\u636E\u7C7B\u578B ${f} ${JSON.stringify(l[f])}`);break}u[w]={type:d,length:parseInt(l[f].maxLength,10)}}return r.info[a]=u,u},i.count=async(a,c,l)=>{await m(),l=l||{},a=$(a,"_");let u=n.from(a);u.count({count:"*"});let f=!1;if(c){c=G(c);for(let d in c)if(ne(c[d])==="object")for(let p in c[d]){let g=p,h=c[d][p];g==="<>"&&h===null?u.whereNotNull(d):u.where(d,g,h)}else c[d]===null?u.whereNull(d):u.where(d,c[d]);f=!0}if(l.term&&l.term!==""&&l.termRange)for(let d in l.termRange){let p=l.termRange[d];parseInt(d)===0?f?u.andWhere(p,"like",`%${l.term}%`):(u.where(p,"like",`%${l.term}%`),f=!0):u.orWhere(p,"like",`%${l.term}%`)}return o.trace(u.toSQL().sql,u.toSQL().bindings),(await u)[0].count},i.single=async(a,c,l)=>{l=l||{},l.top=1;let u=await i.select(a,c,l);return u.length>1,u[0]},i.select=async(a,c,l)=>{o.trace(`\u67E5\u8BE2${a}\uFF0C\u6761\u4EF6${JSON.stringify(c)}\uFF0C\u53C2\u6570${JSON.stringify(l)}`),await m(),l=l||{},a=$(a,"_");let u=await i.info(a),f=n.from(a),w=l.field;w&&(w=w.map(g=>$(g,"_"))),f.select(w);let d=!1;if(c){c=G(c);for(let g in c)if(ne(c[g])==="object")for(let h in c[g]){let y=h,O=c[g][h];y==="<>"&&O===null?f.whereNotNull(g):f.where(g,y,O)}else c[g]===null?f.whereNull(g):f.where(g,c[g]);d=!0}if(l.term&&l.term!==""&&l.termRange)for(let g in l.termRange){let h=l.termRange[g];parseInt(g)===0?d?f.andWhere(h,"like",`%${l.term}%`):(f.where(h,"like",`%${l.term}%`),d=!0):f.orWhere(h,"like",`%${l.term}%`)}if(!l.sort&&u.createdTime&&(l.sort="created_time DESC"),l.sort)if(typeof l.sort=="string"){let g=l.sort.split(",");for(let h in g){let y=g[h].trim();y=y.split(" "),y[0]=$(y[0],"_"),g[h]=y.join(" ")}f.orderByRaw(g.join(","))}else f.orderBy(l.sort);return l.top&&f.limit(l.top),l.skip&&f.offset(l.skip),o.trace(f.toSQL().sql,f.toSQL().bindings),(await f).map(g=>jt(g))},i.insert=async(a,c)=>{c=c||{},a=$(a,"_"),await m();let l=async()=>{let f=_e();return await i.count(a,{id:f})!==0?await l():f};c.id||(c.id=await l()),c.createdBy=s||"",c.createdTime=Date.now(),c.updatedBy=s||"",c.updatedTime=Date.now(),c=G(c);let u=n.insert(c).into(a);return o.trace(u.toSQL().sql,u.toSQL().bindings),await u,c.id},i.update=async(a,c)=>{c=c||{},a=$(a,"_"),await m();let l=c.id;if(delete c.id,l==null)throw new Error("\u6570\u636EID\u4E0D\u5B58\u5728\uFF0C\u65E0\u6CD5\u627E\u5230\u8981\u66F4\u65B0\u7684\u6570\u636E");c.updatedBy=s||"",c.updatedTime=Date.now(),c=G(c);let u=n.update(c).from(a).where({id:l});o.trace(u.toSQL().sql,u.toSQL().bindings),await u},i.modify=async(a,c,l)=>{o.trace(`\u5F3A\u5236\u4FEE\u6539${a}\uFF0C\u6570\u636E${JSON.stringify(l)}\uFF0C\u68C0\u67E5\u5B57\u6BB5${JSON.stringify(c)}`),a=$(a,"_");let u={};for(let d of c)u[$(d,"_")]=l[d];let f=await i.single(a,u,{field:["id"]}),w;return f?(w=f.id,l.id=w,await i.update(a,l)):w=await i.insert(a,l),w},i.ensure=async(a,c,l)=>{o.trace(`\u786E\u4FDD${a}\u5B58\u5728\u6570\u636E${JSON.stringify(l)}\uFF0C\u68C0\u67E5\u5B57\u6BB5${JSON.stringify(c)}`),a=$(a,"_");let u={};for(let d of c)u[$(d,"_")]=l[d];let f=await i.select(a,u,{field:["id"]}),w;return f[0]?w=f[0].id:w=await i.insert(a,l),w},i.delete=async(a,c)=>{a=$(a,"_");let l=n.from(a);return c&&(c=G(c),l.where(c)),o.trace(l.toSQL().sql,l.toSQL().bindings),await l.del()},i.sql=async(a,c)=>(await m(),await n.raw(a,c)),i.commit=async()=>{if(n)try{await n.commit(),n=null,t.workingConnections--}catch(a){o.error(a)}},i.release=i.commit,i.rollback=async()=>{if(n)try{await n.rollback(),t.workingConnections--,n=null}catch(a){o.error(a)}},i};var J=async({config:t,logger:e})=>{e=e||{debug:console.log,trace:console.log};let r={workingConnections:0,alertConnections:20};setInterval(()=>{r.workingConnections>r.alertConnections&&console.log(`\u6570\u636E\u5E93\u8FDE\u63A5\u8FC7\u591A\uFF0C\u8BF7\u68C0\u67E5\u662F\u5426\u6709\u672A\u63D0\u4EA4\u7684\u4E8B\u52A1\uFF0C\u5F53\u524D\u8FDE\u63A5\u6570${r.workingConnections}`)},1e3);let o=new M(t,e);await o.ensure(),await o.connect();let s={info:{}};return{connect:async(m,a)=>Mt(r,o,s,m,a),destroy:async()=>{await o.destroy()}}};var Ut=async t=>{let e=t.config.database,r=t.getLogger("DATABASE"),o=await J({config:e,logger:r});return async s=>await o.connect(s||r)};import ke from"fs-extra";import{pathToFileURL as Kt}from"url";var as=t=>(t=t||{},t.name=t.name||"",t.desc=t.desc||"",t.origin=t.origin||{},t.target=t.target||{},t),cs=t=>(t=t||{},t.name=t.name||"",t.desc=t.desc||"",t.text=t.text||"",t.expression=t.expression||"",t),Ke=t=>(t=t||{},t.name=t.name||"",t.desc=t.desc||"",t.type=t.type||"any",t.placeholder=t.placeholder||"",t.required=t.required===!0,t.length=t.length||0,t.rule=t.rule||[],t.helper=t.helper||{},t.type==="string"&&(t.trim=t.trim!==!1,t.upperCase=t.upperCase===!0,t.lowerCase=t.lowerCase===!0),t),ms=(t,e,r)=>{t=t||{},t.name=t.name||"",t.desc=t.desc||"",t.property=t.property||{};for(let o in t.property){let s=t.property[o].type;s&&e.type[s]?(t.property[o]={...e.type[s],...t.property[o]},t.property[o].type=e.type[s].type):t.property[o]=Ke(t.property[o]),e.type[`${r}.${o}`]=t.property[o]}return t.join=t.join||{},t},ls=(t,e)=>{t=t||{},t.name=t.name||"",t.desc=t.desc||"",t.parameters=t.parameters||{};for(let r in t.parameters){let o=t.parameters[r].type;o&&e.type[o]?(t.parameters[r]={...e.type[o],...t.parameters[r]},t.parameters[r].type=e.type[o].type):t.parameters[r]=Ke(t.parameters[r])}return t},Ee={text:as,rule:cs,type:Ke,entity:ms,program:ls};import Ve from"fs-extra";import us from"path";import{glob as fs}from"glob";var W=async({condition:t,options:e})=>{e=e||{};let r=await fs(t,e);return r=r.map(o=>(o=us.normalize(o),o=o.replace(/\\/g,"/"),o)),r};var K=t=>{let e=t.split("/"),o=e.pop().split("."),s=o.pop(),i=o.shift(),n=null;o.length>0&&(n=o.pop());let m=[...e,i].join(".");return{path:m,route:`/api/${m.replace(/\./g,"/")}`,name:i,suffix:s,type:n}};var Ye=async(t,e,r)=>{let o={};if(await Ve.exists(t)){let s=e?`**/**.${e}.json`:"**/**.json",i=await W({condition:s,options:{cwd:t}});for(let n of i){let m=`${t}/${n}`,a=K(n);o[a.path]=await Ve.readJson(m)}if(r&&r!=="json"){let n=e?`**/**.${e}.${r}`:`**/**.${r}`,m=await W({condition:n,options:{cwd:t}});for(let a of m){let c=`${t}/${a}`,l=K(a);o[l.path]=o[l.path]||{},o[l.path][l.suffix]=await Ve.readFile(c,"utf-8")}}}return o};var zt={sumorApp:{name:"\u8F7B\u5448\u4E91\u5E94\u7528\u6587\u672C",origin:{INTERNAL_ERROR:"\u7A0B\u5E8F\u5185\u90E8\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF0C\u6216\u8054\u7CFB\u7BA1\u7406\u5458",NETWORK_ERROR:"\u7F51\u7EDC\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF0C\u6216\u8054\u7CFB\u7BA1\u7406\u5458",PERMISSION_DENIED:"\u6CA1\u6709\u8BBF\u95EE\u8BE5\u529F\u80FD\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u3002\u7F3A\u5C11\u6743\u9650\uFF1A${auth}",LOGIN_EXPIRED:"\u767B\u9646\u6388\u6743\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u9646",PERMISSION_EDIT_FORBIDDEN_DIRECTLY:"\u7981\u6B62\u76F4\u63A5\u4FEE\u6539permission\uFF0C\u8BF7\u4F7F\u7528setPermission",LOGIN_STATUS_EDIT_FORBIDDEN_DIRECTLY:"\u7981\u6B62\u76F4\u63A5\u4FEE\u6539\u767B\u5F55\u72B6\u6001",USER_EDIT_FORBIDDEN_DIRECTLY:"\u7981\u6B62\u76F4\u63A5\u4FEE\u6539user\uFF0C\u8BF7\u4F7F\u7528setUser",TOKEN_ID_EDIT_FORBIDDEN_DIRECTLY:"\u7981\u6B62\u76F4\u63A5\u4FEE\u6539\u4EE4\u724CID\uFF0C\u8BF7\u4F7F\u7528setID",TOKEN_TIME_EDIT_FORBIDDEN_DIRECTLY:"\u7981\u6B62\u76F4\u63A5\u4FEE\u6539\u4EE4\u724C\u65F6\u95F4",TOKEN_DATA_EDIT_FORBIDDEN_DIRECTLY:"\u7981\u6B62\u76F4\u63A5\u4FEE\u6539\u4EE4\u724C\u6570\u636E",LACK_USER_ID:"\u7F3A\u5C11\u7528\u6237ID",AUTH_ERROR:"\u6388\u6743\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",AUTH_ERROR_COOKIE_MISSING:"cookie\u4E22\u5931",API_NOT_FOUND:"\u63A5\u53E3\u672A\u627E\u5230",INVALID_PARAMETER:"\u65E0\u6548\u6570\u636E:${msg}",RULE_LOGIC_NOT_FUNCTION:"\u89C4\u5219\u903B\u8F91\u4E0D\u662F\u6709\u6548\u51FD\u6570\u65B9\u6CD5",SUFFIX_REQUIRED:"\u8F6C\u6362\u4E3A\u5BF9\u8C61\u7F3A\u5C11\u5FC5\u8981\u7684\u540E\u7F00\u540D",PATH_ARROGATION:"\u8DEF\u5F84\u8D8A\u7EA7",NOT_SUPPORT_ABSOLUTE_PATH:"\u4E0D\u652F\u6301\u7EDD\u5BF9\u8DEF\u5F84",REQUIRED:"\u5FC5\u586B\u9879",LENGTH_OUT_OF_LIMIT:"\u957F\u5EA6\u5FC5\u987B\u5C0F\u4E8E${length}",WECHAT_DISABLED:"\u5FAE\u4FE1\u672A\u542F\u7528\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458"},target:{en:{INTERNAL_ERROR:"Internal program error, please try again later, or contact administrator",NETWORK_ERROR:"Network error. Please try again later or contact the administrator",PERMISSION_DENIED:"You do not have permission ${auth}, please contact administrator",LOGIN_EXPIRED:"Login expired, please login",INVALID_PARAMETER:"Invalid data: ${msg}",RULE_LOGIC_NOT_FUNCTION:"Rule logic isn't valid function",SUFFIX_REQUIRED:"Suffix required for object path",PATH_ARROGATION:"Path arrogation",NOT_SUPPORT_ABSOLUTE_PATH:"Not support absolute path",REQUIRED:"Required",LENGTH_OUT_OF_LIMIT:"The length must be less than ${length}"}}},sumorSMS:{origin:{MOBILE_FORMAT:"\u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF",MOBILE_PREFIX_NOT_SUPPORT:"\u8BE5\u56FD\u5BB6\u5730\u533A\u6682\u672A\u5F00\u901A\u670D\u52A1",SMS_SEND_FAILED:"\u6D88\u606F\u53D1\u9001\u5931\u8D25:${msg}"}},sumorStorage:{name:"\u8F7B\u5448\u4E91\u5B58\u50A8\u6587\u672C",origin:{STORAGE_INSTANCE_ERROR:"\u5B58\u50A8\u7CFB\u7EDF\u4EA4\u4E92\u5F02\u5E38:${msg}",STORAGE_FILE_SAVE_FAILED:"\u6587\u4EF6\u5199\u5165\u5931\u8D25",STORAGE_NOT_CONNECTED:"\u672A\u914D\u7F6E\u5B58\u50A8\u670D\u52A1\u5668\u8FDE\u63A5",STORAGE_FILE_READ_FAILED:"\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25",STORAGE_FILE_DELETE_FAILED:"\u6587\u4EF6\u5220\u9664\u5931\u8D25",STORAGE_FILE_INFO_FAILED:"\u6587\u4EF6\u83B7\u53D6\u4FE1\u606F\u5931\u8D25"}},sumorDemo:{origin:{DEMO_TEXT_ZH:"\u6F14\u793A\u6587\u672C\uFF1A\u4E2D\u6587\uFF0C\u5F53\u524D\u8BED\u8A00\u73AF\u5883\u4E0D\u5339\u914D\uFF0C\u5DF2\u56DE\u5F52\u539F\u59CB\u6587\u672C",DEMO_TEXT_ZHCN:"\u6F14\u793A\u6587\u672C\uFF1A\u4E2D\u56FD\u5927\u9646\u7B80\u4F53\u4E2D\u6587\uFF0C\u5F53\u524D\u8BED\u8A00\u73AF\u5883\u4E0D\u5339\u914D\uFF0C\u5DF2\u56DE\u5F52\u539F\u59CB\u6587\u672C",DEMO_TEXT_ZHHK:"\u6F14\u793A\u6587\u672C\uFF1A\u4E2D\u56FD\u9999\u6E2F\u7E41\u4F53\u4E2D\u6587\uFF0C\u5F53\u524D\u8BED\u8A00\u73AF\u5883\u4E0D\u5339\u914D\uFF0C\u5DF2\u56DE\u5F52\u539F\u59CB\u6587\u672C",DEMO_TEXT_EN:"\u6F14\u793A\u6587\u672C\uFF1A\u82F1\u6587\uFF0C\u5F53\u524D\u8BED\u8A00\u73AF\u5883\u4E0D\u5339\u914D\uFF0C\u5DF2\u56DE\u5F52\u539F\u59CB\u6587\u672C"},target:{en:{DEMO_TEXT_EN:"Demo text for english"},zh:{DEMO_TEXT_ZH:"\u6F14\u793A\u6587\u672C\uFF1A\u4E2D\u6587"},"zh-CN":{DEMO_TEXT_ZHCN:"\u6F14\u793A\u6587\u672C\uFF1A\u4E2D\u56FD\u5927\u9646\u7B80\u4F53\u4E2D\u6587"},"zh-HK":{DEMO_TEXT_ZHHK:"\u6F14\u793A\u6587\u672C\uFF1A\u4E2D\u570B\u9999\u6E2F\u7E41\u9AD4\u4E2D\u6587"}}}};var Bt={"sumorApp.term":{name:"\u67E5\u8BE2\u6761\u4EF6",required:!1},"sumorApp.skip":{name:"\u8DF3\u8FC7\u6761\u6570",type:"number",default:0,required:!1},"sumorApp.top":{name:"\u6761\u6570",type:"number",default:100,required:!1},"sumorApp.sort":{name:"\u6392\u5E8F\u89C4\u5219",type:"string",required:!1}};var Ht=`sq=\u963F\u5C14\u5DF4\u5C3C\u4E9A\u8BED|Shqip
|
|
32
32
|
sq-AL=\u963F\u5C14\u5DF4\u5C3C\u4E9A\u8BED(\u963F\u5C14\u5DF4\u5C3C\u4E9A)|Shqiptar (Shqip\xEBri)
|
|
33
33
|
gsw=\u963F\u5C14\u8428\u65AF\u8BED
|
|
34
34
|
gsw-FR=\u963F\u5C14\u8428\u65AF\u8BED(\u6CD5\u56FD)
|
|
@@ -420,7 +420,7 @@ if (typeof WeixinJSBridge == "undefined") {
|
|
|
420
420
|
}
|
|
421
421
|
</script>
|
|
422
422
|
</body>
|
|
423
|
-
</html>`)}};var Wt=t=>{let e={monitor:{name:"\u670D\u52A1\u5065\u5EB7\u72B6\u6001\u76D1\u63A7",program:async(o,s,i)=>s.sumor.monitor},text:{name:"\u5F53\u524D\u8BED\u8A00\u73AF\u5883\u6587\u672C\u6570\u636E",program:async(o,s,i)=>s.sumor.text()},token:{name:"\u5F53\u524D\u6388\u6743\u767B\u5F55\u4EE4\u724C",program:(o,s,i,n)=>{let m=s.sumor.token;if(m.id){let a=m.data?m.data.nickname:"";return{id:m.id,user:m.user,nickname:a,time:m.time,permission:m.permission}}return{}}},logout:{name:"\u9000\u51FA\u767B\u5F55",program:async(o,s,i,n)=>{let m=s.sumor.token;m.user&&await m.destroy()}},range:{name:"\u6570\u636E\u8F93\u5165\u8303\u56F4\u5217\u8868",parameters:{name:{name:"\u6570\u636E\u540D\u79F0",desc:"\u5E2E\u52A9\u6570\u636E\u7684\u540D\u79F0",required:!0,type:"string"}},program:async(o,s,i)=>{let n=s.sumor.data.name;return s.sumor.range(n)}},meta:{name:"\u63A5\u53E3\u4FE1\u606F",program:async(o,s,i)=>{let n={};for(let m in o.exposeApis){let a=o.exposeApis[m];n[m]={name:a.name,desc:a.desc,parameters:a.parameters}}return{name:o.name,instance:o.instance,api:n,text:s.sumor.text()}}}},r={};for(let o in e)r[`sumor.${o}`]=e[o];return r["wx.pay"]={name:"\u5FAE\u4FE1\u652F\u4ED8",program:Jt},r};var Vt=async t=>{let e=Wt(t),r={};for(let a in e)r[a]={name:e[a].name,parameters:e[a].parameters};let o=["text","rule","type","entity","view","api","event"],s={range:Gt,text:zt,type:Bt,api:r};for(let a of o){let c=a;s[a]=s[a]||{},(a==="api"||a==="event")&&(c="program");let l=await Ye(`${t.root}/${a}`,c);if(a==="api"){let u={};for(let f in l)u[`api.${f}`]=l[f];l=u}if(s[a]=Object.assign(s[a],l),Ee[c])for(let u in s[a])s[a][u]=Ee[c](s[a][u],s,u)}await ke.ensureDir(`${process.cwd()}/tmp`),await ke.writeFile(`${process.cwd()}/tmp/meta.json`,JSON.stringify(s,null,4));for(let a in e)s.api[a]=e[a];let i=await Ye(`${t.root}/view`,"view","sql");for(let a in i)s.view[a]=s.api[a]||Ee.program({}),s.view[a]=Object.assign(s.view[a],i[a]);let n=`${t.root}/api`;if(await ke.exists(n)){let a=await K({condition:"**/**.js",options:{cwd:n}});for(let c of a){let u=`api.${V(c).path}`,f=`${n}/${c}`;s.api[u]=s.api[u]||{},s.api[u].program=(await import(Kt(f))).default}}let m=`${t.root}/event`;if(await ke.exists(m)){let a=await K({condition:"**/**.js",options:{cwd:m}});for(let c of a){let u=V(c).path,f=`${m}/${c}`;s.event[u]=s.event[u]||{},s.event[u].program=async w=>{w.logger.trace(`\u6B63\u5728\u6267\u884C\u4E8B\u4EF6${u}`);let d={...w},p;w.db||(p=await w.connectDB(),d=Object.assign(d,{db:p}));let g=(await import(Kt(f))).default;if(g)try{await g(d||w),p&&await p.commit(),w.logger.debug(`\u4E8B\u4EF6${u}\u5B8C\u6210`)}catch(h){p&&await p.rollback(),w.logger.error(`\u4E8B\u4EF6${u}\u6267\u884C\u5931\u8D25\uFF0C${h.message}`),w.logger.trace(h)}else w.logger.error(`\u4E8B\u4EF6${u}\u6267\u884C\u5931\u8D25\uFF0C\u8BE5\u7A0B\u5E8F\u4E0D\u5B58\u5728`)}}}t.setContext({meta:s})};var Yt=async t=>{let e=_t(t),r=await It(e);e.setContext({tools:Ct,config:r});let o=r.name||"\u8F7B\u5448\u4E91\u5E94\u7528",s=(r.logLevel||"info").toLowerCase(),i=r.language||"zh-CN",n=await Dt(e),m={};e.setContext({name:o,logLevel:s,language:i,...n,exposeApis:m});let a=await Pt(e),c=a("APP");if(e.setContext({getLogger:a,logger:c}),e.config.database){let l=await Ut(e);e.setContext({connectDB:l})}return await Vt(e),e};import zs from"express";import Zt from"fs-extra";var Xt=async t=>{let e=`${t.sumor.root}/instance.json`,r={};if(await Zt.exists(e))try{r=await Zt.readJson(e)}catch{}r.version=r.version||"0.0.0",r.server=r.server||"local",r.port=r.port||t.sumor.port,r.time=new Date().getTime(),t.sumor.instance=JSON.parse(JSON.stringify(r)),t.use((o,s,i)=>{if(o.sumor.instance=JSON.parse(JSON.stringify(r)),o.sumor.instance){let{version:n,server:m,port:a,time:c}=o.sumor.instance;s.set("sumor-instance",`${n}_${m}_${a}_${c}`)}i()})};var qt=t=>{t.use((e,r,o)=>{let i=(e.get("accept-language")||t.sumor.language).split(","),n=i[0],m=[];for(let a in i)m.push(i[a].split(";")[0]);e.sumor.language=n,e.sumor.languages=m,o()})};var gs=(t,e)=>{t=t||"",e=e||{};let r=t.match(new RegExp(/\${.*?}/,"g"));if(r)for(let o of r){let s=o.substr(2,o.length-3),i=e[s]||"";t=t.replace(o,i)}return t},Qt=(t,e)=>(r,o,s)=>{o=o||{},s=s||e;let i,n;if(s!==""){let u=s.split("-");i=u[0],n=u[1]}if(!r){let u={};for(let f in t){let w=t[f][""]||{},d={},p={};i&&(d=t[f][i]||{}),n&&(p=t[f][s]||{});let g={...w,...d,...p};for(let h in g)u[`${f}.${h}`]=g[h]}return u}let m=r.split("."),a=m.pop(),c=m.join("."),l;return t[c]&&(n&&(l=(t[c][s]||{})[a]),!l&&i&&(l=(t[c][i]||{})[a]),l||(l=(t[c][""]||{})[a])),gs(l,o)},er=async t=>{let e={};for(let r in t.sumor.meta.text){e[r]=e[r]||{},e[r][""]=t.sumor.meta.text[r].origin||{};for(let o in t.sumor.meta.text[r].target)e[r][o]=t.sumor.meta.text[r].target[o]||{}}t.sumor.text=Qt(e,t.sumor.language),t.use((r,o,s)=>{r.sumor.text=Qt(e,r.sumor.language),s()})};var tr=async t=>{t.sumor.range=e=>e?t.sumor.meta.range[e]:t.sumor.meta.range,t.use((e,r,o)=>{e.sumor.range=t.sumor.range,o()})};var rr=t=>{t.use((e,r,o)=>{e.sumor.timezone=e.get("sumor-timezone"),o()})};var ws=0,Te=t=>{t.use((e,r,o)=>{let s=++ws;e.sumor.ip=e.headers["x-forwarded-for"]||"0.0.0.0",e.sumor.getLogger=m=>t.sumor.getLogger(m,s),e.sumor.logger=e.sumor.getLogger("PROGRAM");let i=e.sumor.getLogger("HTTP"),n=e.headers["user-agent"]||"unknown agent";i.info(`${e.method} ${e.originalUrl} IP/${e.sumor.ip} ${n}`),o()})};import ce from"os";var ir=60,or=24*60,hs=(Math.floor(Date.now()/1e3)-ce.uptime())*1e3,ys=Date.now(),nr=t=>Math.round(t),$s=()=>nr((ce.totalmem()-ce.freemem())/ce.totalmem()*100),xs=()=>({time:Date.now(),idle:ce.cpus().map(t=>t.times.idle)}),_s=(t,e)=>{let r=e.time-t.time,o=0;for(let s in e.idle){let n=(e.idle[s]-t.idle[s])/r;n>1&&(n=1),n=100-n*100,o+=n}return nr(o/e.idle.length)},R={serverUpTime:hs,serviceUpTime:ys,interval:ir,memory:[],cpu:[]},Ze,sr=async()=>{R.updateTime=Date.now();let t=xs();if(Ze){let e=_s(Ze,t);R.cpu.unshift(e),R.cpu=R.cpu.slice(0,or)}Ze=t,R.memory.unshift($s()),R.memory=R.memory.slice(0,or)},ar=async t=>{sr(),setInterval(()=>{sr()},ir*1e3),t.use((e,r,o)=>{e.sumor.monitor=JSON.parse(JSON.stringify(R)),o()})};import Xe from"body-parser";import bs from"multer";import Ss from"fs-extra";var cr=async t=>{let e=`${t.sumor.root}/tmp/uploads`;await Ss.ensureDir(e);let r=bs({dest:"tmp/uploads/"});t.uploader=o=>{let s;if(o){let i=[];for(let n in o)o[n].type==="file"&&i.push({name:n});i.length>0&&(s=r.fields(i))}return s},t.use(Xe.urlencoded({extended:!1})),t.use(Xe.json()),t.use(Xe.text()),t.use((o,s,i)=>{o.sumor.data={...o.params,...o.query,...o.body},i()})};import vs from"cookie-parser";var mr=t=>{t.use(vs()),t.use((e,r,o)=>{e.sumor.cookie=JSON.parse(JSON.stringify(e.cookies)),e.sumor.saveCookie=()=>{for(let s in e.cookies)e.sumor.cookie[s]||r.clearCookie(s);for(let s in e.sumor.cookie)e.sumor.cookie[s]!==e.cookies[s]&&r.cookie(s,e.sumor.cookie[s],{maxAge:365*24*3600*1e3,httpOnly:!0})},o()})};var lr=t=>{let e=t.length,r=t.type,o;switch(r){case"string":e>1e3?o="text":o="string";break;case"number":e>18?o="string":t.scale!==null&&t.scale!==void 0?o="double":e>9?o="bigInteger":e>4?o="integer":e>2?o="smallint":o="tinyint";break;default:break}return o};var Oe=(t,e,r,o)=>{let s;switch(r.type=r.type||"string",r.type){case"string":r.length=r.length||255;break;case"number":r.length=r.length||10;break;default:break}if(r.increment)s=t.increments(e);else{let i=lr(r),n;switch(i){case"tinyint":s=t.tinyint(e),n="number";break;case"smallint":s=t.smallint(e),n="number";break;case"integer":s=t.integer(e),n="number";break;case"bigInteger":s=t.bigInteger(e),n="number";break;case"string":s=t.string(e,r.length),n="string";break;case"text":s=t.text(e,r.length),n="string";break;case"double":s=t.double(e,r.length,r.scale),n="number";break;default:break}if(r.default!==null){let m;n==="number"?(r.default===void 0&&(r.default=0),m=parseInt(r.default,10)):(r.default===void 0&&(r.default=""),m=r.default.toString()),s.defaultTo(m)}r.notNull&&s.notNullable()}r.key&&s.primary(),o&&s.alter()};var ur=async(t,e,r)=>{r=r||{};let o={},s=await t.schema.hasTable(e).transacting(t);if(!r.rename&&!r.deleted){let i=!1;for(let m in r.property)r.property[m].key&&(i=!0);i||(o.id={type:"string",length:32});for(let m in r.property)(m==="id"&&!i||["createdBy","createdTime","updatedBy","updatedTime"].indexOf(m)<0)&&(o[m]=r.property[m]);let n={type:"number",length:13};if(r.join)for(let m in r.join)o[`${$(m,"_")}_id`]={type:"string",length:32};o.createdBy={name:"\u521B\u5EFA\u8005",type:"string",length:32},o.createdTime={name:"\u521B\u5EFA\u65F6\u95F4",...n},o.updatedBy={name:"\u66F4\u65B0\u8005",type:"string",length:32},o.updatedTime={name:"\u66F4\u65B0\u65F6\u95F4",...n}}if(!s)!r.rename&&!r.deleted&&await t.schema.createTable(e,i=>{for(let n in o){let m=$(n,"_"),a=o[n];!a.rename&&!a.deleted&&Oe(i,m,a)}}).transacting(t);else if(r.rename){let i=$(r.rename,"_");await t.schema.renameTable(e,i)}else if(r.deleted)await t.schema.dropTable(e);else{let i=await t(e).columnInfo();await t.schema.alterTable(e,n=>{for(let m in o){let a=$(m,"_"),c=o[m];if(i[a]&&c.rename){let l=$(c.rename,"_");n.renameColumn(a,l)}}}).transacting(t),i=await t(e).columnInfo(),await t.schema.alterTable(e,n=>{for(let m in o){let a=$(m,"_"),c=o[m];c.rename||(i[a]?c.deleted?n.dropColumn(a):Oe(n,a,c,!0):!c.rename&&!c.deleted&&Oe(n,a,c))}})}};var fr=(t,e)=>{let r=[];for(let s in t)r.push({name:s,index:t[s]});r=r.sort((s,i)=>s.index>i.index?1:-1),e&&(r=r.reverse());let o=[];for(let s in r)o.push(r[s].name);return o};var pr=t=>{let e={};for(let r in t)e[r]=t[r].sql;return e};var dr=t=>{let e={};for(let o in t){e[o]=[];for(let s in t){let i=t[s].toLowerCase();i=i.replace(/`/g,""),i=i.replace(/\n/g," "),i=i.replace(/ {2}/g," "),i=i.replace(/ {2}/g," "),i=i.replace(/ {2}/g," "),(i.indexOf(` from ${o} `)>=0||i.indexOf(` join ${o} `)>=0)&&e[o].push(s)}}let r={};for(let o in t){r[o]=[];for(let s in e)e[s].indexOf(o)>=0&&r[o].push(s)}return r};var gr=t=>{let e={},r=o=>{if(t[o].length===0)return 1;let s=1;for(let i in t[o])s+=r(t[o][i]);return s};for(let o in t)e[o]=r(o);return e};var wr=(t,e)=>{e=!!e;let r={};for(let a in t){let c=$(a,"_");r[c]=t[a]}let o=pr(r),s=dr(o),i=gr(s),n=fr(i,e),m={};for(let a in n){let c=G(n[a],"_");m[c]=r[n[a]]}return m};var hr=async({config:t,logger:e,entity:r,view:o})=>{e=e||{debug:console.log,trace:console.log};let s=new M(t,e);await s.ensure(),await s.connect();let i=await s.knex.transaction();try{for(let m in r){let a=$(m,"_");e.debug(`\u6B63\u5728\u5B89\u88C5\u5B9E\u4F53${m}\u4E3A${a}`),await ur(i,a,r[m]),e.debug(`\u6B63\u5728\u5B89\u88C5\u5B9E\u4F53${m}\u5B8C\u6210`)}for(let m in o){let a=$(m,"_");await i.schema.dropViewIfExists(a)}let n=wr(o);for(let m in n){let a=$(m,"_");e.debug(`\u6B63\u5728\u5B89\u88C5\u89C6\u56FE${m}\u4E3A${a}`),await i.schema.createViewOrReplace(a,c=>{c.as(n[m].sql)}),e.debug(`\u6B63\u5728\u5B89\u88C5\u89C6\u56FE${m}\u5B8C\u6210`)}await i.commit()}catch{await i.rollback()}await s.destroy()};var Ne={install:hr,operator:W};var Ce=async(t,e)=>{let r=t.type||"sqlite",o;if(r==="redis"){let s={};o=i=>({get:async(n,m)=>(s[n]||{})[m],set:async(n,m,a)=>{s[n]=s[n]||{},s[n][m]=a}})}else{await Ne.install({config:t,logger:e,entity:{cache:{property:{namespace:{type:"string",length:100,notNull:!0},key:{type:"string",length:500,notNull:!0},value:{type:"string",length:1e4,notNull:!0}}}}});let s=await W({config:t,logger:e});o=i=>({get:async(n,m)=>{let a=await s.connect(i),c=await a.single("cache",{namespace:n,key:m});if(await a.commit(),c)return i.trace(`\u8BFB\u53D6\u7F13\u5B58${n} ${m}\u3002\u6570\u636E\u4E3A${c.value}`),c.value;i.trace(`\u8BFB\u53D6\u7F13\u5B58${n} ${m}\u3002\u6570\u636E\u4E3A\u7A7A`)},set:async(n,m,a)=>{let c=await s.connect(i);try{a?await c.modify("cache",["namespace","key"],{namespace:n,key:m,value:a}):await c.delete("cache",{namespace:n,key:m}),await c.commit(),i.trace(`\u5199\u5165\u7F13\u5B58${n} ${m}\u6210\u529F\u3002\u6570\u636E\u4E3A${a}`)}catch(l){await c.rollback(),i.trace(`\u5199\u5165\u7F13\u5B58${n} ${m}\u5931\u8D25\u3002\u6570\u636E\u4E3A${a}`),i.error(l)}}})}return o};var yr=async t=>{let e=t.sumor.config.cache||{},r=t.sumor.getLogger("CACHE"),o=await Ce(e,r);t.sumor.cache=o(r),t.use(async(s,i,n)=>{let m=s.sumor.getLogger("CACHE");s.sumor.cache=o(m),n()})};var qe=class{constructor(e){this.req=e,this._id=e.sumor.cookie.t,this._user=null,this._permission={},this._data={},this._time=0}async update({user:e,data:r,permission:o}){e&&(this._user=e,this.req.sumor.db&&this.req.sumor.db.setUser(e)),o&&(this._permission=o),r&&(this._data=r)}get id(){return this._id||""}set id(e){throw new Error("sumorApp.TOKEN_ID_EDIT_FORBIDDEN_DIRECTLY")}get time(){return this._time||""}set time(e){throw new Error("sumorApp.TOKEN_TIME_EDIT_FORBIDDEN_DIRECTLY")}get data(){return this._data||{}}set data(e){throw new Error("sumorApp.TOKEN_DATA_EDIT_FORBIDDEN_DIRECTLY")}get user(){return this._user||""}set user(e){throw new Error("sumorApp.USER_EDIT_FORBIDDEN_DIRECTLY")}get permission(){return this._permission}set permission(e){throw new Error("sumorApp.PERMISSION_EDIT_FORBIDDEN_DIRECTLY")}async setId(e){this._id=e,await this.save()}async setData(e,r){this._data[e]=r,await this.save()}async setPermission(e,r){if(e){let o={};if(typeof e=="string")o[e]=r||[];else if(ae(e)==="array")for(let s of e)o[s]=[];else o=e;for(let s in o)this._permission[s]=this._permission[s]||[],this._permission[s]=this._permission[s].concat(o[s]);await this.save()}}has(e,r){let o=!1;return this._permission[e]&&(r?this._permission[e].indexOf(r)>=0&&(o=!0):o=!0),o}check(e,r){if(this.user){if(e){let o,s=[],i=(m,a)=>{a?s.push(`${m}-${a}`):s.push(`${m}`)};if(typeof e=="string")o=this.has(e,r),o||i(e,r);else for(let m in e){let a=e[m];typeof a=="string"?(o=this.has(a,""),o||i(a,"")):(o=this.has(a.key,a.value),o||i(a.key,a.value))}let n=s.length>0;if(s.length>0){let m=new Error("sumorApp.PERMISSION_DENIED");throw m.data={auth:s.join(",")},m}return n}}else throw new Error("sumorApp.LOGIN_EXPIRED")}async destroy(){this._id=null,await this.save()}async save(){this.req.sumor.cookie.t=this._id}},$r=async t=>{t.use(async(e,r,o)=>{e.sumor.token=new qe(e),t.sumor.meta.event.token&&(e.sumor.token.load=async()=>{await t.sumor.meta.event.token.program(e.sumor,e,r)},await e.sumor.token.load()),e.sumor.token.user&&e.sumor.db&&e.sumor.db.setUser(e.sumor.token.user),o()})};var xr=async t=>{t.use(async(e,r,o)=>{let s=e.sumor.getLogger("DATABASE");e.sumor.db=await e.sumor.connectDB(s),o()})};var Es=({title:t,code:e,desc:r,data:o})=>{let s=JSON.stringify(o,null,4);return`<html>
|
|
423
|
+
</html>`)}};var Wt=t=>{let e={monitor:{name:"\u670D\u52A1\u5065\u5EB7\u72B6\u6001\u76D1\u63A7",program:async(o,s,i)=>s.sumor.monitor},text:{name:"\u5F53\u524D\u8BED\u8A00\u73AF\u5883\u6587\u672C\u6570\u636E",program:async(o,s,i)=>s.sumor.text()},token:{name:"\u5F53\u524D\u6388\u6743\u767B\u5F55\u4EE4\u724C",program:(o,s,i,n)=>{let m=s.sumor.token;if(m.id){let a=m.data?m.data.nickname:"";return{id:m.id,user:m.user,nickname:a,time:m.time,permission:m.permission}}return{}}},logout:{name:"\u9000\u51FA\u767B\u5F55",program:async(o,s,i,n)=>{let m=s.sumor.token;m.user&&await m.destroy()}},range:{name:"\u6570\u636E\u8F93\u5165\u8303\u56F4\u5217\u8868",parameters:{name:{name:"\u6570\u636E\u540D\u79F0",desc:"\u5E2E\u52A9\u6570\u636E\u7684\u540D\u79F0",required:!0,type:"string"}},program:async(o,s,i)=>{let n=s.sumor.data.name;return s.sumor.range(n)}},meta:{name:"\u63A5\u53E3\u4FE1\u606F",program:async(o,s,i)=>{let n={};for(let m in o.exposeApis){let a=o.exposeApis[m];n[m]={name:a.name,desc:a.desc,parameters:a.parameters}}return{name:o.name,instance:o.instance,api:n,text:s.sumor.text()}}}},r={};for(let o in e)r[`sumor.${o}`]=e[o];return r["wx.pay"]={name:"\u5FAE\u4FE1\u652F\u4ED8",program:Jt},r};var Vt=async t=>{let e=Wt(t),r={};for(let a in e)r[a]={name:e[a].name,parameters:e[a].parameters};let o=["text","rule","type","entity","view","api","event"],s={range:Gt,text:zt,type:Bt,api:r};for(let a of o){let c=a;s[a]=s[a]||{},(a==="api"||a==="event")&&(c="program");let l=await Ye(`${t.root}/${a}`,c);if(a==="api"){let u={};for(let f in l)u[`api.${f}`]=l[f];l=u}if(s[a]=Object.assign(s[a],l),Ee[c])for(let u in s[a])s[a][u]=Ee[c](s[a][u],s,u)}await ke.ensureDir(`${process.cwd()}/tmp`),await ke.writeFile(`${process.cwd()}/tmp/meta.json`,JSON.stringify(s,null,4));for(let a in e)s.api[a]=e[a];let i=await Ye(`${t.root}/view`,"view","sql");for(let a in i)s.view[a]=s.api[a]||Ee.program({}),s.view[a]=Object.assign(s.view[a],i[a]);let n=`${t.root}/api`;if(await ke.exists(n)){let a=await W({condition:"**/**.js",options:{cwd:n}});for(let c of a){let u=`api.${K(c).path}`,f=`${n}/${c}`;s.api[u]=s.api[u]||{},s.api[u].program=(await import(Kt(f))).default}}let m=`${t.root}/event`;if(await ke.exists(m)){let a=await W({condition:"**/**.js",options:{cwd:m}});for(let c of a){let u=K(c).path,f=`${m}/${c}`;s.event[u]=s.event[u]||{},s.event[u].program=async w=>{w.logger.trace(`\u6B63\u5728\u6267\u884C\u4E8B\u4EF6${u}`);let d={...w},p;w.db||(p=await w.connectDB(),d=Object.assign(d,{db:p}));let g=(await import(Kt(f))).default;if(g)try{await g(d||w),p&&await p.commit(),w.logger.debug(`\u4E8B\u4EF6${u}\u5B8C\u6210`)}catch(h){p&&await p.rollback(),w.logger.error(`\u4E8B\u4EF6${u}\u6267\u884C\u5931\u8D25\uFF0C${h.message}`),w.logger.trace(h)}else w.logger.error(`\u4E8B\u4EF6${u}\u6267\u884C\u5931\u8D25\uFF0C\u8BE5\u7A0B\u5E8F\u4E0D\u5B58\u5728`)}}}t.setContext({meta:s})};var Yt=async t=>{let e=_t(t),r=await It(e);e.setContext({tools:Ct,config:r});let o=r.name||"\u8F7B\u5448\u4E91\u5E94\u7528",s=(r.logLevel||"info").toLowerCase(),i=r.language||"zh-CN",n=await Dt(e),m={};e.setContext({name:o,logLevel:s,language:i,...n,exposeApis:m});let a=await Pt(e),c=a("APP");if(e.setContext({getLogger:a,logger:c}),e.config.database){let l=await Ut(e);e.setContext({connectDB:l})}return await Vt(e),e};import zs from"express";import Zt from"fs-extra";var Xt=async t=>{let e=`${t.sumor.root}/instance.json`,r={};if(await Zt.exists(e))try{r=await Zt.readJson(e)}catch{}r.version=r.version||"0.0.0",r.server=r.server||"local",r.port=r.port||t.sumor.port,r.time=new Date().getTime(),t.sumor.instance=JSON.parse(JSON.stringify(r)),t.use((o,s,i)=>{if(o.sumor.instance=JSON.parse(JSON.stringify(r)),o.sumor.instance){let{version:n,server:m,port:a,time:c}=o.sumor.instance;s.set("sumor-instance",`${n}_${m}_${a}_${c}`)}i()})};var qt=t=>{t.use((e,r,o)=>{let i=(e.get("accept-language")||t.sumor.language).split(","),n=i[0],m=[];for(let a in i)m.push(i[a].split(";")[0]);e.sumor.language=n,e.sumor.languages=m,o()})};var ps=(t,e)=>{t=t||"",e=e||{};let r=t.match(new RegExp(/\${.*?}/,"g"));if(r)for(let o of r){let s=o.substr(2,o.length-3),i=e[s]||"";t=t.replace(o,i)}return t},Qt=(t,e)=>(r,o,s)=>{o=o||{},s=s||e;let i,n;if(s!==""){let u=s.split("-");i=u[0],n=u[1]}if(!r){let u={};for(let f in t){let w=t[f][""]||{},d={},p={};i&&(d=t[f][i]||{}),n&&(p=t[f][s]||{});let g={...w,...d,...p};for(let h in g)u[`${f}.${h}`]=g[h]}return u}let m=r.split("."),a=m.pop(),c=m.join("."),l;return t[c]&&(n&&(l=(t[c][s]||{})[a]),!l&&i&&(l=(t[c][i]||{})[a]),l||(l=(t[c][""]||{})[a])),ps(l,o)},er=async t=>{let e={};for(let r in t.sumor.meta.text){e[r]=e[r]||{},e[r][""]=t.sumor.meta.text[r].origin||{};for(let o in t.sumor.meta.text[r].target)e[r][o]=t.sumor.meta.text[r].target[o]||{}}t.sumor.text=Qt(e,t.sumor.language),t.use((r,o,s)=>{r.sumor.text=Qt(e,r.sumor.language),s()})};var tr=async t=>{t.sumor.range=e=>e?t.sumor.meta.range[e]:t.sumor.meta.range,t.use((e,r,o)=>{e.sumor.range=t.sumor.range,o()})};var rr=t=>{t.use((e,r,o)=>{e.sumor.timezone=e.get("sumor-timezone"),o()})};var ds=0,Te=t=>{t.use((e,r,o)=>{let s=++ds;e.sumor.ip=e.headers["x-forwarded-for"]||"0.0.0.0",e.sumor.getLogger=m=>t.sumor.getLogger(m,s),e.sumor.logger=e.sumor.getLogger("PROGRAM");let i=e.sumor.getLogger("HTTP"),n=e.headers["user-agent"]||"unknown agent";i.info(`${e.method} ${e.originalUrl} IP/${e.sumor.ip} ${n}`),o()})};import ae from"os";var ir=60,or=24*60,gs=(Math.floor(Date.now()/1e3)-ae.uptime())*1e3,ws=Date.now(),nr=t=>Math.round(t),hs=()=>nr((ae.totalmem()-ae.freemem())/ae.totalmem()*100),ys=()=>({time:Date.now(),idle:ae.cpus().map(t=>t.times.idle)}),$s=(t,e)=>{let r=e.time-t.time,o=0;for(let s in e.idle){let n=(e.idle[s]-t.idle[s])/r;n>1&&(n=1),n=100-n*100,o+=n}return nr(o/e.idle.length)},R={serverUpTime:gs,serviceUpTime:ws,interval:ir,memory:[],cpu:[]},Ze,sr=async()=>{R.updateTime=Date.now();let t=ys();if(Ze){let e=$s(Ze,t);R.cpu.unshift(e),R.cpu=R.cpu.slice(0,or)}Ze=t,R.memory.unshift(hs()),R.memory=R.memory.slice(0,or)},ar=async t=>{sr(),setInterval(()=>{sr()},ir*1e3),t.use((e,r,o)=>{e.sumor.monitor=JSON.parse(JSON.stringify(R)),o()})};import Xe from"body-parser";import xs from"multer";import _s from"fs-extra";var cr=async t=>{let e=`${t.sumor.root}/tmp/uploads`;await _s.ensureDir(e);let r=xs({dest:"tmp/uploads/"});t.uploader=o=>{let s;if(o){let i=[];for(let n in o)o[n].type==="file"&&i.push({name:n});i.length>0&&(s=r.fields(i))}return s},t.use(Xe.urlencoded({extended:!1})),t.use(Xe.json()),t.use(Xe.text()),t.use((o,s,i)=>{o.sumor.data={...o.params,...o.query,...o.body},i()})};import bs from"cookie-parser";var mr=t=>{t.use(bs()),t.use((e,r,o)=>{e.sumor.cookie=JSON.parse(JSON.stringify(e.cookies)),e.sumor.saveCookie=()=>{for(let s in e.cookies)e.sumor.cookie[s]||r.clearCookie(s);for(let s in e.sumor.cookie)e.sumor.cookie[s]!==e.cookies[s]&&r.cookie(s,e.sumor.cookie[s],{maxAge:365*24*3600*1e3,httpOnly:!0})},o()})};var lr=t=>{let e=t.length,r=t.type,o;switch(r){case"string":e>1e3?o="text":o="string";break;case"number":e>18?o="string":t.scale!==null&&t.scale!==void 0?o="double":e>9?o="bigInteger":e>4?o="integer":e>2?o="smallint":o="tinyint";break;default:break}return o};var Oe=(t,e,r,o)=>{let s;switch(r.type=r.type||"string",r.type){case"string":r.length=r.length||255;break;case"number":r.length=r.length||10;break;default:break}if(r.increment)s=t.increments(e);else{let i=lr(r),n;switch(i){case"tinyint":s=t.tinyint(e),n="number";break;case"smallint":s=t.smallint(e),n="number";break;case"integer":s=t.integer(e),n="number";break;case"bigInteger":s=t.bigInteger(e),n="number";break;case"string":s=t.string(e,r.length),n="string";break;case"text":s=t.text(e,r.length),n="string";break;case"double":s=t.double(e,r.length,r.scale),n="number";break;default:break}if(r.default!==null){let m;n==="number"?(r.default===void 0&&(r.default=0),m=parseInt(r.default,10)):(r.default===void 0&&(r.default=""),m=r.default.toString()),s.defaultTo(m)}r.notNull&&s.notNullable()}r.key&&s.primary(),o&&s.alter()};var ur=async(t,e,r)=>{r=r||{};let o={},s=await t.schema.hasTable(e).transacting(t);if(!r.rename&&!r.deleted){let i=!1;for(let m in r.property)r.property[m].key&&(i=!0);i||(o.id={type:"string",length:32});for(let m in r.property)(m==="id"&&!i||["createdBy","createdTime","updatedBy","updatedTime"].indexOf(m)<0)&&(o[m]=r.property[m]);let n={type:"number",length:13};if(r.join)for(let m in r.join)o[`${$(m,"_")}_id`]={type:"string",length:32};o.createdBy={name:"\u521B\u5EFA\u8005",type:"string",length:32},o.createdTime={name:"\u521B\u5EFA\u65F6\u95F4",...n},o.updatedBy={name:"\u66F4\u65B0\u8005",type:"string",length:32},o.updatedTime={name:"\u66F4\u65B0\u65F6\u95F4",...n}}if(!s)!r.rename&&!r.deleted&&await t.schema.createTable(e,i=>{for(let n in o){let m=$(n,"_"),a=o[n];!a.rename&&!a.deleted&&Oe(i,m,a)}}).transacting(t);else if(r.rename){let i=$(r.rename,"_");await t.schema.renameTable(e,i)}else if(r.deleted)await t.schema.dropTable(e);else{let i=await t(e).columnInfo();await t.schema.alterTable(e,n=>{for(let m in o){let a=$(m,"_"),c=o[m];if(i[a]&&c.rename){let l=$(c.rename,"_");n.renameColumn(a,l)}}}).transacting(t),i=await t(e).columnInfo(),await t.schema.alterTable(e,n=>{for(let m in o){let a=$(m,"_"),c=o[m];c.rename||(i[a]?c.deleted?n.dropColumn(a):Oe(n,a,c,!0):!c.rename&&!c.deleted&&Oe(n,a,c))}})}};var fr=(t,e)=>{let r=[];for(let s in t)r.push({name:s,index:t[s]});r=r.sort((s,i)=>s.index>i.index?1:-1),e&&(r=r.reverse());let o=[];for(let s in r)o.push(r[s].name);return o};var pr=t=>{let e={};for(let r in t)e[r]=t[r].sql;return e};var dr=t=>{let e={};for(let o in t){e[o]=[];for(let s in t){let i=t[s].toLowerCase();i=i.replace(/`/g,""),i=i.replace(/\n/g," "),i=i.replace(/ {2}/g," "),i=i.replace(/ {2}/g," "),i=i.replace(/ {2}/g," "),(i.indexOf(` from ${o} `)>=0||i.indexOf(` join ${o} `)>=0)&&e[o].push(s)}}let r={};for(let o in t){r[o]=[];for(let s in e)e[s].indexOf(o)>=0&&r[o].push(s)}return r};var gr=t=>{let e={},r=o=>{if(t[o].length===0)return 1;let s=1;for(let i in t[o])s+=r(t[o][i]);return s};for(let o in t)e[o]=r(o);return e};var wr=(t,e)=>{e=!!e;let r={};for(let a in t){let c=$(a,"_");r[c]=t[a]}let o=pr(r),s=dr(o),i=gr(s),n=fr(i,e),m={};for(let a in n){let c=H(n[a],"_");m[c]=r[n[a]]}return m};var hr=async({config:t,logger:e,entity:r,view:o})=>{e=e||{debug:console.log,trace:console.log};let s=new M(t,e);await s.ensure(),await s.connect();let i=await s.knex.transaction();try{for(let m in r){let a=$(m,"_");e.debug(`\u6B63\u5728\u5B89\u88C5\u5B9E\u4F53${m}\u4E3A${a}`),await ur(i,a,r[m]),e.debug(`\u6B63\u5728\u5B89\u88C5\u5B9E\u4F53${m}\u5B8C\u6210`)}for(let m in o){let a=$(m,"_");await i.schema.dropViewIfExists(a)}let n=wr(o);for(let m in n){let a=$(m,"_");e.debug(`\u6B63\u5728\u5B89\u88C5\u89C6\u56FE${m}\u4E3A${a}`),await i.schema.createViewOrReplace(a,c=>{c.as(n[m].sql)}),e.debug(`\u6B63\u5728\u5B89\u88C5\u89C6\u56FE${m}\u5B8C\u6210`)}await i.commit()}catch{await i.rollback()}await s.destroy()};var Ne={install:hr,operator:J};var Ce=async(t,e)=>{let r=t.type||"sqlite",o;if(r==="redis"){let s={};o=i=>({get:async(n,m)=>(s[n]||{})[m],set:async(n,m,a)=>{s[n]=s[n]||{},s[n][m]=a}})}else{await Ne.install({config:t,logger:e,entity:{cache:{property:{namespace:{type:"string",length:100,notNull:!0},key:{type:"string",length:500,notNull:!0},value:{type:"string",length:1e4,notNull:!0}}}}});let s=await J({config:t,logger:e});o=i=>({get:async(n,m)=>{let a=await s.connect(i),c=await a.single("cache",{namespace:n,key:m});if(await a.commit(),c)return i.trace(`\u8BFB\u53D6\u7F13\u5B58${n} ${m}\u3002\u6570\u636E\u4E3A${c.value}`),c.value;i.trace(`\u8BFB\u53D6\u7F13\u5B58${n} ${m}\u3002\u6570\u636E\u4E3A\u7A7A`)},set:async(n,m,a)=>{let c=await s.connect(i);try{a?await c.modify("cache",["namespace","key"],{namespace:n,key:m,value:a}):await c.delete("cache",{namespace:n,key:m}),await c.commit(),i.trace(`\u5199\u5165\u7F13\u5B58${n} ${m}\u6210\u529F\u3002\u6570\u636E\u4E3A${a}`)}catch(l){await c.rollback(),i.trace(`\u5199\u5165\u7F13\u5B58${n} ${m}\u5931\u8D25\u3002\u6570\u636E\u4E3A${a}`),i.error(l)}}})}return o};var yr=async t=>{let e=t.sumor.config.cache||{},r=t.sumor.getLogger("CACHE"),o=await Ce(e,r);t.sumor.cache=o(r),t.use(async(s,i,n)=>{let m=s.sumor.getLogger("CACHE");s.sumor.cache=o(m),n()})};var qe=class{constructor(e){this.req=e,this._id=e.sumor.cookie.t,this._user=null,this._permission={},this._data={},this._time=0}async update({user:e,data:r,permission:o}){e&&(this._user=e,this.req.sumor.db&&this.req.sumor.db.setUser(e)),o&&(this._permission=o),r&&(this._data=r)}get id(){return this._id||""}set id(e){throw new Error("sumorApp.TOKEN_ID_EDIT_FORBIDDEN_DIRECTLY")}get time(){return this._time||""}set time(e){throw new Error("sumorApp.TOKEN_TIME_EDIT_FORBIDDEN_DIRECTLY")}get data(){return this._data||{}}set data(e){throw new Error("sumorApp.TOKEN_DATA_EDIT_FORBIDDEN_DIRECTLY")}get user(){return this._user||""}set user(e){throw new Error("sumorApp.USER_EDIT_FORBIDDEN_DIRECTLY")}get permission(){return this._permission}set permission(e){throw new Error("sumorApp.PERMISSION_EDIT_FORBIDDEN_DIRECTLY")}async setId(e){this._id=e,await this.save()}async setData(e,r){this._data[e]=r,await this.save()}async setPermission(e,r){if(e){let o={};if(typeof e=="string")o[e]=r||[];else if(ne(e)==="array")for(let s of e)o[s]=[];else o=e;for(let s in o)this._permission[s]=this._permission[s]||[],this._permission[s]=this._permission[s].concat(o[s]);await this.save()}}has(e,r){let o=!1;return this._permission[e]&&(r?this._permission[e].indexOf(r)>=0&&(o=!0):o=!0),o}check(e,r){if(this.user){if(e){let o,s=[],i=(m,a)=>{a?s.push(`${m}-${a}`):s.push(`${m}`)};if(typeof e=="string")o=this.has(e,r),o||i(e,r);else for(let m in e){let a=e[m];typeof a=="string"?(o=this.has(a,""),o||i(a,"")):(o=this.has(a.key,a.value),o||i(a.key,a.value))}let n=s.length>0;if(s.length>0){let m=new Error("sumorApp.PERMISSION_DENIED");throw m.data={auth:s.join(",")},m}return n}}else throw new Error("sumorApp.LOGIN_EXPIRED")}async destroy(){this._id=null,await this.save()}async save(){this.req.sumor.cookie.t=this._id}},$r=async t=>{t.use(async(e,r,o)=>{e.sumor.token=new qe(e),t.sumor.meta.event.token&&(e.sumor.token.load=async()=>{await t.sumor.meta.event.token.program(e.sumor,e,r)},await e.sumor.token.load()),e.sumor.token.user&&e.sumor.db&&e.sumor.db.setUser(e.sumor.token.user),o()})};var xr=async t=>{t.use(async(e,r,o)=>{let s=e.sumor.getLogger("DATABASE");e.sumor.db=await e.sumor.connectDB(s),o()})};var Ss=({title:t,code:e,desc:r,data:o})=>{let s=JSON.stringify(o,null,4);return`<html>
|
|
424
424
|
<head>
|
|
425
425
|
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
|
|
426
426
|
<style type="text/css">
|
|
@@ -489,11 +489,11 @@ function show(){
|
|
|
489
489
|
}
|
|
490
490
|
</script>
|
|
491
491
|
</body>
|
|
492
|
-
</html>`},Qe=class{constructor(e,r){this.req=e,this.res=r,this.respond=!1,this._changed=!1,this._hasError=!1,this._code="OK",this._message="",this._data=null}set code(e){let r=this.req.sumor.text(e,this._data);e&&r?(this._code=e,this._message=r):(this._code="sumorApp.NETWORK_ERROR",this._message=this.req.sumor.text(this._code))}get code(){return this._code}set message(e){this._message=e}get message(){return this._message}set data(e){this._data=e,this._changed=!0}get data(){return this._data}set changed(e){this._changed=e}get changed(){return this._changed}error(e){this.code=e,this._hasError=!0}end(){if(this._data!==void 0)try{this.res.send(this._data)}catch(e){if(e.code!=="ERR_HTTP_HEADERS_SENT")throw e}}send(){let e={code:this._code,message:this._message,data:this._data};if(this._hasError)try{this.res.status(500),this.req.accepts(["html","json"])==="html"?this.res.send(
|
|
492
|
+
</html>`},Qe=class{constructor(e,r){this.req=e,this.res=r,this.respond=!1,this._changed=!1,this._hasError=!1,this._code="OK",this._message="",this._data=null}set code(e){let r=this.req.sumor.text(e,this._data);e&&r?(this._code=e,this._message=r):(this._code="sumorApp.NETWORK_ERROR",this._message=this.req.sumor.text(this._code))}get code(){return this._code}set message(e){this._message=e}get message(){return this._message}set data(e){this._data=e,this._changed=!0}get data(){return this._data}set changed(e){this._changed=e}get changed(){return this._changed}error(e){this.code=e,this._hasError=!0}end(){if(this._data!==void 0)try{this.res.send(this._data)}catch(e){if(e.code!=="ERR_HTTP_HEADERS_SENT")throw e}}send(){let e={code:this._code,message:this._message,data:this._data};if(this._hasError)try{this.res.status(500),this.req.accepts(["html","json"])==="html"?this.res.send(Ss({title:"\u670D\u52A1\u5F02\u5E38\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",...e})):this.res.send(e)}catch(r){if(r.code!=="ERR_HTTP_HEADERS_SENT")throw r}else try{this.res.set("Content-Type","application/json;charset=utf-8"),this.res.send(e)}catch(r){if(r.code!=="ERR_HTTP_HEADERS_SENT")throw r}}},_r=async t=>{t.use((e,r,o)=>{e.sumor.response=new Qe(e,r),o()})};import vs from"ali-oss";var et={resize:{mode:"m",width:"w",height:"h",longer:"l",shorter:"s"},quality:{related:"q",absolute:"Q"},circle:{radius:"r"},blur:{radius:"r",size:"s"}},Es=t=>{let e={};if(t.image){let r=[];for(let o in et){let s=t.image[o];if(s){let i=[];i.push(o);for(let n in et[o])s[n]&&i.push(`${et[o][n]}_${s[n]}`);r.push(i.join(","))}}t.image.format&&r.push(`format,${t.image.format}`),t.image.orient&&r.push("auto-orient,1"),r.length>0&&(e.process=`image/${r.join("/")}`)}return e},tt=class{constructor(e){this.aliyunOSS=new vs(e)}async put(e,r){let o=await this.aliyunOSS.putStream(e,r);if(o.res.status>299){let s=new Error("sumorStorage.STORAGE_INSTANCE_ERROR");throw s.data={msg:o.res},s}}async info(e,r){r=r||{};let o={},s,i;try{if(s=await this.aliyunOSS.get(e,{process:"image/info"}),r.color)try{let a=await this.aliyunOSS.get(e,{process:"image/average-hue"});if(a.content){let c=JSON.parse(a.content.toString());o.color=c.RGB.replace("0x","#")}}catch{}}catch(a){if(a.code!=="NoSuchKey")i=a.message;else return null}if(!i&&s&&s.res.status>299&&(i=s.res),i){let a=new Error("sumorStorage.STORAGE_INSTANCE_ERROR");throw a.data={msg:i},a}let n=JSON.parse(s.content.toString()),m=a=>{if(n[a])return n[a].value};return o.format=m("Format"),o.size=m("FileSize"),o.height=m("ImageHeight"),o.height&&(o.height=parseInt(o.height,10)),o.width=m("ImageWidth"),o.width&&(o.width=parseInt(o.width,10)),o.make=m("LensMake"),o.model=m("LensModel"),o}async get(e,r){let o,s,i;try{s=await this.aliyunOSS.getStream(e,Es(r))}catch(n){n.code!=="NoSuchKey"&&(i=n.message)}if(!i&&s&&s.res.status>299&&(i=s.res),i){let n=new Error("sumorStorage.STORAGE_INSTANCE_ERROR");throw n.data={msg:i},n}return s&&(o=s.stream),o}async delete(e){let r=await this.aliyunOSS.delete(e);if(r.res.status>299){let o=new Error("sumorStorage.STORAGE_INSTANCE_ERROR");throw o.data={msg:r.res},o}}async exists(e){let r=!0;try{await this.aliyunOSS.get(e)}catch(o){if(o.code==="NoSuchKey")r=!1;else throw new Error("sumorStorage.STORAGE_INSTANCE_ERROR")}return r}},br=tt;import V from"fs-extra";import Sr from"path";var rt=class{constructor(e){this.config=e,this.root=Sr.resolve(process.cwd(),this.config.path)}_getTargetPath(e){return Sr.join(this.root,e)}async put(e,r){let o=this._getTargetPath(e);V.ensureFileSync(o),await new Promise(s=>{let i=V.createWriteStream(o,{encoding:"utf8",start:0});r.pipe(i),r.on("end",()=>{s()})})}async get(e){let r=this._getTargetPath(e);if(await V.exists(r))return V.createReadStream(r)}async delete(e){let r=this._getTargetPath(e);await V.remove(r)}async exists(e){let r=this._getTargetPath(e);return await V.exists(r)}},vr=rt;import ks from"crypto";var Er=t=>{let e={},r=ks.createHash("md5"),o=0;return t.on("data",s=>{o+=s.length}),t.on("data",r.update.bind(r)),t.on("end",()=>{e.length=o,e.hash=r.digest("hex")}),e};var Y=class{constructor(e,r){if(this._logger=r,e)switch(e.type){case"aliyunOSS":this._instance=new br(e);break;case"file":this._instance=new vr(e);break;default:break}}async put(e,r){if(r=be(r),this._instance)try{let o=Er(r),s=await this._instance.put(e,r);return o.response=s,o}catch{throw new Error("sumorStorage.STORAGE_FILE_SAVE_FAILED")}else throw new Error("sumorStorage.STORAGE_NOT_CONNECTED")}async get(e,r){if(r=r||{},this._instance)try{let o=await this._instance.get(e,r);return await Se(o,r.type)}catch{throw new Error("sumorStorage.STORAGE_FILE_READ_FAILED")}else throw new Error("sumorStorage.STORAGE_NOT_CONNECTED")}async delete(e){if(this._instance)try{return await this._instance.delete(e)}catch{throw new Error("sumorStorage.STORAGE_FILE_DELETE_FAILED")}else throw new Error("sumorStorage.STORAGE_NOT_CONNECTED")}async info(e,r){if(this._instance)try{return await this._instance.info(e,r)}catch{throw new Error("sumorStorage.STORAGE_FILE_INFO_FAILED")}else throw new Error("sumorStorage.STORAGE_NOT_CONNECTED")}async exists(e){if(this._instance)try{return await this._instance.exists(e)}catch{throw new Error("sumorStorage.STORAGE_FILE_INFO_FAILED")}else throw new Error("sumorStorage.STORAGE_NOT_CONNECTED")}};var kr=async t=>{let e=t.sumor.getLogger("STORAGE");t.sumor.storage=new Y(t.sumor.config.storage,e),t.use((r,o,s)=>{let i=r.sumor.getLogger("STORAGE");r.sumor.storage=new Y(t.sumor.config.storage,i),s()})};import Ts from"@alicloud/sms-sdk";var ot,Z=class{constructor(e,r){this._config=e,this._logger=r||{error:console.log,debug:console.log,trace:console.log}}async send(e,r,o,s){let{signName:i,accessKeyId:n,secretAccessKey:m}=this._config;if(this._config&&!this._config.disable){switch(ot||(ot=new Ts({accessKeyId:n,secretAccessKey:m})),r){case 86:if(!o.match(/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/))throw new Error("sumorSMS.MOBILE_FORMAT");break;default:throw await new Promise(a=>{setTimeout(()=>{a()},1e3)}),new Error("sumorSMS.MOBILE_PREFIX_NOT_SUPPORT")}try{await new Promise((a,c)=>{ot.sendSMS({PhoneNumbers:o,SignName:i,TemplateCode:e,TemplateParam:JSON.stringify(s)}).then(l=>{let{Code:u}=l;u==="OK"?a():c(u)},l=>{l.data?c(l.data.Code):c(l)})})}catch(a){let c=new Error("sumorSMS.SMS_SEND_FAILED");throw c.data={msg:a},c}}else this._logger.error(`\u6D88\u606F\u53D1\u9001\u529F\u80FD\u4E0D\u53EF\u7528\u3002\u9700\u8981\u53D1\u9001\u6D88\u606F${e}\u7ED9${r} ${o}\uFF0C\u53C2\u6570${JSON.stringify(s)}`)}};var Tr=async t=>{if(t.sumor.config.sms){let e=t.sumor.getLogger("SMS");t.sumor.sms=new Z(t.sumor.config.sms,e)}t.use((e,r,o)=>{if(t.sumor.config.sms){let s=e.sumor.getLogger("SMS");e.sumor.sms=new Z(t.sumor.config.sms,s)}o()})};import st from"axios";import Cs from"axios";import Os from"crypto";import Ns from"fs";var Ie=(t,e)=>{let r=`${process.cwd()}/${e.pay.privateKey}`,o=Ns.readFileSync(r,"utf8"),s=`${t.join(`
|
|
493
493
|
`)}
|
|
494
|
-
`;return
|
|
494
|
+
`;return Os.createSign("RSA-SHA256").update(s).sign(o,"base64")};var X=async(t,e)=>{let r="https://api.mch.weixin.qq.com",o=Math.floor(Date.now()/1e3),s=Math.random().toString(36).substr(2,15),i=Ie([t.method.toUpperCase(),t.url,o,s,t.body],e),n={"Content-Type":"application/json",Accept:"application/json",Authorization:`WECHATPAY2-SHA256-RSA2048 mchid="${e.pay.mchId}",nonce_str="${s}",signature="${i}",timestamp="${o}",serial_no="${e.pay.serialNo}"`};try{return(await Cs({method:t.method.toUpperCase(),url:r+t.url,data:t.body,headers:n})).data}catch(m){throw m.response}};var Or=async(t,e)=>{t.desc=t.desc||"\u865A\u62DF\u5546\u54C1";let r={method:"POST",url:"/v3/pay/transactions/jsapi",body:JSON.stringify({appid:e.key,mchid:e.pay.mchId,description:t.desc,out_trade_no:t.id,notify_url:e.pay.notifyUrl,amount:{total:Math.round(t.amount*100),currency:"CNY"},payer:{openid:t.openId}})};return(await X(r,e)).prepay_id};async function Nr(t,e){return await X({method:"POST",url:`/v3/pay/transactions/out-trade-no/${t}/close`,body:JSON.stringify({mchid:e.pay.mchId,out_trade_no:t})},e)}async function Cr(t,e){let r;try{r=await X({method:"GET",url:`/v3/pay/transactions/out-trade-no/${t}?mchid=${e.pay.mchId}`},e)}catch(o){if(o.status===404)r={trade_state:"NOTPAY"};else throw o}return r}var ce={order:Or,close:Nr,check:Cr,sign:Ie};var Ir=30*60*1e3,q=class{constructor(e,r,o){this._config=e,this._cache=r,this._name=e.name||"",this._logger=o,this._updatingToken=!1,e.pay&&(this.pay={order(s){return ce.order(s,e)},close(s){return ce.close(s,e)},check(s){return ce.check(s,e)},sign(s){return ce.sign(s,e)}})}async call(e,r){let o;try{r?o=await st.post(e,r):o=await st.get(e)}catch(i){let n=new Error("WECHAT_API_FAILED");throw n.data={msg:`\u5FAE\u4FE1\u670D\u52A1\u5668\u8FDE\u63A5\u5931\u8D25\uFF1A${i.message}`},n}if(!o.data.errcode)return o.data;this._logger.error();let s=new Error("WECHAT_ERROR");throw s.data={msg:o.data.errmsg},s}async init(e){this._app=e,this._logger.info(`\u5FAE\u4FE1\u6821\u9A8C\u6587\u4EF6\u5DF2\u542F\u52A8 /MP_verify_${this._config.verifyCode}.txt`),e.get(`/MP_verify_${this._config.verifyCode}.txt`,(r,o)=>{o.send(this._config.verifyCode)}),await this.getToken(),setInterval(()=>{this._logger.trace("\u5F00\u59CB\u68C0\u67E5\u5FAE\u4FE1\u670D\u52A1\u6388\u6743\u51ED\u8BC1\u662F\u5426\u8FC7\u671F"),this.getToken(),this._logger.trace("\u68C0\u67E5\u5FAE\u4FE1\u670D\u52A1\u6388\u6743\u51ED\u8BC1\u5DF2\u5B8C\u6210")},60*1e3)}async getToken(){let e=async()=>{let o=await this._cache.get("wechatAccessToken",this._name);return o&&(o=JSON.parse(o)),o=o||{},o.time=o.time||0,o},r=await e();return Date.now()-r.time>Ir&&(await this._refreshToken(),r=await e()),(!r||!r.token||Date.now()-r.time>Ir)&&this._logger.error("\u5FAE\u4FE1\u670D\u52A1\u6388\u6743\u51ED\u8BC1\u66F4\u65B0\u5931\u8D25"),r.token}async reloadUsers(){let e="",r,o=0,s=[],i=async()=>{let m=await this.list(e);r||(r=m.total),o+=m.count,s=s.concat(m.data.openid),o<r&&(e=m.next_openid,await i())};await i();let n=[];for(let m of s)n.push(await this.detail(m));return n}async list(e){e=e||"";let o=`https://api.weixin.qq.com/cgi-bin/user/get?access_token=${await this.getToken()}&next_openid=${e}`;return await this.call(o)}async detail(e){let o=`https://api.weixin.qq.com/cgi-bin/user/info?access_token=${await this.getToken()}&openid=${e}`;return await this.call(o)}async sendTemplateMessage(e,r,o,s){let i=await this.getToken(),n={};for(let a in s)n[a]={value:s[a]};let m=`https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=${i}`;try{await this.call(m,{touser:e,template_id:r,url:o,data:n}),this._logger.debug(`\u6A21\u7248\u6D88\u606F\u5DF2\u53D1\u9001\u7ED9${e}\uFF0C\u6A21\u7248${r}\uFF0C\u6570\u636E${JSON.stringify(s)}`)}catch(a){this._logger.error(`\u7ED9${e}\u7684\u6A21\u7248\u6D88\u606F\u53D1\u9001\u5931\u8D25\uFF0C\u6A21\u7248${r}\uFF0C\u6570\u636E${JSON.stringify(s)}`),this._logger.error(a)}}async updateMenu(e){let r=await this.getToken();await this.call(`https://api.weixin.qq.com/cgi-bin/menu/create?access_token=${r}`,e)}async _refreshToken(){if(!this._updatingToken){this._updatingToken=!0,this._logger.info("\u6B63\u5728\u66F4\u65B0\u5FAE\u4FE1\u670D\u52A1\u6388\u6743\u51ED\u8BC1");let e=`https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${this._config.key}&secret=${this._config.secret}`,r=await st.get(e);if(r.status===200){let o={};r.data.access_token?(o.token=r.data.access_token,o.time=Date.now(),this._logger.trace(`\u5FAE\u4FE1\u670D\u52A1\u6388\u6743\u51ED\u8BC1: ${o.token}`),this._logger.info("\u5FAE\u4FE1\u670D\u52A1\u6388\u6743\u51ED\u8BC1\u5DF2\u66F4\u65B0"),await this._cache.set("wechatAccessToken",this._name,JSON.stringify(o))):this._logger.error(r.data)}else this._logger.error(r.data);this._updatingToken=!1}}};var Dr=async t=>{if(t.sumor.config.wechat){let e=t.sumor.getLogger("WECHAT");e.debug("\u5FAE\u4FE1\u670D\u52A1\u5668\u6B63\u5728\u542F\u52A8");let r;t.sumor.config.wechat.cache?r=(await Ce(t.sumor.config.wechat.cache,e))(e):r=t.sumor.cache,e.trace(`\u5FAE\u4FE1\u670D\u52A1\u5668\u914D\u7F6E\u4FE1\u606F ${JSON.stringify(t.sumor.config.wechat)}`),t.sumor.wechat=new q(t.sumor.config.wechat,r,e),await t.sumor.wechat.init(t),e.debug("\u5FAE\u4FE1\u670D\u52A1\u5668\u5DF2\u542F\u52A8"),t.use((o,s,i)=>{let n=o.sumor.getLogger("WECHAT");o.sumor.wechat=new q(t.sumor.config.wechat,n),i()})}};var Rr=async t=>{await Xt(t),await _r(t),await qt(t),await er(t),await tr(t),await rr(t),await Te(t),await ar(t),await cr(t),await mr(t),await yr(t),await xr(t),await $r(t),await kr(t),await Tr(t),await Dr(t)};var Ar=(t,e,r)=>{let o=`/${t.replace(/\./g,"/")}`,s=`${e.sumor.root}/tmp/uploads`,i=e.uploader(e.sumor.meta.api[t].parameters);return i?e.all(o,i,(n,m,a)=>{let c={};if(n.files)for(let l in n.files){let u=[];for(let f in n.files[l])u.push({name:n.files[l][f].originalname,size:n.files[l][f].size,mime:n.files[l][f].mimetype,encoding:n.files[l][f].encoding,path:`${s}/${n.files[l][f].filename}`});c[l]=u}Object.assign(n.sumor.data,c),a()},r):e.all(o,(n,m,a)=>{a()},r),!!i};var Lr=(t,e)=>{for(let r in e.parameters){let o=e.parameters[r];switch(o.default!==void 0&&(o.type==="string"?(t[r]===null||t[r]===void 0||t[r]==="")&&(t[r]=o.default):(t[r]===null||t[r]===void 0)&&(t[r]=o.default)),o.type){case"string":t[r]!==null&&t[r]!==void 0&&typeof t[r]!="string"&&(t[r]=t[r].toString());break;case"number":typeof t[r]!="number"&&t[r]!==null&&t[r]!==void 0&&(typeof t[r]=="string"?(t[r]=parseFloat(t[r]),isNaN(t[r])&&(t[r]=null)):delete t[r]);break;default:break}if(t[r]&&(o.trim&&(t[r]=t[r].trim()),o.upperCase&&(t[r]=t[r].toUpperCase()),o.lowerCase&&(t[r]=t[r].toLowerCase())),o.required===!0&&(t[r]===void 0||t[r]===null||t[r]===""))throw new Error("sumorApp.REQUIRED");if(o.length&&t[r]&&t[r].length>o.length){let s=new Error("sumorApp.LENGTH_OUT_OF_LIMIT");throw s.data={length:o.length},s}for(let s of o.rule)if(!new RegExp(s.expression).test(t[r]))throw new Error(s.text)}return t};var Pr=async t=>{let e=Object.keys(t.sumor.meta.api);e.sort((r,o)=>r>o?1:-1);for(let r of e){let o=`/${r.replace(/\./g,"/")}`,i=Ar(r,t,async function(n,m,a){n.sumor.meta=t.sumor.meta,n.sumor.cors=!0,n.sumor.response.changed=!0,t.sumor.meta.event.context&&await t.sumor.meta.event.context.program(n.sumor,n,m);try{let c=t.sumor.meta.api[r];n.sumor.data=Lr(n.sumor.data,c);let l=await c.program(n.sumor,n,m);n.sumor.response.data=l||n.sumor.response.data,await n.sumor.db.commit()}catch(c){try{await n.sumor.db.rollback()}catch{}n.sumor.response.error(c.message);let l="";c instanceof Error&&(l=t.sumor.text(c.message)),n.sumor.logger.debug(`\u5916\u90E8\u8BF7\u6C42\u51FA\u9519\uFF1A${c.message} ${l}`),n.sumor.logger.trace(c)}a()});t.sumor.exposeApis[o]={name:t.sumor.meta.api[r].name||"",desc:t.sumor.meta.api[r].desc||"",parameters:t.sumor.meta.api[r].parameters||{}},t.sumor.logger.info(`\u63A5\u53E3\u5DF2\u5C31\u7EEA\uFF1A${o}${i?" (\u5141\u8BB8\u6587\u4EF6\u4E0A\u4F20)":""}`)}t.sumor.logger.info("\u6240\u6709\u63A5\u53E3\u5DF2\u5C31\u7EEA")};import{createProxyMiddleware as Ms}from"http-proxy-middleware";var Fr=t=>{t.use((e,r,o)=>{e.sumor.cors&&(r.header("Access-Control-Allow-Origin","*"),r.header("Access-Control-Allow-Headers","X-Requested-With"),r.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS")),o()})};import Is from"fs-extra";var jr=t=>{t.use(async(e,r,o)=>{if(e.files){let s=`${t.sumor.root}/tmp/uploads`;for(let i in e.files)for(let n in e.files[i]){let m=`${s}/${e.files[i][n].filename}`;await Is.remove(m)}}o()})};var Mr=t=>{t.use((e,r,o)=>{e.sumor.saveCookie(),e.sumor.response.respond?e.sumor.response.end():e.sumor.response.changed?e.sumor.response.send():o()})};import it from"fs-extra";import Ur from"node:path";import Ds from"serve-static";import Rs from"fs";import{pathToFileURL as As}from"url";var zr=async t=>{let e="/",r=Ur.resolve(process.cwd(),"./output/web");if(await it.exists(r)){let o=await it.readFile(`${r}/client/index.html`,"utf-8"),s=JSON.parse(await it.readFile(`${r}/client/ssr-manifest.json`,"utf-8"));t.use(e,Ds(`${r}/client`,{index:!1}));let i;try{let n=Ur.resolve(r,"./server/entry-server.js");Rs.existsSync(n)&&(i=await import(As(n)),i=i.render)}catch(n){Te.error("ssrServerEntry load failed",n.stack)}t.use("*",async(n,m)=>{try{let a=n.originalUrl.replace(e,"/"),c=n.sumor.ssrContext,[l,u]=await i(a,s,c),f=`<title>${c.pageInfo.title}</title>
|
|
495
495
|
<meta name="description" content="${c.pageInfo.description}" />
|
|
496
|
-
<meta name="keywords" content="${c.pageInfo.keywords}" />`,w=o.replace("<!--app-page-info-->",f).replace("<!--preload-links-->",u).replace("<!--app-html-->",l);m.status(200).set({"Content-Type":"text/html"}).end(w)}catch(a){console.log(a.stack),m.status(500).end(a.stack)}})}};import
|
|
496
|
+
<meta name="keywords" content="${c.pageInfo.keywords}" />`,w=o.replace("<!--app-page-info-->",f).replace("<!--preload-links-->",u).replace("<!--app-html-->",l);m.status(200).set({"Content-Type":"text/html"}).end(w)}catch(a){console.log(a.stack),m.status(500).end(a.stack)}})}};import Ls from"compression";import Ps from"zlib";import Fs from"serve-static";import js from"fs-extra";var Br=async t=>{let e=`${t.sumor.root}/static`;t.use(Ls({filter(){return!0},flush:Ps.Z_SYNC_FLUSH})),await js.exists(e)&&t.use(Fs(e))};var Hr=async t=>{if(await Fr(t),await jr(t),await Mr(t),await Br(t),t.sumor.mode==="development"){let e=`http://localhost:${t.sumor.uiPort}`;t.use("*",Ms({target:e,changeOrigin:!0,ws:!0,logProvider:function(o){let s=i=>{};return{log:s,debug:s,info:s,warn:s,error:s}}}))}(t.sumor.mode==="production"||t.sumor.mode==="preview")&&await zr(t)};import Gr from"http";import Us from"https";import"spdy";var De=t=>{let e=[];return t.on("connection",o=>{e.push(o),o.once("close",()=>{e.splice(e.indexOf(o),1)})}),async()=>await new Promise(o=>{e.forEach(s=>{s.destroy()}),t.close(()=>{o()})})};var Jr=async t=>{let e=t.sumor.port;if(t.sumor.protocol==="https"){let r;if(e===443){let i=Gr.createServer((n,m)=>{let a=`https://${n.headers.host}${n.url}`;m.writeHead(301,{Location:a}),m.end()});r=await new Promise(n=>{i.listen(80,()=>{n(De(i))})}),t.sumor.logger.info("http\u670D\u52A1\u5DF2\u542F\u52A8\uFF0C\u8BBF\u95EE\u5C06\u8DF3\u8F6C\u81F3https")}let o;o=Us.createServer({...t.sumor.ssl},t),o.on("error",i=>{t.sumor.logger.error(i)});let s=await new Promise(i=>{o.listen(e,()=>{i(De(o))})});t.sumor.close=async()=>{t.sumor.logger.info("\u6B63\u5728\u7EC8\u6B62\u7F51\u9875\u670D\u52A1"),r&&await r(),await s(),t.sumor.logger.info("\u7F51\u9875\u670D\u52A1\u5DF2\u505C\u6B62\u8FD0\u884C")}}else{let r=Gr.createServer(t),o=await new Promise(s=>{r.listen(e,()=>{s(De(r))})});t.sumor.close=async()=>{t.sumor.logger.info("\u6B63\u5728\u7EC8\u6B62\u7F51\u9875\u670D\u52A1"),await o(),t.sumor.logger.info("\u7F51\u9875\u670D\u52A1\u5DF2\u505C\u6B62\u8FD0\u884C")}}};var Wr=async t=>{let e=zs();e.disable("x-powered-by"),e.sumor=t,e.sumor.app=e,e.use((r,o,s)=>{r.sumor=t.getContext(),r.sumor.ssrContext={pageInfo:{title:"",description:"",keywords:""}},r.sumor.cors=!1,s()}),await Rr(e),e.use((r,o,s)=>{r.sumor.logger.trace(`\u4F1A\u8BDD\u4EA4\u4E92\u5BF9\u8C61: ${Object.keys(r.sumor).join(", ")}`),s()}),e.sumor.logger.debug("\u524D\u7F6E\u4E2D\u95F4\u4EF6\u52A0\u8F7D\u5B8C\u6210"),e.sumor.meta.event.setup&&await e.sumor.meta.event.setup.program(e.sumor),e.sumor.meta.event.prepare&&await e.sumor.meta.event.prepare.program(e.sumor),await Pr(e),e.sumor.logger.debug("\u5904\u7406\u7A0B\u5E8F\u52A0\u8F7D\u5B8C\u6210"),e.sumor.meta.event.serve&&await e.sumor.meta.event.serve.program(e.sumor),await Hr(e),e.sumor.logger.debug("\u540E\u7F6E\u4E2D\u95F4\u4EF6\u52A0\u8F7D\u5B8C\u6210"),await Jr(e),e.sumor.meta.event.served&&await e.sumor.meta.event.served.program(e.sumor),e.sumor.logger.info(`\u5E94\u7528\u5DF2\u8FD0\u884C\u5728 ${e.sumor.origin}`),e.sumor.mode==="production"&&process.on("uncaughtException",r=>{e.sumor.logger.error("\u672A\u6355\u6349\u9519\u8BEF"),e.sumor.logger.error(r)})};import{build as Kr,defineConfig as Vr}from"vite";var Yr=async t=>{await xe(t,!0);let e=await re(t);e.build.ssrManifest=!0,e.build.outDir="../../output/web/client",e.build.emptyOutDir=!0,await Kr(Vr(e));let r=await re(t);r.build.ssr="src/entry-server.js",r.build.outDir="../../output/web/server",r.build.emptyOutDir=!0,await Kr(Vr(r))};var Zr=async t=>{let e=t.config.database,r=t.getLogger("DATABASE");await Ne.install({config:e,logger:r,entity:t.meta.entity,view:t.meta.view})};var N=async t=>{t=t||{};let e=await Yt(t);e.logger.info(`\u65E5\u5FD7\u8BB0\u5F55\u7EA7\u522B\uFF1A${e.logLevel.toUpperCase()}`),e.logger.info(`\u8FD0\u884C\u6A21\u5F0F\uFF1A${e.mode.toUpperCase()}`),e.logger.trace(`\u5168\u5C40\u4EA4\u4E92\u5BF9\u8C61: ${Object.keys(e).join(", ")}`),e.logger.trace(`\u914D\u7F6E\u4FE1\u606F: ${JSON.stringify(e.config,null,4)}`),e.mode==="development"&&(e.logger.info("\u5F00\u59CB\u51C6\u5907\u5F00\u53D1\u73AF\u5883"),await xt(e),e.logger.info("\u5F00\u53D1\u73AF\u5883\u51C6\u5907\u5B8C\u6210")),(e.mode==="build"||e.mode==="preview")&&(e.logger.info("\u5F00\u59CB\u751F\u6210\u751F\u4EA7\u4EE3\u7801"),await Yr(e),e.logger.info("\u751F\u4EA7\u4EE3\u7801\u751F\u6210\u5B8C\u6BD5")),e.mode==="setup"&&(e.logger.info("\u5F00\u59CB\u90E8\u7F72\u6570\u636E\u5E93"),await Zr(e),e.logger.info("\u90E8\u7F72\u6570\u636E\u5E93\u5B8C\u6210")),(e.mode==="development"||e.mode==="preview"||e.mode==="production")&&(e.logger.info("\u5F00\u59CB\u542F\u52A8\u5BF9\u5916\u670D\u52A1"),await Wr(e),e.logger.info("\u5BF9\u5916\u670D\u52A1\u542F\u52A8\u5B8C\u6210"))};import{Command as li}from"commander";import ui from"fs-extra";var Xr=(t,e)=>{console.log(`
|
|
497
497
|
========================================================
|
|
498
498
|
=
|
|
499
499
|
= === = Sumor App Framework v${e}
|
|
@@ -501,7 +501,7 @@ function show(){
|
|
|
501
501
|
= === = More Information: https://www.sumor.com
|
|
502
502
|
=
|
|
503
503
|
========================================================
|
|
504
|
-
`)};import U from"fs-extra";import
|
|
504
|
+
`)};import U from"fs-extra";import oo from"node:path";var qr=(t,e)=>{let r={name:t.name,type:"module",bin:t.bin,main:"./index.umd.cjs",module:"./index.es.js",exports:{".":{import:"./index.es.js",require:"./index.umd.cjs"}},dependencies:t.dependencies};return e&&(r.main="./index.es.js",delete r.exports["."].require),r};import Bs from"fs-extra";import{build as Hs,defineConfig as Gs}from"vite";import Js from"@vitejs/plugin-vue";import Qr from"node:path";var nt=t=>t&&(t=t.replace(/\//g,"-"),t=t.replace(/@/g,""),t=t.replace(/(\w)/,e=>e.toUpperCase()),t.replace(/-(\w)/g,(e,r)=>r?r.toUpperCase():""));var eo=async t=>{let e={},r=Object.keys(t.pkg.dependencies||{});for(let i=0;i<r.length;i+=1)e[r[i]]=nt(r[i]);let o=nt(t.pkg.name)||"MyLib",s={mode:t.mode,root:process.cwd(),base:"/",plugins:[],build:{emptyOutDir:!1,sourcemap:t.mode==="development"?"inline":!1,outDir:t.output,lib:{entry:t.entry,name:o},rollupOptions:{external:r,output:{globals:e}}}};s.build.lib.fileName=i=>`index.${i}.js`,s.plugins.push(Js()),await Hs(Gs(s)),await Bs.move(Qr.join(t.output,"./index.umd.js"),Qr.join(t.output,"./index.umd.cjs"))};import*as to from"esbuild";var ro=async t=>{let e=Object.keys(t.pkg.dependencies||{});await to.build({format:"esm",entryPoints:[t.entry],minify:t.mode==="production",keepNames:t.mode==="development",bundle:!0,platform:"node",outfile:`${t.output}/index.es.js`,external:e,sourcemap:t.mode==="development"?"inline":!1})};var me=async t=>{let e=t.root||process.cwd(),r=t.entry||oo.resolve(e,"./src/index.js"),o=t.mode||"production",s=t.output||oo.resolve(e,"./output",`./${o}`),i=!!t.node;await U.remove(s),await U.ensureDir(s),await U.exists(`${e}/static`)&&await U.copy(`${e}/static`,s);let n=await U.readJson(`${e}/package.json`);i?await ro({mode:o,entry:r,output:s,pkg:n}):await eo({mode:o,entry:r,output:s,pkg:n});let m=await qr(n,i);return await U.ensureFile(`${s}/package.json`),await U.writeFile(`${s}/package.json`,JSON.stringify(m,null,4)),{name:n.name}};var so=async t=>{let e=!!t.debug,r=t.type||"app",o=e?"development":"production";switch(r){case"vue":await me({mode:o});break;case"node":await me({mode:o,node:!0});break;default:await N({mode:"build"});break}};import io from"yaml";import Q from"fs-extra";var A=async(t,e)=>{t=t||process.cwd();let r=`${t}/${e}.yml`,o;try{if(await Q.exists(r)){let n=await Q.readFile(r,"utf-8");o=io.parse(n)}let s=`${t}/${e}.yaml`;if(!o&&await Q.exists(s)){let n=await Q.readFile(s,"utf-8");o=io.parse(n)}let i=`${t}/${e}.json`;if(!o&&await Q.exists(i)){let n=await Q.readFile(i,"utf-8");o=JSON.parse(n)}}catch{console.log(`\u914D\u7F6E\u6587\u4EF6${e}\u89E3\u6790\u5931\u8D25`)}return o||{}};import Ws from"yaml";import le from"fs-extra";var at=async(t,e,r)=>{let o=await A(t,e);await le.remove(`${t}/${e}.yml`),await le.remove(`${t}/${e}.yaml`),await le.remove(`${t}/${e}.json`),r==="yml"||r==="yaml"?await le.writeFile(`${t}/${e}.yml`,Ws.stringify(o)):r==="json"&&await le.writeFile(`${t}/${e}.json`,JSON.stringify(o,null,4))};import To from"fs-extra";import Ae from"fs-extra";var no=t=>{let e=t.split("/"),r=e.pop(),o=e.join("/");return{name:r,folder:o}};import{exec as Ks}from"child_process";var v=async(t,e,r)=>await new Promise((o,s)=>{let i=Ks(t,e),n="",m="",a=c=>(c=c.toString().replace(/\r\n/g,`
|
|
505
505
|
`).replace(/\r/g,`
|
|
506
506
|
`),c);i.stdout.on("data",async c=>{c=a(c),n+=c,r&&r(c)}),i.stderr.on("data",async c=>{c=a(c),n+=c,m+=c,r&&r(c)}),i.on("close",async c=>{c!==0?s(m):o(n)})});var Re=async t=>{let e=await v("git branch -vva",{cwd:t}),r=[],o=e.split(`
|
|
507
507
|
`);for(let s in o){let i=o[s].split(" ").filter(n=>n!=="");if(i.length>=3){let n={};i[0]==="*"&&(n.current=!0,i.shift()),n.name=i.shift(),n.commit=i.shift(),n.name.indexOf("remotes/origin")>=0&&(n.remote=!0,n.origin=n.name,n.name=n.origin.replace("remotes/origin/","")),r.push(n)}}return r};var x=async(t,e)=>await v(`git ${e}`,{cwd:t});var Vs=async t=>{await Ae.writeFile(`${t}/.gitignore`,`# IDE configuration
|
|
@@ -514,9 +514,9 @@ dist
|
|
|
514
514
|
tmp
|
|
515
515
|
|
|
516
516
|
# system
|
|
517
|
-
.DS_Store`),await Ae.writeFile(`${t}/README.md`,"")},Le=async(t,e)=>{if(!await Ae.exists(t)){let{name:s,folder:i}=
|
|
518
|
-
`),s=[];for(let i of o){let n=i.split("|"),m=[],a="";if(n[3]){let c=n[3].split(",");for(let l of c)l.indexOf("tag")>=0&&m.push(l.replace("tag:","").trim())}n[4]&&(a=n[4]),s.push({id:n[0],authorDate:new Date(n[1]),committerDate:new Date(n[2]),tags:m,subject:a})}return s};var Pe=t=>Math.round(new Date(t).getTime()),
|
|
519
|
-
`),s=i.indexOf(o)>=0}catch{}return s},async remove(e){await t.exec(`rm -rf ${e}`)},async delete(e){await t.exec(`rm -rf ${e}`)},async putFolder(e,r){let o=await b.tmp("sumor-utils-ssh"),s=`${o}/tmp.zip`,i=await this.tmp("sumor-utils-ssh"),n=`${i}/tmp.zip`;await b.zip(e,s),await this.putFile(s,n),await this.ensureDir(r),await this.unzip(n,r),await this.delete(i),await b.delete(o)},async getFolder(e,r){let o=await b.tmp("sumor-utils-ssh"),s=`${o}/tmp.zip`,i=await this.tmp("sumor-utils-ssh"),n=`${i}/tmp.zip`;await this.zip(e,n),await this.getFile(n,s),await b.unzip(s,r),await this.delete(i),await b.delete(o)},async putFile(e,r){return await t.connect(),await t.connection.putFile(e,r)},async writeFile(e,r){let o=await b.tmp("sumor-utils-ssh"),s=`${o}/tmpfile`;await b.ensureFile(s),await b.writeFile(s,r),await this.putFile(s,e),await b.delete(o)},async readFile(e,r){let o=await b.tmp("sumor-utils-ssh"),s=`${o}/tmpfile`;await this.getFile(e,s);let i=await b.readFile(s,r);return await b.delete(o),i},async getFile(e,r){return await t.connect(),await t.connection.getFile(r,e)},async zip(e,r){await t.install("zip"),await t.exec(`cd ${e};zip -q -r ${r} ./*`)},async unzip(e,r){await t.install("unzip"),await t.exec(`unzip -o ${e} -d ${r}`)},async info(e){if(await this.exists(e)){let o=(await t.exec(`stat ${e} -c "%X|%Y|%Z"`)).split("|"),s={};return o[0]&&(s.access=parseInt(o[0],10)),o[1]&&(s.modify=parseInt(o[1],10)),o[2]&&(s.change=parseInt(o[2],10)),s}}});var
|
|
517
|
+
.DS_Store`),await Ae.writeFile(`${t}/README.md`,"")},Le=async(t,e)=>{if(!await Ae.exists(t)){let{name:s,folder:i}=no(t);await Ae.ensureDir(i),await v(`git clone ${e} ${s}`,{cwd:i})}await v("git config user.name builder",{cwd:t}),await v("git config user.email builder@dummy.com",{cwd:t}),(await Re(t)).filter(s=>s.name==="1.0")[0]?(await x(t,"checkout 1.0"),await x(t,"pull")):(await x(t,"checkout --orphan 1.0"),await x(t,"reset --hard"),await Vs(t),await x(t,"add . -f"),await x(t,'commit -m "\u521D\u59CB\u5316"'),await x(t,"push -f origin 1.0"))};var ao=async(t,e)=>{let o=(await x(t,`log ${e} --pretty=format:"%H|%ad|%cd|%D|%s" --date=iso-strict-local`)).split(`
|
|
518
|
+
`),s=[];for(let i of o){let n=i.split("|"),m=[],a="";if(n[3]){let c=n[3].split(",");for(let l of c)l.indexOf("tag")>=0&&m.push(l.replace("tag:","").trim())}n[4]&&(a=n[4]),s.push({id:n[0],authorDate:new Date(n[1]),committerDate:new Date(n[2]),tags:m,subject:a})}return s};var Pe=t=>Math.round(new Date(t).getTime()),co=async t=>{await x(t,"fetch");let e=await Re(t),r=/^\d+\.\d+?$/,o=/^\d+\.\d+\.\d+?$/,s={};for(let i of e)if(i.remote&&r.test(i.name)){await x(t,"reset --hard HEAD"),await x(t,`checkout ${i.origin}`);let n=await ao(t,i.origin);n=n.reverse();let m=0;for(let a of n){let c=!0;for(let l of a.tags)if(o.test(l)){let u=parseInt(l.split(`${i.name}.`)[1],10);isNaN(u)||(s[l]={id:a.id,name:l,authorDate:Pe(a.authorDate),committerDate:Pe(a.committerDate),beta:!1},u>=m&&(m=u+1),c=!1)}c&&(s[`${i.name}.${m}`]={id:a.id,name:`${i.name}.${m}`,authorDate:Pe(a.authorDate),committerDate:Pe(a.committerDate),beta:!0})}}return s};var mo=async(t,{url:e,username:r,password:o})=>{if(e.indexOf("http")===0){let s=e.split("/"),i=`${s[0]}//${r}:${o}@${s[2]}/${s.slice(3,s.length).join("/")}`,n=`${process.cwd()}/tmp/version/${t}`;return await Le(n,i),await co(n)}};import Ys from"node-ssh";var ue=class{constructor(e){this.config=e}async connect(){if(!this.connection){this.connection=new Ys;try{await this.connection.connect(this.config)}catch{throw new Error("\u670D\u52A1\u5668SSH\u8FDE\u63A5\u5931\u8D25")}}}async disconnect(){this.connection&&(this.connection.dispose(),delete this.connection)}async exec(e,r){await this.connect(),r=r||{},r.cwd=r.cwd||"~";let o=await this.connection.execCommand(e,r);if(o.code===0||o.code===1)return o.stdout;throw new Error(o.stderr)}async install(e){let r=!0;try{await this.exec(`dpkg -s ${e}`)}catch{r=!1}if(!r)try{await this.connection.exec("apt-get update"),await this.connection.exec(`apt-get install ${e} -y`)}catch(o){throw new Error(`\u670D\u52A1\u5668\u8F6F\u4EF6\u5B89\u88C5\u5931\u8D25:${o.message}`)}}async uninstall(e){let r=!0;try{await this.exec(`dpkg -s ${e}`)}catch{r=!1}if(r)try{await this.exec(`apt-get --purge remove ${e} -y`)}catch(o){throw new Error(`\u670D\u52A1\u5668\u8F6F\u4EF6\u5378\u8F7D\u5931\u8D25:${o.message}`)}}addTool(e,r){this[e]=r(this)}};import _ from"fs-extra";import Xs from"archiver";import qs from"extract-zip";import ct from"path";import{glob as Qs}from"glob";import ei from"os";import ti from"axios";import Zs from"uuid";var Fe=()=>Zs.v4().replace(/-/g,"");var mt=class{normalize(e){let r=ct.normalize(e);return r=r.replace(/\\/g,"/"),r}async tmp(e){e=e||"sumor-utils";let r=this.normalize(`${ei.tmpdir()}/${e}/${Fe()}`);return await this.ensureDir(r),r}async download(e,r){await this.ensureFile(r);let o=_.createWriteStream(r);return(await ti({source:e,method:"GET",responseType:"stream"})).data.pipe(o),await new Promise((i,n)=>{o.on("finish",i),o.on("error",n)})}async find(e,r){r=r||{};let o=await Qs(e,r);return o=o.map(s=>(s=ct.normalize(s),s=s.replace(/\\/g,"/"),s)),o}async zip(e,r,o){return await new Promise((s,i)=>{let n=_.createWriteStream(r),m=Xs("zip",{zlib:{level:9}});n.on("close",()=>{s()}),m.pipe(n),m.glob("**",{cwd:e,dot:!0,ignore:o||[]}),m.finalize()})}async unzip(e,r){return e=ct.normalize(e),await new Promise((o,s)=>{qs(e,{dir:r},i=>{i?s(i):o()})})}async exists(e){return await new Promise(r=>{_.access(e,o=>{r(!o)})})}async isDirectory(e){return(await this.info(e)).isDirectory()}async info(e){return await new Promise((r,o)=>{_.open(e,"a",(s,i)=>{s&&o(s),_.fstat(i,(n,m)=>{n&&o(n),_.close(i,()=>{r(m)})})})})}async move(e,r){await _.move(e,r)}async remove(e){await _.remove(e)}async ensureFile(e){await _.ensureFile(e)}async ensureDir(e){await _.ensureDir(e)}async copy(e,r,o){await _.copy(e,r,o)}async writeFile(e,r){return await this.ensureFile(e),await new Promise((o,s)=>{_.writeFile(e,r,i=>{i?s(i):o()})})}async appendFile(e,r){return await this.ensureFile(e),await new Promise((o,s)=>{_.appendFile(e,r,i=>{i?s(i):o()})})}async readFile(e,r){if(await this.exists(e))return await new Promise(o=>{_.readFile(e,r,(s,i)=>{if(s)throw s;o(i)})})}async readJson(e){return await this.exists(e)?await _.readJson(e):null}async writeJson(e,r){return await this.ensureFile(e),await _.writeJson(e,r)}},C=new mt;C.exist=C.exists;C.readJSON=C.readJson;C.writeJSON=C.writeJson;C.delete=C.remove;var b=C;var lo=t=>({async tmp(e){e=e||"sumor-utils";let r=b.normalize(`/tmp/${e}/${Fe()}`);return await this.ensureDir(r),r},async ensureDir(e){await t.exec(`mkdir -p ${e}`)},async exists(e){e=b.normalize(e);let r=e.split("/"),o=r.pop();e=r.join("/");let s=!1;try{let i=await t.exec(`ls ${e}`);i=i.split(`
|
|
519
|
+
`),s=i.indexOf(o)>=0}catch{}return s},async remove(e){await t.exec(`rm -rf ${e}`)},async delete(e){await t.exec(`rm -rf ${e}`)},async putFolder(e,r){let o=await b.tmp("sumor-utils-ssh"),s=`${o}/tmp.zip`,i=await this.tmp("sumor-utils-ssh"),n=`${i}/tmp.zip`;await b.zip(e,s),await this.putFile(s,n),await this.ensureDir(r),await this.unzip(n,r),await this.delete(i),await b.delete(o)},async getFolder(e,r){let o=await b.tmp("sumor-utils-ssh"),s=`${o}/tmp.zip`,i=await this.tmp("sumor-utils-ssh"),n=`${i}/tmp.zip`;await this.zip(e,n),await this.getFile(n,s),await b.unzip(s,r),await this.delete(i),await b.delete(o)},async putFile(e,r){return await t.connect(),await t.connection.putFile(e,r)},async writeFile(e,r){let o=await b.tmp("sumor-utils-ssh"),s=`${o}/tmpfile`;await b.ensureFile(s),await b.writeFile(s,r),await this.putFile(s,e),await b.delete(o)},async readFile(e,r){let o=await b.tmp("sumor-utils-ssh"),s=`${o}/tmpfile`;await this.getFile(e,s);let i=await b.readFile(s,r);return await b.delete(o),i},async getFile(e,r){return await t.connect(),await t.connection.getFile(r,e)},async zip(e,r){await t.install("zip"),await t.exec(`cd ${e};zip -q -r ${r} ./*`)},async unzip(e,r){await t.install("unzip"),await t.exec(`unzip -o ${e} -d ${r}`)},async info(e){if(await this.exists(e)){let o=(await t.exec(`stat ${e} -c "%X|%Y|%Z"`)).split("|"),s={};return o[0]&&(s.access=parseInt(o[0],10)),o[1]&&(s.modify=parseInt(o[1],10)),o[2]&&(s.change=parseInt(o[2],10)),s}}});var uo=t=>({async isOccupied(e){let r=!0;try{await t.exec(`lsof -i:${e}`)===""&&(r=!1)}catch(o){console.log(o)}return r},async getPort(e){if(e?e++:e=1,e>10)throw new Error("\u670D\u52A1\u5668\u7AEF\u53E3\u83B7\u53D6\u5931\u8D25");let r=3e4+Math.floor(Math.random()*1e4);return await this.isOccupied(r)?await this.getPort(e):r}});var fo=t=>({async execCommand(e,r){return await t.install("docker.io"),await t.exec(e,r)},async remove(e){try{await this.execCommand(`docker rm -f ${e}`)}catch(r){if(r.message.indexOf("No such container")<0)throw r}},async delete(e){try{await this.execCommand(`docker rm -f ${e}`)}catch(r){if(r.message.indexOf("No such container")<0)throw r}},async run({mode:e,image:r,name:o,folder:s,port:i}){s=s||[],i=i||[];let n=["docker","run"];n.push("-itd");for(let m in s)n.push(`-v ${s[m].from}:${s[m].to}${s[m].readOnly?":ro":""}`);for(let m in i)n.push(`-p ${i[m].from}:${i[m].to}`);return o&&n.push(`--name ${o}`),r&&n.push(`-d ${r}`),e!==""&&n.push(e||"/bin/bash"),await this.execCommand(n.join(" "))},async exec(e,r,o){o=o||{},r=JSON.stringify(r);let s="";return o.interaction?s="-it":o.background&&(s="-itd"),await this.execCommand(`docker exec ${s} ${e} sh -c ${r}`,{options:{pty:!0}})},async export(e,r){await this.execCommand(`docker export ${e} > ${r}`)},async ip(e){return await this.execCommand(`docker inspect --format='{{.NetworkSettings.Gateway}}' ${e}`)},async import({path:e,name:r,version:o}){let s=`${r}:${o}`;if(!(await this.images()).filter(m=>m.Repository===r&&m.Tag===o)[0])await this.execCommand(`cat ${e} | docker import - ${s}`);else throw new Error(`\u955C\u50CF\u5DF2\u5B58\u5728\uFF0C\u5982\u9700\u5220\u9664\u8BF7\u624B\u5DE5\u6267\u884C\u547D\u4EE4\uFF1Adocker rmi ${s}`)},async images(){return await this._checkInfo("docker images",["Repository","Tag","Size"])},async deleteImage(e,r){await this.execCommand(`docker image rmi -f ${e}:${r}`)},async build(e,r,o){await this.execCommand(`docker build -t ${e}:${r} .`,{cwd:o})},async buildNode(e,r,o){let s=`FROM node:18.15.0
|
|
520
520
|
|
|
521
521
|
# \u521B\u5EFA/usr/runtime\u76EE\u5F55
|
|
522
522
|
RUN mkdir -p /usr/runtime
|
|
@@ -537,7 +537,7 @@ phantomjs_cdnurl=https://registry.npmmirror.com/mirrors/phantomjs/
|
|
|
537
537
|
sentrycli_cdnurl=https://registry.npmmirror.com/mirrors/sentry-cli/
|
|
538
538
|
sqlite3_binary_site=https://registry.npmmirror.com/mirrors/sqlite3/
|
|
539
539
|
python_mirror=https://registry.npmmirror.com/mirrors/python/`;await t.file.writeFile(`${n}/.npmrc`,a)}await t.file.writeFile(`${i}/Dockerfile`,s);let m=await this.execCommand(`docker build -t ${e}:${r} .`,{cwd:i});console.log(m),await t.file.remove(i)},async instances(){let e=await this._checkInfo("docker ps -a",["Names","CreatedAt","Status","Ports","Size"]);for(let r in e){e[r].instanceId=e[r].Names;let o=e[r].CreatedAt.split(" ");o.pop(),e[r].createdTime=new Date(o.join(" "))}return e},async instance(e){return(await this.instances()).filter(o=>o.instanceId===e)[0]},async _checkInfo(e,r){let o=[];for(let n in r)o.push(`{{.${r[n]}}}`);let s=await this.execCommand(`${e} --format "${o.join("|")}"`),i=[];if(s!==""){let n=s.split(`
|
|
540
|
-
`);for(let m in n){let a=n[m].split("|"),c={};for(let l=0;l<r.length;l++)c[r[l]]=a[l];i.push(c)}}return i}});var k=async(t,e)=>{let r;try{let o=await t.exec(e);r=parseFloat(o,10)}catch(o){console.log(o)}return r},
|
|
540
|
+
`);for(let m in n){let a=n[m].split("|"),c={};for(let l=0;l<r.length;l++)c[r[l]]=a[l];i.push(c)}}return i}});var k=async(t,e)=>{let r;try{let o=await t.exec(e);r=parseFloat(o,10)}catch(o){console.log(o)}return r},po=t=>({async system(){let e=await k(t,"cat /proc/uptime | awk '{print $1}'");return e=Date.now()-parseInt(e*1e3,10),{disk:{total:await k(t,"df -m --output=size / | awk 'NR==2{print $1}'"),used:await k(t,"df -m --output=used / | awk 'NR==2{print $1}'"),free:await k(t,"df -m --output=avail / | awk 'NR==2{print $1}'")},memory:{total:await k(t,"free -m | awk 'NR==2{print $2}'"),used:await k(t,"free -m | awk 'NR==2{print $3}'"),free:await k(t,"free -m | awk 'NR==2{print $4}'"),cache:await k(t,"free -m | awk 'NR==2{print $6}'")},cpu:{usage:await k(t,`top -b -n 1 | grep "Cpu(s)" | awk '{print $2 + $4}'`),cores:await k(t,'cat /proc/cpuinfo | grep "processor" | wc -l')},uptime:e}}});import ri from"path";var go=t=>({async install(e){await t.exec(`npm i -g ${e}`)},async start(e,r){try{await t.install("nodejs"),await t.install("npm")}catch(s){console.log(s)}let o=!0;try{await t.exec("pm2 -v")}catch{o=!1}o||await t.node.install("pm2"),await t.exec("npm i",{cwd:ri.dirname(r)});try{await t.exec(`pm2 start ${r} --name ${e}`)}catch{await t.exec(`pm2 restart ${e}`)}},async stop(e){await t.exec(`pm2 stop ${e}`),await t.exec(`pm2 delete ${e}`)},async logs(e){return await t.exec(`pm2 logs --nostream --lines 1000 ${e}`)}});var S=t=>{let e=new ue(t);return e.addTool("file",lo),e.addTool("port",uo),e.addTool("docker",fo),e.addTool("node",go),e.addTool("monitor",po),e};var wo=async t=>{let e={};for(let r in t.server){let o=S(t.server[r]),s=await o.docker.instances();s=s.filter(i=>i.instanceId.indexOf("sumor_app")===0),e[r]=s.map(i=>i.instanceId),await o.disconnect()}return e};import L from"fs-extra";var ho=async(t,e)=>{await x(t,"clean -df"),await x(t,`checkout ${e}`)};var yo=async({server:t,app:e,env:r,git:o,version:s,domain:i})=>{let n=S(t);if(!await(async()=>!!(await n.docker.images()).find(y=>y.Repository===e&&y.Tag===s.name))()){console.log("\u5F00\u59CB\u6784\u5EFA\u4EE3\u7801");let g=o.url.split("/"),h=`${g[0]}//${o.username}:${o.password}@${g[2]}/${g.slice(3,g.length).join("/")}`,y=`${process.cwd()}/tmp/build/${e}/${s.name}`;if(!await L.exists(y)){console.log(`\u6B63\u5728\u6784\u5EFA\u6E90\u4EE3\u7801\u5230${y}`),await L.ensureDir(`${process.cwd()}/tmp/build`);try{await Le(y,h),await ho(y,s.id),await v("npm i",{cwd:y}),await v("npm run build",{cwd:y}),await L.remove(`${y}/web`),await L.remove(`${y}/node_modules`),await L.remove(`${y}/tmp`)}catch(O){console.log(O)}}console.log("\u4EE3\u7801\u6784\u5EFA\u5B8C\u6210"),console.log(`\u6B63\u5728\u6784\u5EFA\u7248\u672C${s.name}\u955C\u50CF`),await n.docker.buildNode(e,s.name,y),console.log("\u6784\u5EFA\u7248\u672C\u955C\u50CF\u5B8C\u6210")}console.log("\u90E8\u7F72\u5BB9\u5668\u5B9E\u4F8B");let c=`${process.cwd()}/tmp/env/${e}/${r}`;console.log(`\u6B63\u5728\u914D\u7F6E\u73AF\u5883\u76F8\u5173\u4EE3\u7801\u5230${c}`);let l=`${process.cwd()}/assets/${e}/${r}`;await L.exists(l)&&await L.copy(l,c);let u=await n.port.getPort(),f={app:e,env:r,version:s.name,server:t.name,port:u,upTime:Date.now(),versionTime:s.committerDate},w=`/usr/sumor-cloud/env/${e}_${r}`;await n.file.putFolder(c,w),await L.remove(c);let d=`/usr/sumor-cloud/instance/${e}_${r}/${Date.now()}.json`;await n.file.writeFile(d,JSON.stringify(f,null,4));let p=`sumor_app_${e}_${r}_${s.name}_${u}`;return console.log(`\u6B63\u5728\u90E8\u7F72\u5B9E\u4F8B\u5230\u5BB9\u5668${p}`),await n.docker.execCommand(`docker run -itd --restart=on-failure -v ${d}:/usr/source/instance.json:ro -v ${w}:/usr/source/config:ro -v /usr/sumor-cloud/ssl/${i}:/usr/source/ssl:ro -p ${u}:443 --name ${p} -d ${e}:${s.name}`),await n.disconnect(),p};var $o=t=>{let e=t.split("_");e.shift();let r=e.shift(),o=e.shift(),s=e.shift(),i,n,m;e.length>1?(n=e.shift(),i=parseInt(e.shift())):m=e.shift();let a={type:r,app:o,env:s,port:i,version:n,action:m};for(let c in a)a[c]||delete a[c];return a};var je=t=>{let e=typeof t;if(t===null)e="null";else if(e==="object"){let r=Object.prototype.toString.call(t);r==="[object Array]"?e="array":r==="[object RegExp]"&&(e="regexp")}return e};var P=(t,e)=>(je(e)==="array"&&(e=e.join(" ")),`${t} ${e};`);var ee=t=>{let e=[];for(let r in t)e.push(P(r,t[r]));return e};var te=t=>{let e=[];for(let r in t)if(je(t[r])==="array")for(let o in t[r])e.push(t[r][o]);else e.push(t[r]);return e};var T=(t,e)=>(e=te(e),te([`${t} {`,e.map(r=>` ${r}`),"}"]));var xo=()=>T("server",["listen 80 default_server;","server_name _;","return 301 https://$host$request_uri;"]);var _o=(t,e)=>T(`upstream ${t}_stream`,e.map(r=>{let o=["server"];return o.push(r.url),r.down?o.push("down"):r.backup?o.push("backup"):(r.weight&&!isNaN(r.weight)&&o.push(`weight=${r.weight}`),r.try&&!isNaN(r.try)&&(o.push(`max_fails=${r.try}`),r.wait&&!isNaN(r.wait)&&o.push(`fail_timeout=${r.wait}s`))),`${o.join(" ")};`}));var bo=t=>{let e;return t.instances.length>0?e=ee({"proxy_set_header Host":"$host","proxy_set_header X-Real-IP":"$remote_addr","proxy_set_header X-Forwarded-For":"$remote_addr",proxy_pass:`https://${t.name}_stream`}):e=ee({root:"/etc/nginx/pages",index:"no_instance.html"}),T("server",[ee({listen:`${t.port} ssl`,server_name:t.domain,access_log:`/tmp/${t.name}_access.log`,error_log:`/tmp/${t.name}_error.log`,ssl_certificate:`ssl/${t.domain}/domain.cer`,ssl_certificate_key:`ssl/${t.domain}/domain.key`,ssl_client_certificate:`ssl/${t.domain}/ca.cer`,ssl_session_timeout:"5m",ssl_ciphers:"ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4",ssl_protocols:"TLSv1 TLSv1.1 TLSv1.2",ssl_prefer_server_ciphers:"on"}),T("location /",[e])])};var So=(t,e)=>{e=e||{},e.user=e.user||"root";let r=[];for(let o of t)o.port=o.port||443,o.instances.length>0&&r.push(_o(o.name,o.instances)),r.push(bo(o));return te([ee({user:e.user,worker_processes:1}),T("events",["worker_connections 1024;"]),T("http",[P("proxy_connect_timeout","600s"),P("proxy_send_timeout","600s"),P("proxy_read_timeout","600s"),P("server_tokens","off"),P("client_max_body_size","10m"),xo(),te(r)])]).join(`
|
|
541
541
|
`)};var oi=`<html>
|
|
542
542
|
<head>
|
|
543
543
|
<head>
|
|
@@ -548,31 +548,31 @@ python_mirror=https://registry.npmmirror.com/mirrors/python/`;await t.file.write
|
|
|
548
548
|
</head>
|
|
549
549
|
<body>
|
|
550
550
|
<h1>\u5E94\u7528\u6682\u65F6\u65E0\u6CD5\u8BBF\u95EE</h1><h3>\u5B9E\u4F8B\u672A\u4E0A\u7EBF</h3></body>
|
|
551
|
-
</html>`,
|
|
551
|
+
</html>`,vo=()=>({noInstancePage:oi});var fe=async(t,e,r,o)=>{let s={};for(let i in t.env)for(let n in t.env[i]){let{domain:m,entry:a}=t.env[i][n];s[a]=s[a]||{},s[a][m]=[];let l=(e[i]||{})[n]||{},u;for(let f in l)(l[f]||{}).live&&(u=f);for(let f in r){let w=t.server[f],d=r[f].map(p=>$o(p)).filter(p=>p.app===n&&p.env===i&&p.version===u);for(let p of d)s[a][m].push(`${w.iHost||w.host}:${p.port}`)}}for(let i in s){let n=[443,80],m=[];for(let p in s[i]){let g={name:p.replace(".","_"),port:443,domain:p,instances:s[i][p].map(h=>({url:h}))};m.push(g)}let a=So(m),c=S(t.server[i]),l="/usr/sumor-cloud/site";await c.file.ensureDir(l),await c.file.ensureDir(`${l}/pages`),await c.file.writeFile(`${l}/nginx.conf`,a);let{noInstancePage:u}=vo();await c.file.writeFile(`${l}/pages/no_instance.html`,u);let f="sumor_site";if(o&&await c.docker.delete(f),!(await c.docker.instances()).filter(p=>p.instanceId===f)[0]){let p="/usr/sumor-cloud/ssl";await c.file.ensureDir(p),console.log("\u6B63\u5728\u7AD9\u70B9\u5B9E\u4F8B\u521D\u59CB\u5316"),await c.docker.run({image:"nginx",name:f,folder:[{from:`${l}/nginx.conf`,to:"/etc/nginx/nginx.conf"},{from:`${l}/pages`,to:"/etc/nginx/pages"},{from:p,to:"/etc/nginx/ssl"},{from:"/tmp/sumor-cloud/site",to:"/tmp"},{from:"/tmp/sumor-cloud/site-nginx",to:"/var/log/nginx"}],port:n.map(g=>({from:g,to:g}))})}await c.docker.exec(f,"nginx -s stop"),await c.docker.exec(f,"nginx -c /etc/nginx/nginx.conf"),await c.disconnect()}};var lt=async(t,e)=>{let r=S(t);await r.docker.delete(e),await r.disconnect()};var Eo=async(t,e,r)=>{let o=S(t);await o.file.putFolder(r,`/usr/sumor-cloud/ssl/${e}`),await o.disconnect()};var si=t=>{let e=new Date(t),r=e.getFullYear(),o=`0${e.getMonth()+1}`.slice(-2),s=`0${e.getDate()}`.slice(-2),i=`0${e.getHours()}`.slice(-2),n=`0${e.getMinutes()}`.slice(-2),m=`0${e.getSeconds()}`.slice(-2);return`${r}-${o}-${s} ${i}:${n}:${m}`},Me=t=>t<1024?`${t}MB`:(t/=1024,t<1024?`${t.toFixed(2)}GB`:(t/=1024,t<1024?`${t.toFixed(2)}TB`:(t/=1024,`${t.toFixed(2)}PB`))),ko=async t=>{let e=S(t),r=await e.monitor.system();return await e.disconnect(),`- CPU\uFF1A${r.cpu.cores}\u6838\uFF0C\u5DF2\u5360\u7528${r.cpu.usage}%
|
|
552
552
|
- \u5185\u5B58\uFF1A\u5171${Me(r.memory.total)}\uFF0C\u5269\u4F59${Me(r.memory.free+r.memory.cache)}
|
|
553
553
|
- \u786C\u76D8\uFF1A\u5171${Me(r.disk.total)}\uFF0C\u5269\u4F59${Me(r.disk.free)}
|
|
554
|
-
- \u542F\u52A8\u65F6\u95F4\uFF1A${si(r.uptime)}`};var
|
|
554
|
+
- \u542F\u52A8\u65F6\u95F4\uFF1A${si(r.uptime)}`};var Oo=async(t,e)=>{try{let r=Date.now();console.log("\u6B63\u5728\u542F\u52A8\u90E8\u7F72");for(let m in t.server)t.server[m].name=m;console.log(`
|
|
555
555
|
|
|
556
556
|
==================== \u66F4\u65B0\u8BC1\u4E66 ====================
|
|
557
|
-
`);for(let m in t.env)for(let a in t.env[m]){let{domain:c,entry:l}=t.env[m][a],u=`${process.cwd()}/assets/ssl/${c}`;u&&t.server[l]&&(console.log(`\u66F4\u65B0${c}\u57DF\u540D\u8BC1\u4E66\u5230${l}\u670D\u52A1\u5668`),await
|
|
557
|
+
`);for(let m in t.env)for(let a in t.env[m]){let{domain:c,entry:l}=t.env[m][a],u=`${process.cwd()}/assets/ssl/${c}`;u&&t.server[l]&&(console.log(`\u66F4\u65B0${c}\u57DF\u540D\u8BC1\u4E66\u5230${l}\u670D\u52A1\u5668`),await Eo(t.server[l],c,u))}console.log(`
|
|
558
558
|
|
|
559
559
|
==================== \u68C0\u67E5\u5E94\u7528\u7248\u672C ====================
|
|
560
|
-
`);let o={};for(let m in t.source){console.log(`\u5E94\u7528${m}\u6B63\u5728\u68C0\u67E5\u5E94\u7528\u7248\u672C`),o[m]=await
|
|
560
|
+
`);let o={};for(let m in t.source){console.log(`\u5E94\u7528${m}\u6B63\u5728\u68C0\u67E5\u5E94\u7528\u7248\u672C`),o[m]=await mo(m,t.source[m]),console.log("\u5E94\u7528\u7248\u672C\u5217\u8868");for(let a in o[m])console.log(`- ${a}${o[m][a].beta?" \u6D4B\u8BD5\u7248":""}`);console.log(`\u5E94\u7528${m}\u68C0\u67E5\u5E94\u7528\u7248\u672C\u5B8C\u6210`)}console.log(`
|
|
561
561
|
|
|
562
562
|
==================== \u83B7\u53D6\u670D\u52A1\u5668\u8FD0\u884C\u72B6\u6001 ====================
|
|
563
|
-
`);for(let m in t.server){let a=await
|
|
563
|
+
`);for(let m in t.server){let a=await ko(t.server[m]);console.log(`\u670D\u52A1\u5668${m}\u8FD0\u884C\u72B6\u6001`),console.log(a)}console.log(`
|
|
564
564
|
|
|
565
565
|
==================== \u83B7\u53D6\u670D\u52A1\u5668\u5B9E\u4F8B\u72B6\u6001 ====================
|
|
566
|
-
`);let s=await
|
|
566
|
+
`);let s=await wo(t);for(let m in s){console.log(`\u670D\u52A1\u5668${m}\u73B0\u5B58\u5B9E\u4F8B\u5217\u8868`);for(let a in s[m])console.log(`- ${s[m][a]}`)}console.log(`
|
|
567
567
|
|
|
568
568
|
==================== \u90E8\u7F72\u5E94\u7528 ====================
|
|
569
|
-
`);let i={},n={};await
|
|
569
|
+
`);let i={},n={};await To.remove(`${process.cwd()}/tmp/env`);for(let m in t.env){let a=t.env[m];for(let c in a){let{domain:l}=a[c],f=(e[m]||{})[c]||{},w;for(let p in f)(f[p]||{}).live&&(w=p);let d=Object.keys(f);for(let p in t.server){let g=s[p].filter(h=>{let O=h.split("_")[4];return h.indexOf(`sumor_app_${c}_${m}`)===0&&d.indexOf(O)<0});if(g.length>0){console.log(`\u6B63\u5728\u6E05\u9664${m}\u73AF\u5883\u5E94\u7528${c}\u5728\u670D\u52A1\u5668${p}\u4E2D\u7684\u8FC7\u671F\u5B9E\u4F8B`),s[p]=s[p].filter(h=>g.indexOf(h)<0),await fe(t,e,s);for(let h of g)console.log(`\u6E05\u9664\u5B9E\u4F8B${h}`),await lt(t.server[p],h)}}console.log(`\u6B63\u5728\u90E8\u7F72${m}\u73AF\u5883\u5E94\u7528${c}\uFF0C\u4E0A\u7EBF\u7248\u672C\uFF1A${w||"\u65E0"}`);for(let p in f){let g=f[p]||{};for(let h in g.instance){let y=g.instance[h];console.log(`\u8BA1\u5212\u90E8\u7F72${p}\u7248\u672C${y}\u4E2A\u5B9E\u4F8B\u5230${h}\u670D\u52A1\u5668`);let O=s[h].filter(I=>I.indexOf(`sumor_app_${c}_${m}_${p}`)===0),F=O.length;if(F<y){let I=y-F;console.log(`\u5F53\u524D\u5B9E\u4F8B\u4E2A\u6570\uFF1A${F}\uFF0C\u9700\u8981\u6269\u5BB9${I}\u4E2A`);for(let z=0;z<I;z++){console.log(`\u6B63\u5728\u6269\u5BB9\u7B2C${z+1}\u4E2A`);let D=o[c][p];if(D.beta&&!i[`${c}|${p}`]){let de=`${process.cwd()}/tmp/build/${c}/${D.name}`;await To.remove(de),i[`${c}|${p}`]=!0}if(D.beta&&!n[`${c}|${p}|${h}`]){let de=S(t.server[h]);await de.docker.deleteImage(c,p),await de.disconnect(),n[`${c}|${p}|${h}`]=!0}let Mo=await yo({server:t.server[h],app:c,env:m,git:t.source[c],version:D,domain:l});s[h].unshift(Mo),await fe(t,e,s)}console.log(`\u6269\u5BB9${I}\u4E2A\u5B8C\u6210`)}else if(F>y){let I=F-y;console.log(`\u5F53\u524D\u5B9E\u4F8B\u4E2A\u6570\uFF1A${F}\uFF0C\u9700\u8981\u7F29\u51CF${I}\u4E2A`);let z=O.slice(y,F);s[h]=s[h].filter(D=>z.indexOf(D)<0),await fe(t,e,s);for(let D of z)await lt(t.server[h],D);console.log(`\u7F29\u51CF${I}\u4E2A\u5B8C\u6210`)}else console.log("\u5B9E\u4F8B\u6570\u91CF\u5DF2\u7B26\u5408\u8BA1\u5212\uFF0C\u65E0\u9700\u4FEE\u6539")}}console.log(`\u90E8\u7F72${m}\u73AF\u5883\u5E94\u7528${c}\u5B8C\u6210`)}}console.log(`
|
|
570
570
|
|
|
571
571
|
==================== \u5B9E\u4F8B\u60C5\u51B5 ====================
|
|
572
|
-
`),console.log(s),await
|
|
572
|
+
`),console.log(s),await fe(t,e,s),console.log(`\u6240\u6709\u5E94\u7528\u5DF2\u5B8C\u6210\u90E8\u7F72 ${Date.now()-r}ms`)}catch(r){console.log(r)}};var No=async t=>{t=t||{},t.root=t.root||process.cwd();let e=await A(t.root,"scope");t.type&&await at(t.root,"scope",t.type);let r=await A(t.root,"scale");t.type&&await at(t.root,"scale",t.type),await Oo(e,r)};import Co from"fs-extra";import ii from"inquirer";var Ue=async({value:t,message:e,choices:r})=>t!==void 0?t:(await ii.prompt({name:"value",type:"list",message:e,choices:r})).value;var Io=async(t,e,r)=>{r=r||{},r.root=r.root||process.cwd();let o=await A(r.root,"scope"),s=await A(r.root,"scale");console.log(`\u6B63\u5728\u6253\u5370${t}\u5E94\u7528${e}\u73AF\u5883\u7684\u65E5\u5FD7`);try{e=await Ue({message:"\u8BF7\u9009\u62E9\u8981\u67E5\u770B\u7684\u73AF\u5883",choices:Object.keys(s).map(c=>({name:c,value:c}))}),t=await Ue({message:"\u8BF7\u9009\u62E9\u8981\u67E5\u770B\u7684\u5E94\u7528",choices:Object.keys(s[e]).map(c=>({name:c,value:c}))});let i=s[e][t],n=[];for(let c in i){let l=i[c].live;n.push({name:`${c} ${l?" (live)":""}`,value:c})}let m=await Ue({message:"\u8BF7\u9009\u62E9\u8981\u67E5\u770B\u7684\u7248\u672C",choices:n}),a=i[m].instance;for(let c in a){console.log(`\u6B63\u5728\u6253\u5370${c}\u670D\u52A1\u5668\u4E0A\u7684\u65E5\u5FD7`);let l=S(o.server[c]);try{let u=await l.docker.instances();u=u.filter(f=>f.instanceId.indexOf(`sumor_app_${t}_${e}_${m}`)===0),u=u.map(f=>f.instanceId);for(let f of u){console.log(`\u6B63\u5728\u6253\u5370\u5B9E\u4F8B${f}\u7684\u65E5\u5FD7`),await l.file.ensureDir("/tmp/sumor-logs");let w=`docker cp ${f}:/usr/source/tmp/main.log /tmp/sumor-logs/${f}.log`;await l.exec(w);let d=await l.exec(`cat /tmp/sumor-logs/${f}.log`),p=`${r.root}/tmp/logs/${t}/${e}/${f}.log`;await Co.ensureFile(p),await Co.writeFile(p,d);let g=await l.exec(`docker logs ${f}`);console.log(g)}}catch(u){console.log(u)}await l.disconnect()}}catch{console.error(`\u73AF\u5883${e}\u4E2D\u4E0D\u5B58\u5728\u5E94\u7528${t}`)}};import ze from"fs-extra";import{execSync as mi}from"child_process";import ni from"axios";var Do=async({registry:t,username:e,password:r})=>{if(!e||!r)throw new Error("\u83B7\u53D6\u6388\u6743\u5931\u8D25\uFF0CNPM\u767B\u5F55\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A");let o=`${t}/-/user/org.couchdb.user:${e}`;try{return(await ni.put(o,{name:e,password:r})).data.token}catch{throw new Error("\u83B7\u53D6\u6388\u6743\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5NPM\u767B\u9646\u4FE1\u606F")}};var Ro=({registry:t,auth:e,token:r})=>{let o="";return o+=`registry=${t}
|
|
573
573
|
`,e&&(o+=`${t.replace("http:","")}/:_auth=${e}
|
|
574
574
|
`,o+=`${t.replace("http:","")}/:email=registry@sumor.com
|
|
575
575
|
`),r&&(o+=`${t.replace("http:","")}/:_authToken="${r}"
|
|
576
|
-
`),o};import
|
|
576
|
+
`),o};import Ao from"fs-extra";import ci from"path";import{exec as ai}from"child_process";var pe=(t,e,r)=>new Promise((o,s)=>{let i=ai(t,e),n="",m="",a=c=>(c=c.toString().replace(/\r\n/g,`
|
|
577
577
|
`).replace(/\r/g,`
|
|
578
|
-
`),c);i.stdout.on("data",async c=>{c=a(c),n+=c,r&&r(c)}),i.stderr.on("data",async c=>{c=a(c),n+=c,m+=c,r&&r(c)}),i.on("close",async c=>{c!==0?s(m):o(n)})});var
|
|
578
|
+
`),c);i.stdout.on("data",async c=>{c=a(c),n+=c,r&&r(c)}),i.stderr.on("data",async c=>{c=a(c),n+=c,m+=c,r&&r(c)}),i.on("close",async c=>{c!==0?s(m):o(n)})});var Lo=async({registry:t,target:e,npmrc:r,force:o,tag:s})=>{s=s||"latest";let i=ci.normalize(`${e}/.npmrc`).replace(/\\/g,"/");await Ao.writeFile(i,r);let n=await Ao.readJson(`${e}/package.json`),m=`${n.name}@${n.version}`;try{await pe(`npm publish --allow-same-version --access public --tag ${s} --registry=${t} --userconfig=${i}`,{cwd:e}),console.log(`NPM\u5305${m}\u5DF2\u53D1\u5E03 ${e}`)}catch(a){let c;if(typeof a=="object"&&(c=a.message),typeof a=="string"&&(c=a),c&&c.indexOf("EPUBLISHCONFLICT")>=0)if(o){console.log(`\u4ED3\u5E93\u5DF2\u5B58\u5728\u8BE5\u7248\u672C${m}\uFF0C\u5C06\u5220\u9664\u91CD\u65B0\u53D1\u5E03`);let l=!1;try{await pe(`npm unpublish --registry=${t} --userconfig=${i} ${m}`,{cwd:e})}catch{l=!0}l||await pe(`npm publish --allow-same-version --access public --tag ${s} --registry=${t} --userconfig=${i}`,{cwd:e}),console.log(`NPM\u5305${m}\u5DF2\u53D1\u5E03 ${e}`)}else console.log("\u5DF2\u5B58\u5728\u8BE5\u7248\u672C");else console.log(a.message),console.log(a),console.log("\u53D1\u5E03\u5931\u8D25")}try{await pe(`npm dist-tag add ${m} ${s} --registry=${t} --userconfig=${i}`,{cwd:e})}catch(a){console.log(a.message),console.log(a),console.log("\u6807\u7B7E\u66F4\u65B0\u5931\u8D25")}};var Po=async({path:t,name:e,version:r,force:o,tag:s},i)=>{let{username:n,password:m,registry:a}=i;await ze.exists(`${t}/package.json`)||await ze.writeJson(`${t}/package.json`,{});let c=await ze.readJson(`${t}/package.json`);if(c.version=r||c.version,c.name=e||c.name,console.log(`\u6B63\u5728\u66F4\u65B0\u5305\u4FE1\u606F${r}`),await ze.writeJson(`${t}/package.json`,c),a){console.log("\u6B63\u5728\u83B7\u53D6NPM\u4ED3\u5E93\u6388\u6743");let l=Buffer.from(`${n}:${m}`).toString("base64"),u=await Do({registry:a,username:n,password:m}),f=Ro({registry:a,auth:l,token:u});console.log(`\u6B63\u5728\u53D1\u5E03\u7248\u672C${r}`),await Lo({registry:a,target:t,npmrc:f,force:o,tag:s})}else{let l="https://registry.npmjs.org";console.log(`\u6B63\u5728\u53D1\u5E03\u7248\u672C${r}\u5230${l}`),mi(`npm publish --tag ${s||"latest"} --registry ${l} --access public`,{cwd:t,stdio:"inherit"})}};var Fo=async({name:t,version:e,beta:r,registry:o,username:s,password:i})=>{let n={username:s,password:i,registry:o},m=`${process.cwd()}/output/production`;await Po({path:m,name:t,version:e,tag:r?"beta":void 0,force:!0},n)};var jo=async()=>{let t=new li,r=(await ui.readJson(`${he}/package.json`)).version||"0.0.0";Xr(r),t.name("sumor").version(r||"0.0.0","-v, --version"),t.command("publish <version>").description("\u53D1\u5E03\u7A0B\u5E8F\u5230NPM\u5305\u4ED3\u5E93").option("-b, --beta","\u53D1\u5E03\u6D4B\u8BD5\u7248").option("-n, --name [name]","\u53D1\u5E03\u5305\u540D\u79F0").option("-r, --registry [registry]","\u4ED3\u5E93\u5730\u5740").option("-u, --username [username]","\u7528\u6237\u540D").option("-p, --password [password]","\u5BC6\u7801").action(async(o,s)=>{await Fo({version:o,...s})}),t.command("dev").description("\u5F00\u53D1").action(async()=>{await N({mode:"dev"})}),t.command("build").description("\u6253\u5305\u4F9D\u8D56\u5E93").option("-d, --debug","\u8C03\u8BD5\u6A21\u5F0F").option("-t, --type [name]","\u6784\u5EFA\u73AF\u5883\uFF0Capp\u3001vue\u3001node").action(async o=>{await so(o)}),t.command("setup").description("\u5B89\u88C5").action(async()=>{await N({mode:"setup"})}),t.command("preview").description("\u8BD5\u8FD0\u884C").action(async()=>{await N({mode:"preview"})}),t.command("run").description("\u8FD0\u884C").action(async()=>{await N({mode:"run"})}),t.command("deploy").description("\u90E8\u7F72").option("-t, --type [type]","\u6307\u5B9A\u914D\u7F6E\u6587\u4EF6\u7C7B\u578B\uFF0C\u5982 yaml json").action(async o=>{await No(o)}),t.command("log [app] [env]").description("\u67E5\u770B\u65E5\u5FD7").action(async(o,s)=>{await Io(o,s)}),t.parse(process.argv)};var hd={app:N,pack:me,cli:jo};export{hd as default};
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"sumor","type":"module","bin":{"sumor":"cli.js","sr":"cli.js"},"main":"./index.es.js","module":"./index.es.js","exports":{".":{"import":"./index.es.js"}},"dependencies":{"@vitejs/plugin-vue":"^4.2.3","chalk":"^5.3.0","commander":"^11.0.0","esbuild":"^0.19.3","fs-extra":"^11.1.1","vite":"^4.4.9","axios":"^1.4.0","@alicloud/sms-sdk":"^1.1.6","ali-oss":"6.1.1","body-parser":"^1.20.1","compression":"^1.7.4","cookie-parser":"^1.4.6","express":"^4.18.2","knex":"^2.1.0","multer":"^1.4.2","mysql2":"^3.1.0","serve-static":"^1.14.1","spdy":"^4.0.2","uuid":"^3.3.2","glob":"^10.3.4","jsrsasign":"^10.8.6","yaml":"^2.3.2","chokidar":"^3.5.3","http-proxy-middleware":"^2.0.6","archiver":"^2.1.1","extract-zip":"^1.6.6","inquirer":"^8.2.5","node-ssh":"^6.0.0","os-utils":"0.0.14","vite-plugin-rewrite-all":"^1.0.1"},"version":"1.
|
|
1
|
+
{"name":"sumor","type":"module","bin":{"sumor":"cli.js","sr":"cli.js"},"main":"./index.es.js","module":"./index.es.js","exports":{".":{"import":"./index.es.js"}},"dependencies":{"@vitejs/plugin-vue":"^4.2.3","chalk":"^5.3.0","commander":"^11.0.0","esbuild":"^0.19.3","fs-extra":"^11.1.1","vite":"^4.4.9","axios":"^1.4.0","@alicloud/sms-sdk":"^1.1.6","ali-oss":"6.1.1","body-parser":"^1.20.1","compression":"^1.7.4","cookie-parser":"^1.4.6","express":"^4.18.2","knex":"^2.1.0","multer":"^1.4.2","mysql2":"^3.1.0","serve-static":"^1.14.1","spdy":"^4.0.2","uuid":"^3.3.2","glob":"^10.3.4","jsrsasign":"^10.8.6","yaml":"^2.3.2","chokidar":"^3.5.3","http-proxy-middleware":"^2.0.6","archiver":"^2.1.1","extract-zip":"^1.6.6","inquirer":"^8.2.5","node-ssh":"^6.0.0","os-utils":"0.0.14","vite-plugin-rewrite-all":"^1.0.1"},"version":"1.3.0"}
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&o(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function o(s){if(s.ep)return;s.ep=!0;const r=n(s);fetch(s.href,r)}})();function An(e,t){const n=Object.create(null),o=e.split(",");for(let s=0;s<o.length;s++)n[o[s]]=!0;return t?s=>!!n[s.toLowerCase()]:s=>!!n[s]}const D={},Ze=[],_e=()=>{},Fo=()=>!1,Mo=/^on[^a-z]/,$t=e=>Mo.test(e),Fn=e=>e.startsWith("onUpdate:"),X=Object.assign,Mn=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},ko=Object.prototype.hasOwnProperty,N=(e,t)=>ko.call(e,t),T=Array.isArray,Qe=e=>Wt(e)==="[object Map]",Ls=e=>Wt(e)==="[object Set]",P=e=>typeof e=="function",V=e=>typeof e=="string",kn=e=>typeof e=="symbol",K=e=>e!==null&&typeof e=="object",js=e=>K(e)&&P(e.then)&&P(e.catch),Bs=Object.prototype.toString,Wt=e=>Bs.call(e),Ro=e=>Wt(e).slice(8,-1),Us=e=>Wt(e)==="[object Object]",Rn=e=>V(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,kt=An(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),zt=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},No=/-(\w)/g,Ce=zt(e=>e.replace(No,(t,n)=>n?n.toUpperCase():"")),So=/\B([A-Z])/g,st=zt(e=>e.replace(So,"-$1").toLowerCase()),qt=zt(e=>e.charAt(0).toUpperCase()+e.slice(1)),ln=zt(e=>e?`on${qt(e)}`:""),jt=(e,t)=>!Object.is(e,t),Rt=(e,t)=>{for(let n=0;n<e.length;n++)e[n](t)},Bt=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},pn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let ts;const gn=()=>ts||(ts=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Nn(e){if(T(e)){const t={};for(let n=0;n<e.length;n++){const o=e[n],s=V(o)?Uo(o):Nn(o);if(s)for(const r in s)t[r]=s[r]}return t}else{if(V(e))return e;if(K(e))return e}}const Lo=/;(?![^(]*\))/g,jo=/:([^]+)/,Bo=/\/\*[^]*?\*\//g;function Uo(e){const t={};return e.replace(Bo,"").split(Lo).forEach(n=>{if(n){const o=n.split(jo);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function ue(e){let t="";if(V(e))t=e;else if(T(e))for(let n=0;n<e.length;n++){const o=ue(e[n]);o&&(t+=o+" ")}else if(K(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Ho="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Do=An(Ho);function Hs(e){return!!e||e===""}const te=e=>V(e)?e:e==null?"":T(e)||K(e)&&(e.toString===Bs||!P(e.toString))?JSON.stringify(e,Ds,2):String(e),Ds=(e,t)=>t&&t.__v_isRef?Ds(e,t.value):Qe(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[o,s])=>(n[`${o} =>`]=s,n),{})}:Ls(t)?{[`Set(${t.size})`]:[...t.values()]}:K(t)&&!T(t)&&!Us(t)?String(t):t;let he;class Ko{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=he,!t&&he&&(this.index=(he.scopes||(he.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=he;try{return he=this,t()}finally{he=n}}}on(){he=this}off(){he=this.parent}stop(t){if(this._active){let n,o;for(n=0,o=this.effects.length;n<o;n++)this.effects[n].stop();for(n=0,o=this.cleanups.length;n<o;n++)this.cleanups[n]();if(this.scopes)for(n=0,o=this.scopes.length;n<o;n++)this.scopes[n].stop(!0);if(!this.detached&&this.parent&&!t){const s=this.parent.scopes.pop();s&&s!==this&&(this.parent.scopes[this.index]=s,s.index=this.index)}this.parent=void 0,this._active=!1}}}function $o(e,t=he){t&&t.active&&t.effects.push(e)}function Wo(){return he}const Sn=e=>{const t=new Set(e);return t.w=0,t.n=0,t},Ks=e=>(e.w&Re)>0,$s=e=>(e.n&Re)>0,zo=({deps:e})=>{if(e.length)for(let t=0;t<e.length;t++)e[t].w|=Re},qo=e=>{const{deps:t}=e;if(t.length){let n=0;for(let o=0;o<t.length;o++){const s=t[o];Ks(s)&&!$s(s)?s.delete(e):t[n++]=s,s.w&=~Re,s.n&=~Re}t.length=n}},_n=new WeakMap;let ut=0,Re=1;const mn=30;let pe;const We=Symbol(""),bn=Symbol("");class Ln{constructor(t,n=null,o){this.fn=t,this.scheduler=n,this.active=!0,this.deps=[],this.parent=void 0,$o(this,o)}run(){if(!this.active)return this.fn();let t=pe,n=Me;for(;t;){if(t===this)return;t=t.parent}try{return this.parent=pe,pe=this,Me=!0,Re=1<<++ut,ut<=mn?zo(this):ns(this),this.fn()}finally{ut<=mn&&qo(this),Re=1<<--ut,pe=this.parent,Me=n,this.parent=void 0,this.deferStop&&this.stop()}}stop(){pe===this?this.deferStop=!0:this.active&&(ns(this),this.onStop&&this.onStop(),this.active=!1)}}function ns(e){const{deps:t}=e;if(t.length){for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}}let Me=!0;const Ws=[];function ot(){Ws.push(Me),Me=!1}function rt(){const e=Ws.pop();Me=e===void 0?!0:e}function ce(e,t,n){if(Me&&pe){let o=_n.get(e);o||_n.set(e,o=new Map);let s=o.get(n);s||o.set(n,s=Sn()),zs(s)}}function zs(e,t){let n=!1;ut<=mn?$s(e)||(e.n|=Re,n=!Ks(e)):n=!e.has(pe),n&&(e.add(pe),pe.deps.push(e))}function Te(e,t,n,o,s,r){const i=_n.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&T(e)){const f=Number(o);i.forEach((a,_)=>{(_==="length"||_>=f)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":T(e)?Rn(n)&&l.push(i.get("length")):(l.push(i.get(We)),Qe(e)&&l.push(i.get(bn)));break;case"delete":T(e)||(l.push(i.get(We)),Qe(e)&&l.push(i.get(bn)));break;case"set":Qe(e)&&l.push(i.get(We));break}if(l.length===1)l[0]&&xn(l[0]);else{const f=[];for(const a of l)a&&f.push(...a);xn(Sn(f))}}function xn(e,t){const n=T(e)?e:[...e];for(const o of n)o.computed&&ss(o);for(const o of n)o.computed||ss(o)}function ss(e,t){(e!==pe||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const Vo=An("__proto__,__v_isRef,__isVue"),qs=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(kn)),Jo=jn(),Yo=jn(!1,!0),Xo=jn(!0),os=Zo();function Zo(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const o=L(this);for(let r=0,i=this.length;r<i;r++)ce(o,"get",r+"");const s=o[t](...n);return s===-1||s===!1?o[t](...n.map(L)):s}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...n){ot();const o=L(this)[t].apply(this,n);return rt(),o}}),e}function Qo(e){const t=L(this);return ce(t,"has",e),t.hasOwnProperty(e)}function jn(e=!1,t=!1){return function(o,s,r){if(s==="__v_isReactive")return!e;if(s==="__v_isReadonly")return e;if(s==="__v_isShallow")return t;if(s==="__v_raw"&&r===(e?t?pr:Zs:t?Xs:Ys).get(o))return o;const i=T(o);if(!e){if(i&&N(os,s))return Reflect.get(os,s,r);if(s==="hasOwnProperty")return Qo}const l=Reflect.get(o,s,r);return(kn(s)?qs.has(s):Vo(s))||(e||ce(o,"get",s),t)?l:ie(l)?i&&Rn(s)?l:l.value:K(l)?e?Qs(l):Jt(l):l}}const Go=Vs(),er=Vs(!0);function Vs(e=!1){return function(n,o,s,r){let i=n[o];if(gt(i)&&ie(i)&&!ie(s))return!1;if(!e&&(!yn(s)&&!gt(s)&&(i=L(i),s=L(s)),!T(n)&&ie(i)&&!ie(s)))return i.value=s,!0;const l=T(n)&&Rn(o)?Number(o)<n.length:N(n,o),f=Reflect.set(n,o,s,r);return n===L(r)&&(l?jt(s,i)&&Te(n,"set",o,s):Te(n,"add",o,s)),f}}function tr(e,t){const n=N(e,t);e[t];const o=Reflect.deleteProperty(e,t);return o&&n&&Te(e,"delete",t,void 0),o}function nr(e,t){const n=Reflect.has(e,t);return(!kn(t)||!qs.has(t))&&ce(e,"has",t),n}function sr(e){return ce(e,"iterate",T(e)?"length":We),Reflect.ownKeys(e)}const Js={get:Jo,set:Go,deleteProperty:tr,has:nr,ownKeys:sr},or={get:Xo,set(e,t){return!0},deleteProperty(e,t){return!0}},rr=X({},Js,{get:Yo,set:er}),Bn=e=>e,Vt=e=>Reflect.getPrototypeOf(e);function Tt(e,t,n=!1,o=!1){e=e.__v_raw;const s=L(e),r=L(t);n||(t!==r&&ce(s,"get",t),ce(s,"get",r));const{has:i}=Vt(s),l=o?Bn:n?Kn:Dn;if(i.call(s,t))return l(e.get(t));if(i.call(s,r))return l(e.get(r));e!==s&&e.get(t)}function It(e,t=!1){const n=this.__v_raw,o=L(n),s=L(e);return t||(e!==s&&ce(o,"has",e),ce(o,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Pt(e,t=!1){return e=e.__v_raw,!t&&ce(L(e),"iterate",We),Reflect.get(e,"size",e)}function rs(e){e=L(e);const t=L(this);return Vt(t).has.call(t,e)||(t.add(e),Te(t,"add",e,e)),this}function is(e,t){t=L(t);const n=L(this),{has:o,get:s}=Vt(n);let r=o.call(n,e);r||(e=L(e),r=o.call(n,e));const i=s.call(n,e);return n.set(e,t),r?jt(t,i)&&Te(n,"set",e,t):Te(n,"add",e,t),this}function ls(e){const t=L(this),{has:n,get:o}=Vt(t);let s=n.call(t,e);s||(e=L(e),s=n.call(t,e)),o&&o.call(t,e);const r=t.delete(e);return s&&Te(t,"delete",e,void 0),r}function cs(){const e=L(this),t=e.size!==0,n=e.clear();return t&&Te(e,"clear",void 0,void 0),n}function At(e,t){return function(o,s){const r=this,i=r.__v_raw,l=L(i),f=t?Bn:e?Kn:Dn;return!e&&ce(l,"iterate",We),i.forEach((a,_)=>o.call(s,f(a),f(_),r))}}function Ft(e,t,n){return function(...o){const s=this.__v_raw,r=L(s),i=Qe(r),l=e==="entries"||e===Symbol.iterator&&i,f=e==="keys"&&i,a=s[e](...o),_=n?Bn:t?Kn:Dn;return!t&&ce(r,"iterate",f?bn:We),{next(){const{value:v,done:C}=a.next();return C?{value:v,done:C}:{value:l?[_(v[0]),_(v[1])]:_(v),done:C}},[Symbol.iterator](){return this}}}}function Ae(e){return function(...t){return e==="delete"?!1:this}}function ir(){const e={get(r){return Tt(this,r)},get size(){return Pt(this)},has:It,add:rs,set:is,delete:ls,clear:cs,forEach:At(!1,!1)},t={get(r){return Tt(this,r,!1,!0)},get size(){return Pt(this)},has:It,add:rs,set:is,delete:ls,clear:cs,forEach:At(!1,!0)},n={get(r){return Tt(this,r,!0)},get size(){return Pt(this,!0)},has(r){return It.call(this,r,!0)},add:Ae("add"),set:Ae("set"),delete:Ae("delete"),clear:Ae("clear"),forEach:At(!0,!1)},o={get(r){return Tt(this,r,!0,!0)},get size(){return Pt(this,!0)},has(r){return It.call(this,r,!0)},add:Ae("add"),set:Ae("set"),delete:Ae("delete"),clear:Ae("clear"),forEach:At(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(r=>{e[r]=Ft(r,!1,!1),n[r]=Ft(r,!0,!1),t[r]=Ft(r,!1,!0),o[r]=Ft(r,!0,!0)}),[e,n,t,o]}const[lr,cr,fr,ur]=ir();function Un(e,t){const n=t?e?ur:fr:e?cr:lr;return(o,s,r)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?o:Reflect.get(N(n,s)&&s in o?n:o,s,r)}const ar={get:Un(!1,!1)},dr={get:Un(!1,!0)},hr={get:Un(!0,!1)},Ys=new WeakMap,Xs=new WeakMap,Zs=new WeakMap,pr=new WeakMap;function gr(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function _r(e){return e.__v_skip||!Object.isExtensible(e)?0:gr(Ro(e))}function Jt(e){return gt(e)?e:Hn(e,!1,Js,ar,Ys)}function mr(e){return Hn(e,!1,rr,dr,Xs)}function Qs(e){return Hn(e,!0,or,hr,Zs)}function Hn(e,t,n,o,s){if(!K(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=s.get(e);if(r)return r;const i=_r(e);if(i===0)return e;const l=new Proxy(e,i===2?o:n);return s.set(e,l),l}function Ge(e){return gt(e)?Ge(e.__v_raw):!!(e&&e.__v_isReactive)}function gt(e){return!!(e&&e.__v_isReadonly)}function yn(e){return!!(e&&e.__v_isShallow)}function Gs(e){return Ge(e)||gt(e)}function L(e){const t=e&&e.__v_raw;return t?L(t):e}function eo(e){return Bt(e,"__v_skip",!0),e}const Dn=e=>K(e)?Jt(e):e,Kn=e=>K(e)?Qs(e):e;function br(e){Me&&pe&&(e=L(e),zs(e.dep||(e.dep=Sn())))}function xr(e,t){e=L(e);const n=e.dep;n&&xn(n)}function ie(e){return!!(e&&e.__v_isRef===!0)}function yr(e){return ie(e)?e.value:e}const vr={get:(e,t,n)=>yr(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const s=e[t];return ie(s)&&!ie(n)?(s.value=n,!0):Reflect.set(e,t,n,o)}};function to(e){return Ge(e)?e:new Proxy(e,vr)}class wr{constructor(t,n,o,s){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new Ln(t,()=>{this._dirty||(this._dirty=!0,xr(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=o}get value(){const t=L(this);return br(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function Cr(e,t,n=!1){let o,s;const r=P(e);return r?(o=e,s=_e):(o=e.get,s=e.set),new wr(o,s,r||!s,n)}function ke(e,t,n,o){let s;try{s=o?e(...o):e()}catch(r){Yt(r,t,n)}return s}function me(e,t,n,o){if(P(e)){const r=ke(e,t,n,o);return r&&js(r)&&r.catch(i=>{Yt(i,t,n)}),r}const s=[];for(let r=0;r<e.length;r++)s.push(me(e[r],t,n,o));return s}function Yt(e,t,n,o=!0){const s=t?t.vnode:null;if(t){let r=t.parent;const i=t.proxy,l=n;for(;r;){const a=r.ec;if(a){for(let _=0;_<a.length;_++)if(a[_](e,i,l)===!1)return}r=r.parent}const f=t.appContext.config.errorHandler;if(f){ke(f,null,10,[e,i,l]);return}}Er(e,n,s,o)}function Er(e,t,n,o=!0){console.error(e)}let _t=!1,vn=!1;const ne=[];let we=0;const et=[];let Oe=null,He=0;const no=Promise.resolve();let $n=null;function Or(e){const t=$n||no;return e?t.then(this?e.bind(this):e):t}function Tr(e){let t=we+1,n=ne.length;for(;t<n;){const o=t+n>>>1;mt(ne[o])<e?t=o+1:n=o}return t}function Wn(e){(!ne.length||!ne.includes(e,_t&&e.allowRecurse?we+1:we))&&(e.id==null?ne.push(e):ne.splice(Tr(e.id),0,e),so())}function so(){!_t&&!vn&&(vn=!0,$n=no.then(ro))}function Ir(e){const t=ne.indexOf(e);t>we&&ne.splice(t,1)}function Pr(e){T(e)?et.push(...e):(!Oe||!Oe.includes(e,e.allowRecurse?He+1:He))&&et.push(e),so()}function fs(e,t=_t?we+1:0){for(;t<ne.length;t++){const n=ne[t];n&&n.pre&&(ne.splice(t,1),t--,n())}}function oo(e){if(et.length){const t=[...new Set(et)];if(et.length=0,Oe){Oe.push(...t);return}for(Oe=t,Oe.sort((n,o)=>mt(n)-mt(o)),He=0;He<Oe.length;He++)Oe[He]();Oe=null,He=0}}const mt=e=>e.id==null?1/0:e.id,Ar=(e,t)=>{const n=mt(e)-mt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function ro(e){vn=!1,_t=!0,ne.sort(Ar);const t=_e;try{for(we=0;we<ne.length;we++){const n=ne[we];n&&n.active!==!1&&ke(n,null,14)}}finally{we=0,ne.length=0,oo(),_t=!1,$n=null,(ne.length||et.length)&&ro()}}function Fr(e,t,...n){if(e.isUnmounted)return;const o=e.vnode.props||D;let s=n;const r=t.startsWith("update:"),i=r&&t.slice(7);if(i&&i in o){const _=`${i==="modelValue"?"model":i}Modifiers`,{number:v,trim:C}=o[_]||D;C&&(s=n.map(A=>V(A)?A.trim():A)),v&&(s=n.map(pn))}let l,f=o[l=ln(t)]||o[l=ln(Ce(t))];!f&&r&&(f=o[l=ln(st(t))]),f&&me(f,e,6,s);const a=o[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,me(a,e,6,s)}}function io(e,t,n=!1){const o=t.emitsCache,s=o.get(e);if(s!==void 0)return s;const r=e.emits;let i={},l=!1;if(!P(e)){const f=a=>{const _=io(a,t,!0);_&&(l=!0,X(i,_))};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!r&&!l?(K(e)&&o.set(e,null),null):(T(r)?r.forEach(f=>i[f]=null):X(i,r),K(e)&&o.set(e,i),i)}function Xt(e,t){return!e||!$t(t)?!1:(t=t.slice(2).replace(/Once$/,""),N(e,t[0].toLowerCase()+t.slice(1))||N(e,st(t))||N(e,t))}let ae=null,lo=null;function Ut(e){const t=ae;return ae=e,lo=e&&e.type.__scopeId||null,t}function Mr(e,t=ae,n){if(!t||e._n)return e;const o=(...s)=>{o._d&&vs(-1);const r=Ut(t);let i;try{i=e(...s)}finally{Ut(r),o._d&&vs(1)}return i};return o._n=!0,o._c=!0,o._d=!0,o}function cn(e){const{type:t,vnode:n,proxy:o,withProxy:s,props:r,propsOptions:[i],slots:l,attrs:f,emit:a,render:_,renderCache:v,data:C,setupState:A,ctx:W,inheritAttrs:R}=e;let J,Z;const Q=Ut(e);try{if(n.shapeFlag&4){const M=s||o;J=ve(_.call(M,M,v,r,A,C,W)),Z=f}else{const M=t;J=ve(M.length>1?M(r,{attrs:f,slots:l,emit:a}):M(r,null)),Z=t.props?f:kr(f)}}catch(M){pt.length=0,Yt(M,e,1),J=q(qe)}let G=J;if(Z&&R!==!1){const M=Object.keys(Z),{shapeFlag:Pe}=G;M.length&&Pe&7&&(i&&M.some(Fn)&&(Z=Rr(Z,i)),G=tt(G,Z))}return n.dirs&&(G=tt(G),G.dirs=G.dirs?G.dirs.concat(n.dirs):n.dirs),n.transition&&(G.transition=n.transition),J=G,Ut(Q),J}const kr=e=>{let t;for(const n in e)(n==="class"||n==="style"||$t(n))&&((t||(t={}))[n]=e[n]);return t},Rr=(e,t)=>{const n={};for(const o in e)(!Fn(o)||!(o.slice(9)in t))&&(n[o]=e[o]);return n};function Nr(e,t,n){const{props:o,children:s,component:r}=e,{props:i,children:l,patchFlag:f}=t,a=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&f>=0){if(f&1024)return!0;if(f&16)return o?us(o,i,a):!!i;if(f&8){const _=t.dynamicProps;for(let v=0;v<_.length;v++){const C=_[v];if(i[C]!==o[C]&&!Xt(a,C))return!0}}}else return(s||l)&&(!l||!l.$stable)?!0:o===i?!1:o?i?us(o,i,a):!0:!!i;return!1}function us(e,t,n){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let s=0;s<o.length;s++){const r=o[s];if(t[r]!==e[r]&&!Xt(n,r))return!0}return!1}function Sr({vnode:e,parent:t},n){for(;t&&t.subTree===e;)(e=t.vnode).el=n,t=t.parent}const Lr=e=>e.__isSuspense;function jr(e,t){t&&t.pendingBranch?T(e)?t.effects.push(...e):t.effects.push(e):Pr(e)}const Mt={};function fn(e,t,n){return co(e,t,n)}function co(e,t,{immediate:n,deep:o,flush:s,onTrack:r,onTrigger:i}=D){var l;const f=Wo()===((l=Y)==null?void 0:l.scope)?Y:null;let a,_=!1,v=!1;if(ie(e)?(a=()=>e.value,_=yn(e)):Ge(e)?(a=()=>e,o=!0):T(e)?(v=!0,_=e.some(M=>Ge(M)||yn(M)),a=()=>e.map(M=>{if(ie(M))return M.value;if(Ge(M))return Ke(M);if(P(M))return ke(M,f,2)})):P(e)?t?a=()=>ke(e,f,2):a=()=>{if(!(f&&f.isUnmounted))return C&&C(),me(e,f,3,[A])}:a=_e,t&&o){const M=a;a=()=>Ke(M())}let C,A=M=>{C=Q.onStop=()=>{ke(M,f,4)}},W;if(xt)if(A=_e,t?n&&me(t,f,3,[a(),v?[]:void 0,A]):a(),s==="sync"){const M=Ri();W=M.__watcherHandles||(M.__watcherHandles=[])}else return _e;let R=v?new Array(e.length).fill(Mt):Mt;const J=()=>{if(Q.active)if(t){const M=Q.run();(o||_||(v?M.some((Pe,it)=>jt(Pe,R[it])):jt(M,R)))&&(C&&C(),me(t,f,3,[M,R===Mt?void 0:v&&R[0]===Mt?[]:R,A]),R=M)}else Q.run()};J.allowRecurse=!!t;let Z;s==="sync"?Z=J:s==="post"?Z=()=>le(J,f&&f.suspense):(J.pre=!0,f&&(J.id=f.uid),Z=()=>Wn(J));const Q=new Ln(a,Z);t?n?J():R=Q.run():s==="post"?le(Q.run.bind(Q),f&&f.suspense):Q.run();const G=()=>{Q.stop(),f&&f.scope&&Mn(f.scope.effects,Q)};return W&&W.push(G),G}function Br(e,t,n){const o=this.proxy,s=V(e)?e.includes(".")?fo(o,e):()=>o[e]:e.bind(o,o);let r;P(t)?r=t:(r=t.handler,n=t);const i=Y;nt(this);const l=co(s,r.bind(o),n);return i?nt(i):ze(),l}function fo(e,t){const n=t.split(".");return()=>{let o=e;for(let s=0;s<n.length&&o;s++)o=o[n[s]];return o}}function Ke(e,t){if(!K(e)||e.__v_skip||(t=t||new Set,t.has(e)))return e;if(t.add(e),ie(e))Ke(e.value,t);else if(T(e))for(let n=0;n<e.length;n++)Ke(e[n],t);else if(Ls(e)||Qe(e))e.forEach(n=>{Ke(n,t)});else if(Us(e))for(const n in e)Ke(e[n],t);return e}function as(e,t){const n=ae;if(n===null)return e;const o=en(n)||n.proxy,s=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[i,l,f,a=D]=t[r];i&&(P(i)&&(i={mounted:i,updated:i}),i.deep&&Ke(l),s.push({dir:i,instance:o,value:l,oldValue:void 0,arg:f,modifiers:a}))}return e}function Be(e,t,n,o){const s=e.dirs,r=t&&t.dirs;for(let i=0;i<s.length;i++){const l=s[i];r&&(l.oldValue=r[i].value);let f=l.dir[o];f&&(ot(),me(f,n,8,[e.el,l,e,t]),rt())}}const Nt=e=>!!e.type.__asyncLoader,uo=e=>e.type.__isKeepAlive;function Ur(e,t){ao(e,"a",t)}function Hr(e,t){ao(e,"da",t)}function ao(e,t,n=Y){const o=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Zt(t,o,n),n){let s=n.parent;for(;s&&s.parent;)uo(s.parent.vnode)&&Dr(o,t,n,s),s=s.parent}}function Dr(e,t,n,o){const s=Zt(t,e,o,!0);ho(()=>{Mn(o[t],s)},n)}function Zt(e,t,n=Y,o=!1){if(n){const s=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;ot(),nt(n);const l=me(t,n,e,i);return ze(),rt(),l});return o?s.unshift(r):s.push(r),r}}const Ie=e=>(t,n=Y)=>(!xt||e==="sp")&&Zt(e,(...o)=>t(...o),n),Kr=Ie("bm"),$r=Ie("m"),Wr=Ie("bu"),zr=Ie("u"),qr=Ie("bum"),ho=Ie("um"),Vr=Ie("sp"),Jr=Ie("rtg"),Yr=Ie("rtc");function Xr(e,t=Y){Zt("ec",e,t)}const po="components";function $e(e,t){return Qr(po,e,!0,t)||e}const Zr=Symbol.for("v-ndc");function Qr(e,t,n=!0,o=!1){const s=ae||Y;if(s){const r=s.type;if(e===po){const l=Ai(r,!1);if(l&&(l===t||l===Ce(t)||l===qt(Ce(t))))return r}const i=ds(s[e]||r[e],t)||ds(s.appContext[e],t);return!i&&o?r:i}}function ds(e,t){return e&&(e[t]||e[Ce(t)]||e[qt(Ce(t))])}function wn(e,t,n,o){let s;const r=n&&n[o];if(T(e)||V(e)){s=new Array(e.length);for(let i=0,l=e.length;i<l;i++)s[i]=t(e[i],i,void 0,r&&r[i])}else if(typeof e=="number"){s=new Array(e);for(let i=0;i<e;i++)s[i]=t(i+1,i,void 0,r&&r[i])}else if(K(e))if(e[Symbol.iterator])s=Array.from(e,(i,l)=>t(i,l,void 0,r&&r[l]));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,f=i.length;l<f;l++){const a=i[l];s[l]=t(e[a],a,l,r&&r[l])}}else s=[];return n&&(n[o]=s),s}const Cn=e=>e?Oo(e)?en(e)||e.proxy:Cn(e.parent):null,ht=X(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Cn(e.parent),$root:e=>Cn(e.root),$emit:e=>e.emit,$options:e=>zn(e),$forceUpdate:e=>e.f||(e.f=()=>Wn(e.update)),$nextTick:e=>e.n||(e.n=Or.bind(e.proxy)),$watch:e=>Br.bind(e)}),un=(e,t)=>e!==D&&!e.__isScriptSetup&&N(e,t),Gr={get({_:e},t){const{ctx:n,setupState:o,data:s,props:r,accessCache:i,type:l,appContext:f}=e;let a;if(t[0]!=="$"){const A=i[t];if(A!==void 0)switch(A){case 1:return o[t];case 2:return s[t];case 4:return n[t];case 3:return r[t]}else{if(un(o,t))return i[t]=1,o[t];if(s!==D&&N(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&N(a,t))return i[t]=3,r[t];if(n!==D&&N(n,t))return i[t]=4,n[t];En&&(i[t]=0)}}const _=ht[t];let v,C;if(_)return t==="$attrs"&&ce(e,"get",t),_(e);if((v=l.__cssModules)&&(v=v[t]))return v;if(n!==D&&N(n,t))return i[t]=4,n[t];if(C=f.config.globalProperties,N(C,t))return C[t]},set({_:e},t,n){const{data:o,setupState:s,ctx:r}=e;return un(s,t)?(s[t]=n,!0):o!==D&&N(o,t)?(o[t]=n,!0):N(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:s,propsOptions:r}},i){let l;return!!n[i]||e!==D&&N(e,i)||un(t,i)||(l=r[0])&&N(l,i)||N(o,i)||N(ht,i)||N(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:N(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function hs(e){return T(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let En=!0;function ei(e){const t=zn(e),n=e.proxy,o=e.ctx;En=!1,t.beforeCreate&&ps(t.beforeCreate,e,"bc");const{data:s,computed:r,methods:i,watch:l,provide:f,inject:a,created:_,beforeMount:v,mounted:C,beforeUpdate:A,updated:W,activated:R,deactivated:J,beforeDestroy:Z,beforeUnmount:Q,destroyed:G,unmounted:M,render:Pe,renderTracked:it,renderTriggered:vt,errorCaptured:Ne,serverPrefetch:nn,expose:Se,inheritAttrs:lt,components:wt,directives:Ct,filters:sn}=t;if(a&&ti(a,o,null),i)for(const $ in i){const B=i[$];P(B)&&(o[$]=B.bind(n))}if(s){const $=s.call(n,n);K($)&&(e.data=Jt($))}if(En=!0,r)for(const $ in r){const B=r[$],Le=P(B)?B.bind(n,n):P(B.get)?B.get.bind(n,n):_e,Et=!P(B)&&P(B.set)?B.set.bind(n):_e,je=Mi({get:Le,set:Et});Object.defineProperty(o,$,{enumerable:!0,configurable:!0,get:()=>je.value,set:be=>je.value=be})}if(l)for(const $ in l)go(l[$],o,n,$);if(f){const $=P(f)?f.call(n):f;Reflect.ownKeys($).forEach(B=>{li(B,$[B])})}_&&ps(_,e,"c");function se($,B){T(B)?B.forEach(Le=>$(Le.bind(n))):B&&$(B.bind(n))}if(se(Kr,v),se($r,C),se(Wr,A),se(zr,W),se(Ur,R),se(Hr,J),se(Xr,Ne),se(Yr,it),se(Jr,vt),se(qr,Q),se(ho,M),se(Vr,nn),T(Se))if(Se.length){const $=e.exposed||(e.exposed={});Se.forEach(B=>{Object.defineProperty($,B,{get:()=>n[B],set:Le=>n[B]=Le})})}else e.exposed||(e.exposed={});Pe&&e.render===_e&&(e.render=Pe),lt!=null&&(e.inheritAttrs=lt),wt&&(e.components=wt),Ct&&(e.directives=Ct)}function ti(e,t,n=_e){T(e)&&(e=On(e));for(const o in e){const s=e[o];let r;K(s)?"default"in s?r=St(s.from||o,s.default,!0):r=St(s.from||o):r=St(s),ie(r)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>r.value,set:i=>r.value=i}):t[o]=r}}function ps(e,t,n){me(T(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,n)}function go(e,t,n,o){const s=o.includes(".")?fo(n,o):()=>n[o];if(V(e)){const r=t[e];P(r)&&fn(s,r)}else if(P(e))fn(s,e.bind(n));else if(K(e))if(T(e))e.forEach(r=>go(r,t,n,o));else{const r=P(e.handler)?e.handler.bind(n):t[e.handler];P(r)&&fn(s,r,e)}}function zn(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:s,optionsCache:r,config:{optionMergeStrategies:i}}=e.appContext,l=r.get(t);let f;return l?f=l:!s.length&&!n&&!o?f=t:(f={},s.length&&s.forEach(a=>Ht(f,a,i,!0)),Ht(f,t,i)),K(t)&&r.set(t,f),f}function Ht(e,t,n,o=!1){const{mixins:s,extends:r}=t;r&&Ht(e,r,n,!0),s&&s.forEach(i=>Ht(e,i,n,!0));for(const i in t)if(!(o&&i==="expose")){const l=ni[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const ni={data:gs,props:_s,emits:_s,methods:at,computed:at,beforeCreate:oe,created:oe,beforeMount:oe,mounted:oe,beforeUpdate:oe,updated:oe,beforeDestroy:oe,beforeUnmount:oe,destroyed:oe,unmounted:oe,activated:oe,deactivated:oe,errorCaptured:oe,serverPrefetch:oe,components:at,directives:at,watch:oi,provide:gs,inject:si};function gs(e,t){return t?e?function(){return X(P(e)?e.call(this,this):e,P(t)?t.call(this,this):t)}:t:e}function si(e,t){return at(On(e),On(t))}function On(e){if(T(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function oe(e,t){return e?[...new Set([].concat(e,t))]:t}function at(e,t){return e?X(Object.create(null),e,t):t}function _s(e,t){return e?T(e)&&T(t)?[...new Set([...e,...t])]:X(Object.create(null),hs(e),hs(t??{})):t}function oi(e,t){if(!e)return t;if(!t)return e;const n=X(Object.create(null),e);for(const o in t)n[o]=oe(e[o],t[o]);return n}function _o(){return{app:null,config:{isNativeTag:Fo,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ri=0;function ii(e,t){return function(o,s=null){P(o)||(o=X({},o)),s!=null&&!K(s)&&(s=null);const r=_o(),i=new Set;let l=!1;const f=r.app={_uid:ri++,_component:o,_props:s,_container:null,_context:r,_instance:null,version:Ni,get config(){return r.config},set config(a){},use(a,..._){return i.has(a)||(a&&P(a.install)?(i.add(a),a.install(f,..._)):P(a)&&(i.add(a),a(f,..._))),f},mixin(a){return r.mixins.includes(a)||r.mixins.push(a),f},component(a,_){return _?(r.components[a]=_,f):r.components[a]},directive(a,_){return _?(r.directives[a]=_,f):r.directives[a]},mount(a,_,v){if(!l){const C=q(o,s);return C.appContext=r,_&&t?t(C,a):e(C,a,v),l=!0,f._container=a,a.__vue_app__=f,en(C.component)||C.component.proxy}},unmount(){l&&(e(null,f._container),delete f._container.__vue_app__)},provide(a,_){return r.provides[a]=_,f},runWithContext(a){Dt=f;try{return a()}finally{Dt=null}}};return f}}let Dt=null;function li(e,t){if(Y){let n=Y.provides;const o=Y.parent&&Y.parent.provides;o===n&&(n=Y.provides=Object.create(o)),n[e]=t}}function St(e,t,n=!1){const o=Y||ae;if(o||Dt){const s=o?o.parent==null?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:Dt._context.provides;if(s&&e in s)return s[e];if(arguments.length>1)return n&&P(t)?t.call(o&&o.proxy):t}}function ci(e,t,n,o=!1){const s={},r={};Bt(r,Gt,1),e.propsDefaults=Object.create(null),mo(e,t,s,r);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=o?s:mr(s):e.type.props?e.props=s:e.props=r,e.attrs=r}function fi(e,t,n,o){const{props:s,attrs:r,vnode:{patchFlag:i}}=e,l=L(s),[f]=e.propsOptions;let a=!1;if((o||i>0)&&!(i&16)){if(i&8){const _=e.vnode.dynamicProps;for(let v=0;v<_.length;v++){let C=_[v];if(Xt(e.emitsOptions,C))continue;const A=t[C];if(f)if(N(r,C))A!==r[C]&&(r[C]=A,a=!0);else{const W=Ce(C);s[W]=Tn(f,l,W,A,e,!1)}else A!==r[C]&&(r[C]=A,a=!0)}}}else{mo(e,t,s,r)&&(a=!0);let _;for(const v in l)(!t||!N(t,v)&&((_=st(v))===v||!N(t,_)))&&(f?n&&(n[v]!==void 0||n[_]!==void 0)&&(s[v]=Tn(f,l,v,void 0,e,!0)):delete s[v]);if(r!==l)for(const v in r)(!t||!N(t,v))&&(delete r[v],a=!0)}a&&Te(e,"set","$attrs")}function mo(e,t,n,o){const[s,r]=e.propsOptions;let i=!1,l;if(t)for(let f in t){if(kt(f))continue;const a=t[f];let _;s&&N(s,_=Ce(f))?!r||!r.includes(_)?n[_]=a:(l||(l={}))[_]=a:Xt(e.emitsOptions,f)||(!(f in o)||a!==o[f])&&(o[f]=a,i=!0)}if(r){const f=L(n),a=l||D;for(let _=0;_<r.length;_++){const v=r[_];n[v]=Tn(s,f,v,a[v],e,!N(a,v))}}return i}function Tn(e,t,n,o,s,r){const i=e[n];if(i!=null){const l=N(i,"default");if(l&&o===void 0){const f=i.default;if(i.type!==Function&&!i.skipFactory&&P(f)){const{propsDefaults:a}=s;n in a?o=a[n]:(nt(s),o=a[n]=f.call(null,t),ze())}else o=f}i[0]&&(r&&!l?o=!1:i[1]&&(o===""||o===st(n))&&(o=!0))}return o}function bo(e,t,n=!1){const o=t.propsCache,s=o.get(e);if(s)return s;const r=e.props,i={},l=[];let f=!1;if(!P(e)){const _=v=>{f=!0;const[C,A]=bo(v,t,!0);X(i,C),A&&l.push(...A)};!n&&t.mixins.length&&t.mixins.forEach(_),e.extends&&_(e.extends),e.mixins&&e.mixins.forEach(_)}if(!r&&!f)return K(e)&&o.set(e,Ze),Ze;if(T(r))for(let _=0;_<r.length;_++){const v=Ce(r[_]);ms(v)&&(i[v]=D)}else if(r)for(const _ in r){const v=Ce(_);if(ms(v)){const C=r[_],A=i[v]=T(C)||P(C)?{type:C}:X({},C);if(A){const W=ys(Boolean,A.type),R=ys(String,A.type);A[0]=W>-1,A[1]=R<0||W<R,(W>-1||N(A,"default"))&&l.push(v)}}}const a=[i,l];return K(e)&&o.set(e,a),a}function ms(e){return e[0]!=="$"}function bs(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function xs(e,t){return bs(e)===bs(t)}function ys(e,t){return T(t)?t.findIndex(n=>xs(n,e)):P(t)&&xs(t,e)?0:-1}const xo=e=>e[0]==="_"||e==="$stable",qn=e=>T(e)?e.map(ve):[ve(e)],ui=(e,t,n)=>{if(t._n)return t;const o=Mr((...s)=>qn(t(...s)),n);return o._c=!1,o},yo=(e,t,n)=>{const o=e._ctx;for(const s in e){if(xo(s))continue;const r=e[s];if(P(r))t[s]=ui(s,r,o);else if(r!=null){const i=qn(r);t[s]=()=>i}}},vo=(e,t)=>{const n=qn(t);e.slots.default=()=>n},ai=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=L(t),Bt(t,"_",n)):yo(t,e.slots={})}else e.slots={},t&&vo(e,t);Bt(e.slots,Gt,1)},di=(e,t,n)=>{const{vnode:o,slots:s}=e;let r=!0,i=D;if(o.shapeFlag&32){const l=t._;l?n&&l===1?r=!1:(X(s,t),!n&&l===1&&delete s._):(r=!t.$stable,yo(t,s)),i=t}else t&&(vo(e,t),i={default:1});if(r)for(const l in s)!xo(l)&&!(l in i)&&delete s[l]};function In(e,t,n,o,s=!1){if(T(e)){e.forEach((C,A)=>In(C,t&&(T(t)?t[A]:t),n,o,s));return}if(Nt(o)&&!s)return;const r=o.shapeFlag&4?en(o.component)||o.component.proxy:o.el,i=s?null:r,{i:l,r:f}=e,a=t&&t.r,_=l.refs===D?l.refs={}:l.refs,v=l.setupState;if(a!=null&&a!==f&&(V(a)?(_[a]=null,N(v,a)&&(v[a]=null)):ie(a)&&(a.value=null)),P(f))ke(f,l,12,[i,_]);else{const C=V(f),A=ie(f);if(C||A){const W=()=>{if(e.f){const R=C?N(v,f)?v[f]:_[f]:f.value;s?T(R)&&Mn(R,r):T(R)?R.includes(r)||R.push(r):C?(_[f]=[r],N(v,f)&&(v[f]=_[f])):(f.value=[r],e.k&&(_[e.k]=f.value))}else C?(_[f]=i,N(v,f)&&(v[f]=i)):A&&(f.value=i,e.k&&(_[e.k]=i))};i?(W.id=-1,le(W,n)):W()}}}const le=jr;function hi(e){return pi(e)}function pi(e,t){const n=gn();n.__VUE__=!0;const{insert:o,remove:s,patchProp:r,createElement:i,createText:l,createComment:f,setText:a,setElementText:_,parentNode:v,nextSibling:C,setScopeId:A=_e,insertStaticContent:W}=e,R=(c,u,d,p=null,h=null,b=null,y=!1,m=null,x=!!u.dynamicChildren)=>{if(c===u)return;c&&!ft(c,u)&&(p=Ot(c),be(c,h,b,!0),c=null),u.patchFlag===-2&&(x=!1,u.dynamicChildren=null);const{type:g,ref:E,shapeFlag:w}=u;switch(g){case Qt:J(c,u,d,p);break;case qe:Z(c,u,d,p);break;case an:c==null&&Q(u,d,p,y);break;case re:wt(c,u,d,p,h,b,y,m,x);break;default:w&1?Pe(c,u,d,p,h,b,y,m,x):w&6?Ct(c,u,d,p,h,b,y,m,x):(w&64||w&128)&&g.process(c,u,d,p,h,b,y,m,x,Ve)}E!=null&&h&&In(E,c&&c.ref,b,u||c,!u)},J=(c,u,d,p)=>{if(c==null)o(u.el=l(u.children),d,p);else{const h=u.el=c.el;u.children!==c.children&&a(h,u.children)}},Z=(c,u,d,p)=>{c==null?o(u.el=f(u.children||""),d,p):u.el=c.el},Q=(c,u,d,p)=>{[c.el,c.anchor]=W(c.children,u,d,p,c.el,c.anchor)},G=({el:c,anchor:u},d,p)=>{let h;for(;c&&c!==u;)h=C(c),o(c,d,p),c=h;o(u,d,p)},M=({el:c,anchor:u})=>{let d;for(;c&&c!==u;)d=C(c),s(c),c=d;s(u)},Pe=(c,u,d,p,h,b,y,m,x)=>{y=y||u.type==="svg",c==null?it(u,d,p,h,b,y,m,x):nn(c,u,h,b,y,m,x)},it=(c,u,d,p,h,b,y,m)=>{let x,g;const{type:E,props:w,shapeFlag:O,transition:I,dirs:k}=c;if(x=c.el=i(c.type,b,w&&w.is,w),O&8?_(x,c.children):O&16&&Ne(c.children,x,null,p,h,b&&E!=="foreignObject",y,m),k&&Be(c,null,p,"created"),vt(x,c,c.scopeId,y,p),w){for(const j in w)j!=="value"&&!kt(j)&&r(x,j,null,w[j],b,c.children,p,h,Ee);"value"in w&&r(x,"value",null,w.value),(g=w.onVnodeBeforeMount)&&ye(g,p,c)}k&&Be(c,null,p,"beforeMount");const U=(!h||h&&!h.pendingBranch)&&I&&!I.persisted;U&&I.beforeEnter(x),o(x,u,d),((g=w&&w.onVnodeMounted)||U||k)&&le(()=>{g&&ye(g,p,c),U&&I.enter(x),k&&Be(c,null,p,"mounted")},h)},vt=(c,u,d,p,h)=>{if(d&&A(c,d),p)for(let b=0;b<p.length;b++)A(c,p[b]);if(h){let b=h.subTree;if(u===b){const y=h.vnode;vt(c,y,y.scopeId,y.slotScopeIds,h.parent)}}},Ne=(c,u,d,p,h,b,y,m,x=0)=>{for(let g=x;g<c.length;g++){const E=c[g]=m?Fe(c[g]):ve(c[g]);R(null,E,u,d,p,h,b,y,m)}},nn=(c,u,d,p,h,b,y)=>{const m=u.el=c.el;let{patchFlag:x,dynamicChildren:g,dirs:E}=u;x|=c.patchFlag&16;const w=c.props||D,O=u.props||D;let I;d&&Ue(d,!1),(I=O.onVnodeBeforeUpdate)&&ye(I,d,u,c),E&&Be(u,c,d,"beforeUpdate"),d&&Ue(d,!0);const k=h&&u.type!=="foreignObject";if(g?Se(c.dynamicChildren,g,m,d,p,k,b):y||B(c,u,m,null,d,p,k,b,!1),x>0){if(x&16)lt(m,u,w,O,d,p,h);else if(x&2&&w.class!==O.class&&r(m,"class",null,O.class,h),x&4&&r(m,"style",w.style,O.style,h),x&8){const U=u.dynamicProps;for(let j=0;j<U.length;j++){const z=U[j],de=w[z],Je=O[z];(Je!==de||z==="value")&&r(m,z,de,Je,h,c.children,d,p,Ee)}}x&1&&c.children!==u.children&&_(m,u.children)}else!y&&g==null&<(m,u,w,O,d,p,h);((I=O.onVnodeUpdated)||E)&&le(()=>{I&&ye(I,d,u,c),E&&Be(u,c,d,"updated")},p)},Se=(c,u,d,p,h,b,y)=>{for(let m=0;m<u.length;m++){const x=c[m],g=u[m],E=x.el&&(x.type===re||!ft(x,g)||x.shapeFlag&70)?v(x.el):d;R(x,g,E,null,p,h,b,y,!0)}},lt=(c,u,d,p,h,b,y)=>{if(d!==p){if(d!==D)for(const m in d)!kt(m)&&!(m in p)&&r(c,m,d[m],null,y,u.children,h,b,Ee);for(const m in p){if(kt(m))continue;const x=p[m],g=d[m];x!==g&&m!=="value"&&r(c,m,g,x,y,u.children,h,b,Ee)}"value"in p&&r(c,"value",d.value,p.value)}},wt=(c,u,d,p,h,b,y,m,x)=>{const g=u.el=c?c.el:l(""),E=u.anchor=c?c.anchor:l("");let{patchFlag:w,dynamicChildren:O,slotScopeIds:I}=u;I&&(m=m?m.concat(I):I),c==null?(o(g,d,p),o(E,d,p),Ne(u.children,d,E,h,b,y,m,x)):w>0&&w&64&&O&&c.dynamicChildren?(Se(c.dynamicChildren,O,d,h,b,y,m),(u.key!=null||h&&u===h.subTree)&&wo(c,u,!0)):B(c,u,d,E,h,b,y,m,x)},Ct=(c,u,d,p,h,b,y,m,x)=>{u.slotScopeIds=m,c==null?u.shapeFlag&512?h.ctx.activate(u,d,p,y,x):sn(u,d,p,h,b,y,x):Yn(c,u,x)},sn=(c,u,d,p,h,b,y)=>{const m=c.component=Ei(c,p,h);if(uo(c)&&(m.ctx.renderer=Ve),Oi(m),m.asyncDep){if(h&&h.registerDep(m,se),!c.el){const x=m.subTree=q(qe);Z(null,x,u,d)}return}se(m,c,u,d,h,b,y)},Yn=(c,u,d)=>{const p=u.component=c.component;if(Nr(c,u,d))if(p.asyncDep&&!p.asyncResolved){$(p,u,d);return}else p.next=u,Ir(p.update),p.update();else u.el=c.el,p.vnode=u},se=(c,u,d,p,h,b,y)=>{const m=()=>{if(c.isMounted){let{next:E,bu:w,u:O,parent:I,vnode:k}=c,U=E,j;Ue(c,!1),E?(E.el=k.el,$(c,E,y)):E=k,w&&Rt(w),(j=E.props&&E.props.onVnodeBeforeUpdate)&&ye(j,I,E,k),Ue(c,!0);const z=cn(c),de=c.subTree;c.subTree=z,R(de,z,v(de.el),Ot(de),c,h,b),E.el=z.el,U===null&&Sr(c,z.el),O&&le(O,h),(j=E.props&&E.props.onVnodeUpdated)&&le(()=>ye(j,I,E,k),h)}else{let E;const{el:w,props:O}=u,{bm:I,m:k,parent:U}=c,j=Nt(u);if(Ue(c,!1),I&&Rt(I),!j&&(E=O&&O.onVnodeBeforeMount)&&ye(E,U,u),Ue(c,!0),w&&rn){const z=()=>{c.subTree=cn(c),rn(w,c.subTree,c,h,null)};j?u.type.__asyncLoader().then(()=>!c.isUnmounted&&z()):z()}else{const z=c.subTree=cn(c);R(null,z,d,p,c,h,b),u.el=z.el}if(k&&le(k,h),!j&&(E=O&&O.onVnodeMounted)){const z=u;le(()=>ye(E,U,z),h)}(u.shapeFlag&256||U&&Nt(U.vnode)&&U.vnode.shapeFlag&256)&&c.a&&le(c.a,h),c.isMounted=!0,u=d=p=null}},x=c.effect=new Ln(m,()=>Wn(g),c.scope),g=c.update=()=>x.run();g.id=c.uid,Ue(c,!0),g()},$=(c,u,d)=>{u.component=c;const p=c.vnode.props;c.vnode=u,c.next=null,fi(c,u.props,p,d),di(c,u.children,d),ot(),fs(),rt()},B=(c,u,d,p,h,b,y,m,x=!1)=>{const g=c&&c.children,E=c?c.shapeFlag:0,w=u.children,{patchFlag:O,shapeFlag:I}=u;if(O>0){if(O&128){Et(g,w,d,p,h,b,y,m,x);return}else if(O&256){Le(g,w,d,p,h,b,y,m,x);return}}I&8?(E&16&&Ee(g,h,b),w!==g&&_(d,w)):E&16?I&16?Et(g,w,d,p,h,b,y,m,x):Ee(g,h,b,!0):(E&8&&_(d,""),I&16&&Ne(w,d,p,h,b,y,m,x))},Le=(c,u,d,p,h,b,y,m,x)=>{c=c||Ze,u=u||Ze;const g=c.length,E=u.length,w=Math.min(g,E);let O;for(O=0;O<w;O++){const I=u[O]=x?Fe(u[O]):ve(u[O]);R(c[O],I,d,null,h,b,y,m,x)}g>E?Ee(c,h,b,!0,!1,w):Ne(u,d,p,h,b,y,m,x,w)},Et=(c,u,d,p,h,b,y,m,x)=>{let g=0;const E=u.length;let w=c.length-1,O=E-1;for(;g<=w&&g<=O;){const I=c[g],k=u[g]=x?Fe(u[g]):ve(u[g]);if(ft(I,k))R(I,k,d,null,h,b,y,m,x);else break;g++}for(;g<=w&&g<=O;){const I=c[w],k=u[O]=x?Fe(u[O]):ve(u[O]);if(ft(I,k))R(I,k,d,null,h,b,y,m,x);else break;w--,O--}if(g>w){if(g<=O){const I=O+1,k=I<E?u[I].el:p;for(;g<=O;)R(null,u[g]=x?Fe(u[g]):ve(u[g]),d,k,h,b,y,m,x),g++}}else if(g>O)for(;g<=w;)be(c[g],h,b,!0),g++;else{const I=g,k=g,U=new Map;for(g=k;g<=O;g++){const fe=u[g]=x?Fe(u[g]):ve(u[g]);fe.key!=null&&U.set(fe.key,g)}let j,z=0;const de=O-k+1;let Je=!1,Qn=0;const ct=new Array(de);for(g=0;g<de;g++)ct[g]=0;for(g=I;g<=w;g++){const fe=c[g];if(z>=de){be(fe,h,b,!0);continue}let xe;if(fe.key!=null)xe=U.get(fe.key);else for(j=k;j<=O;j++)if(ct[j-k]===0&&ft(fe,u[j])){xe=j;break}xe===void 0?be(fe,h,b,!0):(ct[xe-k]=g+1,xe>=Qn?Qn=xe:Je=!0,R(fe,u[xe],d,null,h,b,y,m,x),z++)}const Gn=Je?gi(ct):Ze;for(j=Gn.length-1,g=de-1;g>=0;g--){const fe=k+g,xe=u[fe],es=fe+1<E?u[fe+1].el:p;ct[g]===0?R(null,xe,d,es,h,b,y,m,x):Je&&(j<0||g!==Gn[j]?je(xe,d,es,2):j--)}}},je=(c,u,d,p,h=null)=>{const{el:b,type:y,transition:m,children:x,shapeFlag:g}=c;if(g&6){je(c.component.subTree,u,d,p);return}if(g&128){c.suspense.move(u,d,p);return}if(g&64){y.move(c,u,d,Ve);return}if(y===re){o(b,u,d);for(let w=0;w<x.length;w++)je(x[w],u,d,p);o(c.anchor,u,d);return}if(y===an){G(c,u,d);return}if(p!==2&&g&1&&m)if(p===0)m.beforeEnter(b),o(b,u,d),le(()=>m.enter(b),h);else{const{leave:w,delayLeave:O,afterLeave:I}=m,k=()=>o(b,u,d),U=()=>{w(b,()=>{k(),I&&I()})};O?O(b,k,U):U()}else o(b,u,d)},be=(c,u,d,p=!1,h=!1)=>{const{type:b,props:y,ref:m,children:x,dynamicChildren:g,shapeFlag:E,patchFlag:w,dirs:O}=c;if(m!=null&&In(m,null,d,c,!0),E&256){u.ctx.deactivate(c);return}const I=E&1&&O,k=!Nt(c);let U;if(k&&(U=y&&y.onVnodeBeforeUnmount)&&ye(U,u,c),E&6)Ao(c.component,d,p);else{if(E&128){c.suspense.unmount(d,p);return}I&&Be(c,null,u,"beforeUnmount"),E&64?c.type.remove(c,u,d,h,Ve,p):g&&(b!==re||w>0&&w&64)?Ee(g,u,d,!1,!0):(b===re&&w&384||!h&&E&16)&&Ee(x,u,d),p&&Xn(c)}(k&&(U=y&&y.onVnodeUnmounted)||I)&&le(()=>{U&&ye(U,u,c),I&&Be(c,null,u,"unmounted")},d)},Xn=c=>{const{type:u,el:d,anchor:p,transition:h}=c;if(u===re){Po(d,p);return}if(u===an){M(c);return}const b=()=>{s(d),h&&!h.persisted&&h.afterLeave&&h.afterLeave()};if(c.shapeFlag&1&&h&&!h.persisted){const{leave:y,delayLeave:m}=h,x=()=>y(d,b);m?m(c.el,b,x):x()}else b()},Po=(c,u)=>{let d;for(;c!==u;)d=C(c),s(c),c=d;s(u)},Ao=(c,u,d)=>{const{bum:p,scope:h,update:b,subTree:y,um:m}=c;p&&Rt(p),h.stop(),b&&(b.active=!1,be(y,c,u,d)),m&&le(m,u),le(()=>{c.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&c.asyncDep&&!c.asyncResolved&&c.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},Ee=(c,u,d,p=!1,h=!1,b=0)=>{for(let y=b;y<c.length;y++)be(c[y],u,d,p,h)},Ot=c=>c.shapeFlag&6?Ot(c.component.subTree):c.shapeFlag&128?c.suspense.next():C(c.anchor||c.el),Zn=(c,u,d)=>{c==null?u._vnode&&be(u._vnode,null,null,!0):R(u._vnode||null,c,u,null,null,null,d),fs(),oo(),u._vnode=c},Ve={p:R,um:be,m:je,r:Xn,mt:sn,mc:Ne,pc:B,pbc:Se,n:Ot,o:e};let on,rn;return t&&([on,rn]=t(Ve)),{render:Zn,hydrate:on,createApp:ii(Zn,on)}}function Ue({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function wo(e,t,n=!1){const o=e.children,s=t.children;if(T(o)&&T(s))for(let r=0;r<o.length;r++){const i=o[r];let l=s[r];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=s[r]=Fe(s[r]),l.el=i.el),n||wo(i,l)),l.type===Qt&&(l.el=i.el)}}function gi(e){const t=e.slice(),n=[0];let o,s,r,i,l;const f=e.length;for(o=0;o<f;o++){const a=e[o];if(a!==0){if(s=n[n.length-1],e[s]<a){t[o]=s,n.push(o);continue}for(r=0,i=n.length-1;r<i;)l=r+i>>1,e[n[l]]<a?r=l+1:i=l;a<e[n[r]]&&(r>0&&(t[o]=n[r-1]),n[r]=o)}}for(r=n.length,i=n[r-1];r-- >0;)n[r]=i,i=t[i];return n}const _i=e=>e.__isTeleport,re=Symbol.for("v-fgt"),Qt=Symbol.for("v-txt"),qe=Symbol.for("v-cmt"),an=Symbol.for("v-stc"),pt=[];let ge=null;function S(e=!1){pt.push(ge=e?null:[])}function mi(){pt.pop(),ge=pt[pt.length-1]||null}let bt=1;function vs(e){bt+=e}function Co(e){return e.dynamicChildren=bt>0?ge||Ze:null,mi(),bt>0&&ge&&ge.push(e),e}function H(e,t,n,o,s,r){return Co(F(e,t,n,o,s,r,!0))}function dt(e,t,n,o,s){return Co(q(e,t,n,o,s,!0))}function bi(e){return e?e.__v_isVNode===!0:!1}function ft(e,t){return e.type===t.type&&e.key===t.key}const Gt="__vInternal",Eo=({key:e})=>e??null,Lt=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?V(e)||ie(e)||P(e)?{i:ae,r:e,k:t,f:!!n}:e:null);function F(e,t=null,n=null,o=0,s=null,r=e===re?0:1,i=!1,l=!1){const f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Eo(t),ref:t&&Lt(t),scopeId:lo,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:o,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:ae};return l?(Vn(f,n),r&128&&e.normalize(f)):n&&(f.shapeFlag|=V(n)?8:16),bt>0&&!i&&ge&&(f.patchFlag>0||r&6)&&f.patchFlag!==32&&ge.push(f),f}const q=xi;function xi(e,t=null,n=null,o=0,s=null,r=!1){if((!e||e===Zr)&&(e=qe),bi(e)){const l=tt(e,t,!0);return n&&Vn(l,n),bt>0&&!r&&ge&&(l.shapeFlag&6?ge[ge.indexOf(e)]=l:ge.push(l)),l.patchFlag|=-2,l}if(Fi(e)&&(e=e.__vccOpts),t){t=yi(t);let{class:l,style:f}=t;l&&!V(l)&&(t.class=ue(l)),K(f)&&(Gs(f)&&!T(f)&&(f=X({},f)),t.style=Nn(f))}const i=V(e)?1:Lr(e)?128:_i(e)?64:K(e)?4:P(e)?2:0;return F(e,t,n,o,s,i,r,!0)}function yi(e){return e?Gs(e)||Gt in e?X({},e):e:null}function tt(e,t,n=!1){const{props:o,ref:s,patchFlag:r,children:i}=e,l=t?vi(o||{},t):o;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Eo(l),ref:t&&t.ref?n&&s?T(s)?s.concat(Lt(t)):[s,Lt(t)]:Lt(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==re?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&tt(e.ssContent),ssFallback:e.ssFallback&&tt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Kt(e=" ",t=0){return q(Qt,null,e,t)}function ee(e="",t=!1){return t?(S(),dt(qe,null,e)):q(qe,null,e)}function ve(e){return e==null||typeof e=="boolean"?q(qe):T(e)?q(re,null,e.slice()):typeof e=="object"?Fe(e):q(Qt,null,String(e))}function Fe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:tt(e)}function Vn(e,t){let n=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(T(t))n=16;else if(typeof t=="object")if(o&65){const s=t.default;s&&(s._c&&(s._d=!1),Vn(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(Gt in t)?t._ctx=ae:s===3&&ae&&(ae.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else P(t)?(t={default:t,_ctx:ae},n=32):(t=String(t),o&64?(n=16,t=[Kt(t)]):n=8);e.children=t,e.shapeFlag|=n}function vi(...e){const t={};for(let n=0;n<e.length;n++){const o=e[n];for(const s in o)if(s==="class")t.class!==o.class&&(t.class=ue([t.class,o.class]));else if(s==="style")t.style=Nn([t.style,o.style]);else if($t(s)){const r=t[s],i=o[s];i&&r!==i&&!(T(r)&&r.includes(i))&&(t[s]=r?[].concat(r,i):i)}else s!==""&&(t[s]=o[s])}return t}function ye(e,t,n,o=null){me(e,t,7,[n,o])}const wi=_o();let Ci=0;function Ei(e,t,n){const o=e.type,s=(t?t.appContext:e.appContext)||wi,r={uid:Ci++,vnode:e,type:o,parent:t,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,scope:new Ko(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(s.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:bo(o,s),emitsOptions:io(o,s),emit:null,emitted:null,propsDefaults:D,inheritAttrs:o.inheritAttrs,ctx:D,data:D,props:D,attrs:D,slots:D,refs:D,setupState:D,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=t?t.root:r,r.emit=Fr.bind(null,r),e.ce&&e.ce(r),r}let Y=null,Jn,Ye,ws="__VUE_INSTANCE_SETTERS__";(Ye=gn()[ws])||(Ye=gn()[ws]=[]),Ye.push(e=>Y=e),Jn=e=>{Ye.length>1?Ye.forEach(t=>t(e)):Ye[0](e)};const nt=e=>{Jn(e),e.scope.on()},ze=()=>{Y&&Y.scope.off(),Jn(null)};function Oo(e){return e.vnode.shapeFlag&4}let xt=!1;function Oi(e,t=!1){xt=t;const{props:n,children:o}=e.vnode,s=Oo(e);ci(e,n,s,t),ai(e,o);const r=s?Ti(e,t):void 0;return xt=!1,r}function Ti(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=eo(new Proxy(e.ctx,Gr));const{setup:o}=n;if(o){const s=e.setupContext=o.length>1?Pi(e):null;nt(e),ot();const r=ke(o,e,0,[e.props,s]);if(rt(),ze(),js(r)){if(r.then(ze,ze),t)return r.then(i=>{Cs(e,i,t)}).catch(i=>{Yt(i,e,0)});e.asyncDep=r}else Cs(e,r,t)}else To(e,t)}function Cs(e,t,n){P(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:K(t)&&(e.setupState=to(t)),To(e,n)}let Es;function To(e,t,n){const o=e.type;if(!e.render){if(!t&&Es&&!o.render){const s=o.template||zn(e).template;if(s){const{isCustomElement:r,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:f}=o,a=X(X({isCustomElement:r,delimiters:l},i),f);o.render=Es(s,a)}}e.render=o.render||_e}nt(e),ot(),ei(e),rt(),ze()}function Ii(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return ce(e,"get","$attrs"),t[n]}}))}function Pi(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Ii(e)},slots:e.slots,emit:e.emit,expose:t}}function en(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(to(eo(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in ht)return ht[n](e)},has(t,n){return n in t||n in ht}}))}function Ai(e,t=!0){return P(e)?e.displayName||e.name:e.name||t&&e.__name}function Fi(e){return P(e)&&"__vccOpts"in e}const Mi=(e,t)=>Cr(e,t,xt),ki=Symbol.for("v-scx"),Ri=()=>St(ki),Ni="3.3.4",Si="http://www.w3.org/2000/svg",De=typeof document<"u"?document:null,Os=De&&De.createElement("template"),Li={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,o)=>{const s=t?De.createElementNS(Si,e):De.createElement(e,n?{is:n}:void 0);return e==="select"&&o&&o.multiple!=null&&s.setAttribute("multiple",o.multiple),s},createText:e=>De.createTextNode(e),createComment:e=>De.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>De.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,o,s,r){const i=n?n.previousSibling:t.lastChild;if(s&&(s===r||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===r||!(s=s.nextSibling)););else{Os.innerHTML=o?`<svg>${e}</svg>`:e;const l=Os.content;if(o){const f=l.firstChild;for(;f.firstChild;)l.appendChild(f.firstChild);l.removeChild(f)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function ji(e,t,n){const o=e._vtc;o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Bi(e,t,n){const o=e.style,s=V(n);if(n&&!s){if(t&&!V(t))for(const r in t)n[r]==null&&Pn(o,r,"");for(const r in n)Pn(o,r,n[r])}else{const r=o.display;s?t!==n&&(o.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(o.display=r)}}const Ts=/\s*!important$/;function Pn(e,t,n){if(T(n))n.forEach(o=>Pn(e,t,o));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=Ui(e,t);Ts.test(n)?e.setProperty(st(o),n.replace(Ts,""),"important"):e[o]=n}}const Is=["Webkit","Moz","ms"],dn={};function Ui(e,t){const n=dn[t];if(n)return n;let o=Ce(t);if(o!=="filter"&&o in e)return dn[t]=o;o=qt(o);for(let s=0;s<Is.length;s++){const r=Is[s]+o;if(r in e)return dn[t]=r}return t}const Ps="http://www.w3.org/1999/xlink";function Hi(e,t,n,o,s){if(o&&t.startsWith("xlink:"))n==null?e.removeAttributeNS(Ps,t.slice(6,t.length)):e.setAttributeNS(Ps,t,n);else{const r=Do(t);n==null||r&&!Hs(n)?e.removeAttribute(t):e.setAttribute(t,r?"":n)}}function Di(e,t,n,o,s,r,i){if(t==="innerHTML"||t==="textContent"){o&&i(o,s,r),e[t]=n??"";return}const l=e.tagName;if(t==="value"&&l!=="PROGRESS"&&!l.includes("-")){e._value=n;const a=l==="OPTION"?e.getAttribute("value"):e.value,_=n??"";a!==_&&(e.value=_),n==null&&e.removeAttribute(t);return}let f=!1;if(n===""||n==null){const a=typeof e[t];a==="boolean"?n=Hs(n):n==null&&a==="string"?(n="",f=!0):a==="number"&&(n=0,f=!0)}try{e[t]=n}catch{}f&&e.removeAttribute(t)}function Xe(e,t,n,o){e.addEventListener(t,n,o)}function Ki(e,t,n,o){e.removeEventListener(t,n,o)}function $i(e,t,n,o,s=null){const r=e._vei||(e._vei={}),i=r[t];if(o&&i)i.value=o;else{const[l,f]=Wi(t);if(o){const a=r[t]=Vi(o,s);Xe(e,l,a,f)}else i&&(Ki(e,l,i,f),r[t]=void 0)}}const As=/(?:Once|Passive|Capture)$/;function Wi(e){let t;if(As.test(e)){t={};let o;for(;o=e.match(As);)e=e.slice(0,e.length-o[0].length),t[o[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):st(e.slice(2)),t]}let hn=0;const zi=Promise.resolve(),qi=()=>hn||(zi.then(()=>hn=0),hn=Date.now());function Vi(e,t){const n=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=n.attached)return;me(Ji(o,n.value),t,5,[o])};return n.value=e,n.attached=qi(),n}function Ji(e,t){if(T(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(o=>s=>!s._stopped&&o&&o(s))}else return t}const Fs=/^on[a-z]/,Yi=(e,t,n,o,s=!1,r,i,l,f)=>{t==="class"?ji(e,o,s):t==="style"?Bi(e,n,o):$t(t)?Fn(t)||$i(e,t,n,o,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Xi(e,t,o,s))?Di(e,t,o,r,i,l,f):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),Hi(e,t,o,s))};function Xi(e,t,n,o){return o?!!(t==="innerHTML"||t==="textContent"||t in e&&Fs.test(t)&&P(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Fs.test(t)&&V(n)?!1:t in e}const Ms=e=>{const t=e.props["onUpdate:modelValue"]||!1;return T(t)?n=>Rt(t,n):t};function Zi(e){e.target.composing=!0}function ks(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Rs={created(e,{modifiers:{lazy:t,trim:n,number:o}},s){e._assign=Ms(s);const r=o||s.props&&s.props.type==="number";Xe(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),r&&(l=pn(l)),e._assign(l)}),n&&Xe(e,"change",()=>{e.value=e.value.trim()}),t||(Xe(e,"compositionstart",Zi),Xe(e,"compositionend",ks),Xe(e,"change",ks))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:o,number:s}},r){if(e._assign=Ms(r),e.composing||document.activeElement===e&&e.type!=="range"&&(n||o&&e.value.trim()===t||(s||e.type==="number")&&pn(e.value)===t))return;const i=t??"";e.value!==i&&(e.value=i)}},Qi=X({patchProp:Yi},Li);let Ns;function Gi(){return Ns||(Ns=hi(Qi))}const el=(...e)=>{const t=Gi().createApp(...e),{mount:n}=t;return t.mount=o=>{const s=tl(o);if(!s)return;const r=t._component;!P(r)&&!r.render&&!r.template&&(r.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,s instanceof SVGElement);return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t};function tl(e){return V(e)?document.querySelector(e):e}const yt=(e,t)=>{const n=e.__vccOpts||e;for(const[o,s]of t)n[o]=s;return n},Ss={},nl=function(e){if(!Ss[e]){Ss[e]=!0;const t=document.getElementsByTagName("head")[0],n=document.createElement("link");n.type="text/css",n.rel="stylesheet",n.href=e,t.appendChild(n)}},sl={props:["name"],data(){return{l_group:"",l_name:""}},mounted(){this.init()},beforeUpdate(){this.init()},watch:{name(){this.init()}},methods:{init(){if(this.name&&this.name!==""){const e=this.name.split("@");e.length>1&&(this.l_group=e[1],this.l_name=e[0]),this.l_group&&this.loadCss()}},loadCss(){let e=self.iconFont||"https://icon.sumor.com/group";nl(`${e}/${this.l_group}/style.css`)}}};function ol(e,t,n,o,s,r){return S(),H("i",{class:ue("si-"+s.l_group+"-"+s.l_name)},null,2)}const tn=yt(sl,[["render",ol]]);const rl={components:{Icon:tn},props:["api"],data(){return{called:!1,activeStatus:{},showResponse:{},data:{},response:{},token:{}}},async mounted(){this.init()},watch:{api(){this.init()}},methods:{init(){},open(e){for(let t in this.activeStatus)t!==e&&(this.activeStatus[t]=!1);this.activeStatus[e]=!this.activeStatus[e],this.data={}},async uploadFile(e){const t=await sumor.upload();this.data[e]=t[0]},async submit(e){const t=this.api.filter(o=>o.path===e)[0].parameters;for(let o of t)o.type==="number"&&this.data[o.key]&&(this.data[o.key]=parseFloat(this.data[o.key]),isNaN(this.data[o.key])&&(this.data[o.key]=null));const n=await this.callApi(e,this.data);this.response[e]=n,n.code==="OK"&&(n.message="调用成功"),this.showResponse[e]=!0},async callApi(e,t){const n=await sumor.call(e,t);return e.indexOf("login")>=0&&await sumor.update("token"),n},onTextareaInput(e){e.target.style.height="auto",e.target.style.height=e.target.scrollHeight+"px"}}},il=["onClick"],ll={class:"left"},cl={class:"path"},fl={class:"name"},ul={class:"collect"},al={key:0,class:"detail"},dl={class:"item desc"},hl={class:"tabs"},pl=["onClick"],gl=["onClick"],_l={key:0,class:"tabContent"},ml={key:0,class:"item"},bl={class:"item"},xl={class:"label"},yl={key:0,class:"required"},vl={key:1,class:"help"},wl={class:"popup"},Cl={key:0,class:"input"},El=["onUpdate:modelValue"],Ol=["onUpdate:modelValue"],Tl={key:1,class:"uploaderText"},Il=["onClick"],Pl={class:"item"},Al=["onClick"],Fl={key:1,class:"tabContent"},Ml={key:0,class:"item"},kl={class:"item"},Rl={class:"icon"},Nl={class:"text"},Sl={class:"text"},Ll={key:0,class:"response"};function jl(e,t,n,o,s,r){const i=$e("Icon");return S(!0),H(re,null,wn(n.api,l=>(S(),H("div",{class:ue(["card",{active:!!s.activeStatus[l.path]}])},[F("div",{class:"title",onClick:f=>r.open(l.path)},[F("div",ll,[F("div",cl,te(l.path),1),F("div",fl,te(l.name),1)]),F("div",ul,[q(i,{name:"angle-down@themify"})])],8,il),s.activeStatus[l.path]?(S(),H("div",al,[F("div",dl,te(l.desc),1),F("div",hl,[F("div",{class:ue(["tab",{active:!s.showResponse[l.path]}]),onClick:f=>s.showResponse[l.path]=!1},"调用",10,pl),F("div",{class:ue(["tab",{active:!!s.showResponse[l.path]}]),onClick:f=>s.showResponse[l.path]=!0},"结果",10,gl)]),s.showResponse[l.path]?ee("",!0):(S(),H("div",_l,[s.called?ee("",!0):(S(),H(re,{key:0},[l.parameters.length===0?(S(),H("div",ml,"该接口无参数,请直接点击调用")):(S(!0),H(re,{key:1},wn(l.parameters,f=>(S(),H("div",bl,[F("div",xl,[F("div",null,te(f.key)+" "+te(f.name),1),f.required?(S(),H("div",yl,"*")):ee("",!0),f.desc?(S(),H("div",vl,[q(i,{name:"question-circle-o@font_awesome"}),F("div",wl,te(f.desc),1)])):ee("",!0)]),f.type!=="file"?(S(),H("div",Cl,[f.length&&f.length>100?as((S(),H("textarea",{key:0,"onUpdate:modelValue":a=>s.data[f.key]=a,onInput:t[0]||(t[0]=(...a)=>r.onTextareaInput&&r.onTextareaInput(...a))},null,40,El)),[[Rs,s.data[f.key]]]):as((S(),H("input",{key:1,"onUpdate:modelValue":a=>s.data[f.key]=a},null,8,Ol)),[[Rs,s.data[f.key]]])])):ee("",!0),f.type==="file"?(S(),H("div",Tl,[F("div",{onClick:a=>r.uploadFile(f.key)},te(s.data[f.key]?s.data[f.key].name:"点击上传"),9,Il)])):ee("",!0)]))),256)),F("div",Pl,[F("div",{class:"button",onClick:f=>r.submit(l.path)},"调用接口",8,Al)])],64))])),s.showResponse[l.path]?(S(),H("div",Fl,[s.response[l.path]?ee("",!0):(S(),H("div",Ml,"暂无结果,请重新尝试调用接口")),s.response[l.path]?(S(),H(re,{key:1},[F("div",kl,[F("div",{class:ue(["alert",{error:s.response[l.path].error}])},[F("div",Rl,[q(i,{name:s.response[l.path].error?"close-outline@zondicons":"checkmark-outline@zondicons"},null,8,["name"])]),F("div",Nl,te(s.response[l.path].code),1),F("div",Sl,te(s.response[l.path].message),1)],2)]),s.response[l.path].data?(S(),H("pre",Ll,te(s.response[l.path].data),1)):ee("",!0)],64)):ee("",!0)])):ee("",!0)])):ee("",!0)],2))),256)}const Bl=yt(rl,[["render",jl],["__scopeId","data-v-29a4ea89"]]);const Ul={components:{Icon:tn},data(){return{visible:!1,list:[]}},async mounted(){this.list=await sumor.range("sumor.language")},computed:{language(){return sumor.store.sumor.language},languageText(){const e=sumor.store.sumor.language,t=this.list.filter(n=>n.key===e)[0];return t?t.text1||t.text:e}},methods:{select(e){this.visible=!1,sumor.set("sumor.language",e)}}},Hl={class:"icon"},Dl={class:"text"},Kl={class:"title"},$l={class:"popupContent"},Wl=["onClick"];function zl(e,t,n,o,s,r){const i=$e("Icon");return S(),H(re,null,[F("div",{class:ue(["selector",{active:s.visible===!0}]),onClick:t[0]||(t[0]=l=>s.visible=!0)},[F("div",Hl,[q(i,{name:"globe@zondicons"})]),F("div",Dl,te(r.languageText),1)],2),s.visible?(S(),H("div",{key:0,class:"popup",onClick:t[3]||(t[3]=l=>s.visible=!1)},[F("div",{class:"inner",onClick:t[2]||(t[2]=l=>l.stopPropagation())},[F("div",Kl,[Kt("选择语言地区"),F("span",{onClick:t[1]||(t[1]=l=>s.visible=!1)},[q(i,{name:"close@themify"})])]),F("div",$l,[(S(!0),H(re,null,wn(s.list,l=>(S(),H("div",{class:"item",onClick:f=>r.select(l.key)},[Kt(te(l.key)+" "+te(l.text)+" "+te(l.text1),1),q(i,{name:"angle-right@themify"})],8,Wl))),256))])])])):ee("",!0)],64)}const ql=yt(Ul,[["render",zl],["__scopeId","data-v-1ea1c590"]]);const Vl={components:{Icon:tn},props:[],data(){return{dark:!1}},mounted(){setInterval(()=>{this.dark=sumor.store.sumor.dark},100)},methods:{change(){sumor.set("sumor.dark",!sumor.store.sumor.dark)}}},Jl={class:"SumorDarkButton"};function Yl(e,t,n,o,s,r){const i=$e("Icon");return S(),H("div",Jl,[F("div",{class:"inner",onClick:t[0]||(t[0]=(...l)=>r.change&&r.change(...l))},[F("div",{class:ue(["box",{active:!s.dark}])},[s.dark?(S(),dt(i,{key:0,name:"sun@meteocons"})):ee("",!0),s.dark?ee("",!0):(S(),dt(i,{key:1,name:"sun2@meteocons"}))],2),F("div",{class:ue(["box",{active:s.dark}])},[s.dark?ee("",!0):(S(),dt(i,{key:0,name:"moon@meteocons"})),s.dark?(S(),dt(i,{key:1,name:"moon1@meteocons"})):ee("",!0)],2)])])}const Xl=yt(Vl,[["render",Yl],["__scopeId","data-v-70518edd"]]);const Zl={components:{DarkButton:Xl,Icon:tn,LanguageSelector:ql,List:Bl},data(){return{title:"",api:[]}},async mounted(){this.init(),await sumor.update("meta"),this.init(),await sumor.update("token")},computed:{user(){return sumor.store.sumor.token.nickname||sumor.store.sumor.token.user}},methods:{init(){const e=sumor.store.sumor.meta,t=e.api||{},n=[];for(let o in t){const s=t[o],r=[];if(s.parameters)for(let i in s.parameters)r.push({key:i,...s.parameters[i]});n.push({path:o,name:s.name,desc:s.desc,parameters:r})}this.api=n,this.title=`${e.name||"轻呈云应用"}接口 (${this.api.length})`,document.title=this.title},async clickLoginButton(){this.user&&await sumor.logout()}}},Ql={class:"frame"},Gl={class:"bar"},ec={class:"title"},tc={class:"more"},nc={class:"icon"},sc={class:"content"};function oc(e,t,n,o,s,r){const i=$e("DarkButton"),l=$e("LanguageSelector"),f=$e("Icon"),a=$e("List");return S(),H("div",Ql,[F("div",Gl,[F("div",ec,te(s.title),1),F("div",tc,[q(i),q(l),F("div",{class:ue(["button",{success:r.user}]),onClick:t[0]||(t[0]=(..._)=>r.clickLoginButton&&r.clickLoginButton(..._))},[F("span",nc,[q(f,{name:r.user?"unlocked@icomoon":"lock@icomoon"},null,8,["name"])]),Kt(te(r.user?r.user+" 已登录":"未登录"),1)],2)])]),F("div",sc,[q(a,{api:s.api},null,8,["api"])])])}const rc=yt(Zl,[["render",oc],["__scopeId","data-v-b10ba2db"]]);sumor.init({reactive:Jt});const Io=el(rc);Io.config.globalProperties.sumor=sumor;Io.mount("#app");
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@charset "UTF-8";.alert[data-v-29a4ea89]{height:30px;width:100%;background:rgba(43,198,26,.5);border-radius:4px;overflow:hidden;color:#f8f9fa;display:flex;align-items:center}.alert .icon[data-v-29a4ea89]{background:#2BC61A;width:30px;height:100%;display:flex;align-items:center;justify-content:center}.alert .text[data-v-29a4ea89]{padding-left:10px}.alert.error[data-v-29a4ea89]{background:rgba(184,28,33,.5)}.alert.error .icon[data-v-29a4ea89]{background:#b81c21}.selector[data-v-1ea1c590]{border-radius:4px;padding:2px 5px;display:flex;align-items:center;cursor:pointer}.selector .icon[data-v-1ea1c590]{padding:0 5px;font-size:16px}.selector[data-v-1ea1c590]:hover,.selector.active[data-v-1ea1c590]{background:#f8f9fa;color:#1b232e}.popup[data-v-1ea1c590]{position:fixed;width:100vw;height:100vh;background:rgba(0,0,0,.3);top:0;left:0;display:flex;align-items:center;justify-content:center}.popup .inner[data-v-1ea1c590]{width:80vw;max-width:500px;height:80vh;background:#f8f9fa;border-radius:4px;color:#1b232e}.popup .title[data-v-1ea1c590]{padding:10px;display:flex;justify-content:space-between;font-size:18px;border-bottom:1px solid #ddd;height:50px}.popup .title span[data-v-1ea1c590]{padding:0 5px}.popup .popupContent[data-v-1ea1c590]{height:calc(100% - 50px);overflow:auto}.popup .item[data-v-1ea1c590]{padding:5px;border-bottom:1px solid #ddd;display:flex;align-items:center;justify-content:space-between;font-size:16px}.SumorDarkButton[data-v-70518edd]{padding:0 10px}.SumorDarkButton .inner[data-v-70518edd]{border-radius:50px;display:flex;justify-content:space-between;border:2px solid #f8f9fa;font-size:18px;line-height:14px;overflow:hidden;background-color:#f8f9fa}.SumorDarkButton .box[data-v-70518edd]{padding:0 3px;background-color:#009688;color:#f8f9fa}.SumorDarkButton .box.active[data-v-70518edd]{background-color:#f8f9fa;color:#009688}.SumorDark .SumorDarkButton .box[data-v-70518edd]{background-color:#1b232e}.SumorDark .SumorDarkButton .box.active[data-v-70518edd]{background-color:#f8f9fa;color:#1b232e}.frame .content[data-v-b10ba2db]{background-image:url(./bg-e56bf4a7.png)}html{--color-blue: #50a1ff;--color-indigo: #6610f2;--color-purple: #926dde;--color-pink: #e83e8c;--color-red: #ff4954;--color-orange: #ffbe00;--color-yellow: #ffba00;--color-green: #3cd458;--color-teal: #20c997;--color-cyan: #17a2b8;--color-white: #fff;--color-gray: #868e96;--color-gray-dark: #343a40;--color-primary: #3f51b5;--color-secondary: #e9ecf0;--color-success: #3cd458;--color-info: #926dde;--color-warning: #ffba00;--color-danger: #ff4954;--color-light: #f8f9fa;--color-dark: #273343;--color-background: #f8f8f8;--font-size: 14px;--font-size-small: 12px;--font-size-large: 16px;--border-radius: 2px}*{box-sizing:border-box;outline:none}html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0;font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-variant:tabular-nums;line-height:1.5715;font-feature-settings:"tnum";transition:background 1s cubic-bezier(.075,.82,.165,1);overflow-x:hidden;font-weight:400}body{-webkit-text-size-adjust:100%!important;text-size-adjust:100%!important;-moz-text-size-adjust:100%!important}[tabindex="-1"]:focus{outline:none!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:#1b232e;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{text-decoration:none;outline:none;cursor:pointer;transition:color .3s;-webkit-text-decoration-skip:objects}a:active,a:hover{text-decoration:none;outline:0}a:focus{text-decoration:none;outline:0}a[disabled]{color:#1b232e;cursor:not-allowed}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:#1b232e;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#f8f9fa}html{-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;text-align:left}a{transition:color .3s ease}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{margin:0;padding:0}ul,ol{list-style:none}html.rtl{direction:rtl}html{font-size:14px;color:#1b232e;background-color:#f8f9fa}html a{color:#1b232e;background-color:transparent}html a:hover{color:#1b232ee6}html a:active{color:#1b232ecc}html.dark{color:#f8f9fa;background-color:#1b232e}html.dark a{color:#f8f9fa}html.dark a:hover{color:#f8f9fae6}html.dark a:active{color:#f8f9facc}.frame{position:absolute;top:0;left:0;width:100vw;height:100vh;color:#f8f9fa;background-color:#009688}.bar{height:60px;display:flex;align-items:center;justify-content:space-between;padding:0 10px;background:rgba(0,0,0,.1);user-select:none}.bar .title{font-size:18px}.bar .more{display:flex;align-items:center}.bar .button{margin-left:10px;padding:2px 5px;cursor:pointer;border-radius:4px}.bar .button .icon{padding:0 5px;font-size:16px}.bar .button:hover,.bar .button.active{background:#f8f9fa;color:#1b232e}.bar .button.success{color:#2bc61a}.bar .button.success .icon{padding-left:2px;padding-right:3px}@media screen and (max-width: 400px){.bar{display:block}}.content{height:calc(100% - 60px);width:100%;padding:10px;overflow:auto;background-size:100%;background-position-y:100%}.card{background:#f8f9fa;color:#1b232e;border-radius:4px;padding:10px;margin-bottom:10px;transition:all .3s}.card .title{display:flex;align-items:center;justify-content:space-between;padding:0 5px;font-size:16px;user-select:none;cursor:pointer}.card .title .left{display:flex}.card .title .path{color:#009688;font-weight:600;letter-spacing:.5px}.card .title .name{padding:0 10px}.card .title .collect{transition:all .3s}.card .tabs{display:flex;padding:0 10px;user-select:none}.card .tabs .tab{border-top-left-radius:4px;border-top-right-radius:4px;background:#f8f9fa;color:#1b232e;padding:1px 10px;cursor:pointer}.card .tabs .tab.active{color:#f8f9fa;background:#009688}.card .tabContent{width:calc(100% - 20px);background:rgba(0,0,0,.1);margin-left:10px;border-radius:0 4px 4px;padding-bottom:10px}.card .detail{margin-top:5px;border-radius:4px;background:rgba(0,0,0,.05);width:100%;padding-bottom:10px;display:flex;flex-direction:column;align-items:flex-start}.card .detail .item{display:flex;padding:10px 10px 0;align-items:start;flex-direction:column}.card .detail .input,.card .detail .input input,.card .detail .input textarea{width:100%}.card .detail .input textarea{min-height:100px;max-height:60vh}.card .detail .desc{padding:10px;font-size:16px;user-select:none}.card .detail .label{padding-right:5px;display:flex;align-items:flex-start;user-select:none}.card .detail .required{color:#b81c21;font-weight:600;font-size:16px;line-height:16px}.card .detail .button{padding:5px 10px;background:#009688;color:#f8f9fa;border-radius:4px;cursor:pointer;user-select:none}.card .detail .response{width:calc(100% - 20px);border-radius:4px;background:rgba(0,0,0,.1);margin:10px 10px 0;padding:10px;max-height:400px;overflow-y:auto}.card .detail .help{position:relative;margin-left:3px}.card .detail .help .popup{display:none;position:absolute;width:200px;background:#fff;border-radius:2px;padding:5px;box-shadow:0 0 5px #0000004d}.card .detail .help:hover .popup{display:block}.card.active .collect{transform:rotate(180deg)}.SumorDark .frame{background-color:#1b232e}.SumorDark .card{background:#282828;color:#f8f9fa}.SumorDark .card .tabs .tab{background:#1b232e;color:#f8f9fa}.SumorDark .card .tabs .tab.active{color:#f8f9fa;background:#009688}.SumorDark input,.SumorDark textarea{background-color:#f8f9fa4d;border:0}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="zh-CN">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title></title>
|
|
7
|
-
|
|
8
|
-
<!--轻呈云图标-->
|
|
9
|
-
<link rel="shortcut icon" href="https://s.sumor.com/icons/favicon.ico">
|
|
10
|
-
<link rel="icon" type="image/png" sizes="16x16" href="https://s.sumor.com/icons/favicon-16x16.png">
|
|
11
|
-
<link rel="icon" type="image/png" sizes="32x32" href="https://s.sumor.com/icons/favicon-32x32.png">
|
|
12
|
-
<link rel="icon" type="image/png" sizes="48x48" href="https://s.sumor.com/icons/favicon-48x48.png">
|
|
13
|
-
<script type="module" crossorigin src="./assets/index-1c080da0.js"></script>
|
|
14
|
-
<link rel="stylesheet" href="./assets/index-bffd3645.css">
|
|
15
|
-
</head>
|
|
16
|
-
<body>
|
|
17
|
-
<div id="app"></div>
|
|
18
|
-
<script src="/sumor/lib.min.js"></script>
|
|
19
|
-
|
|
20
|
-
</body>
|
|
21
|
-
</html>
|