pjj 1.0.4-test.0 → 1.0.5

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # MIT License
2
2
 
3
- Copyright (c) <2025> <earthnut.dev>
3
+ Copyright (c) <2025> <Mr.MudBean>
4
4
 
5
5
  Permission to use, copy, modify, and/or distribute this software for any
6
6
  purpose with or without fee is hereby granted, provided that the above
@@ -16,7 +16,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
16
 
17
17
  # MIT 许可证
18
18
 
19
- 版权所有 (c) [2025] [花生亻]
19
+ 版权所有 (c) [2025] [泥豆君]
20
20
 
21
21
  特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人不受限制地处置该软件的权利,包括不受限制地使用、复制、修改、合并、发布、分发、再许可和/或出售该软件副本的权利,并允许向其提供该软件的人这样做,但须遵守以下条件:
22
22
 
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ​​publish job jamming​
2
2
 
3
- ## [![version](<https://img.shields.io/npm/v/pjj.svg?logo=npm&logoColor=rgb(0,0,0)&label=版本号&labelColor=rgb(73,73,228)&color=rgb(0,0,0)>)](https://www.npmjs.com/package/pjj) [![issues 提交](<https://img.shields.io/badge/issues-提交-rgb(255,0,63)?logo=github>)](https://github.com/earthnutDev/pjj/issues)
3
+ ## [![version](<https://img.shields.io/npm/v/pjj.svg?logo=npm&logoColor=rgb(0,0,0)&label=版本号&labelColor=rgb(73,73,228)&color=rgb(0,0,0)>)](https://www.npmjs.com/package/pjj) [![issues 提交](<https://img.shields.io/badge/issues-提交-rgb(255,0,63)?logo=github>)](https://github.com/MrMudBean/pjj/issues)
4
4
 
5
5
  禁止在项目的根目录执行 npm publish,防止意外发布。该脚本命令仅允许在 `prepublishOnly` ` 钩子中执行。
6
6
 
@@ -66,4 +66,4 @@ npm install --save-dev pjj
66
66
 
67
67
  ## 文档地址
68
68
 
69
- 参看 [https://earthnut.dev/pjj/](https://earthnut.dev/pjj/)
69
+ 参看 [pjj/](https://earthnut.dev/npm/pjj/)
@@ -0,0 +1,198 @@
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
+ 软件按“原样”提供,不附带任何形式的明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对因合同、侵权或其他方式引起的任何索赔、损害或其他责任负责,无论是在与软件或软件的使用或其他交易有关的任何诉讼中。
package/bin.js ADDED
@@ -0,0 +1,2 @@
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"),"");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)}})();
package/package.json CHANGED
@@ -1,44 +1,40 @@
1
1
  {
2
2
  "name": "pjj",
3
3
  "type": "module",
4
- "version": "1.0.4-test.0",
5
- "description": "禁止在项目的根目录执行 npm publish,防止意外发布。该脚本命令需在 'prepublishOnly' 钩子中配置",
6
- "overrides": {},
7
- "license": "MIT",
8
- "dependencies": {
9
- "@qqi/log": "^0.1.0",
10
- "a-command": "^2.3.13",
11
- "a-js-tools": "^1.0.8",
12
- "a-node-tools": "^4.2.16",
13
- "a-type-of-js": "^1.0.5",
14
- "color-pen": "^2.0.12"
15
- },
4
+ "version": "1.0.5",
16
5
  "author": {
17
- "name": "🥜",
18
- "email": "earthnut.dev@outlook.com",
6
+ "name": "泥豆君",
7
+ "email": "Mr.MudBean@outlook.com",
19
8
  "url": "https://earthnut.dev"
20
9
  },
10
+ "description": "禁止在项目的根目录执行 npm publish,防止意外发布。该脚本命令需在 'prepublishOnly' 钩子中配置",
11
+ "license": "MIT",
21
12
  "files": [
22
- "src",
23
- "bin.mjs"
13
+ "bin.js",
14
+ "LICENSE",
15
+ "README.md",
16
+ "THIRD-PARTY-LICENSES.txt"
24
17
  ],
25
18
  "keywords": [
26
19
  "pjj"
27
20
  ],
21
+ "homepage": "https://earthnut.dev/npm/pjj",
22
+ "bugs": {
23
+ "url": "https://github.com/MrMudBean/pjj/issues",
24
+ "email": "Mr.MudBean@outlook.com"
25
+ },
28
26
  "repository": {
29
27
  "type": "git",
30
- "url": "git+https://github.com/earthnutDev/pjj.git"
31
- },
32
- "homepage": "https://earthnut.dev/pjj",
33
- "bugs": {
34
- "url": "https://github.com/earthnutDev/pjj/issues",
35
- "email": "earthnut.dev@outlook.com"
28
+ "url": "git+https://github.com/MrMudBean/pjj.git"
36
29
  },
37
30
  "publishConfig": {
38
31
  "access": "public",
39
32
  "registry": "https://registry.npmjs.org/"
40
33
  },
41
34
  "bin": {
42
- "pjj": "bin.mjs"
35
+ "pjj": "bin.js"
36
+ },
37
+ "engines": {
38
+ "node": ">=18.0.0"
43
39
  }
44
40
  }
package/bin.mjs DELETED
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env node
2
- import { dog } from './src/dog.mjs';
3
- import { main } from './src/main.mjs';
4
-
5
- (() => {
6
- try {
7
- main();
8
- }
9
- catch (error) {
10
- dog.error(error);
11
- }
12
- })();
@@ -1,21 +0,0 @@
1
- import { _p } from 'a-node-tools';
2
- import { bgBlackPen } from 'color-pen';
3
- import { dataStore } from './data-store.mjs';
4
- import { noColor } from './command.mjs';
5
-
6
- /**
7
- *
8
- * 打印一个空白的黑色背景
9
- *
10
- */
11
- function blackSpace() {
12
- if (noColor) {
13
- _p();
14
- }
15
- else {
16
- const str = ' '.repeat(dataStore.screenWith);
17
- _p(bgBlackPen(str));
18
- }
19
- }
20
-
21
- export { blackSpace };
package/src/cn.mjs DELETED
@@ -1,3 +0,0 @@
1
- const cn = process.env.LANG?.toLocaleLowerCase().includes('zh');
2
-
3
- export { cn };
package/src/colorText.mjs DELETED
@@ -1,23 +0,0 @@
1
- import { dog } from './dog.mjs';
2
- import { bgBlackPen, truncateStringWithChar } from 'color-pen';
3
- import { dataStore } from './data-store.mjs';
4
- import { getRandomInt } from 'a-js-tools';
5
-
6
- /**
7
- *
8
- * @description 生成随机颜色文本
9
- *
10
- * @param str 字符串
11
- *
12
- *
13
- */
14
- function colorText(str) {
15
- const { screenWith, safeWidth } = dataStore;
16
- dog('开始计算文本长度');
17
- /** 安全区空白 */
18
- const blankSpace = bgBlackPen(' '.repeat(safeWidth));
19
- dog('空白长度为', safeWidth);
20
- return `${blankSpace}${[...truncateStringWithChar(str, screenWith - safeWidth * 2)].reduce((previousValue, currentValue) => previousValue + bgBlackPen.number(getRandomInt(1, 225))(currentValue), '')}${blankSpace}`;
21
- }
22
-
23
- export { colorText };
package/src/command.mjs DELETED
@@ -1,31 +0,0 @@
1
- import { Command } from 'a-command';
2
- import { cn } from './cn.mjs';
3
-
4
- /** 创建一个命令 */
5
- const command = new Command('pjj');
6
- command.bind([
7
- 'message <-m> (添加自定义的命令消息)',
8
- 'black <-b> (显示为黑色(默认)文本)',
9
- 'script <-s> (触发的勾子,默认为 `prepublishOnly`)',
10
- ]);
11
- command.run();
12
- command.isEnd(true);
13
- /**
14
- * 命令参数映射
15
- */
16
- const argMap = command.args.$map;
17
- /**
18
- * 命令参数值
19
- */
20
- const message = argMap.message && argMap.message.value && argMap.message.value.length > 0
21
- ? argMap.message.value.join('\n')
22
- : cn
23
- ? '禁止在项目的根目录下执行 npm publish 命令'
24
- : 'It is forbidden to execute the npm publish command in the root directory of the project';
25
- /// 没有颜色
26
- const noColor = argMap.black !== undefined;
27
- const script = argMap.script && argMap.script.value && argMap.script.value.length > 0
28
- ? argMap.script.value[0]
29
- : 'prepublishOnly';
30
-
31
- export { command, message, noColor, script };
@@ -1,14 +0,0 @@
1
- import { strInTerminalLength } from 'color-pen';
2
- import { message } from './command.mjs';
3
-
4
- const screenWith = process.stdout.columns;
5
- const messageLength = strInTerminalLength(message);
6
- const safeWidth = screenWith - messageLength;
7
- const dataStore = {
8
- /** 终端的宽度(可显示字符数) */
9
- screenWith,
10
- /** 安全区长度 */
11
- safeWidth: safeWidth > 0 ? Math.floor(safeWidth / 2) : 0,
12
- };
13
-
14
- export { dataStore };
package/src/dog.mjs DELETED
@@ -1,8 +0,0 @@
1
- import { Dog } from '@qqi/log';
2
-
3
- const dog = new Dog({
4
- name: 'pjj',
5
- type: 'error',
6
- });
7
-
8
- export { dog };
package/src/line.mjs DELETED
@@ -1,18 +0,0 @@
1
- import { randomPen } from 'color-pen';
2
- import { noColor } from './command.mjs';
3
- import { dataStore } from './data-store.mjs';
4
-
5
- /**
6
- *
7
- * @description 生成分割线
8
- *
9
- */
10
- function line() {
11
- let str = '';
12
- for (let i = 0; i < dataStore.screenWith; i++) {
13
- str += noColor ? '=' : randomPen('=');
14
- }
15
- return str;
16
- }
17
-
18
- export { line };
package/src/main.mjs DELETED
@@ -1,46 +0,0 @@
1
- import { colorText } from './colorText.mjs';
2
- import { script, command, message } from './command.mjs';
3
- import { line } from './line.mjs';
4
- import { _p } from 'a-node-tools';
5
- import { dog } from './dog.mjs';
6
- import { blackSpace } from './blackSpace.mjs';
7
- import { isNode } from 'a-js-tools';
8
- import { bgBlackPen } from 'color-pen';
9
-
10
- /**
11
- * 空行
12
- */
13
- const space = '\n'.repeat(3);
14
- /**
15
- * 主程序入口
16
- */
17
- function main() {
18
- if (isNode() && process.env.npm_lifecycle_event === script) {
19
- _p(space); //最上面的空白
20
- _p(line()); // 最上面的彩色线
21
- _p(); // 一个空行
22
- blackSpace(); // 黑色背景
23
- blackSpace(); // 黑色背景
24
- _p(colorText(message)); // 彩色文本
25
- blackSpace(); // 黑色背景
26
- blackSpace(); // 黑色背景
27
- _p(); // 一个空行
28
- _p(line()); // 最下面的彩色线
29
- _p(space); //最下面的空白
30
- command.error();
31
- }
32
- else {
33
- const pen = bgBlackPen.brightRed;
34
- const hidePen = pen.hide;
35
- dog.error(isNode() && process.env.npm_lifecycle_event);
36
- const m = ' 所以,看见这段文本,说明你哪里 ❌ 了 ';
37
- _p('====================================');
38
- _p('跳过了禁止发布,而且该命令可能不会显示在终端\n');
39
- _p(hidePen(m));
40
- _p(pen.blink.bold(m));
41
- _p(hidePen(m));
42
- _p('\n====================================');
43
- }
44
- }
45
-
46
- export { main };