@visulima/cerebro 1.1.13 → 1.1.15
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 +23 -0
- package/LICENSE.md +177 -0
- package/dist/chunks/has-new-version.cjs +1 -1
- package/dist/chunks/has-new-version.mjs +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
## @visulima/cerebro [1.1.15](https://github.com/visulima/visulima/compare/@visulima/cerebro@1.1.14...@visulima/cerebro@1.1.15) (2024-08-08)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* **cerebro:** fixed conflict handling on commands ([#471](https://github.com/visulima/visulima/issues/471)) ([5a19ebc](https://github.com/visulima/visulima/commit/5a19ebc91e35fcb502bd17c7282c609e498b95e6))
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Dependencies
|
|
9
|
+
|
|
10
|
+
* **@visulima/find-cache-dir:** upgraded to 1.0.6
|
|
11
|
+
* **@visulima/pail:** upgraded to 2.1.4
|
|
12
|
+
|
|
13
|
+
## @visulima/cerebro [1.1.14](https://github.com/visulima/visulima/compare/@visulima/cerebro@1.1.13...@visulima/cerebro@1.1.14) (2024-08-04)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Dependencies
|
|
17
|
+
|
|
18
|
+
* **@visulima/boxen:** upgraded to 1.0.13
|
|
19
|
+
* **@visulima/colorize:** upgraded to 1.4.5
|
|
20
|
+
* **@visulima/find-cache-dir:** upgraded to 1.0.5
|
|
21
|
+
* **@visulima/pail:** upgraded to 2.1.3
|
|
22
|
+
* **@visulima/path:** upgraded to 1.0.4
|
|
23
|
+
|
|
1
24
|
## @visulima/cerebro [1.1.13](https://github.com/visulima/visulima/compare/@visulima/cerebro@1.1.12...@visulima/cerebro@1.1.13) (2024-08-01)
|
|
2
25
|
|
|
3
26
|
### Bug Fixes
|
package/LICENSE.md
CHANGED
|
@@ -100,6 +100,183 @@ Repository: git+https://github.com/visulima/visulima.git
|
|
|
100
100
|
> DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
101
101
|
> OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
|
102
102
|
> USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
103
|
+
>
|
|
104
|
+
> <!-- DEPENDENCIES -->
|
|
105
|
+
>
|
|
106
|
+
> # Licenses of bundled dependencies
|
|
107
|
+
> The published @visulima/path artifact additionally contains code with the following licenses:
|
|
108
|
+
> MIT
|
|
109
|
+
>
|
|
110
|
+
> # Bundled dependencies:
|
|
111
|
+
> ## binary-extensions
|
|
112
|
+
> License: MIT
|
|
113
|
+
> By: Sindre Sorhus
|
|
114
|
+
> Repository: sindresorhus/binary-extensions
|
|
115
|
+
>
|
|
116
|
+
> > MIT License
|
|
117
|
+
> >
|
|
118
|
+
> > Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
119
|
+
> > Copyright (c) Paul Miller (https://paulmillr.com)
|
|
120
|
+
> >
|
|
121
|
+
> > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
122
|
+
> >
|
|
123
|
+
> > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
124
|
+
> >
|
|
125
|
+
> > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
126
|
+
>
|
|
127
|
+
> <!-- DEPENDENCIES -->
|
|
128
|
+
>
|
|
129
|
+
> <!-- TYPE_DEPENDENCIES -->
|
|
130
|
+
> <!-- TYPE_DEPENDENCIES -->
|
|
131
|
+
|
|
132
|
+
---------------------------------------
|
|
133
|
+
|
|
134
|
+
## camelcase
|
|
135
|
+
License: MIT
|
|
136
|
+
By: Sindre Sorhus
|
|
137
|
+
Repository: sindresorhus/camelcase
|
|
138
|
+
|
|
139
|
+
> MIT License
|
|
140
|
+
>
|
|
141
|
+
> Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
142
|
+
>
|
|
143
|
+
> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
144
|
+
>
|
|
145
|
+
> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
146
|
+
>
|
|
147
|
+
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
148
|
+
|
|
149
|
+
<!-- DEPENDENCIES -->
|
|
150
|
+
>
|
|
151
|
+
> # Licenses of bundled dependencies
|
|
152
|
+
> The published @visulima/path artifact additionally contains code with the following licenses:
|
|
153
|
+
> MIT
|
|
154
|
+
>
|
|
155
|
+
> # Bundled dependencies:
|
|
156
|
+
> ## binary-extensions
|
|
157
|
+
> License: MIT
|
|
158
|
+
> By: Sindre Sorhus
|
|
159
|
+
> Repository: sindresorhus/binary-extensions
|
|
160
|
+
>
|
|
161
|
+
> > MIT License
|
|
162
|
+
> >
|
|
163
|
+
> > Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
164
|
+
> > Copyright (c) Paul Miller (https://paulmillr.com)
|
|
165
|
+
> >
|
|
166
|
+
> > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
167
|
+
> >
|
|
168
|
+
> > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
169
|
+
> >
|
|
170
|
+
> > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
171
|
+
>
|
|
172
|
+
> <!-- DEPENDENCIES -->
|
|
173
|
+
|
|
174
|
+
# Licenses of bundled dependencies
|
|
175
|
+
The published @visulima/cerebro artifact additionally contains code with the following licenses:
|
|
176
|
+
MIT
|
|
177
|
+
|
|
178
|
+
# Bundled dependencies:
|
|
179
|
+
## @visulima/path
|
|
180
|
+
License: MIT
|
|
181
|
+
By: Daniel Bannert
|
|
182
|
+
Repository: git+https://github.com/visulima/visulima.git
|
|
183
|
+
|
|
184
|
+
> MIT License
|
|
185
|
+
>
|
|
186
|
+
> Copyright (c) 2024 visulima
|
|
187
|
+
>
|
|
188
|
+
> Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
189
|
+
> of this software and associated documentation files (the "Software"), to deal
|
|
190
|
+
> in the Software without restriction, including without limitation the rights
|
|
191
|
+
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
192
|
+
> copies of the Software, and to permit persons to whom the Software is
|
|
193
|
+
> furnished to do so, subject to the following conditions:
|
|
194
|
+
>
|
|
195
|
+
> The above copyright notice and this permission notice shall be included in all
|
|
196
|
+
> copies or substantial portions of the Software.
|
|
197
|
+
>
|
|
198
|
+
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
199
|
+
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
200
|
+
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
201
|
+
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
202
|
+
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
203
|
+
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
204
|
+
> SOFTWARE.
|
|
205
|
+
>
|
|
206
|
+
> ---
|
|
207
|
+
>
|
|
208
|
+
> MIT License
|
|
209
|
+
>
|
|
210
|
+
> Copyright (c) Pooya Parsa <pooya@pi0.io> - Daniel Roe <daniel@roe.dev>
|
|
211
|
+
>
|
|
212
|
+
> Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
213
|
+
> of this software and associated documentation files (the "Software"), to deal
|
|
214
|
+
> in the Software without restriction, including without limitation the rights
|
|
215
|
+
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
216
|
+
> copies of the Software, and to permit persons to whom the Software is
|
|
217
|
+
> furnished to do so, subject to the following conditions:
|
|
218
|
+
>
|
|
219
|
+
> The above copyright notice and this permission notice shall be included in all
|
|
220
|
+
> copies or substantial portions of the Software.
|
|
221
|
+
>
|
|
222
|
+
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
223
|
+
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
224
|
+
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
225
|
+
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
226
|
+
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
227
|
+
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
228
|
+
> SOFTWARE.
|
|
229
|
+
>
|
|
230
|
+
> ---
|
|
231
|
+
>
|
|
232
|
+
> Copyright Joyent, Inc. and other Node contributors.
|
|
233
|
+
>
|
|
234
|
+
> Permission is hereby granted, free of charge, to any person obtaining a
|
|
235
|
+
> copy of this software and associated documentation files (the
|
|
236
|
+
> "Software"), to deal in the Software without restriction, including
|
|
237
|
+
> without limitation the rights to use, copy, modify, merge, publish,
|
|
238
|
+
> distribute, sublicense, and/or sell copies of the Software, and to permit
|
|
239
|
+
> persons to whom the Software is furnished to do so, subject to the
|
|
240
|
+
> following conditions:
|
|
241
|
+
>
|
|
242
|
+
> The above copyright notice and this permission notice shall be included
|
|
243
|
+
> in all copies or substantial portions of the Software.
|
|
244
|
+
>
|
|
245
|
+
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
246
|
+
> OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
247
|
+
> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
|
248
|
+
> NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
249
|
+
> DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
250
|
+
> OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
|
251
|
+
> USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
252
|
+
>
|
|
253
|
+
> <!-- DEPENDENCIES -->
|
|
254
|
+
>
|
|
255
|
+
> # Licenses of bundled dependencies
|
|
256
|
+
> The published @visulima/path artifact additionally contains code with the following licenses:
|
|
257
|
+
> MIT
|
|
258
|
+
>
|
|
259
|
+
> # Bundled dependencies:
|
|
260
|
+
> ## binary-extensions
|
|
261
|
+
> License: MIT
|
|
262
|
+
> By: Sindre Sorhus
|
|
263
|
+
> Repository: sindresorhus/binary-extensions
|
|
264
|
+
>
|
|
265
|
+
> > MIT License
|
|
266
|
+
> >
|
|
267
|
+
> > Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
268
|
+
> > Copyright (c) Paul Miller (https://paulmillr.com)
|
|
269
|
+
> >
|
|
270
|
+
> > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
271
|
+
> >
|
|
272
|
+
> > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
273
|
+
> >
|
|
274
|
+
> > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
275
|
+
>
|
|
276
|
+
> <!-- DEPENDENCIES -->
|
|
277
|
+
>
|
|
278
|
+
> <!-- TYPE_DEPENDENCIES -->
|
|
279
|
+
> <!-- TYPE_DEPENDENCIES -->
|
|
103
280
|
|
|
104
281
|
---------------------------------------
|
|
105
282
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var j=Object.defineProperty;var f=(e,n)=>j(e,"name",{value:n,configurable:!0});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("node:fs"),O=require("@visulima/find-cache-dir"),S=require("node:https");var k=Object.defineProperty,P=f((e,n)=>k(e,"name",{value:n,configurable:!0}),"o$2");const A=P((e,n)=>{const r=e.split(".").map(Number),t=n.split(".").map(Number);for(const[o,s]of r.entries()){if(s>t[o])return!0;if(s<t[o])return!1}return!1},"semverGt");var x=Object.defineProperty,v=f((e,n)=>x(e,"name",{value:n,configurable:!0}),"u$1"),N=Object.defineProperty,_=v((e,n)=>N(e,"name",{value:n,configurable:!0}),"t");const C=/^[A-Z]:\//i,l=_((e="")=>e&&e.replaceAll("\\","/").replace(C,n=>n.toUpperCase()),"normalizeWindowsPath");var U=Object.defineProperty,c=v((e,n)=>U(e,"name",{value:n,configurable:!0}),"r");const D=/^[/\\]{2}/,E=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Z]:[/\\]/i,b=/^[A-Z]:$/i,m=/^\/([A-Z]:)?$/i,L=/.(\.[^./]+)$/,Z=c(()=>typeof process<"u"&&typeof process.cwd=="function"?process.cwd().replaceAll("\\","/"):"/","cwd");/^win/i.test(globalThis.process?.platform);const y=c((e,n)=>{let r="",t=0,o=-1,s=0,a=null;for(let i=0;i<=e.length;++i){if(i<e.length)a=e[i];else{if(a==="/")break;a="/"}if(a==="/"){if(!(o===i-1||s===1))if(s===2){if(r.length<2||t!==2||!r.endsWith(".")||r.at(-2)!=="."){if(r.length>2){const u=r.lastIndexOf("/");u===-1?(r="",t=0):(r=r.slice(0,u),t=r.length-1-r.lastIndexOf("/")),o=i,s=0;continue}else if(r.length>0){r="",t=0,o=i,s=0;continue}}n&&(r+=r.length>0?"/..":"..",t=2)}else r.length>0?r+=`/${e.slice(o+1,i)}`:r=e.slice(o+1,i),t=i-o-1;o=i,s=0}else a==="."&&s!==-1?++s:s=-1}return r},"normalizeString"),d=c(e=>E.test(e),"isAbsolute"),z=c(function(e){if(e.length===0)return".";e=l(e);const n=D.exec(e),r=d(e),t=e.at(-1)==="/";return e=y(e,!r),e.length===0?r?"/":t?"./":".":(t&&(e+="/"),b.test(e)&&(e+="/"),n?r?`//${e}`:`//./${e}`:r&&!d(e)?`/${e}`:e)},"normalize"),T=c(function(...e){if(e.length===0)return".";let n;for(const r of e)r&&r.length>0&&(n===void 0?n=r:n+=`/${r}`);return n===void 0?".":z(n.replaceAll(/\/{2,}/g,"/"))},"join"),g=c(function(...e){e=e.map(t=>l(t));let n="",r=!1;for(let t=e.length-1;t>=-1&&!r;t--){const o=t>=0?e[t]:Z();!o||o.length===0||(n=`${o}/${n}`,r=d(o))}return n=y(n,!r),r&&!d(n)?`/${n}`:n.length>0?n:"."},"resolve");c(function(e){return l(e)},"toNamespacedPath");const q=c(function(e){return L.exec(l(e))?.[1]??""},"extname");c(function(e,n){const r=g(e).replace(m,"$1").split("/"),t=g(n).replace(m,"$1").split("/");if(t[0][1]===":"&&r[0][1]===":"&&r[0]!==t[0])return t.join("/");const o=[...r];for(const s of o){if(t[0]!==s)break;r.shift(),t.shift()}return[...r.map(()=>".."),...t].join("/")},"relative");const $=c(e=>{const n=l(e).replace(/\/$/,"").split("/").slice(0,-1);return n.length===1&&b.test(n[0])&&(n[0]+="/"),n.join("/")||(d(e)?"/":".")},"dirname");c(function(e){const n=[e.root,e.dir,e.base??e.name+e.ext].filter(Boolean);return l(e.root?g(...n):n.join("/"))},"format");const F=c((e,n)=>{const r=l(e).split("/").pop();return n&&r.endsWith(n)?r.slice(0,-n.length):r},"basename");c(function(e){let n=l(e).split("/").shift();n===""?n="/":n+="/";const r=F(e),t=q(r);return{base:r,dir:$(e),ext:t,name:r.slice(0,r.length-t.length),root:n}},"parse");var I=Object.defineProperty,h=f((e,n)=>I(e,"name",{value:n,configurable:!0}),"r");const J="last-update-check.json",w=h(e=>{const n=O.findCacheDirSync(e);if(n===void 0)throw new Error("Could not find cache directory");return T(n,J)},"getConfigFile"),M=h(e=>{const n=w(e);try{if(!p.existsSync(n))return;const{lastUpdateCheck:r}=JSON.parse(p.readFileSync(n,"utf8"));return r}catch{return}},"getLastUpdate"),W=h(e=>{const n=w(e),r=$(n);p.existsSync(r)||p.mkdirSync(r,{recursive:!0}),p.writeFileSync(n,JSON.stringify({lastUpdateCheck:Date.now()}))},"saveLastUpdate");var V=Object.defineProperty,B=f((e,n)=>V(e,"name",{value:n,configurable:!0}),"g");const G=B(async(e,n,r)=>{const t=r.replace("__NAME__",e);return await new Promise((o,s)=>{S.get(t,a=>{let i="";a.on("data",u=>i+=u),a.on("end",()=>{try{const u=JSON.parse(i)[n];u||s(new Error("Error getting version")),o(u)}catch{s(new Error("Could not parse version response"))}})}).on("error",a=>s(a))})},"getDistributionVersion");var R=Object.defineProperty,H=f((e,n)=>R(e,"name",{value:n,configurable:!0}),"i");const K=H(async({alwaysRun:e,debug:n,distTag:r="latest",pkg:t,registryUrl:o="https://registry.npmjs.org/-/package/__NAME__/dist-tags",updateCheckInterval:s=1e3*60*60*24})=>{const a=M(t.name);if(e||!a||a<Date.now()-s){const i=await G(t.name,r,o);if(W(t.name),A(i,t.version))return i;n&&console.error(`Latest version (${i}) not newer than current version (${t.version})`)}else n&&console.error(`Too recent to check for a new update. simpleUpdateNotifier() interval set to ${s}ms but only ${Date.now()-a}ms since last check.`);return null},"hasNewVersion");exports.default=K;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var j=Object.defineProperty;var u=(e,n)=>j(e,"name",{value:n,configurable:!0});import{existsSync as h,readFileSync as O,mkdirSync as k,writeFileSync as A}from"node:fs";import{findCacheDirSync as P}from"@visulima/find-cache-dir";import{get as x}from"node:https";var N=Object.defineProperty,S=u((e,n)=>N(e,"name",{value:n,configurable:!0}),"o$2");const U=S((e,n)=>{const r=e.split(".").map(Number),t=n.split(".").map(Number);for(const[o,s]of r.entries()){if(s>t[o])return!0;if(s<t[o])return!1}return!1},"semverGt");var C=Object.defineProperty,v=u((e,n)=>C(e,"name",{value:n,configurable:!0}),"u$1"),_=Object.defineProperty,E=v((e,n)=>_(e,"name",{value:n,configurable:!0}),"t");const D=/^[A-Z]:\//i,l=E((e="")=>e&&e.replaceAll("\\","/").replace(D,n=>n.toUpperCase()),"normalizeWindowsPath");var L=Object.defineProperty,c=v((e,n)=>L(e,"name",{value:n,configurable:!0}),"r");const Z=/^[/\\]{2}/,z=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Z]:[/\\]/i,$=/^[A-Z]:$/i,m=/^\/([A-Z]:)?$/i,F=/.(\.[^./]+)$/,I=c(()=>typeof process<"u"&&typeof process.cwd=="function"?process.cwd().replaceAll("\\","/"):"/","cwd");/^win/i.test(globalThis.process?.platform);const b=c((e,n)=>{let r="",t=0,o=-1,s=0,a=null;for(let i=0;i<=e.length;++i){if(i<e.length)a=e[i];else{if(a==="/")break;a="/"}if(a==="/"){if(!(o===i-1||s===1))if(s===2){if(r.length<2||t!==2||!r.endsWith(".")||r.at(-2)!=="."){if(r.length>2){const f=r.lastIndexOf("/");f===-1?(r="",t=0):(r=r.slice(0,f),t=r.length-1-r.lastIndexOf("/")),o=i,s=0;continue}else if(r.length>0){r="",t=0,o=i,s=0;continue}}n&&(r+=r.length>0?"/..":"..",t=2)}else r.length>0?r+=`/${e.slice(o+1,i)}`:r=e.slice(o+1,i),t=i-o-1;o=i,s=0}else a==="."&&s!==-1?++s:s=-1}return r},"normalizeString"),p=c(e=>z.test(e),"isAbsolute"),J=c(function(e){if(e.length===0)return".";e=l(e);const n=Z.exec(e),r=p(e),t=e.at(-1)==="/";return e=b(e,!r),e.length===0?r?"/":t?"./":".":(t&&(e+="/"),$.test(e)&&(e+="/"),n?r?`//${e}`:`//./${e}`:r&&!p(e)?`/${e}`:e)},"normalize"),T=c(function(...e){if(e.length===0)return".";let n;for(const r of e)r&&r.length>0&&(n===void 0?n=r:n+=`/${r}`);return n===void 0?".":J(n.replaceAll(/\/{2,}/g,"/"))},"join"),g=c(function(...e){e=e.map(t=>l(t));let n="",r=!1;for(let t=e.length-1;t>=-1&&!r;t--){const o=t>=0?e[t]:I();!o||o.length===0||(n=`${o}/${n}`,r=p(o))}return n=b(n,!r),r&&!p(n)?`/${n}`:n.length>0?n:"."},"resolve");c(function(e){return l(e)},"toNamespacedPath");const W=c(function(e){return F.exec(l(e))?.[1]??""},"extname");c(function(e,n){const r=g(e).replace(m,"$1").split("/"),t=g(n).replace(m,"$1").split("/");if(t[0][1]===":"&&r[0][1]===":"&&r[0]!==t[0])return t.join("/");const o=[...r];for(const s of o){if(t[0]!==s)break;r.shift(),t.shift()}return[...r.map(()=>".."),...t].join("/")},"relative");const y=c(e=>{const n=l(e).replace(/\/$/,"").split("/").slice(0,-1);return n.length===1&&$.test(n[0])&&(n[0]+="/"),n.join("/")||(p(e)?"/":".")},"dirname");c(function(e){const n=[e.root,e.dir,e.base??e.name+e.ext].filter(Boolean);return l(e.root?g(...n):n.join("/"))},"format");const M=c((e,n)=>{const r=l(e).split("/").pop();return n&&r.endsWith(n)?r.slice(0,-n.length):r},"basename");c(function(e){let n=l(e).split("/").shift();n===""?n="/":n+="/";const r=M(e),t=W(r);return{base:r,dir:y(e),ext:t,name:r.slice(0,r.length-t.length),root:n}},"parse");var V=Object.defineProperty,d=u((e,n)=>V(e,"name",{value:n,configurable:!0}),"r");const B="last-update-check.json",w=d(e=>{const n=P(e);if(n===void 0)throw new Error("Could not find cache directory");return T(n,B)},"getConfigFile"),G=d(e=>{const n=w(e);try{if(!h(n))return;const{lastUpdateCheck:r}=JSON.parse(O(n,"utf8"));return r}catch{return}},"getLastUpdate"),R=d(e=>{const n=w(e),r=y(n);h(r)||k(r,{recursive:!0}),A(n,JSON.stringify({lastUpdateCheck:Date.now()}))},"saveLastUpdate");var q=Object.defineProperty,H=u((e,n)=>q(e,"name",{value:n,configurable:!0}),"g");const K=H(async(e,n,r)=>{const t=r.replace("__NAME__",e);return await new Promise((o,s)=>{x(t,a=>{let i="";a.on("data",f=>i+=f),a.on("end",()=>{try{const f=JSON.parse(i)[n];f||s(new Error("Error getting version")),o(f)}catch{s(new Error("Could not parse version response"))}})}).on("error",a=>s(a))})},"getDistributionVersion");var Q=Object.defineProperty,X=u((e,n)=>Q(e,"name",{value:n,configurable:!0}),"i");const te=X(async({alwaysRun:e,debug:n,distTag:r="latest",pkg:t,registryUrl:o="https://registry.npmjs.org/-/package/__NAME__/dist-tags",updateCheckInterval:s=1e3*60*60*24})=>{const a=G(t.name);if(e||!a||a<Date.now()-s){const i=await K(t.name,r,o);if(R(t.name),U(i,t.version))return i;n&&console.error(`Latest version (${i}) not newer than current version (${t.version})`)}else n&&console.error(`Too recent to check for a new update. simpleUpdateNotifier() interval set to ${s}ms but only ${Date.now()-a}ms since last check.`);return null},"hasNewVersion");export{te as default};
|
package/dist/index.cjs
CHANGED
|
@@ -3,8 +3,8 @@ ${JSON.stringify(e)}`);const o=new O({...E,...n.options,style:{...E.style,...n.o
|
|
|
3
3
|
|
|
4
4
|
${JSON.stringify(e)}`)}};var Se=Object.defineProperty,Pe=c((t,e)=>Se(t,"name",{value:e,configurable:!0}),"a$1");let Te=class extends W{static{c(this,"c")}static{Pe(this,"OptionListSection")}constructor(e){super();let n=e.optionList??[];const o=Array.isArray(e.hide)?e.hide:[e.hide].filter(Boolean),r=Array.isArray(e.group)?e.group:[e.group].filter(Boolean);o.length>0&&(n=n.filter(s=>!o.includes(s.name))),e.header&&this.header(m(e.header)),r.length>0&&(n=n.filter(s=>{const i=r.includes("_none")&&!s.group,l=this.intersect(Array.isArray(s.group)?s.group:[s.group],r);return i||l?s:void 0}));const a=new O({chars:{bottom:"","bottom-left":"","bottom-mid":"","bottom-right":"",left:" ","left-mid":"",mid:"","mid-mid":"",middle:" ",right:"","right-mid":"",top:"","top-left":"","top-mid":"","top-right":""},colWidths:[40,40],style:{"padding-left":2,"padding-right":1},wordWrap:!0});n.forEach(s=>a.push([this.getOptionNames(s,e.reverseNameOrder??!1,e.isArgument??!1),m(s.description)])),this.add(a.toString()),this.lines.push("")}getOptionNames(e,n,o){if(!e.name)throw new TypeError("Invalid option definition, name is required.");let r=e.type?e.type.name.toLowerCase():"string";const a=e.multiple||e.lazyMultiple?"[]":"";r=m(e.typeLabel??`{underline ${r}${a}}`);let s;if(e.alias)if(e.name){const i=o?e.name:`{yellow --${e.name}}`;s=m(n?`{bold ${i}}, {bold -${e.alias}} ${r}`:`{bold -${e.alias}}, {bold ${i}} ${r}`)}else n?s=m(`{bold -${e.alias}} ${r}`):s=m(`{bold -${e.alias}} ${r}`);else s=m(`{bold ${o?e.name:`{yellow --${e.name}}`}} ${r}`);return s}intersect(e,n){return e.some(o=>n.includes(o))}};var Ie=Object.defineProperty,je=c((t,e)=>Ie(t,"name",{value:e,configurable:!0}),"o$3");const H=je(t=>(Array.isArray(t)?t:[t]).length===0?"":`
|
|
5
5
|
${t.map(e=>e.optionList?new Te(e).toString():new Re(e).toString()).join(`
|
|
6
|
-
`)}`,"commandLineUsage");var Ve=Object.defineProperty,_=c((t,e)=>Ve(t,"name",{value:e,configurable:!0}),"l$5");const k="__Other",D=_(t=>t.charAt(0).toUpperCase()+t.slice(1),"upperFirstChar"),Be=_((t,e,n,o)=>{t.debug("no command given, printing general help...");let r=[...new Set(n.values())].filter(s=>!s.hidden);o&&(r=r.filter(s=>s.group===o));const a=r.reduce((s,i)=>{const l=i.group??k;return s[l]||(s[l]=[]),s[l].push(i),s},{});t.raw(H([{content:`{cyan ${e.getCliName()}} {green <command>} [positional arguments] {yellow [options]}`,header:"{inverse.cyan Usage }"},...Object.keys(a).map(s=>({content:a[s].map(i=>{let l="";return typeof i.alias=="string"?l=i.alias:Array.isArray(i.alias)&&(l=i.alias.join(", ")),l!==""&&(l=` [${l}]`),[`{green ${i.name}} ${l}`,i.description??""]}),header:s===k||o?`{inverse.green Available${o?` ${D(o)}`:""} Commands }`:` {inverse.green ${D(s)} }`})),n.has("help")?{header:"{inverse.yellow Command Options }",optionList:n.get("help").options?.filter(s=>!s.hidden)}:void 0,{header:"{inverse.yellow Global Options }",optionList:C},{content:`Run "{cyan ${e.getCliName()}} {green help <command>}" or "{cyan ${e.getCliName()}} {green <command>} {yellow --help}" for help with a specific command.`,raw:!0}].filter(Boolean)))},"printGeneralHelp"),Ue=_((t,e,n,o)=>{const r=n.get(o),a=[];if(a.push({content:`{cyan ${e.getCliName()}} {green ${r.name}}${r.argument?" [positional arguments]":""}${r.options?" [options]":""}`,header:"{inverse.cyan Usage }"}),r.description&&a.push({content:r.description,header:"{inverse.green Description }"}),r.argument&&a.push({header:"Command Positional Arguments",isArgument:!0,optionList:[r.argument]}),Array.isArray(r.options)&&r.options.length>0&&a.push({header:"{inverse.yellow Command Options }",optionList:r.options.filter(s=>!s.hidden)}),a.push({header:"{inverse.yellow Global Options }",optionList:C}),r.alias!==void 0&&r.alias.length>0){let s=r.alias;typeof r.alias=="string"&&(s=[r.alias]),a.splice(1,0,{content:s,header:"Alias(es)"})}Array.isArray(r.examples)&&r.examples.length>0&&a.push({content:r.examples,header:"Examples"}),t.raw(H(a))},"printCommandHelp");class ke{static{c(this,"C")}static{_(this,"HelpCommand")}name="help";options=[{description:"Display only the specified group",name:"group",type:String}];commands;constructor(e){this.commands=e}execute(e){const{commandName:n,logger:o,options:r,runtime:a}=e,{footer:s,header:i}=a.getCommandSection();i&&o.raw(m(i)),n==="help"?Be(o,a,this.commands,r?.group):Ue(o,a,this.commands,n),s&&o.raw(m(s))}}var De=Object.defineProperty,qe=c((t,e)=>De(t,"name",{value:e,configurable:!0}),"s$7");const Me={alias:["v","V"],description:"Output the version number",execute:qe(({logger:t,runtime:e})=>{const n=e.getPackageVersion();n===void 0?(t.warn("Unknown version"),t.debug("The version number was not provided by the cli constructor.")):t.info(n)},"execute"),name:"version",options:[],usage:[]},q=16,Fe=32,Ge=64,R=128,w="positionals";var Ye=Object.defineProperty,We=c((t,e)=>Ye(t,"name",{value:e,configurable:!0}),"m$2");let He=class{static{c(this,"c")}static{We(this,"EmptyToolbox")}result;argv;options;argument;command;commandName;runtime;logger;constructor(e,n){this.commandName=e,this.command=n}};var Je=Object.defineProperty,ze=c((t,e)=>Je(t,"name",{value:e,configurable:!0}),"s$6");const Ke=ze(()=>{const t=process.env.CEREBRO_MIN_NODE_VERSION?Number(process.env.CEREBRO_MIN_NODE_VERSION):18,e=process.version.replace("v","");Number(/v([^.]+)/.exec(process.version)[1])<t&&(console.log(`cerebro supports a minimum Node version of ${t}. You have ${e}. Read our version support policy: https://github.com/visulima/visulima#supported-nodejs-versions`),process.exit(1))},"checkNodeVersion");var Qe=Object.defineProperty,Xe=c((t,e)=>Qe(t,"name",{value:e,configurable:!0}),"r$4");const Ze=/^-{1,2}(\w+)(=(\w+))?$/,J=Xe((t,e)=>{const n=Ze.exec(t);if(n==null)return{};const o=n[1],r=e.find(a=>a.name===o||a.alias===o);return r!==void 0?{argName:r.name,argValue:n[3],option:r}:{}},"getParameterOption");var et=Object.defineProperty,tt=c((t,e)=>et(t,"name",{value:e,configurable:!0}),"i$3");const b=tt(t=>t.type?.name==="Boolean","isBoolean");var nt=Object.defineProperty,S=c((t,e)=>nt(t,"name",{value:e,configurable:!0}),"n$2");const M=S((t,e)=>{if(e.type===void 0)return t;if(e.type.name==="Boolean"){if(t==="true"||t==="1")return e.type(!0);if(t==="false"||t==="0")return e.type(!1)}return e.type(t)},"convertType"),ot=new Set(["1","0","true","false"]),rt=S((t,e)=>{const n=S((o,r)=>{const{argName:a,argValue:s,option:i}=J(r,e),{lastOption:l}=o;return i&&b(i)&&s&&a?o.partial[a]=M(s,i):o.lastName&&l&&b(l)&&ot.has(r)&&(o.partial[o.lastName]=M(r,l)),{lastName:a,lastOption:i,partial:o.partial}},"getBooleanValue");return t.reduce(n,{partial:{}}).partial},"getBooleanValues");var at=Object.defineProperty,z=c((t,e)=>at(t,"name",{value:e,configurable:!0}),"p$1");const st=z(t=>{let e=t.type?t.type.name.toLowerCase():"string";const n=t.multiple??t.lazyMultiple?"[]":"";return e&&(e=e==="boolean"?"":`{underline ${e}${n}}`),e},"getTypeLabel"),it=z(t=>(b(t)||(t.typeLabel=t.typeLabel??st(t),t.defaultOption&&(t.typeLabel=`${t.typeLabel} (D)`),t.required&&(t.typeLabel=`${t.typeLabel} (R)`)),t),"mapOptionTypeLabel");var lt=Object.defineProperty,F=c((t,e)=>lt(t,"name",{value:e,configurable:!0}),"s$3");const ct=new Set(["1","0","true","false"]),pt=F((t,e)=>{const n=F((o,r)=>{const{argValue:a,option:s}=J(r,e),{lastOption:i}=o;if(i&&b(i)&&ct.has(r)){const l=[...o.args];return l.pop(),{args:l}}return s&&b(s)&&a?{args:o.args}:{args:[...o.args,r],lastOption:s}},"removeBooleanArguments");return t.reduce(n,{args:[]}).args},"removeBooleanValues");var dt=Object.defineProperty,K=c((t,e)=>dt(t,"name",{value:e,configurable:!0}),"e$2");const mt=new RegExp(/^-([^\d-])$/),ut=new RegExp(/^--(\S+)/),gt=new RegExp(/^-([^\d-]{2,})$/),ht=K(t=>mt.test(t)||ut.test(t)||gt.test(t),"isOption"),ft=K((t,e)=>{const n=e[0]&&ht(e[0])||e.length===0?null:e.shift()??null;if(!t.includes(n)){const o=new Error(`Command not recognised: ${n}`);throw o.command=n,o.name="INVALID_COMMAND",o}return{argv:e,command:n}},"commandLineCommands");var vt=Object.defineProperty,Q=c((t,e)=>vt(t,"name",{value:e,configurable:!0}),"i$1");const yt=Q((t,e)=>ue.distance(t,e)<=t.length/3||e.includes(t),"isSimilar"),G=Q((t,e)=>{const n=t.toLowerCase();return e.filter(o=>yt(o.toLowerCase(),n))},"findAlternatives");var bt=Object.defineProperty,$t=c((t,e)=>bt(t,"name",{value:e,configurable:!0}),"t$3");const Et=$t((t,e)=>t.filter(n=>n.required&&e[n.name]==null).filter(n=>n.type?.name==="Boolean"?(e[n.name]=!1,!1):!0),"listMissingArguments");var wt=Object.defineProperty,Ot=c((t,e)=>wt(t,"name",{value:e,configurable:!0}),"t$2");const Ct=Ot(t=>{const e=new Map;return t.forEach(n=>{e.set(n.name,{...e.get(n.name),...n})}),[...e.values()]},"mergeArguments");var At=Object.defineProperty,N=c((t,e)=>At(t,"name",{value:e,configurable:!0}),"e$1");const _t=N(()=>!!process.versions.electron,"isElectronApp"),Nt=N(()=>_t()&&!process.defaultApp,"isBundledElectronApp"),Lt=N(()=>Nt()?0:1,"getProcessArgvBinIndex"),xt=N(t=>t.slice(Lt()+1),"hideBin");var Rt=Object.defineProperty,X=c((t,e)=>Rt(t,"name",{value:e,configurable:!0}),"i");const St=" ",Pt=X((t,e)=>t.length===e.length&&t.every((n,o)=>n===e[o]),"equals"),Tt=X(t=>typeof t=="string"?t.split(St):Pt(t,process.argv)?xt(t):t,"parseRawCommand");var It=Object.defineProperty,jt=c((t,e)=>It(t,"name",{value:e,configurable:!0}),"t");const Vt=jt(t=>{process.on("uncaughtException",e=>{t.error(`Uncaught exception: ${e}`),e?.stack&&t.error(e.stack),process.exit(1)}),process.on("unhandledRejection",e=>{t.error(`Promise rejection: ${e}`),e?.stack&&t.error(e.stack),process.exit(1)})},"registerExceptionHandler");var Bt=Object.defineProperty,y=c((t,e)=>Bt(t,"name",{value:e,configurable:!0}),"c");const Ut="CI"in p.env&&("GITHUB_ACTIONS"in p.env||"GITLAB_CI"in p.env||"CIRCLECI"in p.env),kt=y(t=>t.charAt(0).toLowerCase()+t.slice(1),"lowerFirstChar");class Dt{static{c(this,"Cli")}static{y(this,"Cli")}logger;argv;cwd;cliName;packageVersion;packageName;extensions=[];commands;defaultCommand;updateNotifierOptions;commandSection;constructor(e,n={}){const{argv:o,cwd:r,packageName:a,packageVersion:s}={argv:p.argv,cwd:p.cwd(),...n};this.argv=Tt(o),this.argv.includes("--quiet")||this.argv.includes("-q")?p.env.CEREBRO_OUTPUT_LEVEL=String(q):this.argv.includes("--verbose")||this.argv.includes("-v")?p.env.CEREBRO_OUTPUT_LEVEL=String(Ge):this.argv.includes("--debug")||this.argv.includes("-vvv")||"DEBUG"in p.env?p.env.CEREBRO_OUTPUT_LEVEL=String(R):p.env.CEREBRO_OUTPUT_LEVEL=String(Fe);const i={32:"informational",64:"trace",128:"debug"},l=[new j.MessageFormatterProcessor];p.env.CEREBRO_OUTPUT_LEVEL===String(R)&&l.push(new j.CallerProcessor),this.logger=le.createPail({logLevel:p.env.CEREBRO_OUTPUT_LEVEL?i[p.env.CEREBRO_OUTPUT_LEVEL]??"informational":"informational",processors:l,...n.logger}),p.env.CEREBRO_OUTPUT_LEVEL===String(q)&&this.logger.disable(),Ke(),Vt(this.logger),this.cliName=e,this.packageVersion=s,this.packageName=a,this.cwd=r,this.defaultCommand="help",this.commandSection={header:`${this.cliName}${this.packageVersion?` v${this.packageVersion}`:""}`},this.commands=new Map,this.addCoreExtensions(),this.addCommand(Me),this.addCommand(new ke(this.commands))}setCommandSection(e){return this.commandSection=e,this}getCommandSection(){return this.commandSection}setDefaultCommand(e){return this.defaultCommand=e,this}addCommand(e){if(this.commands.has(e.name))throw new Error(`Ignored command with name "${e.name}", it was found in the command list.`);if(e.options?.map(n=>it(n)),this.validateDoubleOptions(e),this.addNegatableOption(e),e.options?.forEach(n=>{n.__camelCaseName__=Oe(n.name)}),this.commands.set(e.name,e),e.alias!==void 0){let n=e.alias;typeof e.alias=="string"&&(n=[e.alias]),n.forEach(o=>{if(this.logger.debug("adding alias",o),this.commands.has(o))throw new Error(`Ignoring command alias "${o}, command with the same name was found."`);this.commands.set(o,e)})}return this}addExtension(e){return this.extensions.push(e),this}enableUpdateNotifier(e={}){if(!this.packageName||!this.packageVersion)throw new Error("Cannot enable update notifier without package name and version.");const n=Object.keys(e);if(n.length>0&&!n.includes("alwaysRun")&&!n.includes("distTag")&&!n.includes("updateCheckInterval"))throw new Error("Invalid update notifier options, please check the documentation.");return this.updateNotifierOptions={alwaysRun:!1,debug:p.env.CEREBRO_OUTPUT_LEVEL===String(R),distTag:"latest",pkg:{name:this.packageName,version:this.packageVersion},updateCheckInterval:1e3*60*60*24,...e},this}getCliName(){return this.cliName}getPackageVersion(){return this.packageVersion}getPackageName(){return this.packageName}getCommands(){return this.commands}getCwd(){return this.cwd}async run(e={}){const{shouldExitProcess:n=!0,...o}=e,r=[...this.commands.keys()];let a;this.logger.debug(`process.execPath: ${p.execPath}`),this.logger.debug(`process.execArgv: ${p.execArgv.join(" ")}`),this.logger.debug(`process.argv: ${p.argv.join(" ")}`);try{a=ft([null,...r],this.argv)}catch(h){if(h.name==="INVALID_COMMAND"&&h.command){let T="";const I=G(h.command,[...this.commands.keys()]);I.length>0&&(T=` Did you mean: \r
|
|
6
|
+
`)}`,"commandLineUsage");var Ve=Object.defineProperty,_=c((t,e)=>Ve(t,"name",{value:e,configurable:!0}),"l$5");const k="__Other",D=_(t=>t.charAt(0).toUpperCase()+t.slice(1),"upperFirstChar"),Be=_((t,e,n,o)=>{t.debug("no command given, printing general help...");let r=[...new Set(n.values())].filter(s=>!s.hidden);o&&(r=r.filter(s=>s.group===o));const a=r.reduce((s,i)=>{const l=i.group??k;return s[l]||(s[l]=[]),s[l].push(i),s},{});t.raw(H([{content:`{cyan ${e.getCliName()}} {green <command>} [positional arguments] {yellow [options]}`,header:"{inverse.cyan Usage }"},...Object.keys(a).map(s=>({content:a[s].map(i=>{let l="";return typeof i.alias=="string"?l=i.alias:Array.isArray(i.alias)&&(l=i.alias.join(", ")),l!==""&&(l=` [${l}]`),[`{green ${i.name}} ${l}`,i.description??""]}),header:s===k||o?`{inverse.green Available${o?` ${D(o)}`:""} Commands }`:` {inverse.green ${D(s)} }`})),n.has("help")?{header:"{inverse.yellow Command Options }",optionList:n.get("help").options?.filter(s=>!s.hidden)}:void 0,{header:"{inverse.yellow Global Options }",optionList:C},{content:`Run "{cyan ${e.getCliName()}} {green help <command>}" or "{cyan ${e.getCliName()}} {green <command>} {yellow --help}" for help with a specific command.`,raw:!0}].filter(Boolean)))},"printGeneralHelp"),Ue=_((t,e,n,o)=>{const r=n.get(o),a=[];if(a.push({content:`{cyan ${e.getCliName()}} {green ${r.name}}${r.argument?" [positional arguments]":""}${r.options?" [options]":""}`,header:"{inverse.cyan Usage }"}),r.description&&a.push({content:r.description,header:"{inverse.green Description }"}),r.argument&&a.push({header:"Command Positional Arguments",isArgument:!0,optionList:[r.argument]}),Array.isArray(r.options)&&r.options.length>0&&a.push({header:"{inverse.yellow Command Options }",optionList:r.options.filter(s=>!s.hidden)}),a.push({header:"{inverse.yellow Global Options }",optionList:C}),r.alias!==void 0&&r.alias.length>0){let s=r.alias;typeof r.alias=="string"&&(s=[r.alias]),a.splice(1,0,{content:s,header:"Alias(es)"})}Array.isArray(r.examples)&&r.examples.length>0&&a.push({content:r.examples,header:"Examples"}),t.raw(H(a))},"printCommandHelp");class ke{static{c(this,"C")}static{_(this,"HelpCommand")}name="help";options=[{description:"Display only the specified group",name:"group",type:String}];commands;constructor(e){this.commands=e}execute(e){const{commandName:n,logger:o,options:r,runtime:a}=e,{footer:s,header:i}=a.getCommandSection();i&&o.raw(m(i)),n==="help"?Be(o,a,this.commands,r?.group):Ue(o,a,this.commands,n),s&&o.raw(m(s))}}var De=Object.defineProperty,qe=c((t,e)=>De(t,"name",{value:e,configurable:!0}),"s$7");const Me={alias:["v","V"],description:"Output the version number",execute:qe(({logger:t,runtime:e})=>{const n=e.getPackageVersion();n===void 0?(t.warn("Unknown version"),t.debug("The version number was not provided by the cli constructor.")):t.info(n)},"execute"),name:"version",options:[],usage:[]},q=16,Fe=32,Ge=64,R=128,w="positionals";var Ye=Object.defineProperty,We=c((t,e)=>Ye(t,"name",{value:e,configurable:!0}),"m$2");let He=class{static{c(this,"c")}static{We(this,"EmptyToolbox")}result;argv;options;argument;command;commandName;runtime;logger;constructor(e,n){this.commandName=e,this.command=n}};var Je=Object.defineProperty,ze=c((t,e)=>Je(t,"name",{value:e,configurable:!0}),"s$6");const Ke=ze(()=>{const t=process.env.CEREBRO_MIN_NODE_VERSION?Number(process.env.CEREBRO_MIN_NODE_VERSION):18,e=process.version.replace("v","");Number(/v([^.]+)/.exec(process.version)[1])<t&&(console.log(`cerebro supports a minimum Node version of ${t}. You have ${e}. Read our version support policy: https://github.com/visulima/visulima#supported-nodejs-versions`),process.exit(1))},"checkNodeVersion");var Qe=Object.defineProperty,Xe=c((t,e)=>Qe(t,"name",{value:e,configurable:!0}),"r$4");const Ze=/^-{1,2}(\w+)(=(\w+))?$/,J=Xe((t,e)=>{const n=Ze.exec(t);if(n==null)return{};const o=n[1],r=e.find(a=>a.name===o||a.alias===o);return r!==void 0?{argName:r.name,argValue:n[3],option:r}:{}},"getParameterOption");var et=Object.defineProperty,tt=c((t,e)=>et(t,"name",{value:e,configurable:!0}),"i$3");const b=tt(t=>t.type?.name==="Boolean","isBoolean");var nt=Object.defineProperty,S=c((t,e)=>nt(t,"name",{value:e,configurable:!0}),"n$2");const M=S((t,e)=>{if(e.type===void 0)return t;if(e.type.name==="Boolean"){if(t==="true"||t==="1")return e.type(!0);if(t==="false"||t==="0")return e.type(!1)}return e.type(t)},"convertType"),ot=new Set(["1","0","true","false"]),rt=S((t,e)=>{const n=S((o,r)=>{const{argName:a,argValue:s,option:i}=J(r,e),{lastOption:l}=o;return i&&b(i)&&s&&a?o.partial[a]=M(s,i):o.lastName&&l&&b(l)&&ot.has(r)&&(o.partial[o.lastName]=M(r,l)),{lastName:a,lastOption:i,partial:o.partial}},"getBooleanValue");return t.reduce(n,{partial:{}}).partial},"getBooleanValues");var at=Object.defineProperty,z=c((t,e)=>at(t,"name",{value:e,configurable:!0}),"p$1");const st=z(t=>{let e=t.type?t.type.name.toLowerCase():"string";const n=t.multiple??t.lazyMultiple?"[]":"";return e&&(e=e==="boolean"?"":`{underline ${e}${n}}`),e},"getTypeLabel"),it=z(t=>(b(t)||(t.typeLabel=t.typeLabel??st(t),t.defaultOption&&(t.typeLabel=`${t.typeLabel} (D)`),t.required&&(t.typeLabel=`${t.typeLabel} (R)`)),t),"mapOptionTypeLabel");var lt=Object.defineProperty,F=c((t,e)=>lt(t,"name",{value:e,configurable:!0}),"s$3");const ct=new Set(["1","0","true","false"]),pt=F((t,e)=>{const n=F((o,r)=>{const{argValue:a,option:s}=J(r,e),{lastOption:i}=o;if(i&&b(i)&&ct.has(r)){const l=[...o.args];return l.pop(),{args:l}}return s&&b(s)&&a?{args:o.args}:{args:[...o.args,r],lastOption:s}},"removeBooleanArguments");return t.reduce(n,{args:[]}).args},"removeBooleanValues");var dt=Object.defineProperty,K=c((t,e)=>dt(t,"name",{value:e,configurable:!0}),"e$2");const mt=new RegExp(/^-([^\d-])$/),ut=new RegExp(/^--(\S+)/),gt=new RegExp(/^-([^\d-]{2,})$/),ht=K(t=>mt.test(t)||ut.test(t)||gt.test(t),"isOption"),ft=K((t,e)=>{const n=e[0]&&ht(e[0])||e.length===0?null:e.shift()??null;if(!t.includes(n)){const o=new Error(`Command not recognised: ${n}`);throw o.command=n,o.name="INVALID_COMMAND",o}return{argv:e,command:n}},"commandLineCommands");var vt=Object.defineProperty,Q=c((t,e)=>vt(t,"name",{value:e,configurable:!0}),"i$1");const yt=Q((t,e)=>ue.distance(t,e)<=t.length/3||e.includes(t),"isSimilar"),G=Q((t,e)=>{const n=t.toLowerCase();return e.filter(o=>yt(o.toLowerCase(),n))},"findAlternatives");var bt=Object.defineProperty,$t=c((t,e)=>bt(t,"name",{value:e,configurable:!0}),"t$3");const Et=$t((t,e)=>t.filter(n=>n.required&&e[n.name]==null).filter(n=>n.type?.name==="Boolean"?(e[n.name]=!1,!1):!0),"listMissingArguments");var wt=Object.defineProperty,Ot=c((t,e)=>wt(t,"name",{value:e,configurable:!0}),"t$2");const Ct=Ot(t=>{const e=new Map;return t.forEach(n=>{e.set(n.name,{...e.get(n.name),...n})}),[...e.values()]},"mergeArguments");var At=Object.defineProperty,N=c((t,e)=>At(t,"name",{value:e,configurable:!0}),"e$1");const _t=N(()=>!!process.versions.electron,"isElectronApp"),Nt=N(()=>_t()&&!process.defaultApp,"isBundledElectronApp"),Lt=N(()=>Nt()?0:1,"getProcessArgvBinIndex"),xt=N(t=>t.slice(Lt()+1),"hideBin");var Rt=Object.defineProperty,X=c((t,e)=>Rt(t,"name",{value:e,configurable:!0}),"i");const St=" ",Pt=X((t,e)=>t.length===e.length&&t.every((n,o)=>n===e[o]),"equals"),Tt=X(t=>typeof t=="string"?t.split(St):Pt(t,process.argv)?xt(t):t,"parseRawCommand");var It=Object.defineProperty,jt=c((t,e)=>It(t,"name",{value:e,configurable:!0}),"t");const Vt=jt(t=>{process.on("uncaughtException",e=>{t.error(`Uncaught exception: ${e}`),e?.stack&&t.error(e.stack),process.exit(1)}),process.on("unhandledRejection",e=>{t.error(`Promise rejection: ${e}`),e?.stack&&t.error(e.stack),process.exit(1)})},"registerExceptionHandler");var Bt=Object.defineProperty,y=c((t,e)=>Bt(t,"name",{value:e,configurable:!0}),"g");const Ut="CI"in p.env&&("GITHUB_ACTIONS"in p.env||"GITLAB_CI"in p.env||"CIRCLECI"in p.env),kt=y(t=>t.charAt(0).toLowerCase()+t.slice(1),"lowerFirstChar");class Dt{static{c(this,"Cli")}static{y(this,"Cli")}logger;argv;cwd;cliName;packageVersion;packageName;extensions=[];commands;defaultCommand;updateNotifierOptions;commandSection;constructor(e,n={}){const{argv:o,cwd:r,packageName:a,packageVersion:s}={argv:p.argv,cwd:p.cwd(),...n};this.argv=Tt(o),this.argv.includes("--quiet")||this.argv.includes("-q")?p.env.CEREBRO_OUTPUT_LEVEL=String(q):this.argv.includes("--verbose")||this.argv.includes("-v")?p.env.CEREBRO_OUTPUT_LEVEL=String(Ge):this.argv.includes("--debug")||this.argv.includes("-vvv")||"DEBUG"in p.env?p.env.CEREBRO_OUTPUT_LEVEL=String(R):p.env.CEREBRO_OUTPUT_LEVEL=String(Fe);const i={32:"informational",64:"trace",128:"debug"},l=[new j.MessageFormatterProcessor];p.env.CEREBRO_OUTPUT_LEVEL===String(R)&&l.push(new j.CallerProcessor),this.logger=le.createPail({logLevel:p.env.CEREBRO_OUTPUT_LEVEL?i[p.env.CEREBRO_OUTPUT_LEVEL]??"informational":"informational",processors:l,...n.logger}),p.env.CEREBRO_OUTPUT_LEVEL===String(q)&&this.logger.disable(),Ke(),Vt(this.logger),this.cliName=e,this.packageVersion=s,this.packageName=a,this.cwd=r,this.defaultCommand="help",this.commandSection={header:`${this.cliName}${this.packageVersion?` v${this.packageVersion}`:""}`},this.commands=new Map,this.addCoreExtensions(),this.addCommand(Me),this.addCommand(new ke(this.commands))}setCommandSection(e){return this.commandSection=e,this}getCommandSection(){return this.commandSection}setDefaultCommand(e){return this.defaultCommand=e,this}addCommand(e){if(this.commands.has(e.name))throw new Error(`Ignored command with name "${e.name}", it was found in the command list.`);if(e.options?.map(n=>it(n)),this.validateDoubleOptions(e),this.addNegatableOption(e),e.options?.forEach(n=>{n.__camelCaseName__=Oe(n.name)}),this.commands.set(e.name,e),e.alias!==void 0){let n=e.alias;typeof e.alias=="string"&&(n=[e.alias]),n.forEach(o=>{if(this.logger.debug("adding alias",o),this.commands.has(o))throw new Error(`Ignoring command alias "${o}, command with the same name was found."`);this.commands.set(o,e)})}return this}addExtension(e){return this.extensions.push(e),this}enableUpdateNotifier(e={}){if(!this.packageName||!this.packageVersion)throw new Error("Cannot enable update notifier without package name and version.");const n=Object.keys(e);if(n.length>0&&!n.includes("alwaysRun")&&!n.includes("distTag")&&!n.includes("updateCheckInterval"))throw new Error("Invalid update notifier options, please check the documentation.");return this.updateNotifierOptions={alwaysRun:!1,debug:p.env.CEREBRO_OUTPUT_LEVEL===String(R),distTag:"latest",pkg:{name:this.packageName,version:this.packageVersion},updateCheckInterval:1e3*60*60*24,...e},this}getCliName(){return this.cliName}getPackageVersion(){return this.packageVersion}getPackageName(){return this.packageName}getCommands(){return this.commands}getCwd(){return this.cwd}async run(e={}){const{shouldExitProcess:n=!0,...o}=e,r=[...this.commands.keys()];let a;this.logger.debug(`process.execPath: ${p.execPath}`),this.logger.debug(`process.execArgv: ${p.execArgv.join(" ")}`),this.logger.debug(`process.argv: ${p.argv.join(" ")}`);try{a=ft([null,...r],this.argv)}catch(h){if(h.name==="INVALID_COMMAND"&&h.command){let T="";const I=G(h.command,[...this.commands.keys()]);I.length>0&&(T=` Did you mean: \r
|
|
7
7
|
- ${I.join(` \r
|
|
8
8
|
- `)}`),this.logger.error(`"${h.command}" is not an available command.${T}`)}else this.logger.error(h);return n?p.exit(1):void 0}const s=a.command??this.defaultCommand,i=this.commands.get(s);if(typeof i.execute!="function")return this.logger.error(`Command "${i.name}" has no function to execute.`),n?p.exit(1):void 0;const l=a.argv;this.logger.debug(`command '${s}' found, parsing command args: ${l.join(", ")}`);let d=Ct([...i.options??[],...C]);d.forEach(h=>{if(h.multiple&&h.lazyMultiple)throw new Error(`Argument "${h.name}" cannot have both multiple and lazyMultiple options, please choose one.`)}),i.argument&&(this.logger.debug("command has positional argument, parsing them..."),d=[{defaultOption:!0,description:i.argument?.description,group:"positionals",multiple:!0,name:w,type:i.argument?.type,typeLabel:i.argument?.typeLabel},...d]);const g=ge(d,{argv:pt(l,i.options??[]),camelCase:!0,partial:!0,stopAtFirstUnknown:!0}),$=rt(l,i.options??[]),f={...g,_all:{...g._all,...$}};this.validateCommandOptions(d,f,i);const u=new He(i.name,i);u.runtime=this,await this.registerExtensions(u),await this.updateNotifier(u);const{_all:L,positionals:Z}=f;return L[w]&&delete L[w],u.argument=Z?.[w]??[],u.argv=this.argv,u.options={...L,...o},this.mapNegatableOptions(u,i),this.mapImpliesOptions(u,i),this.validateCommandArgsForConflicts(d,u.options,i),this.logger.debug("command options parsed from options:"),this.logger.debug(JSON.stringify(u.options,null,2)),this.logger.debug("command argument parsed from argument:"),this.logger.debug(JSON.stringify(u.argument,null,2)),await this.prepareToolboxResult(f,u,i),n?p.exit(0):void 0}validateDoubleOptions(e){if(Array.isArray(e.options)){const n=e.options.reduce((a,s)=>{const i=`${s.name}-${s.alias}`;return a[i]||(a[i]=[]),a[i].push(s),a},{}),o=Object.values(n).filter(a=>a.length>1);let r="";if(o.forEach(a=>{const s=a[0],i=a[1];let l="alias";s.name===i.name&&(l="name",s.alias===i.alias&&(l+=" and alias")),r+=`Cannot add option ${l} "${JSON.stringify(i)}" to command "${e.name}" due to conflicting option ${JSON.stringify(s)}
|
|
9
9
|
`}),r.length>0)throw new Error(r)}}addCoreExtensions(){this.addExtension({execute:y(e=>{e.logger=this.logger},"execute"),name:"logger"})}async prepareToolboxResult(e,n,o){if(e.global?.help){this.logger.debug("'--help' option found, running 'help' for given command...");const r=this.commands.get("help");if(!r)throw new Error("Help command not found.");await r.execute(n);return}if(e.global?.version||e.global?.V){this.logger.debug("'--version' option found, running 'version' for given command...");const r=this.commands.get("version");if(!r)throw new Error("Version command not found.");await r.execute(n);return}await o.execute(n)}async updateNotifier({logger:e}){if(this.updateNotifierOptions?.alwaysRun||!(p.env.NO_UPDATE_NOTIFIER||p.env.NODE_ENV==="test"||this.argv.includes("--no-update-notifier")||Ut)&&this.updateNotifierOptions){e.raw("Checking for updates...");const n=await(await import("./chunks/has-new-version.cjs").then(o=>o.default))(this.updateNotifierOptions);if(n){const o="Update available "+v.dim(this.packageVersion+"")+v.reset(" → ")+v.green(n);this.logger.error(ie.boxen(o,{borderColor:y(r=>v.yellow(r),"borderColor"),borderStyle:"round",margin:1,padding:1,textAlignment:"center"}))}}}validateCommandOptions(e,n,o){const r=Et(e,n);if(r.length>0)throw new Error(`You called the command "${o.name}" without the required options: ${r.map(a=>a.name).join(", ")}`);if(n._unknown&&n._unknown.length>0){const a=[];if(n._unknown.forEach(s=>{const i=s.startsWith("--");let l=`Found unknown ${i?"option":"argument"} "${s}"`;if(i){const d=G(s.replace("--",""),[...(o.options??[]).map(g=>g.name),...C.map(g=>g.name)]);if(d.length>0){const[g,...$]=d.map(f=>`--${f}`);l+=$.length>0?`, did you mean ${g} or ${$.join(", ")}?`:`, did you mean ${g}?`}}a.push(l)}),a.length>0)throw new Error(a.join(`
|
|
10
|
-
`))}}validateCommandArgsForConflicts(e,n,o){const r=e.filter(a=>a.conflicts!==void 0);if(r.length>0){const a=r.find(s=>Array.isArray(s.conflicts)?s.conflicts.some(i=>n[i]!==void 0):n[s.conflicts]!==void 0);if(a)throw new Error(`You called the command "${o.name}" with conflicting options: ${a.name} and ${typeof a.conflicts=="string"?a.conflicts:a.conflicts?.join(", ")}`)}}addNegatableOption(e){Array.isArray(e.options)&&e.options.forEach(n=>{if(n.name.startsWith("no-")&&!e.options.some(o=>o.name===n.name.replace("no-",""))){if(n.type!==Boolean){this.logger.debug(`Cannot add negated option "${n.name}" to command "${e.name}" because it is not a boolean.`);return}const o={...n,defaultValue:n.defaultValue===void 0?!0:!n.defaultValue,name:`${n.name.replace("no-","")}`};e.options.push(o)}})}async registerExtensions(e){const n=y(async o=>typeof o.execute!="function"?(this.logger.warn(`Skipped ${o.name} because execute is not a function.`),null):(await o.execute(e),null),"callback");for(const o of this.extensions)await n(o)}mapNegatableOptions(e,n){Object.entries(e.options).forEach(([o,r])=>{if(/^no\w+/.test(o)){const a=kt(o.replace("no",""));this.logger.debug(`mapping negated option "${o}" to "${a}"`),e.options[a]=!r,n.options?.forEach(s=>{s.name===a&&(s.__negated__=!0)})}})}mapImpliesOptions(e,n){Object.keys(e.options).forEach(o=>{const r=n.options?.find(a=>a.__camelCaseName__===o&&a.__negated__===void 0&&a.implies!==void 0);if(r?.implies){const a=r.implies;Object.entries(a).forEach(([s,i])=>{if(e.options[s]===void 0)e.options[s]=i;else{const l=n.options?.find(d=>d.name===s);(l?.defaultValue===void 0||e.options[s]===l.defaultValue)&&(e.options[s]=i)}})}})}}module.exports=Dt;
|
|
10
|
+
`))}}validateCommandArgsForConflicts(e,n,o){const r=e.filter(a=>a.conflicts!==void 0);if(r.length>0){const a=r.find(s=>Array.isArray(s.conflicts)?s.conflicts.some(i=>n[i]!==void 0)&&n[s.name]!==void 0:n[s.conflicts]!==void 0&&n[s.name]!==void 0);if(a)throw new Error(`You called the command "${o.name}" with conflicting options: ${a.name} and ${typeof a.conflicts=="string"?a.conflicts:a.conflicts?.join(", ")}`)}}addNegatableOption(e){Array.isArray(e.options)&&e.options.forEach(n=>{if(n.name.startsWith("no-")&&!e.options.some(o=>o.name===n.name.replace("no-",""))){if(n.type!==Boolean){this.logger.debug(`Cannot add negated option "${n.name}" to command "${e.name}" because it is not a boolean.`);return}const o={...n,defaultValue:n.defaultValue===void 0?!0:!n.defaultValue,name:`${n.name.replace("no-","")}`};e.options.push(o)}})}async registerExtensions(e){const n=y(async o=>typeof o.execute!="function"?(this.logger.warn(`Skipped ${o.name} because execute is not a function.`),null):(await o.execute(e),null),"callback");for(const o of this.extensions)await n(o)}mapNegatableOptions(e,n){Object.entries(e.options).forEach(([o,r])=>{if(/^no\w+/.test(o)){const a=kt(o.replace("no",""));this.logger.debug(`mapping negated option "${o}" to "${a}"`),e.options[a]=!r,n.options?.forEach(s=>{s.name===a&&(s.__negated__=!0)})}})}mapImpliesOptions(e,n){Object.keys(e.options).forEach(o=>{const r=n.options?.find(a=>a.__camelCaseName__===o&&a.__negated__===void 0&&a.implies!==void 0);if(r?.implies){const a=r.implies;Object.entries(a).forEach(([s,i])=>{if(e.options[s]===void 0)e.options[s]=i;else{const l=n.options?.find(d=>d.name===s);(l?.defaultValue===void 0||e.options[s]===l.defaultValue)&&(e.options[s]=i)}})}})}}module.exports=Dt;
|
package/dist/index.mjs
CHANGED
|
@@ -3,8 +3,8 @@ ${JSON.stringify(e)}`);const n=new w({...$,...o.options,style:{...$.style,...o.o
|
|
|
3
3
|
|
|
4
4
|
${JSON.stringify(e)}`)}};var xe=Object.defineProperty,Re=c((t,e)=>xe(t,"name",{value:e,configurable:!0}),"a$1");let Se=class extends G{static{c(this,"c")}static{Re(this,"OptionListSection")}constructor(e){super();let o=e.optionList??[];const n=Array.isArray(e.hide)?e.hide:[e.hide].filter(Boolean),a=Array.isArray(e.group)?e.group:[e.group].filter(Boolean);n.length>0&&(o=o.filter(s=>!n.includes(s.name))),e.header&&this.header(m(e.header)),a.length>0&&(o=o.filter(s=>{const i=a.includes("_none")&&!s.group,l=this.intersect(Array.isArray(s.group)?s.group:[s.group],a);return i||l?s:void 0}));const r=new w({chars:{bottom:"","bottom-left":"","bottom-mid":"","bottom-right":"",left:" ","left-mid":"",mid:"","mid-mid":"",middle:" ",right:"","right-mid":"",top:"","top-left":"","top-mid":"","top-right":""},colWidths:[40,40],style:{"padding-left":2,"padding-right":1},wordWrap:!0});o.forEach(s=>r.push([this.getOptionNames(s,e.reverseNameOrder??!1,e.isArgument??!1),m(s.description)])),this.add(r.toString()),this.lines.push("")}getOptionNames(e,o,n){if(!e.name)throw new TypeError("Invalid option definition, name is required.");let a=e.type?e.type.name.toLowerCase():"string";const r=e.multiple||e.lazyMultiple?"[]":"";a=m(e.typeLabel??`{underline ${a}${r}}`);let s;if(e.alias)if(e.name){const i=n?e.name:`{yellow --${e.name}}`;s=m(o?`{bold ${i}}, {bold -${e.alias}} ${a}`:`{bold -${e.alias}}, {bold ${i}} ${a}`)}else o?s=m(`{bold -${e.alias}} ${a}`):s=m(`{bold -${e.alias}} ${a}`);else s=m(`{bold ${n?e.name:`{yellow --${e.name}}`}} ${a}`);return s}intersect(e,o){return e.some(n=>o.includes(n))}};var Pe=Object.defineProperty,Te=c((t,e)=>Pe(t,"name",{value:e,configurable:!0}),"o$3");const Y=Te(t=>(Array.isArray(t)?t:[t]).length===0?"":`
|
|
5
5
|
${t.map(e=>e.optionList?new Se(e).toString():new _e(e).toString()).join(`
|
|
6
|
-
`)}`,"commandLineUsage");var Ie=Object.defineProperty,C=c((t,e)=>Ie(t,"name",{value:e,configurable:!0}),"l$5");const B="__Other",U=C(t=>t.charAt(0).toUpperCase()+t.slice(1),"upperFirstChar"),je=C((t,e,o,n)=>{t.debug("no command given, printing general help...");let a=[...new Set(o.values())].filter(s=>!s.hidden);n&&(a=a.filter(s=>s.group===n));const r=a.reduce((s,i)=>{const l=i.group??B;return s[l]||(s[l]=[]),s[l].push(i),s},{});t.raw(Y([{content:`{cyan ${e.getCliName()}} {green <command>} [positional arguments] {yellow [options]}`,header:"{inverse.cyan Usage }"},...Object.keys(r).map(s=>({content:r[s].map(i=>{let l="";return typeof i.alias=="string"?l=i.alias:Array.isArray(i.alias)&&(l=i.alias.join(", ")),l!==""&&(l=` [${l}]`),[`{green ${i.name}} ${l}`,i.description??""]}),header:s===B||n?`{inverse.green Available${n?` ${U(n)}`:""} Commands }`:` {inverse.green ${U(s)} }`})),o.has("help")?{header:"{inverse.yellow Command Options }",optionList:o.get("help").options?.filter(s=>!s.hidden)}:void 0,{header:"{inverse.yellow Global Options }",optionList:O},{content:`Run "{cyan ${e.getCliName()}} {green help <command>}" or "{cyan ${e.getCliName()}} {green <command>} {yellow --help}" for help with a specific command.`,raw:!0}].filter(Boolean)))},"printGeneralHelp"),Ve=C((t,e,o,n)=>{const a=o.get(n),r=[];if(r.push({content:`{cyan ${e.getCliName()}} {green ${a.name}}${a.argument?" [positional arguments]":""}${a.options?" [options]":""}`,header:"{inverse.cyan Usage }"}),a.description&&r.push({content:a.description,header:"{inverse.green Description }"}),a.argument&&r.push({header:"Command Positional Arguments",isArgument:!0,optionList:[a.argument]}),Array.isArray(a.options)&&a.options.length>0&&r.push({header:"{inverse.yellow Command Options }",optionList:a.options.filter(s=>!s.hidden)}),r.push({header:"{inverse.yellow Global Options }",optionList:O}),a.alias!==void 0&&a.alias.length>0){let s=a.alias;typeof a.alias=="string"&&(s=[a.alias]),r.splice(1,0,{content:s,header:"Alias(es)"})}Array.isArray(a.examples)&&a.examples.length>0&&r.push({content:a.examples,header:"Examples"}),t.raw(Y(r))},"printCommandHelp");class Be{static{c(this,"C")}static{C(this,"HelpCommand")}name="help";options=[{description:"Display only the specified group",name:"group",type:String}];commands;constructor(e){this.commands=e}execute(e){const{commandName:o,logger:n,options:a,runtime:r}=e,{footer:s,header:i}=r.getCommandSection();i&&n.raw(m(i)),o==="help"?je(n,r,this.commands,a?.group):Ve(n,r,this.commands,o),s&&n.raw(m(s))}}var Ue=Object.defineProperty,ke=c((t,e)=>Ue(t,"name",{value:e,configurable:!0}),"s$7");const De={alias:["v","V"],description:"Output the version number",execute:ke(({logger:t,runtime:e})=>{const o=e.getPackageVersion();o===void 0?(t.warn("Unknown version"),t.debug("The version number was not provided by the cli constructor.")):t.info(o)},"execute"),name:"version",options:[],usage:[]},k=16,Me=32,Fe=64,_=128,E="positionals";var qe=Object.defineProperty,Ge=c((t,e)=>qe(t,"name",{value:e,configurable:!0}),"m$2");let Ye=class{static{c(this,"c")}static{Ge(this,"EmptyToolbox")}result;argv;options;argument;command;commandName;runtime;logger;constructor(e,o){this.commandName=e,this.command=o}};var We=Object.defineProperty,He=c((t,e)=>We(t,"name",{value:e,configurable:!0}),"s$6");const Je=He(()=>{const t=process.env.CEREBRO_MIN_NODE_VERSION?Number(process.env.CEREBRO_MIN_NODE_VERSION):18,e=process.version.replace("v","");Number(/v([^.]+)/.exec(process.version)[1])<t&&(console.log(`cerebro supports a minimum Node version of ${t}. You have ${e}. Read our version support policy: https://github.com/visulima/visulima#supported-nodejs-versions`),process.exit(1))},"checkNodeVersion");var ze=Object.defineProperty,Ke=c((t,e)=>ze(t,"name",{value:e,configurable:!0}),"r$4");const Qe=/^-{1,2}(\w+)(=(\w+))?$/,W=Ke((t,e)=>{const o=Qe.exec(t);if(o==null)return{};const n=o[1],a=e.find(r=>r.name===n||r.alias===n);return a!==void 0?{argName:a.name,argValue:o[3],option:a}:{}},"getParameterOption");var Xe=Object.defineProperty,Ze=c((t,e)=>Xe(t,"name",{value:e,configurable:!0}),"i$3");const y=Ze(t=>t.type?.name==="Boolean","isBoolean");var et=Object.defineProperty,x=c((t,e)=>et(t,"name",{value:e,configurable:!0}),"n$2");const D=x((t,e)=>{if(e.type===void 0)return t;if(e.type.name==="Boolean"){if(t==="true"||t==="1")return e.type(!0);if(t==="false"||t==="0")return e.type(!1)}return e.type(t)},"convertType"),tt=new Set(["1","0","true","false"]),ot=x((t,e)=>{const o=x((n,a)=>{const{argName:r,argValue:s,option:i}=W(a,e),{lastOption:l}=n;return i&&y(i)&&s&&r?n.partial[r]=D(s,i):n.lastName&&l&&y(l)&&tt.has(a)&&(n.partial[n.lastName]=D(a,l)),{lastName:r,lastOption:i,partial:n.partial}},"getBooleanValue");return t.reduce(o,{partial:{}}).partial},"getBooleanValues");var nt=Object.defineProperty,H=c((t,e)=>nt(t,"name",{value:e,configurable:!0}),"p$1");const rt=H(t=>{let e=t.type?t.type.name.toLowerCase():"string";const o=t.multiple??t.lazyMultiple?"[]":"";return e&&(e=e==="boolean"?"":`{underline ${e}${o}}`),e},"getTypeLabel"),at=H(t=>(y(t)||(t.typeLabel=t.typeLabel??rt(t),t.defaultOption&&(t.typeLabel=`${t.typeLabel} (D)`),t.required&&(t.typeLabel=`${t.typeLabel} (R)`)),t),"mapOptionTypeLabel");var st=Object.defineProperty,M=c((t,e)=>st(t,"name",{value:e,configurable:!0}),"s$3");const it=new Set(["1","0","true","false"]),lt=M((t,e)=>{const o=M((n,a)=>{const{argValue:r,option:s}=W(a,e),{lastOption:i}=n;if(i&&y(i)&&it.has(a)){const l=[...n.args];return l.pop(),{args:l}}return s&&y(s)&&r?{args:n.args}:{args:[...n.args,a],lastOption:s}},"removeBooleanArguments");return t.reduce(o,{args:[]}).args},"removeBooleanValues");var ct=Object.defineProperty,J=c((t,e)=>ct(t,"name",{value:e,configurable:!0}),"e$2");const pt=new RegExp(/^-([^\d-])$/),mt=new RegExp(/^--(\S+)/),dt=new RegExp(/^-([^\d-]{2,})$/),gt=J(t=>pt.test(t)||mt.test(t)||dt.test(t),"isOption"),ut=J((t,e)=>{const o=e[0]&>(e[0])||e.length===0?null:e.shift()??null;if(!t.includes(o)){const n=new Error(`Command not recognised: ${o}`);throw n.command=o,n.name="INVALID_COMMAND",n}return{argv:e,command:o}},"commandLineCommands");var ht=Object.defineProperty,z=c((t,e)=>ht(t,"name",{value:e,configurable:!0}),"i$1");const ft=z((t,e)=>ue(t,e)<=t.length/3||e.includes(t),"isSimilar"),F=z((t,e)=>{const o=t.toLowerCase();return e.filter(n=>ft(n.toLowerCase(),o))},"findAlternatives");var vt=Object.defineProperty,yt=c((t,e)=>vt(t,"name",{value:e,configurable:!0}),"t$3");const bt=yt((t,e)=>t.filter(o=>o.required&&e[o.name]==null).filter(o=>o.type?.name==="Boolean"?(e[o.name]=!1,!1):!0),"listMissingArguments");var $t=Object.defineProperty,Et=c((t,e)=>$t(t,"name",{value:e,configurable:!0}),"t$2");const wt=Et(t=>{const e=new Map;return t.forEach(o=>{e.set(o.name,{...e.get(o.name),...o})}),[...e.values()]},"mergeArguments");var Ot=Object.defineProperty,A=c((t,e)=>Ot(t,"name",{value:e,configurable:!0}),"e$1");const Ct=A(()=>!!process.versions.electron,"isElectronApp"),At=A(()=>Ct()&&!process.defaultApp,"isBundledElectronApp"),Nt=A(()=>At()?0:1,"getProcessArgvBinIndex"),Lt=A(t=>t.slice(Nt()+1),"hideBin");var _t=Object.defineProperty,K=c((t,e)=>_t(t,"name",{value:e,configurable:!0}),"i");const xt=" ",Rt=K((t,e)=>t.length===e.length&&t.every((o,n)=>o===e[n]),"equals"),St=K(t=>typeof t=="string"?t.split(xt):Rt(t,process.argv)?Lt(t):t,"parseRawCommand");var Pt=Object.defineProperty,Tt=c((t,e)=>Pt(t,"name",{value:e,configurable:!0}),"t");const It=Tt(t=>{process.on("uncaughtException",e=>{t.error(`Uncaught exception: ${e}`),e?.stack&&t.error(e.stack),process.exit(1)}),process.on("unhandledRejection",e=>{t.error(`Promise rejection: ${e}`),e?.stack&&t.error(e.stack),process.exit(1)})},"registerExceptionHandler");var jt=Object.defineProperty,v=c((t,e)=>jt(t,"name",{value:e,configurable:!0}),"c");const Vt="CI"in d&&("GITHUB_ACTIONS"in d||"GITLAB_CI"in d||"CIRCLECI"in d),Bt=v(t=>t.charAt(0).toLowerCase()+t.slice(1),"lowerFirstChar");class Zt{static{c(this,"Cli")}static{v(this,"Cli")}logger;argv;cwd;cliName;packageVersion;packageName;extensions=[];commands;defaultCommand;updateNotifierOptions;commandSection;constructor(e,o={}){const{argv:n,cwd:a,packageName:r,packageVersion:s}={argv:T,cwd:Z(),...o};this.argv=St(n),this.argv.includes("--quiet")||this.argv.includes("-q")?d.CEREBRO_OUTPUT_LEVEL=String(k):this.argv.includes("--verbose")||this.argv.includes("-v")?d.CEREBRO_OUTPUT_LEVEL=String(Fe):this.argv.includes("--debug")||this.argv.includes("-vvv")||"DEBUG"in d?d.CEREBRO_OUTPUT_LEVEL=String(_):d.CEREBRO_OUTPUT_LEVEL=String(Me);const i={32:"informational",64:"trace",128:"debug"},l=[new le];d.CEREBRO_OUTPUT_LEVEL===String(_)&&l.push(new ce),this.logger=pe({logLevel:d.CEREBRO_OUTPUT_LEVEL?i[d.CEREBRO_OUTPUT_LEVEL]??"informational":"informational",processors:l,...o.logger}),d.CEREBRO_OUTPUT_LEVEL===String(k)&&this.logger.disable(),Je(),It(this.logger),this.cliName=e,this.packageVersion=s,this.packageName=r,this.cwd=a,this.defaultCommand="help",this.commandSection={header:`${this.cliName}${this.packageVersion?` v${this.packageVersion}`:""}`},this.commands=new Map,this.addCoreExtensions(),this.addCommand(De),this.addCommand(new Be(this.commands))}setCommandSection(e){return this.commandSection=e,this}getCommandSection(){return this.commandSection}setDefaultCommand(e){return this.defaultCommand=e,this}addCommand(e){if(this.commands.has(e.name))throw new Error(`Ignored command with name "${e.name}", it was found in the command list.`);if(e.options?.map(o=>at(o)),this.validateDoubleOptions(e),this.addNegatableOption(e),e.options?.forEach(o=>{o.__camelCaseName__=Ee(o.name)}),this.commands.set(e.name,e),e.alias!==void 0){let o=e.alias;typeof e.alias=="string"&&(o=[e.alias]),o.forEach(n=>{if(this.logger.debug("adding alias",n),this.commands.has(n))throw new Error(`Ignoring command alias "${n}, command with the same name was found."`);this.commands.set(n,e)})}return this}addExtension(e){return this.extensions.push(e),this}enableUpdateNotifier(e={}){if(!this.packageName||!this.packageVersion)throw new Error("Cannot enable update notifier without package name and version.");const o=Object.keys(e);if(o.length>0&&!o.includes("alwaysRun")&&!o.includes("distTag")&&!o.includes("updateCheckInterval"))throw new Error("Invalid update notifier options, please check the documentation.");return this.updateNotifierOptions={alwaysRun:!1,debug:d.CEREBRO_OUTPUT_LEVEL===String(_),distTag:"latest",pkg:{name:this.packageName,version:this.packageVersion},updateCheckInterval:1e3*60*60*24,...e},this}getCliName(){return this.cliName}getPackageVersion(){return this.packageVersion}getPackageName(){return this.packageName}getCommands(){return this.commands}getCwd(){return this.cwd}async run(e={}){const{shouldExitProcess:o=!0,...n}=e,a=[...this.commands.keys()];let r;this.logger.debug(`process.execPath: ${ee}`),this.logger.debug(`process.execArgv: ${te.join(" ")}`),this.logger.debug(`process.argv: ${T.join(" ")}`);try{r=ut([null,...a],this.argv)}catch(h){if(h.name==="INVALID_COMMAND"&&h.command){let S="";const P=F(h.command,[...this.commands.keys()]);P.length>0&&(S=` Did you mean: \r
|
|
6
|
+
`)}`,"commandLineUsage");var Ie=Object.defineProperty,C=c((t,e)=>Ie(t,"name",{value:e,configurable:!0}),"l$5");const B="__Other",U=C(t=>t.charAt(0).toUpperCase()+t.slice(1),"upperFirstChar"),je=C((t,e,o,n)=>{t.debug("no command given, printing general help...");let a=[...new Set(o.values())].filter(s=>!s.hidden);n&&(a=a.filter(s=>s.group===n));const r=a.reduce((s,i)=>{const l=i.group??B;return s[l]||(s[l]=[]),s[l].push(i),s},{});t.raw(Y([{content:`{cyan ${e.getCliName()}} {green <command>} [positional arguments] {yellow [options]}`,header:"{inverse.cyan Usage }"},...Object.keys(r).map(s=>({content:r[s].map(i=>{let l="";return typeof i.alias=="string"?l=i.alias:Array.isArray(i.alias)&&(l=i.alias.join(", ")),l!==""&&(l=` [${l}]`),[`{green ${i.name}} ${l}`,i.description??""]}),header:s===B||n?`{inverse.green Available${n?` ${U(n)}`:""} Commands }`:` {inverse.green ${U(s)} }`})),o.has("help")?{header:"{inverse.yellow Command Options }",optionList:o.get("help").options?.filter(s=>!s.hidden)}:void 0,{header:"{inverse.yellow Global Options }",optionList:O},{content:`Run "{cyan ${e.getCliName()}} {green help <command>}" or "{cyan ${e.getCliName()}} {green <command>} {yellow --help}" for help with a specific command.`,raw:!0}].filter(Boolean)))},"printGeneralHelp"),Ve=C((t,e,o,n)=>{const a=o.get(n),r=[];if(r.push({content:`{cyan ${e.getCliName()}} {green ${a.name}}${a.argument?" [positional arguments]":""}${a.options?" [options]":""}`,header:"{inverse.cyan Usage }"}),a.description&&r.push({content:a.description,header:"{inverse.green Description }"}),a.argument&&r.push({header:"Command Positional Arguments",isArgument:!0,optionList:[a.argument]}),Array.isArray(a.options)&&a.options.length>0&&r.push({header:"{inverse.yellow Command Options }",optionList:a.options.filter(s=>!s.hidden)}),r.push({header:"{inverse.yellow Global Options }",optionList:O}),a.alias!==void 0&&a.alias.length>0){let s=a.alias;typeof a.alias=="string"&&(s=[a.alias]),r.splice(1,0,{content:s,header:"Alias(es)"})}Array.isArray(a.examples)&&a.examples.length>0&&r.push({content:a.examples,header:"Examples"}),t.raw(Y(r))},"printCommandHelp");class Be{static{c(this,"C")}static{C(this,"HelpCommand")}name="help";options=[{description:"Display only the specified group",name:"group",type:String}];commands;constructor(e){this.commands=e}execute(e){const{commandName:o,logger:n,options:a,runtime:r}=e,{footer:s,header:i}=r.getCommandSection();i&&n.raw(m(i)),o==="help"?je(n,r,this.commands,a?.group):Ve(n,r,this.commands,o),s&&n.raw(m(s))}}var Ue=Object.defineProperty,ke=c((t,e)=>Ue(t,"name",{value:e,configurable:!0}),"s$7");const De={alias:["v","V"],description:"Output the version number",execute:ke(({logger:t,runtime:e})=>{const o=e.getPackageVersion();o===void 0?(t.warn("Unknown version"),t.debug("The version number was not provided by the cli constructor.")):t.info(o)},"execute"),name:"version",options:[],usage:[]},k=16,Me=32,Fe=64,_=128,E="positionals";var qe=Object.defineProperty,Ge=c((t,e)=>qe(t,"name",{value:e,configurable:!0}),"m$2");let Ye=class{static{c(this,"c")}static{Ge(this,"EmptyToolbox")}result;argv;options;argument;command;commandName;runtime;logger;constructor(e,o){this.commandName=e,this.command=o}};var We=Object.defineProperty,He=c((t,e)=>We(t,"name",{value:e,configurable:!0}),"s$6");const Je=He(()=>{const t=process.env.CEREBRO_MIN_NODE_VERSION?Number(process.env.CEREBRO_MIN_NODE_VERSION):18,e=process.version.replace("v","");Number(/v([^.]+)/.exec(process.version)[1])<t&&(console.log(`cerebro supports a minimum Node version of ${t}. You have ${e}. Read our version support policy: https://github.com/visulima/visulima#supported-nodejs-versions`),process.exit(1))},"checkNodeVersion");var ze=Object.defineProperty,Ke=c((t,e)=>ze(t,"name",{value:e,configurable:!0}),"r$4");const Qe=/^-{1,2}(\w+)(=(\w+))?$/,W=Ke((t,e)=>{const o=Qe.exec(t);if(o==null)return{};const n=o[1],a=e.find(r=>r.name===n||r.alias===n);return a!==void 0?{argName:a.name,argValue:o[3],option:a}:{}},"getParameterOption");var Xe=Object.defineProperty,Ze=c((t,e)=>Xe(t,"name",{value:e,configurable:!0}),"i$3");const y=Ze(t=>t.type?.name==="Boolean","isBoolean");var et=Object.defineProperty,x=c((t,e)=>et(t,"name",{value:e,configurable:!0}),"n$2");const D=x((t,e)=>{if(e.type===void 0)return t;if(e.type.name==="Boolean"){if(t==="true"||t==="1")return e.type(!0);if(t==="false"||t==="0")return e.type(!1)}return e.type(t)},"convertType"),tt=new Set(["1","0","true","false"]),ot=x((t,e)=>{const o=x((n,a)=>{const{argName:r,argValue:s,option:i}=W(a,e),{lastOption:l}=n;return i&&y(i)&&s&&r?n.partial[r]=D(s,i):n.lastName&&l&&y(l)&&tt.has(a)&&(n.partial[n.lastName]=D(a,l)),{lastName:r,lastOption:i,partial:n.partial}},"getBooleanValue");return t.reduce(o,{partial:{}}).partial},"getBooleanValues");var nt=Object.defineProperty,H=c((t,e)=>nt(t,"name",{value:e,configurable:!0}),"p$1");const rt=H(t=>{let e=t.type?t.type.name.toLowerCase():"string";const o=t.multiple??t.lazyMultiple?"[]":"";return e&&(e=e==="boolean"?"":`{underline ${e}${o}}`),e},"getTypeLabel"),at=H(t=>(y(t)||(t.typeLabel=t.typeLabel??rt(t),t.defaultOption&&(t.typeLabel=`${t.typeLabel} (D)`),t.required&&(t.typeLabel=`${t.typeLabel} (R)`)),t),"mapOptionTypeLabel");var st=Object.defineProperty,M=c((t,e)=>st(t,"name",{value:e,configurable:!0}),"s$3");const it=new Set(["1","0","true","false"]),lt=M((t,e)=>{const o=M((n,a)=>{const{argValue:r,option:s}=W(a,e),{lastOption:i}=n;if(i&&y(i)&&it.has(a)){const l=[...n.args];return l.pop(),{args:l}}return s&&y(s)&&r?{args:n.args}:{args:[...n.args,a],lastOption:s}},"removeBooleanArguments");return t.reduce(o,{args:[]}).args},"removeBooleanValues");var ct=Object.defineProperty,J=c((t,e)=>ct(t,"name",{value:e,configurable:!0}),"e$2");const pt=new RegExp(/^-([^\d-])$/),mt=new RegExp(/^--(\S+)/),dt=new RegExp(/^-([^\d-]{2,})$/),gt=J(t=>pt.test(t)||mt.test(t)||dt.test(t),"isOption"),ut=J((t,e)=>{const o=e[0]&>(e[0])||e.length===0?null:e.shift()??null;if(!t.includes(o)){const n=new Error(`Command not recognised: ${o}`);throw n.command=o,n.name="INVALID_COMMAND",n}return{argv:e,command:o}},"commandLineCommands");var ht=Object.defineProperty,z=c((t,e)=>ht(t,"name",{value:e,configurable:!0}),"i$1");const ft=z((t,e)=>ue(t,e)<=t.length/3||e.includes(t),"isSimilar"),F=z((t,e)=>{const o=t.toLowerCase();return e.filter(n=>ft(n.toLowerCase(),o))},"findAlternatives");var vt=Object.defineProperty,yt=c((t,e)=>vt(t,"name",{value:e,configurable:!0}),"t$3");const bt=yt((t,e)=>t.filter(o=>o.required&&e[o.name]==null).filter(o=>o.type?.name==="Boolean"?(e[o.name]=!1,!1):!0),"listMissingArguments");var $t=Object.defineProperty,Et=c((t,e)=>$t(t,"name",{value:e,configurable:!0}),"t$2");const wt=Et(t=>{const e=new Map;return t.forEach(o=>{e.set(o.name,{...e.get(o.name),...o})}),[...e.values()]},"mergeArguments");var Ot=Object.defineProperty,A=c((t,e)=>Ot(t,"name",{value:e,configurable:!0}),"e$1");const Ct=A(()=>!!process.versions.electron,"isElectronApp"),At=A(()=>Ct()&&!process.defaultApp,"isBundledElectronApp"),Nt=A(()=>At()?0:1,"getProcessArgvBinIndex"),Lt=A(t=>t.slice(Nt()+1),"hideBin");var _t=Object.defineProperty,K=c((t,e)=>_t(t,"name",{value:e,configurable:!0}),"i");const xt=" ",Rt=K((t,e)=>t.length===e.length&&t.every((o,n)=>o===e[n]),"equals"),St=K(t=>typeof t=="string"?t.split(xt):Rt(t,process.argv)?Lt(t):t,"parseRawCommand");var Pt=Object.defineProperty,Tt=c((t,e)=>Pt(t,"name",{value:e,configurable:!0}),"t");const It=Tt(t=>{process.on("uncaughtException",e=>{t.error(`Uncaught exception: ${e}`),e?.stack&&t.error(e.stack),process.exit(1)}),process.on("unhandledRejection",e=>{t.error(`Promise rejection: ${e}`),e?.stack&&t.error(e.stack),process.exit(1)})},"registerExceptionHandler");var jt=Object.defineProperty,v=c((t,e)=>jt(t,"name",{value:e,configurable:!0}),"g");const Vt="CI"in d&&("GITHUB_ACTIONS"in d||"GITLAB_CI"in d||"CIRCLECI"in d),Bt=v(t=>t.charAt(0).toLowerCase()+t.slice(1),"lowerFirstChar");class Zt{static{c(this,"Cli")}static{v(this,"Cli")}logger;argv;cwd;cliName;packageVersion;packageName;extensions=[];commands;defaultCommand;updateNotifierOptions;commandSection;constructor(e,o={}){const{argv:n,cwd:a,packageName:r,packageVersion:s}={argv:T,cwd:Z(),...o};this.argv=St(n),this.argv.includes("--quiet")||this.argv.includes("-q")?d.CEREBRO_OUTPUT_LEVEL=String(k):this.argv.includes("--verbose")||this.argv.includes("-v")?d.CEREBRO_OUTPUT_LEVEL=String(Fe):this.argv.includes("--debug")||this.argv.includes("-vvv")||"DEBUG"in d?d.CEREBRO_OUTPUT_LEVEL=String(_):d.CEREBRO_OUTPUT_LEVEL=String(Me);const i={32:"informational",64:"trace",128:"debug"},l=[new le];d.CEREBRO_OUTPUT_LEVEL===String(_)&&l.push(new ce),this.logger=pe({logLevel:d.CEREBRO_OUTPUT_LEVEL?i[d.CEREBRO_OUTPUT_LEVEL]??"informational":"informational",processors:l,...o.logger}),d.CEREBRO_OUTPUT_LEVEL===String(k)&&this.logger.disable(),Je(),It(this.logger),this.cliName=e,this.packageVersion=s,this.packageName=r,this.cwd=a,this.defaultCommand="help",this.commandSection={header:`${this.cliName}${this.packageVersion?` v${this.packageVersion}`:""}`},this.commands=new Map,this.addCoreExtensions(),this.addCommand(De),this.addCommand(new Be(this.commands))}setCommandSection(e){return this.commandSection=e,this}getCommandSection(){return this.commandSection}setDefaultCommand(e){return this.defaultCommand=e,this}addCommand(e){if(this.commands.has(e.name))throw new Error(`Ignored command with name "${e.name}", it was found in the command list.`);if(e.options?.map(o=>at(o)),this.validateDoubleOptions(e),this.addNegatableOption(e),e.options?.forEach(o=>{o.__camelCaseName__=Ee(o.name)}),this.commands.set(e.name,e),e.alias!==void 0){let o=e.alias;typeof e.alias=="string"&&(o=[e.alias]),o.forEach(n=>{if(this.logger.debug("adding alias",n),this.commands.has(n))throw new Error(`Ignoring command alias "${n}, command with the same name was found."`);this.commands.set(n,e)})}return this}addExtension(e){return this.extensions.push(e),this}enableUpdateNotifier(e={}){if(!this.packageName||!this.packageVersion)throw new Error("Cannot enable update notifier without package name and version.");const o=Object.keys(e);if(o.length>0&&!o.includes("alwaysRun")&&!o.includes("distTag")&&!o.includes("updateCheckInterval"))throw new Error("Invalid update notifier options, please check the documentation.");return this.updateNotifierOptions={alwaysRun:!1,debug:d.CEREBRO_OUTPUT_LEVEL===String(_),distTag:"latest",pkg:{name:this.packageName,version:this.packageVersion},updateCheckInterval:1e3*60*60*24,...e},this}getCliName(){return this.cliName}getPackageVersion(){return this.packageVersion}getPackageName(){return this.packageName}getCommands(){return this.commands}getCwd(){return this.cwd}async run(e={}){const{shouldExitProcess:o=!0,...n}=e,a=[...this.commands.keys()];let r;this.logger.debug(`process.execPath: ${ee}`),this.logger.debug(`process.execArgv: ${te.join(" ")}`),this.logger.debug(`process.argv: ${T.join(" ")}`);try{r=ut([null,...a],this.argv)}catch(h){if(h.name==="INVALID_COMMAND"&&h.command){let S="";const P=F(h.command,[...this.commands.keys()]);P.length>0&&(S=` Did you mean: \r
|
|
7
7
|
- ${P.join(` \r
|
|
8
8
|
- `)}`),this.logger.error(`"${h.command}" is not an available command.${S}`)}else this.logger.error(h);return o?L(1):void 0}const s=r.command??this.defaultCommand,i=this.commands.get(s);if(typeof i.execute!="function")return this.logger.error(`Command "${i.name}" has no function to execute.`),o?L(1):void 0;const l=r.argv;this.logger.debug(`command '${s}' found, parsing command args: ${l.join(", ")}`);let p=wt([...i.options??[],...O]);p.forEach(h=>{if(h.multiple&&h.lazyMultiple)throw new Error(`Argument "${h.name}" cannot have both multiple and lazyMultiple options, please choose one.`)}),i.argument&&(this.logger.debug("command has positional argument, parsing them..."),p=[{defaultOption:!0,description:i.argument?.description,group:"positionals",multiple:!0,name:E,type:i.argument?.type,typeLabel:i.argument?.typeLabel},...p]);const u=me(p,{argv:lt(l,i.options??[]),camelCase:!0,partial:!0,stopAtFirstUnknown:!0}),b=ot(l,i.options??[]),f={...u,_all:{...u._all,...b}};this.validateCommandOptions(p,f,i);const g=new Ye(i.name,i);g.runtime=this,await this.registerExtensions(g),await this.updateNotifier(g);const{_all:N,positionals:Q}=f;return N[E]&&delete N[E],g.argument=Q?.[E]??[],g.argv=this.argv,g.options={...N,...n},this.mapNegatableOptions(g,i),this.mapImpliesOptions(g,i),this.validateCommandArgsForConflicts(p,g.options,i),this.logger.debug("command options parsed from options:"),this.logger.debug(JSON.stringify(g.options,null,2)),this.logger.debug("command argument parsed from argument:"),this.logger.debug(JSON.stringify(g.argument,null,2)),await this.prepareToolboxResult(f,g,i),o?L(0):void 0}validateDoubleOptions(e){if(Array.isArray(e.options)){const o=e.options.reduce((r,s)=>{const i=`${s.name}-${s.alias}`;return r[i]||(r[i]=[]),r[i].push(s),r},{}),n=Object.values(o).filter(r=>r.length>1);let a="";if(n.forEach(r=>{const s=r[0],i=r[1];let l="alias";s.name===i.name&&(l="name",s.alias===i.alias&&(l+=" and alias")),a+=`Cannot add option ${l} "${JSON.stringify(i)}" to command "${e.name}" due to conflicting option ${JSON.stringify(s)}
|
|
9
9
|
`}),a.length>0)throw new Error(a)}}addCoreExtensions(){this.addExtension({execute:v(e=>{e.logger=this.logger},"execute"),name:"logger"})}async prepareToolboxResult(e,o,n){if(e.global?.help){this.logger.debug("'--help' option found, running 'help' for given command...");const a=this.commands.get("help");if(!a)throw new Error("Help command not found.");await a.execute(o);return}if(e.global?.version||e.global?.V){this.logger.debug("'--version' option found, running 'version' for given command...");const a=this.commands.get("version");if(!a)throw new Error("Version command not found.");await a.execute(o);return}await n.execute(o)}async updateNotifier({logger:e}){if(this.updateNotifierOptions?.alwaysRun||!(d.NO_UPDATE_NOTIFIER||d.NODE_ENV==="test"||this.argv.includes("--no-update-notifier")||Vt)&&this.updateNotifierOptions){e.raw("Checking for updates...");const o=await(await import("./chunks/has-new-version.mjs").then(n=>n.default))(this.updateNotifierOptions);if(o){const n="Update available "+re(this.packageVersion+"")+ae(" → ")+se(o);this.logger.error(oe(n,{borderColor:v(a=>ie(a),"borderColor"),borderStyle:"round",margin:1,padding:1,textAlignment:"center"}))}}}validateCommandOptions(e,o,n){const a=bt(e,o);if(a.length>0)throw new Error(`You called the command "${n.name}" without the required options: ${a.map(r=>r.name).join(", ")}`);if(o._unknown&&o._unknown.length>0){const r=[];if(o._unknown.forEach(s=>{const i=s.startsWith("--");let l=`Found unknown ${i?"option":"argument"} "${s}"`;if(i){const p=F(s.replace("--",""),[...(n.options??[]).map(u=>u.name),...O.map(u=>u.name)]);if(p.length>0){const[u,...b]=p.map(f=>`--${f}`);l+=b.length>0?`, did you mean ${u} or ${b.join(", ")}?`:`, did you mean ${u}?`}}r.push(l)}),r.length>0)throw new Error(r.join(`
|
|
10
|
-
`))}}validateCommandArgsForConflicts(e,o,n){const a=e.filter(r=>r.conflicts!==void 0);if(a.length>0){const r=a.find(s=>Array.isArray(s.conflicts)?s.conflicts.some(i=>o[i]!==void 0):o[s.conflicts]!==void 0);if(r)throw new Error(`You called the command "${n.name}" with conflicting options: ${r.name} and ${typeof r.conflicts=="string"?r.conflicts:r.conflicts?.join(", ")}`)}}addNegatableOption(e){Array.isArray(e.options)&&e.options.forEach(o=>{if(o.name.startsWith("no-")&&!e.options.some(n=>n.name===o.name.replace("no-",""))){if(o.type!==Boolean){this.logger.debug(`Cannot add negated option "${o.name}" to command "${e.name}" because it is not a boolean.`);return}const n={...o,defaultValue:o.defaultValue===void 0?!0:!o.defaultValue,name:`${o.name.replace("no-","")}`};e.options.push(n)}})}async registerExtensions(e){const o=v(async n=>typeof n.execute!="function"?(this.logger.warn(`Skipped ${n.name} because execute is not a function.`),null):(await n.execute(e),null),"callback");for(const n of this.extensions)await o(n)}mapNegatableOptions(e,o){Object.entries(e.options).forEach(([n,a])=>{if(/^no\w+/.test(n)){const r=Bt(n.replace("no",""));this.logger.debug(`mapping negated option "${n}" to "${r}"`),e.options[r]=!a,o.options?.forEach(s=>{s.name===r&&(s.__negated__=!0)})}})}mapImpliesOptions(e,o){Object.keys(e.options).forEach(n=>{const a=o.options?.find(r=>r.__camelCaseName__===n&&r.__negated__===void 0&&r.implies!==void 0);if(a?.implies){const r=a.implies;Object.entries(r).forEach(([s,i])=>{if(e.options[s]===void 0)e.options[s]=i;else{const l=o.options?.find(p=>p.name===s);(l?.defaultValue===void 0||e.options[s]===l.defaultValue)&&(e.options[s]=i)}})}})}}export{Zt as default};
|
|
10
|
+
`))}}validateCommandArgsForConflicts(e,o,n){const a=e.filter(r=>r.conflicts!==void 0);if(a.length>0){const r=a.find(s=>Array.isArray(s.conflicts)?s.conflicts.some(i=>o[i]!==void 0)&&o[s.name]!==void 0:o[s.conflicts]!==void 0&&o[s.name]!==void 0);if(r)throw new Error(`You called the command "${n.name}" with conflicting options: ${r.name} and ${typeof r.conflicts=="string"?r.conflicts:r.conflicts?.join(", ")}`)}}addNegatableOption(e){Array.isArray(e.options)&&e.options.forEach(o=>{if(o.name.startsWith("no-")&&!e.options.some(n=>n.name===o.name.replace("no-",""))){if(o.type!==Boolean){this.logger.debug(`Cannot add negated option "${o.name}" to command "${e.name}" because it is not a boolean.`);return}const n={...o,defaultValue:o.defaultValue===void 0?!0:!o.defaultValue,name:`${o.name.replace("no-","")}`};e.options.push(n)}})}async registerExtensions(e){const o=v(async n=>typeof n.execute!="function"?(this.logger.warn(`Skipped ${n.name} because execute is not a function.`),null):(await n.execute(e),null),"callback");for(const n of this.extensions)await o(n)}mapNegatableOptions(e,o){Object.entries(e.options).forEach(([n,a])=>{if(/^no\w+/.test(n)){const r=Bt(n.replace("no",""));this.logger.debug(`mapping negated option "${n}" to "${r}"`),e.options[r]=!a,o.options?.forEach(s=>{s.name===r&&(s.__negated__=!0)})}})}mapImpliesOptions(e,o){Object.keys(e.options).forEach(n=>{const a=o.options?.find(r=>r.__camelCaseName__===n&&r.__negated__===void 0&&r.implies!==void 0);if(a?.implies){const r=a.implies;Object.entries(r).forEach(([s,i])=>{if(e.options[s]===void 0)e.options[s]=i;else{const l=o.options?.find(p=>p.name===s);(l?.defaultValue===void 0||e.options[s]===l.defaultValue)&&(e.options[s]=i)}})}})}}export{Zt as default};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/cerebro",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.15",
|
|
4
4
|
"description": "A delightful toolkit for building Node-powered CLIs.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"command",
|
|
@@ -76,10 +76,10 @@
|
|
|
76
76
|
"LICENSE.md"
|
|
77
77
|
],
|
|
78
78
|
"dependencies": {
|
|
79
|
-
"@visulima/boxen": "1.0.
|
|
80
|
-
"@visulima/colorize": "1.4.
|
|
81
|
-
"@visulima/find-cache-dir": "1.0.
|
|
82
|
-
"@visulima/pail": "2.1.
|
|
79
|
+
"@visulima/boxen": "1.0.13",
|
|
80
|
+
"@visulima/colorize": "1.4.5",
|
|
81
|
+
"@visulima/find-cache-dir": "1.0.6",
|
|
82
|
+
"@visulima/pail": "2.1.4",
|
|
83
83
|
"cli-table3": "^0.6.5",
|
|
84
84
|
"command-line-args": "^6.0.0",
|
|
85
85
|
"fastest-levenshtein": "^1.0.16"
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"@types/node": "18.19.15",
|
|
102
102
|
"@visulima/nextra-theme-docs": "4.0.26",
|
|
103
103
|
"@visulima/packem": "^1.0.0-alpha.60",
|
|
104
|
-
"@visulima/path": "1.0.
|
|
104
|
+
"@visulima/path": "1.0.4",
|
|
105
105
|
"@vitest/coverage-v8": "^2.0.5",
|
|
106
106
|
"camelcase": "8.0.0",
|
|
107
107
|
"conventional-changelog-conventionalcommits": "8.0.0",
|