pangu-vis-cli 1.0.3 → 1.0.4

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.
@@ -1 +1 @@
1
- "use strict";const{updatePackageJson:e,getPackageName:a,outputVueName:t,get_plugin_version:n}=require("../../utils"),s=require("yann-fs").default,r=require("path");module.exports=async function(i,o,c,u,l,p,v){await s.outputJson(r.resolve(o,"public","base.json"),{name:i,label:i,desc:"Custom Chart",version:"1.0.0",width:480,height:240,type:l||"other",author:u,id:p},{spaces:2,EOL:"\n"});const d=`\nexport const ${a(i)} = component`;if(await s.appendFile(r.resolve(o,"index.js"),d),await t(r.resolve(o,"src","index.vue"),i),await e(o,{name:i,author:u}),c&&"chart"===c.type?await e(o,{name:i,author:u,devDependencies:{"@chart/utils":"workspace:*"}}):await e(o,{name:i,author:u,devDependencies:{"@vitejs/plugin-vue":"^3.2.0",sass:"^1.69.7",vite:"^4.5.5","yann-snapshot":"^0.1.0","pangu-chart-cli":"^"+n("pangu-chart-cli")||"1.1.0","vite-plugin-compression":"^0.5.1","vite-plugin-banner":"^0.7.1","pangu-vchart-config":"^"+n("pangu-vchart-config")||"1.1.0"},dependencies:{vue:"~3.3.13","yann-i18n":"1.0.7"}}),!v)return;const g=r.resolve(o,"src"),h=r.resolve(o,"render.js"),m=r.resolve(o,"render.ts"),w=r.resolve(g,"config.js"),f=r.resolve(g,"config.ts"),j=r.resolve(g,"data.js"),y=r.resolve(g,"data.ts"),b=r.resolve(g,"style.js"),x=r.resolve(g,"style.ts");await s.rename(h,m),await s.rename(w,f),await s.rename(j,y),await s.rename(b,x),await s.remove(r.resolve(o,"jsconfig.json"))};
1
+ "use strict";const{updatePackageJson:e,getPackageName:n,outputVueName:t,checkNpmConnectionState:a,get_plugin_latest_version:s}=require("../../utils"),i=require("yann-fs").default,r=require("path");module.exports=async function(o,c,l,p,d,u,h){await i.outputJson(r.resolve(c,"public","base.json"),{name:o,label:o,desc:"Custom Chart",version:"1.0.0",width:480,height:240,type:d||"other",author:p,id:u},{spaces:2,EOL:"\n"});const m=`\nexport const ${n(o)} = component`;if(await i.appendFile(r.resolve(c,"index.js"),m),await t(r.resolve(c,"src","index.vue"),o),await e(c,{name:o,author:p}),l&&"chart"===l.type)await e(c,{name:o,author:p,devDependencies:{"@chart/utils":"workspace:*"}});else{const n=await a();await e(c,{name:o,author:p,devDependencies:{...s("pangu-chart-cli","1.1.0"),...s(n?"@pangu/vchart-config":"","1.1.0"),...s(n?"":"pangu-vchart-theme","1.0.2"),"@vitejs/plugin-vue":"^3.2.0",sass:"^1.69.7",vite:"^4.5.5","vite-plugin-compression":"^0.5.1","vite-plugin-banner":"^0.7.1"},dependencies:{vue:"~3.3.13","yann-i18n":"1.0.7"}}),n||(await i.writeFile(r.resolve(c,"example/App.vue"),'<script setup>\nimport { computed } from \'vue\'\nimport ChartInfo from \'../index\'\nimport base from \'../public/base.json\'\nimport { createTheme } from \'pangu-vchart-theme\'\nconst { component: Chart, data, style } = ChartInfo\nconst layerBoxStyle = computed(() => {\n return {\n width: base.width + \'px\',\n height: base.height + \'px\'\n }\n})\n\nconst chartData = computed(() => {\n return typeof data === \'function\' ? data(\'zh\') : data\n})\n\nconst chartStyle = computed(() => {\n return typeof style === \'function\' ? style(createTheme()) : style\n})\n<\/script>\n\n<template>\n <div class="box">\n \x3c!-- 图表盒子 --\x3e\n <div class="layerBox" :style="layerBoxStyle">\n \x3c!-- 图表具体内容 --\x3e\n <div class="layerMain">\n \x3c!-- 上面那些div不用去管,平台会自动生成 --\x3e\n <Chart\n :width="base.width"\n :height="base.height"\n :data="chartData"\n :styled="chartStyle"\n :events="events"\n />\n </div>\n </div>\n </div>\n</template>\n<style scoped lang="scss">\n.box {\n width: 100vw;\n height: 100vh;\n background-color: #242424;\n position: fixed;\n left: 0;\n top: 0;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n z-index: 10;\n .takeBtn {\n margin-top: 15px;\n }\n .layerBox {\n position: relative;\n display: flex;\n flex-direction: column;\n background: #2a2a34;\n border-radius: 12px;\n padding: 15px;\n\n .layerMain {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n}\n</style>\n'),await i.writeFile(r.resolve(c,".npmrc"),"registry=https://registry.npmmirror.com/\nstrict-peer-dependencies=false"))}if(!h)return;const v=r.resolve(c,"src"),y=r.resolve(c,"render.js"),g=r.resolve(c,"render.ts"),x=r.resolve(v,"config.js"),f=r.resolve(v,"config.ts"),w=r.resolve(v,"data.js"),b=r.resolve(v,"data.ts"),j=r.resolve(v,"style.js"),k=r.resolve(v,"style.ts");await i.rename(y,g),await i.rename(x,f),await i.rename(w,b),await i.rename(j,k),await i.remove(r.resolve(c,"jsconfig.json"))};
package/dist/utils.js CHANGED
@@ -1 +1 @@
1
- "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,".pangu-vis-store");let g={};const m=async t=>{const[s,r]=await w();g={...s,...t},await e.outputJson(r,g)},w=async()=>{const s=t.resolve(p,".cli_store");if(Object.keys(g).length>0)return[g,s];const[r,n]=await e.readJson(s);return r?[{user:"",password:"",token:"",autoUpload:!1,autoRemove:!1,autoRemoveEs:!0},s]:(g=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 P=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=>P(t.resolve(o,e))))}else for(let t=0;t<r.length;t++)if(o.includes(r[t]))return void e.remove(o)},j=(e,t=[],s={})=>new Promise(r=>{const n="win32"===process.platform,{enableSudo:o=!1,disableColor:a=!1,cwd:i=process.cwd(),stdio:c="inherit",shell:u=!1,...d}=s;let p=e,g=[...t];a&&n&&!g.includes("--no-color")&&g.push("--no-color"),!n&&o&&(p="sudo",g=[e,...g]);const m={cwd:i,stdio:c,shell:u,...d},w=require("cross-spawn")(p,g,m),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} ${g.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}`})})}),E=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},b={user:""};module.exports={getCdRelativePath:function(e,s){const r=t.resolve(e),n=t.resolve(s);let o=t.relative(r,n);return""===o?"./":o},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 j("pnpm",["build"],{cwd:e,stdio:"inherit"})},get_delete_es:async()=>{const[e]=await w();return!("autoRemoveEs"in e)||e.autoRemoveEs},userInfo:b,getGitUser:async()=>{const e=require("cross-spawn").sync("git",["config","user.name"]);return b.user=e.stdout.toString().replace(/[\n]/g,""),b.user},scanFileFindChart:async(e=10)=>{for(let t=0;t<e;t++){let e="./";t>0&&(e+="../".repeat(t));const s=await E(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(o?.message):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 m({user:e,password:t,token:r.data.data.token}),!0):(await m({user:e,password:t,token:""}),!1)},axios:y,get_cli_config:w,set_cli_config:m,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:P,oraHandle:e=>{const t=require("ora")(e);return t.start(),console.log(),t},getPackageName:e=>{const t=o(e);return a(t)},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?{isExpired:!0,time:0}:r},set_update_log:async(s=!1)=>{const r=Date.now()+864e5;await e.outputJson(t.resolve(p,".update_log"),{time:r,isExpired: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:j};
1
+ "use strict";const e=require("yann-fs").default,t=require("path"),s=require("chalk"),n=require("axios").default,{to:r}=require("await-to-js"),{camelCase:o,upperFirst:a,mergeWith:i,isArray:c}=require("lodash"),u=require("os").homedir(),l="http://192.168.12.88:10000",d={success(e){console.log(s.green(e))},err(e){console.log(s.bold.red(e))},info(e){console.log(s.blue(e))}},p=e=>{e&&(console.log(),d.err(e)),process.exit(1)},g=t.resolve(u,".pangu-vis-store");let m={};const w=async t=>{const[s,n]=await f();m={...s,...t},await e.outputJson(n,m)},f=async()=>{const s=t.resolve(g,".cli_store");if(Object.keys(m).length>0)return[m,s];const[n,r]=await e.readJson(s);return n?[{user:"",password:"",token:"",autoUpload:!1,autoRemove:!1,autoRemoveEs:!0},s]:(m=r,[r,s])};const h="http://10.11.11.100",v=`${h}/thpower/api`,y=n.create({baseURL:v,headers:{"Content-Type":"application/json;charset=UTF-8"},timeout:1e4});async function _(e){return r(y(e))}y.interceptors.request.use(async e=>{const[t]=await f();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){n.isCancel(e)||(e&&e.response,e?.message?.includes("timeout"))}(e),Promise.reject(e)));const k=e=>new Promise(t=>{setTimeout(()=>{t()},1e3*e)}),E=e=>{const s=process.cwd();return e.includes(s)?e:t.resolve(s,e)};function P(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 n=0;n<s;n++){const s=parseInt(e[n]),r=parseInt(t[n]);if(s>r)return 1;if(s<r)return-1}return 0}const j=async(s,n=[".git",".vscode",".DS_Store",".idea"])=>{const o=s||process.cwd();if(await e.isDir(o)){const[s,n]=await r(e.readdir(o));if(s)return p(s?.message);await Promise.all(n.map(e=>j(t.resolve(o,e))))}else for(let t=0;t<n.length;t++)if(o.includes(n[t]))return void e.remove(o)},b=(e,t=[],s={})=>new Promise(n=>{const r="win32"===process.platform,{enableSudo:o=!1,disableColor:a=!1,cwd:i=process.cwd(),stdio:c="inherit",shell:u=!1,...l}=s;let p=e,g=[...t];a&&r&&!g.includes("--no-color")&&g.push("--no-color"),!r&&o&&(p="sudo",g=[e,...g]);const m={cwd:i,stdio:c,shell:u,...l},w=require("cross-spawn")(p,g,m),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?r?"权限不足!请以管理员身份运行终端":"权限不足!请确认当前用户有执行权限(可尝试 sudo)":`命令启动失败:${s}`,d.err(o),n({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} ${g.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")?r?"权限不足!请以管理员身份运行终端":"权限不足!可尝试启用 sudo":`命令执行失败(退出码:${t}):${o||"无详细错误信息"}`,d.err(i)),n({success:a,stdout:s,stderr:o,status:t,message:i,error:a?null:o||`退出码:${t}`})})}),q=e=>{const t=require("ora")(e);return t.start(),console.log(),t},C=async s=>{const n=process.cwd(),r=t.resolve(n,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(r,".pv_store"));if(o&&"chart"===o.name)return{type:"chart",root:r,cwd:n}}}return!1},$={user:""},O=e=>{if(!e)return;const t=require("cross-spawn"),s=["view",e,"version"];e.includes("@pangu/")&&s.push(`--registry=${l}`);return t.sync("npm",s).stdout.toString().replace(/[\n]/g,"")};module.exports={get_plugin_latest_version:(e,t="")=>e?{[e]:"^"+O(e)||t}:{},checkNpmConnectionState:async function(){const e=q("正在检测npm源,请稍候...");let t=0;if(0===t){t=await async function(e=l){try{return await fetch(e,{method:"GET",signal:AbortSignal.timeout(5e3)}),!0}catch(e){return!1}}()?1:2}return e.succeed("npm源检测完成"),await k(.1),e.clear(),1===t},getCdRelativePath:function(e,s){const n=t.resolve(e),r=t.resolve(s);let o=t.relative(n,r);return""===o?"./":o},versionHandle:async s=>{const n=t.resolve(s,"public","base.json"),[r,o]=await e.readJson(n);if(r)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=P(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(n,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 b("pnpm",["build"],{cwd:e,stdio:"inherit"})},get_delete_es:async()=>{const[e]=await f();return!("autoRemoveEs"in e)||e.autoRemoveEs},userInfo:$,getGitUser:async()=>{const e=require("cross-spawn").sync("git",["config","user.name"]);return $.user=e.stdout.toString().replace(/[\n]/g,""),$.user},scanFileFindChart:async(e=10)=>{for(let t=0;t<e;t++){let e="./";t>0&&(e+="../".repeat(t));const s=await C(e);if(s)return s}return!1},outputVueName:async(t,s)=>{const n=`\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,n)},updatePackageJson:async(s,n)=>{const r=t.join(s,"package.json"),[o,a]=await e.readJson(r);o?p(o?.message):a&&(i(a,n,(e,t)=>{if(c(e))return e.concat(t)}),await e.outputJson(r,a,{spaces:2,EOL:"\n"}))},registerChartId:async(e,t)=>_({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[s,n]=await _({url:"/auth/login",method:"post",data:{account:e,password:t}});return n&&n.data&&n.data.data.token?(await w({user:e,password:t,token:n.data.data.token}),!0):(await w({user:e,password:t,token:""}),!1)},axios:_,get_cli_config:f,set_cli_config:w,packagePath:g,exit:p,log:d,welcomeCli:async()=>{const{promisify:e}=require("util"),t=e(require("figlet")),s=await t("Welcome to VisCli");console.log(),d.success(s)},wait:k,buildTarHandler:async(t,s,n=null,r=null)=>(t=E(t),n&&(n=E(n),await e.ensureDir(n)),new Promise(o=>{const a={gzip:!0,cwd:t,sync:!0},i="string"==typeof s?[s]:s,c=r||"string"==typeof s?s:"tar_"+Date.now();require("tar").c(a,i).pipe(e.createWriteStream(`${n||t}/${c}.tar.gz`)).on("finish",o)})),getPath:E,compareVersion:P,filterFile:j,oraHandle:q,getPackageName:e=>{const t=o(e);return a(t)},scanDirHandle:async s=>{const n=[];if(await e.isDir(s)){const[o,a]=await r(e.readdir(s));if(o)return p(o?.message);(await Promise.all(a.map(n=>r(e.isDir(t.resolve(s,n)))))).forEach((e,t)=>{e[1]&&n.push(a[t])})}return n},get_update_log:async()=>{const[s,n]=await e.readJson(t.resolve(g,".update_log"));return s?{isExpired:!0,time:0}:n},set_update_log:async(s=!1)=>{const n=Date.now()+864e5;await e.outputJson(t.resolve(g,".update_log"),{time:n,isExpired:s})},API_IP:h,get_plugin_version:O,runAsyncCmd:b};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pangu-vis-cli",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "vis-cli",
5
5
  "bin": {
6
6
  "pvis": "bin/index.js",
@@ -45,7 +45,7 @@
45
45
  "prompts": "^2.4.2",
46
46
  "semver": "^7.7.3",
47
47
  "tar": "^6.2.1",
48
- "yann-fs": "^1.6.0"
48
+ "yann-fs": "1.6.0"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@rollup/plugin-commonjs": "^18.1.0",