@giteeteam/apps-cli 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var lr=Object.create;var se=Object.defineProperty;var mr=Object.getOwnPropertyDescriptor;var ur=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var gr=(e,t)=>()=>(e&&(t=e(e=0)),t);var yr=(e,t)=>{for(var r in t)se(e,r,{get:t[r],enumerable:!0})},hr=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ur(t))!dr.call(e,o)&&o!==r&&se(e,o,{get:()=>t[o],enumerable:!(n=mr(t,o))||n.enumerable});return e};var c=(e,t,r)=>(r=e!=null?lr(fr(e)):{},hr(t||!e||!e.__esModule?se(r,"default",{value:e,enumerable:!0}):r,e));var Ve={};yr(Ve,{default:()=>Er});function Er({environment:e,appKey:t,distOutputPath:r="dist"}){let n=e==="production",o=e==="development",s=Pr(),i=Fe.default.existsSync(C.default.resolve("locales")),a=T=>T?{filename:"js/[name].[chunkhash].min.js",path:C.default.resolve(r),publicPath:"./",library:{type:"umd",name:t},clean:!0}:{filename:"main.js",path:C.default.resolve(r),publicPath:"/",library:{type:"umd",name:t}},p=({resourcePath:T},M,v)=>v===t||/\.global\.(css|less)$/.test(T)||/node_modules/.test(T)?v:`${v}__${(0,Be.default)(`${T}${v}`,{algorithm:"md5"}).slice(0,8)}`,l={loader:"@ecomfe/class-names-loader",options:{classNamesModule:require.resolve("classnames")}},m=n?_.rspack.CssExtractRspackPlugin.loader:"style-loader",f={loader:"postcss-loader",options:{postcssOptions:{plugins:[Ge.default]}}},g={loader:"css-loader",options:{modules:{getLocalIdent:p},importLoaders:1}},x={loader:"less-loader",options:{lessOptions:{javascriptEnabled:!0,modifyVars:{"ant-prefix":t}}}};return{mode:e,entry:"./src/index.tsx",output:a(n),devtool:n?!1:"source-map",resolve:{alias:{"@":C.default.join(process.cwd(),"src/")},extensions:[".js",".ts",".jsx",".tsx",".css",".less"]},optimization:{minimize:n},plugins:[new _.rspack.DefinePlugin({"process.env":JSON.stringify(process.env),"process.env.appKey":JSON.stringify(t)}),new _.rspack.HtmlRspackPlugin({template:C.default.resolve("public/index.html"),filename:"index.html",inject:!0,appKey:t}),n&&new _.rspack.CssExtractRspackPlugin({filename:"[name].[contenthash].css",chunkFilename:"[name].[contenthash].chunk.css"}),o&&new _.rspack.HotModuleReplacementPlugin,o&&new Ke.default({overlay:!1})].filter(Boolean),module:{rules:[{oneOf:[{test:/\.(js|mjs|jsx|ts|tsx)$/,exclude:/node_modules/,loader:"builtin:swc-loader",options:{sourceMaps:kr,jsc:{parser:{syntax:"typescript",tsx:!0},transform:{react:{runtime:"automatic",development:!n,refresh:!n}}},env:{targets:"chrome >= 72",mode:"usage",coreJs:"3.38"}},type:"javascript/auto"},s&&i&&{test:/locales/,loader:s,include:[C.default.resolve("locales")]},{test:/\.css$/,use:[l,m,"css-loader",f]},{test:/\.less$/,use:[l,m,g,f,x]},{test:/\.(png|jpg|gif)$/i,type:"asset",parser:{dataUrlCondition:{maxSize:2400}},generator:{filename:"[name]_[hash][ext]"}},{test:/\.svg$/i,use:["@svgr/webpack"]}]}]}}}var Fe,C,_,Ke,Ge,Be,kr,Pr,qe=gr(()=>{"use strict";Fe=c(require("fs")),C=c(require("path")),_=require("@rspack/core"),Ke=c(require("@rspack/plugin-react-refresh")),Ge=c(require("autoprefixer")),Be=c(require("hasha")),kr=process.env.GENERATE_SOURCEMAP==="true",Pr=()=>{try{return require.resolve("@alienfast/i18next-loader")}catch{return null}}});var ps=require("dotenv/config"),ke=c(require("chalk")),sr=require("commander");var k="2.0.2";var le=c(require("path"));var F=["manifest.yml","locales"],Ce=Buffer.from(process.env.ONE_AUTH_IV||"ABCDEFGHIJKLM_iv","utf-8"),De=Buffer.from(process.env.ONE_AUTH_SECRET_KEY||"ABCDEFGHIJKL_key","utf-8"),Re=process.env.ONE_AUTH_ALGORITHM||"aes-128-cbc";var q=c(require("chalk")),nt=c(require("fs-extra"));var Le=c(require("fs")),ae=c(require("path")),je=c(require("@rollup/plugin-commonjs")),$e=require("rollup");var A=require("fs"),b=require("path"),Ae=require("esbuild"),br={treeShaking:!0,format:"esm",loader:"tsx"};var wr=({source:e,dirPath:t,mode:r})=>{let n="";if(r==="development")try{return n=require.resolve(e+"/src/index.ts",{paths:[t]}),n}catch{}try{return n=require.resolve(e,{paths:[t]}),n}catch{}return n};function ie({mode:e,...t}){return t={...br,...t},{name:"esbuild",resolveId(r,n,o){if(!n)return r;let s=(0,b.dirname)(n),i;if((0,A.existsSync)(i=(0,b.resolve)(s,r,"index.ts")))return i;if((0,A.existsSync)(i=(0,b.resolve)(s,r,"index.tsx")))return i;if((0,A.existsSync)(i=(0,b.resolve)(s,r+".ts")))return i;if((0,A.existsSync)(i=(0,b.resolve)(s,r+".tsx")))return i;{let a=wr({source:r,dirPath:s,mode:e});if((0,A.existsSync)(a))return a;throw console.error({source:r,importer:n,options:o}),i=(0,b.relative)(".",(0,b.resolve)(n,r)),new Error(`ENOENT: ${i.replace(/\\/g,"/")}`)}},async transform(r,n){t.sourcefile=n,t.loader=n.endsWith(".json")?"json":t.loader;let{code:o,map:s}=await(0,Ae.transform)(r,t);return s?{code:o,map:s}:o}}}function xr(e,t,r="development"){let n=[(0,je.default)()];n.push(ie({mode:r,sourcemap:r==="development",minify:r!=="development",target:"es2018",jsx:"transform",jsxFactory:"AppsUI.createElement",jsxFragment:"AppsUI.Fragment"}));let o={input:e,plugins:n},s={file:t,format:"es",sourcemap:r==="development"};return{inputOptions:o,outputOptions:s}}async function K(e){let{fileName:t,inputDir:r,outputDir:n,mode:o="development"}=e,s=ae.default.join(r,`${t}.ts`);try{await Le.default.promises.access(s)}catch{console.error(`${s} is not exist`);return}let i=ae.default.join(n,`${t}.js`),{inputOptions:a,outputOptions:p}=xr(s,i,o);await(await(0,$e.rollup)(a)).write(p)}var Ne=c(require("ora")),d=async(e,t)=>{var n,o;let r=(0,Ne.default)(e.start).start();try{let s=await t();return r.succeed(e.succeed),s}catch(s){throw r.fail(`${e.error}: ${((o=(n=s==null?void 0:s.response)==null?void 0:n.data)==null?void 0:o.message)||s.message}`),s}};var Ie=c(require("path")),Me=require("@giteeteam/apps-manifest"),Ue=c(require("fs-extra")),P=async()=>{let e=Ie.default.resolve("manifest.yml"),t=await Ue.default.readFile(e);return new Me.Manifest(t.toString())};var He=c(require("path")),Je=require("@rspack/core");var G=async()=>(await Promise.resolve().then(()=>(qe(),Ve))).default;var ze=e=>Object.prototype.toString.call(e)==="[object Object]",$=(e,t)=>{if(t===void 0)return e;if(Array.isArray(e)&&Array.isArray(t))return[...e,...t];if(ze(e)&&ze(t)){let r={...e};for(let[n,o]of Object.entries(t))r[n]=n in r?$(r[n],o):o;return r}return t};var We=async({appKey:e,rspackConfig:t})=>{let r=await G();return new Promise((n,o)=>{let s=r({environment:"production",appKey:e});if(t){let a=require(He.default.resolve(t));s=$(s,a)}(0,Je.rspack)(s).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(new Error("build-ui-error"));n()})})};var Qe=c(require("path")),Ye=c(require("archiver")),ce=c(require("fs-extra")),Xe=async(e,t)=>{let r=Qe.default.resolve(t);return await ce.default.remove(r),new Promise((n,o)=>{let s=ce.default.createWriteStream(r),i=(0,Ye.default)("zip",{zlib:{level:9}});s.on("close",function(){n()}),i.on("warning",function(a){console.info(a),a.code==="ENOENT"||o(a)}),i.on("error",function(a){console.info(a),o(a)}),i.pipe(s),i.directory(e,!1),i.finalize()})};var Ze=async e=>{let{manifest:t,mode:r,outputDir:n,inputDir:o}=e,i=t.getFunctionFiles().map(async a=>{await K({inputDir:o,fileName:a,outputDir:n,mode:r})});await Promise.all(i)};var V=c(require("path")),tt=c(require("fs-extra"));var pe=c(require("path")),et=c(require("fs-extra")),B=async(e,t)=>{for(let r of t)try{let n=pe.default.resolve(r),o=pe.default.join(e,r);await et.default.copy(n,o)}catch(n){if(n.code==="ENOENT"&&r==="locales")continue;throw n}};var rt=async({outputDir:e,manifest:t,filesToCopy:r})=>{let{resources:n}=t;if(n)for(let{key:o,path:s}of n){let i=V.default.resolve(V.default.join("./",s)),a=V.default.join(e,o);await tt.default.copy(i,a)}await B(e,r)};var ot=async({outputDir:e,inputDir:t,prod:r,filesToCopy:n,zip:o,ui:s,rspackConfig:i})=>{let a=await P(),{version:p,key:l}=a.app;if(!l){console.error("manifest app key is required");return}if(!p){console.error("manifest app version is required");return}console.info(`App key: ${q.default.bold.green(l)}`),console.info(`App version: ${q.default.bold.green(p)}
2
+ "use strict";var lr=Object.create;var se=Object.defineProperty;var mr=Object.getOwnPropertyDescriptor;var ur=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var gr=(e,t)=>()=>(e&&(t=e(e=0)),t);var yr=(e,t)=>{for(var r in t)se(e,r,{get:t[r],enumerable:!0})},hr=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ur(t))!dr.call(e,o)&&o!==r&&se(e,o,{get:()=>t[o],enumerable:!(n=mr(t,o))||n.enumerable});return e};var c=(e,t,r)=>(r=e!=null?lr(fr(e)):{},hr(t||!e||!e.__esModule?se(r,"default",{value:e,enumerable:!0}):r,e));var Ve={};yr(Ve,{default:()=>Er});function Er({environment:e,appKey:t,distOutputPath:r="dist"}){let n=e==="production",o=e==="development",s=Pr(),i=Fe.default.existsSync(C.default.resolve("locales")),a=T=>T?{filename:"js/[name].[chunkhash].min.js",path:C.default.resolve(r),publicPath:"./",library:{type:"umd",name:t},clean:!0}:{filename:"main.js",path:C.default.resolve(r),publicPath:"/",library:{type:"umd",name:t}},p=({resourcePath:T},M,v)=>v===t||/\.global\.(css|less)$/.test(T)||/node_modules/.test(T)?v:`${v}__${(0,Be.default)(`${T}${v}`,{algorithm:"md5"}).slice(0,8)}`,l={loader:"@ecomfe/class-names-loader",options:{classNamesModule:require.resolve("classnames")}},m=n?_.rspack.CssExtractRspackPlugin.loader:"style-loader",f={loader:"postcss-loader",options:{postcssOptions:{plugins:[Ge.default]}}},g={loader:"css-loader",options:{modules:{getLocalIdent:p},importLoaders:1}},x={loader:"less-loader",options:{lessOptions:{javascriptEnabled:!0,modifyVars:{"ant-prefix":t}}}};return{mode:e,entry:"./src/index.tsx",output:a(n),devtool:n?!1:"source-map",resolve:{alias:{"@":C.default.join(process.cwd(),"src/")},extensions:[".js",".ts",".jsx",".tsx",".css",".less"]},optimization:{minimize:n},plugins:[new _.rspack.DefinePlugin({"process.env":JSON.stringify(process.env),"process.env.appKey":JSON.stringify(t)}),new _.rspack.HtmlRspackPlugin({template:C.default.resolve("public/index.html"),filename:"index.html",inject:!0,appKey:t}),n&&new _.rspack.CssExtractRspackPlugin({filename:"[name].[contenthash].css",chunkFilename:"[name].[contenthash].chunk.css"}),o&&new _.rspack.HotModuleReplacementPlugin,o&&new Ke.default({overlay:!1})].filter(Boolean),module:{rules:[{oneOf:[{test:/\.(js|mjs|jsx|ts|tsx)$/,exclude:/node_modules/,loader:"builtin:swc-loader",options:{sourceMaps:kr,jsc:{parser:{syntax:"typescript",tsx:!0},transform:{react:{runtime:"automatic",development:!n,refresh:!n}}},env:{targets:"chrome >= 72",mode:"usage",coreJs:"3.38"}},type:"javascript/auto"},s&&i&&{test:/locales/,loader:s,include:[C.default.resolve("locales")]},{test:/\.css$/,use:[l,m,"css-loader",f]},{test:/\.less$/,use:[l,m,g,f,x]},{test:/\.(png|jpg|gif)$/i,type:"asset",parser:{dataUrlCondition:{maxSize:2400}},generator:{filename:"[name]_[hash][ext]"}},{test:/\.svg$/i,use:["@svgr/webpack"]}]}]}}}var Fe,C,_,Ke,Ge,Be,kr,Pr,qe=gr(()=>{"use strict";Fe=c(require("fs")),C=c(require("path")),_=require("@rspack/core"),Ke=c(require("@rspack/plugin-react-refresh")),Ge=c(require("autoprefixer")),Be=c(require("hasha")),kr=process.env.GENERATE_SOURCEMAP==="true",Pr=()=>{try{return require.resolve("@alienfast/i18next-loader")}catch{return null}}});var ps=require("dotenv/config"),ke=c(require("chalk")),sr=require("commander");var k="2.0.3";var le=c(require("path"));var F=["manifest.yml","locales"],Ce=Buffer.from(process.env.ONE_AUTH_IV||"ABCDEFGHIJKLM_iv","utf-8"),De=Buffer.from(process.env.ONE_AUTH_SECRET_KEY||"ABCDEFGHIJKL_key","utf-8"),Re=process.env.ONE_AUTH_ALGORITHM||"aes-128-cbc";var q=c(require("chalk")),nt=c(require("fs-extra"));var Le=c(require("fs")),ae=c(require("path")),je=c(require("@rollup/plugin-commonjs")),$e=require("rollup");var A=require("fs"),b=require("path"),Ae=require("esbuild"),br={treeShaking:!0,format:"esm",loader:"tsx"};var wr=({source:e,dirPath:t,mode:r})=>{let n="";if(r==="development")try{return n=require.resolve(e+"/src/index.ts",{paths:[t]}),n}catch{}try{return n=require.resolve(e,{paths:[t]}),n}catch{}return n};function ie({mode:e,...t}){return t={...br,...t},{name:"esbuild",resolveId(r,n,o){if(!n)return r;let s=(0,b.dirname)(n),i;if((0,A.existsSync)(i=(0,b.resolve)(s,r,"index.ts")))return i;if((0,A.existsSync)(i=(0,b.resolve)(s,r,"index.tsx")))return i;if((0,A.existsSync)(i=(0,b.resolve)(s,r+".ts")))return i;if((0,A.existsSync)(i=(0,b.resolve)(s,r+".tsx")))return i;{let a=wr({source:r,dirPath:s,mode:e});if((0,A.existsSync)(a))return a;throw console.error({source:r,importer:n,options:o}),i=(0,b.relative)(".",(0,b.resolve)(n,r)),new Error(`ENOENT: ${i.replace(/\\/g,"/")}`)}},async transform(r,n){t.sourcefile=n,t.loader=n.endsWith(".json")?"json":t.loader;let{code:o,map:s}=await(0,Ae.transform)(r,t);return s?{code:o,map:s}:o}}}function xr(e,t,r="development"){let n=[(0,je.default)()];n.push(ie({mode:r,sourcemap:r==="development",minify:r!=="development",target:"es2018",jsx:"transform",jsxFactory:"AppsUI.createElement",jsxFragment:"AppsUI.Fragment"}));let o={input:e,plugins:n},s={file:t,format:"es",sourcemap:r==="development"};return{inputOptions:o,outputOptions:s}}async function K(e){let{fileName:t,inputDir:r,outputDir:n,mode:o="development"}=e,s=ae.default.join(r,`${t}.ts`);try{await Le.default.promises.access(s)}catch{console.error(`${s} is not exist`);return}let i=ae.default.join(n,`${t}.js`),{inputOptions:a,outputOptions:p}=xr(s,i,o);await(await(0,$e.rollup)(a)).write(p)}var Ne=c(require("ora")),d=async(e,t)=>{var n,o;let r=(0,Ne.default)(e.start).start();try{let s=await t();return r.succeed(e.succeed),s}catch(s){throw r.fail(`${e.error}: ${((o=(n=s==null?void 0:s.response)==null?void 0:n.data)==null?void 0:o.message)||s.message}`),s}};var Ie=c(require("path")),Me=require("@giteeteam/apps-manifest"),Ue=c(require("fs-extra")),P=async()=>{let e=Ie.default.resolve("manifest.yml"),t=await Ue.default.readFile(e);return new Me.Manifest(t.toString())};var He=c(require("path")),Je=require("@rspack/core");var G=async()=>(await Promise.resolve().then(()=>(qe(),Ve))).default;var ze=e=>Object.prototype.toString.call(e)==="[object Object]",$=(e,t)=>{if(t===void 0)return e;if(Array.isArray(e)&&Array.isArray(t))return[...e,...t];if(ze(e)&&ze(t)){let r={...e};for(let[n,o]of Object.entries(t))r[n]=n in r?$(r[n],o):o;return r}return t};var We=async({appKey:e,rspackConfig:t})=>{let r=await G();return new Promise((n,o)=>{let s=r({environment:"production",appKey:e});if(t){let a=require(He.default.resolve(t));s=$(s,a)}(0,Je.rspack)(s).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(new Error("build-ui-error"));n()})})};var Qe=c(require("path")),Ye=c(require("archiver")),ce=c(require("fs-extra")),Xe=async(e,t)=>{let r=Qe.default.resolve(t);return await ce.default.remove(r),new Promise((n,o)=>{let s=ce.default.createWriteStream(r),i=(0,Ye.default)("zip",{zlib:{level:9}});s.on("close",function(){n()}),i.on("warning",function(a){console.info(a),a.code==="ENOENT"||o(a)}),i.on("error",function(a){console.info(a),o(a)}),i.pipe(s),i.directory(e,!1),i.finalize()})};var Ze=async e=>{let{manifest:t,mode:r,outputDir:n,inputDir:o}=e,i=t.getFunctionFiles().map(async a=>{await K({inputDir:o,fileName:a,outputDir:n,mode:r})});await Promise.all(i)};var V=c(require("path")),tt=c(require("fs-extra"));var pe=c(require("path")),et=c(require("fs-extra")),B=async(e,t)=>{for(let r of t)try{let n=pe.default.resolve(r),o=pe.default.join(e,r);await et.default.copy(n,o)}catch(n){if(n.code==="ENOENT"&&r==="locales")continue;throw n}};var rt=async({outputDir:e,manifest:t,filesToCopy:r})=>{let{resources:n}=t;if(n)for(let{key:o,path:s}of n){let i=V.default.resolve(V.default.join("./",s)),a=V.default.join(e,o);await tt.default.copy(i,a)}await B(e,r)};var ot=async({outputDir:e,inputDir:t,prod:r,filesToCopy:n,zip:o,ui:s,rspackConfig:i})=>{let a=await P(),{version:p,key:l}=a.app;if(!l){console.error("manifest app key is required");return}if(!p){console.error("manifest app version is required");return}console.info(`App key: ${q.default.bold.green(l)}`),console.info(`App version: ${q.default.bold.green(p)}
3
3
  `);let{pass:m,errors:f}=a.validate();if(!m){if(f!=null&&f.length){let{message:g,path:x}=f[0];console.error(`Manifest valid error: Path '${x}', ${g}`)}else console.error("Manifest valid error");return}if(await nt.default.emptyDir(e),s&&await d({start:"start build ui",error:"build ui failed",succeed:"build ui success"},()=>We({appKey:l,rspackConfig:i})),await d({start:"start bundle",error:"bundle failed",succeed:"bundle success"},()=>Ze({outputDir:e,inputDir:t,manifest:a,mode:r?"production":"development"})),await d({start:"start package",error:"package failed",succeed:"package success"},()=>rt({outputDir:e,manifest:a,filesToCopy:n})),o){let g=`${l}_${p}.zip`;await d({start:"start archive",error:"archive failed",succeed:"archive success"},()=>Xe(e,g)),console.info(`
4
4
  The output file of the build is ${q.default.bold.green(g)}`)}};var st=async e=>{let{input:t="functions",output:r="package",prod:n,dev:o,copy:s=[],zip:i,ui:a,rspack:p}=e;await ot({outputDir:le.default.resolve(r),inputDir:le.default.resolve(t),prod:n??!o,filesToCopy:[...F,...s],zip:i,ui:!!a,rspackConfig:p}).catch(()=>{})};var yt=c(require("fs")),ht=c(require("path")),H=c(require("chalk"));var it=c(require("path")),at=c(require("lowdb")),ct=c(require("lowdb/adapters/FileSync"));var me,ue=()=>{if(!me){let e=it.default.join(__dirname,"user.json"),t=new ct.default(e);me=(0,at.default)(t)}return me},pt=()=>{let e=ue(),t=e.get("version").value();(!t||t!==k)&&e.defaults({version:k,user:{}}).write()},fe=e=>{pt(),ue().set("user",e).write()},E=()=>(pt(),ue().get("user").value());var mt=c(require("fs")),ut=c(require("path")),ft=c(require("form-data"));var lt=c(require("axios"));var w={GET:"GET",POST:"POST",PUT:"PUT",DELETE:"DELETE"},O=async({url:e,method:t,data:r,headers:n})=>{let{domain:o,cookie:s}=E();return(await(0,lt.default)({method:t,baseURL:o,url:e,data:r,headers:{...n,cookie:s}})).data};var dt=async(e,t)=>{let r=new ft.default;return r.append("environmentKey",t),r.append("package",mt.default.createReadStream(ut.default.resolve(e))),O({method:w.POST,url:"/apps/api/v1/apps/deploy",data:r,headers:{...r.getHeaders()}})},z=async({tenants:e,environmentKey:t,appKey:r,versionKey:n})=>O({method:w.POST,url:"/apps/api/v1/apps/install/batch",data:{tenants:e,environmentKey:t,appKey:r,versionKey:n,subscriptionSource:"manual"}});var gt=c(require("chalk")),Or=gt.default.bold.red,u={error:e=>{console.info(Or(e))}};var J=(n=>(n.DEVELOPMENT="development",n.STAGING="staging",n.PRODUCTION="production",n))(J||{}),Tr=e=>e?(Array.isArray(e)?e:[e]).flatMap(r=>r.split(",")).map(r=>r.trim()).filter(Boolean):[],Sr=e=>{let t=ht.default.basename(e,".zip"),r=t.lastIndexOf("_");return r<=0||r===t.length-1?null:{appKey:t.slice(0,r),versionKey:t.slice(r+1)}},vt=async(e,t)=>{let{domain:r}=E(),{environment:n="development",subscribe:o,appKey:s,versionKey:i}=t,a=Tr(o);if(!Object.values(J).includes(n)){u.error("Only support development, staging, production environment.");return}if(!r){u.error("Please login in first!");return}if(!yt.default.existsSync(e)){u.error(`File:${e} is not exist`);return}if(console.info(`Deploying to ${H.default.bold.green(r)}`),await d({start:"start deploy",error:"deploy failed",succeed:"deploy success"},()=>dt(e,n)).catch(()=>{}),a.length===0)return;let p=Sr(e),l=s||(p==null?void 0:p.appKey),m=i||(p==null?void 0:p.versionKey);if(!l||!m){u.error("subscribe needs appKey and versionKey. please pass --app-key and --version-key, or use zip name <appKey>_<versionKey>.zip");return}console.info(`Subscribing app ${H.default.bold.green(l)}:${H.default.bold.green(m)}`),await d({start:"start subscribe",error:"subscribe failed",succeed:"subscribe success"},()=>z({tenants:a,environmentKey:n,appKey:l,versionKey:m})).catch(()=>{})};var D=c(require("path")),L=c(require("fs-extra")),Y=c(require("inquirer"));var bt=c(require("readline")),wt=require("chalk"),de=c(require("execa")),Cr=e=>{if(!wt.supportsColor){e.write("\r");return}bt.default.cursorTo(e,0)},Dr=(e,t)=>{let r=Math.min(Math.max(e/t,0),1),n=` ${e}/${t}`,o=Math.max(0,process.stderr.columns-n.length-3),s=Math.min(t,o),i=Math.round(s*r),a="#".repeat(i),p="-".repeat(s-i);Cr(process.stderr),process.stderr.write(`[${a}${p}]${n}`)},Rr=(e,t,r,n)=>new Promise((o,s)=>{var a;let i=(0,de.default)(e,t,{cwd:r,stdio:["inherit","inherit","pipe"],env:n});(a=i.stderr)==null||a.on("data",p=>{let l=p.toString();if(/warning/.test(l))return;let m=l.match(/\[.*] (\d+)\/(\d+)/);if(m){Dr(parseFloat(m[1]),parseFloat(m[2]));return}process.stderr.write(p)}),i.on("close",p=>{if(p!==0){s(new Error(`command failed: ${e} ${t.join(" ")}`));return}o()})}),Ar=(e,t,r,n)=>(0,de.default)(e,t,{cwd:r,stdio:"inherit",env:n}).then(()=>{}),N={executeCommand:Rr,executeInteractiveCommand:Ar};var ge=c(require("fs-extra")),ye=c(require("simple-git")),xt=async e=>{await(0,ye.default)(e).init()},W=async(e,t,r)=>{await ge.default.pathExists(t)||await ge.default.mkdir(t);let n=(0,ye.default)(t),o=[];r!=null&&r.branch&&o.push("--branch",r.branch),r!=null&&r.singleBranch&&o.push("--single-branch"),await n.clone(e,t,o)};var Q=c(require("fs-extra")),kt=process.env.APPS_TEMPLATE_REPO||"https://github.com/moriahq/apps-template.git",he=(r=>(r.micro="micro",r.uikit="uikit",r))(he||{}),Pt=async(e,t)=>{if(!await Q.default.pathExists(e))return;let r=await Q.default.readFile(e,{encoding:"utf-8"});await Q.default.writeFile(e,r.replace(/{{(\w+)}}/g,(n,o)=>typeof t[o]=="string"?t[o]:n))};var Lr=async()=>(await Y.default.createPromptModule()({type:"input",name:"App Name",message:"Please enter an app name",validate:r=>!!r}))["App Name"],jr=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.info(""),console.info("only supports letters, numbers, underscores and starts with letters"),!1)}))["App key"],$r=async()=>(await Y.default.createPromptModule()({type:"confirm",name:"Init Skill",message:"Initialize Gitee Team app skill?",default:!0}))["Init Skill"],Nr=()=>{if(Number(k.split(".")[0])>=1)return"v1"},Ir=async(e,t)=>{let r=Nr();if(!r){await d({start:"Start clone repository",error:"Clone repository failed!",succeed:"Clone repository success!"},()=>W(e,t));return}try{await d({start:`Start clone repository (branch: ${r})`,error:"Clone repository failed!",succeed:"Clone repository success!"},()=>W(e,t,{branch:r,singleBranch:!0}))}catch{console.info(`Template branch '${r}' not found, fallback to default branch.`),await d({start:"Start clone repository (default branch)",error:"Clone repository failed!",succeed:"Clone repository success!"},()=>W(e,t))}},Mr=async e=>{await d({start:"Start install dependencies",error:"Install dependencies failed!",succeed:"Install dependencies success!"},()=>N.executeCommand("pnpm",["install"],e))},Et=async e=>{let{cwd:t}=e,r="micro",n=await Lr(),o=await jr(),s=await $r(),i=D.default.join(t,o);if(await L.default.pathExists(i)){console.error(`Project path already exists: ${i}`);return}await Ir(kt,i),await L.default.copy(D.default.join(i,r),i),await Promise.all(Object.values(he).map(p=>L.default.remove(D.default.join(i,p)))),await L.default.remove(D.default.join(i,"./.git")),await L.default.remove(D.default.join(i,"./SKILL.md"));let a=["./manifest.yml","./package.json","./rspack.config.js","./public/index.html","./src/App.tsx","./src/index.tsx","./static/App.tsx","./static/index.tsx"];await Promise.all(a.map(p=>Pt(D.default.join(i,p),{appName:n,appKey:o}))),await Mr(i),await xt(i),console.info("Project init success!"),console.info("Project path:"+i),s&&(console.info("Start Gitee Team app skill installer..."),await N.executeInteractiveCommand("npx",["-y","skills","add","moriahq/giteeteam-skills"],i))};var Ot=async()=>{let e=process.cwd();await Et({cwd:e})};var X=c(require("inquirer"));var ve=c(require("axios"));var Tt=["/api/gateway/login","/login"],Ur=e=>{var n;let t=(n=e==null?void 0:e.response)==null?void 0:n.status,r=e==null?void 0:e.code;return[404,405,502,503,504].includes(t)||["ECONNREFUSED","ENOTFOUND","ECONNABORTED"].includes(r)},St=async({baseUrl:e,username:t,password:r})=>{var o;let n;for(let s of Tt)try{let i=await(0,ve.default)({method:w.POST,url:`${e}${s}`,data:{username:t,password:r}});return console.info(`Login endpoint: ${s}`),{cookie:(o=i.headers)==null?void 0:o["set-cookie"]}}catch(i){if(n=i,!Ur(i))return console.error(`Login error (${s}):`,i==null?void 0:i.message),{cookie:""}}return console.error(`Login error: all endpoints failed (${Tt.join(", ")})`,(n==null?void 0:n.message)||""),{cookie:""}},Ct=async e=>{try{return await(0,ve.default)({method:w.GET,url:`${e}/apps/api/v1/tenants`}),!1}catch{return!0}};var Dt=e=>{try{return new URL(e).origin}catch{return e}};var Rt=c(require("crypto"));var At=e=>{try{let t=Rt.default.createCipheriv(Re,De,Ce),r=t.update(e,"utf8","base64");return r+=t.final("base64"),r.toString()}catch(t){return console.error(`Encryption error: ${t}`),null}};var Fr=async()=>(await X.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 X.default.createPromptModule()({type:"input",name:"Username",message:"Please enter username",validate:r=>!!r})).Username,Gr=async()=>(await X.default.createPromptModule()({type:"password",name:"Password",message:"Please enter password",validate:r=>!!r})).Password,_t=async({domain:e,username:t,password:r})=>{if(e||(e=await Fr()),e=Dt(e),await Ct(e)){t||(t=await Kr()),r||(r=await Gr());let{cookie:o}=await St({baseUrl:e,username:t,password:At(r)||r});o?(fe({domain:e,username:t,cookie:o}),console.info("Login success!")):console.error("Login failed!")}else fe({domain:e}),console.info("Login success!")};var Lt=async e=>{await _t(e)};var jt=c(require("chalk"));var Br=e=>e?(Array.isArray(e)?e:[e]).flatMap(r=>r.split(",")).map(r=>r.trim()).filter(Boolean):[],$t=async(e,t,r)=>{let{domain:n}=E(),{environment:o="development",tenants:s}=r,i=Br(s);if(!n){u.error("Please login in first!");return}if(!Object.values(J).includes(o)){u.error("Only support development, staging, production environment.");return}if(!e||!t){u.error("Please provide appKey and versionKey.");return}if(i.length===0){u.error("Please provide subscribe tenants by -t/--tenants.");return}console.info(`Subscribing to ${jt.default.bold.green(n)}`),await d({start:"start subscribe",error:"subscribe failed",succeed:"subscribe success"},()=>z({tenants:i,environmentKey:o,appKey:e,versionKey:t})).catch(()=>{})};var Nt=c(require("path")),It=c(require("fs-extra"));var Mt=async e=>{let t=Nt.default.resolve(e||process.cwd());if(!await It.default.pathExists(t)){u.error(`project path not found: ${t}`);return}await N.executeInteractiveCommand("npx",["-y","skills","add","moriahq/giteeteam-skills"],t),console.info("sync-skill finished."),console.info(`Project path: ${t}`)};var re=c(require("path"));var Xt=c(require("path")),te=c(require("chalk")),Zt=c(require("debug")),we=c(require("fs-extra"));var Ut=async()=>{var t;return((t=(await O({method:w.GET,url:"/apps/api/v1/config"}).catch(r=>{var n,o;console.info(`getRuntimeConfig error ${((o=(n=r==null?void 0:r.response)==null?void 0:n.data)==null?void 0:o.message)||(r==null?void 0:r.message)}`)})).data)==null?void 0:t.runtime)||{}};var Z=require("child_process"),I=class{constructor(t,r){this.imageName=t,this.containerName=r}async downloadImage(){console.info(`Downloading image(${this.imageName}) ...`),await this.execPromise(`docker pull ${this.imageName}`),console.info(`Download image(${this.imageName}) success!`)}async runContainer({port:t,env:r,volume:n=[]}){await this.removeContainer();let o=Object.keys(r).filter(a=>r[a]!==void 0).map(a=>`-e ${a}=${r[a]}`).join(" "),s=n==null?void 0:n.map(a=>`-v ${a}`).join(" "),i=`docker run -d -p ${t}:${t} ${o} ${s} --name ${this.containerName} ${this.imageName}`;await this.execPromise(i)}async removeContainer(){await this.execPromise(`docker rm -f ${this.containerName}`).catch(()=>{})}logs(){let t=(0,Z.spawn)("docker",["logs","-f",this.containerName]);t.stdout.on("data",r=>{console.info(`${r}`)}),t.stderr.on("data",r=>{console.info(`${r}`)})}execPromise(t){return new Promise((r,n)=>{(0,Z.exec)(t,(o,s,i)=>{if(o)return n(o);r({stdout:s,stderr:i})})})}};var Ft=c(require("localtunnel"));var Kt=async({appKey:e,runtimeHost:t,resources:r,resourcePort:n})=>{r!=null&&r.length&&r.forEach(o=>{o.path=`http://127.0.0.1:${n}`}),await O({method:w.POST,url:`/apps/api/v1/apps/tunnel/${e}`,data:{resources:r,runtimeHost:t}}).catch(o=>{var s,i;console.info(`addTunnel error ${((i=(s=o==null?void 0:o.response)==null?void 0:s.data)==null?void 0:i.message)||(o==null?void 0:o.message)}`)})},Gt=async e=>{await O({method:"DELETE",url:`/apps/api/v1/apps/tunnel/${e}`}).catch(()=>{})},Bt=async e=>{var t,r;try{return(await(0,Ft.default)({port:e,host:((t=process.env)==null?void 0:t.TUNNEL_HOST)==="OFFICIAL"?void 0:((r=process.env)==null?void 0:r.TUNNEL_HOST)||"http://tunnel.gitee.work:1777"})).url}catch(n){return console.info("runTunnel error",n==null?void 0:n.message),""}};var be=c(require("path")),Vt=require("@rspack/core"),qt=require("@rspack/dev-middleware"),zt=c(require("cors")),Ht=c(require("express")),Jt=require("http-proxy-middleware");function Vr(e,t){var n;let r=(n=t==null?void 0:t.devServer)==null?void 0:n.proxy;if(!(!Array.isArray(r)||r.length===0))for(let o of r){if(!o||!o.target)continue;let s=o.context&&!o.pathFilter?{...o,pathFilter:o.context}:o;e.use((0,Jt.createProxyMiddleware)(s))}}var ee=async({appKey:e,rspackConfig:t})=>{let n=(await G())({environment:"development",appKey:e});if(t){let p=require(be.default.resolve(t));n=$(n,p)}let o=(0,Vt.rspack)(n),s=(0,Ht.default)(),i=Number(process.env.UI_PORT)||8e3,a=(0,qt.devMiddleware)(o);s.use((0,zt.default)()),Vr(s,n),s.use(a),s.get("*",(p,l)=>{var m,f;(f=o.outputFileSystem)==null||f.readFile(be.default.join(((m=n.output)==null?void 0:m.path)||"","index.html"),(g,x)=>{if(g||!x){l.sendStatus(404);return}l.send(x.toString())})}),s.listen(i,"0.0.0.0",()=>{console.info(`The React app is listening on port ${i}!
5
5
  `)})};var Qt=c(require("chokidar"));var Wt=(e,t,r)=>{for(let n of e)K({inputDir:t,outputDir:r,fileName:n,mode:"development"})},Yt=async e=>{let{inputDir:t,outputDir:r,watchFilePaths:n}=e,s=(await P()).getFunctionFiles();Wt(s,t,r);let i,a=[t,...n],p=Qt.default.watch(a);console.info(`watch: ${a.join(", ")}`),p.on("change",l=>{clearTimeout(i),i=setTimeout(()=>{console.info(`${l} has change`),Wt(s,t,r)},1e3)})};var qr=(0,Zt.default)("cli:tunnel"),zr=async()=>{let e=await Ut(),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,n=process.env.CONTAINER_NAME||"cli-dev-apps-runtime-server",o=process.env.PULL_IMAGE!=="false",s={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,APPS_RUNTIME_IOREDIS_OPTIONS:process.env.APPS_RUNTIME_IOREDIS_OPTIONS?`'${process.env.APPS_RUNTIME_IOREDIS_OPTIONS}'`:void 0};return{runtimeImage:t,containerPort:r,containerName:n,containerEnv:s,pullImage:o}},er=async e=>{var Oe,Te,Se;let{inputDir:t,outputDir:r,server:n,filesToCopy:o,resourcePort:s,ui:i,rspackConfig:a,noProxy:p,watchFilePaths:l=[]}=e;await we.default.emptyDir(r);let m=await P(),f=m.app.key,g=m.app.version,x=m.getFunctionFiles(),T=m.resources||[];if(!f){u.error("appKey is required!");return}if(!g){u.error("version is required!");return}console.info(`App key: ${te.default.bold.green(f)}`),console.info(`App version: ${te.default.bold.green(g)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giteeteam/apps-cli",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "Giteeteam Apps cli",
5
5
  "keywords": [
6
6
  "typescript",
@@ -84,6 +84,6 @@
84
84
  "classnames": "^2.3.2"
85
85
  },
86
86
  "engines": {
87
- "node": ">=16"
87
+ "node": ">=20.9.0"
88
88
  }
89
89
  }