@giteeteam/apps-cli 0.5.7-alpha.4 → 0.5.7

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var be=Object.create;var ct=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var Se=Object.getOwnPropertyNames;var De=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var mt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var _e=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Se(e))!Re.call(t,n)&&n!==r&&ct(t,n,{get:()=>e[n],enumerable:!(o=Oe(e,n))||o.enumerable});return t};var s=(t,e,r)=>(r=t!=null?be(De(t)):{},_e(e||!t||!t.__esModule?ct(r,"default",{value:t,enumerable:!0}):r,t));var Xt=mt((R,Z)=>{"use strict";Object.defineProperty(R,"__esModule",{value:!0});R.default=ze;function ze(t){if(t==null)throw new TypeError("Expected a string but received a ".concat(t));if(t.constructor.name!=="String")throw new TypeError("Expected a string but received a ".concat(t.constructor.name))}Z.exports=R.default;Z.exports.default=R.default});var Zt=mt((_,rt)=>{"use strict";Object.defineProperty(_,"__esModule",{value:!0});_.default=et;var Ke=We(Xt());function We(t){return t&&t.__esModule?t:{default:t}}function tt(t){"@babel/helpers - typeof";return tt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},tt(t)}var Yt="(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])",d="(".concat(Yt,"[.]){3}").concat(Yt),He=new RegExp("^".concat(d,"$")),c="(?:[0-9a-fA-F]{1,4})",Qe=new RegExp("^("+"(?:".concat(c,":){7}(?:").concat(c,"|:)|")+"(?:".concat(c,":){6}(?:").concat(d,"|:").concat(c,"|:)|")+"(?:".concat(c,":){5}(?::").concat(d,"|(:").concat(c,"){1,2}|:)|")+"(?:".concat(c,":){4}(?:(:").concat(c,"){0,1}:").concat(d,"|(:").concat(c,"){1,3}|:)|")+"(?:".concat(c,":){3}(?:(:").concat(c,"){0,2}:").concat(d,"|(:").concat(c,"){1,4}|:)|")+"(?:".concat(c,":){2}(?:(:").concat(c,"){0,3}:").concat(d,"|(:").concat(c,"){1,5}|:)|")+"(?:".concat(c,":){1}(?:(:").concat(c,"){0,4}:").concat(d,"|(:").concat(c,"){1,6}|:)|")+"(?::((?::".concat(c,"){0,5}:").concat(d,"|(?::").concat(c,"){1,7}|:))")+")(%[0-9a-zA-Z.]{1,})?$");function et(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};(0,Ke.default)(t);var r=(tt(e)==="object"?e.version:arguments[1])||"";return r?r.toString()==="4"?He.test(t):r.toString()==="6"?Qe.test(t):!1:et(t,{version:4})||et(t,{version:6})}rt.exports=_.default;rt.exports.default=_.default});var we=require("commander"),Lo=require("dotenv/config");var O="0.5.7-alpha.4";var St=s(require("fs-extra"));var G=s(require("fs-extra")),w=s(require("path")),lt=async({outputDir:t,manifest:e,copyFiles:r})=>{let{resources:o}=e;if(o)for(let{key:n,path:i}of o){let p=w.default.resolve(w.default.join("./",i)),a=w.default.join(t,n);await G.default.copy(p,a)}for(let n of r){let i=w.default.resolve(n),p=w.default.join(t,n);await G.default.copy(i,p)}};var ut=s(require("path")),ft=s(require("archiver")),q=s(require("fs-extra")),dt=async(t,e)=>{let r=ut.default.resolve(e);return await q.default.remove(r),new Promise((o,n)=>{let i=q.default.createWriteStream(r),p=(0,ft.default)("zip",{zlib:{level:9}});i.on("close",function(){o()}),p.on("warning",function(a){console.log(a),a.code==="ENOENT"||n(a)}),p.on("error",function(a){console.log(a),n(a)}),p.pipe(i),p.directory(t,!1),p.finalize()})};var yt=require("rollup"),z=s(require("path")),ht=s(require("fs"));var S=require("fs"),u=require("path"),gt=require("esbuild"),Le={treeShaking:!0,format:"esm",loader:"tsx"};function V(t){return t={...Le,...t},{name:"esbuild",resolveId(e,r,o){if(!r||[".ts",".tsx",".js",".jsx",".mjs",".json"].some(p=>e.endsWith(p)))return e;let n=(0,u.dirname)(r),i;if((0,S.existsSync)(i=(0,u.resolve)(n,e,"index.ts")))return i;if((0,S.existsSync)(i=(0,u.resolve)(n,e,"index.tsx")))return i;if((0,S.existsSync)(i=(0,u.resolve)(n,e+".ts")))return i;if((0,S.existsSync)(i=(0,u.resolve)(n,e+".tsx")))return i;throw console.error({source:e,importer:r,options:o}),i=(0,u.relative)(".",(0,u.resolve)(r,e)),new Error(`ENOENT: ${i.replace(/\\/g,"/")}`)},async transform(e,r){t.sourcefile=r,t.loader=r.endsWith(".json")?"json":t.loader;let{code:o,map:n}=await(0,gt.transform)(e,t);return n?{code:o,map:n}:o}}}var vt=require("@rollup/plugin-node-resolve"),wt=s(require("@rollup/plugin-commonjs"));function Te(t,e,r="development"){let o=[(0,vt.nodeResolve)(),(0,wt.default)()];return o.push(V({sourcemap:r==="development",minify:r!=="development",target:"es2018",jsx:"transform",jsxFactory:"AppsUI.createElement",jsxFragment:"AppsUI.Fragment"})),{inputOptions:{input:t,plugins:o},outputOptions:{file:e,format:"es",sourcemap:r==="development"}}}async function k(t){let{fileName:e,inputDir:r,outputDir:o,mode:n="development"}=t,i=z.default.join(r,`${e}.ts`);try{await ht.default.promises.access(i)}catch{console.error(`${i} is not exist`);return}let p=z.default.join(o,`${e}.js`),{inputOptions:a,outputOptions:m}=Te(i,p,n);await(await(0,yt.rollup)(a)).write(m)}var xt=async t=>{let{manifest:e,mode:r,outputDir:o,inputDir:n}=t,p=e.getFunctionFiles().map(async a=>{await k({inputDir:n,fileName:a,outputDir:o,mode:r})});await Promise.all(p)};var Pt=s(require("ora")),l=async(t,e)=>{var o,n;let r=(0,Pt.default)(t.start).start();try{let i=await e();return r.succeed(t.succeed),i}catch(i){throw r.fail(`${t.error}: ${((n=(o=i==null?void 0:i.response)==null?void 0:o.data)==null?void 0:n.message)||i.message}`),i}};var Et=s(require("fs-extra")),bt=require("@giteeteam/apps-manifest"),Ot=s(require("path")),x=async()=>{let t=Ot.default.resolve("manifest.yml"),e=await Et.default.readFile(t);return new bt.Manifest(e.toString())};var Dt=async({outputDir:t,inputDir:e,prod:r,copyFiles:o,zip:n})=>{let i=await x(),{version:p,key:a}=i.app;if(!a){console.error("manifest app key is required");return}if(!p){console.error("manifest app version is required");return}if(await St.default.emptyDir(t),await l({start:"start bundle",error:"bundle failed",succeed:"bundle success"},()=>xt({outputDir:t,inputDir:e,manifest:i,mode:r?"production":"development"})),await l({start:"start package",error:"package failed",succeed:"package success"},()=>lt({outputDir:t,manifest:i,copyFiles:o})),n){let m=`${a}_${p}.zip`;await l({start:"start archive",error:"archive failed",succeed:"archive success"},()=>dt(t,m))}};var K=s(require("path")),Fe=["manifest.yml"],Rt=async t=>{let{input:e="src",output:r="dist",prod:o,copy:n=[],zip:i}=t;await Dt({outputDir:K.default.resolve(r),inputDir:K.default.resolve(e),prod:!!o,copyFiles:[...Fe,...n],zip:i})};var H=s(require("fs")),Ft=s(require("path")),$t=s(require("form-data"));var kt=s(require("axios"));var _t=s(require("path")),At=s(require("lowdb")),Lt=s(require("lowdb/adapters/FileSync"));var $e=_t.default.join(__dirname,"user.json"),Ie=new Lt.default($e),F=(0,At.default)(Ie),Tt=()=>{let t=F.get("version").value();(!t||t!==O)&&F.defaults({version:O,user:{}}).write()},W=t=>{Tt(),F.set("user",t).write()},P=()=>(Tt(),F.get("user").value());var g=async({url:t,method:e,data:r,headers:o})=>{let{domain:n,cookie:i}=P();return(await(0,kt.default)({method:e,baseURL:n,url:t,data:r,headers:{...o,cookie:i}})).data};var It=async(t,e)=>{if(!H.default.existsSync(t)){console.info(`file:${t} is not exist`);return}let r=new $t.default;r.append("environmentKey",e),r.append("package",H.default.createReadStream(Ft.default.resolve(t))),await g({method:"POST",url:"/apps/api/v1/apps/deploy",data:r,headers:{...r.getHeaders()}})};var Ct=s(require("chalk")),Ce=Ct.default.bold.red,y={error:t=>{console.info(Ce(t))}};var jt=(o=>(o.DEVELOPMENT="development",o.STAGING="staging",o.PRODUCTION="production",o))(jt||{}),Nt=async(t,e)=>{let{domain:r}=P(),{environment:o="development"}=e;if(!Object.values(jt).includes(o)){y.error("Only support development, staging, production environment.");return}if(!r){y.error("Please login in first!");return}await l({start:"start deploy",error:"deploy failed",succeed:"deploy success"},()=>It(t,o)).catch(()=>{})};var Y=s(require("inquirer")),D=s(require("fs-extra")),E=s(require("path"));var J=s(require("simple-git")),Q=s(require("fs-extra")),Ut=async t=>{await(0,J.default)(t).init()},Mt=async(t,e)=>{await Q.default.pathExists(e)||await Q.default.mkdir(e),await(0,J.default)(e).clone(t,e)};var $=s(require("fs-extra")),Bt="https://github.com/moriahq/apps-template.git",X=(r=>(r.micro="micro",r.uikit="uikit",r))(X||{}),Gt=async(t,e)=>{if(!await $.default.pathExists(t))return;let r=await $.default.readFile(t,{encoding:"utf-8"});await $.default.writeFile(t,r.replace(/{{(\w+)}}/g,(o,n)=>typeof e[n]=="string"?e[n]:o))};var qt=require("chalk"),Vt=s(require("readline")),zt=s(require("execa")),Ne=t=>{if(!qt.supportsColor){t.write("\r");return}Vt.default.cursorTo(t,0)},Ue=(t,e)=>{let r=Math.min(Math.max(t/e,0),1),o=` ${t}/${e}`,n=Math.max(0,process.stderr.columns-o.length-3),i=Math.min(e,n),p=Math.round(i*r),a="#".repeat(p),m="-".repeat(i-p);Ne(process.stderr),process.stderr.write(`[${a}${m}]${o}`)},Me=(t,e,r,o)=>new Promise((n,i)=>{var a;let p=(0,zt.default)(t,e,{cwd:r,stdio:["inherit","inherit","pipe"],env:o});(a=p.stderr)==null||a.on("data",m=>{let f=m.toString();if(/warning/.test(f))return;let v=f.match(/\[.*] (\d+)\/(\d+)/);if(v){Ue(parseFloat(v[1]),parseFloat(v[2]));return}process.stderr.write(m)}),p.on("close",m=>{if(m!==0){i(new Error(`command failed: ${t} ${e.join(" ")}`));return}n()})}),Kt={executeCommand:Me};var Be=async()=>(await Y.default.createPromptModule()({type:"input",name:"App Name",message:"Please enter an app name",validate:r=>!!r}))["App Name"],Ge=async()=>(await Y.default.createPromptModule()({type:"input",name:"App key",message:"Please enter a valid app key",validate:r=>/^[a-z][a-z0-9_]*$/.test(r)?!0:(console.log(""),console.log("only supports letters, numbers, underscores and starts with letters"),!1)}))["App key"],qe=async(t,e)=>{await l({start:"Start clone repository",error:"Clone repository failed!",succeed:"Clone repository success!"},()=>Mt(t,e))},Ve=async t=>{await l({start:"Start install dependencies",error:"Install dependencies failed!",succeed:"Install dependencies success!"},()=>Kt.executeCommand("yarn",["install"],t))},Wt=async t=>{let{cwd:e}=t,r="micro",o=await Be(),n=await Ge(),i=E.default.join(e,n);if(await D.default.pathExists(i)){console.error(`Project path already exists: ${i}`);return}await qe(Bt,i),await D.default.copy(E.default.join(i,r),i),await Promise.all(Object.values(X).map(a=>D.default.remove(E.default.join(i,a)))),await D.default.remove(E.default.join(i,"./.git"));let p=["./manifest.yml","./package.json","./webpack.config.js","./public/index.html","./src/App.tsx","./src/index.tsx"];await Promise.all(p.map(a=>Gt(E.default.join(i,a),{appName:o,appKey:n}))),await Ve(i),await Ut(i),console.log("Project init success!"),console.log("Project path:"+i)};var Ht=async()=>{let t=process.cwd();await Wt({cwd:t})};var I=s(require("inquirer"));var Qt=s(require("axios")),Jt=async({baseUrl:t,username:e,password:r})=>{var o;try{return{cookie:(o=(await(0,Qt.default)({method:"POST",url:`${t}/api/gateway/login`,data:{username:e,password:r}})).headers)==null?void 0:o["set-cookie"]}}catch(n){return console.error("Login error:",n==null?void 0:n.message),{cookie:""}}};var te=s(Zt());var ee=t=>{let[,e]=t.split("//");return(0,te.default)(e)},re=t=>{try{return new URL(t).origin}catch{return t}};var oe=s(require("crypto")),ne=s(require("base64url")),Je=Buffer.from("ABCDEFGHIJKLM_iv","utf-8"),Xe=Buffer.from("ABCDEFGHIJKL_key","utf-8"),Ye="aes-128-cbc";var ie=t=>{try{let e=oe.default.createCipheriv(Ye,Xe,Je),r=e.update(t,"utf8","base64");return r+=e.final("base64"),ne.default.toBase64(r)}catch(e){return console.error(`Encryption error: ${e}`),null}};var Ze=async()=>(await I.default.createPromptModule()({type:"input",name:"Domain",message:"Please enter the domain address",validate:r=>!!r})).Domain,tr=async()=>(await I.default.createPromptModule()({type:"input",name:"Username",message:"Please enter username",validate:r=>!!r})).Username,er=async()=>(await I.default.createPromptModule()({type:"password",name:"Password",message:"Please enter password",validate:r=>!!r})).Password,se=async({domain:t,username:e,password:r})=>{t||(t=await Ze()),t=re(t);let o=ee(t);if(o)W({domain:t,dev:o}),console.info("Login success!");else{e||(e=await tr()),r||(r=await er());let{cookie:n}=await Jt({baseUrl:t,username:e,password:ie(r)||r});n&&(W({domain:t,username:e,cookie:n,dev:o}),console.info("Login success!"))}};var ae=async t=>{await se(t)};var U=s(require("path"));var ye=s(require("debug")),j=s(require("fs-extra")),N=s(require("path"));var pe=async()=>{var e;return((e=(await g({method:"GET",url:"/apps/api/v1/config"}).catch(r=>{var o,n;console.info(`getRuntimeConfig error ${((n=(o=r==null?void 0:r.response)==null?void 0:o.data)==null?void 0:n.message)||(r==null?void 0:r.message)}`)})).data)==null?void 0:e.runtime)||{}};var C=require("child_process"),A=class{constructor(e,r){this.imageName=e,this.containerName=r}async downloadImage(){console.log(`Downloading image(${this.imageName}) ...`),await this.execPromise(`docker pull ${this.imageName}`),console.log(`Download image(${this.imageName}) success!`)}async runContainer({port:e,env:r,volume:o=[]}){await this.removeContainer();let n=Object.keys(r).map(a=>`-e ${a}=${r[a]}`).join(" "),i=o==null?void 0:o.map(a=>`-v ${a}`).join(" "),p=`docker run -d -p ${e}:${e} ${n} ${i} --name ${this.containerName} ${this.imageName}`;await this.execPromise(p)}async removeContainer(){await this.execPromise(`docker rm -f ${this.containerName}`).catch(()=>{})}logs(){let e=(0,C.spawn)("docker",["logs","-f",this.containerName]);e.stdout.on("data",r=>{console.log(`${r}`)}),e.stderr.on("data",r=>{console.log(`${r}`)})}execPromise(e){return new Promise((r,o)=>{(0,C.exec)(e,(n,i,p)=>{if(n)return o(n);r({stdout:i,stderr:p})})})}};var ce=s(require("localtunnel"));var rr=process.env.RESOURCES||'[{"key":"main","path":"http://127.0.0.1:8000"}]',me=async(t,e)=>{await g({method:"POST",url:`/apps/api/v1/apps/tunnel/${t}`,data:{resources:JSON.parse(rr),runtimeHost:e}}).catch(r=>{var o,n;console.info(`addTunnel error ${((n=(o=r==null?void 0:r.response)==null?void 0:o.data)==null?void 0:n.message)||(r==null?void 0:r.message)}`)})},le=async t=>{await g({method:"DELETE",url:`/apps/api/v1/apps/tunnel/${t}`}).catch(()=>{})},ue=async t=>{var e,r;try{return(await(0,ce.default)({port:t,host:((e=process.env)==null?void 0:e.TUNNEL_HOST)==="OFFICIAL"?void 0:((r=process.env)==null?void 0:r.TUNNEL_HOST)||"http://tunnel.gitee.work:1777"})).url}catch(o){return console.info("runTunnel error",o==null?void 0:o.message),""}};var de=s(require("chokidar"));var fe=(t,e,r)=>{for(let o of t)k({inputDir:e,outputDir:r,fileName:o,mode:"development"})},ge=async t=>{let{inputDir:e,outputDir:r,watchFilePaths:o}=t,i=(await x()).getFunctionFiles();fe(i,e,r);let p,a=[e,...o],m=de.default.watch(a);console.info(`watch: ${a.join(", ")}`),m.on("change",f=>{clearTimeout(p),p=setTimeout(()=>{console.info(`${f} has change`),fe(i,e,r)},1e3)})};var or=(0,ye.default)("cli:tunnel"),nr=async()=>{let t=await pe(),e=process.env.RUNTIME_IMAGE||t.image||"docker-hub.gitee.work/gitee-prod/proxima-apps-runtime-server:4.4.0-alpha-86",r=Number(process.env.CONTAINER_PORT)||8455,o="cli-dev-apps-runtime-server",n={PORT:r,APPS_DIR:"/usr/src/app/apps",LRU_TTL:1,FS_MODE:"local",DEBUG:process.env.DEBUG||"runtime*",LOG_LEVEL:process.env.LOG_LEVEL,APPS_DEFAULT_LOCALE:process.env.APPS_DEFAULT_LOCALE||"zh-CN",PARSE_PUBLIC_SERVER_URL:process.env.PARSE_PUBLIC_SERVER_URL||t.parsePublicServerUrl,PARSE_SERVER_MASTER_KEY:process.env.PARSE_SERVER_MASTER_KEY||t.parseServerMasterKey,PROXIMA_CORE_URL:process.env.PROXIMA_CORE_URL||t.proximaCoreUrl,APPS_SERVER_URL:process.env.APPS_SERVER_URL||t.appsServerUrl,PGSQL_CLIENT_HOST:process.env.PGSQL_CLIENT_HOST,PGSQL_CLIENT_PORT:process.env.PGSQL_CLIENT_PORT,PGSQL_CLIENT_USER:process.env.PGSQL_CLIENT_USER,PGSQL_CLIENT_PASSWORD:process.env.PGSQL_CLIENT_PASSWORD};return{runtimeImage:e,containerPort:r,containerName:o,containerEnv:n}},ir=async(t,e)=>{for(let r of e){let o=N.default.resolve(r),n=N.default.join(t,r);await j.default.copy(o,n)}},he=async t=>{var it,st,at;let{inputDir:e,outputDir:r,server:o,copy:n,noProxy:i,watchFilePaths:p=[]}=t;await j.default.emptyDir(r);let a=await x(),m=a.app.key,f=a.app.version,v=a.getFunctionFiles();if(!m){y.error("appKey is required!");return}if(!f){y.error("version is required!");return}let{domain:ot}=P();if(!ot){y.error("Please login in first!");return}let L=[],M=async()=>{await Promise.all(L.map(b=>b())),process.exit()};process.on("SIGINT",M),process.on("uncaughtException",M),process.on("unhandledRejection",M);let xe=`${`/${m}/development/${f}`}/server-side`,nt=N.default.join(r,xe);await ir(nt,n),await ge({inputDir:e,outputDir:nt,watchFilePaths:p}),L.push(()=>j.default.remove(r));let B="";if(o&&v.length>0){let{runtimeImage:b,containerPort:pt,containerEnv:Pe,containerName:Ee}=await nr(),T=new A(b,Ee);await T.downloadImage(),await T.runContainer({port:pt,env:Pe,volume:[`${r}:/usr/src/app/apps`]}),L.push(()=>T.removeContainer()),i&&(B=await l({start:"start tunnel",error:"tunnel failed",succeed:"tunnel success"},()=>ue(pt)),or("runtimeHost",B)),T.logs()}if(!i&&(await me(m,B),L.push(()=>le(m)),o&&((at=(st=(it=a.getManifest())==null?void 0:it.modules)==null?void 0:st.webtrigger)!=null&&at.length))){console.info("You can use this url for test:");let b=`${ot}/apps/api/v1/:tenant/apps/${m}/environments/development/webtriggers/:webtriggerKey`;console.info(`POST ${b}`)}};var sr=["manifest.yml"],ve=async t=>{let{copy:e=[],input:r="src",output:o="cache",server:n=!0,proxy:i,watch:p=[]}=t;await he({outputDir:U.default.resolve(o),inputDir:U.default.resolve(r),copy:[...sr,...e],server:n,noProxy:!i,watchFilePaths:p.map(a=>U.default.resolve(a))})};var h=new we.Command;h.version(O).description("Giteeteam Apps Cli");h.command("build").option("--prod","build in production").option("--no-zip","no archive").option("-c --copy [letters...]","copy files").option("-i --input [dir]","input dir").option("-o --output [dir]","output dir").action(Rt);h.command("init").action(Ht);h.command("login").option("--domain [domain]","login domain").option("-u --username [username]","login username").option("-p --password [password]","login user password").action(ae);h.command("tunnel").option("-c --copy [letters...]","copy files").option("-i --input [dir]","input dir").option("-o --output [dir]","output dir,default cache").option("--no-server","no server").option("--no-proxy","no proxy").option("-w --watch [paths...]","watch files change").action(ve);h.command("deploy [filename]").option("-e --environment [environment]","app environment").action(Nt);h.parse(process.argv);
2
+ "use strict";var be=Object.create;var ct=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var Se=Object.getOwnPropertyNames;var De=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var mt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var _e=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Se(e))!Re.call(t,n)&&n!==r&&ct(t,n,{get:()=>e[n],enumerable:!(o=Oe(e,n))||o.enumerable});return t};var s=(t,e,r)=>(r=t!=null?be(De(t)):{},_e(e||!t||!t.__esModule?ct(r,"default",{value:t,enumerable:!0}):r,t));var Xt=mt((R,Z)=>{"use strict";Object.defineProperty(R,"__esModule",{value:!0});R.default=ze;function ze(t){if(t==null)throw new TypeError("Expected a string but received a ".concat(t));if(t.constructor.name!=="String")throw new TypeError("Expected a string but received a ".concat(t.constructor.name))}Z.exports=R.default;Z.exports.default=R.default});var Zt=mt((_,rt)=>{"use strict";Object.defineProperty(_,"__esModule",{value:!0});_.default=et;var Ke=We(Xt());function We(t){return t&&t.__esModule?t:{default:t}}function tt(t){"@babel/helpers - typeof";return tt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},tt(t)}var Yt="(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])",d="(".concat(Yt,"[.]){3}").concat(Yt),He=new RegExp("^".concat(d,"$")),c="(?:[0-9a-fA-F]{1,4})",Qe=new RegExp("^("+"(?:".concat(c,":){7}(?:").concat(c,"|:)|")+"(?:".concat(c,":){6}(?:").concat(d,"|:").concat(c,"|:)|")+"(?:".concat(c,":){5}(?::").concat(d,"|(:").concat(c,"){1,2}|:)|")+"(?:".concat(c,":){4}(?:(:").concat(c,"){0,1}:").concat(d,"|(:").concat(c,"){1,3}|:)|")+"(?:".concat(c,":){3}(?:(:").concat(c,"){0,2}:").concat(d,"|(:").concat(c,"){1,4}|:)|")+"(?:".concat(c,":){2}(?:(:").concat(c,"){0,3}:").concat(d,"|(:").concat(c,"){1,5}|:)|")+"(?:".concat(c,":){1}(?:(:").concat(c,"){0,4}:").concat(d,"|(:").concat(c,"){1,6}|:)|")+"(?::((?::".concat(c,"){0,5}:").concat(d,"|(?::").concat(c,"){1,7}|:))")+")(%[0-9a-zA-Z.]{1,})?$");function et(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};(0,Ke.default)(t);var r=(tt(e)==="object"?e.version:arguments[1])||"";return r?r.toString()==="4"?He.test(t):r.toString()==="6"?Qe.test(t):!1:et(t,{version:4})||et(t,{version:6})}rt.exports=_.default;rt.exports.default=_.default});var we=require("commander"),Lo=require("dotenv/config");var O="0.5.7";var St=s(require("fs-extra"));var G=s(require("fs-extra")),w=s(require("path")),lt=async({outputDir:t,manifest:e,copyFiles:r})=>{let{resources:o}=e;if(o)for(let{key:n,path:i}of o){let p=w.default.resolve(w.default.join("./",i)),a=w.default.join(t,n);await G.default.copy(p,a)}for(let n of r){let i=w.default.resolve(n),p=w.default.join(t,n);await G.default.copy(i,p)}};var ut=s(require("path")),ft=s(require("archiver")),q=s(require("fs-extra")),dt=async(t,e)=>{let r=ut.default.resolve(e);return await q.default.remove(r),new Promise((o,n)=>{let i=q.default.createWriteStream(r),p=(0,ft.default)("zip",{zlib:{level:9}});i.on("close",function(){o()}),p.on("warning",function(a){console.log(a),a.code==="ENOENT"||n(a)}),p.on("error",function(a){console.log(a),n(a)}),p.pipe(i),p.directory(t,!1),p.finalize()})};var yt=require("rollup"),z=s(require("path")),ht=s(require("fs"));var S=require("fs"),u=require("path"),gt=require("esbuild"),Le={treeShaking:!0,format:"esm",loader:"tsx"};function V(t){return t={...Le,...t},{name:"esbuild",resolveId(e,r,o){if(!r||[".ts",".tsx",".js",".jsx",".mjs",".json"].some(p=>e.endsWith(p)))return e;let n=(0,u.dirname)(r),i;if((0,S.existsSync)(i=(0,u.resolve)(n,e,"index.ts")))return i;if((0,S.existsSync)(i=(0,u.resolve)(n,e,"index.tsx")))return i;if((0,S.existsSync)(i=(0,u.resolve)(n,e+".ts")))return i;if((0,S.existsSync)(i=(0,u.resolve)(n,e+".tsx")))return i;throw console.error({source:e,importer:r,options:o}),i=(0,u.relative)(".",(0,u.resolve)(r,e)),new Error(`ENOENT: ${i.replace(/\\/g,"/")}`)},async transform(e,r){t.sourcefile=r,t.loader=r.endsWith(".json")?"json":t.loader;let{code:o,map:n}=await(0,gt.transform)(e,t);return n?{code:o,map:n}:o}}}var vt=require("@rollup/plugin-node-resolve"),wt=s(require("@rollup/plugin-commonjs"));function Te(t,e,r="development"){let o=[(0,vt.nodeResolve)(),(0,wt.default)()];return o.push(V({sourcemap:r==="development",minify:r!=="development",target:"es2018",jsx:"transform",jsxFactory:"AppsUI.createElement",jsxFragment:"AppsUI.Fragment"})),{inputOptions:{input:t,plugins:o},outputOptions:{file:e,format:"es",sourcemap:r==="development"}}}async function k(t){let{fileName:e,inputDir:r,outputDir:o,mode:n="development"}=t,i=z.default.join(r,`${e}.ts`);try{await ht.default.promises.access(i)}catch{console.error(`${i} is not exist`);return}let p=z.default.join(o,`${e}.js`),{inputOptions:a,outputOptions:m}=Te(i,p,n);await(await(0,yt.rollup)(a)).write(m)}var xt=async t=>{let{manifest:e,mode:r,outputDir:o,inputDir:n}=t,p=e.getFunctionFiles().map(async a=>{await k({inputDir:n,fileName:a,outputDir:o,mode:r})});await Promise.all(p)};var Pt=s(require("ora")),l=async(t,e)=>{var o,n;let r=(0,Pt.default)(t.start).start();try{let i=await e();return r.succeed(t.succeed),i}catch(i){throw r.fail(`${t.error}: ${((n=(o=i==null?void 0:i.response)==null?void 0:o.data)==null?void 0:n.message)||i.message}`),i}};var Et=s(require("fs-extra")),bt=require("@giteeteam/apps-manifest"),Ot=s(require("path")),x=async()=>{let t=Ot.default.resolve("manifest.yml"),e=await Et.default.readFile(t);return new bt.Manifest(e.toString())};var Dt=async({outputDir:t,inputDir:e,prod:r,copyFiles:o,zip:n})=>{let i=await x(),{version:p,key:a}=i.app;if(!a){console.error("manifest app key is required");return}if(!p){console.error("manifest app version is required");return}if(await St.default.emptyDir(t),await l({start:"start bundle",error:"bundle failed",succeed:"bundle success"},()=>xt({outputDir:t,inputDir:e,manifest:i,mode:r?"production":"development"})),await l({start:"start package",error:"package failed",succeed:"package success"},()=>lt({outputDir:t,manifest:i,copyFiles:o})),n){let m=`${a}_${p}.zip`;await l({start:"start archive",error:"archive failed",succeed:"archive success"},()=>dt(t,m))}};var K=s(require("path")),Fe=["manifest.yml"],Rt=async t=>{let{input:e="src",output:r="dist",prod:o,copy:n=[],zip:i}=t;await Dt({outputDir:K.default.resolve(r),inputDir:K.default.resolve(e),prod:!!o,copyFiles:[...Fe,...n],zip:i})};var H=s(require("fs")),Ft=s(require("path")),$t=s(require("form-data"));var kt=s(require("axios"));var _t=s(require("path")),At=s(require("lowdb")),Lt=s(require("lowdb/adapters/FileSync"));var $e=_t.default.join(__dirname,"user.json"),Ie=new Lt.default($e),F=(0,At.default)(Ie),Tt=()=>{let t=F.get("version").value();(!t||t!==O)&&F.defaults({version:O,user:{}}).write()},W=t=>{Tt(),F.set("user",t).write()},P=()=>(Tt(),F.get("user").value());var g=async({url:t,method:e,data:r,headers:o})=>{let{domain:n,cookie:i}=P();return(await(0,kt.default)({method:e,baseURL:n,url:t,data:r,headers:{...o,cookie:i}})).data};var It=async(t,e)=>{if(!H.default.existsSync(t)){console.info(`file:${t} is not exist`);return}let r=new $t.default;r.append("environmentKey",e),r.append("package",H.default.createReadStream(Ft.default.resolve(t))),await g({method:"POST",url:"/apps/api/v1/apps/deploy",data:r,headers:{...r.getHeaders()}})};var Ct=s(require("chalk")),Ce=Ct.default.bold.red,y={error:t=>{console.info(Ce(t))}};var jt=(o=>(o.DEVELOPMENT="development",o.STAGING="staging",o.PRODUCTION="production",o))(jt||{}),Nt=async(t,e)=>{let{domain:r}=P(),{environment:o="development"}=e;if(!Object.values(jt).includes(o)){y.error("Only support development, staging, production environment.");return}if(!r){y.error("Please login in first!");return}await l({start:"start deploy",error:"deploy failed",succeed:"deploy success"},()=>It(t,o)).catch(()=>{})};var Y=s(require("inquirer")),D=s(require("fs-extra")),E=s(require("path"));var J=s(require("simple-git")),Q=s(require("fs-extra")),Ut=async t=>{await(0,J.default)(t).init()},Mt=async(t,e)=>{await Q.default.pathExists(e)||await Q.default.mkdir(e),await(0,J.default)(e).clone(t,e)};var $=s(require("fs-extra")),Bt="https://github.com/moriahq/apps-template.git",X=(r=>(r.micro="micro",r.uikit="uikit",r))(X||{}),Gt=async(t,e)=>{if(!await $.default.pathExists(t))return;let r=await $.default.readFile(t,{encoding:"utf-8"});await $.default.writeFile(t,r.replace(/{{(\w+)}}/g,(o,n)=>typeof e[n]=="string"?e[n]:o))};var qt=require("chalk"),Vt=s(require("readline")),zt=s(require("execa")),Ne=t=>{if(!qt.supportsColor){t.write("\r");return}Vt.default.cursorTo(t,0)},Ue=(t,e)=>{let r=Math.min(Math.max(t/e,0),1),o=` ${t}/${e}`,n=Math.max(0,process.stderr.columns-o.length-3),i=Math.min(e,n),p=Math.round(i*r),a="#".repeat(p),m="-".repeat(i-p);Ne(process.stderr),process.stderr.write(`[${a}${m}]${o}`)},Me=(t,e,r,o)=>new Promise((n,i)=>{var a;let p=(0,zt.default)(t,e,{cwd:r,stdio:["inherit","inherit","pipe"],env:o});(a=p.stderr)==null||a.on("data",m=>{let f=m.toString();if(/warning/.test(f))return;let v=f.match(/\[.*] (\d+)\/(\d+)/);if(v){Ue(parseFloat(v[1]),parseFloat(v[2]));return}process.stderr.write(m)}),p.on("close",m=>{if(m!==0){i(new Error(`command failed: ${t} ${e.join(" ")}`));return}n()})}),Kt={executeCommand:Me};var Be=async()=>(await Y.default.createPromptModule()({type:"input",name:"App Name",message:"Please enter an app name",validate:r=>!!r}))["App Name"],Ge=async()=>(await Y.default.createPromptModule()({type:"input",name:"App key",message:"Please enter a valid app key",validate:r=>/^[a-z][a-z0-9_]*$/.test(r)?!0:(console.log(""),console.log("only supports letters, numbers, underscores and starts with letters"),!1)}))["App key"],qe=async(t,e)=>{await l({start:"Start clone repository",error:"Clone repository failed!",succeed:"Clone repository success!"},()=>Mt(t,e))},Ve=async t=>{await l({start:"Start install dependencies",error:"Install dependencies failed!",succeed:"Install dependencies success!"},()=>Kt.executeCommand("yarn",["install"],t))},Wt=async t=>{let{cwd:e}=t,r="micro",o=await Be(),n=await Ge(),i=E.default.join(e,n);if(await D.default.pathExists(i)){console.error(`Project path already exists: ${i}`);return}await qe(Bt,i),await D.default.copy(E.default.join(i,r),i),await Promise.all(Object.values(X).map(a=>D.default.remove(E.default.join(i,a)))),await D.default.remove(E.default.join(i,"./.git"));let p=["./manifest.yml","./package.json","./webpack.config.js","./public/index.html","./src/App.tsx","./src/index.tsx"];await Promise.all(p.map(a=>Gt(E.default.join(i,a),{appName:o,appKey:n}))),await Ve(i),await Ut(i),console.log("Project init success!"),console.log("Project path:"+i)};var Ht=async()=>{let t=process.cwd();await Wt({cwd:t})};var I=s(require("inquirer"));var Qt=s(require("axios")),Jt=async({baseUrl:t,username:e,password:r})=>{var o;try{return{cookie:(o=(await(0,Qt.default)({method:"POST",url:`${t}/api/gateway/login`,data:{username:e,password:r}})).headers)==null?void 0:o["set-cookie"]}}catch(n){return console.error("Login error:",n==null?void 0:n.message),{cookie:""}}};var te=s(Zt());var ee=t=>{let[,e]=t.split("//");return(0,te.default)(e)},re=t=>{try{return new URL(t).origin}catch{return t}};var oe=s(require("crypto")),ne=s(require("base64url")),Je=Buffer.from("ABCDEFGHIJKLM_iv","utf-8"),Xe=Buffer.from("ABCDEFGHIJKL_key","utf-8"),Ye="aes-128-cbc";var ie=t=>{try{let e=oe.default.createCipheriv(Ye,Xe,Je),r=e.update(t,"utf8","base64");return r+=e.final("base64"),ne.default.toBase64(r)}catch(e){return console.error(`Encryption error: ${e}`),null}};var Ze=async()=>(await I.default.createPromptModule()({type:"input",name:"Domain",message:"Please enter the domain address",validate:r=>!!r})).Domain,tr=async()=>(await I.default.createPromptModule()({type:"input",name:"Username",message:"Please enter username",validate:r=>!!r})).Username,er=async()=>(await I.default.createPromptModule()({type:"password",name:"Password",message:"Please enter password",validate:r=>!!r})).Password,se=async({domain:t,username:e,password:r})=>{t||(t=await Ze()),t=re(t);let o=ee(t);if(o)W({domain:t,dev:o}),console.info("Login success!");else{e||(e=await tr()),r||(r=await er());let{cookie:n}=await Jt({baseUrl:t,username:e,password:ie(r)||r});n&&(W({domain:t,username:e,cookie:n,dev:o}),console.info("Login success!"))}};var ae=async t=>{await se(t)};var U=s(require("path"));var ye=s(require("debug")),j=s(require("fs-extra")),N=s(require("path"));var pe=async()=>{var e;return((e=(await g({method:"GET",url:"/apps/api/v1/config"}).catch(r=>{var o,n;console.info(`getRuntimeConfig error ${((n=(o=r==null?void 0:r.response)==null?void 0:o.data)==null?void 0:n.message)||(r==null?void 0:r.message)}`)})).data)==null?void 0:e.runtime)||{}};var C=require("child_process"),A=class{constructor(e,r){this.imageName=e,this.containerName=r}async downloadImage(){console.log(`Downloading image(${this.imageName}) ...`),await this.execPromise(`docker pull ${this.imageName}`),console.log(`Download image(${this.imageName}) success!`)}async runContainer({port:e,env:r,volume:o=[]}){await this.removeContainer();let n=Object.keys(r).map(a=>`-e ${a}=${r[a]}`).join(" "),i=o==null?void 0:o.map(a=>`-v ${a}`).join(" "),p=`docker run -d -p ${e}:${e} ${n} ${i} --name ${this.containerName} ${this.imageName}`;await this.execPromise(p)}async removeContainer(){await this.execPromise(`docker rm -f ${this.containerName}`).catch(()=>{})}logs(){let e=(0,C.spawn)("docker",["logs","-f",this.containerName]);e.stdout.on("data",r=>{console.log(`${r}`)}),e.stderr.on("data",r=>{console.log(`${r}`)})}execPromise(e){return new Promise((r,o)=>{(0,C.exec)(e,(n,i,p)=>{if(n)return o(n);r({stdout:i,stderr:p})})})}};var ce=s(require("localtunnel"));var rr=process.env.RESOURCES||'[{"key":"main","path":"http://127.0.0.1:8000"}]',me=async(t,e)=>{await g({method:"POST",url:`/apps/api/v1/apps/tunnel/${t}`,data:{resources:JSON.parse(rr),runtimeHost:e}}).catch(r=>{var o,n;console.info(`addTunnel error ${((n=(o=r==null?void 0:r.response)==null?void 0:o.data)==null?void 0:n.message)||(r==null?void 0:r.message)}`)})},le=async t=>{await g({method:"DELETE",url:`/apps/api/v1/apps/tunnel/${t}`}).catch(()=>{})},ue=async t=>{var e,r;try{return(await(0,ce.default)({port:t,host:((e=process.env)==null?void 0:e.TUNNEL_HOST)==="OFFICIAL"?void 0:((r=process.env)==null?void 0:r.TUNNEL_HOST)||"http://tunnel.gitee.work:1777"})).url}catch(o){return console.info("runTunnel error",o==null?void 0:o.message),""}};var de=s(require("chokidar"));var fe=(t,e,r)=>{for(let o of t)k({inputDir:e,outputDir:r,fileName:o,mode:"development"})},ge=async t=>{let{inputDir:e,outputDir:r,watchFilePaths:o}=t,i=(await x()).getFunctionFiles();fe(i,e,r);let p,a=[e,...o],m=de.default.watch(a);console.info(`watch: ${a.join(", ")}`),m.on("change",f=>{clearTimeout(p),p=setTimeout(()=>{console.info(`${f} has change`),fe(i,e,r)},1e3)})};var or=(0,ye.default)("cli:tunnel"),nr=async()=>{let t=await pe(),e=process.env.RUNTIME_IMAGE||t.image||"docker-hub.gitee.work/gitee-prod/proxima-apps-runtime-server:4.4.0-alpha-86",r=Number(process.env.CONTAINER_PORT)||8455,o="cli-dev-apps-runtime-server",n={PORT:r,APPS_DIR:"/usr/src/app/apps",LRU_TTL:1,FS_MODE:"local",DEBUG:process.env.DEBUG||"runtime*",LOG_LEVEL:process.env.LOG_LEVEL,APPS_DEFAULT_LOCALE:process.env.APPS_DEFAULT_LOCALE||"zh-CN",PARSE_PUBLIC_SERVER_URL:process.env.PARSE_PUBLIC_SERVER_URL||t.parsePublicServerUrl,PARSE_SERVER_MASTER_KEY:process.env.PARSE_SERVER_MASTER_KEY||t.parseServerMasterKey,PROXIMA_CORE_URL:process.env.PROXIMA_CORE_URL||t.proximaCoreUrl,APPS_SERVER_URL:process.env.APPS_SERVER_URL||t.appsServerUrl,PGSQL_CLIENT_HOST:process.env.PGSQL_CLIENT_HOST,PGSQL_CLIENT_PORT:process.env.PGSQL_CLIENT_PORT,PGSQL_CLIENT_USER:process.env.PGSQL_CLIENT_USER,PGSQL_CLIENT_PASSWORD:process.env.PGSQL_CLIENT_PASSWORD};return{runtimeImage:e,containerPort:r,containerName:o,containerEnv:n}},ir=async(t,e)=>{for(let r of e){let o=N.default.resolve(r),n=N.default.join(t,r);await j.default.copy(o,n)}},he=async t=>{var it,st,at;let{inputDir:e,outputDir:r,server:o,copy:n,noProxy:i,watchFilePaths:p=[]}=t;await j.default.emptyDir(r);let a=await x(),m=a.app.key,f=a.app.version,v=a.getFunctionFiles();if(!m){y.error("appKey is required!");return}if(!f){y.error("version is required!");return}let{domain:ot}=P();if(!ot){y.error("Please login in first!");return}let L=[],M=async()=>{await Promise.all(L.map(b=>b())),process.exit()};process.on("SIGINT",M),process.on("uncaughtException",M),process.on("unhandledRejection",M);let xe=`${`/${m}/development/${f}`}/server-side`,nt=N.default.join(r,xe);await ir(nt,n),await ge({inputDir:e,outputDir:nt,watchFilePaths:p}),L.push(()=>j.default.remove(r));let B="";if(o&&v.length>0){let{runtimeImage:b,containerPort:pt,containerEnv:Pe,containerName:Ee}=await nr(),T=new A(b,Ee);await T.downloadImage(),await T.runContainer({port:pt,env:Pe,volume:[`${r}:/usr/src/app/apps`]}),L.push(()=>T.removeContainer()),i||(B=await l({start:"start tunnel",error:"tunnel failed",succeed:"tunnel success"},()=>ue(pt)),or("runtimeHost",B)),T.logs()}if(!i&&(await me(m,B),L.push(()=>le(m)),o&&((at=(st=(it=a.getManifest())==null?void 0:it.modules)==null?void 0:st.webtrigger)!=null&&at.length))){console.info("You can use this url for test:");let b=`${ot}/apps/api/v1/:tenant/apps/${m}/environments/development/webtriggers/:webtriggerKey`;console.info(`POST ${b}`)}};var sr=["manifest.yml"],ve=async t=>{let{copy:e=[],input:r="src",output:o="cache",server:n=!0,proxy:i,watch:p=[]}=t;await he({outputDir:U.default.resolve(o),inputDir:U.default.resolve(r),copy:[...sr,...e],server:n,noProxy:!i,watchFilePaths:p.map(a=>U.default.resolve(a))})};var h=new we.Command;h.version(O).description("Giteeteam Apps Cli");h.command("build").option("--prod","build in production").option("--no-zip","no archive").option("-c --copy [letters...]","copy files").option("-i --input [dir]","input dir").option("-o --output [dir]","output dir").action(Rt);h.command("init").action(Ht);h.command("login").option("--domain [domain]","login domain").option("-u --username [username]","login username").option("-p --password [password]","login user password").action(ae);h.command("tunnel").option("-c --copy [letters...]","copy files").option("-i --input [dir]","input dir").option("-o --output [dir]","output dir,default cache").option("--no-server","no server").option("--no-proxy","no proxy").option("-w --watch [paths...]","watch files change").action(ve);h.command("deploy [filename]").option("-e --environment [environment]","app environment").action(Nt);h.parse(process.argv);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giteeteam/apps-cli",
3
- "version": "0.5.7-alpha.4",
3
+ "version": "0.5.7",
4
4
  "description": "Giteeteam Apps cli",
5
5
  "keywords": [
6
6
  "typescript",