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