jja 2.3.1 → 2.3.3
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/LICENSE +13 -1
- package/package.json +10 -10
- package/src/clearScreen.mjs +1 -1
- package/src/command.mjs +1 -1
- package/src/dns/getIp.mjs +1 -1
- package/src/dns/getLocalIp.mjs +1 -1
- package/src/dns/printNotFound.mjs +1 -1
- package/src/dns/printResult.mjs +1 -1
- package/src/git/gitCommit.mjs +1 -1
- package/src/package/diff/dependencies.mjs +1 -1
- package/src/package/diff/diffVersion.mjs +1 -1
- package/src/package/diff/installation.mjs +1 -1
- package/src/package/diff/latestPen.mjs +1 -1
- package/src/package/diff/tagPen.mjs +1 -1
- package/src/package/updateDependence.mjs +1 -1
- package/src/pen.mjs +1 -1
- package/src/remove/beforeRemove.mjs +1 -1
- package/src/remove/removeFileOrDirectory.mjs +1 -1
- package/src/remove/wheelRun.mjs +1 -1
package/LICENSE
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
# MIT License
|
|
2
2
|
|
|
3
|
+
Copyright (c) <2025> <earthnut.dev>
|
|
4
|
+
|
|
3
5
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
4
6
|
purpose with or without fee is hereby granted, provided that the above
|
|
5
7
|
copyright notice and this permission notice appear in all copies.
|
|
@@ -11,3 +13,13 @@ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
|
11
13
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
12
14
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
13
15
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
16
|
+
|
|
17
|
+
# MIT 许可证
|
|
18
|
+
|
|
19
|
+
版权所有 (c) [2025] [花生亻]
|
|
20
|
+
|
|
21
|
+
特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人不受限制地处置该软件的权利,包括不受限制地使用、复制、修改、合并、发布、分发、再许可和/或出售该软件副本的权利,并允许向其提供该软件的人这样做,但须遵守以下条件:
|
|
22
|
+
|
|
23
|
+
上述版权声明和本许可声明应包含在所有副本或软件的重要部分中。
|
|
24
|
+
|
|
25
|
+
软件按“原样”提供,不附带任何形式的明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对因合同、侵权或其他方式引起的任何索赔、损害或其他责任负责,无论是在与软件或软件的使用或其他交易有关的任何诉讼中。
|
package/package.json
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jja",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.3.
|
|
4
|
+
"version": "2.3.3",
|
|
5
5
|
"description": "一些在终端的执行动作 🥜",
|
|
6
|
-
"license": "
|
|
6
|
+
"license": "MIT",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@
|
|
9
|
-
"@qqi/
|
|
10
|
-
"
|
|
11
|
-
"a-
|
|
12
|
-
"a-
|
|
13
|
-
"a-
|
|
14
|
-
"
|
|
8
|
+
"@color-pen/static": "^0.0.2",
|
|
9
|
+
"@qqi/copy-text": "^0.0.2",
|
|
10
|
+
"@qqi/dev-log": "^0.3.3",
|
|
11
|
+
"a-command": "^2.1.9",
|
|
12
|
+
"a-js-tools": "^0.6.2",
|
|
13
|
+
"a-node-tools": "^3.1.5",
|
|
14
|
+
"a-type-of-js": "^0.3.0",
|
|
15
|
+
"color-pen": "^2.0.3"
|
|
15
16
|
},
|
|
16
17
|
"author": {
|
|
17
18
|
"name": "🥜",
|
|
@@ -23,7 +24,6 @@
|
|
|
23
24
|
"bin.mjs"
|
|
24
25
|
],
|
|
25
26
|
"keywords": [
|
|
26
|
-
"ixxx",
|
|
27
27
|
"jja"
|
|
28
28
|
],
|
|
29
29
|
"repository": {
|
package/src/clearScreen.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isTTY as o,runOtherCode as
|
|
1
|
+
import{isTTY as o,runOtherCode as t,isWindows as r,cursorMoveUp as a,cursorAfterClear as c,_p as i}from"a-node-tools";import{dog as n}from"./dog.mjs";import{csi as p}from"@color-pen/static";async function m(){o()?(n("执行第一遍清理"),await t({code:r?"cls":"clear",printLog:!1}),n("执行第二遍清理"),await t({code:r?"cls":`printf '${["2J","3J","H"].map((o=>p.concat(o))).join()}'`,printLog:!1}),a(1/0),c(!0)):(n.warn("当前系统不支持 TTY"),i("当前环境不支持 "))}export{m as clearScreen};
|
package/src/command.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Command as e}from"a-command";import r
|
|
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/getIp.mjs
CHANGED
|
@@ -1 +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,
|
|
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
CHANGED
|
@@ -1 +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
|
|
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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{typewrite as o}from"a-node-tools";import{dataStore as t}from"./data-store.mjs";import{
|
|
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
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{typewrite as o,_p as t}from"a-node-tools";import r from"color-pen";import{dataStore as
|
|
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/git/gitCommit.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{command as o}from"../command.mjs";import{getDirectoryBy as t,_p as r,runOtherCode as e}from"a-node-tools";import i
|
|
1
|
+
import{command as o}from"../command.mjs";import{getDirectoryBy as t,_p as r,runOtherCode as e}from"a-node-tools";import{hexPen as i}from"color-pen";import{tagCommit as c}from"./tagCommit.mjs";async function n(n="版本维护",s=!1){const a=t(".git","directory");if(null==a)return r(i("#ff0")("not a git repository(当前目录非 git 储存库)"));const m=await e({code:"git add .",cwd:a});if(!m.success)return null!=console.log(m.error);const l=await e({code:"git status",cwd:a});if(!/nothing to commit, working tree clean/.test(l.data||"")){const t=await e({code:"git add .",cwd:a});if(!t.success)return null!=console.log(t.error);""==n.trim()&&(n=await o.question({text:"请输入提交信息",private:!0}));const r=await e({code:`git commit -m "${n}"`,cwd:a});return r.success?(r.error&&console.log(r.error),await e({code:"git push",cwd:a}),s&&await c(n),!0):null!=console.log(r.error)}return!1}export{n as gitCommit};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{pen666 as e
|
|
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,italicPen as 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 n(),0===f.length&&0===h.length&&0===j.length)return void t(e`看起来似乎没有依赖版本差异`);if(0===f.length&&0===h.length)return void t(i`看起来网络不太好讷,所有的包线上版本的请求都出错了。或者是还没有执行 npm install 呐`);t(o.brightGreen`\n版本差异的依赖为:\n`),t([...h,...f].map((e=>{const t=b[e],n=o.random`- `.concat(`${"dependencies"===t.type?o.bold(e):o.italic(e)}:于${o.color("#066")(t.time)} 发布 ${t.latestVersion||r(t.onlineVersion)}`);return a(n)})).join("\n")),t(o.brightRed(`\n目前仅关注版本号是否为最新 ${o.brightMagenta("latest")}`)),t("使用 npm install --save 命令安装更新\n"),j.length>0&&(c(i`有一些包没有返回结果,请注意:`),c(j.map((e=>`${o.random`-`} ${e}`)).join("\n")));const $=[...h.filter((e=>!1===f.includes(e))).map((e=>o.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{
|
|
1
|
+
import{pen399 as e}from"../../pen.mjs";import{cursorMoveUp as n,cursorLineClear as o,cursorAfterClear as t}from"a-node-tools";import{getInstallVersion as s}from"./getInstallVersion.mjs";import{getLatestVersion as i}from"./getLatestVersion.mjs";import{diffData as r}from"./data-store.mjs";import{printInOneLine as l}from"../../printInOneLine.mjs";import{greenPen as p}from"color-pen";async function m(){const{dependenceList:m,timeoutDependence:a}=r,c=Object.keys(m);let f=!1;for(let V=0,$=c.length;V<$;V++){const $=c[V],u=m[$],d=m[$].version;await i($);const j=s($);if(f&&(n(),o(),t(!0)),""===u.onlineVersion&&""===u.latestVersion){a.push($),l(`${$} 本地 ${u.localVersion} 请求 ❌`),f=!1;continue}if(j===u.onlineVersion){let e=`${$} 的本地${d} 安装版本为 ${j} 最新是 ${u.onlineVersion} `;if(""===u.latestVersion){l(e),f=!0;continue}f=!1,r.preReleaseDependence.push($),e+=`;最新预发布版本为 ${p(u.latestVersion)}`,l(e);continue}if(f=!1,j===u.latestVersion)continue;let h=`${$} 的本地 ${p(d)} 安装版本为 ${p(j)} 最新是 ${e(u.onlineVersion)} `;r.latestDependence.push($),""!==u.latestVersion?(r.preReleaseDependence.push($),h+=`;最新预发布版本为 ${p(u.latestVersion)}`,l(h)):l(h)}!0===f&&(n(),o(),t(!0),f=!1)}export{m as diffVersion};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_p as o}from"a-node-tools";import{everyThreePlusBackslash as
|
|
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 +1 @@
|
|
|
1
|
-
import{boldPen as
|
|
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 +1 @@
|
|
|
1
|
-
import{italicPen as
|
|
1
|
+
import{italicPen as o}from"color-pen";function r(r,n){return`${o(r)}@${o.random(n)}`}export{r as tagPen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
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/pen.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{dog as o}from"../dog.mjs";import{removeData as
|
|
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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{removeData as r}from"./removeData.mjs";import{_p as
|
|
1
|
+
import{removeData as r}from"./removeData.mjs";import{_p as o,isWindows as e,runOtherCode as s}from"a-node-tools";import{removeResult as c}from"./removeResult.mjs";import{hexPen as t}from"color-pen";async function i(i,a){r.log||o(t("#aaa")(` ${i} 文件/夹存在,准备删除`));let l={error:null};return e?a.isDirectory()?(l=await s({code:`rd /q /s ${i.replace(/\//,"\\")}`,printLog:!1}),c(i,l.success)):a.isFile()&&(l=await s({code:`del ${r.subdirectories?"/s":""} /q ${i.replace(/\//,"\\")}`,printLog:!1}),c(i,l.success)):(l=await s({code:`rm -rf ${i.replace(/\\/,"/")}`,printLog:!1}),c(i,l.success)),!!l.success||void 0!==console.log(l.error)}export{i as removeFileOrDirectory};
|
package/src/remove/wheelRun.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{greenPen as o}from"
|
|
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};
|