@giteeteam/apps-cli 0.8.1 → 0.8.2-alpha.2

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 +3 -1
  2. package/package.json +3 -2
package/dist/index.js CHANGED
@@ -1,2 +1,4 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var Ut=Object.create;var pe=Object.defineProperty;var Nt=Object.getOwnPropertyDescriptor;var jt=Object.getOwnPropertyNames;var It=Object.getPrototypeOf,Ft=Object.prototype.hasOwnProperty;var Bt=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of jt(t))!Ft.call(e,n)&&n!==r&&pe(e,n,{get:()=>t[n],enumerable:!(o=Nt(t,n))||o.enumerable});return e};var a=(e,t,r)=>(r=e!=null?Ut(It(e)):{},Bt(t||!e||!e.__esModule?pe(r,"default",{value:e,enumerable:!0}):r,e));var Yo=require("dotenv/config"),Tt=require("commander");var v="0.8.1";var W=a(require("path"));var T=["manifest.yml","locales"];var je=a(require("fs-extra")),K=a(require("chalk"));var me=a(require("fs-extra")),$=a(require("path"));var F=a(require("path")),ce=a(require("fs-extra")),_=async(e,t)=>{for(let r of t)try{let o=F.default.resolve(r),n=F.default.join(e,r);await ce.default.copy(o,n)}catch(o){if(o.code==="ENOENT"&&r==="locales")continue;throw o}};var le=async({outputDir:e,manifest:t,filesToCopy:r})=>{let{resources:o}=t;if(o)for(let{key:n,path:i}of o){let s=$.default.resolve($.default.join("./",i)),p=$.default.join(e,n);await me.default.copy(s,p)}await _(e,r)};var ue=a(require("path")),de=a(require("archiver")),B=a(require("fs-extra")),fe=async(e,t)=>{let r=ue.default.resolve(t);return await B.default.remove(r),new Promise((o,n)=>{let i=B.default.createWriteStream(r),s=(0,de.default)("zip",{zlib:{level:9}});i.on("close",function(){o()}),s.on("warning",function(p){console.log(p),p.code==="ENOENT"||n(p)}),s.on("error",function(p){console.log(p),n(p)}),s.pipe(i),s.directory(e,!1),s.finalize()})};var he=require("rollup"),V=a(require("path")),we=a(require("fs"));var E=require("fs"),d=require("path"),ge=require("esbuild"),Vt={treeShaking:!0,format:"esm",loader:"tsx"};var zt=({source:e,dirPath:t,mode:r})=>{let o="";if(r==="development")try{return o=require.resolve(e+"/src/index.ts",{paths:[t]}),o}catch{}try{return o=require.resolve(e,{paths:[t]}),o}catch{}return o};function G({mode:e,...t}){return t={...Vt,...t},{name:"esbuild",resolveId(r,o,n){if(!o)return r;let i=(0,d.dirname)(o),s;if((0,E.existsSync)(s=(0,d.resolve)(i,r,"index.ts")))return s;if((0,E.existsSync)(s=(0,d.resolve)(i,r,"index.tsx")))return s;if((0,E.existsSync)(s=(0,d.resolve)(i,r+".ts")))return s;if((0,E.existsSync)(s=(0,d.resolve)(i,r+".tsx")))return s;{let p=zt({source:r,dirPath:i,mode:e});if((0,E.existsSync)(p))return p;throw console.error({source:r,importer:o,options:n}),s=(0,d.relative)(".",(0,d.resolve)(o,r)),new Error(`ENOENT: ${s.replace(/\\/g,"/")}`)}},async transform(r,o){t.sourcefile=o,t.loader=o.endsWith(".json")?"json":t.loader;let{code:n,map:i}=await(0,ge.transform)(r,t);return i?{code:n,map:i}:n}}}var ve=a(require("@rollup/plugin-commonjs"));function qt(e,t,r="development"){let o=[(0,ve.default)()];o.push(G({mode:r,sourcemap:r==="development",minify:r!=="development",target:"es2018",jsx:"transform",jsxFactory:"AppsUI.createElement",jsxFragment:"AppsUI.Fragment"}));let n={input:e,plugins:o},i={file:t,format:"es",sourcemap:r==="development"};return{inputOptions:n,outputOptions:i}}async function M(e){let{fileName:t,inputDir:r,outputDir:o,mode:n="development"}=e,i=V.default.join(r,`${t}.ts`);try{await we.default.promises.access(i)}catch{console.error(`${i} is not exist`);return}let s=V.default.join(o,`${t}.js`),{inputOptions:p,outputOptions:c}=qt(i,s,n);await(await(0,he.rollup)(p)).write(c)}var xe=async e=>{let{manifest:t,mode:r,outputDir:o,inputDir:n}=e,s=t.getFunctionFiles().map(async p=>{await M({inputDir:n,fileName:p,outputDir:o,mode:r})});await Promise.all(s)};var Pe=a(require("ora")),l=async(e,t)=>{var o,n;let r=(0,Pe.default)(e.start).start();try{let i=await t();return r.succeed(e.succeed),i}catch(i){throw r.fail(`${e.error}: ${((n=(o=i==null?void 0:i.response)==null?void 0:o.data)==null?void 0:n.message)||i.message}`),i}};var be=a(require("fs-extra")),Ee=require("@giteeteam/apps-manifest"),Oe=a(require("path")),O=async()=>{let e=Oe.default.resolve("manifest.yml"),t=await be.default.readFile(e);return new Ee.Manifest(t.toString())};var Ue=a(require("webpack"));var S=a(require("path")),ke=require("@ant-design/compatible"),Re=require("@giteeteam/apps-team-theme"),Se=a(require("@pmmmwh/react-refresh-webpack-plugin")),De=require("antd"),Ae=a(require("autoprefixer")),Le=require("clean-webpack-plugin"),Ce=a(require("css-minimizer-webpack-plugin")),Te=a(require("hasha")),_e=a(require("html-webpack-plugin")),z=a(require("mini-css-extract-plugin")),q=a(require("webpack")),Kt=require("webpack-bundle-analyzer").BundleAnalyzerPlugin,{defaultAlgorithm:Wt,defaultSeed:Ht}=De.theme,$e=Wt({...Ht,...Re.themeConfig.token}),Qt=(0,ke.convertLegacyToken)({...$e}),Jt=()=>e=>["window modules",e],Yt=()=>{let e=Jt();return{"react-dom":e("reactDOM"),react:e("react")}},Xt=process.env.GENERATE_SOURCEMAP==="true",Zt=process.env.ANALYZER_PACKAGE==="true";function Me({environment:e,appKey:t,distOutputPath:r="dist"}){let o=e==="production",n=e==="development",i=g=>g?{filename:"js/[name].[chunkhash].min.js",path:S.default.resolve(__dirname,r),publicPath:"./",library:t,libraryTarget:"umd"}:{filename:"main.js",path:S.default.resolve(__dirname,r),publicPath:"/",library:t,libraryTarget:"umd"},s=({resourcePath:g},_t,w)=>w===t||/\.global\.(css|less)$/.test(g)||/node_modules/.test(g)?w:`${w}__${(0,Te.default)(g+w,{algorithm:"md5"}).slice(0,8)}`,p={loader:"@ecomfe/class-names-loader",options:{classNamesModule:require.resolve("classnames")}},c=o?z.default.loader:"style-loader",u={loader:"postcss-loader",options:{postcssOptions:{plugins:[Ae.default]}}},m={loader:"css-loader",options:{modules:{getLocalIdent:s},importLoaders:1}},f={loader:"less-loader",options:{lessOptions:{javascriptEnabled:!0,modifyVars:{...$e,...Qt,"ant-prefix":t}}}};return{mode:e,entry:"./src/index.tsx",output:i(o),devtool:o?!1:"source-map",resolve:{extensions:[".js",".ts",".jsx",".tsx",".css",".less"]},optimization:{minimize:o,minimizer:[new Ce.default,"..."]},plugins:[Zt&&new Kt,new q.default.DefinePlugin({"process.env":JSON.stringify(process.env),"process.env.appKey":JSON.stringify(t)}),new _e.default({template:S.default.resolve(__dirname,"public/index.html"),filename:"index.html",inject:!0,appKey:t}),o&&new z.default({filename:"[name].[contenthash].css",chunkFilename:"[name].[contenthash].chunk.css"}),n&&new q.default.HotModuleReplacementPlugin,n&&new Se.default({overlay:!1}),o&&new Le.CleanWebpackPlugin].filter(Boolean),module:{rules:[{oneOf:[{test:/\.(js|mjs|jsx|ts|tsx)$/,include:S.default.resolve("./src"),loader:"swc-loader",options:{sourceMaps:Xt,jsc:{parser:{syntax:"typescript",tsx:!0},transform:{react:{runtime:"automatic",development:!o,refresh:!o}}},env:{targets:"chrome >= 72",mode:"usage",coreJs:"3.38"}}},{test:/\.css$/,use:[p,c,"css-loader",u]},{test:/\.less$/,use:[p,c,m,u,f]},{test:/\.(png|jpg|gif)$/i,use:[{loader:"url-loader",options:{name:"[name]_[hash].[ext]",limit:100*24}}]},{test:/\.svg$/i,use:["@svgr/webpack"]}]}]},externals:o?[{...Yt()}]:[]}}var Ne=async({appKey:e})=>new Promise((t,r)=>{let o=Me({environment:"production",appKey:e});(0,Ue.default)(o).run((i,s)=>{i&&(console.error(i),r(i)),console.info(s==null?void 0:s.toString()),t()})});var Ie=async({outputDir:e,inputDir:t,prod:r,filesToCopy:o,zip:n,ui:i})=>{console.info(`GiteeTeam Apps Cli ${K.default.bold.green(`v${v}`)}`),console.info(`Node.js ${K.default.bold.green(process.version)}`);let s=await O(),{version:p,key:c}=s.app;if(!c){console.error("manifest app key is required");return}if(!p){console.error("manifest app version is required");return}let{pass:u,errors:m}=s.validate();if(!u){if(m!=null&&m.length){let{message:f,path:h}=m[0];console.error(`Manifest valid error: Path '${h}', ${f}`)}else console.error("Manifest valid error");return}if(await je.default.emptyDir(e),i&&await l({start:"start build ui",error:"build ui failed",succeed:"build ui success"},()=>Ne({appKey:c})),await l({start:"start bundle",error:"bundle failed",succeed:"bundle success"},()=>xe({outputDir:e,inputDir:t,manifest:s,mode:r?"production":"development"})),await l({start:"start package",error:"package failed",succeed:"package success"},()=>le({outputDir:e,manifest:s,filesToCopy:o})),n){let f=`${c}_${p}.zip`;await l({start:"start archive",error:"archive failed",succeed:"archive success"},()=>fe(e,f))}};var Fe=async e=>{let{input:t="functions",output:r="package",prod:o,dev:n,copy:i=[],zip:s,ui:p}=e;await Ie({outputDir:W.default.resolve(r),inputDir:W.default.resolve(t),prod:o??!n,filesToCopy:[...T,...i],zip:s,ui:!!p})};var Y=a(require("inquirer")),D=a(require("fs-extra")),k=a(require("path"));var Q=a(require("simple-git")),H=a(require("fs-extra")),Be=async e=>{await(0,Q.default)(e).init()},Ge=async(e,t)=>{await H.default.pathExists(t)||await H.default.mkdir(t),await(0,Q.default)(t).clone(e,t)};var U=a(require("fs-extra")),Ve="https://github.com/moriahq/apps-template.git",J=(r=>(r.micro="micro",r.uikit="uikit",r))(J||{}),ze=async(e,t)=>{if(!await U.default.pathExists(e))return;let r=await U.default.readFile(e,{encoding:"utf-8"});await U.default.writeFile(e,r.replace(/{{(\w+)}}/g,(o,n)=>typeof t[n]=="string"?t[n]:o))};var qe=require("chalk"),Ke=a(require("readline")),We=a(require("execa")),tr=e=>{if(!qe.supportsColor){e.write("\r");return}Ke.default.cursorTo(e,0)},rr=(e,t)=>{let r=Math.min(Math.max(e/t,0),1),o=` ${e}/${t}`,n=Math.max(0,process.stderr.columns-o.length-3),i=Math.min(t,n),s=Math.round(i*r),p="#".repeat(s),c="-".repeat(i-s);tr(process.stderr),process.stderr.write(`[${p}${c}]${o}`)},or=(e,t,r,o)=>new Promise((n,i)=>{var p;let s=(0,We.default)(e,t,{cwd:r,stdio:["inherit","inherit","pipe"],env:o});(p=s.stderr)==null||p.on("data",c=>{let u=c.toString();if(/warning/.test(u))return;let m=u.match(/\[.*] (\d+)\/(\d+)/);if(m){rr(parseFloat(m[1]),parseFloat(m[2]));return}process.stderr.write(c)}),s.on("close",c=>{if(c!==0){i(new Error(`command failed: ${e} ${t.join(" ")}`));return}n()})}),He={executeCommand:or};var nr=async()=>(await Y.default.createPromptModule()({type:"input",name:"App Name",message:"Please enter an app name",validate:r=>!!r}))["App Name"],ir=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"],sr=async(e,t)=>{await l({start:"Start clone repository",error:"Clone repository failed!",succeed:"Clone repository success!"},()=>Ge(e,t))},ar=async e=>{await l({start:"Start install dependencies",error:"Install dependencies failed!",succeed:"Install dependencies success!"},()=>He.executeCommand("yarn",["install"],e))},Qe=async e=>{let{cwd:t}=e,r="micro",o=await nr(),n=await ir(),i=k.default.join(t,n);if(await D.default.pathExists(i)){console.error(`Project path already exists: ${i}`);return}await sr(Ve,i),await D.default.copy(k.default.join(i,r),i),await Promise.all(Object.values(J).map(p=>D.default.remove(k.default.join(i,p)))),await D.default.remove(k.default.join(i,"./.git"));let s=["./manifest.yml","./package.json","./webpack.config.js","./public/index.html","./src/App.tsx","./src/index.tsx","./static/App.tsx","./static/index.tsx"];await Promise.all(s.map(p=>ze(k.default.join(i,p),{appName:o,appKey:n}))),await ar(i),await Be(i),console.log("Project init success!"),console.log("Project path:"+i)};var Je=async()=>{let e=process.cwd();await Qe({cwd:e})};var N=a(require("inquirer"));var X=a(require("axios")),Ye=async({baseUrl:e,username:t,password:r})=>{var o;try{return{cookie:(o=(await(0,X.default)({method:"POST",url:`${e}/api/gateway/login`,data:{username:t,password:r}})).headers)==null?void 0:o["set-cookie"]}}catch(n){return console.error("Login error:",n==null?void 0:n.message),{cookie:""}}},Xe=async e=>{try{return await(0,X.default)({method:"GET",url:`${e}/apps/api/v1/tenants`}),!1}catch{return!0}};var Ze=a(require("path")),et=a(require("lowdb")),tt=a(require("lowdb/adapters/FileSync"));var Z,ee=()=>{if(!Z){let e=Ze.default.join(__dirname,"user.json"),t=new tt.default(e);Z=(0,et.default)(t)}return Z},rt=()=>{let e=ee(),t=e.get("version").value();(!t||t!==v)&&e.defaults({version:v,user:{}}).write()},te=e=>{rt(),ee().set("user",e).write()},R=()=>(rt(),ee().get("user").value());var ot=e=>{try{return new URL(e).origin}catch{return e}};var nt=a(require("crypto")),it=a(require("base64url")),pr=Buffer.from("ABCDEFGHIJKLM_iv","utf-8"),cr=Buffer.from("ABCDEFGHIJKL_key","utf-8"),mr="aes-128-cbc";var st=e=>{try{let t=nt.default.createCipheriv(mr,cr,pr),r=t.update(e,"utf8","base64");return r+=t.final("base64"),it.default.toBase64(r)}catch(t){return console.error(`Encryption error: ${t}`),null}};var lr=async()=>(await N.default.createPromptModule()({type:"input",name:"Domain",message:"Please enter the domain address",validate:r=>{try{return new URL(r),!0}catch{return"Please enter a valid domain name"}}})).Domain,ur=async()=>(await N.default.createPromptModule()({type:"input",name:"Username",message:"Please enter username",validate:r=>!!r})).Username,dr=async()=>(await N.default.createPromptModule()({type:"password",name:"Password",message:"Please enter password",validate:r=>!!r})).Password,at=async({domain:e,username:t,password:r})=>{if(e||(e=await lr()),e=ot(e),await Xe(e)){t||(t=await ur()),r||(r=await dr());let{cookie:n}=await Ye({baseUrl:e,username:t,password:st(r)||r});n?(te({domain:e,username:t,cookie:n}),console.info("Login success!")):console.error("Login failed!")}else te({domain:e}),console.info("Login success!")};var pt=async e=>{await at(e)};var oe=a(require("path"));var vt=a(require("path")),xt=a(require("chalk")),re=a(require("fs-extra")),Pt=a(require("debug"));var ct=a(require("axios"));var x=async({url:e,method:t,data:r,headers:o})=>{let{domain:n,cookie:i}=R();return(await(0,ct.default)({method:t,baseURL:n,url:e,data:r,headers:{...o,cookie:i}})).data};var mt=async()=>{var t;return((t=(await x({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:t.runtime)||{}};var j=require("child_process"),A=class{constructor(t,r){this.imageName=t,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:t,env:r,volume:o=[]}){await this.removeContainer();let n=Object.keys(r).map(p=>`-e ${p}=${r[p]}`).join(" "),i=o==null?void 0:o.map(p=>`-v ${p}`).join(" "),s=`docker run -d -p ${t}:${t} ${n} ${i} --name ${this.containerName} ${this.imageName}`;await this.execPromise(s)}async removeContainer(){await this.execPromise(`docker rm -f ${this.containerName}`).catch(()=>{})}logs(){let t=(0,j.spawn)("docker",["logs","-f",this.containerName]);t.stdout.on("data",r=>{console.log(`${r}`)}),t.stderr.on("data",r=>{console.log(`${r}`)})}execPromise(t){return new Promise((r,o)=>{(0,j.exec)(t,(n,i,s)=>{if(n)return o(n);r({stdout:i,stderr:s})})})}};var lt=a(require("localtunnel"));var ut=async({appKey:e,runtimeHost:t,resources:r,resourcePort:o})=>{r!=null&&r.length&&r.forEach(n=>{n.path=`http://127.0.0.1:${o}`}),await x({method:"POST",url:`/apps/api/v1/apps/tunnel/${e}`,data:{resources:r,runtimeHost:t}}).catch(n=>{var i,s;console.info(`addTunnel error ${((s=(i=n==null?void 0:n.response)==null?void 0:i.data)==null?void 0:s.message)||(n==null?void 0:n.message)}`)})},dt=async e=>{await x({method:"DELETE",url:`/apps/api/v1/apps/tunnel/${e}`}).catch(()=>{})},ft=async e=>{try{return(await(0,lt.default)({port:e,host:"http://tunnel.gitee.work:1777"})).url}catch(t){return console.info("runTunnel error",t==null?void 0:t.message),""}};var gt=a(require("chalk")),fr=gt.default.bold.red,y={error:e=>{console.info(fr(e))}};var ht=a(require("chokidar"));var yt=(e,t,r)=>{for(let o of e)M({inputDir:t,outputDir:r,fileName:o,mode:"development"})},wt=async e=>{let{inputDir:t,outputDir:r}=e,n=(await O()).getFunctionFiles();yt(n,t,r);let i,s=ht.default.watch(t);console.info(`watch: ${t}`),s.on("change",p=>{clearTimeout(i),i=setTimeout(()=>{console.info(`${p} has change`),yt(n,t,r)},1e3)})};var gr=(0,Pt.default)("cli:tunnel"),yr=async()=>{let e=await mt(),t=process.env.RUNTIME_IMAGE||e.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||e.parsePublicServerUrl,PARSE_SERVER_MASTER_KEY:process.env.PARSE_SERVER_MASTER_KEY||e.parseServerMasterKey,PROXIMA_CORE_URL:process.env.PROXIMA_CORE_URL||e.proximaCoreUrl,APPS_SERVER_URL:process.env.APPS_SERVER_URL||e.appsServerUrl,APPS_PARSE_SERVER_URL:process.env.APPS_PARSE_SERVER_URL||e.appsParseServerUrl,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:t,containerPort:r,containerName:o,containerEnv:n}},bt=async e=>{var ie,se,ae;let{inputDir:t,outputDir:r,server:o,filesToCopy:n,resourcePort:i}=e;await re.default.emptyDir(r);let s=await O(),p=s.app.key,c=s.app.version,u=s.getFunctionFiles(),m=s.resources||[];if(!p){y.error("appKey is required!");return}if(!c){y.error("version is required!");return}let{domain:f}=R();if(!f){y.error("Please login in first!");return}console.info(`Tunneling to ${xt.default.bold.green(f)}`);let h=[],g=async b=>{b instanceof Error&&console.error(b),await Promise.all(h.map(L=>L())),process.exit()};process.on("SIGINT",g),process.on("uncaughtException",g),process.on("unhandledRejection",g);let w=`${`/${p}/development/${c}`}/server-side`,ne=vt.default.join(r,w);await _(ne,n),await wt({inputDir:t,outputDir:ne}),h.push(()=>re.default.remove(r));let I="";if(o&&u.length>0){let{runtimeImage:b,containerPort:L,containerEnv:$t,containerName:Mt}=await yr(),C=new A(b,Mt);await C.downloadImage(),await C.runContainer({port:L,env:$t,volume:[`${r}:/usr/src/app/apps`]}),h.push(()=>C.removeContainer()),I=await l({start:"start tunnel",error:"tunnel failed",succeed:"tunnel success"},()=>ft(L)),gr("runtimeHost",I),C.logs()}if(await ut({appKey:p,runtimeHost:I,resources:m,resourcePort:i}),h.push(()=>dt(p)),o&&((ae=(se=(ie=s.getManifest())==null?void 0:ie.modules)==null?void 0:se.webtrigger)!=null&&ae.length)){console.log("You can use this url for test:");let b=`${f}/apps/api/v1/:tenant/apps/${p}/environments/development/webtriggers/:webtriggerKey`;console.log(`POST ${b}`)}};var Et=async e=>{let{copy:t=[],input:r="functions",output:o="cache",server:n=!0,resourcePort:i}=e;await bt({outputDir:oe.default.resolve(o),inputDir:oe.default.resolve(r),filesToCopy:[...T,...t],server:n,resourcePort:Number(i)||8e3})};var Dt=a(require("fs")),At=a(require("chalk"));var Ot=a(require("fs")),kt=a(require("path")),Rt=a(require("form-data"));var St=async(e,t)=>{let r=new Rt.default;r.append("environmentKey",t),r.append("package",Ot.default.createReadStream(kt.default.resolve(e))),await x({method:"POST",url:"/apps/api/v1/apps/deploy",data:r,headers:{...r.getHeaders()}})};var Lt=(o=>(o.DEVELOPMENT="development",o.STAGING="staging",o.PRODUCTION="production",o))(Lt||{}),Ct=async(e,t)=>{let{domain:r}=R(),{environment:o="development"}=t;if(!Object.values(Lt).includes(o)){y.error("Only support development, staging, production environment.");return}if(!r){y.error("Please login in first!");return}if(!Dt.default.existsSync(e)){y.error(`File:${e} is not exist`);return}console.info(`Deploying to ${At.default.bold.green(r)}`),await l({start:"start deploy",error:"deploy failed",succeed:"deploy success"},()=>St(e,o)).catch(()=>{})};var P=new Tt.Command;P.version(v,"-v -V --vers").description("Giteeteam Apps Cli");P.command("build").option("--prod","build in production").option("--dev","build in development").option("--no-zip","no archive").option("-c --copy [letters...]","copy files").option("-i --input [dir]","input dir").option("-o --output [dir]","output dir").option("--ui","build ui").option("-w --webpack [file]","build ui webpack config file").action(Fe);P.command("init").action(Je);P.command("login").option("--domain [domain]","login domain").option("-u --username [username]","login username").option("-p --password [password]","login user password").action(pt);P.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("--resourcePort [number]","resource port").action(Et);P.command("deploy [filename]").option("-e --environment [environment]","app environment").action(Ct);P.parse(process.argv);
2
+ "use strict";var Ht=Object.create;var ue=Object.defineProperty;var Qt=Object.getOwnPropertyDescriptor;var Jt=Object.getOwnPropertyNames;var Yt=Object.getPrototypeOf,Xt=Object.prototype.hasOwnProperty;var Zt=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Jt(t))!Xt.call(e,n)&&n!==r&&ue(e,n,{get:()=>t[n],enumerable:!(o=Qt(t,n))||o.enumerable});return e};var s=(e,t,r)=>(r=e!=null?Ht(Yt(e)):{},Zt(t||!e||!e.__esModule?ue(r,"default",{value:e,enumerable:!0}):r,e));var bn=require("dotenv/config"),ae=s(require("chalk")),qt=require("commander");var E="0.8.2-alpha.2";var Q=s(require("path"));var T=["manifest.yml","locales"];var Ve=s(require("fs-extra"));var de=s(require("fs-extra")),$=s(require("path"));var V=s(require("path")),fe=s(require("fs-extra")),_=async(e,t)=>{for(let r of t)try{let o=V.default.resolve(r),n=V.default.join(e,r);await fe.default.copy(o,n)}catch(o){if(o.code==="ENOENT"&&r==="locales")continue;throw o}};var ge=async({outputDir:e,manifest:t,filesToCopy:r})=>{let{resources:o}=t;if(o)for(let{key:n,path:i}of o){let a=$.default.resolve($.default.join("./",i)),p=$.default.join(e,n);await de.default.copy(a,p)}await _(e,r)};var we=s(require("path")),ye=s(require("archiver")),q=s(require("fs-extra")),he=async(e,t)=>{let r=we.default.resolve(t);return await q.default.remove(r),new Promise((o,n)=>{let i=q.default.createWriteStream(r),a=(0,ye.default)("zip",{zlib:{level:9}});i.on("close",function(){o()}),a.on("warning",function(p){console.log(p),p.code==="ENOENT"||n(p)}),a.on("error",function(p){console.log(p),n(p)}),a.pipe(i),a.directory(e,!1),a.finalize()})};var xe=require("rollup"),K=s(require("path")),Pe=s(require("fs"));var k=require("fs"),g=require("path"),ve=require("esbuild"),tr={treeShaking:!0,format:"esm",loader:"tsx"};var rr=({source:e,dirPath:t,mode:r})=>{let o="";if(r==="development")try{return o=require.resolve(e+"/src/index.ts",{paths:[t]}),o}catch{}try{return o=require.resolve(e,{paths:[t]}),o}catch{}return o};function z({mode:e,...t}){return t={...tr,...t},{name:"esbuild",resolveId(r,o,n){if(!o)return r;let i=(0,g.dirname)(o),a;if((0,k.existsSync)(a=(0,g.resolve)(i,r,"index.ts")))return a;if((0,k.existsSync)(a=(0,g.resolve)(i,r,"index.tsx")))return a;if((0,k.existsSync)(a=(0,g.resolve)(i,r+".ts")))return a;if((0,k.existsSync)(a=(0,g.resolve)(i,r+".tsx")))return a;{let p=rr({source:r,dirPath:i,mode:e});if((0,k.existsSync)(p))return p;throw console.error({source:r,importer:o,options:n}),a=(0,g.relative)(".",(0,g.resolve)(o,r)),new Error(`ENOENT: ${a.replace(/\\/g,"/")}`)}},async transform(r,o){t.sourcefile=o,t.loader=o.endsWith(".json")?"json":t.loader;let{code:n,map:i}=await(0,ve.transform)(r,t);return i?{code:n,map:i}:n}}}var Ee=s(require("@rollup/plugin-commonjs"));function or(e,t,r="development"){let o=[(0,Ee.default)()];o.push(z({mode:r,sourcemap:r==="development",minify:r!=="development",target:"es2018",jsx:"transform",jsxFactory:"AppsUI.createElement",jsxFragment:"AppsUI.Fragment"}));let n={input:e,plugins:o},i={file:t,format:"es",sourcemap:r==="development"};return{inputOptions:n,outputOptions:i}}async function M(e){let{fileName:t,inputDir:r,outputDir:o,mode:n="development"}=e,i=K.default.join(r,`${t}.ts`);try{await Pe.default.promises.access(i)}catch{console.error(`${i} is not exist`);return}let a=K.default.join(o,`${t}.js`),{inputOptions:p,outputOptions:c}=or(i,a,n);await(await(0,xe.rollup)(p)).write(c)}var ke=async e=>{let{manifest:t,mode:r,outputDir:o,inputDir:n}=e,a=t.getFunctionFiles().map(async p=>{await M({inputDir:n,fileName:p,outputDir:o,mode:r})});await Promise.all(a)};var Oe=s(require("ora")),u=async(e,t)=>{var o,n;let r=(0,Oe.default)(e.start).start();try{let i=await t();return r.succeed(e.succeed),i}catch(i){throw r.fail(`${e.error}: ${((n=(o=i==null?void 0:i.response)==null?void 0:o.data)==null?void 0:n.message)||i.message}`),i}};var De=s(require("fs-extra")),Re=require("@giteeteam/apps-manifest"),Se=s(require("path")),v=async()=>{let e=Se.default.resolve("manifest.yml"),t=await De.default.readFile(e);return new Re.Manifest(t.toString())};var Ie=s(require("path")),Fe=s(require("webpack")),Be=s(require("webpack-merge"));var U=s(require("path")),Ce=require("@ant-design/compatible"),Ae=require("@giteeteam/apps-team-theme"),Le=s(require("@pmmmwh/react-refresh-webpack-plugin")),Te=require("antd"),_e=s(require("autoprefixer")),$e=require("clean-webpack-plugin"),Me=s(require("css-minimizer-webpack-plugin")),Ue=s(require("hasha")),Ne=s(require("html-webpack-plugin")),W=s(require("mini-css-extract-plugin")),H=s(require("webpack")),nr=require("webpack-bundle-analyzer").BundleAnalyzerPlugin,{defaultAlgorithm:ir,defaultSeed:sr}=Te.theme,je=ir({...sr,...Ae.themeConfig.token}),ar=(0,Ce.convertLegacyToken)({...je}),pr=()=>e=>["window modules",e],cr=()=>{let e=pr();return{"react-dom":e("reactDOM"),react:e("react")}},mr=process.env.GENERATE_SOURCEMAP==="true",lr=process.env.ANALYZER_PACKAGE==="true";function N({environment:e,appKey:t,distOutputPath:r="dist"}){let o=e==="production",n=e==="development",i=f=>f?{filename:"js/[name].[chunkhash].min.js",path:U.default.resolve(r),publicPath:"./",library:t,libraryTarget:"umd"}:{filename:"main.js",path:U.default.resolve(r),publicPath:"/",library:t,libraryTarget:"umd"},a=({resourcePath:f},R,h)=>h===t||/\.global\.(css|less)$/.test(f)||/node_modules/.test(f)?h:`${h}__${(0,Ue.default)(f+h,{algorithm:"md5"}).slice(0,8)}`,p={loader:"@ecomfe/class-names-loader",options:{classNamesModule:require.resolve("classnames")}},c=o?W.default.loader:"style-loader",m={loader:"postcss-loader",options:{postcssOptions:{plugins:[_e.default]}}},l={loader:"css-loader",options:{modules:{getLocalIdent:a},importLoaders:1}},d={loader:"less-loader",options:{lessOptions:{javascriptEnabled:!0,modifyVars:{...je,...ar,"ant-prefix":t}}}};return{mode:e,entry:"./src/index.tsx",output:i(o),devtool:o?!1:"source-map",resolve:{extensions:[".js",".ts",".jsx",".tsx",".css",".less"]},optimization:{minimize:o,minimizer:[new Me.default,"..."]},plugins:[lr&&new nr,new H.default.DefinePlugin({"process.env":JSON.stringify(process.env),"process.env.appKey":JSON.stringify(t)}),new Ne.default({template:U.default.resolve("public/index.html"),filename:"index.html",inject:!0,appKey:t}),o&&new W.default({filename:"[name].[contenthash].css",chunkFilename:"[name].[contenthash].chunk.css"}),n&&new H.default.HotModuleReplacementPlugin,n&&new Le.default({overlay:!1}),o&&new $e.CleanWebpackPlugin].filter(Boolean),module:{rules:[{oneOf:[{test:/\.(js|mjs|jsx|ts|tsx)$/,exclude:/node_modules/,loader:"swc-loader",options:{sourceMaps:mr,jsc:{parser:{syntax:"typescript",tsx:!0},transform:{react:{runtime:"automatic",development:!o,refresh:!o}}},env:{targets:"chrome >= 72",mode:"usage",coreJs:"3.38"}}},{test:/\.css$/,use:[p,c,"css-loader",m]},{test:/\.less$/,use:[p,c,l,m,d]},{test:/\.(png|jpg|gif)$/i,use:[{loader:"url-loader",options:{name:"[name]_[hash].[ext]",limit:100*24}}]},{test:/\.svg$/i,use:["@svgr/webpack"]}]}]},externals:[{...cr()}]}}var Ge=async({appKey:e,webpackConfig:t})=>new Promise((r,o)=>{let n=N({environment:"production",appKey:e});if(t){let a=require(Ie.default.resolve(t));n=(0,Be.default)(n,a)}(0,Fe.default)(n).run((a,p)=>{if(a)return console.error(a),o(a);if(console.info(p==null?void 0:p.toString()),p!=null&&p.hasErrors())return o();r()})});var qe=async({outputDir:e,inputDir:t,prod:r,filesToCopy:o,zip:n,ui:i,webpackConfig:a})=>{let p=await v(),{version:c,key:m}=p.app;if(!m){console.error("manifest app key is required");return}if(!c){console.error("manifest app version is required");return}let{pass:l,errors:d}=p.validate();if(!l){if(d!=null&&d.length){let{message:y,path:f}=d[0];console.error(`Manifest valid error: Path '${f}', ${y}`)}else console.error("Manifest valid error");return}if(await Ve.default.emptyDir(e),i&&await u({start:"start build ui",error:"build ui failed",succeed:"build ui success"},()=>Ge({appKey:m,webpackConfig:a})),await u({start:"start bundle",error:"bundle failed",succeed:"bundle success"},()=>ke({outputDir:e,inputDir:t,manifest:p,mode:r?"production":"development"})),await u({start:"start package",error:"package failed",succeed:"package success"},()=>ge({outputDir:e,manifest:p,filesToCopy:o})),n){let y=`${m}_${c}.zip`;await u({start:"start archive",error:"archive failed",succeed:"archive success"},()=>he(e,y))}};var ze=async e=>{let{input:t="functions",output:r="package",prod:o,dev:n,copy:i=[],zip:a,ui:p,webpack:c}=e;await qe({outputDir:Q.default.resolve(r),inputDir:Q.default.resolve(t),prod:o??!n,filesToCopy:[...T,...i],zip:a,ui:!!p,webpackConfig:c})};var Z=s(require("inquirer")),S=s(require("fs-extra")),O=s(require("path"));var Y=s(require("simple-git")),J=s(require("fs-extra")),Ke=async e=>{await(0,Y.default)(e).init()},We=async(e,t)=>{await J.default.pathExists(t)||await J.default.mkdir(t),await(0,Y.default)(t).clone(e,t)};var j=s(require("fs-extra")),He="https://github.com/moriahq/apps-template.git",X=(r=>(r.micro="micro",r.uikit="uikit",r))(X||{}),Qe=async(e,t)=>{if(!await j.default.pathExists(e))return;let r=await j.default.readFile(e,{encoding:"utf-8"});await j.default.writeFile(e,r.replace(/{{(\w+)}}/g,(o,n)=>typeof t[n]=="string"?t[n]:o))};var Je=require("chalk"),Ye=s(require("readline")),Xe=s(require("execa")),fr=e=>{if(!Je.supportsColor){e.write("\r");return}Ye.default.cursorTo(e,0)},dr=(e,t)=>{let r=Math.min(Math.max(e/t,0),1),o=` ${e}/${t}`,n=Math.max(0,process.stderr.columns-o.length-3),i=Math.min(t,n),a=Math.round(i*r),p="#".repeat(a),c="-".repeat(i-a);fr(process.stderr),process.stderr.write(`[${p}${c}]${o}`)},gr=(e,t,r,o)=>new Promise((n,i)=>{var p;let a=(0,Xe.default)(e,t,{cwd:r,stdio:["inherit","inherit","pipe"],env:o});(p=a.stderr)==null||p.on("data",c=>{let m=c.toString();if(/warning/.test(m))return;let l=m.match(/\[.*] (\d+)\/(\d+)/);if(l){dr(parseFloat(l[1]),parseFloat(l[2]));return}process.stderr.write(c)}),a.on("close",c=>{if(c!==0){i(new Error(`command failed: ${e} ${t.join(" ")}`));return}n()})}),Ze={executeCommand:gr};var wr=async()=>(await Z.default.createPromptModule()({type:"input",name:"App Name",message:"Please enter an app name",validate:r=>!!r}))["App Name"],yr=async()=>(await Z.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"],hr=async(e,t)=>{await u({start:"Start clone repository",error:"Clone repository failed!",succeed:"Clone repository success!"},()=>We(e,t))},vr=async e=>{await u({start:"Start install dependencies",error:"Install dependencies failed!",succeed:"Install dependencies success!"},()=>Ze.executeCommand("yarn",["install"],e))},et=async e=>{let{cwd:t}=e,r="micro",o=await wr(),n=await yr(),i=O.default.join(t,n);if(await S.default.pathExists(i)){console.error(`Project path already exists: ${i}`);return}await hr(He,i),await S.default.copy(O.default.join(i,r),i),await Promise.all(Object.values(X).map(p=>S.default.remove(O.default.join(i,p)))),await S.default.remove(O.default.join(i,"./.git"));let a=["./manifest.yml","./package.json","./webpack.config.js","./public/index.html","./src/App.tsx","./src/index.tsx","./static/App.tsx","./static/index.tsx"];await Promise.all(a.map(p=>Qe(O.default.join(i,p),{appName:o,appKey:n}))),await vr(i),await Ke(i),console.log("Project init success!"),console.log("Project path:"+i)};var tt=async()=>{let e=process.cwd();await et({cwd:e})};var I=s(require("inquirer"));var ee=s(require("axios")),rt=async({baseUrl:e,username:t,password:r})=>{var o;try{return{cookie:(o=(await(0,ee.default)({method:"POST",url:`${e}/api/gateway/login`,data:{username:t,password:r}})).headers)==null?void 0:o["set-cookie"]}}catch(n){return console.error("Login error:",n==null?void 0:n.message),{cookie:""}}},ot=async e=>{try{return await(0,ee.default)({method:"GET",url:`${e}/apps/api/v1/tenants`}),!1}catch{return!0}};var nt=s(require("path")),it=s(require("lowdb")),st=s(require("lowdb/adapters/FileSync"));var te,re=()=>{if(!te){let e=nt.default.join(__dirname,"user.json"),t=new st.default(e);te=(0,it.default)(t)}return te},at=()=>{let e=re(),t=e.get("version").value();(!t||t!==E)&&e.defaults({version:E,user:{}}).write()},oe=e=>{at(),re().set("user",e).write()},D=()=>(at(),re().get("user").value());var pt=e=>{try{return new URL(e).origin}catch{return e}};var ct=s(require("crypto")),mt=s(require("base64url")),br=Buffer.from("ABCDEFGHIJKLM_iv","utf-8"),xr=Buffer.from("ABCDEFGHIJKL_key","utf-8"),Pr="aes-128-cbc";var lt=e=>{try{let t=ct.default.createCipheriv(Pr,xr,br),r=t.update(e,"utf8","base64");return r+=t.final("base64"),mt.default.toBase64(r)}catch(t){return console.error(`Encryption error: ${t}`),null}};var Er=async()=>(await I.default.createPromptModule()({type:"input",name:"Domain",message:"Please enter the domain address",validate:r=>{try{return new URL(r),!0}catch{return"Please enter a valid domain name"}}})).Domain,kr=async()=>(await I.default.createPromptModule()({type:"input",name:"Username",message:"Please enter username",validate:r=>!!r})).Username,Or=async()=>(await I.default.createPromptModule()({type:"password",name:"Password",message:"Please enter password",validate:r=>!!r})).Password,ut=async({domain:e,username:t,password:r})=>{if(e||(e=await Er()),e=pt(e),await ot(e)){t||(t=await kr()),r||(r=await Or());let{cookie:n}=await rt({baseUrl:e,username:t,password:lt(r)||r});n?(oe({domain:e,username:t,cookie:n}),console.info("Login success!")):console.error("Login failed!")}else oe({domain:e}),console.info("Login success!")};var ft=async e=>{await ut(e)};var se=s(require("path"));var Ct=s(require("path")),At=s(require("chalk")),ie=s(require("fs-extra")),Lt=s(require("debug"));var dt=s(require("axios"));var x=async({url:e,method:t,data:r,headers:o})=>{let{domain:n,cookie:i}=D();return(await(0,dt.default)({method:t,baseURL:n,url:e,data:r,headers:{...o,cookie:i}})).data};var gt=async()=>{var t;return((t=(await x({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:t.runtime)||{}};var F=require("child_process"),C=class{constructor(t,r){this.imageName=t,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:t,env:r,volume:o=[]}){await this.removeContainer();let n=Object.keys(r).map(p=>`-e ${p}=${r[p]}`).join(" "),i=o==null?void 0:o.map(p=>`-v ${p}`).join(" "),a=`docker run -d -p ${t}:${t} ${n} ${i} --name ${this.containerName} ${this.imageName}`;await this.execPromise(a)}async removeContainer(){await this.execPromise(`docker rm -f ${this.containerName}`).catch(()=>{})}logs(){let t=(0,F.spawn)("docker",["logs","-f",this.containerName]);t.stdout.on("data",r=>{console.log(`${r}`)}),t.stderr.on("data",r=>{console.log(`${r}`)})}execPromise(t){return new Promise((r,o)=>{(0,F.exec)(t,(n,i,a)=>{if(n)return o(n);r({stdout:i,stderr:a})})})}};var wt=s(require("localtunnel"));var yt=async({appKey:e,runtimeHost:t,resources:r,resourcePort:o})=>{r!=null&&r.length&&r.forEach(n=>{n.path=`http://127.0.0.1:${o}`}),await x({method:"POST",url:`/apps/api/v1/apps/tunnel/${e}`,data:{resources:r,runtimeHost:t}}).catch(n=>{var i,a;console.info(`addTunnel error ${((a=(i=n==null?void 0:n.response)==null?void 0:i.data)==null?void 0:a.message)||(n==null?void 0:n.message)}`)})},ht=async e=>{await x({method:"DELETE",url:`/apps/api/v1/apps/tunnel/${e}`}).catch(()=>{})},vt=async e=>{try{return(await(0,wt.default)({port:e,host:"http://tunnel.gitee.work:1777"})).url}catch(t){return console.info("runTunnel error",t==null?void 0:t.message),""}};var ne=s(require("path")),bt=s(require("express")),xt=s(require("webpack")),Pt=require("webpack-merge"),Et=s(require("webpack-dev-middleware")),kt=s(require("cors"));var B=({appKey:e,webpackConfig:t})=>{let r=N({environment:"development",appKey:e});if(t){let p=require(ne.default.resolve(t));r=(0,Pt.merge)(r,p)}let o=(0,xt.default)(r),n=(0,bt.default)(),i=Number(process.env.UI_PORT)||8e3,a=(0,Et.default)(o);n.use((0,kt.default)()),n.use(a),n.get("*",(p,c)=>{var m,l;(l=o.outputFileSystem)==null||l.readFile(ne.default.join(((m=r.output)==null?void 0:m.path)||"","index.html"),(d,y)=>{if(d||!y){c.sendStatus(404);return}c.send(y.toString())})}),n.listen(i,"0.0.0.0",()=>{console.info(`The React app is listening on port ${i}!
3
+ `)})};var Ot=s(require("chalk")),Dr=Ot.default.bold.red,w={error:e=>{console.info(Dr(e))}};var Rt=s(require("chokidar"));var Dt=(e,t,r)=>{for(let o of e)M({inputDir:t,outputDir:r,fileName:o,mode:"development"})},St=async e=>{let{inputDir:t,outputDir:r}=e,n=(await v()).getFunctionFiles();Dt(n,t,r);let i,a=Rt.default.watch(t);console.info(`watch: ${t}`),a.on("change",p=>{clearTimeout(i),i=setTimeout(()=>{console.info(`${p} has change`),Dt(n,t,r)},1e3)})};var Rr=(0,Lt.default)("cli:tunnel"),Sr=async()=>{let e=await gt(),t=process.env.RUNTIME_IMAGE||e.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||e.parsePublicServerUrl,PARSE_SERVER_MASTER_KEY:process.env.PARSE_SERVER_MASTER_KEY||e.parseServerMasterKey,PROXIMA_CORE_URL:process.env.PROXIMA_CORE_URL||e.proximaCoreUrl,APPS_SERVER_URL:process.env.APPS_SERVER_URL||e.appsServerUrl,APPS_PARSE_SERVER_URL:process.env.APPS_PARSE_SERVER_URL||e.appsParseServerUrl,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:t,containerPort:r,containerName:o,containerEnv:n}},Tt=async e=>{var ce,me,le;let{inputDir:t,outputDir:r,server:o,filesToCopy:n,resourcePort:i,ui:a,webpackConfig:p}=e;await ie.default.emptyDir(r);let c=await v(),m=c.app.key,l=c.app.version,d=c.getFunctionFiles(),y=c.resources||[];if(!m){w.error("appKey is required!");return}if(!l){w.error("version is required!");return}let{domain:f}=D();if(!f){w.error("Please login in first!");return}console.info(`Tunneling to ${At.default.bold.green(f)}`);let R=[],h=async P=>{P instanceof Error&&console.error(P),await Promise.all(R.map(A=>A())),process.exit()};process.on("SIGINT",h),process.on("uncaughtException",h),process.on("unhandledRejection",h),a&&B({appKey:m,webpackConfig:p});let zt=`${`/${m}/development/${l}`}/server-side`,pe=Ct.default.join(r,zt);await _(pe,n),await St({inputDir:t,outputDir:pe}),R.push(()=>ie.default.remove(r));let G="";if(o&&d.length>0){let{runtimeImage:P,containerPort:A,containerEnv:Kt,containerName:Wt}=await Sr(),L=new C(P,Wt);await L.downloadImage(),await L.runContainer({port:A,env:Kt,volume:[`${r}:/usr/src/app/apps`]}),R.push(()=>L.removeContainer()),G=await u({start:"start tunnel",error:"tunnel failed",succeed:"tunnel success"},()=>vt(A)),Rr("runtimeHost",G),L.logs()}if(await yt({appKey:m,runtimeHost:G,resources:y,resourcePort:i}),R.push(()=>ht(m)),o&&((le=(me=(ce=c.getManifest())==null?void 0:ce.modules)==null?void 0:me.webtrigger)!=null&&le.length)){console.log("You can use this url for test:");let P=`${f}/apps/api/v1/:tenant/apps/${m}/environments/development/webtriggers/:webtriggerKey`;console.log(`POST ${P}`)}};var _t=async e=>{let{copy:t=[],input:r="functions",output:o="cache",server:n=!0,resourcePort:i,ui:a,webpack:p}=e;await Tt({outputDir:se.default.resolve(o),inputDir:se.default.resolve(r),filesToCopy:[...T,...t],server:n,resourcePort:Number(i)||8e3,ui:!!a,webpackConfig:p})};var jt=s(require("fs")),It=s(require("chalk"));var $t=s(require("fs")),Mt=s(require("path")),Ut=s(require("form-data"));var Nt=async(e,t)=>{let r=new Ut.default;r.append("environmentKey",t),r.append("package",$t.default.createReadStream(Mt.default.resolve(e))),await x({method:"POST",url:"/apps/api/v1/apps/deploy",data:r,headers:{...r.getHeaders()}})};var Ft=(o=>(o.DEVELOPMENT="development",o.STAGING="staging",o.PRODUCTION="production",o))(Ft||{}),Bt=async(e,t)=>{let{domain:r}=D(),{environment:o="development"}=t;if(!Object.values(Ft).includes(o)){w.error("Only support development, staging, production environment.");return}if(!r){w.error("Please login in first!");return}if(!jt.default.existsSync(e)){w.error(`File:${e} is not exist`);return}console.info(`Deploying to ${It.default.bold.green(r)}`),await u({start:"start deploy",error:"deploy failed",succeed:"deploy success"},()=>Nt(e,o)).catch(()=>{})};var Cr=async({webpackConfig:e})=>{let t=await v(),{key:r}=t.app;if(!r){w.error("manifest app key is required");return}B({appKey:r,webpackConfig:e})},Gt=Cr;var Vt=async e=>{let{webpack:t}=e;await Gt({webpackConfig:t})};console.info(`GiteeTeam Apps Cli ${ae.default.bold.green(`v${E}`)}`);console.info(`Node.js ${ae.default.bold.green(process.version)}
4
+ `);var b=new qt.Command;b.version(E,"-v -V --vers").description("Giteeteam Apps Cli");b.command("build").option("--prod","build in production").option("--dev","build in development").option("--no-zip","no archive").option("-c --copy [letters...]","copy files").option("-i --input [dir]","input dir").option("-o --output [dir]","output dir").option("--ui","build ui").option("-w --webpack [file]","build ui webpack config file").action(ze);b.command("init").action(tt);b.command("login").option("--domain [domain]","login domain").option("-u --username [username]","login username").option("-p --password [password]","login user password").action(ft);b.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("--resourcePort [number]","resource port").option("--ui","build ui").option("-w --webpack [file]","build ui webpack config file").action(_t);b.command("deploy [filename]").option("-e --environment [environment]","app environment").action(Bt);b.command("ui-dev").option("-w --webpack [file]","build ui webpack config file").action(Vt);b.parse(process.argv);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giteeteam/apps-cli",
3
- "version": "0.8.1",
3
+ "version": "0.8.2-alpha.2",
4
4
  "description": "Giteeteam Apps cli",
5
5
  "keywords": [
6
6
  "typescript",
@@ -62,7 +62,8 @@
62
62
  "simple-git": "^3.19.1",
63
63
  "webpack": "^5.88.1",
64
64
  "webpack-bundle-analyzer": "^4.9.0",
65
- "webpack-dev-middleware": "^6.1.1"
65
+ "webpack-dev-middleware": "^6.1.1",
66
+ "webpack-merge": "^6.0.1"
66
67
  },
67
68
  "devDependencies": {
68
69
  "@types/archiver": "^5.3.1",