jja 2.2.2 → 2.3.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # jja
2
2
 
3
- [![version](<https://img.shields.io/npm/v/jja.svg?logo=npm&logoColor=rgb(0,0,0)&label=版本号&labelColor=rgb(73,73,228)&color=rgb(0,0,0)>)](https://www.npmjs.com/package/jja) [![Coverage Status](<https://img.shields.io/coverallsCoverage/github/earthnutDev/jja?logo=coveralls&label=coveralls&labelColor=rgb(12, 244, 39)&color=rgb(0,0,0)>)](https://coveralls.io/github/earthnutDev/jja?branch=main) [![codecov](<https://img.shields.io/codecov/c/github/earthnutDev/jja/main?logo=codecov&label=codecov&labelColor=rgb(7, 245, 245)&color=rgb(0,0,0)>)](https://codecov.io/gh/earthnutDev/jja) [![issues 提交](<https://img.shields.io/badge/issues-提交-rgb(255,0,63)?logo=github>)](https://github.com/earthnutDev/jja/issues)
3
+ [![version](<https://img.shields.io/npm/v/jja.svg?logo=npm&logoColor=rgb(0,0,0)&label=版本号&labelColor=rgb(73,73,228)&color=rgb(0,0,0)>)](https://www.npmjs.com/package/jja) [![issues 提交](<https://img.shields.io/badge/issues-提交-rgb(255,0,63)?logo=github>)](https://github.com/earthnutDev/jja/issues)
4
4
 
5
5
  ---
6
6
 
@@ -12,11 +12,13 @@ npm install --save-dev jja
12
12
 
13
13
  ## 📖 命令
14
14
 
15
- 定义了两个命令,一个是 remove ,另一个是 update
15
+ - [remove :与删除文件相关](#remove)
16
+ - [package:与 package.json 包相关](#package)
17
+ - `cls`、`clear`:清理终端屏幕,两个作用相同
16
18
 
17
19
  ### `remove`
18
20
 
19
- 你可以使用 `npx jja rm <filename> <filename> <...>` 的模式进行移除文件或文件夹,而不再担心“我的 windows 命令在 macos 上没法用呀!!”、“我在 windows 上移除文件夹,文件不存在报错” (不好吧,我就是为了解决这两个问题才呕心沥血加了这个小功能,希望你能喜欢)
21
+ 可用 `npx jja rm <filename> <filename> <...>` 的模式进行移除文件或文件夹
20
22
 
21
23
  ```bash
22
24
  npx jja rm <filename>
@@ -28,6 +30,16 @@ npx jja rm <filename>
28
30
  npx jja rm -i filename
29
31
  ```
30
32
 
33
+ ### `package`
34
+
35
+ 使用 `--diff` 或 `-d` 进行 `package.json` 文件内的依赖版本的检测,查看是否有更新(更新以本地安装的应用版本为准,而不是以 package.json 文件给出的范围)可用,给出反馈
36
+
37
+ ```bash
38
+ npx jja package --diff
39
+ # 或者使用缩写
40
+ npx jjs pkg -d
41
+ ```
42
+
31
43
  ### `update`
32
44
 
33
45
  ```bash
@@ -36,6 +48,24 @@ npx jja up
36
48
 
37
49
  升级前尽量保证你的功能完善,且 git 目录干净
38
50
 
51
+ ### dns
52
+
53
+ 添加了域名解析,使用线上的域名,目前仅支持 `A` 记录的查询
54
+
55
+ ```bash
56
+ # 简单使用(将返回 github.com 的解析地址)
57
+ npx jja dns
58
+ # 使用自定义的网址
59
+ npx jja dns --domain=www.npmjs.com
60
+ npx jja dns -d=www.npmjs.com
61
+ # 使用自定义的判断联通的接口(默认 443)
62
+ npx jja dns --port=80
63
+ npx jja dns -p=80
64
+ # 展示每一个测试的 dns 信息
65
+ npx jja dns --not-covered
66
+ npx jja dns -n
67
+ ```
68
+
39
69
  ## 📄 文档地址
40
70
 
41
71
  参看 [https://earthnut.dev/jja/](https://earthnut.dev/jja/)
package/bin.mjs ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import"./src/main.mjs";
package/package.json CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "jja",
3
3
  "type": "module",
4
- "version": "2.2.2",
4
+ "version": "2.3.0",
5
5
  "description": "一些在终端的执行动作 🥜",
6
6
  "license": "ISC",
7
7
  "dependencies": {
8
- "@qqi/dev-log": ">=0.1.0 <1.0.0",
9
- "a-command": "^2.1.2",
10
- "a-js-tools": ">=0.5.4 <1.0.0",
11
- "a-node-tools": ">=2.2.0 <3.0.0",
8
+ "@qqi/copy-text": ">=0.0.0 <1.0.0",
9
+ "@qqi/dev-log": ">=0.2.0 <1.0.0",
10
+ "a-command": ">=2.1.7 <3.0.0",
11
+ "a-js-tools": ">=0.6.1 <1.0.0",
12
+ "a-node-tools": ">=3.0.0 <4.0.0",
12
13
  "a-type-of-js": ">=0.2.0 <1.0.0",
13
- "color-pen": "^1.2.2"
14
+ "color-pen": "^1.3.2"
14
15
  },
15
16
  "author": {
16
17
  "name": "🥜",
@@ -18,9 +19,8 @@
18
19
  "url": "https://earthnut.dev"
19
20
  },
20
21
  "files": [
21
- "bin.js",
22
22
  "src",
23
- "index.mjs"
23
+ "bin.mjs"
24
24
  ],
25
25
  "keywords": [
26
26
  "ixxx",
@@ -40,6 +40,6 @@
40
40
  "registry": "https://registry.npmjs.org/"
41
41
  },
42
42
  "bin": {
43
- "jja": "bin.js"
43
+ "jja": "bin.mjs"
44
44
  }
45
45
  }
package/src/command.mjs CHANGED
@@ -1 +1 @@
1
- import{Command as e}from"a-command";import r from"color-pen";import{dog as i}from"./dog.mjs";const n=new e("jja");n.bind({"package <pkg> (包管理)":["--diff <-d> (分析当下包的差异)","--upDependencies <-u> (更新依赖,强制更新到 'latest',使用需谨慎)"],"remove <rm> (做一个简单的兼容的移除文件或文件夹的命令)":["--ignore <-i> (不打印日志(默认打印的))","--subdirectories <-s> (这是一个危险的命令,用于 windows 下递归删除执行命令下所有的给定文件名称)"],"update <up> (做一个简单的 npm 升级程序,对,简单的)":["--ignore <-i> (不建议你这么用,你会发现你像个傻子一样在那等结果)",`--dependencies <-d> (更新依赖,跟 ${r.random("npm update")} 一样)`],"clearScreen <cls> (清理终端显示屏幕,同 clearTerminal )":"","clearTerminal <clear> (清理终端显示屏幕,同 clearScreen )":"","git (一些关于 git 的操作)":[`commit (git 提交代码,是 ${r.red("commit")} 提交啊,不是 ${r.hex("#666")("push")} 推送)`,"merge (合并两个分支)","tag (给提交打上 tag)"]}).run(),i("参数已绑定,且已解析用户参数",n.args),i.warn("当前的执行状态",n.state),n.isEnd(!0);export{n as command};
1
+ import{Command as e}from"a-command";import r from"color-pen";import{dog as n}from"./dog.mjs";import{redPen as o,hexPen as i}from"./pen.mjs";const m=new e("jja");m.bind({"package <pkg> (包管理)":["--diff <-d> (分析当下包的差异)","--upDependencies <-u> (更新依赖,强制更新到 'latest',使用需谨慎)"],"remove <rm> (做一个简单的兼容的移除文件或文件夹的命令)":["--ignore <-i> (不打印日志(默认打印的))","--subdirectories <-s> (这是一个危险的命令,用于 windows 下递归删除执行命令下所有的给定文件名称)"],"update <up> (做一个简单的 npm 升级程序,对,简单的)":["--ignore <-i> (不建议你这么用,你会发现你像个傻子一样在那等结果)",`--dependencies <-d> (更新依赖,跟 ${r.random("npm update")} 一样)`],"clearScreen <cls> (清理终端显示屏幕,同 clearTerminal )":"","clearTerminal <clear> (清理终端显示屏幕,同 clearScreen )":"","git (一些关于 git 的操作)":[`commit (git 提交代码,是 ${o("commit")} 提交啊,不是 ${i("#666")("push")} 推送)`,"merge (合并两个分支)","tag (给提交打上 tag)"],"dns (使用 dns 获取 ip 地址)":["--domain <-d> (获取给定域名获取 ip 地址,默认 github.com )","--port <-p> (配置要校验的 port 端口号,默认为 443)","--not-covered <-n> (不覆盖解析过程,默认不展示)"]}).run(),n("参数已绑定,且已解析用户参数",m.args),n.warn("当前的执行状态",m.state),m.isEnd(!0);export{m as command};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
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 n,{strInOneLineOnTerminal as i}from"color-pen";import{dog as p}from"../dog.mjs";import{greenPen as f,orangePen as a,pen666 as d,redPen 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)?p.warn(`${$} 获取 ip 失败`):(v||0===j||(r(j),t(!0)),o(),o(n.reversed`DNS: ${$}`),o(),l.forEach((({ip:r,isAlive:t})=>{const e=t?`${f(r)} ${a`->`} ✅`:`${d(r)} ${c`⛓️‍💥`} ❌`;o(i(e))})),j=3+l.length)}v||(r(j+1),t(!0))}export{$ as getIp};
@@ -0,0 +1 @@
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 e}from"./checkIp.mjs";import{_p as m}from"a-node-tools";import{orangePen as n,cyanPen as s,pen666 as a}from"../pen.mjs";async function p(){const{domain:p,ips:f}=i;try{const i=await new Promise((i=>{o.lookup(p,{all:!0,family:4},((o,t)=>{if(o)return r.error(`获取本地 ${p} 的 ip 出错`,o),void i(void 0);r(`获取本地 ${p} 的 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 e(r);return t(o)||(f[r]=o),{ip:r.padEnd(16," "),isAlive:t(o)?f[r]:o}})));return c.length>0&&(m(n`本地配置 ${p} 的 ip 地址及联通性为:\n`),c.forEach((r=>{m(s`- ${r.ip}`,!1),m(r.isAlive?n` -> ✅`:a` -> ❌`)})),m()),{results:c}}catch(o){return r.error(o),{error:o}}}export{p as getLocalIp};
@@ -0,0 +1 @@
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";async function s(s){t.reset(s.options),await r(),await m();const{ips:e}=t;Object.keys(e).length>0&&o()}export{s as dns};
@@ -0,0 +1 @@
1
+ import{_p as o}from"a-node-tools";import t from"color-pen";import{dataStore as r}from"./data-store.mjs";import{greenPen as n,orangePen as i,pen666 as p,redPen as m}from"../pen.mjs";function a(){const{domain:a,ips:$,port:e}=r;o(`${t.brightMagenta`${a}`} 域名解析结果:`),o();for(const t in $)if(Object.prototype.hasOwnProperty.call($,t)){const r=$[t];o(r?`${n`- ${t.padEnd(16)}`} ${i`->`} ✅`:`${p`- ${t.padEnd(16)}`} ${m`⛓️‍💥`} ❌`)}o(),o(m.italic.dim`${a} 联通性接口判断为 ${e.toString()}`),o()}export{a as printResult};
package/src/main.mjs ADDED
@@ -0,0 +1 @@
1
+ import{dog as a}from"./dog.mjs";import{command as r}from"./command.mjs";import{remove as t}from"./remove/index.mjs";import i from"./update/index.mjs";import{packageManage as e}from"./package/index.mjs";import{clearScreen as n}from"./clearScreen.mjs";import m from"./git/index.mjs";import{isUndefined as o}from"a-type-of-js";import{dns as p}from"./dns/index.mjs";const s=r.args.$arrMap;0===r.args.$only.length&&(a("没有匹配到子命令,打印帮助信息并退出"),r.help(),r.end());try{await async function c(){0===s.length&&r.end();const d=s.shift();if(o(d))return await c();"remove"in d?(a("执行文件移除"),await t(d.remove)):"clearScreen"in d||"clear"in d?(a("执行清屏"),await n()):"git"in d?(a("执行 git 相关命令"),await m(d.git)):"package"in d?(a("执行 package 相关命令"),await e(d.package)):"update"in d?(a("执行 update 相关命令"),await i(d.update)):"dns"in d&&(a("执行 dns 相关的命令"),await p(d.dns));try{await c()}catch(r){a.error("执行 run 报错",r)}}()}catch(r){a.error("执行 run 报错",r)}
@@ -1 +1 @@
1
- import{isUndefined as e}from"a-type-of-js";const n={local:null,online:null,dependencies:{},updateDependence:[],latestDependence:[],binning:function(n,o=!1){if(!e(n))for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e)){const t=n[e];this.dependencies[e]={type:o?"devDependencies":"dependencies",version:t,localVersion:"",latestVersion:"",onlineVersion:"",tag:""}}},preReleaseDependence:[]};export{n as diffData};
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 o=n[e];this.dependenceList[e]={type:t?"devDependencies":"dependencies",version:o,localVersion:"",latestVersion:"",onlineVersion:"",tag:"",time:""}}},preReleaseDependence:[],timeoutDependence:[]};export{n as diffData};
@@ -1 +1 @@
1
- import{_p as e}from"a-node-tools";import{diffVersion as n}from"./diffVersion.mjs";import t from"color-pen";import{diffData as a}from"./data-store.mjs";import{isNull as i}from"a-type-of-js";async function s(){const{local:s,preReleaseDependence:o,latestDependence:r,dependencies:l}=a;if(i(s))return;const{dependencies:p,devDependencies:c}=s;if(a.binning(p),a.binning(c,!0),await n(),0===o.length&&0===r.length)return void e("看起来似乎没有依赖版本差异");e("\n版本差异的依赖为:"),e([...r,...o].join("\n")),e(t.brightRed(`仅关注版本号是否为最新 ${t.brightMagenta("latest")}\n不关心是否是最佳依赖版本\n更新有风险,且更且珍惜`)),e("使用 npm install --save 命令安装更新\n");const m=[...r.filter((e=>!1===o.includes(e))).map((e=>e.concat("@latest"))),...o.map((e=>`${e}@${l[e].tag}`))],d=r.map((e=>e.concat("@latest"))),g=[...r.map((e=>e.concat("@latest"))),...o.filter((e=>!1===r.includes(e))).map((e=>`${e}@${l[e].tag}`))];if(o.length>0){const n=o.length+r.length;m.length<n&&(e(),e(t.brightRed.reversed`激进派(预发布版本优先)安装手法:`),e(),e(`npm install --save ${m.join(" ")}`),e()),e(),e(t.brightMagenta.reversed`保守派(latest 版本优先)安装手法:`),e(),e(`npm install --save ${g.join(" ")}`),e()}r.length>0&&(e(),e(t.brightGreen.reversed`保皇派(最推荐的)稳妥安装:`),e(),e(`npm install --save ${d.join(" ")}`),e())}export{s as dependencies};
1
+ import{pen666 as e,redPen as t,italicPen as n}from"../../pen.mjs";import{_p as i}from"a-node-tools";import{diffVersion as o}from"./diffVersion.mjs";import r,{strInOneLineOnTerminal as a}from"color-pen";import{diffData as m}from"./data-store.mjs";import{isNull as s}from"a-type-of-js";import{installation as l}from"./installation.mjs";import{latestPen as p}from"./latestPen.mjs";import{tagPen as g}from"./tagPen.mjs";import{printInOneLine as c}from"../../printInOneLine.mjs";async function d(){const{local:d,preReleaseDependence:f,latestDependence:h,dependenceList:b,timeoutDependence:j}=m;if(s(d))return;const{dependencies:u,devDependencies:y}=d;if(m.binning(u),m.binning(y,!0),await o(),0===f.length&&0===h.length&&0===j.length)return void i(e`看起来似乎没有依赖版本差异`);if(0===f.length&&0===h.length)return void i(t`看起来网络不太好讷,所有的包线上版本的请求都出错了。或者是还没有执行 npm install 呐`);i(r.brightGreen`\n版本差异的依赖为:\n`),i([...h,...f].map((e=>{const t=b[e],i=r.random`- `.concat(`${"dependencies"===t.type?r.bold(e):r.italic(e)}:于${r.color("#066")(t.time)} 发布 ${t.latestVersion||n(t.onlineVersion)}`);return a(i)})).join("\n")),i(r.brightRed(`\n目前仅关注版本号是否为最新 ${r.brightMagenta("latest")}`)),i("使用 npm install --save 命令安装更新\n"),j.length>0&&(c(t`有一些包没有返回结果,请注意:`),c(j.map((e=>`${r.random`-`} ${e}`)).join("\n")));const $=[...h.filter((e=>!1===f.includes(e))).map((e=>r.bold(e).concat("@latest"))),...f.map((e=>g(e,b[e].tag)))],v=h.map((e=>p(e))),w=[...h.map((e=>p(e))),...f.filter((e=>!1===h.includes(e))).map((e=>g(e,b[e].tag)))],D=$.length<f.length+h.length,R=f.length>0,V=h.length>0;R&&(D&&await l({msg:"‼️ 预发布版本优先:",list:$,type:"brightRed"}),await l({msg:"⚠️ latest 版本优先:",list:w,type:"brightMagenta",copy:!V})),V&&await l({msg:"🎉 最佳安装:",list:v,type:"brightGreen",copy:!0})}export{d as dependencies};
@@ -1 +1 @@
1
- import{_p as e,cursorMoveUp as n,cursorAfterClear as t}from"a-node-tools";import{getInstallVersion as o}from"./getInstallVersion.mjs";import{getLatestVersion as r}from"./getLatestVersion.mjs";import s from"color-pen";import{diffData as i}from"./data-store.mjs";async function l(){const{dependencies:l}=i,a=Object.keys(l);let p=!1;for(let c=0,m=a.length;c<m;c++){const m=a[c],f=l[m],V=l[m].version;await r(m);const $=o(m);if(p&&(n(),t()),$===f.onlineVersion){let n=`${m} 的本地${V} 安装版本为 ${$} 最新是 ${f.onlineVersion} `;if(""===f.latestVersion){e(n),p=!0;continue}p=!1,i.preReleaseDependence.push(m),n+=`;最新预发布版本为 ${s.brightGreen(f.latestVersion)}`,e(n);continue}if(p=!1,$===f.latestVersion)continue;let g=`${m} 的本地 ${s.brightGreen(V)} 安装版本为 ${s.brightGreen($)} 最新是 ${s.brightMagenta(f.onlineVersion)} `;i.latestDependence.push(m),""!==f.latestVersion?(i.preReleaseDependence.push(m),g+=`;最新预发布版本为 ${s.brightGreen(f.latestVersion)}`,e(g)):e(g)}!0===p&&(n(),t())}export{l as diffVersion};
1
+ import{greenPen as e,pen399 as n}from"../../pen.mjs";import{cursorMoveUp as t,cursorLineClear as o,cursorAfterClear as s}from"a-node-tools";import{getInstallVersion as i}from"./getInstallVersion.mjs";import{getLatestVersion as r}from"./getLatestVersion.mjs";import{diffData as l}from"./data-store.mjs";import{printInOneLine as p}from"../../printInOneLine.mjs";async function a(){const{dependenceList:a,timeoutDependence:m}=l,c=Object.keys(a);let V=!1;for(let f=0,$=c.length;f<$;f++){const $=c[f],u=a[$],d=a[$].version;await r($);const j=i($);if(V&&(t(),o(),s(!0)),""===u.onlineVersion&&""===u.latestVersion){m.push($),p(`${$} 本地 ${u.localVersion} 请求 ❌`),V=!1;continue}if(j===u.onlineVersion){let n=`${$} 的本地${d} 安装版本为 ${j} 最新是 ${u.onlineVersion} `;if(""===u.latestVersion){p(n),V=!0;continue}V=!1,l.preReleaseDependence.push($),n+=`;最新预发布版本为 ${e(u.latestVersion)}`,p(n);continue}if(V=!1,j===u.latestVersion)continue;let h=`${$} 的本地 ${e(d)} 安装版本为 ${e(j)} 最新是 ${n(u.onlineVersion)} `;l.latestDependence.push($),""!==u.latestVersion?(l.preReleaseDependence.push($),h+=`;最新预发布版本为 ${e(u.latestVersion)}`,p(h)):p(h)}!0===V&&(t(),o(),s(!0),V=!1)}export{a as diffVersion};
@@ -0,0 +1 @@
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 +1 @@
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.dependencies[n].localVersion=i,o(n,"本地安装的版本为:",i),i}export{n as getInstallVersion};
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 +1 @@
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 n(n){const r=await o(n);if(e(r))return void t.warn("获取包信息失败");const a=s.dependencies[n],{"dist-tags":i,time:m}=r;let c=r.version,f="latest";a.onlineVersion=c,a.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[c]&&(c=e,f=o)}"latest"!==f&&(t(n,"最新版本为:",c,"tag为:",f),a.tag=f,a.latestVersion=c)}export{n as getLatestVersion};
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 a}from"./data-store.mjs";async function n(n){const s=await o(n,"官方",4567);if("timeout"===s.status)return void t.warn("请求超时");if(e(s.data))return void t.warn("获取包信息失败");const r=a.dependenceList[n],{"dist-tags":i,time:m,version:c}=s.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(n,"最新版本为:",d,"tag为:",f),r.tag=f,r.latestVersion=d);const g=new Date(m[d]).toLocaleString();r.time=g,t(`${n} 的最后发布时间为:${g}`)}export{n as getLatestVersion};
@@ -1 +1 @@
1
- import{dog as o}from"../../dog.mjs";import{getDirectoryBy as a,readFileToJsonSync as r,pathJoin as n,getNpmPkgInfo as t}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(n(m,"package.json"));if(s(c))return void o.error("未找到当前包的 package.json 文件,改事件发生的概率极低");const p=c.name||"",f=await t(p,"淘宝");i.local=c,i.online=f}export{m as getVersion};
1
+ import{dog as o}from"../../dog.mjs";import{getDirectoryBy as a,readFileToJsonSync as r,pathJoin as n,getNpmPkgInfo as t}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(n(m,"package.json"));if(s(c))return void o.error("未找到当前包的 package.json 文件,改事件发生的概率极低");const p=c.name||"",f=await t(p,"淘宝");i.local=c,i.online=f.data}export{m as getVersion};
@@ -1 +1 @@
1
- import{dog as o}from"../../dog.mjs";import e from"color-pen";import{getVersion as t}from"./getVersion.mjs";import{_p as r}from"a-node-tools";import{isNull as i}from"a-type-of-js";import{dependencies as n}from"./dependencies.mjs";import{diffData as m}from"./data-store.mjs";async function s(){await t();const{local:s,online:a}=m,p=s?.version||"",c=a?.version||"";if(i(s))return o("未找到包 package.json 文件退出"),r(e.hex("#931")("未找到当前包 package.json"));const f=e.hex("#931")(`当前包本地版本为: ${p}`);if(r(f),i(a))r(e.hex("#399")("未获取当前包的线上信息"));else{const o=`${" ".repeat(6)}线上版本为:${c}@latest`;r(e.hex("#399")(o));const t=new Date(a&&a.time.modified||"").toLocaleString();r(t.toString())}await n()}export{s as diffPackage};
1
+ import{dog as o}from"../../dog.mjs";import{getVersion as t}from"./getVersion.mjs";import{_p as e}from"a-node-tools";import{isNull as r}from"a-type-of-js";import{dependencies as i}from"./dependencies.mjs";import{diffData as n}from"./data-store.mjs";import{orangePen as m,pen399 as s}from"../../pen.mjs";async function a(){await t();const{local:a,online:p}=n,f=a?.version||"",c=p?.version||"";if(r(a))return o("未找到包 package.json 文件退出"),e(m("未找到当前包 package.json"));const j=m(`当前包本地版本为: ${f}`);if(e(j),r(p))e(s("未获取当前包的线上信息"));else{const o=" ".repeat(6);e(s(`${o}线上版本为:${c}@latest`));const t=new Date(p&&p.time.modified||"").toLocaleString();e(t.toString())}await i()}export{a as diffPackage};
@@ -0,0 +1 @@
1
+ import{_p as o}from"a-node-tools";import{everyThreePlusBackslash as e}from"./everyThreePlusBackslash.mjs";import r,{terminalRegExp as s}from"color-pen";import{copyTextToClipboard as t}from"@qqi/copy-text";import{pen666 as m}from"../../pen.mjs";async function p(p){const{msg:n,list:i,type:a,copy:l}=p,c=r[a];o(),o(c.reversed(n),!1),o(l?m.reversed`已复制到剪切板 📋`:""),o(),o(`${c`npm install --save`} \\\n${e(i)}`),o(),l&&await t(`npm install --save ${i.join(" ")}`.replace(s,""))}export{p as installation};
@@ -0,0 +1 @@
1
+ import{boldPen as t,boldGreenPen as r}from"../../pen.mjs";function e(e){return`${t(e)}@${r`latest`}`}export{e as latestPen};
@@ -0,0 +1 @@
1
+ import{italicPen as r}from"../../pen.mjs";function n(n,o){return`${r(n)}@${r.random(o)}`}export{n as tagPen};
@@ -1 +1 @@
1
- import{getDirectoryBy as e,_p as t,readFileToJsonSync as n,pathJoin as o,runOtherCode as a}from"a-node-tools";import s from"color-pen";import{cursorMoveUp as l}from"./utils.mjs";async function c(c=!0){const i=e("package.json","file");if(null==i)return t("当前目录下不存在 package.json 文件");const p=n(o(i,"package.json"))?.dependencies||{};if(c&&t(s.green("初始化完成,等待下一步命令")),Object.keys(p).length>0){let e="npm install --save";for(let t=Object.keys(p),n=t.length,o=0;o<n;o++){e+=` ${t[o]}@latest `}await a(e)}c&&t(s.cyan("正在更新 dev 依赖")),await a("npm update --save"),c&&l("开发依赖更新完毕")}export{c as updateDependence};
1
+ import{greenPen as e,cyanPen as t}from"../pen.mjs";import{getDirectoryBy as n,_p as a,readFileToJsonSync as o,pathJoin as s,runOtherCode as i}from"a-node-tools";import{cursorMoveUp as l}from"./utils.mjs";async function p(p=!0){const c=n("package.json","file");if(null==c)return a("当前目录下不存在 package.json 文件");const m=o(s(c,"package.json"))?.dependencies||{};if(p&&a(e("初始化完成,等待下一步命令")),Object.keys(m).length>0){let e="npm install --save";for(let t=Object.keys(m),n=t.length,a=0;a<n;a++){e+=` ${t[a]}@latest `}await i(e)}p&&a(t("正在更新 dev 依赖")),await i("npm update --save"),p&&l("开发依赖更新完毕")}export{p as updateDependence};
package/src/pen.mjs ADDED
@@ -0,0 +1 @@
1
+ import e from"color-pen";const o=e.bold,r=o.green,l=e.italic,n=e.green,c=e.red,t=e.yellow,i=e.hex,p=e.cyan,a=i(10040081),d=i(3381657),g=i(6710886);export{r as boldGreenPen,o as boldPen,p as cyanPen,n as greenPen,i as hexPen,l as italicPen,a as orangePen,d as pen399,g as pen666,c as redPen,t as yellowPen};
@@ -0,0 +1 @@
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 +1 @@
1
- import{dog as o}from"../dog.mjs";import r from"color-pen";import{removeData as m}from"./removeData.mjs";import{_p as e,fileExist as t}from"a-node-tools";import{wheelRun as i}from"./wheelRun.mjs";import{removeFileOrDirectory as p}from"./removeFileOrDirectory.mjs";import{isUndefined as f}from"a-type-of-js";async function l(l){m.log||e(r.hex("#336")(`当前清理文件为 ${l}`));const s=t(l);m.log||e(r.hex("#666")(`正在检测 ${l} 文件/夹是否存在`)),o(`文件${l} 数据为 ${s}`),f(s)?m.log||e(r.yellow(`${l} 文件不存在`)):await i(p,[l,s])}export{l as beforeRemove};
1
+ import{dog as o}from"../dog.mjs";import{removeData as m}from"./removeData.mjs";import{_p as r,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"../pen.mjs";async function a(a){m.log||r(f("#336")(`当前清理文件为 ${a}`));const n=t(a);m.log||r(f("#666")(`正在检测 ${a} 文件/夹是否存在`)),o(`文件${a} 数据为 ${n}`),p(n)?m.log||r(s(`${a} 文件不存在`)):await e(i,[a,n])}export{a as beforeRemove};
@@ -1 +1 @@
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
+ 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 +1 @@
1
- import{removeData as r}from"./removeData.mjs";import e from"color-pen";import{_p as o,isWindows as s,runOtherCode as c}from"a-node-tools";import{removeResult as t}from"./removeResult.mjs";async function i(i,a){r.log||o(e.hex("#aaa")(` ${i} 文件/夹存在,准备删除`));let l={error:null};return s?a.isDirectory()?(l=await c({code:`rd /q /s ${i.replace(/\//,"\\")}`,printLog:!1}),t(i,l.success)):a.isFile()&&(l=await c({code:`del ${r.subdirectories?"/s":""} /q ${i.replace(/\//,"\\")}`,printLog:!1}),t(i,l.success)):(l=await c({code:`rm -rf ${i.replace(/\\/,"/")}`,printLog:!1}),t(i,l.success)),!!l.success||void 0!==console.log(l.error)}export{i as removeFileOrDirectory};
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 t}from"../pen.mjs";async function i(i,a){r.log||e(t("#aaa")(` ${i} 文件/夹存在,准备删除`));let m={error:null};return o?a.isDirectory()?(m=await s({code:`rd /q /s ${i.replace(/\//,"\\")}`,printLog:!1}),c(i,m.success)):a.isFile()&&(m=await s({code:`del ${r.subdirectories?"/s":""} /q ${i.replace(/\//,"\\")}`,printLog:!1}),c(i,m.success)):(m=await s({code:`rm -rf ${i.replace(/\\/,"/")}`,printLog:!1}),c(i,m.success)),!!m.success||void 0!==console.log(m.error)}export{i as removeFileOrDirectory};
@@ -1 +1 @@
1
- import{dog as o}from"../dog.mjs";import{_p as r}from"a-node-tools";import t from"color-pen";async function a(e,i,p=5){return!await Reflect.apply(e,void 0,i)&&p--?(r(t.green("执行失败,现在重试中")),o.warn(i,"执行失败,第",5-p,"次执行"),await a(e,i,p)):await Reflect.apply(e,void 0,i)}export{a as wheelRun};
1
+ import{greenPen as o}from"../pen.mjs";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/bin.js DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import './index.mjs';
4
-
package/index.mjs DELETED
@@ -1 +0,0 @@
1
- import{dog as r}from"./src/dog.mjs";import{command as a}from"./src/command.mjs";import{remove as t}from"./src/remove/index.mjs";import e from"./src/update/index.mjs";import{packageManage as i}from"./src/package/index.mjs";import{clearScreen as m}from"./src/clearScreen.mjs";import o from"./src/git/index.mjs";import{isUndefined as n}from"a-type-of-js";const c=a.args.$arrMap;0===a.args.$only.length&&(r("没有匹配到子命令,打印帮助信息并退出"),a.help(),a.end());try{await async function s(){0===c.length&&a.end();const p=c.shift();if(n(p))return await s();"remove"in p?(r("执行文件移除"),await t(p.remove)):"clearScreen"in p||"clear"in p?(r("执行清屏"),await m()):"git"in p?(r("执行 git 相关命令"),await o(p.git)):"package"in p?(r("执行 package 相关命令"),await i(p.package)):"update"in p&&(r("执行 update 相关命令"),await e(p.update)),await s()}()}catch(a){r.error("执行 run 报错",a)}