yann-vis-cli 1.6.6 → 1.6.7

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/action.js CHANGED
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";module.exports=[{command:"create",alias:"c",desc:"Create Project",examples:["pvis create <project-name>"]},{command:"pack",alias:"pk",desc:"Pack all charts",examples:["pvis pack"],option:["--full"]},{command:"vpack",alias:"vp",desc:"Pack all charts",examples:["pvis vpack"]},{command:"build",alias:"b",desc:"Package Project",examples:["pvis build"]},{command:"dev",alias:"d",desc:"Launch Project",examples:["pvis dev"]},{command:"upload",alias:"u",desc:"Upload Chart Project",examples:["pvis upload"],isAuth:!0},{command:"auth",alias:"a",desc:"User Information",examples:["pvis auth"]},{command:"tar",alias:"t",desc:"tar",examples:["pvis tar"]},{command:"config",alias:"set",desc:"cli config",examples:["pvis config"]},{command:"*",alias:"",desc:"command not found",examples:[]}];
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";const{requestToken:s,prompt:e,exit:r,log:a}=require("../utils"),t=require("js-md5"),o=async u=>{u++;const i=await e([{type:"text",name:"user",message:"请输入用户名: user"},{type:"password",name:"password",message:"请输入密码: password"}]),n=await s(i.user,t(i.password));return console.log(),n?(a.success("登录成功!"),i.user):u<3?(a.err("登录失败,请重新输入:"),await o(u)):void r("请稍后尝试!")};module.exports=async function(e=[]){const r={user:e[0]||"",password:e[1]||""};if(r.password&&r.user){if(await s(r.user,t(r.password)))return r.user}return await o(0)};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";const e=require("opn"),{prompt:i,log:t,wait:s,API_IP:r}=require("../utils");module.exports=async function(){if("register"!==(await i([{type:"select",name:"mode",message:"请选择登录或注册",choices:[{title:"登录",description:"Sign in",value:"SignIn"},{title:"注册",description:"register",value:"register"}]}])).mode){return await require("./index")()}{const i=r;console.log(),t.success(`浏览器如果未正常打开,可以手动打开:${i}`),await e(i),await s(.1),process.exit(0)}};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";const a=require("path"),e=require("yann-fs").default,{to:t}=require("await-to-js"),{log:s,exit:o,spawnHandle:n,prompt:i,buildTarHandler:r,filterFile:c,compareVersion:p,get_cli_config:u,getPath:l}=require("../utils"),w=async(s,i=null)=>{const{name:l,version:w}=await(async t=>{const s=a.resolve(t,"public","base.json"),[n,i]=await e.readJson(s);if(n)return void o("找不到 base.json 文件");const r=i.version,c=a.resolve(t,"package.json"),[u,l]=await e.readJson(c);if(u)return void o("找不到 package.json 文件");const w=l.version,d=p(r,w);let v=r;return 1===d?(v=r,l.version=v,await e.outputJson(c,l,{spaces:2,EOL:"\n"})):-1===d&&(v=w,i.version=v,await e.outputJson(s,i,{spaces:2,EOL:"\n"})),{name:i.name,version:v}})(s);await(async a=>{await n(/^win/.test(process.platform)?"pnpm.cmd":"pnpm",["build"],{cwd:a})})(s);const d=l.split("/").at(-1)+"_v"+w,v=a.resolve(s,d);await c(v);const m=(i?`${i}/${d}`:v)+".tar.gz";await e.remove(m),await t(r(s,d,i));const[f]=await u();f.autoRemove&&await e.remove(v),f.autoUpload&&await require("../upload/index")([m])};module.exports=async function(t=[]){const s=process.cwd();if(t[0]){const a=t[0].trim();return void await w(l(a))}const n=a.resolve(s,"package.json"),[i,r]=await e.pathExists(n);i?o("找不到目录"):r&&await w(s)};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";const{prompt:e,set_cli_config:o,log:t}=require("../utils");module.exports=async function(a=[]){const i=await e([{name:"autoUpload",message:"图表打包后是否自动上传泰合社区?",type:"toggle",initial:!1,active:"yes",inactive:"no"},{name:"autoRemove",message:"打包后是否自动删除打包目录?",type:"toggle",initial:!1,active:"yes",inactive:"no"}]);await o({autoUpload:i.autoUpload,autoRemove:i.autoRemove}),t.success("配置完成!"),console.log()};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
2
- "use strict";const{updatePackageJson:e,getPackageName:n,outputVueName:t,get_plugin_version:a}=require("../../utils"),i=require("yann-fs").default,o=require("path");module.exports=async function(s,p,c,r,u,l){await i.outputJson(o.resolve(p,"public","base.json"),{name:s,label:s,desc:"Custom Chart",version:"1.0.0",width:500,height:400,type:u||"other",author:r,id:l},{spaces:2,EOL:"\n"});const d=`\n${c&&"chart"===c.type?"import { withInstall } from '@chart/utils';":"\nconst withInstall = _component => {\n _component.install = app => app.component(_component.name, _component);\n return _component;\n};"}\n\n// 具名组件\nexport const ${n(s)} = withInstall(component);\n\nexport default {\n style,\n data,\n config,\n component: ${n(s)},\n option\n};`;await i.appendFile(o.resolve(p,"index.js"),d),await t(o.resolve(p,"src","index.vue"),s),await e(p,{name:s,author:r}),c&&"chart"===c.type?await e(p,{name:s,author:r,devDependencies:{"@chart/utils":"workspace:*"}}):(await e(p,{name:s,author:r,devDependencies:{"@vitejs/plugin-vue":"^3.2.0",sass:"^1.69.7",vite:"^4.5.5","yann-snapshot":"^0.1.0","yann-chart-cli":"^"+a("yann-chart-cli")||"1.0.6","vite-plugin-compression":"^0.5.1","vite-plugin-banner":"^0.7.1"},dependencies:{vue:"^3.4.4","yann-i18n":"^1.0.7"}}),await e(o.resolve(p,"example"),{devDependencies:{"@vitejs/plugin-vue":"^5.0.2",sass:"^1.69.7",vite:"^5.0.10"},dependencies:{vue:"^3.4.4"}}))};
1
+ // yann-vis-cli v1.6.7 by Yann
2
+ "use strict";const{updatePackageJson:e,getPackageName:a,outputVueName:n,get_plugin_version:t}=require("../../utils"),i=require("yann-fs").default,s=require("path");module.exports=async function(a,u,r,o,c,p){await i.outputJson(s.resolve(u,"public","base.json"),{name:a,label:a,desc:"Custom Chart",version:"1.0.0",width:500,height:400,type:c||"other",author:o,id:p},{spaces:2,EOL:"\n"}),await n(s.resolve(u,"src","index.vue"),a),await e(u,{name:a,author:o}),r&&"chart"===r.type?await e(u,{name:a,author:o,devDependencies:{"@chart/utils":"workspace:*"}}):(await e(u,{name:a,author:o,devDependencies:{"@vitejs/plugin-vue":"^3.2.0",sass:"^1.69.7",vite:"^4.5.5","yann-snapshot":"^0.1.0","yann-chart-cli":"^"+t("yann-chart-cli")||"1.0.7","vite-plugin-compression":"^0.5.1","vite-plugin-banner":"^0.7.1"},dependencies:{vue:"^3.4.4","yann-i18n":"1.0.7"}}),await e(s.resolve(u,"example"),{devDependencies:{"@vitejs/plugin-vue":"^5.0.2",sass:"^1.69.7",vite:"^5.0.10"},dependencies:{vue:"^3.4.4"}}))};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";const e=require("path"),{scanFileFindChart:t,scanDirHandle:a,prompt:i,log:s,oraHandle:n,spawnHandle:o,wait:r,welcomeCli:l,get_cli_config:c,getGitUser:u,registerChartId:p,requestToken:d,exit:m}=require("../utils"),w=require("yann-fs").default;module.exports=async function(m=[]){const g="chart",[f]=await c();let v,y=!1;if(f.user&&f.password&&f.token&&(y=await d(f.user,f.password)),!y){const e=await u(),t=await i([{name:"isLogin",type:"toggle",message:"未登录,是否先登录:",initial:!1,active:"yes",inactive:"no"},{name:"user",type:(e,t)=>t.isLogin?null:"text",initial:e||"",message:"请填写泰合社区的用户名"}]);y=t.isLogin,v=t.isLogin?await require("../auth/index.js")():t.user}const h=await t(),{chartType:j}=await i([{name:"chartType",type:"select",message:"请选择图表类型:",initial:4,choices:[{title:"折线图",value:"line"},{title:"柱状图",value:"bar"},{title:"饼图",value:"pie"},{title:"表格",value:"form"},{title:"其他",value:"other"},{title:"地图",value:"map"},{title:"文本",value:"text"},{title:"指标",value:"indicator"},{title:"交互",value:"interaction"}]}]);console.log("推荐添加自定义前缀以防止和其他图表名重复并且便于后期统一管理");let x=Date.now();const{projectName:_}=await i([{name:"projectName",type:"text",message:"请输入图表名:",initial:m[0]||"custom_chart",validate:async t=>{if(((e="")=>!/^[a-z][a-z0-9_-]*$/.test(e))(t))return"包名只允许以小写英文字母开头,只允许使用小写英文字母、数字和下划线";if(await(async t=>{if(h){const[i,s,n]=await Promise.all([a(h.root),a(e.join(h.root,"packages")),a(e.join(h.root,"packages","components")),a(e.join(h.root,"packages","tailored"))]);if(i.includes(t)||s.includes(t)||n.includes(t))return!0}else if((await a(process.cwd())).includes(t))return!0;return!1})(t))return"包名重复";if(y){const[e,a]=await p(t,j);if("ECONNABORTED"===e?.code)return console.log(),console.log("暂时无法连接到服务器!"),!0;if(e||!a||!a.data||!a.data.data)return e?.data?.msg||"请重新填写";x=a.data.data}return!0}}]),k=n("创建项目..."),q=process.cwd(),C=h?q.includes("tailored")?e.join(h.root,"packages","tailored",_):e.join(h.root,"packages","components",_):e.join(q,_);await w.ensureDir(C),await w.copy(e.resolve(__dirname,"../../template",g),C),await require(e.resolve(__dirname,g,"index.js"))(_,C,h,v,j,x),k.succeed("项目创建完成."),await r(.1),k.start("安装依赖.."),await o(/^win/.test(process.platform)?"pnpm.cmd":"pnpm",["install"],{cwd:C}),await o(/^win/.test(process.platform)?"pnpm.cmd":"pnpm",["install"],{cwd:`${C}/example`}),k.succeed("依赖安装完成."),await r(.1),k.clear();require("clear")(),await l(),console.log("\n完成. 现在可以执行:\n"),s.success(` cd ${_}`),s.success(" pnpm dev:example"),console.log()};
package/dist/dev/index.js CHANGED
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";const e=require("path"),s=require("yann-fs").default,{exit:r,getPath:i}=require("../utils");module.exports=async function(t=[]){let n=process.cwd();t.length>0&&(n=i(t[0]));const c=n.includes("package.json")?n:e.resolve(n,"package.json");n=e.dirname(c);const[o,a]=await s.readJson(c);if(o)r(o?.message);else{if(a.scripts){const e=require("cross-spawn");if(process.chdir(n),a.scripts.dev)return void e.sync("pnpm",["dev"],{stdio:"inherit"});if(a.scripts.serve)return void e.sync("pnpm",["serve"],{stdio:"inherit"})}r("找不到执行命令!")}};
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";const e=require("./renew"),r=require("./action"),{program:o}=require("commander"),{version:s}=require("../package.json"),a=require("chalk"),i=require("path"),{log:c,get_cli_config:n,exit:t,command:m}=require("./utils"),d=(e,r=[])=>{try{require(i.resolve(__dirname,e,"index.js"))(r,{})}catch(e){t(e?.message)}};r.forEach((r=>{(r.option?o.option(...r.option):o).command(r.command).alias(r.alias).description(r.desc).action((async()=>{m.shell=r.command;const o=process.argv.slice(3);if(m.argv=o,await e(),"*"===r.command)c.err(r.desc);else if(r.isAuth){const[e]=await n();if(e.user)d(r.command,o);else{await require("./auth/index.js")()&&d(r.command,o)}}else d(r.command,o)}))})),"-v"===process.argv[2]&&(console.log(s),t()),o.version(s).parse(process.argv),process.on("uncaughtException",(function(e){console.log(a.bold.red("err:"),a.bold.red(e?.message||"异常错误!")),process.exit(1)}));
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
2
- "use strict";const e=require("path"),t=require("yann-fs").default,{to:n}=require("await-to-js"),{spawnHandle:a,scanFileFindChart:r,getPackageName:o}=require("../utils"),s=require("lodash").orderBy;module.exports=async function(){const i=await r();if(i){const r=e.resolve(i.root,"packages"),p=e.resolve(r,"components");await t.emptyDir(e.resolve(r,"pgChart"));const[l,c]=await n(t.readdir(p));if(c){const n=[],l=[];await Promise.all(c.map((a=>(async(n,a,r,s)=>{if(0!==n.indexOf(".")){const i=e.resolve(a,n);if(await t.isDir(i)){const[a,p]=await t.readJson(e.resolve(i,"package.json"));if(p){const[a,p]=await t.pathExists(e.resolve(i,"index.js"));if(p){const[a,p]=await t.readJson(e.resolve(i,"public","base.json")),{version:l,isDev:c,isVip:m,label:u}=p||{version:"1.0.0",label:"未命名"};if(c||m)return;const f=o(n);return((e,t,n,a,r,o)=>{e.push({name:t,content:`import ${o?"* as _"+t:"_"+t} from './components/${n}${o?"/core":""}'\nexport const ${t} = { ..._${t}, version: 'v${a}', label: '${r}' }`})})(r,f,n,l,u),void((e,t,n,a=!1)=>{e.push({name:`PgChart${t}`,file_name:`pg-chart-${n}`,js_content:`import { withInstall } from '../../utils'\nimport ${t} from './index.vue'\n\nexport const PgChart${t} = withInstall(${t})\nexport default PgChart${t}\n`,content:`<script setup lang="ts">\nimport { useAttrs, ref } from 'vue'\nimport VChart from '../../core/v-chart.vue'\nimport type { ScreenLayerOption, ChartData, ChartStyle, ChartEvents } from '../../core/doc'\nimport ${a?"* as "+t:t} from '../../components/${n}${a?"/core":""}'\n\nconst $attrs = useAttrs()\n\ndefineProps<{\n styled?: ChartStyle\n option?: ScreenLayerOption\n data?: ChartData\n events?: ChartEvents[]\n}>()\n\ndefineOptions({\n name: 'pg-chart-${n}',\n inheritAttrs: false\n})\n\nconst chartRef = ref<InstanceType<typeof VChart> | null>(null)\n\ndefineExpose({\n value: chartRef\n})\n<\/script>\n\n<template>\n <VChart ref="chartRef" :chart="${t}" v-bind="$attrs" :option="option" :styled="styled" :data="data" :events="events" />\n</template>`})})(s,f,n)}}}}})(a,p,n,l)))),await t.outputFile(e.resolve(r,"index.js"),s(n,"name").map((e=>e.content)).join("\n")),e.resolve(i.root,"packages/public","package.json"),await t.emptyDir(e.resolve(r,"pg-chart")),await Promise.all(l.map((n=>{t.outputFile(e.resolve(r,"pg-chart",n.file_name,"index.vue"),n.content)}))),await Promise.all(l.map((n=>{t.outputFile(e.resolve(r,"pg-chart",n.file_name,"index.ts"),n.js_content)}))),await t.outputFile(e.resolve(r,"pg-chart/index.ts"),l.map((e=>`export { ${e.name} } from './${e.file_name}'`)).join("\n"));const m=`${await t.readFile(e.resolve(r,"core","temp.ts"),"utf-8")}\n ${l.map((e=>`export { ${e.name} } from '../pg-chart/${e.file_name}'`)).join("\n")}\n `;await t.outputFile(e.resolve(r,"core","index.ts"),m,"utf8"),await(async e=>{await a(/^win/.test(process.platform)?"pnpm.cmd":"pnpm",["build"],{cwd:e})})(r)}}};
1
+ // yann-vis-cli v1.6.7 by Yann
2
+ "use strict";const e=require("path"),t=require("yann-fs").default,{to:r}=require("await-to-js"),{spawnHandle:n,scanFileFindChart:a,getPackageName:o}=require("../utils"),s=require("lodash").orderBy;module.exports=async function(){const n=await a();if(!n)return;const o=e.resolve(n.root,"packages"),c=e.resolve(o,"components");try{await Promise.allSettled([t.emptyDir(e.resolve(o,"pgChart")),t.emptyDir(e.resolve(o,"pg-chart"))]);const[n,a]=await r(t.readdir(c));if(n||!a)return;const l=[];await Promise.all(a.map((e=>p(e,c,l))));const m=s(l,"name");await t.outputFile(e.resolve(o,"index.js"),m.map((e=>e.content)).join("\n"));const u=[];m.forEach((r=>{u.push(t.outputFile(e.resolve(o,"pg-chart",r.pgDirName,"index.vue"),r.pgContent),t.outputFile(e.resolve(o,"pg-chart",r.pgDirName,"index.ts"),r.pgTsContent))})),await Promise.allSettled(u),await t.outputFile(e.resolve(o,"pg-chart/index.ts"),m.map((e=>`export { ${e.pgName} } from './${e.pgDirName}'`)).join("\n"));const d=`${await t.readFile(e.resolve(o,"core","temp.ts"),"utf-8")}\n ${m.map((e=>`export { ${e.pgName} } from '../pg-chart/${e.pgDirName}'`)).join("\n")}\n `;await t.outputFile(e.resolve(o,"core","index.ts"),d,"utf8"),await i(o)}catch(r){await Promise.allSettled([t.emptyDir(e.resolve(o,"pgChart")),t.emptyDir(e.resolve(o,"pg-chart"))])}};const i=async e=>{await n(/^win/.test(process.platform)?"pnpm.cmd":"pnpm",["build"],{cwd:e})},p=async(r,n,a)=>{if(0===r.indexOf("."))return;const s=e.resolve(n,r);if(!await t.isDir(s))return;const[i,p]=await t.readJson(e.resolve(s,"package.json"));if(i||!p)return;const[c,l]=await t.pathExists(e.resolve(s,"index.js"));if(c||!l)return;const[m,u]=await t.readJson(e.resolve(s,"public","base.json"));if(m||!u)return;const{version:d,isDev:h,isVip:f,label:v}=u;if(h||f)return;const g=o(r),[$,w]=await t.pathExists(e.resolve(s,"render.js")),y=!$&&w;a.push({name:g,content:`import ${"_"+g} from './components/${r}${y?"/render":""}'\nexport const ${g} = { ..._${g}, version: 'v${d}', label: '${v}' }`,pgName:`PgChart${g}`,pgDirName:`pg-chart-${r}`,pgTsContent:`import ${g} from './index.vue'\nexport const PgChart${g} = ${g}\nexport default PgChart${g}`,pgContent:`<script setup lang="ts">\nimport { useAttrs, ref } from 'vue'\nimport VChart from '../../core/v-chart.vue'\nimport type { ScreenLayerOption, ChartData, ChartStyle, ChartEvents } from '../../core/doc'\nimport ${g} from '../../components/${r}${y?"/render":""}'\n\nconst $attrs = useAttrs()\n\ndefineProps<{\n styled?: ChartStyle\n option?: ScreenLayerOption\n data?: ChartData\n events?: ChartEvents[]\n}>()\n\ndefineOptions({\n name: 'pg-chart-${r}',\n inheritAttrs: false\n})\n\nconst chartRef = ref<InstanceType<typeof VChart> | null>(null)\n\ndefineExpose({\n value: chartRef\n})\n<\/script>\n\n<template>\n <VChart ref="chartRef" :chart="${g}" v-bind="$attrs" :option="option" :styled="styled" :data="data" :events="events" />\n</template>`})};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";const{log:e,prompt:t,exit:a,welcomeCli:i,get_update_log:n,set_update_log:s}=require("../utils"),o=/^win/.test(process.platform),c=async()=>{const n=await t([{name:"updateFlag",message:"是否更新Cli工具?",type:"toggle",initial:!0,active:"yes",inactive:"no"}]),{updateFlag:c}=n;c?(await(async()=>new Promise(((t,i)=>{const{exec:n}=require("child_process");n(`${o?"npm":"sudo npm"} i -g yann-vis-cli${o?" --no-color":""}`,((i,n,s)=>{i?a("异常错误,请手动执行命令更新Cli工具:npm i -g yann-vis-cli"):(console.log(),e.success("Cli工具更新成功!"),t())}))})))(),await i(),await s(),a()):await s(Date.now()-6e5)};module.exports=async function(){if(1===await(async()=>{const e=await n();return Date.now()-e>864e5?0:1})())return;!!require("cross-spawn").sync("npm",["outdated","yann-vis-cli","-g"]).stdout.toString().replace(/[\n]/g,"")?await c():await s()};
package/dist/tar/index.js CHANGED
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";const{buildTarHandler:t,exit:e}=require("../utils"),{to:i}=require("await-to-js");module.exports=async function(s=[]){if(s.length>0){const[a,r,n,o]=s,[u]=await i(t(a,r,n,o));u&&e(u?.message)}};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";const e=require("path"),t=require("yann-fs").default,{axios:a,exit:s,log:i,getPath:r,get_cli_config:o,requestToken:n}=require("../utils"),{to:u}=require("await-to-js"),c=require("form-data"),l=require("p-limit")(1),d=async(e,r)=>{const o=r;console.log(`准备上传 ${o} ...`);const n=new c,u=t.createReadStream(e);n.append("file",u,{filename:o});const[l,d]=await a({url:"/chart/version/upload_pkg",method:"post",data:n,headers:{"Content-Type":"multipart/form-data"},timeout:3e4});l?s(l?.message||l?.data?.msg||"异常错误"):(console.log(),i.success(`${o} 组件上传成功!`),console.log())};module.exports=async function(a=[]){const[i]=await o();if(i.user){if(i.user&&i.password&&i.token){await n(i.user,i.password)||await require("../auth/index.js")()}}else await require("../auth/index.js")();let c=process.cwd();if(a[0]){const t=a[0].trim();if(t.includes(".tar.gz")){const a=r(t);return void await u(d(a,e.basename(a)))}c=r(t)}const[m,f]=await u(t.readdir(c));if(m)return void s(m?.message);const p=f.filter((e=>e.includes(".tar.gz")));await Promise.all(p.map((t=>l((()=>u(d(e.resolve(c,"./",t),t)))))))};
package/dist/utils.js CHANGED
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";const e=require("yann-fs").default,t=require("path"),r=require("chalk"),s=require("axios").default,{to:n}=require("await-to-js"),{camelCase:a,upperFirst:o,mergeWith:i,isArray:c}=require("lodash"),u=require("os").homedir(),l={success(e){console.log(r.green(e))},err(e){console.log(r.bold.red(e))},info(e){console.log(r.blue(e))}},p=e=>{e&&(console.log(),l.err(e)),process.exit(1)},d=t.resolve(u,".yann-vis-store");let g={};const m=async t=>{const[r,s]=await w();g={...r,...t},await e.outputJson(s,g)},w=async()=>{const r=t.resolve(d,".cli_store");if(Object.keys(g).length>0)return[g,r];const[s,n]=await e.readJson(r);return s?[{user:"",password:"",token:"",autoUpload:!1,autoRemove:!1},r]:(g=n,[n,r])};const f="http://10.11.11.100",h=`${f}/thpower/api`,y=s.create({baseURL:h,headers:{"Content-Type":"application/json;charset=UTF-8"},timeout:1e4});async function v(e){return n(y(e))}y.interceptors.request.use((async e=>{const[t]=await w();return t.token&&(e.headers.Authorization=`${t.token}`),e}),(e=>Promise.reject(e))),y.interceptors.response.use((async e=>e.data?.code&&200!==e.data?.code?Promise.reject(e):e),(e=>(function(e){s.isCancel(e)||(e&&e.response,e?.message?.includes("timeout"))}(e),Promise.reject(e))));const _=e=>{const r=process.cwd();return e.includes(r)?e:t.resolve(r,e)};const q=async(r,s=[".git",".vscode",".DS_Store",".idea"])=>{const a=r||process.cwd();if(await e.isDir(a)){const[r,s]=await n(e.readdir(a));if(r)return p(r?.message);await Promise.all(s.map((e=>q(t.resolve(a,e)))))}else for(let t=0;t<s.length;t++)if(a.includes(s[t]))return void e.remove(a)},P=async r=>{const s=process.cwd(),n=t.resolve(s,r),a=t.resolve(r,"package.json"),[o,i]=await e.readJson(a);if(i){const{name:r}=i;if("chart"===r){const[r,a]=await e.readJson(t.resolve(n,".pv_store"));if(a&&"chart"===a.name)return{type:"chart",root:n,cwd:s}}}return!1},k={user:""};module.exports={userInfo:k,getGitUser:async()=>{const e=require("cross-spawn").sync("git",["config","user.name"]);return k.user=e.stdout.toString().replace(/[\n]/g,""),k.user},scanFileFindChart:async()=>{const e=await P("./");if(e)return e;const t=await P("../");if(t)return t;const r=await P("../../");if(r)return r;return await P("../../../")},outputVueName:async(t,r)=>{const s=`\n<script setup>\n import { defineProps, defineEmits, defineOptions } from 'vue';\n defineProps({\n styled: Object,\n data: Object,\n width: Number,\n height: Number,\n events: Array,\n option: Object\n });\n defineEmits(['message']);\n defineOptions({\n name: '${r}'\n })\n<\/script>`;await e.appendFile(t,s)},updatePackageJson:async(r,s)=>{const n=t.join(r,"package.json"),[a,o]=await e.readJson(n);a?p():o&&(i(o,s,((e,t)=>{if(c(e))return e.concat(t)})),await e.outputJson(n,o,{spaces:2,EOL:"\n"}))},registerChartId:async(e,t)=>v({url:"/chart/register",method:"post",data:{enName:e,typeId:t}}),prompt:async e=>{const t=require("prompts");return await t(e,{onCancel:()=>{p("✖ 操作已取消")}})},requestToken:async(e,t)=>{const[r,s]=await v({url:"/auth/login",method:"post",data:{account:e,password:t}});return s&&s.data&&s.data.data.token?(await m({user:e,password:t,token:s.data.data.token}),!0):(await m({user:e,password:t,token:""}),!1)},axios:v,get_cli_config:w,set_cli_config:m,packagePath:d,exit:p,log:l,welcomeCli:async()=>{const{promisify:e}=require("util"),t=e(require("figlet")),r=await t("Welcome to VisCli");console.log(),l.success(r)},wait:e=>new Promise((t=>{setTimeout((()=>{t()}),1e3*e)})),buildTarHandler:async(t,r,s=null,n=null)=>(t=_(t),s&&(s=_(s),await e.ensureDir(s)),new Promise((a=>{const o={gzip:!0,cwd:t,sync:!0},i="string"==typeof r?[r]:r,c=n||"string"==typeof r?r:"tar_"+Date.now();require("tar").c(o,i).pipe(e.createWriteStream(`${s||t}/${c}.tar.gz`)).on("finish",a)}))),getPath:_,compareVersion:function(e,t){0===e.indexOf("v")&&(e=e.slice(1)),0===t.indexOf("v")&&(t=t.slice(1)),e=e.split("."),t=t.split(".");const r=Math.max(e.length,t.length);for(;e.length<r;)e.push("0");for(;t.length<r;)t.push("0");for(let s=0;s<r;s++){const r=parseInt(e[s]),n=parseInt(t[s]);if(r>n)return 1;if(r<n)return-1}return 0},filterFile:q,spawnHandle:async(...e)=>{await n((async(...e)=>{const{spawn:t}=require("child_process");return new Promise((r=>{const s=t(...e);s.stdout.pipe(process.stdout),s.stderr.pipe(process.stderr),s.on("close",(()=>{r()}))}))})(...e))},oraHandle:e=>{const t=require("ora")(e);return t.start(),t},getPackageName:e=>{const t=a(e);return o(t)},command:{shell:"",argv:""},scanDirHandle:async r=>{const s=[];if(await e.isDir(r)){const[a,o]=await n(e.readdir(r));if(a)return p(a?.message);(await Promise.all(o.map((s=>n(e.isDir(t.resolve(r,s))))))).forEach(((e,t)=>{e[1]&&s.push(o[t])}))}return s},get_update_log:async()=>{const[r,s]=await e.readJson(t.resolve(d,".update_log"));return r?0:s.time},set_update_log:async r=>{r=r||(new Date).getTime(),await e.outputJson(t.resolve(d,".update_log"),{time:r})},API_IP:f,get_plugin_version:e=>{if(!e)return;return require("cross-spawn").sync("npm",["view",e,"version"]).stdout.toString().replace(/[\n]/g,"")}};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";const e=require("path"),a=require("yann-fs").default,{to:t}=require("await-to-js"),{spawnHandle:s,scanFileFindChart:i,wait:r}=require("../utils"),{menu:o}=require("./menu"),n=require("p-limit")(3),c=o;module.exports=async function(o=[]){const l=await i();if(l){const i=e.resolve(l.root,"packages"),p=e.resolve(i,"components"),[m,u]=await t(a.readdir(p));if(u){const t=[],l=e.resolve(i,"charts");if(await a.emptyDir(l),await Promise.all(u.map((s=>(async(t,s,i)=>{if(0!==t.indexOf(".")){const r=e.resolve(s,t);if(await a.isDir(r)){const[s,o]=await a.readJson(e.resolve(r,"package.json"));if(o){const[s,n]=await a.pathExists(e.resolve(r,"index.js"));if(n){const[s,n]=await a.readJson(e.resolve(r,"public","base.json"));if(n){const{name:e,label:a,version:t,width:s,height:i,type:r}=n,o={layerType:"chart",chartType:e,name:a,version:`v${t}`,width:s,height:i},h=c.find((e=>e.type===r));h?h.children.push(o):c.find((e=>"other"===e.type)).children.push(o)}i.push([t,o.version])}}}}})(s,p,t)))),await a.outputJson(e.resolve(l,"menu.json"),c,{spaces:2,EOL:"\n"}),"false"===o[0])return;await Promise.all([t.map((a=>n((()=>(async({v:a,chartsPath:t,comPath:i})=>{await s(/^win/.test(process.platform)?"pnpm.cmd":"pnpm",["build"],{cwd:e.resolve(i,a[0])}),await r(.005),await h({v:a,chartsPath:t,comPath:i})})({v:a,chartsPath:l,comPath:p})))))])}}};const h=async({v:t,chartsPath:s,comPath:i})=>{const r=`${t[0]}_v${t[1]}`,o=e.resolve(s,t[0],r),n=e.resolve(i,t[0],r);await a.move(n,o)};
@@ -1,2 +1,2 @@
1
- // yann-vis-cli v1.6.6 by Yann
1
+ // yann-vis-cli v1.6.7 by Yann
2
2
  "use strict";module.exports={menu:[{type:"line",name:"折线图",children:[]},{type:"bar",name:"柱状图",children:[]},{type:"pie",name:"饼图",children:[]},{type:"form",name:"表格",children:[]},{type:"other",name:"其他",children:[]},{type:"map",name:"地图",children:[]},{type:"text",name:"文本",children:[]},{type:"indicator",name:"指标",children:[]},{type:"interaction",name:"交互",children:[]}]};
package/package.json CHANGED
@@ -1,16 +1,13 @@
1
1
  {
2
2
  "name": "yann-vis-cli",
3
- "version": "1.6.6",
3
+ "version": "1.6.7",
4
4
  "description": "vis-cli",
5
5
  "bin": {
6
6
  "pvis": "./bin/index.js",
7
7
  "pv": "./bin/index.js"
8
8
  },
9
9
  "scripts": {
10
- "build": "rollup --config",
11
- "postversion": "npm publish",
12
- "upssh": "npm run build && npm publish",
13
- "test": "node ./server/index.js"
10
+ "build": "rollup --config"
14
11
  },
15
12
  "keywords": [],
16
13
  "author": "Yann",
@@ -25,6 +22,7 @@
25
22
  "cross-spawn": "^7.0.3",
26
23
  "figlet": "^1.7.0",
27
24
  "form-data": "^4.0.0",
25
+ "fs-extra": "^11.3.0",
28
26
  "js-md5": "^0.8.3",
29
27
  "lodash": "^4.17.21",
30
28
  "opn": "^6.0.0",
@@ -1,3 +1,12 @@
1
- import data from './src/data';
2
- import config from './src/config';
3
- import { component, style, option } from './core';
1
+ import config from "./src/config";
2
+ import render from "./render";
3
+
4
+ const { component, style, data, option } = render;
5
+
6
+ export default {
7
+ style,
8
+ data,
9
+ config,
10
+ component,
11
+ option,
12
+ };
@@ -0,0 +1,18 @@
1
+ import style from "./src/style";
2
+ import component from "./src/index.vue";
3
+ import data from "./src/data";
4
+
5
+ // 额外配置
6
+ const option = {
7
+ // 插件是否要超出盒子显示,默认 ‘hidden’不允许超出, 'hidden' | 'visible'
8
+ overflow: "hidden",
9
+ // 是否需要数据 默认都为 true
10
+ needData: true,
11
+ };
12
+
13
+ export default {
14
+ data,
15
+ style,
16
+ option,
17
+ component,
18
+ };
@@ -1,14 +0,0 @@
1
- import chartStyle from './src/style';
2
- import ChartComponent from './src/index.vue';
3
-
4
- // 图表组件
5
- export const component = ChartComponent;
6
- // 图表样式
7
- export const style = chartStyle;
8
- // 额外配置
9
- export const option = {
10
- // 插件是否要超出盒子显示,默认 ‘hidden’不允许超出, 'hidden' | 'visible'
11
- overflow: 'hidden',
12
- // 是否需要数据 新版本直接读取这个字段
13
- needData: true
14
- };