pjj 1.0.5 → 1.0.6
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/CHANGELOG.md +95 -0
- package/LICENSE +1 -10
- package/README.md +4 -2
- package/bin.js +1 -1
- package/package.json +16 -5
- package/THIRD-PARTY-LICENSES.txt +0 -198
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# 版本日志
|
|
2
|
+
|
|
3
|
+
## 1.0.6 (2026-6-26)
|
|
4
|
+
|
|
5
|
+
- 维护依赖及注释
|
|
6
|
+
|
|
7
|
+
## 1.0.5 (2026-1-14)
|
|
8
|
+
|
|
9
|
+
- 么事
|
|
10
|
+
|
|
11
|
+
## v1.0.4 (2025-7-30)
|
|
12
|
+
|
|
13
|
+
- 么事
|
|
14
|
+
|
|
15
|
+
## v1.0.4-test.0 (2025-7-24)
|
|
16
|
+
|
|
17
|
+
- 么事
|
|
18
|
+
|
|
19
|
+
## v1.0.3 (2025-7-19)
|
|
20
|
+
|
|
21
|
+
- 么事
|
|
22
|
+
|
|
23
|
+
## v1.0.2 (2025-6-21)
|
|
24
|
+
|
|
25
|
+
- 么事
|
|
26
|
+
|
|
27
|
+
## v1.0.1 (2025-6-10)
|
|
28
|
+
|
|
29
|
+
- 么事
|
|
30
|
+
|
|
31
|
+
## v1.0.0 (5 🈷️ 25 日 2025 年)
|
|
32
|
+
|
|
33
|
+
- 就是闲的
|
|
34
|
+
|
|
35
|
+
## v0.2.8 (5 🈷️ 24 日 2025 年)
|
|
36
|
+
|
|
37
|
+
- 更新依赖(减少 [color-pen](https://www.npmjs.com/package/color-pen) 更新 `truncateStringWithChar` 函数逻辑差异导致的渲染错误 )
|
|
38
|
+
- 优化了渲染逻辑
|
|
39
|
+
|
|
40
|
+
## v0.2.7 (5 🈷️ 24 日 2025 年)
|
|
41
|
+
|
|
42
|
+
- 更新依赖
|
|
43
|
+
|
|
44
|
+
## v0.2.6 (5 🈷️ 11 日 2025 年)
|
|
45
|
+
|
|
46
|
+
- 更新依赖
|
|
47
|
+
|
|
48
|
+
## v0.2.5 (5 🈷️ 9 日 2025 年)
|
|
49
|
+
|
|
50
|
+
- 更新依赖
|
|
51
|
+
|
|
52
|
+
## v0.2.4 (5 🈷️ 3 日 2025 年)
|
|
53
|
+
|
|
54
|
+
- 浑浑噩噩的生活,fuck
|
|
55
|
+
|
|
56
|
+
## v0.2.3 (4 🈷️ 28 日 2025 年)
|
|
57
|
+
|
|
58
|
+
- 修复已知 bug 🐛
|
|
59
|
+
|
|
60
|
+
## v0.2.2 (4 🈷️ 28 日 2025 年)
|
|
61
|
+
|
|
62
|
+
- 优化代码逻辑
|
|
63
|
+
|
|
64
|
+
## v0.2.1 (4 🈷️ 27 日 2025 年)
|
|
65
|
+
|
|
66
|
+
- 由于上一版本在输出字符的长度在整理后不足终端显示的宽度,需追加一个空字符串,使用的 `concat` 但是并么有将返回值重新赋值给原字符串,导致判断也判断了,追加也追加了,就是没用上
|
|
67
|
+
|
|
68
|
+
## v0.2.0 (4 🈷️ 25 日 2025 年)
|
|
69
|
+
|
|
70
|
+
- 没有逻辑上的更改
|
|
71
|
+
- 更改了使用 `message` 或是 `-m` 时传入的字符串可以被更有好的展示在终端之中
|
|
72
|
+
|
|
73
|
+
## 0.1.4 (3 月 29 2025 年)
|
|
74
|
+
|
|
75
|
+
- 更新依赖
|
|
76
|
+
|
|
77
|
+
## 0.1.3 (3 月 29 2025 年)
|
|
78
|
+
|
|
79
|
+
- 改名为 `pjj` ,主打一个让自己开心
|
|
80
|
+
|
|
81
|
+
## 0.1.2 (3 月 28 2025 年)
|
|
82
|
+
|
|
83
|
+
- 添加使用说明
|
|
84
|
+
|
|
85
|
+
## 0.1.1 (3 月 28 2025 年)
|
|
86
|
+
|
|
87
|
+
- 修补 bug
|
|
88
|
+
|
|
89
|
+
## 0.1.0 (3 月 28 2025 年)
|
|
90
|
+
|
|
91
|
+
- 完善功能
|
|
92
|
+
|
|
93
|
+
## 0.0.0 (3 月 26 2025 年)
|
|
94
|
+
|
|
95
|
+
- 占名
|
package/LICENSE
CHANGED
|
@@ -13,13 +13,4 @@ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
|
13
13
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
14
14
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
15
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
|
-
软件按“原样”提供,不附带任何形式的明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对因合同、侵权或其他方式引起的任何索赔、损害或其他责任负责,无论是在与软件或软件的使用或其他交易有关的任何诉讼中。
|
|
16
|
+
|
package/README.md
CHANGED
package/bin.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{arch as e}from"node:os";import{dirname as n,normalize as t,join as r,resolve as o}from"node:path";import{fileURLToPath as i}from"node:url";import{statSync as s,readFileSync as a}from"node:fs";import"node:fs/promises";function c(e){return e.prototype.apply=Function.apply,e.prototype.bind=Function.bind,e.prototype.call=Function.call,e.prototype.length=Function.length,e.prototype.name=Function.name,e.prototype.toString=Function.toString,e}function l(e,n){return Object.keys(n).forEach(t=>e[t]=n[t]),e}function u(e){const n=typeof e;if("object"!==n&&"function"!==n)return n;const t=Reflect.apply(Object.prototype.toString,e,[]).replace(/^.*\s(.*)]$/,"$1").toLowerCase();return"error"!==t?t:e instanceof SyntaxError?"syntaxerror":e instanceof TypeError?"typeerror":e instanceof URIError?"urierror":e instanceof ReferenceError?"referenceerror":e instanceof AggregateError?"aggregateerror":e instanceof RangeError?"rangeerror":e instanceof EvalError?"evalerror":"error"}function f(e){return"string"===u(e)}function h(e){return f(e)&&""===e.valueOf().trim()}function b(e){return"number"===u(e)}function g(e){return Number.isNaN(e)}function p(e){return 0===e}function d(e){return"boolean"===u(e)}function m(e){return!0===e}function w(e){return!1===e}function $(e){return null===e}function y(e){return void 0===e}function v(e){return Array.isArray(e)}function x(e){if(v(e))return 0===e.length;throw new TypeError("参数必须为数组")}function E(e){return"object"===u(e)}function j(e){return E(e)&&0===Reflect.ownKeys(e).length}function I(e,n){return void 0===n||("function"==typeof n?n(e):n)}function B(e=1,n=0){if(!isFinite(e)||!isFinite(n)||g(e)||g(n)||!b(e)||!b(n))throw new TypeError("getRandomInt: max or min is NaN or is not a number");let t=Math.ceil(Number(n)),r=Math.floor(Number(e));return r===t?r:(t>r&&([r,t]=[t,r]),Math.round(Math.random()*(r-t)+t))}function S(e){if(!E(e)&&!b(e)||b(e)&&g(e)||b(e)&&!isFinite(e)||b(e)&&!Number.isInteger(e)||b(e)&&Number.isInteger(e)&&e<1||b(e)&&e<1||E(e)&&(!b(e.length)||e.length<1||!Number.isInteger(e.length)))throw new TypeError("参数类型错误 ❌ (getRandomString)");const n={length:32,chars:"abcdefghijklmnopqrstuvwxyz",chars2:"0123456789",chars3:"!@#$%^&*()_+~`|}{[]:;?><,./-=",type:"string",includeUppercaseLetters:!1,includeNumbers:!1,includeSpecial:!1};if("uuid"===n.type)return crypto.randomUUID();b(e)&&Number.isInteger(e)&&e>0&&l(n,{length:e}),E(e)&&(l(n,e),n.length=n.length<1?32:n.length);const t=n.chars.split("");n.includeUppercaseLetters&&s(t,n.chars.toUpperCase()),n.includeNumbers&&s(t,n.chars2),n.includeSpecial&&s(t,n.chars3);let r="";const o=t.join(""),i=o.length;if(globalThis&&globalThis.crypto&&globalThis.crypto.getRandomValues){globalThis.crypto.getRandomValues(new Uint8Array(n.length)).forEach(e=>r+=o[e%i])}else for(let e=0;e<n.length;e++)r+=o[B(i-1)];function s(e,n){const t=e.length,r=n.length,o=Math.max(t,r);for(let i=0;i<o;i++)i<t&&!y(n[i])?e[i]+=n[i]:i<r&&(e[i]=n[i])}if(!/[a-zA-Z]/.test(r))return String.fromCharCode(B(97,122)).concat(r.slice(1));for(;!/^[a-zA-Z]$/.test(r[0]);)r=r.slice(1)+r[0];return r}function O(){return!y(globalThis&&globalThis.process&&globalThis.process.versions&&globalThis.process.versions.node||void 0)}const N=[!1,!0,"all","info","error","warn"];function R(e){return!!N.includes(e)&&e}function W(...e){}function k(){this.error=this.info=this.warn=W}const T=O()?"node":"browser",C="[";function M(){return new RegExp(`(\\x1b\\[(${["([1-4]?[0-9])(;([1-4]?[0-9]+))*m","[m]","\\?(25|7)[hl]","\\d*;?\\d*[HFr]","6n","\\d{0,4}[A-DTS]","[0-3]?[JKg]","[0-6]?W"].map(e=>`(${e})`).join("|")}))`.concat("|(\\x1b[78DMc])"),"g")}const _=`${C}0m`;function A(e,n=!0){if(m(n)){if(!f(e))throw new TypeError("`color` must be a string or number but not number[] when isHex is true");if(e.startsWith("0x"))e=e.replace(/0x/,"#");else if(!e.startsWith("#"))throw new TypeError("`color` must be a string or number but not number[] when isHex is true")}else{if(!w(n))throw new TypeError("The second variable `isHex` must be boolean");if(v(e)){if(e.some(e=>!isFinite(e))||3!==e.length)throw new TypeError("If the `color` is an array, it must be 3 in length and be of numeric type");e=`rgb(${e.join(",")})`}else{if(b(e))throw new TypeError("If the `color` is not number when isHex is false");if(f(e)){if(!e.startsWith("rgb(")||!e.endsWith(")"))throw new TypeError("If the `color` is a string, it must be rgb(r, g, b)");{const n=e.replace(/.*\((.*)\).*/,"$1").split(",");if(3!==n.length||n.some(e=>!isFinite(Number(e))||Number(e)<0||Number(e)>255))throw new TypeError("If the `color` is a string, it must be rgb(r, g, b)")}}}}let t=0,r=0,o=0;if(e.startsWith("#"))if(6==(e=e.slice(1)).length)t=F(parseInt(e.slice(0,2),16)),r=F(parseInt(e.slice(2,4),16)),o=F(parseInt(e.slice(4,6),16));else{if(3!=e.length)return B(255);t=F(parseInt(e.slice(0,1).repeat(2),16)),r=F(parseInt(e.slice(1,2).repeat(2),16)),o=F(parseInt(e.slice(2,3).repeat(2),16))}else if(e.startsWith("rgb")){const n=e.replace(/.*\((.*)\).*/,"$1").split(",");t=F(Number(n[0])),r=F(Number(n[1])),o=F(Number(n[2]))}return 16+36*t+6*r+o}function F(e){const n=isFinite(e)?Math.floor(6*e/256):B(6);return Math.min(5,Math.max(0,n))}function D(e,n,t,r=!0){const o=r?"38":"48";if(b(e)&&b(n)&&b(t))return`${o};5;${A([e,n,t],!1)}`;if(f(e)&&y(n)&&y(t)){if(e.startsWith("rgb"))return`${o};5;${A(e,!1)}`;if(e.startsWith("#")||e.startsWith("0x"))return`${o};5;${A(e,!0)}`;H()}else{if(b(e)&&y(n)&&y(t))return`${o};5;${A(e,!0)}`;H()}}function H(){throw new TypeError(' 使用 color() 或 bgColor() 时,可使用三整数 `r , g , b` 或单字符串 `"rgb(r , g, b)"` 或十六进制数值 `0xrgb`、`0xrrggbb` 或十六进制字符串表达 `"#rgb"`、`"#rrggbb"` ,不接受其他格式的参数')}function L(e,n,t,r=!0){try{return D(e,n,t,r)}catch(e){throw console.error(e),new TypeError('使用 rgb() 或 bgRgb() 时,参数可以为单字符串 `"rgb(r, g, b)"` 或三个数值 `r , g ,b`。不接受其他格式')}}function U(e,n=!0){try{return D(e,void 0,void 0,n)}catch(e){throw console.error(e),new TypeError('使用 hex() 或 bgHex() 时,参数可以为单字符串 `"0xnnnnnn"`、`"#rgb"` 、`"#rrggbb"` 或一个数值 `0xrrggbb`。不接受其他格式')}}function V(e,n=!1){return e<0&&(e=0),e>255&&(e=255),e=isFinite(e)?Math.round(e):B(255),`${[48,38][Number(n)]};5;${e}`}const z={black:"38;5;0",red:"38;5;1",green:"38;5;2",yellow:"38;5;3",blue:"38;5;4",magenta:"38;5;5",cyan:"38;5;6",white:"38;5;7",brightBlack:"38;5;8",brightRed:"38;5;9",brightGreen:"38;5;10",brightYellow:"38;5;11",brightBlue:"38;5;12",brightMagenta:"38;5;13",brightCyan:"38;5;14",brightWhite:"38;5;15",bgBlack:"48;5;0",bgRed:"48;5;1",bgGreen:"48;5;2",bgYellow:"48;5;3",bgBlue:"48;5;4",bgMagenta:"48;5;5",bgCyan:"48;5;6",bgWhite:"48;5;7",bgBrightBlack:"48;5;8",bgBrightRed:"48;5;9",bgBrightGreen:"48;5;10",bgBrightYellow:"48;5;11",bgBrightBlue:"48;5;12",bgBrightMagenta:"48;5;13",bgBrightCyan:"48;5;14",bgBrightWhite:"48;5;15",bold:"1",dim:"2",italic:"3",underline:"4",blink:"5",reversed:"7",hide:"8",random:"random",bgRandom:"bgRandom",rgb:(e,n,t)=>L(e,n,t),hex:e=>U(e),color:(e,n,t)=>D(e,n,t),number:e=>V(e,!0),bgRgb:(e,n,t)=>L(e,n,t,!1),bgHex:e=>U(e,!1),bgColor:(e,n,t)=>D(e,n,t,!1),bgNumber:e=>V(e)};Object.freeze(z);const G=["#000000","#c23621","#25bc24","#adad29","#492ee1","#dd38dd","#33bbc8","#cbcccd","#818383","#fc391f","#31e722","#eaec23","#5833ff","#f93578","#14f0f0","#ebeded"];function K(e){let n=Number(e);if(!isFinite(n))throw new TypeError("色值反向解析出错");if(n<16){return G[n]}const t=e=>Math.floor(256*e/6+B(42)).toString(16).padStart(2,"0");n-=16;const r=n%36;return`#${t(Math.floor(n/36))}${t(Math.floor(r/6))}${t(r%6)}`}class P{constructor(e){this.parse(e),this.build()}build(){this.hide&&(this.color="transparent"),this.reversed&&([this.color,this.bgColor]=[this.bgColor,this.color]),y(this.color)||(this.str+=`color: ${this.color};`),y(this.bgColor)||(this.str+=`background: ${this.bgColor};`),0!==this.bold&&(this.str+=`font-weight: ${1===this.bold?800:200};`),this.italic&&(this.str+="font-style: italic;"),this.underline&&(this.str+="border-bottom: 1px #666 solid;")}color=void 0;bgColor=void 0;bold=0;italic=!1;underline=!1;reversed=!1;hide=!1;str="";parse(e){e.replace(/38;5;(\d+)/g,"c-$1").replace(/48;5;(\d+)/g,"b-$1").split(";").reverse().forEach(e=>{0===this.bold&&e===z.bold?this.bold=1:0===this.bold&&e===z.dim?this.bold=-1:e===z.italic?this.italic=!0:e===z.underline?this.underline=!0:e===z.reversed?this.reversed=!0:e===z.hide?this.hide=!0:y(this.color)&&e.startsWith("c")?this.color=K(e.split("-")[1]):y(this.bgColor)&&e.startsWith("b")&&(this.bgColor=K(e.split("-")[1]))})}}function J(e){return O()?[e]:function(e){e=e.replace(new RegExp("\\\\[0m","g"),"[m");const n=M(),t=[""];let r,o=0,i="";const s=()=>{const n=e.substring(o,r?.index??e.length);t[0]+="%c".concat(n),t.push(i)};for(;!$(r=n.exec(e));)s(),i=y(r[7])?new P(r[3].slice(0,-1)).str:"",o=n.lastIndex;return s(),t}(e)}function Y(e,n){if(function(e){return f(e)&&""===e.valueOf()}(e=$(e)||y(e)?"":e.toString()))return"";if(x(n))return e;const t=e.indexOf(C),r=e.indexOf(`${C}0m`);return n=function(e){return e.map(e=>"random"===e?`38;5;${B(255)}`:"bgRandom"===e?`48;5;${B(255)}`:e)}(n),t>-1&&r>-1?Y(e.substring(0,t),n).concat(e.substring(t,r+4)).concat(Y(e.substring(r+4),n)):e.endsWith("\r\n")?(e=e.substring(0,e.length-2),`${C}${n.join(";")}m${e}${C}0m\r\n`):e.endsWith("\n")?(e=e.substring(0,e.length-1),`${C}${n.join(";")}m${e}${C}0m\n`):`${C}${n.join(";")}m${e}${C}0m`}function Z(e,n){const t=parseInt(n);if(t>10){const r=m(38===t)?"38;5;":"48;5;",o=e.findIndex(e=>e.startsWith(r));return o>-1?e.toSpliced(o,1,n):[...e,n]}return e.includes(n)?[...e]:[...e,n]}const q=c(function(e=[]){const n=(n,...t)=>{if(I(n,()=>v(n)&&n.every(e=>f(e)))){let r="";for(let o=0;o<n.length;o++)r+=Y(n[o],e),o<t.length&&(r+=Y(t[o],e));return r}if(x(t))return Y(n,e);throw new Error("pen: 缺少参数")},t=Object.keys(z).map(n=>[n,{get:()=>function(e,n){let t=[];if(I(e,f(z[e])))return t=Z(n,z[e]),new q(t);if("hex"===e||"bgHex"===e)return r=>(t=Z(n,z[e](r)),new q(t));if("rgb"===e||"bgRgb"===e)return(r,o,i)=>{if(f(r)&&y(o)&&y(i))t=Z(n,z[e](r));else{if(!(b(r)&&b(o)&&b(i)))throw new Error(`${e} 的参数类型不正确,请使用 'rgb' 或 'hex' 函数`);t=Z(n,z[e](r,o,i))}return new q(t)};if("color"===e||"bgColor"===e)return(r,o,i)=>{if(f(r)&&y(o)&&y(i))t=Z(n,z[e](r));else{if(!(b(r)&&b(o)&&b(i)))throw new Error(`${e} 的参数类型不正确,请使用 'rgb' 或 'hex' 函数`);t=Z(n,z[e](r,o,i))}return new q(t)};if("number"===e||"bgNumber"===e)return r=>{if(b(r))return t=Z(n,z[e](r)),new q(t);throw new TypeError(`${e} 的参数应为有效正整数数值,范围 0 - 255`)};throw new Error(`${e} 函数不存在`)}(n,e)}]),r=Object.fromEntries(t);return Object.defineProperties(n,r),n});const Q=new q([]);new q([z.red]);const X=new q([z.green]),ee=new q([z.yellow]);new q([z.blue]);const ne=new q([z.magenta]),te=new q([z.cyan]);new q([z.white]),new q([z.brightBlack]);const re=new q([z.brightRed]);new q([z.brightGreen]),new q([z.brightYellow]),new q([z.brightBlue]),new q([z.brightMagenta]),new q([z.brightCyan]),new q([z.brightWhite]);const oe=new q([z.bgBlack]);new q([z.bgRed]),new q([z.bgGreen]),new q([z.bgYellow]),new q([z.bgBlue]),new q([z.bgMagenta]),new q([z.bgCyan]),new q([z.bgWhite]),new q([z.bgBrightBlack]),new q([z.bgBrightRed]),new q([z.bgBrightGreen]),new q([z.bgBrightYellow]),new q([z.bgBrightBlue]),new q([z.bgBrightMagenta]),new q([z.bgBrightCyan]),new q([z.bgBrightWhite]),new q([z.bold]),new q([z.italic]),new q([z.underline]),new q([z.hide]),new q([z.dim]),new q([z.blink]),new q([z.reversed]),Q.rgb,Q.hex,Q.color,Q.bgRgb,Q.bgHex,Q.bgColor;const ie=Q.random;function se(e){const n=M(),t=e.replace(n,"");let r=0;for(let e=0,n=t.length;e<n;e++)r+=1+Number(ae(t[e]));return r}function ae(e){const n=e.codePointAt(0)||0;return n>=19968&&n<=40959||n>=13312&&n<=19903||n>=131072&&n<=191471||n>=63744&&n<=64255||n>=65280&&n<=65519||n>=65381&&n<=65439||n>=127744&&n<=129750||n>=128512&&n<=128591||n>=128640&&n<=128767||n>=9728&&n<=9983||n>=9984&&n<=10175||n>=44032&&n<=55215||n>=12288&&n<=12351}function ce(e,n,t=!0){const r=n,o=e;if(0===r)return"";let i=!1;const s=se(o);if(s<=r)return o.concat(" ".repeat(r-s));const a=r>0,c=M();c.lastIndex=0;const l=[...o.replaceAll(c,"")],u=a?l:l.reverse(),f=u.length,h=Math.abs(r);let b=Math.floor(h/2),g=u.slice(0,b).join(""),p=se(g);for(;b<f;){if(p+=se(u[b]),p===h){g+=u[b];break}if(p===h+1){t&&(i=!0);break}if(p>h+1)break;g+=u[b],b++}if(a&&o.startsWith(g)||!a&&o.endsWith(g=[...g].reverse().join("")))return i?g+" ":g;if(a){let e;for(c.lastIndex=0;null!==(e=c.exec(o));){const n=g;if(g=n.slice(0,e.index).concat(e[0]).concat(n.slice(e.index)),o.startsWith(g))break}g+=_}else{const e=[...g];let n=e.length-1;g="";const t=[...o].reverse();for(let r=0,o=t.length;r<o;r++){const o=t[r];if(o===e[n])--n;else if(n<0)break;g=o+g}g=_+g}return i?g+" ":g}function le(e){try{throw new Error}catch(n){const t=(n.stack?.split("\n")||[]).map(e=>{const n=/at\s(.*)\s\((.*):(\d*):(\d*)\)/.exec(e);return n?{name:n[1],path:n[2],line:n[3],column:n[4]}:{name:""}}),r=t.filter(e=>""!==e.name&&void 0!==e.path),o=r[3]??r[2]??r[1]??r[0],i=` ${"info"===e?"💡":"error"===e?"❌":"⚠️ "} ${(new Date).toLocaleString()} `,s=("info"===e?Q.bgCyan.brightWhite:"error"===e?Q.bgBlack.red:Q.bgBrightYellow.brightGreen)(i);console.log(`${s} ${o?.name??""} ${o?.line?.concat(" 行")} ${o?.column?.concat(" 列")}`)}}function ue(...e){le("error"),console.error(...e)}function fe(...e){le("warn"),console.warn(...e)}function he(...e){le("info"),console.info(...e)}function be(e,n,t){if("node"===T){const r=globalThis?.process.env[t.toUpperCase().concat("_DEV")]||globalThis?.process.env[t.toLowerCase().concat("_dev")];if(!1===e||y(r)||"false"===r)return Reflect.apply(k,n,[]);[...N,"true","false"].includes(r)&&(e="true"===r?"all":r),n.info=["all","info",!0].includes(e)?he:W,n.error=["all","error",!0].includes(e)?ue:W,n.warn=["all","warn",!0].includes(e)?fe:W}else{if(!1===e)return Reflect.apply(k,n,[]);n.info=["all","info",!0].includes(e)?he:W,n.error=["all","error",!0].includes(e)?ue:W,n.warn=["all","warn",!0].includes(e)?fe:W}}function ge(e){y(e)&&(e={name:S(10),type:!1}),d(e)&&(e={name:S(10),type:e}),f(e)&&(e={name:e,type:!1});let{name:n="",type:t=!1}=e;n=n.trim().replace(/\s+/g,"_");const r="node"===T&&(globalThis?.process.env[n.toUpperCase().concat("_DEV")]??globalThis?.process.env[n.toLowerCase().concat("_dev")])||!1;t="node"!==T||R(("false"!==r&&("true"===r||r))??t);const o={error:W,warn:W,info:W};be(t,o,n);const i=(...e)=>{Reflect.apply(o.info,this,e)};return Object.setPrototypeOf(i,this),Object.defineProperties(this,{type:{get:()=>t||!1,set(e){const r=R(e);r!==t&&(t=r,be(t,o,n))}},error:{value:(...e)=>Reflect.apply(o.error,this,e),configurable:!1,enumerable:!1,writable:!1},warn:{value:(...e)=>Reflect.apply(o.warn,this,e),configurable:!1,enumerable:!1,writable:!1}}),i}Q.bgRandom,Q.number,Q.bgNumber,ge.prototype.clear=()=>{"browser"===T?console.clear():console.log("".concat("c"))};const pe=c(ge),de=new pe({name:"pjj",type:"error"}),me=O()&&"win32"===process.platform||!O()&&window.navigator.userAgent.includes("Windows"),we=new pe({type:"error",name:"a node tools"});function $e(...e){return t(r(...e))}function ye(e){return s(e,{throwIfNoEntry:!1})}function ve(e,t="file",...r){r=r.filter(e=>f(e));let i=o(...r);const s=ye(i);if(we("当前工作目录",i),!s)return we("🎯 工作目录不存在"),"";if(s.isFile())i=n(i);else if(!s.isDirectory())return;let a=20;const c=()=>{const n=ye($e(i,e));if(n&&("file"==t&&n.isFile()||"directory"==t&&n.isDirectory()))return i;if(p(a))return;a--,we("♻️ 查找中...",i);const r=$e(i,"..");return r!==i?(i=r,c()):void 0};return c()}function xe(e){const n=new RegExp(e);let t;try{throw new Error}catch(e){t=e}const r=(t.stack?.replace(/\\/gm,"/").split("\n")).reverse(),o=r.findIndex((e,t,r)=>!n.test(e)&&n.test(r[t+1]));if(-1==o)return{name:"",line:0,row:0,originArr:r};let i=r[o];return/\(.*\)/.test(i)&&(i=i.replace(/^.*\((.*)\).*/,"$1")),/file:\/*/.test(i)&&(i=i.replace(/^.*file:\/*(.*)/,"$1")),me||i.startsWith("/")||(i="/"+i),{name:i.replace(/^(.*):\d+:\d+$/,"$1"),line:Number(i.replace(/^.*:(\d+):\d+$/,"$")),row:Number(i.replace(/^.*:\d+:(\d+)$/,"$1")),originArr:r}}function Ee(){let e;try{new Function('import("")'),e=i(import.meta.url)}catch(n){we.error(n),e=__filename}me&&(e=e.replace(/\\/gm,"/")),e=xe(e).name;return[e,n(e)]}function je(e="",n=!0){let t="";const r=u(e);if(!d(n))throw we.error(""),new TypeError("lineFeed 的类型必须是 boolean ");if("bigint"===r){const r=e.toString().concat("n");t=n?`${r}\n`:`${r}`}else if(["string","number","boolean","function","null"].includes(r))t=n?`${e}\n`:`${e}`;else{const r=JSON.stringify(e,(e,n)=>function(e){return"function"===u(e)}(n)?`${n}`:null==n?"undefined":n,2);t=n?`${r}\n`:`${r}`}O()?process.stdout.write(t):console.log(...J(t.replace(/\n$/,"")))}const Ie=process.argv.slice(2);Object.freeze(Ie);class Be{originalArg=Ie.slice();name="";__filename="";get state(){return this._state}set state(e){this._state=[void 0,{code:1,text:"start"},{code:2,text:"bind over"},{code:3,text:"run over"},{code:4,text:"over",overCode:e}][b(e)?e:4]}_state={code:1,text:"start"};args=new Se;abbr={};helpInfo="";hasShowVersion=!1;originalBind={};values=[]}class Se extends Array{get $nomatch(){return[]}get $map(){return{}}get $arrMap(){return[]}get $only(){return[]}get $original(){return[]}get $isVoid(){return!1}}const Oe={},Ne=new pe({name:"a command"});function Re(e){return[e.replace(/^(.*?)\s.*/gm,"$1")||"",/<.+>/.test(e)&&e.replace(/.*<(.+)>.*/,"$1")||"",e.replace(/.*?\((.*)\).*?/,"$1")||""]}function We(e,n){switch(n.state.code){case 3:return void Ne.warn("执行绑定","但是已经执行过 `run`");case 4:return void Ne.warn("执行绑定,但是 command 已完成全部应做动作");default:n.state=2}if(f(e)){const[t,r,o]=Re(e);return We({name:t,abbr:r,info:o},n)}if(v(e))return e.forEach(e=>We(e,n));if(!y(e)&&!e.name&&!e.info)return function(e,n){const t={name:"",info:"",abbr:"",options:[]},r=Object.keys(e),o=Object.keys(t);return r.forEach(t=>{if(!o.includes(t)){const[r,o,i]=Re(t);return We({name:r,info:i,abbr:o,options:e[t]},n)}})}(e,n);const t=e;t.abbr&&(n.abbr[t.abbr]=t.name),t.options?t.options=function(e,n,t){v(e)||(e=[e]);const r={};return e.forEach(e=>{let o={name:"",abbr:"",info:""};f(e)?[o.name,o.abbr,o.info]=Re(e):o=Object.assign(o,e),o.abbr&&(t.abbr[`${n}^${o.abbr}`]=o.name),r[o.name]=o}),r}(t.options,t.name,n):t.options={},n.originalBind[t.name]={abbr:"",...t}}function ke(){return new Proxy(new Be,{get(e,n,t){if("args"===n){const n=JSON.parse(JSON.stringify(e[Symbol.for("_args")]||[]));return new Proxy(n,{get(t,r,o){return"$nomatch"===r?e.values.slice():"$map"===r?function(e){if(x(e))return{};const n=new Object;return e.forEach(e=>{const t=n[e.name]||{};t.value=[...t.value||[],...e.value||[]],e.options&&e.options.forEach(e=>{t[e.name]=[...t[e.name]||[],...e.value||[]]}),n[e.name]=t}),n}(n):"$arrMap"===r?x(i=n)?[]:i.map(e=>{const n={},t=n[e.name]||{};return e.value&&!x(e.value)&&(t.value=e.value),y(e)||y(e.options)||x(e.options)||(t.options=[],e.options.forEach(e=>{t.options?.push(Object.fromEntries([[e.name,e.value]]))})),n[e.name]=t,n}):"$only"===r?[...new Set(n.map(e=>e.name))]:"$original"===r?Ie.slice():"$isVoid"===r?0==Ie.slice().length:Reflect.get(t,r,o);var i},set:(e,n,t,r)=>(Reflect.set(e,n,t,r),!0)})}return Reflect.get(e,n,t)},set:(e,n,t,r)=>("args"===n?e[Symbol.for("_args")]=t:Reflect.set(e,n,t,r),!0)})}w(Ne.type);const Te=" ".repeat(4);function Ce(e){return e.state="help",f(e.helpInfo)&&"help"!==e.helpInfo?function(e,n){const t=e.originalBind[n];if(je(`${Te}${t.name}${Te}${ne(t.info)}\n`),t.options&&!j(t.options)){je(`${ee(`${Te}使用:`)} ${e.name} ${n} [subOptions/subAbbr [value]]\n`),je(`${te(`${Te}subOptions:`)} \n`),Me(t.options||{})}else{je(`${X(`${Te}使用:`)} ${e.name} ${n} [value]\n`)}}(e,e.helpInfo):v(e.helpInfo)&&2==e.helpInfo.length?function(e){const n=e.name,t=e.helpInfo.join(" "),r=e.originalBind[e.helpInfo[0]].options[e.helpInfo[1]].info;je(`${te(" 可使用:")} ${n} ${t} [value]\n${X(" 描述:")} ${r}`)}(e):function(e){je(`${re(" 可使用:")} ${e.name} options/abbr [subOptions/subAbbr [value]]\n\n选项:\n`);const n=Me(e.originalBind);!function(e){["version -v 版本描述","help -h 帮助查看"].forEach(n=>{const[t,r,o]=n.split(" ");je(_e({len:e,name:t,info:o,abbr:r})),je("")})}(n)}(e)}function Me(e){const n=Object.keys(e).sort();let t=8;n.forEach(e=>t=Math.max(t,e.length));const r=Math.min(15,t+1);return je(_e({len:r,name:"子命令",info:"描述",abbr:"缩写",color:!1})),je(""),n.forEach(n=>{const{name:t,abbr:o,info:i}=e[n];let s=!1;"options"in e[n]&&!j(e[n].options)&&(s=!0),je(_e({len:r,name:t,info:i,abbr:o,textDecoration:s})),je("")}),r}function _e(e){const n=Object.assign({name:"",info:"",abbr:"",len:15,color:!0,textDecoration:!1},e);let t=Q[n.color?"green":"black"](Te);return t+=Q[n.textDecoration?"blue":"black"](n.name.slice(0,n.len)),t+=" ".repeat(n.len+1-Ae(n.name,n.len)),t+=Q[n.color?"yellow":"black"]`${n.abbr?.slice(0,6)||""}${" ".repeat(7-Ae(n.abbr||"",6))}`,t+=n.color?ne(n.info):n.info,t}function Ae(e,n){return Math.min(e.replace(/[^\x00-\x7f]/,"11").length,n)}const Fe="";function De(e){const{name:n,object:t,item:r,result:o}=e;h(n)||(r.name&&t.options?.push(r),o.push(JSON.parse(JSON.stringify(t))))}function He(e,n){"true"==e?e=!0:"false"==e?e=!1:e==Number(e)&&(e=Number(e)),h(n.name)?n.values.push(e):n[n.item.name?"item":"object"].value.push(e)}function Le(e,n){const t=[];let r="";const o=(e,n)=>y(n)||h(n)?t.push(e):t.push(e,n);function i(e,s){if(!h(r)){if(n.originalBind[r].options[e])return o(e,s);const t=n.abbr[`${r}^${e}`];if(!y(t))return o(t,s)}if(n.originalBind[e])return r=e,o(e,s);if(n.abbr[e])return e=n.abbr[e],r=e,o(e,s);if(e.includes("=")){const n=e.indexOf("=");if(0===n||n===e.length-1)return t.push(e);const[r,o]=[e.slice(0,n),e.slice(n+1)||"true"];return i(r,o)}return y(s)||h(s)?t.push(e):t.push(`${e}=${s}`)}return e.forEach(e=>i(e)),t}function Ue(e,n,t){t.init(),e=Le(e.filter(e=>""!==e),n),e.forEach(e=>{const{name:r}=t;return e=e.trim(),/^([a-z]|[A-Z]|-|\$|_)/.test(e)?!h(r)&&n.originalBind[r].options&&n.originalBind[r].options[e]?function(e,n){const{item:t,object:r}=n;t.name&&r.options.push(t),n.resetItem(e)}(e,t):n.originalBind[e]?function(e,n){h(n.name)||(De(n),n.resetItem("")),n.resetObject(e)}(e,t):He(e,t):He(e,t)}),De(t)}function Ve(e){switch(e.state.code){case 3:return void je("已经执行过 `run`");case 4:return void je("已完成全部");default:e.state=3}!function(e){if(2==process.argv.length)return;const n=e.originalArg,t=`${Fe}${n.join(Fe)}${Fe}`,r=n.findIndex(e=>/^(-h|help)$/.test(e));if(new RegExp(`${Fe}(-v|version)${Fe}`,"i").test(t))return void(e.hasShowVersion=!0);if(p(r))return void(e.helpInfo="help");let o=[];const i={result:[],values:[],name:"",object:{name:"",value:[],options:[]},item:{name:"",value:[]},resetObject(e){this.name=e,this.object={name:e,value:[],options:[]}},resetItem(e){this.item={name:e,value:[]}},init(){this.result=[],this.values=[],this.resetItem(""),this.resetObject("")}};r>0?(Ue(n.slice(0,r+1),e,i),e.values=i.values,e.args=i.result,o=e.args,x(o)?e.helpInfo="help":[y,x].some(e=>e(o[0].options))?e.helpInfo=o[0].name:e.helpInfo=[o[0].name,o[0].options[0].name]):(Ue(n,e,i),e.values=i.values,e.args=i.result)}(e),function(e){["name","originBind","abbr"].forEach(n=>{const t=n;e[t]&&(Object.freeze(e[t]),Object.defineProperty(e,n,{value:e[t],writable:!1,enumerable:!0,configurable:!1}))})}(e)}function ze(n){n.state="version";const t=ve("package.json","file",xe(n.__filename).name);if(y(t))return Ge();const r=$e(t,"package.json");if(!ye(r))return Ge();const o=function(e){if(!/.json^/.test(e)&&!s(e,{throwIfNoEntry:!1}))return null;try{const n=a(e,{encoding:"utf-8"});return JSON.parse(n||"null")}catch(e){return we.error(e),null}}(r);if($(o))return Ge();const{platform:i}=process,c=Q.brightCyan(o.name),l=o.version,u="win32"==i?"Windows":"darwin"==i?"mac":i,f=Q.brightMagenta(e());je(`${c} 版本 ${Q.brightRed(l)} (${u} ${f})`)}function Ge(){je("抱歉,未找到版本定义说明")}const Ke=process.env.LANG?.toLocaleLowerCase().includes("zh"),Pe=new class{#e;#n;constructor(e=""){if(f(e)||(e=`${e}`),this.#e=Symbol(e),Oe[this.#e])throw new Error(`${e} 已经存在,请更换初始化命令名称,若仍想在原命令上操作,请抽离为单独的文件做数据共享`);this.#n=Oe[this.#e]=ke(),[this.#n.__filename]=Ee(),this.#n.name=e||f(process.argv[1])&&process.argv.slice(1,2)[0].replace(/.*\/.*?$/,"$1")||"",Object.defineProperty(this,"#uniKey",{value:this.#e,writable:!1,enumerable:!1,configurable:!1})}get name(){return this.#n.name}get state(){return this.#n.state}isEnd(e=!1){const n=4===this.#n.state.code;return n&&m(e)&&this.end(),n}end(){return this.#n.state="end",process.exit()}error(){return this.#n.state="error",process.exit(1)}bind(e){return We(e,this.#n),this}run(){const e=this.#n;return Ve(e),h(e.helpInfo)||Ce(e),e.hasShowVersion&&ze(e),this}get args(){return this.#n.args}get values(){return this.#n.values.slice()}help(e,n){const t=this.#n;f(e)&&t.originalBind[e]?f(n)&&t.originalBind[e].options&&t.originalBind[e].options[n]?t.helpInfo=[e,n]:t.helpInfo=e:t.helpInfo="help",Ce(this.#n)}version(){ze(this.#n)}}("pjj");Pe.bind(["message <-m> (添加自定义的命令消息)","black <-b> (显示为黑色(默认)文本)","script <-s> (触发的勾子,默认为 `prepublishOnly`)"]),Pe.run(),Pe.isEnd(!0);const Je=Pe.args.$map,Ye=Je.message&&Je.message.value&&Je.message.value.length>0?Je.message.value.join("\n"):Ke?"禁止在项目的根目录下执行 npm publish 命令":"It is forbidden to execute the npm publish command in the root directory of the project",Ze=void 0!==Je.black,qe=Je.script&&Je.script.value&&Je.script.value.length>0?Je.script.value[0]:"prepublishOnly",Qe=process.stdout.columns,Xe=Qe-se(Ye),en={screenWith:Qe,safeWidth:Xe>0?Math.floor(Xe/2):0};function nn(){if(Ze)je();else{const e=" ".repeat(en.screenWith);je(oe(e))}}function tn(){let e="";for(let n=0;n<en.screenWith;n++)e+=Ze?"=":ie("=");return e}const rn="\n".repeat(3);function on(){if(O()&&process.env.npm_lifecycle_event===qe)je(rn),je(tn()),je(),nn(),nn(),je(function(e){const{screenWith:n,safeWidth:t}=en;de("开始计算文本长度");const r=oe(" ".repeat(t));return de("空白长度为",t),`${r}${[...ce(e,n-2*t)].reduce((e,n)=>e+oe.number(B(1,225))(n),"")}${r}`}(Ye)),nn(),nn(),je(),je(tn()),je(rn),Pe.error();else{const e=oe.brightRed,n=e.hide;de.error(O()&&process.env.npm_lifecycle_event);const t=" 所以,看见这段文本,说明你哪里 ❌ 了 ";je("===================================="),je("跳过了禁止发布,而且该命令可能不会显示在终端\n"),je(n(t)),je(e.blink.bold(t)),je(n(t)),je("\n====================================")}}(()=>{try{on()}catch(e){de.error(e)}})();
|
|
2
|
+
import{Dog as e}from"@vvi/log";import{_p as r}from"@vvi/node";import{strInTerminalLength as t,bgBlackPen as n,truncateStringWithChar as o,randomPen as s}from"@vvi/pen";import{getRandomInt as i,isNode as c}from"@vvi/utils";import{Args as p}from"@vvi/command";const l=new e({name:"pjj",type:"error"}),m=process.env.LANG?.toLocaleLowerCase().includes("zh"),a=new p("pjj");a.bind(["message <-m> (添加自定义的命令消息)","black <-b> (显示为黑色(默认)文本)","script <-s> (触发的勾子,默认为 `prepublishOnly`)"]),a.run(),a.isEnd(!0);const u=a.args.$map,v=u.message&&u.message.value&&u.message.value.length>0?u.message.value.join("\n"):m?"禁止在项目的根目录下执行 npm publish 命令":"It is forbidden to execute the npm publish command in the root directory of the project",h=void 0!==u.black,f=u.script&&u.script.value&&u.script.value.length>0?u.script.value[0]:"prepublishOnly",d=process.stdout.columns,b=d-t(v),g={screenWith:d,safeWidth:b>0?Math.floor(b/2):0};function y(){if(h)r();else{const e=" ".repeat(g.screenWith);r(n(e))}}function j(){let e="";for(let r=0;r<g.screenWith;r++)e+=h?"=":s("=");return e}const W="\n".repeat(3);function $(){if(c()&&process.env.npm_lifecycle_event===f)r(W),r(j()),r(),y(),y(),r(function(e){const{screenWith:r,safeWidth:t}=g;l("开始计算文本长度");const s=n(" ".repeat(t));return l("空白长度为",t),`${s}${[...o(e,r-2*t)].reduce((e,r)=>e+n.number(i(1,225))(r),"")}${s}`}(v)),y(),y(),r(),r(j()),r(W),a.error();else{const e=n.brightRed,t=e.hide;l.error(c()&&process.env.npm_lifecycle_event);const o=" 所以,看见这段文本,说明你哪里 ❌ 了 ";r("===================================="),r("跳过了禁止发布,而且该命令可能不会显示在终端\n"),r(t(o)),r(e.blink.bold(o)),r(t(o)),r("\n====================================")}}(()=>{try{$()}catch(e){l.error(e)}})();
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pjj",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.6",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "泥豆君",
|
|
7
7
|
"email": "Mr.MudBean@outlook.com",
|
|
8
|
-
"url": "https://
|
|
8
|
+
"url": "https://mudbean.cn"
|
|
9
9
|
},
|
|
10
10
|
"description": "禁止在项目的根目录执行 npm publish,防止意外发布。该脚本命令需在 'prepublishOnly' 钩子中配置",
|
|
11
11
|
"license": "MIT",
|
|
@@ -13,12 +13,23 @@
|
|
|
13
13
|
"bin.js",
|
|
14
14
|
"LICENSE",
|
|
15
15
|
"README.md",
|
|
16
|
-
"THIRD-PARTY-LICENSES.txt"
|
|
16
|
+
"THIRD-PARTY-LICENSES.txt",
|
|
17
|
+
"CHANGELOG.md"
|
|
17
18
|
],
|
|
18
19
|
"keywords": [
|
|
19
|
-
"pjj"
|
|
20
|
+
"pjj",
|
|
21
|
+
"mudbean",
|
|
22
|
+
"vvi"
|
|
20
23
|
],
|
|
21
|
-
"homepage": "https://
|
|
24
|
+
"homepage": "https://npm.lmssee.com/pjj",
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@vvi/command": "^4.0.0",
|
|
27
|
+
"@vvi/is": "^2.0.5",
|
|
28
|
+
"@vvi/log": "^1.1.5",
|
|
29
|
+
"@vvi/node": "^4.4.4",
|
|
30
|
+
"@vvi/pen": "^3.0.2",
|
|
31
|
+
"@vvi/utils": "^2.0.6"
|
|
32
|
+
},
|
|
22
33
|
"bugs": {
|
|
23
34
|
"url": "https://github.com/MrMudBean/pjj/issues",
|
|
24
35
|
"email": "Mr.MudBean@outlook.com"
|
package/THIRD-PARTY-LICENSES.txt
DELETED
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
THIRD-PARTY LICENSE
|
|
2
|
-
==================================================
|
|
3
|
-
|
|
4
|
-
a-js-tools (2.0.1)
|
|
5
|
-
------------------------------
|
|
6
|
-
# MIT License
|
|
7
|
-
|
|
8
|
-
Copyright (c) <2024> <Mr.MudBean>
|
|
9
|
-
|
|
10
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
11
|
-
purpose with or without fee is hereby granted, provided that the above
|
|
12
|
-
copyright notice and this permission notice appear in all copies.
|
|
13
|
-
|
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
15
|
-
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
16
|
-
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
17
|
-
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
18
|
-
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
19
|
-
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
20
|
-
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
21
|
-
|
|
22
|
-
# MIT 许可证
|
|
23
|
-
|
|
24
|
-
版权所有 (c) [2024] [泥豆君]
|
|
25
|
-
|
|
26
|
-
特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人不受限制地处置该软件的权利,包括不受限制地使用、复制、修改、合并、发布、分发、再许可和/或出售该软件副本的权利,并允许向其提供该软件的人这样做,但须遵守以下条件:
|
|
27
|
-
|
|
28
|
-
上述版权声明和本许可声明应包含在所有副本或软件的重要部分中。
|
|
29
|
-
|
|
30
|
-
软件按“原样”提供,不附带任何形式的明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对因合同、侵权或其他方式引起的任何索赔、损害或其他责任负责,无论是在与软件或软件的使用或其他交易有关的任何诉讼中。
|
|
31
|
-
|
|
32
|
-
a-type-of-js (2.0.0)
|
|
33
|
-
------------------------------
|
|
34
|
-
# MIT License
|
|
35
|
-
|
|
36
|
-
Copyright (c) <2025> <Mr.MudBean>
|
|
37
|
-
|
|
38
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
39
|
-
purpose with or without fee is hereby granted, provided that the above
|
|
40
|
-
copyright notice and this permission notice appear in all copies.
|
|
41
|
-
|
|
42
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
43
|
-
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
44
|
-
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
45
|
-
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
46
|
-
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
47
|
-
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
48
|
-
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
49
|
-
|
|
50
|
-
# MIT 许可证
|
|
51
|
-
|
|
52
|
-
版权所有 (c) [2025] [花生亻]
|
|
53
|
-
|
|
54
|
-
特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人不受限制地处置该软件的权利,包括不受限制地使用、复制、修改、合并、发布、分发、再许可和/或出售该软件副本的权利,并允许向其提供该软件的人这样做,但须遵守以下条件:
|
|
55
|
-
|
|
56
|
-
上述版权声明和本许可声明应包含在所有副本或软件的重要部分中。
|
|
57
|
-
|
|
58
|
-
软件按“原样”提供,不附带任何形式的明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对因合同、侵权或其他方式引起的任何索赔、损害或其他责任负责,无论是在与软件或软件的使用或其他交易有关的任何诉讼中。
|
|
59
|
-
|
|
60
|
-
@qqi/log (1.0.0)
|
|
61
|
-
------------------------------
|
|
62
|
-
# MIT License
|
|
63
|
-
|
|
64
|
-
Copyright (c) <2025> <Mr.MudBean>
|
|
65
|
-
|
|
66
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
67
|
-
purpose with or without fee is hereby granted, provided that the above
|
|
68
|
-
copyright notice and this permission notice appear in all copies.
|
|
69
|
-
|
|
70
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
71
|
-
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
72
|
-
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
73
|
-
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
74
|
-
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
75
|
-
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
76
|
-
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
77
|
-
|
|
78
|
-
# MIT 许可证
|
|
79
|
-
|
|
80
|
-
版权所有 (c) [2025] [泥豆君]
|
|
81
|
-
|
|
82
|
-
特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人不受限制地处置该软件的权利,包括不受限制地使用、复制、修改、合并、发布、分发、再许可和/或出售该软件副本的权利,并允许向其提供该软件的人这样做,但须遵守以下条件:
|
|
83
|
-
|
|
84
|
-
上述版权声明和本许可声明应包含在所有副本或软件的重要部分中。
|
|
85
|
-
|
|
86
|
-
软件按“原样”提供,不附带任何形式的明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对因合同、侵权或其他方式引起的任何索赔、损害或其他责任负责,无论是在与软件或软件的使用或其他交易有关的任何诉讼中。
|
|
87
|
-
|
|
88
|
-
@color-pen/static (1.1.1)
|
|
89
|
-
------------------------------
|
|
90
|
-
# MIT License
|
|
91
|
-
|
|
92
|
-
Copyright (c) <2025> <Mr.MudBean>
|
|
93
|
-
|
|
94
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
95
|
-
purpose with or without fee is hereby granted, provided that the above
|
|
96
|
-
copyright notice and this permission notice appear in all copies.
|
|
97
|
-
|
|
98
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
99
|
-
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
100
|
-
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
101
|
-
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
102
|
-
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
103
|
-
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
104
|
-
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
105
|
-
|
|
106
|
-
# MIT 许可证
|
|
107
|
-
|
|
108
|
-
版权所有 (c) [2025] [泥豆君]
|
|
109
|
-
|
|
110
|
-
特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人不受限制地处置该软件的权利,包括不受限制地使用、复制、修改、合并、发布、分发、再许可和/或出售该软件副本的权利,并允许向其提供该软件的人这样做,但须遵守以下条件:
|
|
111
|
-
|
|
112
|
-
上述版权声明和本许可声明应包含在所有副本或软件的重要部分中。
|
|
113
|
-
|
|
114
|
-
软件按“原样”提供,不附带任何形式的明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对因合同、侵权或其他方式引起的任何索赔、损害或其他责任负责,无论是在与软件或软件的使用或其他交易有关的任何诉讼中。
|
|
115
|
-
|
|
116
|
-
color-pen (3.0.0)
|
|
117
|
-
------------------------------
|
|
118
|
-
# MIT License
|
|
119
|
-
|
|
120
|
-
Copyright (c) <2025> <Mr.MudBean>
|
|
121
|
-
|
|
122
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
123
|
-
purpose with or without fee is hereby granted, provided that the above
|
|
124
|
-
copyright notice and this permission notice appear in all copies.
|
|
125
|
-
|
|
126
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
127
|
-
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
128
|
-
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
129
|
-
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
130
|
-
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
131
|
-
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
132
|
-
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
133
|
-
|
|
134
|
-
# MIT 许可证
|
|
135
|
-
|
|
136
|
-
版权所有 (c) [2025] [泥豆君]
|
|
137
|
-
|
|
138
|
-
特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人不受限制地处置该软件的权利,包括不受限制地使用、复制、修改、合并、发布、分发、再许可和/或出售该软件副本的权利,并允许向其提供该软件的人这样做,但须遵守以下条件:
|
|
139
|
-
|
|
140
|
-
上述版权声明和本许可声明应包含在所有副本或软件的重要部分中。
|
|
141
|
-
|
|
142
|
-
软件按“原样”提供,不附带任何形式的明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对因合同、侵权或其他方式引起的任何索赔、损害或其他责任负责,无论是在与软件或软件的使用或其他交易有关的任何诉讼中。
|
|
143
|
-
|
|
144
|
-
a-node-tools (4.4.1)
|
|
145
|
-
------------------------------
|
|
146
|
-
# MIT License
|
|
147
|
-
|
|
148
|
-
Copyright (c) <2024> <Mr.MudBean>
|
|
149
|
-
|
|
150
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
151
|
-
purpose with or without fee is hereby granted, provided that the above
|
|
152
|
-
copyright notice and this permission notice appear in all copies.
|
|
153
|
-
|
|
154
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
155
|
-
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
156
|
-
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
157
|
-
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
158
|
-
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
159
|
-
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
160
|
-
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
161
|
-
|
|
162
|
-
# MIT 许可证
|
|
163
|
-
|
|
164
|
-
版权所有 (c) [2024] [泥豆君]
|
|
165
|
-
|
|
166
|
-
特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人不受限制地处置该软件的权利,包括不受限制地使用、复制、修改、合并、发布、分发、再许可和/或出售该软件副本的权利,并允许向其提供该软件的人这样做,但须遵守以下条件:
|
|
167
|
-
|
|
168
|
-
上述版权声明和本许可声明应包含在所有副本或软件的重要部分中。
|
|
169
|
-
|
|
170
|
-
软件按“原样”提供,不附带任何形式的明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对因合同、侵权或其他方式引起的任何索赔、损害或其他责任负责,无论是在与软件或软件的使用或其他交易有关的任何诉讼中。
|
|
171
|
-
|
|
172
|
-
a-command (3.0.0)
|
|
173
|
-
------------------------------
|
|
174
|
-
# MIT License
|
|
175
|
-
|
|
176
|
-
Copyright (c) <2024> <MrMudBean>
|
|
177
|
-
|
|
178
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
179
|
-
purpose with or without fee is hereby granted, provided that the above
|
|
180
|
-
copyright notice and this permission notice appear in all copies.
|
|
181
|
-
|
|
182
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
183
|
-
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
184
|
-
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
185
|
-
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
186
|
-
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
187
|
-
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
188
|
-
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
189
|
-
|
|
190
|
-
# MIT 许可证
|
|
191
|
-
|
|
192
|
-
版权所有 (c) [2024] [泥豆君]
|
|
193
|
-
|
|
194
|
-
特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人不受限制地处置该软件的权利,包括不受限制地使用、复制、修改、合并、发布、分发、再许可和/或出售该软件副本的权利,并允许向其提供该软件的人这样做,但须遵守以下条件:
|
|
195
|
-
|
|
196
|
-
上述版权声明和本许可声明应包含在所有副本或软件的重要部分中。
|
|
197
|
-
|
|
198
|
-
软件按“原样”提供,不附带任何形式的明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对因合同、侵权或其他方式引起的任何索赔、损害或其他责任负责,无论是在与软件或软件的使用或其他交易有关的任何诉讼中。
|