@giteeteam/apps-cli 0.8.4 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +3 -3
  2. package/package.json +4 -4
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var Jt=Object.create;var V=Object.defineProperty;var Yt=Object.getOwnPropertyDescriptor;var Xt=Object.getOwnPropertyNames;var Zt=Object.getPrototypeOf,er=Object.prototype.hasOwnProperty;var tr=(e,t)=>()=>(e&&(t=e(e=0)),t);var rr=(e,t)=>{for(var r in t)V(e,r,{get:t[r],enumerable:!0})},or=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Xt(t))!er.call(e,n)&&n!==r&&V(e,n,{get:()=>t[n],enumerable:!(o=Yt(t,n))||o.enumerable});return e};var s=(e,t,r)=>(r=e!=null?Jt(Zt(e)):{},or(t||!e||!e.__esModule?V(r,"default",{value:e,enumerable:!0}):r,e));var Ie={};rr(Ie,{default:()=>wr});function wr({environment:e,appKey:t,distOutputPath:r="dist"}){let o=e==="production",n=e==="development",i=u=>u?{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:u},C,y)=>y===t||/\.global\.(css|less)$/.test(u)||/node_modules/.test(u)?y:`${y}__${(0,Ue.default)(u+y,{algorithm:"md5"}).slice(0,8)}`,p={loader:"@ecomfe/class-names-loader",options:{classNamesModule:require.resolve("classnames")}},c=o?H.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,...lr,"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:[gr&&new pr,new Q.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 H.default({filename:"[name].[contenthash].css",chunkFilename:"[name].[contenthash].chunk.css"}),n&&new Q.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:dr,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:[{...fr()}]}}var U,Se,Ae,Le,Te,_e,$e,Me,Ue,Ne,H,Q,pr,cr,mr,je,lr,ur,fr,dr,gr,Fe=tr(()=>{"use strict";U=s(require("path")),Se=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")),H=s(require("mini-css-extract-plugin")),Q=s(require("webpack")),pr=require("webpack-bundle-analyzer").BundleAnalyzerPlugin,{defaultAlgorithm:cr,defaultSeed:mr}=Te.theme,je=cr({...mr,...Ae.themeConfig.token}),lr=(0,Se.convertLegacyToken)({...je}),ur=()=>e=>["window modules",e],fr=()=>{let e=ur();return{"react-dom":e("reactDOM"),react:e("react")}},dr=process.env.GENERATE_SOURCEMAP==="true",gr=process.env.ANALYZER_PACKAGE==="true"});var On=require("dotenv/config"),pe=s(require("chalk")),Wt=require("commander");var k="0.8.4";var J=s(require("path"));var T=["manifest.yml","locales"];var ze=s(require("fs-extra"));var de=s(require("fs-extra")),$=s(require("path"));var q=s(require("path")),fe=s(require("fs-extra")),_=async(e,t)=>{for(let r of t)try{let o=q.default.resolve(r),n=q.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")),z=s(require("fs-extra")),he=async(e,t)=>{let r=we.default.resolve(t);return await z.default.remove(r),new Promise((o,n)=>{let i=z.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 E=require("fs"),g=require("path"),ve=require("esbuild"),ir={treeShaking:!0,format:"esm",loader:"tsx"};var sr=({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 W({mode:e,...t}){return t={...ir,...t},{name:"esbuild",resolveId(r,o,n){if(!o)return r;let i=(0,g.dirname)(o),a;if((0,E.existsSync)(a=(0,g.resolve)(i,r,"index.ts")))return a;if((0,E.existsSync)(a=(0,g.resolve)(i,r,"index.tsx")))return a;if((0,E.existsSync)(a=(0,g.resolve)(i,r+".ts")))return a;if((0,E.existsSync)(a=(0,g.resolve)(i,r+".tsx")))return a;{let p=sr({source:r,dirPath:i,mode:e});if((0,E.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 ke=s(require("@rollup/plugin-commonjs"));function ar(e,t,r="development"){let o=[(0,ke.default)()];o.push(W({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}=ar(i,a,n);await(await(0,xe.rollup)(p)).write(c)}var Ee=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")),f=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")),Ce=require("@giteeteam/apps-manifest"),Re=s(require("path")),v=async()=>{let e=Re.default.resolve("manifest.yml"),t=await De.default.readFile(e);return new Ce.Manifest(t.toString())};var Be=s(require("path")),Ge=s(require("webpack")),Ve=s(require("webpack-merge"));var N=async()=>(await Promise.resolve().then(()=>(Fe(),Ie))).default;var qe=async({appKey:e,webpackConfig:t})=>{let r=await N();return new Promise((o,n)=>{let i=r({environment:"production",appKey:e});if(t){let p=require(Be.default.resolve(t));i=(0,Ve.default)(i,p)}(0,Ge.default)(i).run((p,c)=>{if(p)return console.error(p),n(p);if(console.info(c==null?void 0:c.toString()),c!=null&&c.hasErrors())return n(new Error("build-ui-error"));o()})})};var We=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:h,path:u}=d[0];console.error(`Manifest valid error: Path '${u}', ${h}`)}else console.error("Manifest valid error");return}if(await ze.default.emptyDir(e),i&&await f({start:"start build ui",error:"build ui failed",succeed:"build ui success"},()=>qe({appKey:m,webpackConfig:a})),await f({start:"start bundle",error:"bundle failed",succeed:"bundle success"},()=>Ee({outputDir:e,inputDir:t,manifest:p,mode:r?"production":"development"})),await f({start:"start package",error:"package failed",succeed:"package success"},()=>ge({outputDir:e,manifest:p,filesToCopy:o})),n){let h=`${m}_${c}.zip`;await f({start:"start archive",error:"archive failed",succeed:"archive success"},()=>he(e,h))}};var Ke=async e=>{let{input:t="functions",output:r="package",prod:o,dev:n,copy:i=[],zip:a,ui:p,webpack:c}=e;await We({outputDir:J.default.resolve(r),inputDir:J.default.resolve(t),prod:o??!n,filesToCopy:[...T,...i],zip:a,ui:!!p,webpackConfig:c}).catch(()=>{})};var ee=s(require("inquirer")),R=s(require("fs-extra")),O=s(require("path"));var X=s(require("simple-git")),Y=s(require("fs-extra")),He=async e=>{await(0,X.default)(e).init()},Qe=async(e,t)=>{await Y.default.pathExists(t)||await Y.default.mkdir(t),await(0,X.default)(t).clone(e,t)};var j=s(require("fs-extra")),Je="https://github.com/moriahq/apps-template.git",Z=(r=>(r.micro="micro",r.uikit="uikit",r))(Z||{}),Ye=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 Xe=require("chalk"),Ze=s(require("readline")),et=s(require("execa")),hr=e=>{if(!Xe.supportsColor){e.write("\r");return}Ze.default.cursorTo(e,0)},vr=(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);hr(process.stderr),process.stderr.write(`[${p}${c}]${o}`)},br=(e,t,r,o)=>new Promise((n,i)=>{var p;let a=(0,et.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){vr(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()})}),tt={executeCommand:br};var xr=async()=>(await ee.default.createPromptModule()({type:"input",name:"App Name",message:"Please enter an app name",validate:r=>!!r}))["App Name"],Pr=async()=>(await ee.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"],kr=async(e,t)=>{await f({start:"Start clone repository",error:"Clone repository failed!",succeed:"Clone repository success!"},()=>Qe(e,t))},Er=async e=>{await f({start:"Start install dependencies",error:"Install dependencies failed!",succeed:"Install dependencies success!"},()=>tt.executeCommand("yarn",["install"],e))},rt=async e=>{let{cwd:t}=e,r="micro",o=await xr(),n=await Pr(),i=O.default.join(t,n);if(await R.default.pathExists(i)){console.error(`Project path already exists: ${i}`);return}await kr(Je,i),await R.default.copy(O.default.join(i,r),i),await Promise.all(Object.values(Z).map(p=>R.default.remove(O.default.join(i,p)))),await R.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=>Ye(O.default.join(i,p),{appName:o,appKey:n}))),await Er(i),await He(i),console.log("Project init success!"),console.log("Project path:"+i)};var ot=async()=>{let e=process.cwd();await rt({cwd:e})};var I=s(require("inquirer"));var te=s(require("axios")),nt=async({baseUrl:e,username:t,password:r})=>{var o;try{return{cookie:(o=(await(0,te.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:""}}},it=async e=>{try{return await(0,te.default)({method:"GET",url:`${e}/apps/api/v1/tenants`}),!1}catch{return!0}};var st=s(require("path")),at=s(require("lowdb")),pt=s(require("lowdb/adapters/FileSync"));var re,oe=()=>{if(!re){let e=st.default.join(__dirname,"user.json"),t=new pt.default(e);re=(0,at.default)(t)}return re},ct=()=>{let e=oe(),t=e.get("version").value();(!t||t!==k)&&e.defaults({version:k,user:{}}).write()},ne=e=>{ct(),oe().set("user",e).write()},D=()=>(ct(),oe().get("user").value());var mt=e=>{try{return new URL(e).origin}catch{return e}};var lt=s(require("crypto")),ut=s(require("base64url")),Or=Buffer.from("ABCDEFGHIJKLM_iv","utf-8"),Dr=Buffer.from("ABCDEFGHIJKL_key","utf-8"),Cr="aes-128-cbc";var ft=e=>{try{let t=lt.default.createCipheriv(Cr,Dr,Or),r=t.update(e,"utf8","base64");return r+=t.final("base64"),ut.default.toBase64(r)}catch(t){return console.error(`Encryption error: ${t}`),null}};var Rr=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,Sr=async()=>(await I.default.createPromptModule()({type:"input",name:"Username",message:"Please enter username",validate:r=>!!r})).Username,Ar=async()=>(await I.default.createPromptModule()({type:"password",name:"Password",message:"Please enter password",validate:r=>!!r})).Password,dt=async({domain:e,username:t,password:r})=>{if(e||(e=await Rr()),e=mt(e),await it(e)){t||(t=await Sr()),r||(r=await Ar());let{cookie:n}=await nt({baseUrl:e,username:t,password:ft(r)||r});n?(ne({domain:e,username:t,cookie:n}),console.info("Login success!")):console.error("Login failed!")}else ne({domain:e}),console.info("Login success!")};var gt=async e=>{await dt(e)};var ae=s(require("path"));var Lt=s(require("path")),Tt=s(require("chalk")),se=s(require("fs-extra")),_t=s(require("debug"));var wt=s(require("axios"));var x=async({url:e,method:t,data:r,headers:o})=>{let{domain:n,cookie:i}=D();return(await(0,wt.default)({method:t,baseURL:n,url:e,data:r,headers:{...o,cookie:i}})).data};var yt=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"),S=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 ht=s(require("localtunnel"));var vt=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)}`)})},bt=async e=>{await x({method:"DELETE",url:`/apps/api/v1/apps/tunnel/${e}`}).catch(()=>{})},xt=async e=>{try{return(await(0,ht.default)({port:e,host:"http://tunnel.gitee.work:1777"})).url}catch(t){return console.info("runTunnel error",t==null?void 0:t.message),""}};var ie=s(require("path")),Pt=s(require("express")),kt=s(require("webpack")),Et=require("webpack-merge"),Ot=s(require("webpack-dev-middleware")),Dt=s(require("cors"));var B=async({appKey:e,webpackConfig:t})=>{let o=(await N())({environment:"development",appKey:e});if(t){let c=require(ie.default.resolve(t));o=(0,Et.merge)(o,c)}let n=(0,kt.default)(o),i=(0,Pt.default)(),a=Number(process.env.UI_PORT)||8e3,p=(0,Ot.default)(n);i.use((0,Dt.default)()),i.use(p),i.get("*",(c,m)=>{var l,d;(d=n.outputFileSystem)==null||d.readFile(ie.default.join(((l=o.output)==null?void 0:l.path)||"","index.html"),(h,u)=>{if(h||!u){m.sendStatus(404);return}m.send(u.toString())})}),i.listen(a,"0.0.0.0",()=>{console.info(`The React app is listening on port ${a}!
3
- `)})};var Ct=s(require("chalk")),Lr=Ct.default.bold.red,w={error:e=>{console.info(Lr(e))}};var St=s(require("chokidar"));var Rt=(e,t,r)=>{for(let o of e)M({inputDir:t,outputDir:r,fileName:o,mode:"development"})},At=async e=>{let{inputDir:t,outputDir:r}=e,n=(await v()).getFunctionFiles();Rt(n,t,r);let i,a=St.default.watch(t);console.info(`watch: ${t}`),a.on("change",p=>{clearTimeout(i),i=setTimeout(()=>{console.info(`${p} has change`),Rt(n,t,r)},1e3)})};var Tr=(0,_t.default)("cli:tunnel"),_r=async()=>{let e=await yt(),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}},$t=async e=>{var me,le,ue;let{inputDir:t,outputDir:r,server:o,filesToCopy:n,resourcePort:i,ui:a,webpackConfig:p}=e;await se.default.emptyDir(r);let c=await v(),m=c.app.key,l=c.app.version,d=c.getFunctionFiles(),h=c.resources||[];if(!m){w.error("appKey is required!");return}if(!l){w.error("version is required!");return}let{domain:u}=D();if(!u){w.error("Please login in first!");return}console.info(`Tunneling to ${Tt.default.bold.green(u)}`);let C=[],y=async P=>{P instanceof Error&&console.error(P),await Promise.all(C.map(A=>A())),process.exit()};process.on("SIGINT",y),process.on("uncaughtException",y),process.on("unhandledRejection",y),a&&B({appKey:m,webpackConfig:p});let Kt=`${`/${m}/development/${l}`}/server-side`,ce=Lt.default.join(r,Kt);await _(ce,n),await At({inputDir:t,outputDir:ce}),C.push(()=>se.default.remove(r));let G="";if(o&&d.length>0){let{runtimeImage:P,containerPort:A,containerEnv:Ht,containerName:Qt}=await _r(),L=new S(P,Qt);await L.downloadImage(),await L.runContainer({port:A,env:Ht,volume:[`${r}:/usr/src/app/apps`]}),C.push(()=>L.removeContainer()),G=await f({start:"start tunnel",error:"tunnel failed",succeed:"tunnel success"},()=>xt(A)),Tr("runtimeHost",G),L.logs()}if(await vt({appKey:m,runtimeHost:G,resources:h,resourcePort:i}),C.push(()=>bt(m)),o&&((ue=(le=(me=c.getManifest())==null?void 0:me.modules)==null?void 0:le.webtrigger)!=null&&ue.length)){console.log("You can use this url for test:");let P=`${u}/apps/api/v1/:tenant/apps/${m}/environments/development/webtriggers/:webtriggerKey`;console.log(`POST ${P}`)}};var Mt=async e=>{let{copy:t=[],input:r="functions",output:o="cache",server:n=!0,resourcePort:i,ui:a,webpack:p}=e;await $t({outputDir:ae.default.resolve(o),inputDir:ae.default.resolve(r),filesToCopy:[...T,...t],server:n,resourcePort:Number(i)||8e3,ui:!!a,webpackConfig:p})};var Ft=s(require("fs")),Bt=s(require("chalk"));var Ut=s(require("fs")),Nt=s(require("path")),jt=s(require("form-data"));var It=async(e,t)=>{let r=new jt.default;r.append("environmentKey",t),r.append("package",Ut.default.createReadStream(Nt.default.resolve(e))),await x({method:"POST",url:"/apps/api/v1/apps/deploy",data:r,headers:{...r.getHeaders()}})};var Gt=(o=>(o.DEVELOPMENT="development",o.STAGING="staging",o.PRODUCTION="production",o))(Gt||{}),Vt=async(e,t)=>{let{domain:r}=D(),{environment:o="development"}=t;if(!Object.values(Gt).includes(o)){w.error("Only support development, staging, production environment.");return}if(!r){w.error("Please login in first!");return}if(!Ft.default.existsSync(e)){w.error(`File:${e} is not exist`);return}console.info(`Deploying to ${Bt.default.bold.green(r)}`),await f({start:"start deploy",error:"deploy failed",succeed:"deploy success"},()=>It(e,o)).catch(()=>{})};var $r=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})},qt=$r;var zt=async e=>{let{webpack:t}=e;await qt({webpackConfig:t})};console.info(`GiteeTeam Apps Cli ${pe.default.bold.green(`v${k}`)}`);console.info(`Node.js ${pe.default.bold.green(process.version)}
4
- `);var b=new Wt.Command;b.version(k,"-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(Ke);b.command("init").action(ot);b.command("login").option("--domain [domain]","login domain").option("-u --username [username]","login username").option("-p --password [password]","login user password").action(gt);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(Mt);b.command("deploy [filename]").option("-e --environment [environment]","app environment").action(Vt);b.command("ui-dev").option("-w --webpack [file]","build ui webpack config file").action(zt);b.parse(process.argv);
2
+ "use strict";var Zt=Object.create;var V=Object.defineProperty;var er=Object.getOwnPropertyDescriptor;var tr=Object.getOwnPropertyNames;var rr=Object.getPrototypeOf,or=Object.prototype.hasOwnProperty;var nr=(e,t)=>()=>(e&&(t=e(e=0)),t);var ir=(e,t)=>{for(var r in t)V(e,r,{get:t[r],enumerable:!0})},sr=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of tr(t))!or.call(e,n)&&n!==r&&V(e,n,{get:()=>t[n],enumerable:!(o=er(t,n))||o.enumerable});return e};var s=(e,t,r)=>(r=e!=null?Zt(rr(e)):{},sr(t||!e||!e.__esModule?V(r,"default",{value:e,enumerable:!0}):r,e));var Ge={};ir(Ge,{default:()=>vr});function vr({environment:e,appKey:t,distOutputPath:r="dist"}){let o=e==="production",n=e==="development",i=u=>u?{filename:"js/[name].[chunkhash].min.js",path:M.default.resolve(r),publicPath:"./",library:t,libraryTarget:"umd"}:{filename:"main.js",path:M.default.resolve(r),publicPath:"/",library:t,libraryTarget:"umd"},a=({resourcePath:u},D,y)=>y===t||/\.global\.(css|less)$/.test(u)||/node_modules/.test(u)?y:`${y}__${(0,je.default)(u+y,{algorithm:"md5"}).slice(0,8)}`,p={loader:"@ecomfe/class-names-loader",options:{classNamesModule:require.resolve("classnames")}},c=o?H.default.loader:"style-loader",m={loader:"postcss-loader",options:{postcssOptions:{plugins:[Me.default]}}},l={loader:"css-loader",options:{modules:{getLocalIdent:a},importLoaders:1}},d={loader:"less-loader",options:{lessOptions:{javascriptEnabled:!0,modifyVars:{...Be,...dr,"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 Ie.default,"..."]},plugins:[hr&&new lr,new Q.default.DefinePlugin({"process.env":JSON.stringify(process.env),"process.env.appKey":JSON.stringify(t)}),new Fe.default({template:M.default.resolve("public/index.html"),filename:"index.html",inject:!0,appKey:t}),o&&new H.default({filename:"[name].[contenthash].css",chunkFilename:"[name].[contenthash].chunk.css"}),n&&new Q.default.HotModuleReplacementPlugin,n&&new $e.default({overlay:!1}),o&&new Ne.CleanWebpackPlugin].filter(Boolean),module:{rules:[{oneOf:[{test:/\.(js|mjs|jsx|ts|tsx)$/,exclude:/node_modules/,loader:"swc-loader",options:{sourceMaps:yr,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:[{...wr()}]}}var M,Le,_e,$e,Ue,Me,Ne,Ie,je,Fe,H,Q,lr,ur,fr,Be,dr,gr,wr,yr,hr,Ve=nr(()=>{"use strict";M=s(require("path")),Le=require("@ant-design/compatible"),_e=require("@giteeteam/apps-team-theme"),$e=s(require("@pmmmwh/react-refresh-webpack-plugin")),Ue=require("antd"),Me=s(require("autoprefixer")),Ne=require("clean-webpack-plugin"),Ie=s(require("css-minimizer-webpack-plugin")),je=s(require("hasha")),Fe=s(require("html-webpack-plugin")),H=s(require("mini-css-extract-plugin")),Q=s(require("webpack")),lr=require("webpack-bundle-analyzer").BundleAnalyzerPlugin,{defaultAlgorithm:ur,defaultSeed:fr}=Ue.theme,Be=ur({...fr,..._e.themeConfig.token}),dr=(0,Le.convertLegacyToken)({...Be}),gr=()=>e=>["window modules",e],wr=()=>{let e=gr();return{"react-dom":e("reactDOM"),react:e("react")}},yr=process.env.GENERATE_SOURCEMAP==="true",hr=process.env.ANALYZER_PACKAGE==="true"});var Dn=require("dotenv/config"),pe=s(require("chalk")),Qt=require("commander");var E="0.8.5";var J=s(require("path"));var L=["manifest.yml","locales"],fe=Buffer.from(process.env.ONE_AUTH_IV||"ABCDEFGHIJKLM_iv","utf-8"),de=Buffer.from(process.env.ONE_AUTH_SECRET_KEY||"ABCDEFGHIJKL_key","utf-8"),ge=process.env.ONE_AUTH_ALGORITHM||"aes-128-cbc";var He=s(require("fs-extra"));var ye=s(require("fs-extra")),$=s(require("path"));var q=s(require("path")),we=s(require("fs-extra")),_=async(e,t)=>{for(let r of t)try{let o=q.default.resolve(r),n=q.default.join(e,r);await we.default.copy(o,n)}catch(o){if(o.code==="ENOENT"&&r==="locales")continue;throw o}};var he=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 ye.default.copy(a,p)}await _(e,r)};var ve=s(require("path")),be=s(require("archiver")),z=s(require("fs-extra")),xe=async(e,t)=>{let r=ve.default.resolve(t);return await z.default.remove(r),new Promise((o,n)=>{let i=z.default.createWriteStream(r),a=(0,be.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 ke=require("rollup"),W=s(require("path")),Oe=s(require("fs"));var k=require("fs"),g=require("path"),Pe=require("esbuild"),pr={treeShaking:!0,format:"esm",loader:"tsx"};var cr=({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 K({mode:e,...t}){return t={...pr,...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=cr({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,Pe.transform)(r,t);return i?{code:n,map:i}:n}}}var Ce=s(require("@rollup/plugin-commonjs"));function mr(e,t,r="development"){let o=[(0,Ce.default)()];o.push(K({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 U(e){let{fileName:t,inputDir:r,outputDir:o,mode:n="development"}=e,i=W.default.join(r,`${t}.ts`);try{await Oe.default.promises.access(i)}catch{console.error(`${i} is not exist`);return}let a=W.default.join(o,`${t}.js`),{inputOptions:p,outputOptions:c}=mr(i,a,n);await(await(0,ke.rollup)(p)).write(c)}var De=async e=>{let{manifest:t,mode:r,outputDir:o,inputDir:n}=e,a=t.getFunctionFiles().map(async p=>{await U({inputDir:n,fileName:p,outputDir:o,mode:r})});await Promise.all(a)};var Re=s(require("ora")),f=async(e,t)=>{var o,n;let r=(0,Re.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 Se=s(require("fs-extra")),Ae=require("@giteeteam/apps-manifest"),Te=s(require("path")),v=async()=>{let e=Te.default.resolve("manifest.yml"),t=await Se.default.readFile(e);return new Ae.Manifest(t.toString())};var qe=s(require("path")),ze=s(require("webpack")),Ke=s(require("webpack-merge"));var N=async()=>(await Promise.resolve().then(()=>(Ve(),Ge))).default;var We=async({appKey:e,webpackConfig:t})=>{let r=await N();return new Promise((o,n)=>{let i=r({environment:"production",appKey:e});if(t){let p=require(qe.default.resolve(t));i=(0,Ke.default)(i,p)}(0,ze.default)(i).run((p,c)=>{if(p)return console.error(p),n(p);if(console.info(c==null?void 0:c.toString()),c!=null&&c.hasErrors())return n(new Error("build-ui-error"));o()})})};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:h,path:u}=d[0];console.error(`Manifest valid error: Path '${u}', ${h}`)}else console.error("Manifest valid error");return}if(await He.default.emptyDir(e),i&&await f({start:"start build ui",error:"build ui failed",succeed:"build ui success"},()=>We({appKey:m,webpackConfig:a})),await f({start:"start bundle",error:"bundle failed",succeed:"bundle success"},()=>De({outputDir:e,inputDir:t,manifest:p,mode:r?"production":"development"})),await f({start:"start package",error:"package failed",succeed:"package success"},()=>he({outputDir:e,manifest:p,filesToCopy:o})),n){let h=`${m}_${c}.zip`;await f({start:"start archive",error:"archive failed",succeed:"archive success"},()=>xe(e,h))}};var Je=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:J.default.resolve(r),inputDir:J.default.resolve(t),prod:o??!n,filesToCopy:[...L,...i],zip:a,ui:!!p,webpackConfig:c}).catch(()=>{})};var ee=s(require("inquirer")),R=s(require("fs-extra")),O=s(require("path"));var X=s(require("simple-git")),Y=s(require("fs-extra")),Ye=async e=>{await(0,X.default)(e).init()},Xe=async(e,t)=>{await Y.default.pathExists(t)||await Y.default.mkdir(t),await(0,X.default)(t).clone(e,t)};var I=s(require("fs-extra")),Ze="https://github.com/moriahq/apps-template.git",Z=(r=>(r.micro="micro",r.uikit="uikit",r))(Z||{}),et=async(e,t)=>{if(!await I.default.pathExists(e))return;let r=await I.default.readFile(e,{encoding:"utf-8"});await I.default.writeFile(e,r.replace(/{{(\w+)}}/g,(o,n)=>typeof t[n]=="string"?t[n]:o))};var tt=require("chalk"),rt=s(require("readline")),ot=s(require("execa")),xr=e=>{if(!tt.supportsColor){e.write("\r");return}rt.default.cursorTo(e,0)},Pr=(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);xr(process.stderr),process.stderr.write(`[${p}${c}]${o}`)},Er=(e,t,r,o)=>new Promise((n,i)=>{var p;let a=(0,ot.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){Pr(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()})}),nt={executeCommand:Er};var kr=async()=>(await ee.default.createPromptModule()({type:"input",name:"App Name",message:"Please enter an app name",validate:r=>!!r}))["App Name"],Or=async()=>(await ee.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"],Cr=async(e,t)=>{await f({start:"Start clone repository",error:"Clone repository failed!",succeed:"Clone repository success!"},()=>Xe(e,t))},Dr=async e=>{await f({start:"Start install dependencies",error:"Install dependencies failed!",succeed:"Install dependencies success!"},()=>nt.executeCommand("yarn",["install"],e))},it=async e=>{let{cwd:t}=e,r="micro",o=await kr(),n=await Or(),i=O.default.join(t,n);if(await R.default.pathExists(i)){console.error(`Project path already exists: ${i}`);return}await Cr(Ze,i),await R.default.copy(O.default.join(i,r),i),await Promise.all(Object.values(Z).map(p=>R.default.remove(O.default.join(i,p)))),await R.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=>et(O.default.join(i,p),{appName:o,appKey:n}))),await Dr(i),await Ye(i),console.log("Project init success!"),console.log("Project path:"+i)};var st=async()=>{let e=process.cwd();await it({cwd:e})};var j=s(require("inquirer"));var te=s(require("axios")),at=async({baseUrl:e,username:t,password:r})=>{var o;try{return{cookie:(o=(await(0,te.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:""}}},pt=async e=>{try{return await(0,te.default)({method:"GET",url:`${e}/apps/api/v1/tenants`}),!1}catch{return!0}};var ct=s(require("path")),mt=s(require("lowdb")),lt=s(require("lowdb/adapters/FileSync"));var re,oe=()=>{if(!re){let e=ct.default.join(__dirname,"user.json"),t=new lt.default(e);re=(0,mt.default)(t)}return re},ut=()=>{let e=oe(),t=e.get("version").value();(!t||t!==E)&&e.defaults({version:E,user:{}}).write()},ne=e=>{ut(),oe().set("user",e).write()},C=()=>(ut(),oe().get("user").value());var ft=e=>{try{return new URL(e).origin}catch{return e}};var dt=s(require("crypto")),gt=s(require("base64url"));var wt=e=>{try{let t=dt.default.createCipheriv(ge,de,fe),r=t.update(e,"utf8","base64");return r+=t.final("base64"),gt.default.toBase64(r)}catch(t){return console.error(`Encryption error: ${t}`),null}};var Rr=async()=>(await j.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,Sr=async()=>(await j.default.createPromptModule()({type:"input",name:"Username",message:"Please enter username",validate:r=>!!r})).Username,Ar=async()=>(await j.default.createPromptModule()({type:"password",name:"Password",message:"Please enter password",validate:r=>!!r})).Password,yt=async({domain:e,username:t,password:r})=>{if(e||(e=await Rr()),e=ft(e),await pt(e)){t||(t=await Sr()),r||(r=await Ar());let{cookie:n}=await at({baseUrl:e,username:t,password:wt(r)||r});n?(ne({domain:e,username:t,cookie:n}),console.info("Login success!")):console.error("Login failed!")}else ne({domain:e}),console.info("Login success!")};var ht=async e=>{await yt(e)};var ae=s(require("path"));var $t=s(require("path")),Ut=s(require("chalk")),se=s(require("fs-extra")),Mt=s(require("debug"));var vt=s(require("axios"));var x=async({url:e,method:t,data:r,headers:o})=>{let{domain:n,cookie:i}=C();return(await(0,vt.default)({method:t,baseURL:n,url:e,data:r,headers:{...o,cookie:i}})).data};var bt=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"),S=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 xt=s(require("localtunnel"));var Pt=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)}`)})},Et=async e=>{await x({method:"DELETE",url:`/apps/api/v1/apps/tunnel/${e}`}).catch(()=>{})},kt=async e=>{try{return(await(0,xt.default)({port:e,host:"http://tunnel.gitee.work:1777"})).url}catch(t){return console.info("runTunnel error",t==null?void 0:t.message),""}};var ie=s(require("path")),Ot=s(require("express")),Ct=s(require("webpack")),Dt=require("webpack-merge"),Rt=s(require("webpack-dev-middleware")),St=s(require("cors"));var B=async({appKey:e,webpackConfig:t})=>{let o=(await N())({environment:"development",appKey:e});if(t){let c=require(ie.default.resolve(t));o=(0,Dt.merge)(o,c)}let n=(0,Ct.default)(o),i=(0,Ot.default)(),a=Number(process.env.UI_PORT)||8e3,p=(0,Rt.default)(n);i.use((0,St.default)()),i.use(p),i.get("*",(c,m)=>{var l,d;(d=n.outputFileSystem)==null||d.readFile(ie.default.join(((l=o.output)==null?void 0:l.path)||"","index.html"),(h,u)=>{if(h||!u){m.sendStatus(404);return}m.send(u.toString())})}),i.listen(a,"0.0.0.0",()=>{console.info(`The React app is listening on port ${a}!
3
+ `)})};var At=s(require("chalk")),Tr=At.default.bold.red,w={error:e=>{console.info(Tr(e))}};var Lt=s(require("chokidar"));var Tt=(e,t,r)=>{for(let o of e)U({inputDir:t,outputDir:r,fileName:o,mode:"development"})},_t=async e=>{let{inputDir:t,outputDir:r}=e,n=(await v()).getFunctionFiles();Tt(n,t,r);let i,a=Lt.default.watch(t);console.info(`watch: ${t}`),a.on("change",p=>{clearTimeout(i),i=setTimeout(()=>{console.info(`${p} has change`),Tt(n,t,r)},1e3)})};var Lr=(0,Mt.default)("cli:tunnel"),_r=async()=>{let e=await bt(),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}},Nt=async e=>{var me,le,ue;let{inputDir:t,outputDir:r,server:o,filesToCopy:n,resourcePort:i,ui:a,webpackConfig:p}=e;await se.default.emptyDir(r);let c=await v(),m=c.app.key,l=c.app.version,d=c.getFunctionFiles(),h=c.resources||[];if(!m){w.error("appKey is required!");return}if(!l){w.error("version is required!");return}let{domain:u}=C();if(!u){w.error("Please login in first!");return}console.info(`Tunneling to ${Ut.default.bold.green(u)}`);let D=[],y=async P=>{P instanceof Error&&console.error(P),await Promise.all(D.map(A=>A())),process.exit()};process.on("SIGINT",y),process.on("uncaughtException",y),process.on("unhandledRejection",y),a&&B({appKey:m,webpackConfig:p});let Jt=`${`/${m}/development/${l}`}/server-side`,ce=$t.default.join(r,Jt);await _(ce,n),await _t({inputDir:t,outputDir:ce}),D.push(()=>se.default.remove(r));let G="";if(o&&d.length>0){let{runtimeImage:P,containerPort:A,containerEnv:Yt,containerName:Xt}=await _r(),T=new S(P,Xt);await T.downloadImage(),await T.runContainer({port:A,env:Yt,volume:[`${r}:/usr/src/app/apps`]}),D.push(()=>T.removeContainer()),G=await f({start:"start tunnel",error:"tunnel failed",succeed:"tunnel success"},()=>kt(A)),Lr("runtimeHost",G),T.logs()}if(await Pt({appKey:m,runtimeHost:G,resources:h,resourcePort:i}),D.push(()=>Et(m)),o&&((ue=(le=(me=c.getManifest())==null?void 0:me.modules)==null?void 0:le.webtrigger)!=null&&ue.length)){console.log("You can use this url for test:");let P=`${u}/apps/api/v1/:tenant/apps/${m}/environments/development/webtriggers/:webtriggerKey`;console.log(`POST ${P}`)}};var It=async e=>{let{copy:t=[],input:r="functions",output:o="cache",server:n=!0,resourcePort:i,ui:a,webpack:p}=e;await Nt({outputDir:ae.default.resolve(o),inputDir:ae.default.resolve(r),filesToCopy:[...L,...t],server:n,resourcePort:Number(i)||8e3,ui:!!a,webpackConfig:p})};var Vt=s(require("fs")),qt=s(require("chalk"));var jt=s(require("fs")),Ft=s(require("path")),Bt=s(require("form-data"));var Gt=async(e,t)=>{let r=new Bt.default;r.append("environmentKey",t),r.append("package",jt.default.createReadStream(Ft.default.resolve(e))),await x({method:"POST",url:"/apps/api/v1/apps/deploy",data:r,headers:{...r.getHeaders()}})};var zt=(o=>(o.DEVELOPMENT="development",o.STAGING="staging",o.PRODUCTION="production",o))(zt||{}),Kt=async(e,t)=>{let{domain:r}=C(),{environment:o="development"}=t;if(!Object.values(zt).includes(o)){w.error("Only support development, staging, production environment.");return}if(!r){w.error("Please login in first!");return}if(!Vt.default.existsSync(e)){w.error(`File:${e} is not exist`);return}console.info(`Deploying to ${qt.default.bold.green(r)}`),await f({start:"start deploy",error:"deploy failed",succeed:"deploy success"},()=>Gt(e,o)).catch(()=>{})};var $r=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})},Wt=$r;var Ht=async e=>{let{webpack:t}=e;await Wt({webpackConfig:t})};var Ur=`v${E}`;console.info(`GiteeTeam Apps Cli ${pe.default.bold.green(Ur)}`);console.info(`Node.js ${pe.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(Je);b.command("init").action(st);b.command("login").option("--domain [domain]","login domain").option("-u --username [username]","login username").option("-p --password [password]","login user password").action(ht);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(It);b.command("deploy [filename]").option("-e --environment [environment]","app environment").action(Kt);b.command("ui-dev").option("-w --webpack [file]","build ui webpack config file").action(Ht);b.parse(process.argv);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giteeteam/apps-cli",
3
- "version": "0.8.4",
3
+ "version": "0.8.5",
4
4
  "description": "Giteeteam Apps cli",
5
5
  "keywords": [
6
6
  "typescript",
@@ -31,12 +31,12 @@
31
31
  "registry": "https://registry.npmjs.org/"
32
32
  },
33
33
  "dependencies": {
34
- "@giteeteam/apps-manifest": "0.8.0",
34
+ "@giteeteam/apps-manifest": "0.8.2",
35
35
  "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
36
36
  "@rollup/plugin-commonjs": "^22.0.0",
37
37
  "archiver": "^5.3.1",
38
38
  "autoprefixer": "^10.4.20",
39
- "axios": "^1.5.0",
39
+ "axios": "^1.7.8",
40
40
  "base64url": "^3.0.1",
41
41
  "chalk": "^4.1.2",
42
42
  "chokidar": "^3.5.3",
@@ -50,7 +50,7 @@
50
50
  "execa": "5.1.1",
51
51
  "express": "4.18.3",
52
52
  "form-data": "^4.0.0",
53
- "fs-extra": "^11.1.1",
53
+ "fs-extra": "^11.2.0",
54
54
  "hasha": "^5.2.2",
55
55
  "html-webpack-plugin": "^5.5.3",
56
56
  "inquirer": "^8.2.6",