jja 2.3.8 → 2.3.10
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/bin.mjs +1 -1
- package/package.json +8 -8
- package/src/clearScreen.mjs +0 -1
- package/src/command.mjs +0 -1
- package/src/dns/checkIp.mjs +0 -1
- package/src/dns/data-store.mjs +0 -1
- package/src/dns/getIdByDnsServer.mjs +0 -1
- package/src/dns/getIp.mjs +0 -1
- package/src/dns/getLocalIp.mjs +0 -1
- package/src/dns/index.mjs +0 -1
- package/src/dns/printNotFound.mjs +0 -1
- package/src/dns/printResult.mjs +0 -1
- package/src/dog.mjs +0 -1
- package/src/git/beforeTagCommit.mjs +0 -1
- package/src/git/gitCommit.mjs +0 -1
- package/src/git/gitMerge.mjs +0 -1
- package/src/git/index.mjs +0 -1
- package/src/git/tagCommit.mjs +0 -1
- package/src/git/wheel.mjs +0 -1
- package/src/main.mjs +0 -1
- package/src/package/diff/data-store.mjs +0 -1
- package/src/package/diff/dependencies.mjs +0 -1
- package/src/package/diff/diffVersion.mjs +0 -1
- package/src/package/diff/everyThreePlusBackslash.mjs +0 -1
- package/src/package/diff/getInstallVersion.mjs +0 -1
- package/src/package/diff/getLatestVersion.mjs +0 -1
- package/src/package/diff/getVersion.mjs +0 -1
- package/src/package/diff/index.mjs +0 -1
- package/src/package/diff/installation.mjs +0 -1
- package/src/package/diff/latestPen.mjs +0 -1
- package/src/package/diff/tagPen.mjs +0 -1
- package/src/package/index.mjs +0 -1
- package/src/package/updateDependence.mjs +0 -1
- package/src/package/utils.mjs +0 -1
- package/src/package/wheel.mjs +0 -1
- package/src/pen.mjs +0 -1
- package/src/printInOneLine.mjs +0 -1
- package/src/remove/beforeRemove.mjs +0 -1
- package/src/remove/index.mjs +0 -1
- package/src/remove/removeData.mjs +0 -1
- package/src/remove/removeFileOrDirectory.mjs +0 -1
- package/src/remove/removeResult.mjs +0 -1
- package/src/remove/wheelRun.mjs +0 -1
- package/src/update/data.mjs +0 -1
- package/src/update/index.mjs +0 -1
- package/src/update/wheel.mjs +0 -1
package/bin.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import"./src/main.mjs";
|
|
2
|
+
import{Dog as e}from"@qqi/log";import{isFalse as t,isUndefined as n,isEmptyObject as o,isNull as i,isString as a,isArray as r,isBusinessEmptyString as s,isPlainObject as c}from"a-type-of-js";import{Command as l}from"a-command";import{redPen as p,hexPen as d,randomPen as u,greenPen as g,yellowPen as f,pen as m,cyanPen as w,boldPen as $,strInOneLineOnTerminal as h,italicPen as y}from"color-pen";import{_p as v,isWindows as b,runOtherCode as j,fileExist as k,cursorMoveUp as S,cursorAfterClear as R,getDirectoryBy as V,readFileToJsonSync as D,pathJoin as A,getNpmPkgInfo as O,cursorLineClear as E,colorLine as N,isTTY as T,__p as q,typewrite as C}from"a-node-tools";import{sleep as L,intersection as P}from"a-js-tools";import{copyTextToClipboard as x}from"@qqi/copy-text";import{terminalRegExp as F}from"@color-pen/static";import{Table as I}from"colored-table";import M,{Resolver as U}from"node:dns";import G from"node:net";const X=new e({name:"jja",type:!1});t(X.type);const Y=new l("jja");Y.bind({"package <pkg> (包管理)":["--diff <-d> (分析当下包的差异)","--upDependencies <-u> (更新依赖,强制更新到 'latest',使用需谨慎)"],"remove <rm> (做一个简单的兼容的移除文件或文件夹的命令)":["--ignore <-i> (不打印日志(默认打印的))","--subdirectories <-s> (这是一个危险的命令,用于 windows 下递归删除执行命令下所有的给定文件名称)"],"update <up> (做一个简单的 npm 升级程序,对,简单的)":["--ignore <-i> (不建议你这么用,你会发现你像个傻子一样在那等结果)",`--dependencies <-d> (更新依赖,跟 ${u("npm update")} 一样)`],"clearScreen <cls> (清理终端显示屏幕,同 clearTerminal )":"","clearTerminal <clear> (清理终端显示屏幕,同 clearScreen )":"","git (一些关于 git 的操作)":[`commit (git 提交代码,是 ${p("commit")} 提交啊,不是 ${d("#666")("push")} 推送)`,"merge (合并两个分支)","tag (给提交打上 tag)"],"dns (使用 dns 获取 ip 地址)":["--domain <-d> (获取给定域名获取 ip 地址,默认 github.com )","--port <-p> (配置要校验的 port 端口号,默认为 443)","--not-covered <-n> (不覆盖解析过程,默认不展示)"]}).run(),X("参数已绑定,且已解析用户参数",Y.args),X.warn("当前的执行状态",Y.state),Y.isEnd(!0);const B={log:!1,subdirectories:!1};async function J(e,t,n=5){return!await Reflect.apply(e,void 0,t)&&n--?(v(g("执行失败,现在重试中")),X.warn(t,"执行失败,第",5-n,"次执行"),await J(e,t,n)):await Reflect.apply(e,void 0,t)}function W(e,t){v(`清理 ${e} 文件${t?"完成":"失败"}`)}async function _(e,t){B.log||v(d("#aaa")(` ${e} 文件/夹存在,准备删除`));let n={error:null};return b?t.isDirectory()?(n=await j(`rd /q /s ${e.replace(/\//,"\\")}`),W(e,n.success)):t.isFile()&&(n=await j(`del ${B.subdirectories?"/s":""} /q ${e.replace(/\//,"\\")}`),W(e,n.success)):(n=await j(`rm -rf ${e.replace(/\\/,"/")}`),W(e,n.success)),!!n.success||(console.log(n.error),!1)}async function z(e){B.log||v(d("#336")(`当前清理文件为 ${e}`));const t=k(e);B.log||v(d("#666")(`正在检测 ${e} 文件/夹是否存在`)),X(`文件${e} 数据为 ${t}`),n(t)?B.log||v(f(`${e} 文件不存在`)):await J(_,[e,t])}async function H(e=!0){const t=V("package.json","file");if(null==t)return v("当前目录下不存在 package.json 文件");const n=D(A(t,"package.json"))?.dependencies||{};if(e&&v(g("初始化完成,等待下一步命令")),Object.keys(n).length>0){let e="npm install --save";for(let t=Object.keys(n),o=t.length,i=0;i<o;i++){e+=` ${t[i]}@latest `}await j(e)}var o;e&&v(w("正在更新 dev 依赖")),await j("npm update --save"),e&&(o="开发依赖更新完毕",S(),R(),v(o))}const K={log:!0};async function Q(e){Boolean(e["--dependencies"])&&await H(K.log)}const Z={local:null,online:null,dependenceList:{},updateDependence:[],latestDependence:[],binning:function(e,t=!1){if(n(e)||o(e)||i(this.local))return;const{overrides:r}=this.local;for(const n in e){if(a(r?.[n])){Y.WARN(`${n} 被锁定在 ${r[n]}`);continue}const o=e[n];this.dependenceList[n]={type:t?"devDependencies":"dependencies",version:o,localVersion:"",latestVersion:"",onlineVersion:"",tag:"",time:""}}},preReleaseDependence:[],timeoutDependence:[],registry:void 0};const ee=$.green,te=d("0x993311"),ne=d("0x339999"),oe=d("0x666666");function ie(e){const t=D(A("node_modules/",e,"package.json"));let n="";return n=i(t)?"":t.version||"",Z.dependenceList[e].localVersion=n,X(e,"本地安装的版本为:",n),n}async function ae(e){const t=await O(e,Z.registry,4567);if("timeout"===t.status)return void X.warn("请求超时");if(i(t.data))return void X.warn("获取包信息失败");const n=Z.dependenceList[e],{"dist-tags":o,time:a,version:r}=t.data;let s=r,c="latest";n.onlineVersion=s,n.tag=c;const l=Object.keys(o);for(let e=0,t=l.length;e<t;e++){const t=l[e],n=o[t];a[n]>a[s]&&(s=n,c=t)}"latest"!==c&&(X(e,"最新版本为:",s,"tag为:",c),n.tag=c,n.latestVersion=s);const p=new Date(a[s]).toLocaleString();n.time=p,X(`${e} 的最后发布时间为:${p}`)}async function re(e){const{msg:t,list:n,type:o,copy:i}=e,s=m[o];v(),v(s.reversed(t),!1),v(i?oe.reversed`已复制到剪切板 📋`:""),v(),v(`${s`npm install --save`} \\\n${function(e){if(!r(e)||e.some(e=>!a(e)))throw new TypeError("参数必须为字符串数组");return e.map((t,n)=>n%3==2&&n!==e.length-1?`${t} \\\n`:t.concat(" ")).join("")}(n)}`),v(),i&&await x(`npm install --save ${n.join(" ")}`.replace(F(),""))}function se(e){return`${$(e)}@${ee`latest`}`}function ce(e,t){return`${y(e)}@${y.random(t)}`}async function le(){const{local:e,preReleaseDependence:t,latestDependence:n,dependenceList:o,timeoutDependence:a}=Z;if(i(e))return;const{dependencies:r,devDependencies:s}=e;if(Z.binning(r),Z.binning(s,!0),await async function(){const{dependenceList:e,timeoutDependence:t}=Z,n=Object.keys(e);let o=!1;const i=()=>{S(),E(!0),R(!0)};for(let a=0,r=n.length;a<r;a++){const r=n[a],s=e[r],c=e[r].version;o&&i(),Y.CURRENT(h(`获取 ${r} 的本地安装信息`)),await L(36),i();const l=ie(r);if(Y.SUCCESS(h(`${r} 的本地安装版本:${s.localVersion}`)),await L(36),await ae(r),i(),""===s.onlineVersion&&""===s.latestVersion){t.push(r),Y.ERROR(`${r} 本地 ${s.localVersion} 请求错误`),o=!1;continue}if(l===s.onlineVersion){let e=`${r} 的本地${c} 安装版本为 ${l} 最新是 ${s.onlineVersion} `;if(""===s.latestVersion){Y.INFO(h(e)),o=!0,await L(36);continue}o=!1,Z.preReleaseDependence.push(r),e+=`;最新预发布版本为 ${g(s.latestVersion)}`,Y.INFO(e),await L(36);continue}if(o=!1,l===s.latestVersion){Y.INFO(`${r} 的本地版本${c} 安装版本为 ${l}`),await L(36);continue}let p=`${r} 的本地 ${g(c)} 安装版本为 ${g(l)} 最新是 ${ne(s.onlineVersion)} `;Z.latestDependence.push(r),""!==s.latestVersion?(Z.preReleaseDependence.push(r),p+=`;最新预发布版本为 ${g(s.latestVersion)}`,Y.INFO(p),await L(36)):(Y.INFO(p),await L(36))}!0===o&&(i(),o=!1)}(),0===t.length&&0===n.length&&0===a.length)return v(oe`看起来似乎没有依赖版本差异`);if(0===t.length&&0===n.length)return v(p`看起来网络不太好讷,所有的包线上版本的请求都出错了。或者是还没有执行 npm install 呐`);v(m.brightGreen`\n版本差异的依赖为:\n`);const c=[...n,...t];var l;new I({header:[w("包名"),{content:"发布时间",color:"#f26"},g`最新版本`],body:[...c.map(e=>{const{type:t,latestVersion:n,time:i,onlineVersion:a}=o[e];return["dependencies"===t?$(e):y(e),u(i),n||y(a)]})]})(),v(m.brightRed(`\n目前仅关注版本号是否为最新 ${m.brightMagenta("latest")}`)),v("使用 npm install --save 命令安装更新\n"),a.length>0&&(l=p`有一些包没有返回结果,请注意:`,v(h(l)),new I([...a.map(e=>[e])])());const d=[...n.filter(e=>!1===t.includes(e)).map(e=>m.bold(e).concat("@latest")),...t.map(e=>ce(e,o[e].tag))],f=n.map(e=>se(e)),b=[...n.map(e=>se(e)),...t.filter(e=>!1===n.includes(e)).map(e=>ce(e,o[e].tag))],j=d.length<t.length+n.length,k=t.length>0,V=n.length>0;k&&(j&&await re({msg:"‼️ 预发布版本优先:",list:d,type:"brightRed"}),await re({msg:"⚠️ latest 版本优先:",list:b,type:"brightMagenta",copy:!V})),V&&await re({msg:"🎉 最佳安装:",list:f,type:"brightGreen",copy:!0})}async function pe(e){Z.registry=e[0]?.toString(),await async function(){const e=V("package.json","file");if(n(e))return void X.warn("未找到当前包的 package.json 文件的位置");const t=D(A(e,"package.json"));if(i(t))return void X.error("未找到当前包的 package.json 文件,该事件发生的概率极低");const o=t.name||"",a=await O(o,Z.registry);Z.local=t,Z.online=a.data}();const{local:t,online:o}=Z,a=t?.version||"",r=o?.version||"";if(i(t))return X("未找到包 package.json 文件退出"),v(te("未找到当前包 package.json"));const s=te(`当前包本地版本为: ${a}`);if(o){v(s);const e=" ".repeat(6);v(ne(`${e}线上版本为:${r}@latest`));const t=new Date(o&&o.time.modified||"").toLocaleString();Y.INFO(`最后的发布时间为: ${t.toString()}`),N()}await le()}async function de(e){e["--upDependencies"]?await H(!0):e["--diff"]?await pe(e["--diff"]):Y.help("package")}async function ue(e){const t=V("package.json","file",process.cwd());if(null==t)return!0;const n=D(A(t,"package.json"));if(i(n)||!n.version)return!0;const o=n.version;await j({code:`git tag -a v${o} -m '${e}'`,cwd:t}),await j({code:"git push origin --tag",cwd:t})}async function ge(e){e.commit?await async function(e="版本维护",t=!1){const n=V(".git","directory");if(null==n)return v(d("#ff0")("not a git repository(当前目录非 git 储存库)"));const o=await j({code:"git add .",cwd:n});if(!o.success)return null!=console.log(o.error);const i=await j({code:"git status",cwd:n});if(!/nothing to commit, working tree clean/.test(i.data||"")){const o=await j({code:"git add .",cwd:n});if(!o.success)return null!=console.log(o.error);""==e.trim()&&(e=await Y.question({text:"请输入提交信息"})??"");const i=await j({code:`git commit -m "${e}"`,cwd:n});return i.success?(i.error&&console.log(i.error),await j({code:"git push",cwd:n}),t&&await ue(e),!0):null!=console.log(i.error)}return!1}(e.commit.join(" ")):e.merge?await async function(e){if(s(e)){const t=await j("git branch -a");console.log(t.data),e=await Y.question({text:"请输入要合并分支的名称"})??""}if(s(e))return Y.ERROR("没有获取到要合并的分支");const t=await Y.selection({data:[{label:"正常快进合并",value:""},{label:"非快进合并 (--no-ff)",value:"--no-ff"},{label:"多提交记录合并为一条 (--squash)",value:"--squash",tip:"适用于将众多小的提交合并成一个提交"}]});n(t)?Y.ERROR("您选择退出合并"):await j(`git merge ${e} ${t}`)}(e.merge.join("")):e.tag?await async function(){const e=await Y.question({text:"请输入待标记的信息"});n(e)||await ue(e)}():Y.help("git")}const fe=["A","AAAA","ANY","CAA","CNAME","MX","NAPTR","NS","PTR","SOA","SRV","TLSA","TXT"],me={domain:"github.com",port:443,notCovered:!1,dnsServers:["1.1.1.1","8.8.8.8","8.8.4.4","9.9.9.9","208.67.222.222","114.114.115.115","223.5.5.5","180.76.76.76"],ips:{},rrtype:["A"],reset(e){this.ips={},this.domain="github.com",this.port=443,this.notCovered=!1,this.rrtype=[],n(e)||e.forEach(e=>{const t=e["--domain"];!n(t)&&t.length>0&&(this.domain=t[0].toString());const o=e["--port"];!n(o)&&o.length>0&&(this.port=Number(o[0]));const i=e["--not-covered"];n(i)||!1===i[0]||(this.notCovered=!0);const a=e["--rrtype"];if(!n(a)&&a.length>0){const e=P(fe,a);e.length>0&&(this.rrtype=e)}})}};async function we(e,t=3e3){const{ips:n,port:o}=me;if(void 0===n[e])return X(`校验 ${e} 的联通性`),new Promise(n=>{const i=new G.Socket;i.setTimeout(t),i.on("connect",()=>{i.destroy(),n(!0)}),i.on("timeout",()=>{i.destroy(),n(!1)}),i.on("error",()=>{i.destroy(),n(!1)}),X("测试的接口为:",o),i.connect(o,e)});X(`${e} 联通性已校验过 ${n[e]?"🔥":"⛓️💥"}`)}async function $e(e="1.1.1.1"){const t=new U;t.setServers([e]);const{domain:o,ips:i}=me;try{const a=await new Promise(n=>{t.resolve4(o,(t,i)=>{if(t)return X.error(`使用 ${e} 获取 ${o} 的 ip 出错`,t),void n(void 0);X(`使用 ${e} 获取 ${o} 的 ip 值为 ${i.join(" --- ")}`),n(i)})});if(n(a))return{dnsServer:e,error:"获取 ip 错误"};const r=await Promise.all(a.map(async e=>{const t=await we(e);return n(t)||(i[e]=t),{ip:e.padEnd(16," "),isAlive:n(t)?i[e]:t}}));return{dnsServer:e,results:r}}catch(t){return X.error("获取 ip 错误",t),{dnsServer:e,error:t}}}async function he(e){me.reset(e.options),await async function(){const{domain:e,ips:t}=me;try{const o=await new Promise(t=>{M.lookup(e,{all:!0,family:4},(n,o)=>{if(n)return X.error(`获取本地 ${e} 的 ip 出错`,n),void t(void 0);X(`获取本地 ${e} 的 ip 值为 ${o.join(" --- ")}`),t(o.map(e=>e.address))})});if(n(o))return{error:"获取 ip 错误"};const i=await Promise.all(o.map(async e=>{const o=await we(e);return n(o)||(t[e]=o),{ip:e.padEnd(16," "),isAlive:n(o)?t[e]:o}}));return i.length>0&&(v(te`本地配置 ${e} 的 ip 地址及联通性为:\n`),i.forEach(e=>{v(w`- ${e.ip}`,!1),v(e.isAlive?te` -> ✅`:oe` -> ❌`)}),v()),{results:i}}catch(e){return X.error(e),{error:e}}}(),await async function(){const{domain:e,dnsServers:t,notCovered:o}=me;let i=0;v(`${e} ip 列表:`);for(const e of t){const{dnsServer:t,results:a}=await $e(e);n(a)?X.warn(`${t} 获取 ip 失败`):(o||0===i||(S(i),R(!0)),v(),v(m.reversed`DNS: ${t}`),v(),a.forEach(({ip:e,isAlive:t})=>{const n=t?`${g(e)} ${te`->`} ✅`:`${oe(e)} ${p`⛓️💥`} ❌`;v(h(n))}),i=3+a.length)}o||(S(i+1),R(!0))}();const{ips:t}=me;Object.keys(t).length>0?await async function(){const{domain:e,ips:t,port:n}=me;await C(`${m.brightMagenta`${e}`} 域名解析结果:`),v();for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)){const n=t[e];v(n?`${g`- ${e.padEnd(16)}`} ${te`->`} ✅`:`${oe`- ${e.padEnd(16)}`} ${p`⛓️💥`} ❌`)}v(),await C(p.italic.dim`${e} 联通性接口判断为 ${n.toString()}`),v()}():await async function(){const{domain:e,port:t}=me;await C(`\n找不到 ${p(e)} 的服务器 IP 地址 ${oe`测试使用 ${t.toString()} 端口`}\n`)}()}const ye=Y.args.$arrMap;0===Y.args.$only.length&&(X("没有匹配到子命令,打印帮助信息并退出"),Y.help(),Y.end());try{await async function e(){if(0===ye.length)return;const t=ye.shift();if(n(t))return await e();"remove"in t?(X("执行文件移除"),await async function(e){const t=e.value||[],n=e.options;for(n?.forEach(e=>{const n=e["--ignore"];n&&(B.log=!0,t.concat(n));const o=e["--subdirectories"];o&&(B.subdirectories=!0,t.concat(o))}),B.log||v(m.brightCyan`当前系统为: ${b?"windows":"linux/mac"}`),0==t.length&&(X.warn("待删除列表",t),v(m.random`没有待清理的文件/文件夹`));t.length;){let e=t.pop();e=void 0===e?"undefined":e.toString(),await z(e)}}(t.remove)):"clearScreen"in t||"clear"in t?(X("执行清屏"),await async function(){T()?(X("执行第一遍清理"),await j({code:b?"cls":"clear",printLog:!1}),X("执行第二遍清理"),q("3J"),q("c",!1),S(1/0),R(!0)):(X.warn("当前系统不支持 TTY"),v("当前环境不支持 "))}()):"git"in t?(X("执行 git 相关命令"),await async function(e){if(c(e)&&(e={value:[]}),n(e.options)||0===e.options.length)return X.warn("没有配置项,直接返回的帮助文档"),Y.help("git");const t=e.options;for(let e=0,n=t.length;e<n;e++)X("本次执行",t[e]),await ge(t[e])}(t.git)):"package"in t?(X("执行 package 相关命令"),await async function(e){if(n(e.options)||0==e.options.length)return X.warn("没有参数输入"),Y.help("package");const t=e.options;for(let e=0,n=t.length;e<n;e++)await de(t[e])}(t.package)):"update"in t?(X("执行 update 相关命令"),await async function(e){if(n(e.options)||0==e.options.length)return X.warn("没有匹配到选项,自动抛出帮助文档"),Y.help("update");const t=e.options;K.log=!t.some(e=>e["--ignore"]);for(let e=0,n=t.length;e<n;e++)await Q(t[e])}(t.update)):"dns"in t?(X("执行 dns 相关的命令"),await he(t.dns)):"runOtherCode"in t&&X("执行运行其他命令");try{await e()}catch(e){X.error("执行 run 报错",e)}}(),N(" 终结分割线 ",!0)}catch(e){X.error("执行 run 报错",e)}
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jja",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.3.
|
|
4
|
+
"version": "2.3.10",
|
|
5
5
|
"description": "一些在终端的执行动作 🥜",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@color-pen/static": "^1.0.0",
|
|
9
|
-
"@qqi/copy-text": "^1.0.
|
|
10
|
-
"@qqi/
|
|
11
|
-
"a-command": "^2.3.
|
|
12
|
-
"a-js-tools": "^1.0.
|
|
13
|
-
"a-node-tools": "^4.2.
|
|
14
|
-
"a-type-of-js": "^1.0.
|
|
15
|
-
"color-pen": "^2.0.
|
|
9
|
+
"@qqi/copy-text": "^1.0.3",
|
|
10
|
+
"@qqi/log": "^0.0.1",
|
|
11
|
+
"a-command": "^2.3.10",
|
|
12
|
+
"a-js-tools": "^1.0.1",
|
|
13
|
+
"a-node-tools": "^4.2.10",
|
|
14
|
+
"a-type-of-js": "^1.0.2",
|
|
15
|
+
"color-pen": "^2.0.11",
|
|
16
16
|
"colored-table": "^0.0.2"
|
|
17
17
|
},
|
|
18
18
|
"author": {
|
package/src/clearScreen.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{isTTY as o,runOtherCode as r,isWindows as t,__p as a,cursorMoveUp as c,cursorAfterClear as n,_p as i}from"a-node-tools";import{dog as m}from"./dog.mjs";async function e(){o()?(m("执行第一遍清理"),await r({code:t?"cls":"clear",printLog:!1}),m("执行第二遍清理"),a("3J"),a("c",!1),c(1/0),n(!0)):(m.warn("当前系统不支持 TTY"),i("当前环境不支持 "))}export{e as clearScreen};
|
package/src/command.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Command as e}from"a-command";import{redPen as r,hexPen as i,randomPen as n}from"color-pen";import{dog as o}from"./dog.mjs";const t=new e("jja");t.bind({"package <pkg> (包管理)":["--diff <-d> (分析当下包的差异)","--upDependencies <-u> (更新依赖,强制更新到 'latest',使用需谨慎)"],"remove <rm> (做一个简单的兼容的移除文件或文件夹的命令)":["--ignore <-i> (不打印日志(默认打印的))","--subdirectories <-s> (这是一个危险的命令,用于 windows 下递归删除执行命令下所有的给定文件名称)"],"update <up> (做一个简单的 npm 升级程序,对,简单的)":["--ignore <-i> (不建议你这么用,你会发现你像个傻子一样在那等结果)",`--dependencies <-d> (更新依赖,跟 ${n("npm update")} 一样)`],"clearScreen <cls> (清理终端显示屏幕,同 clearTerminal )":"","clearTerminal <clear> (清理终端显示屏幕,同 clearScreen )":"","git (一些关于 git 的操作)":[`commit (git 提交代码,是 ${r("commit")} 提交啊,不是 ${i("#666")("push")} 推送)`,"merge (合并两个分支)","tag (给提交打上 tag)"],"dns (使用 dns 获取 ip 地址)":["--domain <-d> (获取给定域名获取 ip 地址,默认 github.com )","--port <-p> (配置要校验的 port 端口号,默认为 443)","--not-covered <-n> (不覆盖解析过程,默认不展示)"]}).run(),o("参数已绑定,且已解析用户参数",t.args),o.warn("当前的执行状态",t.state),t.isEnd(!0);export{t as command};
|
package/src/dns/checkIp.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as o}from"../dog.mjs";import t from"node:net";import{dataStore as e}from"./data-store.mjs";async function r(r,n=3e3){const{ips:s,port:m}=e;if(void 0===s[r])return o(`校验 ${r} 的联通性`),new Promise((e=>{const s=new t.Socket;s.setTimeout(n),s.on("connect",(()=>{s.destroy(),e(!0)})),s.on("timeout",(()=>{s.destroy(),e(!1)})),s.on("error",(()=>{s.destroy(),e(!1)})),o("测试的接口为:",m),s.connect(m,r)}));o(`${r} 联通性已校验过 ${s[r]?"🔥":"⛓️💥"}`)}export{r as checkIp};
|
package/src/dns/data-store.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{isUndefined as t}from"a-type-of-js";import{intersection as o}from"a-js-tools";const r=["A","AAAA","ANY","CAA","CNAME","MX","NAPTR","NS","PTR","SOA","SRV","TLSA","TXT"],e={domain:"github.com",port:443,notCovered:!1,dnsServers:["1.1.1.1","8.8.8.8","8.8.4.4","9.9.9.9","208.67.222.222","114.114.115.115","223.5.5.5","180.76.76.76"],ips:{},rrtype:["A"],reset(e){this.ips={},this.domain="github.com",this.port=443,this.notCovered=!1,this.rrtype=[],t(e)||e.forEach((e=>{const s=e["--domain"];!t(s)&&s.length>0&&(this.domain=s[0].toString());const i=e["--port"];!t(i)&&i.length>0&&(this.port=Number(i[0]));const n=e["--not-covered"];t(n)||!1===n[0]||(this.notCovered=!0);const h=e["--rrtype"];if(!t(h)&&h.length>0){const t=o(r,h);t.length>0&&(this.rrtype=t)}}))}};export{e as dataStore,r as rrtypeList};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as r}from"../dog.mjs";import{Resolver as o}from"node:dns";import{checkIp as e}from"./checkIp.mjs";import{isUndefined as t}from"a-type-of-js";import{dataStore as i}from"./data-store.mjs";async function s(s="1.1.1.1"){const n=new o;n.setServers([s]);const{domain:m,ips:a}=i;try{const o=await new Promise((o=>{n.resolve4(m,((e,t)=>{if(e)return r.error(`使用 ${s} 获取 ${m} 的 ip 出错`,e),void o(void 0);r(`使用 ${s} 获取 ${m} 的 ip 值为 ${t.join(" --- ")}`),o(t)}))}));if(t(o))return{dnsServer:s,error:"获取 ip 错误"};const i=await Promise.all(o.map((async r=>{const o=await e(r);return t(o)||(a[r]=o),{ip:r.padEnd(16," "),isAlive:t(o)?a[r]:o}})));return{dnsServer:s,results:i}}catch(o){return r.error("获取 ip 错误",o),{dnsServer:s,error:o}}}export{s as getIdByDnsServer};
|
package/src/dns/getIp.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_p as o,cursorMoveUp as r,cursorAfterClear as t}from"a-node-tools";import{dataStore as e}from"./data-store.mjs";import{isUndefined as s}from"a-type-of-js";import{getIdByDnsServer as m}from"./getIdByDnsServer.mjs";import{pen as n,greenPen as i,redPen as p,strInOneLineOnTerminal as f}from"color-pen";import{dog as a}from"../dog.mjs";import{orangePen as d,pen666 as c}from"../pen.mjs";async function $(){const{domain:$,dnsServers:l,notCovered:v}=e;let j=0;o(`${$} ip 列表:`);for(const e of l){const{dnsServer:$,results:l}=await m(e);s(l)?a.warn(`${$} 获取 ip 失败`):(v||0===j||(r(j),t(!0)),o(),o(n.reversed`DNS: ${$}`),o(),l.forEach((({ip:r,isAlive:t})=>{const e=t?`${i(r)} ${d`->`} ✅`:`${c(r)} ${p`⛓️💥`} ❌`;o(f(e))})),j=3+l.length)}v||(r(j+1),t(!0))}export{$ as getIp};
|
package/src/dns/getLocalIp.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as r}from"../dog.mjs";import o from"node:dns";import{dataStore as i}from"./data-store.mjs";import{isUndefined as t}from"a-type-of-js";import{checkIp as m}from"./checkIp.mjs";import{_p as e}from"a-node-tools";import{orangePen as n,pen666 as p}from"../pen.mjs";import{cyanPen as s}from"color-pen";async function a(){const{domain:a,ips:f}=i;try{const i=await new Promise((i=>{o.lookup(a,{all:!0,family:4},((o,t)=>{if(o)return r.error(`获取本地 ${a} 的 ip 出错`,o),void i(void 0);r(`获取本地 ${a} 的 ip 值为 ${t.join(" --- ")}`),i(t.map((r=>r.address)))}))}));if(t(i))return{error:"获取 ip 错误"};const c=await Promise.all(i.map((async r=>{const o=await m(r);return t(o)||(f[r]=o),{ip:r.padEnd(16," "),isAlive:t(o)?f[r]:o}})));return c.length>0&&(e(n`本地配置 ${a} 的 ip 地址及联通性为:\n`),c.forEach((r=>{e(s`- ${r.ip}`,!1),e(r.isAlive?n` -> ✅`:p` -> ❌`)})),e()),{results:c}}catch(o){return r.error(o),{error:o}}}export{a as getLocalIp};
|
package/src/dns/index.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dataStore as t}from"./data-store.mjs";import{printResult as o}from"./printResult.mjs";import{getIp as m}from"./getIp.mjs";import{getLocalIp as r}from"./getLocalIp.mjs";import{printNotFound as i}from"./printNotFound.mjs";async function s(s){t.reset(s.options),await r(),await m();const{ips:a}=t;Object.keys(a).length>0?await o():await i()}export{s as dns};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{typewrite as o}from"a-node-tools";import{dataStore as t}from"./data-store.mjs";import{pen666 as r}from"../pen.mjs";import{redPen as m}from"color-pen";async function n(){const{domain:n,port:i}=t;await o(`\n找不到 ${m(n)} 的服务器 IP 地址 ${r`测试使用 ${i.toString()} 端口`}\n`)}export{n as printNotFound};
|
package/src/dns/printResult.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{typewrite as o,_p as t}from"a-node-tools";import{pen as r,greenPen as a,redPen as i}from"color-pen";import{dataStore as n}from"./data-store.mjs";import{orangePen as p,pen666 as m}from"../pen.mjs";async function s(){const{domain:s,ips:$,port:c}=n;await o(`${r.brightMagenta`${s}`} 域名解析结果:`),t();for(const o in $)if(Object.prototype.hasOwnProperty.call($,o)){const r=$[o];t(r?`${a`- ${o.padEnd(16)}`} ${p`->`} ✅`:`${m`- ${o.padEnd(16)}`} ${i`⛓️💥`} ❌`)}t(),await o(i.italic.dim`${s} 联通性接口判断为 ${c.toString()}`),t()}export{s as printResult};
|
package/src/dog.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Dog as o}from"@qqi/dev-log";import{isFalse as e}from"a-type-of-js";const t=new o({name:"jja",type:!1});e(t.type);export{t as dog};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{isUndefined as t}from"a-type-of-js";import{command as o}from"../command.mjs";import{tagCommit as m}from"./tagCommit.mjs";async function a(){const a=await o.question({text:"请输入待标记的信息"});t(a)||await m(a)}export{a as beforeTagCommit};
|
package/src/git/gitCommit.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{command as o}from"../command.mjs";import{getDirectoryBy as t,_p as r,runOtherCode as c}from"a-node-tools";import{hexPen as e}from"color-pen";import{tagCommit as i}from"./tagCommit.mjs";async function n(n="版本维护",s=!1){const a=t(".git","directory");if(null==a)return r(e("#ff0")("not a git repository(当前目录非 git 储存库)"));const m=await c({code:"git add .",cwd:a});if(!m.success)return null!=console.log(m.error);const l=await c({code:"git status",cwd:a});if(!/nothing to commit, working tree clean/.test(l.data||"")){const t=await c({code:"git add .",cwd:a});if(!t.success)return null!=console.log(t.error);""==n.trim()&&(n=await o.question({text:"请输入提交信息"})??"");const r=await c({code:`git commit -m "${n}"`,cwd:a});return r.success?(r.error&&console.log(r.error),await c({code:"git push",cwd:a}),s&&await i(n),!0):null!=console.log(r.error)}return!1}export{n as gitCommit};
|
package/src/git/gitMerge.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{runOtherCode as a}from"a-node-tools";import{command as t}from"../command.mjs";import{isBusinessEmptyString as o,isUndefined as e}from"a-type-of-js";async function i(i){if(o(i)){const o=await a("git branch -a");console.log(o.data),i=await t.question({text:"请输入要合并分支的名称"})??""}if(o(i))return t.ERROR("没有获取到要合并的分支");const n=await t.selection({data:[{label:"正常快进合并",value:""},{label:"非快进合并 (--no-ff)",value:"--no-ff"},{label:"多提交记录合并为一条 (--squash)",value:"--squash",tip:"适用于将众多小的提交合并成一个提交"}]});e(n)?t.ERROR("您选择退出合并"):await a(`git merge ${i} ${n}`)}export{i as gitMerge};
|
package/src/git/index.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as o}from"../dog.mjs";import{command as t}from"../command.mjs";import{isPlainObject as m,isUndefined as r}from"a-type-of-js";import{wheel as n}from"./wheel.mjs";async function i(i){if(m(i)&&(i={value:[]}),r(i.options)||0===i.options.length)return o.warn("没有配置项,直接返回的帮助文档"),t.help("git");const e=i.options;for(let t=0,m=e.length;t<m;t++)o("本次执行",e[t]),await n(e[t])}export{i as git};
|
package/src/git/tagCommit.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{getDirectoryBy as o,readFileToJsonSync as t,pathJoin as n,runOtherCode as a}from"a-node-tools";import{isNull as i}from"a-type-of-js";async function c(c){const e=o("package.json","file",process.cwd());if(null==e)return!0;const r=t(n(e,"package.json"));if(i(r)||!r.version)return!0;const s=r.version;await a({code:`git tag -a v${s} -m '${c}'`,cwd:e}),await a({code:"git push origin --tag",cwd:e})}export{c as tagCommit};
|
package/src/git/wheel.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{command as m}from"../command.mjs";import{beforeTagCommit as o}from"./beforeTagCommit.mjs";import{gitCommit as i}from"./gitCommit.mjs";import{gitMerge as t}from"./gitMerge.mjs";async function r(r){r.commit?await i(r.commit.join(" ")):r.merge?await t(r.merge.join("")):r.tag?await o():m.help("git")}export{r as wheel};
|
package/src/main.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as r}from"./dog.mjs";import{command as a}from"./command.mjs";import{remove as t}from"./remove/index.mjs";import{update as i}from"./update/index.mjs";import{packageManage as e}from"./package/index.mjs";import{clearScreen as o}from"./clearScreen.mjs";import{git as n}from"./git/index.mjs";import{isUndefined as m}from"a-type-of-js";import{dns as p}from"./dns/index.mjs";import{colorLine as s}from"a-node-tools";const c=a.args.$arrMap;0===a.args.$only.length&&(r("没有匹配到子命令,打印帮助信息并退出"),a.help(),a.end());try{await async function a(){if(0===c.length)return;const s=c.shift();if(m(s))return await a();"remove"in s?(r("执行文件移除"),await t(s.remove)):"clearScreen"in s||"clear"in s?(r("执行清屏"),await o()):"git"in s?(r("执行 git 相关命令"),await n(s.git)):"package"in s?(r("执行 package 相关命令"),await e(s.package)):"update"in s?(r("执行 update 相关命令"),await i(s.update)):"dns"in s?(r("执行 dns 相关的命令"),await p(s.dns)):"runOtherCode"in s&&r("执行运行其他命令");try{await a()}catch(a){r.error("执行 run 报错",a)}}(),s(" 终结分割线 ",!0)}catch(a){r.error("执行 run 报错",a)}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{isUndefined as e}from"a-type-of-js";const n={local:null,online:null,dependenceList:{},updateDependence:[],latestDependence:[],binning:function(n,t=!1){if(!e(n))for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e)){const i=n[e];this.dependenceList[e]={type:t?"devDependencies":"dependencies",version:i,localVersion:"",latestVersion:"",onlineVersion:"",tag:"",time:""}}},preReleaseDependence:[],timeoutDependence:[],registry:void 0};export{n as diffData};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{pen666 as e}from"../../pen.mjs";import{_p as t}from"a-node-tools";import{diffVersion as n}from"./diffVersion.mjs";import{redPen as i,pen as o,cyanPen as r,boldPen as a,italicPen as m,randomPen as s,greenPen as l}from"color-pen";import{diffData as p}from"./data-store.mjs";import{isNull as g}from"a-type-of-js";import{installation as c}from"./installation.mjs";import{latestPen as d}from"./latestPen.mjs";import{tagPen as f}from"./tagPen.mjs";import{printInOneLine as h}from"../../printInOneLine.mjs";import{Table as b}from"colored-table";async function y(){const{local:y,preReleaseDependence:j,latestDependence:u,dependenceList:w,timeoutDependence:v}=p;if(g(y))return;const{dependencies:D,devDependencies:R}=y;if(p.binning(D),p.binning(R,!0),await n(),0===j.length&&0===u.length&&0===v.length)return void t(e`看起来似乎没有依赖版本差异`);if(0===j.length&&0===u.length)return void t(i`看起来网络不太好讷,所有的包线上版本的请求都出错了。或者是还没有执行 npm install 呐`);t(o.brightGreen`\n版本差异的依赖为:\n`);const V=[...u,...j];new b({header:[r("包名"),{content:"发布时间",color:"#f26"},l`最新版本`],body:[...V.map((e=>{const{type:t,latestVersion:n,time:i,onlineVersion:o}=w[e];return["dependencies"===t?a(e):m(e),s(i),n||m(o)]}))]})(),t(o.brightRed(`\n目前仅关注版本号是否为最新 ${o.brightMagenta("latest")}`)),t("使用 npm install --save 命令安装更新\n"),v.length>0&&(h(i`有一些包没有返回结果,请注意:`),new b([...v.map((e=>[e]))])());const G=[...u.filter((e=>!1===j.includes(e))).map((e=>o.bold(e).concat("@latest"))),...j.map((e=>f(e,w[e].tag)))],L=u.map((e=>d(e))),M=[...u.map((e=>d(e))),...j.filter((e=>!1===u.includes(e))).map((e=>f(e,w[e].tag)))],P=G.length<j.length+u.length,x=j.length>0,I=u.length>0;x&&(P&&await c({msg:"‼️ 预发布版本优先:",list:G,type:"brightRed"}),await c({msg:"⚠️ latest 版本优先:",list:M,type:"brightMagenta",copy:!I})),I&&await c({msg:"🎉 最佳安装:",list:L,type:"brightGreen",copy:!0})}export{y as dependencies};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{command as e}from"../../command.mjs";import{pen399 as o}from"../../pen.mjs";import{cursorMoveUp as t,cursorLineClear as n,cursorAfterClear as i}from"a-node-tools";import{getInstallVersion as s}from"./getInstallVersion.mjs";import{getLatestVersion as r}from"./getLatestVersion.mjs";import{diffData as a}from"./data-store.mjs";import{strInOneLineOnTerminal as l,greenPen as m}from"color-pen";import{sleep as p}from"a-js-tools";async function c(){const{dependenceList:c,timeoutDependence:$}=a,f=Object.keys(c);let V=!1;const u=()=>{t(),n(!0),i(!0)};for(let t=0,n=f.length;t<n;t++){const n=f[t],i=c[n],d=c[n].version;V&&u(),e.CURRENT(l(`获取 ${n} 的本地安装信息`)),await p(36),u();const w=s(n);if(e.SUCCESS(l(`${n} 的本地安装版本:${i.localVersion}`)),await p(36),await r(n),u(),""===i.onlineVersion&&""===i.latestVersion){$.push(n),e.ERROR(`${n} 本地 ${i.localVersion} 请求错误`),V=!1;continue}if(w===i.onlineVersion){let o=`${n} 的本地${d} 安装版本为 ${w} 最新是 ${i.onlineVersion} `;if(""===i.latestVersion){e.INFO(l(o)),V=!0,await p(36);continue}V=!1,a.preReleaseDependence.push(n),o+=`;最新预发布版本为 ${m(i.latestVersion)}`,e.INFO(o),await p(36);continue}if(V=!1,w===i.latestVersion){e.INFO(`${n} 的本地版本${d} 安装版本为 ${w}`),await p(36);continue}let j=`${n} 的本地 ${m(d)} 安装版本为 ${m(w)} 最新是 ${o(i.onlineVersion)} `;a.latestDependence.push(n),""!==i.latestVersion?(a.preReleaseDependence.push(n),j+=`;最新预发布版本为 ${m(i.latestVersion)}`,e.INFO(j),await p(36)):(e.INFO(j),await p(36))}!0===V&&(u(),V=!1)}export{c as diffVersion};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{isArray as o,isString as r}from"a-type-of-js";function n(n){if(!o(n)||n.some((o=>!r(o))))throw new TypeError("参数必须为字符串数组");return n.map(((o,r)=>r%3==2&&r!==n.length-1?`${o} \\\n`:o.concat(" "))).join("")}export{n as everyThreePlusBackslash};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as o}from"../../dog.mjs";import{readFileToJsonSync as e,pathJoin as r}from"a-node-tools";import{isNull as t}from"a-type-of-js";import{diffData as m}from"./data-store.mjs";function n(n){const s=e(r("node_modules/",n,"package.json"));let i="";return i=t(s)?"":s.version||"",m.dependenceList[n].localVersion=i,o(n,"本地安装的版本为:",i),i}export{n as getInstallVersion};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as t}from"../../dog.mjs";import{getNpmPkgInfo as o}from"a-node-tools";import{isNull as e}from"a-type-of-js";import{diffData as s}from"./data-store.mjs";async function a(a){const n=await o(a,s.registry,4567);if("timeout"===n.status)return void t.warn("请求超时");if(e(n.data))return void t.warn("获取包信息失败");const r=s.dependenceList[a],{"dist-tags":i,time:m,version:c}=n.data;let d=c,f="latest";r.onlineVersion=d,r.tag=f;const l=Object.keys(i);for(let t=0,o=l.length;t<o;t++){const o=l[t],e=i[o];m[e]>m[d]&&(d=e,f=o)}"latest"!==f&&(t(a,"最新版本为:",d,"tag为:",f),r.tag=f,r.latestVersion=d);const g=new Date(m[d]).toLocaleString();r.time=g,t(`${a} 的最后发布时间为:${g}`)}export{a as getLatestVersion};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as o}from"../../dog.mjs";import{getDirectoryBy as a,readFileToJsonSync as r,pathJoin as t,getNpmPkgInfo as n}from"a-node-tools";import{isUndefined as e,isNull as s}from"a-type-of-js";import{diffData as i}from"./data-store.mjs";async function m(){const m=a("package.json","file");if(e(m))return void o.warn("未找到当前包的 package.json 文件的位置");const c=r(t(m,"package.json"));if(s(c))return void o.error("未找到当前包的 package.json 文件,改事件发生的概率极低");const p=c.name||"",f=await n(p,i.registry);i.local=c,i.online=f.data}export{m as getVersion};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as o}from"../../dog.mjs";import{getVersion as t}from"./getVersion.mjs";import{_p as r,colorLine as e}from"a-node-tools";import{isNull as m}from"a-type-of-js";import{dependencies as i}from"./dependencies.mjs";import{diffData as n}from"./data-store.mjs";import{orangePen as s,pen399 as a}from"../../pen.mjs";import{command as p}from"../../command.mjs";async function f(f){n.registry=f[0]?.toString(),await t();const{local:c,online:j}=n,d=c?.version||"",g=j?.version||"";if(m(c))return o("未找到包 package.json 文件退出"),r(s("未找到当前包 package.json"));const l=s(`当前包本地版本为: ${d}`);if(j){r(l);const o=" ".repeat(6);r(a(`${o}线上版本为:${g}@latest`));const t=new Date(j&&j.time.modified||"").toLocaleString();p.INFO(`最后的发布时间为: ${t.toString()}`),e(),e()}await i()}export{f as diffPackage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_p as o}from"a-node-tools";import{everyThreePlusBackslash as r}from"./everyThreePlusBackslash.mjs";import{pen as e}from"color-pen";import{copyTextToClipboard as t}from"@qqi/copy-text";import{pen666 as m}from"../../pen.mjs";import{terminalRegExp as s}from"@color-pen/static";async function p(p){const{msg:i,list:n,type:a,copy:l}=p,c=e[a];o(),o(c.reversed(i),!1),o(l?m.reversed`已复制到剪切板 📋`:""),o(),o(`${c`npm install --save`} \\\n${r(n)}`),o(),l&&await t(`npm install --save ${n.join(" ")}`.replace(s(),""))}export{p as installation};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{boldPen as o}from"color-pen";import{boldGreenPen as r}from"../../pen.mjs";function t(t){return`${o(t)}@${r`latest`}`}export{t as latestPen};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{italicPen as o}from"color-pen";function r(r,n){return`${o(r)}@${o.random(n)}`}export{r as tagPen};
|
package/src/package/index.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as o}from"../dog.mjs";import{command as t}from"../command.mjs";import{isUndefined as m}from"a-type-of-js";import{wheel as r}from"./wheel.mjs";async function n(n){if(m(n.options)||0==n.options.length)return o.warn("没有参数输入"),t.help("package");const p=n.options;for(let o=0,t=p.length;o<t;o++)await r(p[o])}export{n as packageManage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{getDirectoryBy as e,_p as t,readFileToJsonSync as n,pathJoin as o,runOtherCode as a}from"a-node-tools";import{cursorMoveUp as s}from"./utils.mjs";import{greenPen as l,cyanPen as i}from"color-pen";async function p(p=!0){const c=e("package.json","file");if(null==c)return t("当前目录下不存在 package.json 文件");const r=n(o(c,"package.json"))?.dependencies||{};if(p&&t(l("初始化完成,等待下一步命令")),Object.keys(r).length>0){let e="npm install --save";for(let t=Object.keys(r),n=t.length,o=0;o<n;o++){e+=` ${t[o]}@latest `}await a(e)}p&&t(i("正在更新 dev 依赖")),await a("npm update --save"),p&&s("开发依赖更新完毕")}export{p as updateDependence};
|
package/src/package/utils.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{cursorMoveUp as o,cursorAfterClear as r,_p as t}from"a-node-tools";function e(e){o(),r(),t(e)}export{e as cursorMoveUp};
|
package/src/package/wheel.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{command as e}from"../command.mjs";import{diffPackage as i}from"./diff/index.mjs";import{updateDependence as m}from"./updateDependence.mjs";async function f(f){f["--upDependencies"]?await m(!0):f["--diff"]?await i(f["--diff"]):e.help("package")}export{f as wheel};
|
package/src/pen.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{boldPen as o,hexPen as r}from"color-pen";const e=o.green,x=r("0x993311"),n=r("0x339999"),p=r("0x666666");export{e as boldGreenPen,x as orangePen,n as pen399,p as pen666};
|
package/src/printInOneLine.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_p as o}from"a-node-tools";import{strInOneLineOnTerminal as r}from"color-pen";function t(t){o(r(t))}export{t as printInOneLine};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as o}from"../dog.mjs";import{removeData as r}from"./removeData.mjs";import{_p as m,fileExist as t}from"a-node-tools";import{wheelRun as e}from"./wheelRun.mjs";import{removeFileOrDirectory as i}from"./removeFileOrDirectory.mjs";import{isUndefined as p}from"a-type-of-js";import{hexPen as f,yellowPen as s}from"color-pen";async function a(a){r.log||m(f("#336")(`当前清理文件为 ${a}`));const l=t(a);r.log||m(f("#666")(`正在检测 ${a} 文件/夹是否存在`)),o(`文件${a} 数据为 ${l}`),p(l)?r.log||m(s(`${a} 文件不存在`)):await e(i,[a,l])}export{a as beforeRemove};
|
package/src/remove/index.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as o}from"../dog.mjs";import{pen as r}from"color-pen";import{_p as t,isWindows as n}from"a-node-tools";import{removeData as e}from"./removeData.mjs";import{beforeRemove as i}from"./beforeRemove.mjs";async function m(m){const a=m.value||[],c=m.options;for(c?.forEach((o=>{const r=o["--ignore"];r&&(e.log=!0,a.concat(r));const t=o["--subdirectories"];t&&(e.subdirectories=!0,a.concat(t))})),e.log||t(r.brightCyan`当前系统为: ${n?"windows":"linux/mac"}`),0==a.length&&(o.warn("待删除列表",a),t(r.random`没有待清理的文件/文件夹`));a.length;){let o=a.pop();o=void 0===o?"undefined":o.toString(),await i(o)}}export{m as remove};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const o={log:!1,subdirectories:!1};export{o as removeData};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{removeData as r}from"./removeData.mjs";import{_p as e,isWindows as o,runOtherCode as s}from"a-node-tools";import{removeResult as c}from"./removeResult.mjs";import{hexPen as a}from"color-pen";async function t(t,i){r.log||e(a("#aaa")(` ${t} 文件/夹存在,准备删除`));let l={error:null};return o?i.isDirectory()?(l=await s(`rd /q /s ${t.replace(/\//,"\\")}`),c(t,l.success)):i.isFile()&&(l=await s(`del ${r.subdirectories?"/s":""} /q ${t.replace(/\//,"\\")}`),c(t,l.success)):(l=await s(`rm -rf ${t.replace(/\\/,"/")}`),c(t,l.success)),!!l.success||(console.log(l.error),!1)}export{t as removeFileOrDirectory};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_p as o}from"a-node-tools";function t(t,n){o(`清理 ${t} 文件${n?"完成":"失败"}`)}export{t as removeResult};
|
package/src/remove/wheelRun.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{greenPen as o}from"color-pen";import{dog as t}from"../dog.mjs";import{_p as a}from"a-node-tools";async function r(i,p,e=5){return!await Reflect.apply(i,void 0,p)&&e--?(a(o("执行失败,现在重试中")),t.warn(p,"执行失败,第",5-e,"次执行"),await r(i,p,e)):await Reflect.apply(i,void 0,p)}export{r as wheelRun};
|
package/src/update/data.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const o={log:!0};export{o as data};
|
package/src/update/index.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{dog as o}from"../dog.mjs";import{command as t}from"../command.mjs";import{isUndefined as m}from"a-type-of-js";import{wheel as r}from"./wheel.mjs";import{data as n}from"./data.mjs";async function e(e){if(m(e.options)||0==e.options.length)return o.warn("没有匹配到选项,自动抛出帮助文档"),t.help("update");const i=e.options;n.log=!i.some((o=>o["--ignore"]));for(let o=0,t=i.length;o<t;o++)await r(i[o])}export{e as update};
|
package/src/update/wheel.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{updateDependence as e}from"../package/updateDependence.mjs";import{data as a}from"./data.mjs";async function o(o){Boolean(o["--dependencies"])&&await e(a.log)}export{o as wheel};
|