yann-vis-cli 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2023 樱花下的市丸银
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2023 樱花下的市丸银
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.en.md CHANGED
@@ -1,13 +1,13 @@
1
- # yann-vis-cli
2
-
3
- ## Install
4
-
5
- ```bash
6
- npm i yann-vis-cli -g
7
- ```
8
-
9
- mac
10
-
11
- ```bash
12
- sudo npm i -g yann-vis-cli
13
- ```
1
+ # yann-vis-cli
2
+
3
+ ## Install
4
+
5
+ ```bash
6
+ npm i yann-vis-cli -g
7
+ ```
8
+
9
+ mac
10
+
11
+ ```bash
12
+ sudo npm i -g yann-vis-cli
13
+ ```
package/README.md CHANGED
@@ -1,13 +1,13 @@
1
- # yann-vis-cli
2
-
3
- ## 安装
4
-
5
- ```bash
6
- npm i -g yann-vis-cli
7
- ```
8
-
9
- mac
10
-
11
- ```bash
12
- sudo npm i -g yann-vis-cli
13
- ```
1
+ # yann-vis-cli
2
+
3
+ ## 安装
4
+
5
+ ```bash
6
+ npm i -g yann-vis-cli
7
+ ```
8
+
9
+ mac
10
+
11
+ ```bash
12
+ sudo npm i -g yann-vis-cli
13
+ ```
package/bin/index.js CHANGED
@@ -1,4 +1,3 @@
1
1
  #! /usr/bin/env node
2
2
 
3
- // require('../lib/index.js');
4
3
  require('../dist/index.js');
package/bin/pvb.js ADDED
@@ -0,0 +1,3 @@
1
+ #! /usr/bin/env node
2
+
3
+ require('../dist/core/pvb.js');
package/bin/pvc.js ADDED
@@ -0,0 +1,3 @@
1
+ #! /usr/bin/env node
2
+
3
+ require('../dist/core/pvc.js');
package/bin/pvu.js ADDED
@@ -0,0 +1,3 @@
1
+ #! /usr/bin/env node
2
+
3
+ require('../dist/core/pvu.js');
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const{requestToken:s,prompt:e}=require("../utils/index");module.exports=async function(r=[]){const a={user:r[0]||"",password:r[1]||""};if(!a.password||!a.user){const s=await e([{type:"text",name:"user",message:"请输入用户名: user"},{type:"password",name:"password",message:"请输入密码: password"}]);a.user=s.user,a.password=s.password}await s(a.user,a.password)};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const{prompt:e}=require("../utils/index");module.exports=async function(){if("register"!==(await e([{type:"select",name:"mode",message:"Please select login or register:",choices:[{title:"login",description:"登录",value:"login"},{title:"register",description:"注册",value:"register"}]}])).mode)return await require("./index")(),!0;require("opn")("http://10.68.120.200/fea_cmty/register")};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
2
- "use strict";const e=require("path"),a=require("yann-fs").default,{to:t}=require("await-to-js"),{scanFindType:i,log:o,exit:s,spawnHandle:r,feaConfig:n,prompt:l,buildTarHandler:c,filterFile:u,compareVersion:p}=require("../utils/index"),d=async(i,o=null)=>{const{name:s,version:l}=await(async t=>{const i=e.resolve(t,"public","base.json"),[o,s]=await a.readJson(i),r=s.version,n=e.resolve(t,"package.json"),[l,c]=await a.readJson(n),u=c.version,d=p(r,u);let w=r;return 1===d?(w=r,c.version=w,await a.outputJson(n,c,{spaces:2,EOL:"\n"})):-1===d&&(w=u,s.version=w,await a.outputJson(i,s,{spaces:2,EOL:"\n"})),{name:s.name,version:w}})(i);await(async e=>{await r(/^win/.test(process.platform)?"pnpm.cmd":"pnpm",["build"],{cwd:e})})(i);const d=s.split("/").at(-1)+"_v"+l,w=e.resolve(i,d);await u(w);const m=(o?`${o}/${d}`:w)+".tar.gz";await a.remove(m),await t(c(i,d,o)),n.autoRemove&&await a.remove(w),n.autoUpload&&await require("../upload/index")([m])},w=async(e,a)=>{a!==e.length&&(await e[a](),a++,await w(e,a))};module.exports=async function(o=[]){const r=await i(),n=process.cwd();if(o[0]){const a=o[0].trim();return void(a.includes(n)?await d(a):await d(e.resolve(n,a)))}const c=e.resolve(n,"package.json"),[u,p]=await a.pathExists(c);if(r){const i=[];if("fea"!==r.type)return p?void await d(n):void s("找不到打包的路径,请切换到要打包的路径下在执行!");i.push({title:"current",description:"Current Directory",value:"current"},{title:"html",description:"Platform Html Body",value:"html"});const o=await l([{name:"buildMode",type:"select",message:"Please select packaging mode",choices:i}]),{buildMode:c}=o;if("current"===c)return void await d(n);if("charts"===c){const i=e.resolve(r.root,"packages","components"),[o,s]=await t(a.readdir(i)),n=[];(await Promise.all(s.map((o=>t(a.isDir(e.resolve(i,o))))))).forEach(((e,a)=>{e[1]&&n.push(s[a])}));const l=e.resolve(r.root,"all_chart_dist");return await a.emptyDir(l),void await w(n.map((a=>()=>d(e.resolve(i,a),l))),0)}if("html"===c)return void await d(e.resolve(r.root,"html"))}else p&&await d(n)};
1
+ // yann-vis-cli v1.0.2 by Yann
2
+ "use strict";const e=require("path"),a=require("yann-fs").default,{to:t}=require("await-to-js"),{scanFindType:i,log:o,exit:s,spawnHandle:r,feaConfig:n,prompt:l,buildTarHandler:c,filterFile:p,compareVersion:u}=require("../utils/index");let d;const w=async(i,o=null)=>{const{name:s,version:l}=await(async t=>{const i=e.resolve(t,"public","base.json"),[o,s]=await a.readJson(i),r=s.version,n=e.resolve(t,"package.json"),[l,c]=await a.readJson(n),p=c.version,d=u(r,p);let w=r;return 1===d?(w=r,c.version=w,await a.outputJson(n,c,{spaces:2,EOL:"\n"})):-1===d&&(w=p,s.version=w,await a.outputJson(i,s,{spaces:2,EOL:"\n"})),{name:s.name,version:w}})(i);await(async e=>{await r(/^win/.test(process.platform)?"pnpm.cmd":"pnpm",["build"],{cwd:e})})(i);const w=s.split("/").at(-1)+"_v"+l,m=e.resolve(i,w);await p(m);const v=(o?`${o}/${w}`:m)+".tar.gz";await a.remove(v),await t(c(i,w,o)),n.autoRemove&&await a.remove(m),!n.autoUpload||d&&"fea"===d.type||await require("../upload/index")([v])},m=async(e,a)=>{a!==e.length&&(await e[a](),a++,await m(e,a))};module.exports=async function(o=[]){d=await i();const r=process.cwd();if(o[0]){const a=o[0].trim();return void(a.includes(r)?await w(a):await w(e.resolve(r,a)))}const n=e.resolve(r,"package.json"),[c,p]=await a.pathExists(n);if(d){const i=[];if("fea"!==d.type)return p?void await w(r):void s("找不到打包的路径,请切换到要打包的路径下在执行!");i.push({title:"current",description:"Current Directory",value:"current"},{title:"html",description:"Platform Html Body",value:"html"});const o=await l([{name:"buildMode",type:"select",message:"Please select packaging mode",choices:i}]),{buildMode:n}=o;if("current"===n)return void await w(r);if("charts"===n){const i=e.resolve(d.root,"packages","components"),[o,s]=await t(a.readdir(i)),r=[];(await Promise.all(s.map((o=>t(a.isDir(e.resolve(i,o))))))).forEach(((e,a)=>{e[1]&&r.push(s[a])}));const n=e.resolve(d.root,"all_chart_dist");return await a.emptyDir(n),void await m(r.map((a=>()=>w(e.resolve(i,a),n))),0)}if("html"===n)return void await w(e.resolve(d.root,"html"))}else p&&await w(r)};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const{feaConfig:o,prompt:e,outputFeaConfig:a}=require("../utils/index");module.exports=async function(o=[]){const t=await e([{name:"autoUpload",type:"confirm",message:"打包后是否自动上传社区?"},{name:"autoRemove",type:"confirm",message:"打包后是否自动删除打包目录?"}]);await a({autoUpload:t.autoUpload,autoRemove:t.autoRemove})};
@@ -0,0 +1,2 @@
1
+ // yann-vis-cli v1.0.2 by Yann
2
+ "use strict";const e=require("../update/index.js"),{readFeaConfigFile:i,exit:r}=require("../utils/index");(async()=>{await e();if(!await i()){if(!await require("../auth/select.js")())return void r()}require("../build/index.js")(process.argv.slice(2))})();
@@ -0,0 +1,2 @@
1
+ // yann-vis-cli v1.0.2 by Yann
2
+ "use strict";const e=require("../update/index.js"),{readFeaConfigFile:i,exit:r}=require("../utils/index");(async()=>{await e();if(!await i()){if(!await require("../auth/select.js")())return void r()}require("../create")(process.argv.slice(2))})();
@@ -0,0 +1,2 @@
1
+ // yann-vis-cli v1.0.2 by Yann
2
+ "use strict";const e=require("../update/index.js"),{readFeaConfigFile:i,exit:r}=require("../utils/index");(async()=>{await e();if(!await i()){if(!await require("../auth/select.js")())return void r()}require("../upload/index.js")(process.argv.slice(2))})();
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const{chartHandle:t}=require("../utils");module.exports=async function(e,s,a,c){await t(e,s,a,c)};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
2
- "use strict";const e=require("path"),{scanFileFindFea:a,log:t,canSkipEmptying:s,exit:c,emptyDir:o,oraHandle:r,spawnHandle:i,wait:l,prompt:n,axios:p,welcomeCli:m,registerChartId:u,userHome:d}=require("../utils/index"),w=require("yann-fs").default,y=(e="")=>!/^[a-z][a-z0-9_]*$/.test(e),g=(e,a)=>!(!e||"fea"!==e.type||!e.packageList)&&e.packageList.includes(a);module.exports=async function(h=[]){try{const v={projectName:null,templateType:"chart",shouldOverwrite:null},j=await a();if(h.length>0){const e=h[0].trim();e&&(v.projectName=e)}if(j&&"fea"===j.type){const a=e.basename(j.cwd);"modules"===a?v.templateType="module":"packages"===a?v.templateType="package":"tools"===a&&(v.templateType="tool")}else v.templateType="chart";v.projectName&&(y(v.projectName)?(v.projectName=null,t.err("包名只允许以小写英文字母开头,只允许使用小写英文字母、数字和下划线")):g(j,v.projectName)&&(v.projectName=null,t.err("包名重复,请重新填写")));const f=await n([{name:"templateType",type:()=>v.templateType?null:"select",onState:e=>v.projectName=String(e.value).trim(),message:"Please select a template",choices:[{title:"package",description:"Custom Package",value:"package"},{title:"tool",description:"Custom Tool",value:"tool"},{title:"module",description:"Custom Module",value:"module"}]},{name:"projectName",type:v.projectName?null:"text",message:"Project name:",onState:e=>v.projectName=String(e.value).trim(),validate:async e=>y(e)?"包名只允许以小写英文字母开头,只允许使用小写英文字母、数字和下划线":!g(j,v.projectName)||"包名重复,请重新填写"},{name:"shouldOverwrite",type:()=>s(v.projectName)?null:"confirm",message:()=>`${"."===v.projectName?"当前目录":`目标目录:"${v.projectName}"`} 不是空的。是否删除现有文件并继续?`},{name:"overwriteChecker",type:(e,a)=>(!1===a.shouldOverwrite&&c("✖ 操作已取消"),null)}]),{projectName:N,shouldOverwrite:k,templateType:T}={...v,...f};let x=0;"chart"===T&&(x=await u(N));const C=process.cwd(),$=e.join(C,N),q=r();k&&(q.start("开始清理目录..."),await o($),q.succeed("目录清理完成."),await l(.1)),q.start("开始下载模版 ...");1===await(async a=>{const[t,s]=await p({url:"/system/chart/last_modified",method:"get",params:{type:a}}),o=e.resolve(d,"yann-vis-cli-config","file.json"),[r,i]=await w.readJson(o),l=i||{chart:"",module:"",tool:"",package:""},n=e.resolve(d,"yann-vis-cli-config","template",a),m=await w.isDir(n);return i&&s?i[a]===s.data.data&&m?2:i[a]!==s.data.data||m?(await w.outputJson(o,{...l,[a]:s.data.data}),1):1:r&&s?(await w.outputJson(o,{...l,[a]:s.data.data}),1):i&&t&&!m?1:i&&t&&m?2:r&&t?(await w.outputJson(o,l),1):void c()})(T)&&(await(async a=>{const t=e.resolve(d,"yann-vis-cli-config","template",a);await w.ensureDir(t);const[s,c]=await p({url:"/system/chart/download_template",method:"get",params:{type:a},responseType:"stream",headers:{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"}}),o=require("tar");c.data.pipe(o.x({strip:1,C:t}))})(T),await l(3)),q.succeed("模板下载完成."),await l(.1),q.start("开始创建项目..."),await w.ensureDir($),await w.copy(e.resolve(d,"yann-vis-cli-config","template",T),$),await require(e.resolve(__dirname,T,"index.js"))(N,$,j,x),q.succeed("项目创建完成."),await l(.1),q.start("开始安装依赖.."),await i(/^win/.test(process.platform)?"pnpm.cmd":"pnpm",["install"],{cwd:`./${N}`}),["chart","package"].includes(T)&&(q.succeed("依赖安装完成."),await l(.1),q.start("开始安装example依赖.."),await i(/^win/.test(process.platform)?"pnpm.cmd":"pnpm",["install"],{cwd:`./${N}/example`})),q.succeed("所有依赖安装完成."),await l(.1),q.clear();require("clear")(),await m(),t.success("\nDone. Now run:\n"),t.success(` cd ${N}`),console.log(),["chart","package"].includes(T)&&(t.success(`\nIf you want to preview the ${T}, you can run:\n`),t.success(` cd ${N}/example/`),t.success(" pnpm dev"),console.log())}catch(e){c(e.message)}};
1
+ // yann-vis-cli v1.0.2 by Yann
2
+ "use strict";const e=require("path"),{scanFileFindFea:a,log:t,canSkipEmptying:s,exit:c,emptyDir:o,oraHandle:r,spawnHandle:i,wait:l,prompt:n,axios:p,welcomeCli:m,registerChartId:u,userHome:d}=require("../utils/index"),w=require("yann-fs").default,y=(e="")=>!/^[a-z][a-z0-9_]*$/.test(e),g=(e,a)=>!(!e||"fea"!==e.type||!e.packageList)&&e.packageList.includes(a);module.exports=async function(h=[]){try{const v={projectName:null,templateType:"chart",shouldOverwrite:null},j=await a();if(h.length>0){const e=h[0].trim();e&&(v.projectName=e)}if(j&&"fea"===j.type){const a=e.basename(j.cwd);v.templateType="modules"===a?"module":"packages"===a?"package":"tools"===a?"tool":null}else v.templateType="chart";v.projectName&&(y(v.projectName)?(v.projectName=null,t.err("包名只允许以小写英文字母开头,只允许使用小写英文字母、数字和下划线")):g(j,v.projectName)&&(v.projectName=null,t.err("包名重复,请重新填写")));const f=await n([{name:"templateType",type:()=>v.templateType?null:"select",onState:e=>v.projectName=String(e.value).trim(),message:"Please select a template",choices:[{title:"package",description:"Custom Package",value:"package"},{title:"tool",description:"Custom Tool",value:"tool"},{title:"module",description:"Custom Module",value:"module"}]},{name:"projectName",type:v.projectName?null:"text",message:"Project name:",onState:e=>v.projectName=String(e.value).trim(),validate:async e=>y(e)?"包名只允许以小写英文字母开头,只允许使用小写英文字母、数字和下划线":!g(j,v.projectName)||"包名重复,请重新填写"},{name:"shouldOverwrite",type:()=>s(v.projectName)?null:"confirm",message:()=>`${"."===v.projectName?"当前目录":`目标目录:"${v.projectName}"`} 不是空的。是否删除现有文件并继续?`},{name:"overwriteChecker",type:(e,a)=>(!1===a.shouldOverwrite&&c("✖ 操作已取消"),null)}]),{projectName:N,shouldOverwrite:k,templateType:x}={...v,...f};let T=0;"chart"===x&&(T=await u(N));const C=process.cwd(),$=e.join(C,N),q=r();k&&(q.start("开始清理目录..."),await o($),q.succeed("目录清理完成."),await l(.1)),q.start("开始下载模版 ...");1===await(async a=>{const[t,s]=await p({url:"/system/chart/last_modified",method:"get",params:{type:a}}),o=e.resolve(d,"yann-vis-cli-config","file.json"),[r,i]=await w.readJson(o),l=i||{chart:"",module:"",tool:"",package:""},n=e.resolve(d,"yann-vis-cli-config","template",a),m=await w.isDir(n);return i&&s?i[a]===s.data.data&&m?2:i[a]!==s.data.data||m?(await w.outputJson(o,{...l,[a]:s.data.data}),1):1:r&&s?(await w.outputJson(o,{...l,[a]:s.data.data}),1):i&&t&&!m?1:i&&t&&m?2:r&&t?(await w.outputJson(o,l),1):void c()})(x)&&(await(async a=>{const t=e.resolve(d,"yann-vis-cli-config","template",a);await w.ensureDir(t);const[s,c]=await p({url:"/system/chart/download_template",method:"get",params:{type:a},responseType:"stream",headers:{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"}}),o=require("tar");c.data.pipe(o.x({strip:1,C:t}))})(x),await l(3)),q.succeed("模板下载完成."),await l(.1),q.start("开始创建项目..."),await w.ensureDir($),await w.copy(e.resolve(d,"yann-vis-cli-config","template",x),$),await require(e.resolve(__dirname,x,"index.js"))(N,$,j,T),q.succeed("项目创建完成."),await l(.1),q.start("开始安装依赖.."),await i(/^win/.test(process.platform)?"pnpm.cmd":"pnpm",["install"],{cwd:`./${N}`}),["chart","package"].includes(x)&&(q.succeed("依赖安装完成."),await l(.1),q.start("开始安装example依赖.."),await i(/^win/.test(process.platform)?"pnpm.cmd":"pnpm",["install"],{cwd:`./${N}/example`})),q.succeed("所有依赖安装完成."),await l(.1),q.clear();require("clear")(),await m(),t.success("\nDone. Now run:\n"),t.success(` cd ${N}`),console.log(),["chart","package"].includes(x)&&(t.success(`\nIf you want to preview the ${x}, you can run:\n`),t.success(` cd ${N}/example/`),t.success(" pnpm dev"),console.log())}catch(e){c(e.message)}};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const{moduleHandle:e}=require("../utils");module.exports=async function(t,s,u){await e(t,s,u)};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const{packageHandle:e}=require("../utils");module.exports=async function(t,a,s){await e(t,a,s)};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const{toolHandle:t}=require("../utils");module.exports=async function(e,o,s){await t(e,o,s)};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const{updatePackageJson:e,feaConfig:n}=require("../utils/index"),t=require("path"),s=require("yann-fs").default,{camelCase:a,upperFirst:o}=require("lodash"),r=e=>{const n=a(e);return o(n)},i=(e,n)=>e?"@fea/"+n:n,l=async(e,n)=>{const t=`\n <script>\n export default {\n name: '${n}'\n };\n <\/script>\n `;await s.appendFile(e,t)};module.exports={chartHandle:async(a,o,i,u)=>{i||await e(t.resolve(o,"example"),{devDependencies:{"@vitejs/plugin-vue":"^3.1.0",sass:"^1.43.2",vite:"^3.1.0"},dependencies:{vue:"^3.2.37"}});const p=i?{name:a,devDependencies:{"@chart/utils":"workspace:*"},author:n.user}:{name:a,devDependencies:{"@vitejs/plugin-vue":"^3.1.0",sass:"^1.43.2",vite:"^3.1.0"},dependencies:{vue:"^3.2.37"},author:n.user};await e(o,p),await s.outputJson(t.resolve(o,"public","base.json"),{name:a,label:"",desc:"Custom Chart",version:"1.0.0",width:500,height:400,type:"other",author:n.user,id:u},{spaces:2,EOL:"\n"});const c=`\n${i?"import { withInstall } from '@chart/utils/vue';":"\nconst withInstall = component => {\n component.install = app => app.component(component.name, component);\n return component;\n};"}\n\nexport const ${r(a)} = withInstall(ChartComponent);\n\nexport default {\n languages,\n style,\n data,\n config,\n component:${r(a)}\n};\n `;await s.appendFile(t.resolve(o,"index.js"),c),await l(t.resolve(o,"src","index.vue"),a)},packageHandle:async(a,o,u)=>{const p=i(u,a);u||await e(t.resolve(o,"example"),{devDependencies:{"@vitejs/plugin-vue":"^3.1.0",sass:"^1.43.2",vite:"^3.1.0"},dependencies:{vue:"^3.2.37"}});const c=u?{name:p,devDependencies:{"@fea/utils":"workspace:*"},author:n.user}:{name:p,devDependencies:{"@vitejs/plugin-vue":"^3.1.0",sass:"^1.43.2",vite:"^3.1.0"},dependencies:{vue:"^3.2.37"},author:n.user};await e(o,c),await s.outputJson(t.resolve(o,"public","base.json"),{name:a,label:"",desc:"Custom Package",version:"1.0.0",author:n.user},{spaces:2,EOL:"\n"});const d=`\n ${u?"import { withInstall } from '@fea/utils/vue';":"\n const withInstall = component => {\n component.install = app => app.component(component.name, component);\n return component;\n };"}\n\n export const ${r(a)} = withInstall(PackageComponent);\n\n export default {\n component:${r(a)}\n };\n `;await s.appendFile(t.resolve(o,"index.js"),d),await l(t.resolve(o,"src","index.vue"),a)},moduleHandle:async(a,o,r)=>{const u=i(r,a),p=r?{name:u,devDependencies:{"@fea/utils":"workspace:*"},author:n.user}:{name:u,dependencies:{pinia:"^2.0.22",vue:"^3.2.37",sass:"^1.43.2","vue-router":"^4.1.5"},devDependencies:{"@vitejs/plugin-vue":"^3.1.0",vite:"^3.1.0"},author:n.user};await e(o,p),await s.outputJson(t.resolve(o,"public","base.json"),{name:a,label:"",desc:"Custom Module",version:"1.0.0",author:n.user},{spaces:2,EOL:"\n"});const c=`import { useStore } from './src/store/demo';\nimport { globalOption } from './src/store/global';\nimport moduleLanguages from './src/locale';\n\n\n// 路由配置 要求包名作为根路由 以免和其他模块路由冲突\n// 配置方式按照vue-router规范,会动态插入到主模块,路由切换要求使用name进行切换,path可能会更改\n// 一级菜单的meta里面有isFull字段判断是否是全屏渲染,默认false\nexport const routes = [\n {\n path: '/${a}',\n name: '${a}',\n component: () => import('./src/views/index.vue'),\n meta: {\n title: '${a}'\n }\n }\n]\n\n// 所有的状态\nexport const store = {\n useStore\n}\n\n/**\n * 接收全局状态\n * @param {object} global\n */\nexport const getGlobalHandler = global => {\n for (const key in global) {\n globalOption[key] = global[key];\n }\n};\n\n// 国际化,需要就配上,使用的时候需要加上模块名\nexport const languages = moduleLanguages\n\nexport default {\n routes,\n languages,\n store,\n getGlobalHandler\n}\n`;await s.writeFile(t.resolve(o,"index.js"),c);const d=`\n // defineStore的ID应该带上包名,避免和其他模块冲突\n export const useStore = defineStore('${a}_storeId', {\n state: () => {\n return {\n count: 0\n };\n }\n });`;await s.appendFile(t.resolve(o,"src","store","demo.js"),d),await l(t.resolve(o,"src","views","index.vue"),a)},toolHandle:async(a,o,r)=>{const l=i(r,a),u=r?{name:l,devDependencies:{"@fea/utils":"workspace:*"},author:n.user}:{name:l,devDependencies:{"@vitejs/plugin-vue":"^3.1.0",sass:"^1.43.2",vite:"^3.1.0"},dependencies:{vue:"^3.2.37"},author:n.user};await e(o,u),await s.outputJson(t.resolve(o,"public","base.json"),{name:a,label:"",desc:"Custom Tool",version:"1.0.0",author:n.user},{spaces:2,EOL:"\n"})}};
package/dist/dev/index.js CHANGED
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const e=require("path"),s=require("yann-fs").default,{exit:i}=require("../utils/index");module.exports=async function(r=[]){const n=process.cwd();let t=n;r.length>0&&(t=r[0].includes(n)?r[0]:e.resolve(n,r[0]));const c=t.includes("package.json")?t:e.resolve(t,"package.json");t=e.dirname(c);const[o,d]=await s.readJson(c);if(o)i(o.message);else{if(d.scripts){const e=require("cross-spawn");if(process.chdir(t),d.scripts.dev)return void e.sync("pnpm",["dev"],{stdio:"inherit"});if(d.scripts.serve)return void e.sync("pnpm",["serve"],{stdio:"inherit"})}i("找不到执行命令!")}};
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const{log:e,readFeaConfigFile:r,exit:s}=require("./utils/index"),{program:i}=require("commander"),{version:a}=require("../package.json"),c=require("./utils/mapActions"),o=require("path"),n=(e,r=[])=>{require(o.resolve(__dirname,e,"index.js"))(r,{})},t=require("./update/index.js");Reflect.ownKeys(c).forEach((s=>{i.command(c[s].command).alias(c[s].alias).description(c[s].desc).action((async()=>{if(await t(),"*"===s)e.err(c[s].desc);else if(["auth","config","tar"].includes(s))n(s,process.argv.slice(3));else{if(await r())n(s,process.argv.slice(3));else{const e=process.argv.slice(3);await require("./auth/select.js")()&&n(s,e)}}}))})),i.version(a).parse(process.argv);
package/dist/tar/index.js CHANGED
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const{buildTarHandler:t}=require("../utils"),{to:e}=require("await-to-js");module.exports=async function(i=[]){if(i.length>0){const[r,s,a,n]=i;await e(t(r,s,a,n))}};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const{log:s,prompt:e,exit:i,welcomeCli:t}=require("../utils/index"),n=require("cross-spawn"),r=/^win/.test(process.platform);module.exports=async function(){if(await(async()=>!!n.sync("npm",["outdated","yann-vis-cli","-g","--registry=https://registry.npmjs.org"]).stdout.toString().replace(/[\n]/g,""))()){const n=await e([{type:"confirm",name:"updateFlag",message:"是否更新Cli工具?"}]),{updateFlag:o}=n;o?(await(async()=>new Promise(((e,t)=>{const{exec:n}=require("child_process");n(`${r?"npm":"sudo npm"} i -g yann-vis-cli${r?" --no-color":""} --registry=https://registry.npmjs.org`,((t,n,r)=>{t?i("异常错误,请手动执行命令更新Cli工具:npm i -g yann-vis-cli"):(console.log(),s.success("Cli工具更新成功!"),e())}))})))(),await t(),i()):i("请更新Cli工具再使用,谢谢!")}};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const e=require("path"),s=require("yann-fs").default,{axios:t,exit:a,log:r}=require("../utils/index"),{to:i}=require("await-to-js"),o=require("form-data"),n=async(e,i)=>{const n=i,c=new o,l=s.createReadStream(e);c.append("file",l,{filename:n});const[d,u]=await t({url:"/system/chart_version/upload_pkg",method:"post",data:c,headers:{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"}});d?a(d.message||"异常错误"):(console.log(),r.success(`${n} 组件上传成功!`))};module.exports=async function(t=[]){const r=process.cwd();let o=r;if(t[0]){const s=t[0].trim();if(s.includes(".tar.gz")){const t=s.includes(r)?s:e.resolve(r,s);return void await i(n(t,e.basename(t)))}o=s.includes(r)?s:e.resolve(r,s)}const[c,l]=await i(s.readdir(o));if(c)return void a(c?.message);const d=l.filter((e=>e.includes(".tar.gz")));await Promise.all(d.map((s=>i(n(e.resolve(o,"./",s),s)))))};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";const e=require("yann-fs").default,a=require("path"),t=require("chalk"),s=require("axios").default,{to:r}=require("await-to-js"),{mergeWith:o,isArray:n}=require("lodash"),i=require("os").homedir(),c={success(e){console.log(t.green(e))},err(e){console.log(t.bold.red(e))}},u=e=>{e&&c.err(e),process.exit(1)},d={user:"",password:"",token:"x",autoUpload:!1,autoRemove:!1},p=async(e=d.user,a=d.password)=>{const[t,s]=await y({url:"/login",method:"post",data:{username:e,password:a}});s?await l({user:e,password:a,token:s.data.token}):u(s.data.msg)},l=async t=>{const s=a.resolve(i,"yann-vis-cli-config",".visConfig"),[r,o]=await e.readJson(s),n=o||{user:"",password:"",token:"",autoUpload:!1,autoRemove:!1};"user"in t&&(n.user=t.user),"password"in t&&(n.password=t.password),"token"in t&&(n.token=t.token),"autoUpload"in t&&(n.autoUpload=t.autoUpload),"autoRemove"in t&&(n.autoRemove=t.autoRemove),await e.outputJson(s,n),d.password=n.password,d.token=n.token,d.user=n.user,d.autoUpload=n.autoUpload,d.autoRemove=n.autoRemove},w=new Map;function f(e){let{url:a,method:t,params:s,data:r}=e;return"string"!=typeof r&&(r=JSON.stringify(r)),[a,t,JSON.stringify(s),r].join("&")}function m(e){const a=f(e);if(w.has(a)){w.get(a)(a),w.delete(a)}}const g=s.create({baseURL:"http://10.68.120.200:8080/fea_cmty/api",headers:{"Content-Type":"application/json;charset=UTF-8"}});async function y(e){const[a,t]=await r(g(e));if(!a)return[a,t];console.log(),u(a.message||a.data.msg)}g.interceptors.request.use((e=>(m(e),d.token&&(e.headers.Authorization=`Bearer ${d.token}`),function(e){const a=f(e);e.cancelToken=e.cancelToken||new s.CancelToken((e=>{w.has(a)||w.set(a,e)}))}(e),e)),(e=>Promise.reject(e))),g.interceptors.response.use((async e=>{if(m(e.config),e.data.code&&200!==e.data.code){if(401===e.data.code){if(d.password&&d.token&&d.user)return await p(),g(e.config);u(e.data.msg)}return Promise.reject(e)}return e}),(e=>{e.config&&m(e.config);const a=function(e){if(s.isCancel(e))return;let a="";if(e&&e.response)switch(e.response.status){case 302:a="接口重定向了!";break;case 400:a="参数不正确!";break;case 401:a="您未登录,或者登录已经超时,请先登录!";break;case 403:a="您没有权限操作!";break;case 404:a=`请求地址出错: ${e.response.config.url}`;break;case 408:a="请求超时!";break;case 409:a="系统已存在相同数据!";break;case 500:a="服务器内部错误!";break;case 501:a="服务未实现!";break;case 502:a="网关错误!";break;case 503:a="服务不可用!";break;case 504:a="服务暂时无法访问,请稍后再试!";break;case 505:a="HTTP版本不受支持!";break;default:a="异常问题,请联系管理员!"}return e.message.includes("timeout")&&(a="网络请求超时!"),e.message.includes("Network")&&(a=window.navigator.onLine?"服务端异常!":"您断网了!"),a}(e);return a&&u(a),Promise.reject(e)}));const h=async t=>{const s=[];if(await e.isDir(t)){const[o,n]=await r(e.readdir(t));(await Promise.all(n.map((s=>r(e.isDir(a.resolve(t,s))))))).forEach(((e,a)=>{e[1]&&s.push(n[a])}))}return s},k=async t=>{const s=process.cwd(),r=a.resolve(s,t),o=a.resolve(t,"package.json"),[n,i]=await e.readJson(o);if(i){const{name:e}=i;if("fea"===e){const[e,t,o,n,i]=await Promise.all([h(r),h(a.join(r,"modules")),h(a.join(r,"exports")),h(a.join(r,"packages")),h(a.join(r,"tools")),h(a.join(r,"community"))]);return{type:"fea",root:r,cwd:s,packageList:[...e,...t,...o,...n,...i]}}}return!1},v=async()=>{const e=await k("./");if(e)return e;const a=await k("../");if(a)return a;const t=await k("../../");if(t)return t;return await k("../../../")},b=async t=>{const s=process.cwd(),r=a.resolve(s,t),o=a.resolve(t,"package.json"),[n,i]=await e.readJson(o);if(i){const{name:e}=i;if("chart-module"===e)return{type:"chart",root:r,cwd:s}}return!1},q=async()=>{const e=await b("./");if(e)return e;const a=await b("../");if(a)return a;const t=await b("../../");if(t)return t;return await b("../../../")};const j=e=>{const t=process.cwd();return e.includes(t)?e:a.resolve(t,e)},C=async(...e)=>{const{spawn:a}=require("child_process");return new Promise((t=>{const s=a(...e);s.stdout.pipe(process.stdout),s.stderr.pipe(process.stderr),s.on("close",(()=>{t()}))}))},x=async(t,s=[".git",".vscode",".DS_Store",".idea"])=>{const o=t||process.cwd();if(await e.isDir(o)){const[t,s]=await r(e.readdir(o));await Promise.all(s.map((e=>x(a.resolve(o,e)))))}else for(let a=0;a<s.length;a++)if(o.includes(s[a]))return void e.remove(o)};module.exports={welcomeCli:async()=>{const{promisify:e}=require("util"),a=e(require("figlet")),t=await a("Welcome to VisCli");console.log(),c.success(t)},registerChartId:async e=>{const a=new(require("form-data"));a.append("typeId","other"),a.append("chartName",e);const[t,s]=await y({url:"/system/chart/register",method:"post",data:a,headers:{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"}});if(s)return s.data.data},filterFile:x,updatePackageJson:async(t,s)=>{const r=a.join(t,"package.json"),[i,c]=await e.readJson(r);c&&(o(c,s,((e,a)=>{if(n(e))return e.concat(a)})),await e.outputJson(r,c,{spaces:2,EOL:"\n"}))},prompt:async e=>{const a=require("prompts");return await a(e,{onCancel:()=>{u("✖ 操作已取消")}})},log:c,exit:u,axios:y,readFeaConfigFile:async()=>{const t=a.resolve(i,"yann-vis-cli-config",".visConfig"),[s,r]=await e.readJson(t);return!s&&(!!(r.user&&r.password&&r.token)&&(d.user=r.user,d.password=r.password,d.token=r.token,d.autoUpload=r.autoUpload,d.autoRemove=r.autoRemove,!0))},feaConfig:d,requestToken:p,scanFileFindFea:v,canSkipEmptying:function(a){if(!e.pathExistsSync(a))return!0;const t=e.readdirSync(a);return 0===t.length||1===t.length&&".git"===t[0]},emptyDir:async function(a){await e.pathExists(a)&&await e.remove(a)},oraHandle:e=>{const a=require("ora")(e);return a.start(),a},spawn:C,wait:e=>new Promise((a=>{setTimeout((()=>{a()}),1e3*e)})),outputFeaConfig:l,buildTarHandler:async(a,t,s=null,r=null)=>(a=j(a),s&&(s=j(s),await e.ensureDir(s)),new Promise((o=>{const n={gzip:!0,cwd:a,sync:!0},i="string"==typeof t?[t]:t,c=r||"string"==typeof t?t:"tar_"+Date.now();require("tar").c(n,i).pipe(e.createWriteStream(`${s||a}/${c}.tar.gz`)).on("finish",o)}))),scanFileFindChart:q,scanFindType:async()=>{const e=await v();if(e)return e;const a=await q();return a||null},spawnHandle:async(...e)=>{await r(C(...e))},compareVersion:function(e,a){0===e.indexOf("v")&&(e=e.slice(1)),0===a.indexOf("v")&&(a=a.slice(1)),e=e.split("."),a=a.split(".");const t=Math.max(e.length,a.length);for(;e.length<t;)e.push("0");for(;a.length<t;)a.push("0");for(let s=0;s<t;s++){const t=parseInt(e[s]),r=parseInt(a[s]);if(t>r)return 1;if(t<r)return-1}return 0},userHome:i};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.0.1 by Yann
1
+ // yann-vis-cli v1.0.2 by Yann
2
2
  "use strict";module.exports={create:{command:"create",alias:"c",desc:"Create Project",examples:["pvis create <project-name>"]},build:{command:"build",alias:"b",desc:"Package Project",examples:["pvis build"]},dev:{command:"dev",alias:"d",desc:"Launch Project",examples:["pvis dev"]},upload:{command:"upload",alias:"u",desc:"Upload Project",examples:["pvis upload"]},auth:{command:"auth",alias:"a",desc:"User Information",examples:["pvis auth"]},tar:{command:"tar",alias:"t",desc:"tar",examples:["pvis tar"]},config:{command:"config",alias:"set",desc:"config",examples:["pvis config"]},"*":{command:"*",alias:"",desc:"command not found",examples:[]}};
package/package.json CHANGED
@@ -1,48 +1,51 @@
1
- {
2
- "name": "yann-vis-cli",
3
- "version": "1.0.1",
4
- "description": "vis-cli",
5
- "bin": {
6
- "pvis": "./bin/index.js",
7
- "pv": "./bin/index.js"
8
- },
9
- "scripts": {
10
- "build": "rollup --config"
11
- },
12
- "keywords": [],
13
- "author": "Yann",
14
- "license": "ISC",
15
- "main": "./dist/index.js",
16
- "dependencies": {
17
- "await-to-js": "^3.0.0",
18
- "axios": "^1.3.3",
19
- "chalk": "^4.1.2",
20
- "clear": "^0.1.0",
21
- "commander": "^10.0.0",
22
- "cross-spawn": "^7.0.3",
23
- "crypto": "^1.0.1",
24
- "figlet": "^1.5.2",
25
- "form-data": "^4.0.0",
26
- "lodash": "^4.17.21",
27
- "opn": "^6.0.0",
28
- "ora": "^5.4.1",
29
- "prompts": "^2.4.2",
30
- "tar": "^6.1.13",
31
- "yann-fs": "^1.6.0"
32
- },
33
- "devDependencies": {
34
- "@rollup/plugin-commonjs": "^18.1.0",
35
- "@rollup/plugin-json": "^6.0.0",
36
- "rollup": "^2.79.1",
37
- "rollup-plugin-babel": "^4.4.0",
38
- "rollup-plugin-banner": "^0.2.1",
39
- "rollup-plugin-node-resolve": "^5.2.0",
40
- "rollup-plugin-terser": "^7.0.2"
41
- },
42
- "files": [
43
- "LICENSE",
44
- "README.md",
45
- "dist/",
46
- "bin/"
47
- ]
48
- }
1
+ {
2
+ "name": "yann-vis-cli",
3
+ "version": "1.0.2",
4
+ "description": "vis-cli",
5
+ "bin": {
6
+ "pvis": "./bin/index.js",
7
+ "pv": "./bin/index.js",
8
+ "pvc": "./bin/pvc.js",
9
+ "pvu": "./bin/pvu.js",
10
+ "pvb": "./bin/pvb.js"
11
+ },
12
+ "scripts": {
13
+ "build": "rollup --config"
14
+ },
15
+ "keywords": [],
16
+ "author": "Yann",
17
+ "license": "ISC",
18
+ "main": "./dist/index.js",
19
+ "dependencies": {
20
+ "await-to-js": "^3.0.0",
21
+ "axios": "^1.3.3",
22
+ "chalk": "^4.1.2",
23
+ "clear": "^0.1.0",
24
+ "commander": "^10.0.0",
25
+ "cross-spawn": "^7.0.3",
26
+ "crypto": "^1.0.1",
27
+ "figlet": "^1.5.2",
28
+ "form-data": "^4.0.0",
29
+ "lodash": "^4.17.21",
30
+ "opn": "^6.0.0",
31
+ "ora": "^5.4.1",
32
+ "prompts": "^2.4.2",
33
+ "tar": "^6.1.13",
34
+ "yann-fs": "^1.6.0"
35
+ },
36
+ "devDependencies": {
37
+ "@rollup/plugin-commonjs": "^18.1.0",
38
+ "@rollup/plugin-json": "^6.0.0",
39
+ "rollup": "^2.79.1",
40
+ "rollup-plugin-babel": "^4.4.0",
41
+ "rollup-plugin-banner": "^0.2.1",
42
+ "rollup-plugin-node-resolve": "^5.2.0",
43
+ "rollup-plugin-terser": "^7.0.2"
44
+ },
45
+ "files": [
46
+ "LICENSE",
47
+ "README.md",
48
+ "dist/",
49
+ "bin/"
50
+ ]
51
+ }