yann-vis-cli 1.8.4 → 1.9.0
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 +1 -1
- package/dist/auth/logon.js +2 -0
- package/dist/build/index.js +1 -1
- package/dist/create/index.js +1 -1
- package/dist/create/module/index.js +2 -0
- package/dist/create/package/index.js +2 -0
- package/dist/create/tool/index.js +2 -0
- package/dist/index.js +1 -1
- package/dist/pack/index.js +1 -1
- package/dist/package.json +15 -0
- package/dist/renew/index.js +1 -1
- package/dist/tidier/index.js +2 -0
- package/dist/update/index.js +2 -0
- package/dist/utils.js +1 -1
- package/dist/vpack/index.js +1 -1
- package/package.json +10 -3
package/dist/action.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// yann-vis-cli v1.8.4 by Yann
|
|
2
|
-
"use strict";module.exports=[{command:"create",alias:"c",desc:"
|
|
2
|
+
"use strict";module.exports=[{command:"create",alias:"c",desc:"创建图表包",examples:["pv create <project-name>"]},{command:"pack",alias:"pk",desc:"图表库打包",examples:["pv pack"],option:["-e","-c"]},{command:"vpack",alias:"vp",desc:"Pack all charts",examples:["pv vpack"]},{command:"build",alias:"b",desc:"单个图表打包",examples:["pv build"]},{command:"dev",alias:"d",desc:"Launch Project",examples:["pv dev"]},{command:"upload",alias:"u",desc:"上传图表包",examples:["pv upload"],isAuth:!0},{command:"auth",alias:"a",desc:"User Information",examples:["pv auth"]},{command:"tar",alias:"t",desc:"tar",examples:["pv tar"]},{command:"config",alias:"set",desc:"配置",examples:["pv config"]},{command:"update",alias:"up",desc:"更新cli",examples:["pv update"]},{command:"tidier",alias:"tid",desc:"整理图表库",examples:["pv tidier"]},{command:"*",alias:"",desc:"command not found",examples:[]}];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// yann-vis-cli v1.1.11 by Yann
|
|
2
|
+
"use strict";const{requestToken:e,get_cli_config:t}=require("../utils");module.exports={get_token_two:async()=>{const[s]=await t();s.user&&s.password&&await e(s.user,s.password);const[o]=await t();return o.token||(console.log(),await require("./index")()),!0}};
|
package/dist/build/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// yann-vis-cli v1.8.4 by Yann
|
|
2
|
-
"use strict";const
|
|
2
|
+
"use strict";const t=require("path"),e=require("yann-fs").default,{to:a}=require("await-to-js"),{exit:i,buildTarHandler:o,filterFile:r,get_cli_config:s,getPath:n,get_delete_es:l,buildPathHandler:c,versionHandle:u}=require("../utils"),w=async(n,w=null)=>{const d=await u(n);if("string"==typeof d)return i(d);const{name:v,version:p}=d;await c(n);const f=v.split("/").at(-1)+"_v"+p,g=t.resolve(n,f);await l()&&await e.remove(t.resolve(g,"es")),await r(g);const m=(w?`${w}/${f}`:g)+".tar.gz";await e.remove(m),await a(o(n,f,w));const[q]=await s();q.autoRemove&&await e.remove(g),q.autoUpload&&await require("../upload/index")([m])};module.exports=async function(a=[]){const o=process.cwd();if(a[0]){const t=a[0].trim();return void await w(n(t))}const r=t.resolve(o,"package.json"),[s,l]=await e.pathExists(r);s?i("找不到目录"):l&&await w(o)};
|
package/dist/create/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// yann-vis-cli v1.8.4 by Yann
|
|
2
|
-
"use strict";const e=require("path"),{scanFileFindChart:t,scanDirHandle:a,prompt:i,log:s,oraHandle:n,
|
|
2
|
+
"use strict";const e=require("path"),{scanFileFindChart:t,scanDirHandle:a,prompt:i,log:s,oraHandle:n,runAsyncCmd:o,wait:r,welcomeCli:l,get_cli_config:c,getGitUser:u,registerChartId:d,requestToken:p,exit:m}=require("../utils"),g=require("yann-fs").default;module.exports=async function(m=[]){const w="chart",[v]=await c();let y,f=!1;if(v.user&&v.password&&v.token&&(f=await p(v.user,v.password)),!f){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:"请填写泰合社区的用户名"}]);f=t.isLogin,y=t.isLogin?await require("../auth/index.js")():t.user}const h=await t(),{chartType:j,isTs:_}=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"}]},{name:"isTs",type:"toggle",message:"是否使用ts",initial:!1,active:"yes",inactive:"no"}]);s.info("推荐添加自定义前缀以防止和其他图表名重复并且便于后期统一管理");let k=Date.now();const{projectName:q}=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(f){const[e,a]=await d(t,j);if("ECONNABORTED"===e?.code)return console.log(),console.log("暂时无法连接到服务器!"),!0;if(e||!a||!a.data||!a.data.data)return e?.data?.msg||"请重新填写";k=a.data.data}return!0}}]),x=n("创建项目..."),T=process.cwd(),C=h?T.includes("tailored")?e.join(h.root,"packages","tailored",q):e.join(h.root,"packages","components",q):e.join(T,q);await g.ensureDir(C),await g.copy(e.resolve(__dirname,"../../template",w),C),_&&await g.copy(e.resolve(__dirname,"../../template","ts"),C),await require(e.resolve(__dirname,w,"index.js"))(q,C,h,y,j,k,_),x.succeed("项目创建完成."),await r(.1),x.start("安装依赖.."),await o("pnpm",["install"],{cwd:C,stdio:"inherit"}),x.succeed("依赖安装完成."),await r(.1),x.clear();require("clear")(),await l(),console.log("\n完成. 现在可以执行:\n"),s.success(` cd ${q}`),s.success(" pnpm dev"),console.log()};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// yann-vis-cli v1.1.11 by Yann
|
|
2
|
+
"use strict";const{updatePackageJson:e,outputVueName:n,get_cli_config:t}=require("../../utils"),a=require("yann-fs").default,s=require("path");module.exports=async function(o,u){const i="@fea/"+o,[r]=await t();await e(u,{name:i,author:r.user,devDependencies:{"@fea/utils":"workspace:*"}}),await a.outputJson(s.resolve(u,"public","base.json"),{name:o,label:"",desc:"Custom Module",version:"1.0.0",author:r.user},{spaces:2,EOL:"\n"});const c=`\n// 路由配置 要求包名作为根路由 以免和其他模块路由冲突\n// 配置方式按照vue-router规范,会动态插入到主模块,路由切换要求使用name进行切换,path可能会更改\n// 一级菜单的meta里面有isFull字段判断是否是全屏渲染,默认false\nexport const routes = [\n {\n path: '/${o}',\n name: '${o}',\n component: () => import('./src/views/index.vue'),\n meta: {\n title: '${o}'\n }\n }\n]\n\nexport default {\n routes\n}\n`;await a.writeFile(s.resolve(u,"index.js"),c),await n(s.resolve(u,"src","views","index.vue"),o)};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// yann-vis-cli v1.1.11 by Yann
|
|
2
|
+
"use strict";const{updatePackageJson:e,getPackageName:a,outputVueName:t,get_cli_config:n}=require("../../utils"),s=require("yann-fs").default,o=require("path");module.exports=async function(u,i){const r="@fea/"+u,[c]=await n();await e(i,{name:r,author:c.user,devDependencies:{"@fea/utils":"workspace:*"}}),await s.outputJson(o.resolve(i,"public","base.json"),{name:u,label:"",desc:"Custom Package",version:"1.0.0",author:c.user},{spaces:2,EOL:"\n"});const l=`\n import { withInstall } from '@fea/utils/vue';\n\n export const ${a(u)} = withInstall(PackageComponent);\n export default {\n component:${a(u)}\n };\n `;await s.appendFile(o.resolve(i,"index.js"),l),await t(o.resolve(i,"src","index.vue"),u)};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// yann-vis-cli v1.1.11 by Yann
|
|
2
|
+
"use strict";const{updatePackageJson:e,get_cli_config:a}=require("../../utils"),s=require("yann-fs").default,t=require("path");module.exports=async function(o,u){const n="@fea/"+o,[i]=await a();await e(u,{name:n,author:i.user,devDependencies:{"@fea/utils":"workspace:*"}}),await s.outputJson(t.resolve(u,"public","base.json"),{name:o,label:"",desc:"Custom Tool",version:"1.0.0",author:i.user},{spaces:2,EOL:"\n"})};
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// yann-vis-cli v1.8.4 by Yann
|
|
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?
|
|
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?r.option.reduce((e,r)=>e.option(r),o):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)});
|
package/dist/pack/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// yann-vis-cli v1.8.4 by Yann
|
|
2
|
-
"use strict";const e=require("path"),
|
|
2
|
+
"use strict";const e=require("path"),t=require("yann-fs").default,{to:s}=require("await-to-js"),{getPackageInfo:r,scanFileFindChart:i,getPackageName:a,buildPathHandler:n,exit:o,versionHandle:c,compareVersion:l,runAsyncCmd:d,log:p}=require("../utils"),u=require("p-limit"),w=require("dayjs"),f="src/components",m="src/charts",v=async s=>{try{const r=await t.readdir(s,{withFileTypes:!0});for(const i of r){const r=e.join(s,i.name);i.isDirectory()?await v(r):i.isFile()&&i.name.endsWith(".gz")&&await t.unlink(r)}}catch(e){throw console.error(`处理目录 ${s} 时出错:`,e.message),e}},h=async(i,o,d,u,w)=>{if(i.startsWith("."))return;const h=e.resolve(o,i),[$,g]=await t.readJson(e.resolve(h,"package.json"));if($||!g)return;const[x,y]=await t.readJson(e.resolve(h,"public","base.json"));if(x||!y)return;const{isDev:F}=y;if(F)return;if(!w.includes(i)){if(!await t.exists(e.resolve(d,m,i,"index.ts")))return;return void u.add(i)}const P=await c(h);if("string"==typeof P)return;const{name:C,outDir:E}=r(P),j=`V${C}`;p.info(`开始打图表包,图表名:“${i}”,版本号:“v${P.version}”.`),await n(h);const D=e.resolve(d,m,i),L=e.resolve(D,P.version);await t.remove(L);const O=e.resolve(L,"es");await t.copy(e.resolve(h,E,"es"),O),await v(L),await t.writeFile(e.resolve(L,"index.ts"),`export { default as ${j} } from './es/index'`),await(async(r,i)=>{try{const a=await t.readdir(i,{withFileTypes:!0}),n=[];for(const e of a)e.isFile()&&e.name.endsWith(".css")&&n.push(e.name);if(n.length>0){const i=e.resolve(r,"index.ts"),[a,o]=await s(t.readFile(i,"utf-8"));if(a||!o)return;let c="";for(const e of n)c+=`import './es/${e}'\n`;c+=o,await t.writeFile(i,c)}}catch(e){throw console.error(`处理目录 ${dir} 时出错:`,e.message),e}})(L,O);const k=e.resolve(D,"index.ts");await t.ensureFile(k),u.add(i);const[q,J]=await s(t.readFile(k,"utf-8"));if(q)return;const T=`V${a(i)}`,b=`import { ${j} } from './${P.version}/index'\nexport { ${j} }\n`;if(J.includes("export")){const e=/\.\/([\d.]+)\/index/g,s=[];let r;for(;null!==(r=e.exec(J));)s.push(r[1]);if(s.includes(P.version))return;const i=`${b}\n${J}`,a=s.sort((e,t)=>l(t,e))[0];if(l(a,P.version)>0)return void await t.writeFile(k,i);const n=new RegExp(`(export\\s*\\{)\\s*(\\w+)(\\s+)(as)(\\s+)(${T})(\\s*)(\\})`,"g"),o=i.replace(n,(e,t,s,r,i,a,n,o,c)=>`${t}${j}${r}${i}${a}${n}${o}${c}`);await t.writeFile(k,o)}else await t.appendFile(k,`${b}\nexport { ${j} as ${T} }`);await t.remove(e.resolve(h,E));const A=e.resolve(d,f,i);if(await t.exists(e.resolve(A,"index.ts")))return;await Promise.all([t.ensureFile(e.resolve(A,"index.ts")),t.ensureFile(e.resolve(A,"index.vue"))]);const H=[];H.push(t.writeFile(e.resolve(A,"index.ts"),`export { default as PgChart${T} } from './index.vue'`)),H.push(t.writeFile(e.resolve(A,"index.vue"),`<template>\n <v-chart :chart="${T}" v-bind="$attrs" :data="data" :styled="styled" :option="option" :events="events" @message="emit('message', $event)"></v-chart>\n</template>\n<script setup lang="ts">\nimport { VChart } from '@/core'\nimport { ${T} } from "@/charts/${i}";\nimport { useAttrs, defineEmits, defineProps, defineOptions } from "vue";\nimport type { ChartPropsType, ChartEvents, EmitMessage, ScreenLayerOption } from "@/types";\n\nconst $attrs = useAttrs();\nconst props = defineProps<{\n styled?: ChartPropsType<typeof ${T},'style'>\n option?: Partial<ScreenLayerOption>\n data?: ChartPropsType<typeof ${T},'data'>\n events?: ChartEvents[]\n}>();\nconst emit = defineEmits<{\n (e: "message", option: EmitMessage): void;\n}>();\n \ndefineOptions({\n name: 'pg-chart-v-${i}',\n inheritAttrs: false\n})\n<\/script>`)),await Promise.all(H)};async function $(e){const[s,r]=await t.readJson(e);return s?(p.err(s?.message),!1):("sideEffects"in r&&(delete r.sideEffects,await t.outputJson(e,r,{spaces:2,EOL:"\n"})),!0)}module.exports=async function(){const r=Date.now(),a=await i();if(!a)return o("非图表库");const c=e.resolve(a.root,"../pangu-chart"),l=e.resolve(a.root,"packages"),v=e.resolve(l,"components"),[g,x]=await s(t.readdir(v));if(g)return o(g?.message);const y=new Set,F=u(3);let P=x||[];if(await t.exists(e.resolve(c,m,"index.ts"))){const s=new Set(process.argv.slice(3));if(s.has("-c"))await Promise.all([t.remove(e.resolve(c,m)),t.remove(e.resolve(c,f))]);else{const e=s.has("-e");if(s.delete("-e"),s.size){const t=[...s];P=e?x.filter(e=>!t.includes(e)):t}}}await Promise.allSettled(x.map(e=>F(()=>h(e,v,c,y,P))));const C=[],E=[...y].sort((e,t)=>e.toLowerCase().localeCompare(t.toLowerCase()));for(const e of E)C.push(`export * from './${e}'\n`);const j=C.join("");await Promise.all([t.writeFile(e.resolve(c,m,"index.ts"),j),t.writeFile(e.resolve(c,f,"index.ts"),j)]),await async function(s,r){p.info("开始打图表主题包.");const i=e.resolve(s,"utils","theme");await n(i);const a=e.resolve(r,"src/theme");await t.remove(a),await t.copy(e.resolve(i,"dist"),a),await t.remove(e.resolve(i,"dist"))}(l,c);const D=`图表库打包完成:${w().format("YYYY-MM-DD HH:mm")},总耗时: ${(Date.now()-r)/1e3}s.`;p.success(D),console.log(),p.info("开始打pangu-v-chart.");const L=e.resolve(c,"package.json");await $(L),await n(c),p.success("pangu-v-chart打包完成,正在准备执行CHANGELOG和发布"),await d("npm",["run","release"],{cwd:c,stdio:"inherit"});const[O,k]=await t.readJson(L);if(O)return void p.err(O?.message);k.sideEffects=!1,await t.outputJson(L,k,{spaces:2,EOL:"\n"});const q=await Promise.race([d("npm",["publish"],{cwd:c,stdio:"inherit"}),new Promise(e=>setTimeout(()=>e({success:!1,message:"执行超时"}),6e4))]);q.success?p.success("发布成功"):p.err(q.message),await $(L),p.success("pangu-v-chart 全部执行完成.")};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "demo_chart",
|
|
3
|
+
"description": "Custom Chart",
|
|
4
|
+
"private": true,
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"main": "./index.js",
|
|
7
|
+
"module": "./index.js",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "vcc build",
|
|
10
|
+
"dev": "vcc dev"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {},
|
|
13
|
+
"devDependencies": {},
|
|
14
|
+
"author": ""
|
|
15
|
+
}
|
package/dist/renew/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// yann-vis-cli v1.8.4 by Yann
|
|
2
|
-
"use strict";const{log:t,prompt:e,exit:
|
|
2
|
+
"use strict";const{log:t,prompt:e,exit:s,welcomeCli:a,get_update_log:i,set_update_log:n,runAsyncCmd:c}=require("../utils");/^win/.test(process.platform);const o=()=>{const{execSync:t}=require("child_process");try{return t("npm config get registry",{encoding:"utf8"}).trim()}catch(t){return""}},r=async()=>{const i=await e([{name:"updateFlag",message:"是否更新Cli工具?",type:"toggle",initial:!0,active:"yes",inactive:"no"}]),{updateFlag:r}=i;r?(await(async()=>{const e=["i","-g","yann-vis-cli"],a=o();a&&e.push(`--registry=${a}`),(await c("npm",e,{enableSudo:!0,stdio:"inherit",disableColor:!0})).success?(console.log(),t.success("Cli工具更新成功!")):s("异常错误,请手动执行命令更新Cli工具:npm i -g yann-vis-cli")})(),await n(),await a(),s()):await n()};module.exports=async function(e){if(!(e="boolean"==typeof e&&e)){if(1===await(async()=>await i()>Date.now()?1:0)())return}await(async()=>{const e=o(),s=["outdated","yann-vis-cli","-g"];e&&s.push(`--registry=${e}`);const a=await c("npm",s,{disableColor:!0});return a.success?!!a.stdout.replace(/\s+/g,""):(t.err(a.message),!1)})()?await r():(await n(),e&&t.success("当前版本已是最新!"))};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// yann-vis-cli v1.8.4 by Yann
|
|
2
|
+
"use strict";const e=require("path"),s=require("yann-fs").default,{scanFileFindChart:a,exit:t,runAsyncCmd:n}=require("../utils"),i=require("p-limit");module.exports=async function(){const l=await a();if(!l)return t("非图表库");const r=l.root,c=e.resolve(r,"packages"),d=e.resolve(c,"components"),o=e.resolve(c,"tailored"),p=i(3);async function v(a){const t=await s.readdir(a);await Promise.all(t.map(t=>p(()=>(async(a,t)=>{if(a.startsWith("."))return;const[n,i]=await s.readJson(e.resolve(t,"package.json"));if(!n&&i){if(delete i.scripts["dev:example"],delete i.devDependencies["yann-chart-cli"],delete i.devDependencies["vite-plugin-compression"],delete i.devDependencies["vite-plugin-banner"],delete i.devDependencies.vite,delete i.devDependencies.vite,delete i.devDependencies.sass,delete i.devDependencies["@vitejs/plugin-vue"],delete i.devDependencies["yann-snapshot"],delete i.dependencies.vue,delete i.dependencies["yann-i18n"],i.scripts.dev="vcc dev","elementNamespace"in i){const e=i.elementNamespace;delete i.elementNamespace,i.elementConfig=e}if(await s.outputJson(e.resolve(t,"package.json"),i,{spaces:2,EOL:"\n"}),await s.remove(e.resolve(t,"example/package.json")),await s.exists(e.resolve(t,"example/index.html"))){await s.copy(e.resolve(t,"example/index.html"),e.resolve(t,"index.html"));const[a,n]=await s.readFile(e.resolve(t,"index.html"),"utf-8");if(a||!n){await s.remove(e.resolve(t,"index.html"));const[a,n]=await s.readJson(e.resolve(t,"example/package.json"));if(a||!n)return;n.scripts.dev="vcc dev",n.scripts.build="vcc build",await s.outputJson(e.resolve(t,"example/package.json"),n,{spaces:2,EOL:"\n"})}else{await s.remove(e.resolve(t,"example/index.html"));const a=/src="\/src\/main\.js"/g,i=n.replace(a,'src="./example/src/main.js"');await s.writeFile(e.resolve(t,"index.html"),i,"utf8")}await s.remove(e.resolve(t,"example/vite.config.js"))}}})(t,e.resolve(a,t)))))}await v(d),await v(o),await n("pnpm",["i"],{cwd:r})};
|
package/dist/utils.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// yann-vis-cli v1.8.4 by Yann
|
|
2
|
-
"use strict";const e=require("yann-fs").default,t=require("path"),s=require("chalk"),r=require("axios").default,{to:n}=require("await-to-js"),{camelCase:
|
|
2
|
+
"use strict";const e=require("yann-fs").default,t=require("path"),s=require("chalk"),r=require("axios").default,{to:n}=require("await-to-js"),{camelCase:o,upperFirst:a,mergeWith:i,isArray:c}=require("lodash"),u=require("os").homedir(),l={success(e){console.log(s.green(e))},err(e){console.log(s.bold.red(e))},info(e){console.log(s.blue(e))}},d=e=>{e&&(console.log(),l.err(e)),process.exit(1)},p=t.resolve(u,".yann-vis-store");let m={};const g=async t=>{const[s,r]=await w();m={...s,...t},await e.outputJson(r,m)},w=async()=>{const s=t.resolve(p,".cli_store");if(Object.keys(m).length>0)return[m,s];const[r,n]=await e.readJson(s);return r?[{user:"",password:"",token:"",autoUpload:!1,autoRemove:!1,autoRemoveEs:!0},s]:(m=n,[n,s])};const f="http://10.11.11.100",h=`${f}/thpower/api`,v=r.create({baseURL:h,headers:{"Content-Type":"application/json;charset=UTF-8"},timeout:1e4});async function y(e){return n(v(e))}v.interceptors.request.use(async e=>{const[t]=await w();return t.token&&(e.headers.Authorization=`${t.token}`),e},e=>Promise.reject(e)),v.interceptors.response.use(async e=>e.data?.code&&200!==e.data?.code?Promise.reject(e):e,e=>(function(e){r.isCancel(e)||(e&&e.response,e?.message?.includes("timeout"))}(e),Promise.reject(e)));const _=e=>{const s=process.cwd();return e.includes(s)?e:t.resolve(s,e)};function k(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 s=Math.max(e.length,t.length);for(;e.length<s;)e.push("0");for(;t.length<s;)t.push("0");for(let r=0;r<s;r++){const s=parseInt(e[r]),n=parseInt(t[r]);if(s>n)return 1;if(s<n)return-1}return 0}const j=async(s,r=[".git",".vscode",".DS_Store",".idea"])=>{const o=s||process.cwd();if(await e.isDir(o)){const[s,r]=await n(e.readdir(o));if(s)return d(s?.message);await Promise.all(r.map(e=>j(t.resolve(o,e))))}else for(let t=0;t<r.length;t++)if(o.includes(r[t]))return void e.remove(o)},P=(e,t=[],s={})=>new Promise(r=>{const n="win32"===process.platform,{enableSudo:o=!1,disableColor:a=!1,cwd:i=process.cwd(),stdio:c="pipe",shell:u=n,...d}=s;let p=e,m=[...t];a&&n&&!m.includes("--no-color")&&m.push("--no-color"),!n&&o&&(p="sudo",m=[e,...m]);const g={cwd:i,stdio:c,shell:u,...d},w=require("cross-spawn")(p,m,g),f=[],h=[];w.stdout?.on("data",e=>{f.push(e.toString())}),w.stderr?.on("data",e=>{h.push(e.toString())}),w.on("error",t=>{const s=t.message||"命令启动失败";let o="";o="ENOENT"===t.code?`未找到命令 "${e}",请先安装 ${e}`:"EACCES"===t.code?n?"权限不足!请以管理员身份运行终端":"权限不足!请确认当前用户有执行权限(可尝试 sudo)":`命令启动失败:${s}`,l.err(o),r({success:!1,stdout:"",stderr:s,status:null,message:o,error:t.stack||s})}),w.on("close",t=>{const s=f.join("").trim(),o=h.join("").trim(),a=0===t;let i="";a?i=`命令执行成功:${e} ${m.join(" ")}`:(i=o.includes("not found")||o.includes("Package")?`未找到目标资源:${o.split("\n")[0]}`:o.includes("EAI_AGAIN")||o.includes("network")||o.includes("ENOTFOUND")?"网络错误:无法连接到服务或镜像源,请检查网络配置":o.includes("EACCES")?n?"权限不足!请以管理员身份运行终端":"权限不足!可尝试启用 sudo":`命令执行失败(退出码:${t}):${o||"无详细错误信息"}`,l.err(i)),r({success:a,stdout:s,stderr:o,status:t,message:i,error:a?null:o||`退出码:${t}`})})}),b=async s=>{const r=process.cwd(),n=t.resolve(r,s),o=t.resolve(s,"package.json"),[a,i]=await e.readJson(o);if(i){const{name:s}=i;if("chart"===s){const[s,o]=await e.readJson(t.resolve(n,".pv_store"));if(o&&"chart"===o.name)return{type:"chart",root:n,cwd:r}}}return!1},q={user:""};module.exports={versionHandle:async s=>{const r=t.resolve(s,"public","base.json"),[n,o]=await e.readJson(r);if(n)return"找不到 base.json 文件";const a=o.version,i=t.resolve(s,"package.json"),[c,u]=await e.readJson(i);if(c)return"找不到 package.json 文件";const l=u.version,d=k(a,l);let p=a;return 1===d?(p=a,u.version=p,await e.outputJson(i,u,{spaces:2,EOL:"\n"})):-1===d&&(p=l,o.version=p,await e.outputJson(r,o,{spaces:2,EOL:"\n"})),{name:o.name,version:p}},getPackageInfo:e=>{const t=e.name.split("/").at(-1);return{name:t.replace(/^\S/,e=>e.toUpperCase())+"_v"+e.version.replaceAll(".","_"),outDir:`${t}_v${e.version}`}},buildPathHandler:async e=>{await P("pnpm",["build"],{cwd:e,stdio:"inherit"})},get_delete_es:async()=>{const[e]=await w();return!("autoRemoveEs"in e)||e.autoRemoveEs},userInfo:q,getGitUser:async()=>{const e=require("cross-spawn").sync("git",["config","user.name"]);return q.user=e.stdout.toString().replace(/[\n]/g,""),q.user},scanFileFindChart:async(e=10)=>{for(let t=0;t<e;t++){let e="./";t>0&&(e+="../".repeat(t));const s=await b(e);if(s)return s}return!1},outputVueName:async(t,s)=>{const r=`\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: '${s}'\n })\n<\/script>`;await e.appendFile(t,r)},updatePackageJson:async(s,r)=>{const n=t.join(s,"package.json"),[o,a]=await e.readJson(n);o?d():a&&(i(a,r,(e,t)=>{if(c(e))return e.concat(t)}),await e.outputJson(n,a,{spaces:2,EOL:"\n"}))},registerChartId:async(e,t)=>y({url:"/chart/register",method:"post",data:{enName:e,typeId:t}}),prompt:async e=>{const t=require("prompts");return await t(e,{onCancel:()=>{d("✖ 操作已取消")}})},requestToken:async(e,t)=>{const[s,r]=await y({url:"/auth/login",method:"post",data:{account:e,password:t}});return r&&r.data&&r.data.data.token?(await g({user:e,password:t,token:r.data.data.token}),!0):(await g({user:e,password:t,token:""}),!1)},axios:y,get_cli_config:w,set_cli_config:g,packagePath:p,exit:d,log:l,welcomeCli:async()=>{const{promisify:e}=require("util"),t=e(require("figlet")),s=await t("Welcome to VisCli");console.log(),l.success(s)},wait:e=>new Promise(t=>{setTimeout(()=>{t()},1e3*e)}),buildTarHandler:async(t,s,r=null,n=null)=>(t=_(t),r&&(r=_(r),await e.ensureDir(r)),new Promise(o=>{const a={gzip:!0,cwd:t,sync:!0},i="string"==typeof s?[s]:s,c=n||"string"==typeof s?s:"tar_"+Date.now();require("tar").c(a,i).pipe(e.createWriteStream(`${r||t}/${c}.tar.gz`)).on("finish",o)})),getPath:_,compareVersion:k,filterFile:j,oraHandle:e=>{const t=require("ora")(e);return t.start(),console.log(),t},getPackageName:e=>{const t=o(e);return a(t)},command:{shell:"",argv:""},scanDirHandle:async s=>{const r=[];if(await e.isDir(s)){const[o,a]=await n(e.readdir(s));if(o)return d(o?.message);(await Promise.all(a.map(r=>n(e.isDir(t.resolve(s,r)))))).forEach((e,t)=>{e[1]&&r.push(a[t])})}return r},get_update_log:async()=>{const[s,r]=await e.readJson(t.resolve(p,".update_log"));return s?0:r.time},set_update_log:async()=>{const s=Date.now()+864e5;await e.outputJson(t.resolve(p,".update_log"),{time:s})},API_IP:f,get_plugin_version:e=>{if(!e)return;return require("cross-spawn").sync("npm",["view",e,"version"]).stdout.toString().replace(/[\n]/g,"")},runAsyncCmd:P};
|
package/dist/vpack/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// yann-vis-cli v1.8.4 by Yann
|
|
2
|
-
"use strict";const e=require("path"),a=require("yann-fs").default,{to:t}=require("await-to-js"),{
|
|
2
|
+
"use strict";const e=require("path"),a=require("yann-fs").default,{to:t}=require("await-to-js"),{runAsyncCmd:s,scanFileFindChart:i,wait:r}=require("../utils"),{menu:o}=require("./menu"),n=require("p-limit")(2),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"),[u,v]=await t(a.readdir(p));if(v){const l=[],u=e.resolve(i,"charts");if(await a.emptyDir(u),await Promise.all(v.map(t=>(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])}}}}})(t,p,l))),await a.outputJson(e.resolve(u,"menu.json"),c,{spaces:2,EOL:"\n"}),"false"===o[0])return;await Promise.all([l.map(a=>n(()=>(async({v:a,chartsPath:i,comPath:o})=>{await t(s("pnpm",["build"],{cwd:e.resolve(o,a[0]),stdio:"inherit"})),await r(.005),await h({v:a,chartsPath:i,comPath:o})})({v:a,chartsPath:u,comPath:p})))])}}};const h=async({v:t,chartsPath:s,comPath:i})=>{const r=`${t[0]}_v${t[1]}`,o=e.resolve(s,t[0]),n=e.resolve(i,t[0],r);await a.move(n,o)};
|
package/package.json
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yann-vis-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
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"
|
|
10
|
+
"build": "rollup --config",
|
|
11
|
+
"release": "standard-version",
|
|
12
|
+
"release:patch": "standard-version --release-as patch",
|
|
13
|
+
"release:minor": "standard-version --release-as minor",
|
|
14
|
+
"release:major": "standard-version --release-as major",
|
|
15
|
+
"release:beta": "standard-version --prerelease beta"
|
|
11
16
|
},
|
|
12
17
|
"keywords": [],
|
|
13
18
|
"author": "Yann",
|
|
@@ -20,6 +25,7 @@
|
|
|
20
25
|
"clear": "^0.1.0",
|
|
21
26
|
"commander": "^10.0.1",
|
|
22
27
|
"cross-spawn": "^7.0.6",
|
|
28
|
+
"dayjs": "^1.11.19",
|
|
23
29
|
"figlet": "^1.9.3",
|
|
24
30
|
"form-data": "^4.0.4",
|
|
25
31
|
"fs-extra": "^11.3.2",
|
|
@@ -42,7 +48,8 @@
|
|
|
42
48
|
"rollup-plugin-babel": "^4.4.0",
|
|
43
49
|
"rollup-plugin-banner": "^0.2.1",
|
|
44
50
|
"rollup-plugin-node-resolve": "^5.2.0",
|
|
45
|
-
"rollup-plugin-terser": "^7.0.2"
|
|
51
|
+
"rollup-plugin-terser": "^7.0.2",
|
|
52
|
+
"standard-version": "^9.5.0"
|
|
46
53
|
},
|
|
47
54
|
"files": [
|
|
48
55
|
"dist",
|