netsweep 1.0.1 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -15
- package/dist/index.js +339 -1725
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { createRequire } from "node:module";
|
|
3
2
|
var __create = Object.create;
|
|
4
3
|
var __getProtoOf = Object.getPrototypeOf;
|
|
5
4
|
var __defProp = Object.defineProperty;
|
|
@@ -17,7 +16,6 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
17
16
|
return to;
|
|
18
17
|
};
|
|
19
18
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
20
|
-
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
21
19
|
|
|
22
20
|
// node_modules/eastasianwidth/eastasianwidth.js
|
|
23
21
|
var require_eastasianwidth = __commonJS((exports, module) => {
|
|
@@ -327,1674 +325,6 @@ var require_ansi_align = __commonJS((exports, module) => {
|
|
|
327
325
|
}
|
|
328
326
|
});
|
|
329
327
|
|
|
330
|
-
// node_modules/cli-table3/src/debug.js
|
|
331
|
-
var require_debug = __commonJS((exports, module) => {
|
|
332
|
-
var messages = [];
|
|
333
|
-
var level = 0;
|
|
334
|
-
var debug = (msg, min) => {
|
|
335
|
-
if (level >= min) {
|
|
336
|
-
messages.push(msg);
|
|
337
|
-
}
|
|
338
|
-
};
|
|
339
|
-
debug.WARN = 1;
|
|
340
|
-
debug.INFO = 2;
|
|
341
|
-
debug.DEBUG = 3;
|
|
342
|
-
debug.reset = () => {
|
|
343
|
-
messages = [];
|
|
344
|
-
};
|
|
345
|
-
debug.setDebugLevel = (v) => {
|
|
346
|
-
level = v;
|
|
347
|
-
};
|
|
348
|
-
debug.warn = (msg) => debug(msg, debug.WARN);
|
|
349
|
-
debug.info = (msg) => debug(msg, debug.INFO);
|
|
350
|
-
debug.debug = (msg) => debug(msg, debug.DEBUG);
|
|
351
|
-
debug.debugMessages = () => messages;
|
|
352
|
-
module.exports = debug;
|
|
353
|
-
});
|
|
354
|
-
|
|
355
|
-
// node_modules/cli-table3/node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex/index.js
|
|
356
|
-
var require_ansi_regex2 = __commonJS((exports, module) => {
|
|
357
|
-
module.exports = ({ onlyFirst = false } = {}) => {
|
|
358
|
-
const pattern = [
|
|
359
|
-
"[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
|
|
360
|
-
"(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
|
|
361
|
-
].join("|");
|
|
362
|
-
return new RegExp(pattern, onlyFirst ? undefined : "g");
|
|
363
|
-
};
|
|
364
|
-
});
|
|
365
|
-
|
|
366
|
-
// node_modules/cli-table3/node_modules/string-width/node_modules/strip-ansi/index.js
|
|
367
|
-
var require_strip_ansi2 = __commonJS((exports, module) => {
|
|
368
|
-
var ansiRegex2 = require_ansi_regex2();
|
|
369
|
-
module.exports = (string) => typeof string === "string" ? string.replace(ansiRegex2(), "") : string;
|
|
370
|
-
});
|
|
371
|
-
|
|
372
|
-
// node_modules/cli-table3/node_modules/string-width/node_modules/emoji-regex/index.js
|
|
373
|
-
var require_emoji_regex3 = __commonJS((exports, module) => {
|
|
374
|
-
module.exports = function() {
|
|
375
|
-
return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
|
|
376
|
-
};
|
|
377
|
-
});
|
|
378
|
-
|
|
379
|
-
// node_modules/cli-table3/node_modules/string-width/index.js
|
|
380
|
-
var require_string_width2 = __commonJS((exports, module) => {
|
|
381
|
-
var stripAnsi2 = require_strip_ansi2();
|
|
382
|
-
var isFullwidthCodePoint = require_is_fullwidth_code_point();
|
|
383
|
-
var emojiRegex2 = require_emoji_regex3();
|
|
384
|
-
var stringWidth2 = (string) => {
|
|
385
|
-
if (typeof string !== "string" || string.length === 0) {
|
|
386
|
-
return 0;
|
|
387
|
-
}
|
|
388
|
-
string = stripAnsi2(string);
|
|
389
|
-
if (string.length === 0) {
|
|
390
|
-
return 0;
|
|
391
|
-
}
|
|
392
|
-
string = string.replace(emojiRegex2(), " ");
|
|
393
|
-
let width = 0;
|
|
394
|
-
for (let i = 0;i < string.length; i++) {
|
|
395
|
-
const code = string.codePointAt(i);
|
|
396
|
-
if (code <= 31 || code >= 127 && code <= 159) {
|
|
397
|
-
continue;
|
|
398
|
-
}
|
|
399
|
-
if (code >= 768 && code <= 879) {
|
|
400
|
-
continue;
|
|
401
|
-
}
|
|
402
|
-
if (code > 65535) {
|
|
403
|
-
i++;
|
|
404
|
-
}
|
|
405
|
-
width += isFullwidthCodePoint(code) ? 2 : 1;
|
|
406
|
-
}
|
|
407
|
-
return width;
|
|
408
|
-
};
|
|
409
|
-
module.exports = stringWidth2;
|
|
410
|
-
module.exports.default = stringWidth2;
|
|
411
|
-
});
|
|
412
|
-
|
|
413
|
-
// node_modules/cli-table3/src/utils.js
|
|
414
|
-
var require_utils = __commonJS((exports, module) => {
|
|
415
|
-
var stringWidth2 = require_string_width2();
|
|
416
|
-
function codeRegex(capture) {
|
|
417
|
-
return capture ? /\u001b\[((?:\d*;){0,5}\d*)m/g : /\u001b\[(?:\d*;){0,5}\d*m/g;
|
|
418
|
-
}
|
|
419
|
-
function strlen(str) {
|
|
420
|
-
let code = codeRegex();
|
|
421
|
-
let stripped = ("" + str).replace(code, "");
|
|
422
|
-
let split = stripped.split(`
|
|
423
|
-
`);
|
|
424
|
-
return split.reduce(function(memo, s) {
|
|
425
|
-
return stringWidth2(s) > memo ? stringWidth2(s) : memo;
|
|
426
|
-
}, 0);
|
|
427
|
-
}
|
|
428
|
-
function repeat(str, times) {
|
|
429
|
-
return Array(times + 1).join(str);
|
|
430
|
-
}
|
|
431
|
-
function pad(str, len, pad2, dir) {
|
|
432
|
-
let length = strlen(str);
|
|
433
|
-
if (len + 1 >= length) {
|
|
434
|
-
let padlen = len - length;
|
|
435
|
-
switch (dir) {
|
|
436
|
-
case "right": {
|
|
437
|
-
str = repeat(pad2, padlen) + str;
|
|
438
|
-
break;
|
|
439
|
-
}
|
|
440
|
-
case "center": {
|
|
441
|
-
let right = Math.ceil(padlen / 2);
|
|
442
|
-
let left = padlen - right;
|
|
443
|
-
str = repeat(pad2, left) + str + repeat(pad2, right);
|
|
444
|
-
break;
|
|
445
|
-
}
|
|
446
|
-
default: {
|
|
447
|
-
str = str + repeat(pad2, padlen);
|
|
448
|
-
break;
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
return str;
|
|
453
|
-
}
|
|
454
|
-
var codeCache = {};
|
|
455
|
-
function addToCodeCache(name, on, off) {
|
|
456
|
-
on = "\x1B[" + on + "m";
|
|
457
|
-
off = "\x1B[" + off + "m";
|
|
458
|
-
codeCache[on] = { set: name, to: true };
|
|
459
|
-
codeCache[off] = { set: name, to: false };
|
|
460
|
-
codeCache[name] = { on, off };
|
|
461
|
-
}
|
|
462
|
-
addToCodeCache("bold", 1, 22);
|
|
463
|
-
addToCodeCache("italics", 3, 23);
|
|
464
|
-
addToCodeCache("underline", 4, 24);
|
|
465
|
-
addToCodeCache("inverse", 7, 27);
|
|
466
|
-
addToCodeCache("strikethrough", 9, 29);
|
|
467
|
-
function updateState(state, controlChars) {
|
|
468
|
-
let controlCode = controlChars[1] ? parseInt(controlChars[1].split(";")[0]) : 0;
|
|
469
|
-
if (controlCode >= 30 && controlCode <= 39 || controlCode >= 90 && controlCode <= 97) {
|
|
470
|
-
state.lastForegroundAdded = controlChars[0];
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
if (controlCode >= 40 && controlCode <= 49 || controlCode >= 100 && controlCode <= 107) {
|
|
474
|
-
state.lastBackgroundAdded = controlChars[0];
|
|
475
|
-
return;
|
|
476
|
-
}
|
|
477
|
-
if (controlCode === 0) {
|
|
478
|
-
for (let i in state) {
|
|
479
|
-
if (Object.prototype.hasOwnProperty.call(state, i)) {
|
|
480
|
-
delete state[i];
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
return;
|
|
484
|
-
}
|
|
485
|
-
let info = codeCache[controlChars[0]];
|
|
486
|
-
if (info) {
|
|
487
|
-
state[info.set] = info.to;
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
function readState(line) {
|
|
491
|
-
let code = codeRegex(true);
|
|
492
|
-
let controlChars = code.exec(line);
|
|
493
|
-
let state = {};
|
|
494
|
-
while (controlChars !== null) {
|
|
495
|
-
updateState(state, controlChars);
|
|
496
|
-
controlChars = code.exec(line);
|
|
497
|
-
}
|
|
498
|
-
return state;
|
|
499
|
-
}
|
|
500
|
-
function unwindState(state, ret) {
|
|
501
|
-
let lastBackgroundAdded = state.lastBackgroundAdded;
|
|
502
|
-
let lastForegroundAdded = state.lastForegroundAdded;
|
|
503
|
-
delete state.lastBackgroundAdded;
|
|
504
|
-
delete state.lastForegroundAdded;
|
|
505
|
-
Object.keys(state).forEach(function(key) {
|
|
506
|
-
if (state[key]) {
|
|
507
|
-
ret += codeCache[key].off;
|
|
508
|
-
}
|
|
509
|
-
});
|
|
510
|
-
if (lastBackgroundAdded && lastBackgroundAdded != "\x1B[49m") {
|
|
511
|
-
ret += "\x1B[49m";
|
|
512
|
-
}
|
|
513
|
-
if (lastForegroundAdded && lastForegroundAdded != "\x1B[39m") {
|
|
514
|
-
ret += "\x1B[39m";
|
|
515
|
-
}
|
|
516
|
-
return ret;
|
|
517
|
-
}
|
|
518
|
-
function rewindState(state, ret) {
|
|
519
|
-
let lastBackgroundAdded = state.lastBackgroundAdded;
|
|
520
|
-
let lastForegroundAdded = state.lastForegroundAdded;
|
|
521
|
-
delete state.lastBackgroundAdded;
|
|
522
|
-
delete state.lastForegroundAdded;
|
|
523
|
-
Object.keys(state).forEach(function(key) {
|
|
524
|
-
if (state[key]) {
|
|
525
|
-
ret = codeCache[key].on + ret;
|
|
526
|
-
}
|
|
527
|
-
});
|
|
528
|
-
if (lastBackgroundAdded && lastBackgroundAdded != "\x1B[49m") {
|
|
529
|
-
ret = lastBackgroundAdded + ret;
|
|
530
|
-
}
|
|
531
|
-
if (lastForegroundAdded && lastForegroundAdded != "\x1B[39m") {
|
|
532
|
-
ret = lastForegroundAdded + ret;
|
|
533
|
-
}
|
|
534
|
-
return ret;
|
|
535
|
-
}
|
|
536
|
-
function truncateWidth(str, desiredLength) {
|
|
537
|
-
if (str.length === strlen(str)) {
|
|
538
|
-
return str.substr(0, desiredLength);
|
|
539
|
-
}
|
|
540
|
-
while (strlen(str) > desiredLength) {
|
|
541
|
-
str = str.slice(0, -1);
|
|
542
|
-
}
|
|
543
|
-
return str;
|
|
544
|
-
}
|
|
545
|
-
function truncateWidthWithAnsi(str, desiredLength) {
|
|
546
|
-
let code = codeRegex(true);
|
|
547
|
-
let split = str.split(codeRegex());
|
|
548
|
-
let splitIndex = 0;
|
|
549
|
-
let retLen = 0;
|
|
550
|
-
let ret = "";
|
|
551
|
-
let myArray;
|
|
552
|
-
let state = {};
|
|
553
|
-
while (retLen < desiredLength) {
|
|
554
|
-
myArray = code.exec(str);
|
|
555
|
-
let toAdd = split[splitIndex];
|
|
556
|
-
splitIndex++;
|
|
557
|
-
if (retLen + strlen(toAdd) > desiredLength) {
|
|
558
|
-
toAdd = truncateWidth(toAdd, desiredLength - retLen);
|
|
559
|
-
}
|
|
560
|
-
ret += toAdd;
|
|
561
|
-
retLen += strlen(toAdd);
|
|
562
|
-
if (retLen < desiredLength) {
|
|
563
|
-
if (!myArray) {
|
|
564
|
-
break;
|
|
565
|
-
}
|
|
566
|
-
ret += myArray[0];
|
|
567
|
-
updateState(state, myArray);
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
return unwindState(state, ret);
|
|
571
|
-
}
|
|
572
|
-
function truncate(str, desiredLength, truncateChar) {
|
|
573
|
-
truncateChar = truncateChar || "…";
|
|
574
|
-
let lengthOfStr = strlen(str);
|
|
575
|
-
if (lengthOfStr <= desiredLength) {
|
|
576
|
-
return str;
|
|
577
|
-
}
|
|
578
|
-
desiredLength -= strlen(truncateChar);
|
|
579
|
-
let ret = truncateWidthWithAnsi(str, desiredLength);
|
|
580
|
-
ret += truncateChar;
|
|
581
|
-
const hrefTag = "\x1B]8;;\x07";
|
|
582
|
-
if (str.includes(hrefTag) && !ret.includes(hrefTag)) {
|
|
583
|
-
ret += hrefTag;
|
|
584
|
-
}
|
|
585
|
-
return ret;
|
|
586
|
-
}
|
|
587
|
-
function defaultOptions() {
|
|
588
|
-
return {
|
|
589
|
-
chars: {
|
|
590
|
-
top: "─",
|
|
591
|
-
"top-mid": "┬",
|
|
592
|
-
"top-left": "┌",
|
|
593
|
-
"top-right": "┐",
|
|
594
|
-
bottom: "─",
|
|
595
|
-
"bottom-mid": "┴",
|
|
596
|
-
"bottom-left": "└",
|
|
597
|
-
"bottom-right": "┘",
|
|
598
|
-
left: "│",
|
|
599
|
-
"left-mid": "├",
|
|
600
|
-
mid: "─",
|
|
601
|
-
"mid-mid": "┼",
|
|
602
|
-
right: "│",
|
|
603
|
-
"right-mid": "┤",
|
|
604
|
-
middle: "│"
|
|
605
|
-
},
|
|
606
|
-
truncate: "…",
|
|
607
|
-
colWidths: [],
|
|
608
|
-
rowHeights: [],
|
|
609
|
-
colAligns: [],
|
|
610
|
-
rowAligns: [],
|
|
611
|
-
style: {
|
|
612
|
-
"padding-left": 1,
|
|
613
|
-
"padding-right": 1,
|
|
614
|
-
head: ["red"],
|
|
615
|
-
border: ["grey"],
|
|
616
|
-
compact: false
|
|
617
|
-
},
|
|
618
|
-
head: []
|
|
619
|
-
};
|
|
620
|
-
}
|
|
621
|
-
function mergeOptions(options, defaults) {
|
|
622
|
-
options = options || {};
|
|
623
|
-
defaults = defaults || defaultOptions();
|
|
624
|
-
let ret = Object.assign({}, defaults, options);
|
|
625
|
-
ret.chars = Object.assign({}, defaults.chars, options.chars);
|
|
626
|
-
ret.style = Object.assign({}, defaults.style, options.style);
|
|
627
|
-
return ret;
|
|
628
|
-
}
|
|
629
|
-
function wordWrap(maxLength, input) {
|
|
630
|
-
let lines = [];
|
|
631
|
-
let split = input.split(/(\s+)/g);
|
|
632
|
-
let line = [];
|
|
633
|
-
let lineLength = 0;
|
|
634
|
-
let whitespace;
|
|
635
|
-
for (let i = 0;i < split.length; i += 2) {
|
|
636
|
-
let word = split[i];
|
|
637
|
-
let newLength = lineLength + strlen(word);
|
|
638
|
-
if (lineLength > 0 && whitespace) {
|
|
639
|
-
newLength += whitespace.length;
|
|
640
|
-
}
|
|
641
|
-
if (newLength > maxLength) {
|
|
642
|
-
if (lineLength !== 0) {
|
|
643
|
-
lines.push(line.join(""));
|
|
644
|
-
}
|
|
645
|
-
line = [word];
|
|
646
|
-
lineLength = strlen(word);
|
|
647
|
-
} else {
|
|
648
|
-
line.push(whitespace || "", word);
|
|
649
|
-
lineLength = newLength;
|
|
650
|
-
}
|
|
651
|
-
whitespace = split[i + 1];
|
|
652
|
-
}
|
|
653
|
-
if (lineLength) {
|
|
654
|
-
lines.push(line.join(""));
|
|
655
|
-
}
|
|
656
|
-
return lines;
|
|
657
|
-
}
|
|
658
|
-
function textWrap(maxLength, input) {
|
|
659
|
-
let lines = [];
|
|
660
|
-
let line = "";
|
|
661
|
-
function pushLine(str, ws) {
|
|
662
|
-
if (line.length && ws)
|
|
663
|
-
line += ws;
|
|
664
|
-
line += str;
|
|
665
|
-
while (line.length > maxLength) {
|
|
666
|
-
lines.push(line.slice(0, maxLength));
|
|
667
|
-
line = line.slice(maxLength);
|
|
668
|
-
}
|
|
669
|
-
}
|
|
670
|
-
let split = input.split(/(\s+)/g);
|
|
671
|
-
for (let i = 0;i < split.length; i += 2) {
|
|
672
|
-
pushLine(split[i], i && split[i - 1]);
|
|
673
|
-
}
|
|
674
|
-
if (line.length)
|
|
675
|
-
lines.push(line);
|
|
676
|
-
return lines;
|
|
677
|
-
}
|
|
678
|
-
function multiLineWordWrap(maxLength, input, wrapOnWordBoundary = true) {
|
|
679
|
-
let output = [];
|
|
680
|
-
input = input.split(`
|
|
681
|
-
`);
|
|
682
|
-
const handler = wrapOnWordBoundary ? wordWrap : textWrap;
|
|
683
|
-
for (let i = 0;i < input.length; i++) {
|
|
684
|
-
output.push.apply(output, handler(maxLength, input[i]));
|
|
685
|
-
}
|
|
686
|
-
return output;
|
|
687
|
-
}
|
|
688
|
-
function colorizeLines(input) {
|
|
689
|
-
let state = {};
|
|
690
|
-
let output = [];
|
|
691
|
-
for (let i = 0;i < input.length; i++) {
|
|
692
|
-
let line = rewindState(state, input[i]);
|
|
693
|
-
state = readState(line);
|
|
694
|
-
let temp = Object.assign({}, state);
|
|
695
|
-
output.push(unwindState(temp, line));
|
|
696
|
-
}
|
|
697
|
-
return output;
|
|
698
|
-
}
|
|
699
|
-
function hyperlink(url, text) {
|
|
700
|
-
const OSC = "\x1B]";
|
|
701
|
-
const BEL = "\x07";
|
|
702
|
-
const SEP = ";";
|
|
703
|
-
return [OSC, "8", SEP, SEP, url || text, BEL, text, OSC, "8", SEP, SEP, BEL].join("");
|
|
704
|
-
}
|
|
705
|
-
module.exports = {
|
|
706
|
-
strlen,
|
|
707
|
-
repeat,
|
|
708
|
-
pad,
|
|
709
|
-
truncate,
|
|
710
|
-
mergeOptions,
|
|
711
|
-
wordWrap: multiLineWordWrap,
|
|
712
|
-
colorizeLines,
|
|
713
|
-
hyperlink
|
|
714
|
-
};
|
|
715
|
-
});
|
|
716
|
-
|
|
717
|
-
// node_modules/@colors/colors/lib/styles.js
|
|
718
|
-
var require_styles = __commonJS((exports, module) => {
|
|
719
|
-
var styles4 = {};
|
|
720
|
-
module["exports"] = styles4;
|
|
721
|
-
var codes = {
|
|
722
|
-
reset: [0, 0],
|
|
723
|
-
bold: [1, 22],
|
|
724
|
-
dim: [2, 22],
|
|
725
|
-
italic: [3, 23],
|
|
726
|
-
underline: [4, 24],
|
|
727
|
-
inverse: [7, 27],
|
|
728
|
-
hidden: [8, 28],
|
|
729
|
-
strikethrough: [9, 29],
|
|
730
|
-
black: [30, 39],
|
|
731
|
-
red: [31, 39],
|
|
732
|
-
green: [32, 39],
|
|
733
|
-
yellow: [33, 39],
|
|
734
|
-
blue: [34, 39],
|
|
735
|
-
magenta: [35, 39],
|
|
736
|
-
cyan: [36, 39],
|
|
737
|
-
white: [37, 39],
|
|
738
|
-
gray: [90, 39],
|
|
739
|
-
grey: [90, 39],
|
|
740
|
-
brightRed: [91, 39],
|
|
741
|
-
brightGreen: [92, 39],
|
|
742
|
-
brightYellow: [93, 39],
|
|
743
|
-
brightBlue: [94, 39],
|
|
744
|
-
brightMagenta: [95, 39],
|
|
745
|
-
brightCyan: [96, 39],
|
|
746
|
-
brightWhite: [97, 39],
|
|
747
|
-
bgBlack: [40, 49],
|
|
748
|
-
bgRed: [41, 49],
|
|
749
|
-
bgGreen: [42, 49],
|
|
750
|
-
bgYellow: [43, 49],
|
|
751
|
-
bgBlue: [44, 49],
|
|
752
|
-
bgMagenta: [45, 49],
|
|
753
|
-
bgCyan: [46, 49],
|
|
754
|
-
bgWhite: [47, 49],
|
|
755
|
-
bgGray: [100, 49],
|
|
756
|
-
bgGrey: [100, 49],
|
|
757
|
-
bgBrightRed: [101, 49],
|
|
758
|
-
bgBrightGreen: [102, 49],
|
|
759
|
-
bgBrightYellow: [103, 49],
|
|
760
|
-
bgBrightBlue: [104, 49],
|
|
761
|
-
bgBrightMagenta: [105, 49],
|
|
762
|
-
bgBrightCyan: [106, 49],
|
|
763
|
-
bgBrightWhite: [107, 49],
|
|
764
|
-
blackBG: [40, 49],
|
|
765
|
-
redBG: [41, 49],
|
|
766
|
-
greenBG: [42, 49],
|
|
767
|
-
yellowBG: [43, 49],
|
|
768
|
-
blueBG: [44, 49],
|
|
769
|
-
magentaBG: [45, 49],
|
|
770
|
-
cyanBG: [46, 49],
|
|
771
|
-
whiteBG: [47, 49]
|
|
772
|
-
};
|
|
773
|
-
Object.keys(codes).forEach(function(key) {
|
|
774
|
-
var val = codes[key];
|
|
775
|
-
var style = styles4[key] = [];
|
|
776
|
-
style.open = "\x1B[" + val[0] + "m";
|
|
777
|
-
style.close = "\x1B[" + val[1] + "m";
|
|
778
|
-
});
|
|
779
|
-
});
|
|
780
|
-
|
|
781
|
-
// node_modules/@colors/colors/lib/system/has-flag.js
|
|
782
|
-
var require_has_flag = __commonJS((exports, module) => {
|
|
783
|
-
module.exports = function(flag, argv) {
|
|
784
|
-
argv = argv || process.argv;
|
|
785
|
-
var terminatorPos = argv.indexOf("--");
|
|
786
|
-
var prefix = /^-{1,2}/.test(flag) ? "" : "--";
|
|
787
|
-
var pos = argv.indexOf(prefix + flag);
|
|
788
|
-
return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
|
|
789
|
-
};
|
|
790
|
-
});
|
|
791
|
-
|
|
792
|
-
// node_modules/@colors/colors/lib/system/supports-colors.js
|
|
793
|
-
var require_supports_colors = __commonJS((exports, module) => {
|
|
794
|
-
var os2 = __require("os");
|
|
795
|
-
var hasFlag2 = require_has_flag();
|
|
796
|
-
var env2 = process.env;
|
|
797
|
-
var forceColor = undefined;
|
|
798
|
-
if (hasFlag2("no-color") || hasFlag2("no-colors") || hasFlag2("color=false")) {
|
|
799
|
-
forceColor = false;
|
|
800
|
-
} else if (hasFlag2("color") || hasFlag2("colors") || hasFlag2("color=true") || hasFlag2("color=always")) {
|
|
801
|
-
forceColor = true;
|
|
802
|
-
}
|
|
803
|
-
if ("FORCE_COLOR" in env2) {
|
|
804
|
-
forceColor = env2.FORCE_COLOR.length === 0 || parseInt(env2.FORCE_COLOR, 10) !== 0;
|
|
805
|
-
}
|
|
806
|
-
function translateLevel2(level) {
|
|
807
|
-
if (level === 0) {
|
|
808
|
-
return false;
|
|
809
|
-
}
|
|
810
|
-
return {
|
|
811
|
-
level,
|
|
812
|
-
hasBasic: true,
|
|
813
|
-
has256: level >= 2,
|
|
814
|
-
has16m: level >= 3
|
|
815
|
-
};
|
|
816
|
-
}
|
|
817
|
-
function supportsColor2(stream) {
|
|
818
|
-
if (forceColor === false) {
|
|
819
|
-
return 0;
|
|
820
|
-
}
|
|
821
|
-
if (hasFlag2("color=16m") || hasFlag2("color=full") || hasFlag2("color=truecolor")) {
|
|
822
|
-
return 3;
|
|
823
|
-
}
|
|
824
|
-
if (hasFlag2("color=256")) {
|
|
825
|
-
return 2;
|
|
826
|
-
}
|
|
827
|
-
if (stream && !stream.isTTY && forceColor !== true) {
|
|
828
|
-
return 0;
|
|
829
|
-
}
|
|
830
|
-
var min = forceColor ? 1 : 0;
|
|
831
|
-
if (process.platform === "win32") {
|
|
832
|
-
var osRelease = os2.release().split(".");
|
|
833
|
-
if (Number(process.versions.node.split(".")[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
|
|
834
|
-
return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
|
835
|
-
}
|
|
836
|
-
return 1;
|
|
837
|
-
}
|
|
838
|
-
if ("CI" in env2) {
|
|
839
|
-
if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI"].some(function(sign) {
|
|
840
|
-
return sign in env2;
|
|
841
|
-
}) || env2.CI_NAME === "codeship") {
|
|
842
|
-
return 1;
|
|
843
|
-
}
|
|
844
|
-
return min;
|
|
845
|
-
}
|
|
846
|
-
if ("TEAMCITY_VERSION" in env2) {
|
|
847
|
-
return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env2.TEAMCITY_VERSION) ? 1 : 0;
|
|
848
|
-
}
|
|
849
|
-
if ("TERM_PROGRAM" in env2) {
|
|
850
|
-
var version = parseInt((env2.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
|
|
851
|
-
switch (env2.TERM_PROGRAM) {
|
|
852
|
-
case "iTerm.app":
|
|
853
|
-
return version >= 3 ? 3 : 2;
|
|
854
|
-
case "Hyper":
|
|
855
|
-
return 3;
|
|
856
|
-
case "Apple_Terminal":
|
|
857
|
-
return 2;
|
|
858
|
-
}
|
|
859
|
-
}
|
|
860
|
-
if (/-256(color)?$/i.test(env2.TERM)) {
|
|
861
|
-
return 2;
|
|
862
|
-
}
|
|
863
|
-
if (/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env2.TERM)) {
|
|
864
|
-
return 1;
|
|
865
|
-
}
|
|
866
|
-
if ("COLORTERM" in env2) {
|
|
867
|
-
return 1;
|
|
868
|
-
}
|
|
869
|
-
if (env2.TERM === "dumb") {
|
|
870
|
-
return min;
|
|
871
|
-
}
|
|
872
|
-
return min;
|
|
873
|
-
}
|
|
874
|
-
function getSupportLevel(stream) {
|
|
875
|
-
var level = supportsColor2(stream);
|
|
876
|
-
return translateLevel2(level);
|
|
877
|
-
}
|
|
878
|
-
module.exports = {
|
|
879
|
-
supportsColor: getSupportLevel,
|
|
880
|
-
stdout: getSupportLevel(process.stdout),
|
|
881
|
-
stderr: getSupportLevel(process.stderr)
|
|
882
|
-
};
|
|
883
|
-
});
|
|
884
|
-
|
|
885
|
-
// node_modules/@colors/colors/lib/custom/trap.js
|
|
886
|
-
var require_trap = __commonJS((exports, module) => {
|
|
887
|
-
module["exports"] = function runTheTrap(text, options) {
|
|
888
|
-
var result = "";
|
|
889
|
-
text = text || "Run the trap, drop the bass";
|
|
890
|
-
text = text.split("");
|
|
891
|
-
var trap = {
|
|
892
|
-
a: ["@", "Ą", "Ⱥ", "Ʌ", "Δ", "Λ", "Д"],
|
|
893
|
-
b: ["ß", "Ɓ", "Ƀ", "ɮ", "β", "฿"],
|
|
894
|
-
c: ["©", "Ȼ", "Ͼ"],
|
|
895
|
-
d: ["Ð", "Ɗ", "Ԁ", "ԁ", "Ԃ", "ԃ"],
|
|
896
|
-
e: [
|
|
897
|
-
"Ë",
|
|
898
|
-
"ĕ",
|
|
899
|
-
"Ǝ",
|
|
900
|
-
"ɘ",
|
|
901
|
-
"Σ",
|
|
902
|
-
"ξ",
|
|
903
|
-
"Ҽ",
|
|
904
|
-
"੬"
|
|
905
|
-
],
|
|
906
|
-
f: ["Ӻ"],
|
|
907
|
-
g: ["ɢ"],
|
|
908
|
-
h: ["Ħ", "ƕ", "Ң", "Һ", "Ӈ", "Ԋ"],
|
|
909
|
-
i: ["༏"],
|
|
910
|
-
j: ["Ĵ"],
|
|
911
|
-
k: ["ĸ", "Ҡ", "Ӄ", "Ԟ"],
|
|
912
|
-
l: ["Ĺ"],
|
|
913
|
-
m: ["ʍ", "Ӎ", "ӎ", "Ԡ", "ԡ", "൩"],
|
|
914
|
-
n: ["Ñ", "ŋ", "Ɲ", "Ͷ", "Π", "Ҋ"],
|
|
915
|
-
o: [
|
|
916
|
-
"Ø",
|
|
917
|
-
"õ",
|
|
918
|
-
"ø",
|
|
919
|
-
"Ǿ",
|
|
920
|
-
"ʘ",
|
|
921
|
-
"Ѻ",
|
|
922
|
-
"ם",
|
|
923
|
-
"",
|
|
924
|
-
"๏"
|
|
925
|
-
],
|
|
926
|
-
p: ["Ƿ", "Ҏ"],
|
|
927
|
-
q: ["্"],
|
|
928
|
-
r: ["®", "Ʀ", "Ȑ", "Ɍ", "ʀ", "Я"],
|
|
929
|
-
s: ["§", "Ϟ", "ϟ", "Ϩ"],
|
|
930
|
-
t: ["Ł", "Ŧ", "ͳ"],
|
|
931
|
-
u: ["Ʊ", "Ս"],
|
|
932
|
-
v: ["ט"],
|
|
933
|
-
w: ["Ш", "Ѡ", "Ѽ", "൰"],
|
|
934
|
-
x: ["Ҳ", "Ӿ", "Ӽ", "ӽ"],
|
|
935
|
-
y: ["¥", "Ұ", "Ӌ"],
|
|
936
|
-
z: ["Ƶ", "ɀ"]
|
|
937
|
-
};
|
|
938
|
-
text.forEach(function(c) {
|
|
939
|
-
c = c.toLowerCase();
|
|
940
|
-
var chars = trap[c] || [" "];
|
|
941
|
-
var rand = Math.floor(Math.random() * chars.length);
|
|
942
|
-
if (typeof trap[c] !== "undefined") {
|
|
943
|
-
result += trap[c][rand];
|
|
944
|
-
} else {
|
|
945
|
-
result += c;
|
|
946
|
-
}
|
|
947
|
-
});
|
|
948
|
-
return result;
|
|
949
|
-
};
|
|
950
|
-
});
|
|
951
|
-
|
|
952
|
-
// node_modules/@colors/colors/lib/custom/zalgo.js
|
|
953
|
-
var require_zalgo = __commonJS((exports, module) => {
|
|
954
|
-
module["exports"] = function zalgo(text, options) {
|
|
955
|
-
text = text || " he is here ";
|
|
956
|
-
var soul = {
|
|
957
|
-
up: [
|
|
958
|
-
"̍",
|
|
959
|
-
"̎",
|
|
960
|
-
"̄",
|
|
961
|
-
"̅",
|
|
962
|
-
"̿",
|
|
963
|
-
"̑",
|
|
964
|
-
"̆",
|
|
965
|
-
"̐",
|
|
966
|
-
"͒",
|
|
967
|
-
"͗",
|
|
968
|
-
"͑",
|
|
969
|
-
"̇",
|
|
970
|
-
"̈",
|
|
971
|
-
"̊",
|
|
972
|
-
"͂",
|
|
973
|
-
"̓",
|
|
974
|
-
"̈",
|
|
975
|
-
"͊",
|
|
976
|
-
"͋",
|
|
977
|
-
"͌",
|
|
978
|
-
"̃",
|
|
979
|
-
"̂",
|
|
980
|
-
"̌",
|
|
981
|
-
"͐",
|
|
982
|
-
"̀",
|
|
983
|
-
"́",
|
|
984
|
-
"̋",
|
|
985
|
-
"̏",
|
|
986
|
-
"̒",
|
|
987
|
-
"̓",
|
|
988
|
-
"̔",
|
|
989
|
-
"̽",
|
|
990
|
-
"̉",
|
|
991
|
-
"ͣ",
|
|
992
|
-
"ͤ",
|
|
993
|
-
"ͥ",
|
|
994
|
-
"ͦ",
|
|
995
|
-
"ͧ",
|
|
996
|
-
"ͨ",
|
|
997
|
-
"ͩ",
|
|
998
|
-
"ͪ",
|
|
999
|
-
"ͫ",
|
|
1000
|
-
"ͬ",
|
|
1001
|
-
"ͭ",
|
|
1002
|
-
"ͮ",
|
|
1003
|
-
"ͯ",
|
|
1004
|
-
"̾",
|
|
1005
|
-
"͛",
|
|
1006
|
-
"͆",
|
|
1007
|
-
"̚"
|
|
1008
|
-
],
|
|
1009
|
-
down: [
|
|
1010
|
-
"̖",
|
|
1011
|
-
"̗",
|
|
1012
|
-
"̘",
|
|
1013
|
-
"̙",
|
|
1014
|
-
"̜",
|
|
1015
|
-
"̝",
|
|
1016
|
-
"̞",
|
|
1017
|
-
"̟",
|
|
1018
|
-
"̠",
|
|
1019
|
-
"̤",
|
|
1020
|
-
"̥",
|
|
1021
|
-
"̦",
|
|
1022
|
-
"̩",
|
|
1023
|
-
"̪",
|
|
1024
|
-
"̫",
|
|
1025
|
-
"̬",
|
|
1026
|
-
"̭",
|
|
1027
|
-
"̮",
|
|
1028
|
-
"̯",
|
|
1029
|
-
"̰",
|
|
1030
|
-
"̱",
|
|
1031
|
-
"̲",
|
|
1032
|
-
"̳",
|
|
1033
|
-
"̹",
|
|
1034
|
-
"̺",
|
|
1035
|
-
"̻",
|
|
1036
|
-
"̼",
|
|
1037
|
-
"ͅ",
|
|
1038
|
-
"͇",
|
|
1039
|
-
"͈",
|
|
1040
|
-
"͉",
|
|
1041
|
-
"͍",
|
|
1042
|
-
"͎",
|
|
1043
|
-
"͓",
|
|
1044
|
-
"͔",
|
|
1045
|
-
"͕",
|
|
1046
|
-
"͖",
|
|
1047
|
-
"͙",
|
|
1048
|
-
"͚",
|
|
1049
|
-
"̣"
|
|
1050
|
-
],
|
|
1051
|
-
mid: [
|
|
1052
|
-
"̕",
|
|
1053
|
-
"̛",
|
|
1054
|
-
"̀",
|
|
1055
|
-
"́",
|
|
1056
|
-
"͘",
|
|
1057
|
-
"̡",
|
|
1058
|
-
"̢",
|
|
1059
|
-
"̧",
|
|
1060
|
-
"̨",
|
|
1061
|
-
"̴",
|
|
1062
|
-
"̵",
|
|
1063
|
-
"̶",
|
|
1064
|
-
"͜",
|
|
1065
|
-
"͝",
|
|
1066
|
-
"͞",
|
|
1067
|
-
"͟",
|
|
1068
|
-
"͠",
|
|
1069
|
-
"͢",
|
|
1070
|
-
"̸",
|
|
1071
|
-
"̷",
|
|
1072
|
-
"͡",
|
|
1073
|
-
" ҉"
|
|
1074
|
-
]
|
|
1075
|
-
};
|
|
1076
|
-
var all = [].concat(soul.up, soul.down, soul.mid);
|
|
1077
|
-
function randomNumber(range) {
|
|
1078
|
-
var r = Math.floor(Math.random() * range);
|
|
1079
|
-
return r;
|
|
1080
|
-
}
|
|
1081
|
-
function isChar(character) {
|
|
1082
|
-
var bool = false;
|
|
1083
|
-
all.filter(function(i) {
|
|
1084
|
-
bool = i === character;
|
|
1085
|
-
});
|
|
1086
|
-
return bool;
|
|
1087
|
-
}
|
|
1088
|
-
function heComes(text2, options2) {
|
|
1089
|
-
var result = "";
|
|
1090
|
-
var counts;
|
|
1091
|
-
var l;
|
|
1092
|
-
options2 = options2 || {};
|
|
1093
|
-
options2["up"] = typeof options2["up"] !== "undefined" ? options2["up"] : true;
|
|
1094
|
-
options2["mid"] = typeof options2["mid"] !== "undefined" ? options2["mid"] : true;
|
|
1095
|
-
options2["down"] = typeof options2["down"] !== "undefined" ? options2["down"] : true;
|
|
1096
|
-
options2["size"] = typeof options2["size"] !== "undefined" ? options2["size"] : "maxi";
|
|
1097
|
-
text2 = text2.split("");
|
|
1098
|
-
for (l in text2) {
|
|
1099
|
-
if (isChar(l)) {
|
|
1100
|
-
continue;
|
|
1101
|
-
}
|
|
1102
|
-
result = result + text2[l];
|
|
1103
|
-
counts = { up: 0, down: 0, mid: 0 };
|
|
1104
|
-
switch (options2.size) {
|
|
1105
|
-
case "mini":
|
|
1106
|
-
counts.up = randomNumber(8);
|
|
1107
|
-
counts.mid = randomNumber(2);
|
|
1108
|
-
counts.down = randomNumber(8);
|
|
1109
|
-
break;
|
|
1110
|
-
case "maxi":
|
|
1111
|
-
counts.up = randomNumber(16) + 3;
|
|
1112
|
-
counts.mid = randomNumber(4) + 1;
|
|
1113
|
-
counts.down = randomNumber(64) + 3;
|
|
1114
|
-
break;
|
|
1115
|
-
default:
|
|
1116
|
-
counts.up = randomNumber(8) + 1;
|
|
1117
|
-
counts.mid = randomNumber(6) / 2;
|
|
1118
|
-
counts.down = randomNumber(8) + 1;
|
|
1119
|
-
break;
|
|
1120
|
-
}
|
|
1121
|
-
var arr = ["up", "mid", "down"];
|
|
1122
|
-
for (var d in arr) {
|
|
1123
|
-
var index = arr[d];
|
|
1124
|
-
for (var i = 0;i <= counts[index]; i++) {
|
|
1125
|
-
if (options2[index]) {
|
|
1126
|
-
result = result + soul[index][randomNumber(soul[index].length)];
|
|
1127
|
-
}
|
|
1128
|
-
}
|
|
1129
|
-
}
|
|
1130
|
-
}
|
|
1131
|
-
return result;
|
|
1132
|
-
}
|
|
1133
|
-
return heComes(text, options);
|
|
1134
|
-
};
|
|
1135
|
-
});
|
|
1136
|
-
|
|
1137
|
-
// node_modules/@colors/colors/lib/maps/america.js
|
|
1138
|
-
var require_america = __commonJS((exports, module) => {
|
|
1139
|
-
module["exports"] = function(colors) {
|
|
1140
|
-
return function(letter, i, exploded) {
|
|
1141
|
-
if (letter === " ")
|
|
1142
|
-
return letter;
|
|
1143
|
-
switch (i % 3) {
|
|
1144
|
-
case 0:
|
|
1145
|
-
return colors.red(letter);
|
|
1146
|
-
case 1:
|
|
1147
|
-
return colors.white(letter);
|
|
1148
|
-
case 2:
|
|
1149
|
-
return colors.blue(letter);
|
|
1150
|
-
}
|
|
1151
|
-
};
|
|
1152
|
-
};
|
|
1153
|
-
});
|
|
1154
|
-
|
|
1155
|
-
// node_modules/@colors/colors/lib/maps/zebra.js
|
|
1156
|
-
var require_zebra = __commonJS((exports, module) => {
|
|
1157
|
-
module["exports"] = function(colors) {
|
|
1158
|
-
return function(letter, i, exploded) {
|
|
1159
|
-
return i % 2 === 0 ? letter : colors.inverse(letter);
|
|
1160
|
-
};
|
|
1161
|
-
};
|
|
1162
|
-
});
|
|
1163
|
-
|
|
1164
|
-
// node_modules/@colors/colors/lib/maps/rainbow.js
|
|
1165
|
-
var require_rainbow = __commonJS((exports, module) => {
|
|
1166
|
-
module["exports"] = function(colors) {
|
|
1167
|
-
var rainbowColors = ["red", "yellow", "green", "blue", "magenta"];
|
|
1168
|
-
return function(letter, i, exploded) {
|
|
1169
|
-
if (letter === " ") {
|
|
1170
|
-
return letter;
|
|
1171
|
-
} else {
|
|
1172
|
-
return colors[rainbowColors[i++ % rainbowColors.length]](letter);
|
|
1173
|
-
}
|
|
1174
|
-
};
|
|
1175
|
-
};
|
|
1176
|
-
});
|
|
1177
|
-
|
|
1178
|
-
// node_modules/@colors/colors/lib/maps/random.js
|
|
1179
|
-
var require_random = __commonJS((exports, module) => {
|
|
1180
|
-
module["exports"] = function(colors) {
|
|
1181
|
-
var available = [
|
|
1182
|
-
"underline",
|
|
1183
|
-
"inverse",
|
|
1184
|
-
"grey",
|
|
1185
|
-
"yellow",
|
|
1186
|
-
"red",
|
|
1187
|
-
"green",
|
|
1188
|
-
"blue",
|
|
1189
|
-
"white",
|
|
1190
|
-
"cyan",
|
|
1191
|
-
"magenta",
|
|
1192
|
-
"brightYellow",
|
|
1193
|
-
"brightRed",
|
|
1194
|
-
"brightGreen",
|
|
1195
|
-
"brightBlue",
|
|
1196
|
-
"brightWhite",
|
|
1197
|
-
"brightCyan",
|
|
1198
|
-
"brightMagenta"
|
|
1199
|
-
];
|
|
1200
|
-
return function(letter, i, exploded) {
|
|
1201
|
-
return letter === " " ? letter : colors[available[Math.round(Math.random() * (available.length - 2))]](letter);
|
|
1202
|
-
};
|
|
1203
|
-
};
|
|
1204
|
-
});
|
|
1205
|
-
|
|
1206
|
-
// node_modules/@colors/colors/lib/colors.js
|
|
1207
|
-
var require_colors = __commonJS((exports, module) => {
|
|
1208
|
-
var colors = {};
|
|
1209
|
-
module["exports"] = colors;
|
|
1210
|
-
colors.themes = {};
|
|
1211
|
-
var util = __require("util");
|
|
1212
|
-
var ansiStyles3 = colors.styles = require_styles();
|
|
1213
|
-
var defineProps = Object.defineProperties;
|
|
1214
|
-
var newLineRegex = new RegExp(/[\r\n]+/g);
|
|
1215
|
-
colors.supportsColor = require_supports_colors().supportsColor;
|
|
1216
|
-
if (typeof colors.enabled === "undefined") {
|
|
1217
|
-
colors.enabled = colors.supportsColor() !== false;
|
|
1218
|
-
}
|
|
1219
|
-
colors.enable = function() {
|
|
1220
|
-
colors.enabled = true;
|
|
1221
|
-
};
|
|
1222
|
-
colors.disable = function() {
|
|
1223
|
-
colors.enabled = false;
|
|
1224
|
-
};
|
|
1225
|
-
colors.stripColors = colors.strip = function(str) {
|
|
1226
|
-
return ("" + str).replace(/\x1B\[\d+m/g, "");
|
|
1227
|
-
};
|
|
1228
|
-
var stylize = colors.stylize = function stylize(str, style) {
|
|
1229
|
-
if (!colors.enabled) {
|
|
1230
|
-
return str + "";
|
|
1231
|
-
}
|
|
1232
|
-
var styleMap = ansiStyles3[style];
|
|
1233
|
-
if (!styleMap && style in colors) {
|
|
1234
|
-
return colors[style](str);
|
|
1235
|
-
}
|
|
1236
|
-
return styleMap.open + str + styleMap.close;
|
|
1237
|
-
};
|
|
1238
|
-
var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
|
|
1239
|
-
var escapeStringRegexp = function(str) {
|
|
1240
|
-
if (typeof str !== "string") {
|
|
1241
|
-
throw new TypeError("Expected a string");
|
|
1242
|
-
}
|
|
1243
|
-
return str.replace(matchOperatorsRe, "\\$&");
|
|
1244
|
-
};
|
|
1245
|
-
function build(_styles) {
|
|
1246
|
-
var builder = function builder() {
|
|
1247
|
-
return applyStyle2.apply(builder, arguments);
|
|
1248
|
-
};
|
|
1249
|
-
builder._styles = _styles;
|
|
1250
|
-
builder.__proto__ = proto2;
|
|
1251
|
-
return builder;
|
|
1252
|
-
}
|
|
1253
|
-
var styles4 = function() {
|
|
1254
|
-
var ret = {};
|
|
1255
|
-
ansiStyles3.grey = ansiStyles3.gray;
|
|
1256
|
-
Object.keys(ansiStyles3).forEach(function(key) {
|
|
1257
|
-
ansiStyles3[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles3[key].close), "g");
|
|
1258
|
-
ret[key] = {
|
|
1259
|
-
get: function() {
|
|
1260
|
-
return build(this._styles.concat(key));
|
|
1261
|
-
}
|
|
1262
|
-
};
|
|
1263
|
-
});
|
|
1264
|
-
return ret;
|
|
1265
|
-
}();
|
|
1266
|
-
var proto2 = defineProps(function colors() {}, styles4);
|
|
1267
|
-
function applyStyle2() {
|
|
1268
|
-
var args = Array.prototype.slice.call(arguments);
|
|
1269
|
-
var str = args.map(function(arg) {
|
|
1270
|
-
if (arg != null && arg.constructor === String) {
|
|
1271
|
-
return arg;
|
|
1272
|
-
} else {
|
|
1273
|
-
return util.inspect(arg);
|
|
1274
|
-
}
|
|
1275
|
-
}).join(" ");
|
|
1276
|
-
if (!colors.enabled || !str) {
|
|
1277
|
-
return str;
|
|
1278
|
-
}
|
|
1279
|
-
var newLinesPresent = str.indexOf(`
|
|
1280
|
-
`) != -1;
|
|
1281
|
-
var nestedStyles = this._styles;
|
|
1282
|
-
var i = nestedStyles.length;
|
|
1283
|
-
while (i--) {
|
|
1284
|
-
var code = ansiStyles3[nestedStyles[i]];
|
|
1285
|
-
str = code.open + str.replace(code.closeRe, code.open) + code.close;
|
|
1286
|
-
if (newLinesPresent) {
|
|
1287
|
-
str = str.replace(newLineRegex, function(match) {
|
|
1288
|
-
return code.close + match + code.open;
|
|
1289
|
-
});
|
|
1290
|
-
}
|
|
1291
|
-
}
|
|
1292
|
-
return str;
|
|
1293
|
-
}
|
|
1294
|
-
colors.setTheme = function(theme) {
|
|
1295
|
-
if (typeof theme === "string") {
|
|
1296
|
-
console.log("colors.setTheme now only accepts an object, not a string. " + "If you are trying to set a theme from a file, it is now your (the " + "caller's) responsibility to require the file. The old syntax " + "looked like colors.setTheme(__dirname + " + "'/../themes/generic-logging.js'); The new syntax looks like " + "colors.setTheme(require(__dirname + " + "'/../themes/generic-logging.js'));");
|
|
1297
|
-
return;
|
|
1298
|
-
}
|
|
1299
|
-
for (var style in theme) {
|
|
1300
|
-
(function(style2) {
|
|
1301
|
-
colors[style2] = function(str) {
|
|
1302
|
-
if (typeof theme[style2] === "object") {
|
|
1303
|
-
var out = str;
|
|
1304
|
-
for (var i in theme[style2]) {
|
|
1305
|
-
out = colors[theme[style2][i]](out);
|
|
1306
|
-
}
|
|
1307
|
-
return out;
|
|
1308
|
-
}
|
|
1309
|
-
return colors[theme[style2]](str);
|
|
1310
|
-
};
|
|
1311
|
-
})(style);
|
|
1312
|
-
}
|
|
1313
|
-
};
|
|
1314
|
-
function init() {
|
|
1315
|
-
var ret = {};
|
|
1316
|
-
Object.keys(styles4).forEach(function(name) {
|
|
1317
|
-
ret[name] = {
|
|
1318
|
-
get: function() {
|
|
1319
|
-
return build([name]);
|
|
1320
|
-
}
|
|
1321
|
-
};
|
|
1322
|
-
});
|
|
1323
|
-
return ret;
|
|
1324
|
-
}
|
|
1325
|
-
var sequencer = function sequencer(map2, str) {
|
|
1326
|
-
var exploded = str.split("");
|
|
1327
|
-
exploded = exploded.map(map2);
|
|
1328
|
-
return exploded.join("");
|
|
1329
|
-
};
|
|
1330
|
-
colors.trap = require_trap();
|
|
1331
|
-
colors.zalgo = require_zalgo();
|
|
1332
|
-
colors.maps = {};
|
|
1333
|
-
colors.maps.america = require_america()(colors);
|
|
1334
|
-
colors.maps.zebra = require_zebra()(colors);
|
|
1335
|
-
colors.maps.rainbow = require_rainbow()(colors);
|
|
1336
|
-
colors.maps.random = require_random()(colors);
|
|
1337
|
-
for (map in colors.maps) {
|
|
1338
|
-
(function(map2) {
|
|
1339
|
-
colors[map2] = function(str) {
|
|
1340
|
-
return sequencer(colors.maps[map2], str);
|
|
1341
|
-
};
|
|
1342
|
-
})(map);
|
|
1343
|
-
}
|
|
1344
|
-
var map;
|
|
1345
|
-
defineProps(colors, init());
|
|
1346
|
-
});
|
|
1347
|
-
|
|
1348
|
-
// node_modules/@colors/colors/safe.js
|
|
1349
|
-
var require_safe = __commonJS((exports, module) => {
|
|
1350
|
-
var colors = require_colors();
|
|
1351
|
-
module["exports"] = colors;
|
|
1352
|
-
});
|
|
1353
|
-
|
|
1354
|
-
// node_modules/cli-table3/src/cell.js
|
|
1355
|
-
var require_cell = __commonJS((exports, module) => {
|
|
1356
|
-
var { info, debug } = require_debug();
|
|
1357
|
-
var utils = require_utils();
|
|
1358
|
-
|
|
1359
|
-
class Cell {
|
|
1360
|
-
constructor(options) {
|
|
1361
|
-
this.setOptions(options);
|
|
1362
|
-
this.x = null;
|
|
1363
|
-
this.y = null;
|
|
1364
|
-
}
|
|
1365
|
-
setOptions(options) {
|
|
1366
|
-
if (["boolean", "number", "bigint", "string"].indexOf(typeof options) !== -1) {
|
|
1367
|
-
options = { content: "" + options };
|
|
1368
|
-
}
|
|
1369
|
-
options = options || {};
|
|
1370
|
-
this.options = options;
|
|
1371
|
-
let content = options.content;
|
|
1372
|
-
if (["boolean", "number", "bigint", "string"].indexOf(typeof content) !== -1) {
|
|
1373
|
-
this.content = String(content);
|
|
1374
|
-
} else if (!content) {
|
|
1375
|
-
this.content = this.options.href || "";
|
|
1376
|
-
} else {
|
|
1377
|
-
throw new Error("Content needs to be a primitive, got: " + typeof content);
|
|
1378
|
-
}
|
|
1379
|
-
this.colSpan = options.colSpan || 1;
|
|
1380
|
-
this.rowSpan = options.rowSpan || 1;
|
|
1381
|
-
if (this.options.href) {
|
|
1382
|
-
Object.defineProperty(this, "href", {
|
|
1383
|
-
get() {
|
|
1384
|
-
return this.options.href;
|
|
1385
|
-
}
|
|
1386
|
-
});
|
|
1387
|
-
}
|
|
1388
|
-
}
|
|
1389
|
-
mergeTableOptions(tableOptions, cells) {
|
|
1390
|
-
this.cells = cells;
|
|
1391
|
-
let optionsChars = this.options.chars || {};
|
|
1392
|
-
let tableChars = tableOptions.chars;
|
|
1393
|
-
let chars = this.chars = {};
|
|
1394
|
-
CHAR_NAMES.forEach(function(name) {
|
|
1395
|
-
setOption(optionsChars, tableChars, name, chars);
|
|
1396
|
-
});
|
|
1397
|
-
this.truncate = this.options.truncate || tableOptions.truncate;
|
|
1398
|
-
let style = this.options.style = this.options.style || {};
|
|
1399
|
-
let tableStyle = tableOptions.style;
|
|
1400
|
-
setOption(style, tableStyle, "padding-left", this);
|
|
1401
|
-
setOption(style, tableStyle, "padding-right", this);
|
|
1402
|
-
this.head = style.head || tableStyle.head;
|
|
1403
|
-
this.border = style.border || tableStyle.border;
|
|
1404
|
-
this.fixedWidth = tableOptions.colWidths[this.x];
|
|
1405
|
-
this.lines = this.computeLines(tableOptions);
|
|
1406
|
-
this.desiredWidth = utils.strlen(this.content) + this.paddingLeft + this.paddingRight;
|
|
1407
|
-
this.desiredHeight = this.lines.length;
|
|
1408
|
-
}
|
|
1409
|
-
computeLines(tableOptions) {
|
|
1410
|
-
const tableWordWrap = tableOptions.wordWrap || tableOptions.textWrap;
|
|
1411
|
-
const { wordWrap = tableWordWrap } = this.options;
|
|
1412
|
-
if (this.fixedWidth && wordWrap) {
|
|
1413
|
-
this.fixedWidth -= this.paddingLeft + this.paddingRight;
|
|
1414
|
-
if (this.colSpan) {
|
|
1415
|
-
let i = 1;
|
|
1416
|
-
while (i < this.colSpan) {
|
|
1417
|
-
this.fixedWidth += tableOptions.colWidths[this.x + i];
|
|
1418
|
-
i++;
|
|
1419
|
-
}
|
|
1420
|
-
}
|
|
1421
|
-
const { wrapOnWordBoundary: tableWrapOnWordBoundary = true } = tableOptions;
|
|
1422
|
-
const { wrapOnWordBoundary = tableWrapOnWordBoundary } = this.options;
|
|
1423
|
-
return this.wrapLines(utils.wordWrap(this.fixedWidth, this.content, wrapOnWordBoundary));
|
|
1424
|
-
}
|
|
1425
|
-
return this.wrapLines(this.content.split(`
|
|
1426
|
-
`));
|
|
1427
|
-
}
|
|
1428
|
-
wrapLines(computedLines) {
|
|
1429
|
-
const lines = utils.colorizeLines(computedLines);
|
|
1430
|
-
if (this.href) {
|
|
1431
|
-
return lines.map((line) => utils.hyperlink(this.href, line));
|
|
1432
|
-
}
|
|
1433
|
-
return lines;
|
|
1434
|
-
}
|
|
1435
|
-
init(tableOptions) {
|
|
1436
|
-
let x = this.x;
|
|
1437
|
-
let y = this.y;
|
|
1438
|
-
this.widths = tableOptions.colWidths.slice(x, x + this.colSpan);
|
|
1439
|
-
this.heights = tableOptions.rowHeights.slice(y, y + this.rowSpan);
|
|
1440
|
-
this.width = this.widths.reduce(sumPlusOne, -1);
|
|
1441
|
-
this.height = this.heights.reduce(sumPlusOne, -1);
|
|
1442
|
-
this.hAlign = this.options.hAlign || tableOptions.colAligns[x];
|
|
1443
|
-
this.vAlign = this.options.vAlign || tableOptions.rowAligns[y];
|
|
1444
|
-
this.drawRight = x + this.colSpan == tableOptions.colWidths.length;
|
|
1445
|
-
}
|
|
1446
|
-
draw(lineNum, spanningCell) {
|
|
1447
|
-
if (lineNum == "top")
|
|
1448
|
-
return this.drawTop(this.drawRight);
|
|
1449
|
-
if (lineNum == "bottom")
|
|
1450
|
-
return this.drawBottom(this.drawRight);
|
|
1451
|
-
let content = utils.truncate(this.content, 10, this.truncate);
|
|
1452
|
-
if (!lineNum) {
|
|
1453
|
-
info(`${this.y}-${this.x}: ${this.rowSpan - lineNum}x${this.colSpan} Cell ${content}`);
|
|
1454
|
-
} else {}
|
|
1455
|
-
let padLen = Math.max(this.height - this.lines.length, 0);
|
|
1456
|
-
let padTop;
|
|
1457
|
-
switch (this.vAlign) {
|
|
1458
|
-
case "center":
|
|
1459
|
-
padTop = Math.ceil(padLen / 2);
|
|
1460
|
-
break;
|
|
1461
|
-
case "bottom":
|
|
1462
|
-
padTop = padLen;
|
|
1463
|
-
break;
|
|
1464
|
-
default:
|
|
1465
|
-
padTop = 0;
|
|
1466
|
-
}
|
|
1467
|
-
if (lineNum < padTop || lineNum >= padTop + this.lines.length) {
|
|
1468
|
-
return this.drawEmpty(this.drawRight, spanningCell);
|
|
1469
|
-
}
|
|
1470
|
-
let forceTruncation = this.lines.length > this.height && lineNum + 1 >= this.height;
|
|
1471
|
-
return this.drawLine(lineNum - padTop, this.drawRight, forceTruncation, spanningCell);
|
|
1472
|
-
}
|
|
1473
|
-
drawTop(drawRight) {
|
|
1474
|
-
let content = [];
|
|
1475
|
-
if (this.cells) {
|
|
1476
|
-
this.widths.forEach(function(width, index) {
|
|
1477
|
-
content.push(this._topLeftChar(index));
|
|
1478
|
-
content.push(utils.repeat(this.chars[this.y == 0 ? "top" : "mid"], width));
|
|
1479
|
-
}, this);
|
|
1480
|
-
} else {
|
|
1481
|
-
content.push(this._topLeftChar(0));
|
|
1482
|
-
content.push(utils.repeat(this.chars[this.y == 0 ? "top" : "mid"], this.width));
|
|
1483
|
-
}
|
|
1484
|
-
if (drawRight) {
|
|
1485
|
-
content.push(this.chars[this.y == 0 ? "topRight" : "rightMid"]);
|
|
1486
|
-
}
|
|
1487
|
-
return this.wrapWithStyleColors("border", content.join(""));
|
|
1488
|
-
}
|
|
1489
|
-
_topLeftChar(offset) {
|
|
1490
|
-
let x = this.x + offset;
|
|
1491
|
-
let leftChar;
|
|
1492
|
-
if (this.y == 0) {
|
|
1493
|
-
leftChar = x == 0 ? "topLeft" : offset == 0 ? "topMid" : "top";
|
|
1494
|
-
} else {
|
|
1495
|
-
if (x == 0) {
|
|
1496
|
-
leftChar = "leftMid";
|
|
1497
|
-
} else {
|
|
1498
|
-
leftChar = offset == 0 ? "midMid" : "bottomMid";
|
|
1499
|
-
if (this.cells) {
|
|
1500
|
-
let spanAbove = this.cells[this.y - 1][x] instanceof Cell.ColSpanCell;
|
|
1501
|
-
if (spanAbove) {
|
|
1502
|
-
leftChar = offset == 0 ? "topMid" : "mid";
|
|
1503
|
-
}
|
|
1504
|
-
if (offset == 0) {
|
|
1505
|
-
let i = 1;
|
|
1506
|
-
while (this.cells[this.y][x - i] instanceof Cell.ColSpanCell) {
|
|
1507
|
-
i++;
|
|
1508
|
-
}
|
|
1509
|
-
if (this.cells[this.y][x - i] instanceof Cell.RowSpanCell) {
|
|
1510
|
-
leftChar = "leftMid";
|
|
1511
|
-
}
|
|
1512
|
-
}
|
|
1513
|
-
}
|
|
1514
|
-
}
|
|
1515
|
-
}
|
|
1516
|
-
return this.chars[leftChar];
|
|
1517
|
-
}
|
|
1518
|
-
wrapWithStyleColors(styleProperty, content) {
|
|
1519
|
-
if (this[styleProperty] && this[styleProperty].length) {
|
|
1520
|
-
try {
|
|
1521
|
-
let colors = require_safe();
|
|
1522
|
-
for (let i = this[styleProperty].length - 1;i >= 0; i--) {
|
|
1523
|
-
colors = colors[this[styleProperty][i]];
|
|
1524
|
-
}
|
|
1525
|
-
return colors(content);
|
|
1526
|
-
} catch (e) {
|
|
1527
|
-
return content;
|
|
1528
|
-
}
|
|
1529
|
-
} else {
|
|
1530
|
-
return content;
|
|
1531
|
-
}
|
|
1532
|
-
}
|
|
1533
|
-
drawLine(lineNum, drawRight, forceTruncationSymbol, spanningCell) {
|
|
1534
|
-
let left = this.chars[this.x == 0 ? "left" : "middle"];
|
|
1535
|
-
if (this.x && spanningCell && this.cells) {
|
|
1536
|
-
let cellLeft = this.cells[this.y + spanningCell][this.x - 1];
|
|
1537
|
-
while (cellLeft instanceof ColSpanCell) {
|
|
1538
|
-
cellLeft = this.cells[cellLeft.y][cellLeft.x - 1];
|
|
1539
|
-
}
|
|
1540
|
-
if (!(cellLeft instanceof RowSpanCell)) {
|
|
1541
|
-
left = this.chars["rightMid"];
|
|
1542
|
-
}
|
|
1543
|
-
}
|
|
1544
|
-
let leftPadding = utils.repeat(" ", this.paddingLeft);
|
|
1545
|
-
let right = drawRight ? this.chars["right"] : "";
|
|
1546
|
-
let rightPadding = utils.repeat(" ", this.paddingRight);
|
|
1547
|
-
let line = this.lines[lineNum];
|
|
1548
|
-
let len = this.width - (this.paddingLeft + this.paddingRight);
|
|
1549
|
-
if (forceTruncationSymbol)
|
|
1550
|
-
line += this.truncate || "…";
|
|
1551
|
-
let content = utils.truncate(line, len, this.truncate);
|
|
1552
|
-
content = utils.pad(content, len, " ", this.hAlign);
|
|
1553
|
-
content = leftPadding + content + rightPadding;
|
|
1554
|
-
return this.stylizeLine(left, content, right);
|
|
1555
|
-
}
|
|
1556
|
-
stylizeLine(left, content, right) {
|
|
1557
|
-
left = this.wrapWithStyleColors("border", left);
|
|
1558
|
-
right = this.wrapWithStyleColors("border", right);
|
|
1559
|
-
if (this.y === 0) {
|
|
1560
|
-
content = this.wrapWithStyleColors("head", content);
|
|
1561
|
-
}
|
|
1562
|
-
return left + content + right;
|
|
1563
|
-
}
|
|
1564
|
-
drawBottom(drawRight) {
|
|
1565
|
-
let left = this.chars[this.x == 0 ? "bottomLeft" : "bottomMid"];
|
|
1566
|
-
let content = utils.repeat(this.chars.bottom, this.width);
|
|
1567
|
-
let right = drawRight ? this.chars["bottomRight"] : "";
|
|
1568
|
-
return this.wrapWithStyleColors("border", left + content + right);
|
|
1569
|
-
}
|
|
1570
|
-
drawEmpty(drawRight, spanningCell) {
|
|
1571
|
-
let left = this.chars[this.x == 0 ? "left" : "middle"];
|
|
1572
|
-
if (this.x && spanningCell && this.cells) {
|
|
1573
|
-
let cellLeft = this.cells[this.y + spanningCell][this.x - 1];
|
|
1574
|
-
while (cellLeft instanceof ColSpanCell) {
|
|
1575
|
-
cellLeft = this.cells[cellLeft.y][cellLeft.x - 1];
|
|
1576
|
-
}
|
|
1577
|
-
if (!(cellLeft instanceof RowSpanCell)) {
|
|
1578
|
-
left = this.chars["rightMid"];
|
|
1579
|
-
}
|
|
1580
|
-
}
|
|
1581
|
-
let right = drawRight ? this.chars["right"] : "";
|
|
1582
|
-
let content = utils.repeat(" ", this.width);
|
|
1583
|
-
return this.stylizeLine(left, content, right);
|
|
1584
|
-
}
|
|
1585
|
-
}
|
|
1586
|
-
|
|
1587
|
-
class ColSpanCell {
|
|
1588
|
-
constructor() {}
|
|
1589
|
-
draw(lineNum) {
|
|
1590
|
-
if (typeof lineNum === "number") {
|
|
1591
|
-
debug(`${this.y}-${this.x}: 1x1 ColSpanCell`);
|
|
1592
|
-
}
|
|
1593
|
-
return "";
|
|
1594
|
-
}
|
|
1595
|
-
init() {}
|
|
1596
|
-
mergeTableOptions() {}
|
|
1597
|
-
}
|
|
1598
|
-
|
|
1599
|
-
class RowSpanCell {
|
|
1600
|
-
constructor(originalCell) {
|
|
1601
|
-
this.originalCell = originalCell;
|
|
1602
|
-
}
|
|
1603
|
-
init(tableOptions) {
|
|
1604
|
-
let y = this.y;
|
|
1605
|
-
let originalY = this.originalCell.y;
|
|
1606
|
-
this.cellOffset = y - originalY;
|
|
1607
|
-
this.offset = findDimension(tableOptions.rowHeights, originalY, this.cellOffset);
|
|
1608
|
-
}
|
|
1609
|
-
draw(lineNum) {
|
|
1610
|
-
if (lineNum == "top") {
|
|
1611
|
-
return this.originalCell.draw(this.offset, this.cellOffset);
|
|
1612
|
-
}
|
|
1613
|
-
if (lineNum == "bottom") {
|
|
1614
|
-
return this.originalCell.draw("bottom");
|
|
1615
|
-
}
|
|
1616
|
-
debug(`${this.y}-${this.x}: 1x${this.colSpan} RowSpanCell for ${this.originalCell.content}`);
|
|
1617
|
-
return this.originalCell.draw(this.offset + 1 + lineNum);
|
|
1618
|
-
}
|
|
1619
|
-
mergeTableOptions() {}
|
|
1620
|
-
}
|
|
1621
|
-
function firstDefined(...args) {
|
|
1622
|
-
return args.filter((v) => v !== undefined && v !== null).shift();
|
|
1623
|
-
}
|
|
1624
|
-
function setOption(objA, objB, nameB, targetObj) {
|
|
1625
|
-
let nameA = nameB.split("-");
|
|
1626
|
-
if (nameA.length > 1) {
|
|
1627
|
-
nameA[1] = nameA[1].charAt(0).toUpperCase() + nameA[1].substr(1);
|
|
1628
|
-
nameA = nameA.join("");
|
|
1629
|
-
targetObj[nameA] = firstDefined(objA[nameA], objA[nameB], objB[nameA], objB[nameB]);
|
|
1630
|
-
} else {
|
|
1631
|
-
targetObj[nameB] = firstDefined(objA[nameB], objB[nameB]);
|
|
1632
|
-
}
|
|
1633
|
-
}
|
|
1634
|
-
function findDimension(dimensionTable, startingIndex, span) {
|
|
1635
|
-
let ret = dimensionTable[startingIndex];
|
|
1636
|
-
for (let i = 1;i < span; i++) {
|
|
1637
|
-
ret += 1 + dimensionTable[startingIndex + i];
|
|
1638
|
-
}
|
|
1639
|
-
return ret;
|
|
1640
|
-
}
|
|
1641
|
-
function sumPlusOne(a, b) {
|
|
1642
|
-
return a + b + 1;
|
|
1643
|
-
}
|
|
1644
|
-
var CHAR_NAMES = [
|
|
1645
|
-
"top",
|
|
1646
|
-
"top-mid",
|
|
1647
|
-
"top-left",
|
|
1648
|
-
"top-right",
|
|
1649
|
-
"bottom",
|
|
1650
|
-
"bottom-mid",
|
|
1651
|
-
"bottom-left",
|
|
1652
|
-
"bottom-right",
|
|
1653
|
-
"left",
|
|
1654
|
-
"left-mid",
|
|
1655
|
-
"mid",
|
|
1656
|
-
"mid-mid",
|
|
1657
|
-
"right",
|
|
1658
|
-
"right-mid",
|
|
1659
|
-
"middle"
|
|
1660
|
-
];
|
|
1661
|
-
module.exports = Cell;
|
|
1662
|
-
module.exports.ColSpanCell = ColSpanCell;
|
|
1663
|
-
module.exports.RowSpanCell = RowSpanCell;
|
|
1664
|
-
});
|
|
1665
|
-
|
|
1666
|
-
// node_modules/cli-table3/src/layout-manager.js
|
|
1667
|
-
var require_layout_manager = __commonJS((exports, module) => {
|
|
1668
|
-
var { warn, debug } = require_debug();
|
|
1669
|
-
var Cell = require_cell();
|
|
1670
|
-
var { ColSpanCell, RowSpanCell } = Cell;
|
|
1671
|
-
(function() {
|
|
1672
|
-
function next(alloc, col) {
|
|
1673
|
-
if (alloc[col] > 0) {
|
|
1674
|
-
return next(alloc, col + 1);
|
|
1675
|
-
}
|
|
1676
|
-
return col;
|
|
1677
|
-
}
|
|
1678
|
-
function layoutTable(table) {
|
|
1679
|
-
let alloc = {};
|
|
1680
|
-
table.forEach(function(row, rowIndex) {
|
|
1681
|
-
let col = 0;
|
|
1682
|
-
row.forEach(function(cell) {
|
|
1683
|
-
cell.y = rowIndex;
|
|
1684
|
-
cell.x = rowIndex ? next(alloc, col) : col;
|
|
1685
|
-
const rowSpan = cell.rowSpan || 1;
|
|
1686
|
-
const colSpan = cell.colSpan || 1;
|
|
1687
|
-
if (rowSpan > 1) {
|
|
1688
|
-
for (let cs = 0;cs < colSpan; cs++) {
|
|
1689
|
-
alloc[cell.x + cs] = rowSpan;
|
|
1690
|
-
}
|
|
1691
|
-
}
|
|
1692
|
-
col = cell.x + colSpan;
|
|
1693
|
-
});
|
|
1694
|
-
Object.keys(alloc).forEach((idx) => {
|
|
1695
|
-
alloc[idx]--;
|
|
1696
|
-
if (alloc[idx] < 1)
|
|
1697
|
-
delete alloc[idx];
|
|
1698
|
-
});
|
|
1699
|
-
});
|
|
1700
|
-
}
|
|
1701
|
-
function maxWidth(table) {
|
|
1702
|
-
let mw = 0;
|
|
1703
|
-
table.forEach(function(row) {
|
|
1704
|
-
row.forEach(function(cell) {
|
|
1705
|
-
mw = Math.max(mw, cell.x + (cell.colSpan || 1));
|
|
1706
|
-
});
|
|
1707
|
-
});
|
|
1708
|
-
return mw;
|
|
1709
|
-
}
|
|
1710
|
-
function maxHeight(table) {
|
|
1711
|
-
return table.length;
|
|
1712
|
-
}
|
|
1713
|
-
function cellsConflict(cell1, cell2) {
|
|
1714
|
-
let yMin1 = cell1.y;
|
|
1715
|
-
let yMax1 = cell1.y - 1 + (cell1.rowSpan || 1);
|
|
1716
|
-
let yMin2 = cell2.y;
|
|
1717
|
-
let yMax2 = cell2.y - 1 + (cell2.rowSpan || 1);
|
|
1718
|
-
let yConflict = !(yMin1 > yMax2 || yMin2 > yMax1);
|
|
1719
|
-
let xMin1 = cell1.x;
|
|
1720
|
-
let xMax1 = cell1.x - 1 + (cell1.colSpan || 1);
|
|
1721
|
-
let xMin2 = cell2.x;
|
|
1722
|
-
let xMax2 = cell2.x - 1 + (cell2.colSpan || 1);
|
|
1723
|
-
let xConflict = !(xMin1 > xMax2 || xMin2 > xMax1);
|
|
1724
|
-
return yConflict && xConflict;
|
|
1725
|
-
}
|
|
1726
|
-
function conflictExists(rows, x, y) {
|
|
1727
|
-
let i_max = Math.min(rows.length - 1, y);
|
|
1728
|
-
let cell = { x, y };
|
|
1729
|
-
for (let i = 0;i <= i_max; i++) {
|
|
1730
|
-
let row = rows[i];
|
|
1731
|
-
for (let j = 0;j < row.length; j++) {
|
|
1732
|
-
if (cellsConflict(cell, row[j])) {
|
|
1733
|
-
return true;
|
|
1734
|
-
}
|
|
1735
|
-
}
|
|
1736
|
-
}
|
|
1737
|
-
return false;
|
|
1738
|
-
}
|
|
1739
|
-
function allBlank(rows, y, xMin, xMax) {
|
|
1740
|
-
for (let x = xMin;x < xMax; x++) {
|
|
1741
|
-
if (conflictExists(rows, x, y)) {
|
|
1742
|
-
return false;
|
|
1743
|
-
}
|
|
1744
|
-
}
|
|
1745
|
-
return true;
|
|
1746
|
-
}
|
|
1747
|
-
function addRowSpanCells(table) {
|
|
1748
|
-
table.forEach(function(row, rowIndex) {
|
|
1749
|
-
row.forEach(function(cell) {
|
|
1750
|
-
for (let i = 1;i < cell.rowSpan; i++) {
|
|
1751
|
-
let rowSpanCell = new RowSpanCell(cell);
|
|
1752
|
-
rowSpanCell.x = cell.x;
|
|
1753
|
-
rowSpanCell.y = cell.y + i;
|
|
1754
|
-
rowSpanCell.colSpan = cell.colSpan;
|
|
1755
|
-
insertCell(rowSpanCell, table[rowIndex + i]);
|
|
1756
|
-
}
|
|
1757
|
-
});
|
|
1758
|
-
});
|
|
1759
|
-
}
|
|
1760
|
-
function addColSpanCells(cellRows) {
|
|
1761
|
-
for (let rowIndex = cellRows.length - 1;rowIndex >= 0; rowIndex--) {
|
|
1762
|
-
let cellColumns = cellRows[rowIndex];
|
|
1763
|
-
for (let columnIndex = 0;columnIndex < cellColumns.length; columnIndex++) {
|
|
1764
|
-
let cell = cellColumns[columnIndex];
|
|
1765
|
-
for (let k = 1;k < cell.colSpan; k++) {
|
|
1766
|
-
let colSpanCell = new ColSpanCell;
|
|
1767
|
-
colSpanCell.x = cell.x + k;
|
|
1768
|
-
colSpanCell.y = cell.y;
|
|
1769
|
-
cellColumns.splice(columnIndex + 1, 0, colSpanCell);
|
|
1770
|
-
}
|
|
1771
|
-
}
|
|
1772
|
-
}
|
|
1773
|
-
}
|
|
1774
|
-
function insertCell(cell, row) {
|
|
1775
|
-
let x = 0;
|
|
1776
|
-
while (x < row.length && row[x].x < cell.x) {
|
|
1777
|
-
x++;
|
|
1778
|
-
}
|
|
1779
|
-
row.splice(x, 0, cell);
|
|
1780
|
-
}
|
|
1781
|
-
function fillInTable(table) {
|
|
1782
|
-
let h_max = maxHeight(table);
|
|
1783
|
-
let w_max = maxWidth(table);
|
|
1784
|
-
debug(`Max rows: ${h_max}; Max cols: ${w_max}`);
|
|
1785
|
-
for (let y = 0;y < h_max; y++) {
|
|
1786
|
-
for (let x = 0;x < w_max; x++) {
|
|
1787
|
-
if (!conflictExists(table, x, y)) {
|
|
1788
|
-
let opts = { x, y, colSpan: 1, rowSpan: 1 };
|
|
1789
|
-
x++;
|
|
1790
|
-
while (x < w_max && !conflictExists(table, x, y)) {
|
|
1791
|
-
opts.colSpan++;
|
|
1792
|
-
x++;
|
|
1793
|
-
}
|
|
1794
|
-
let y2 = y + 1;
|
|
1795
|
-
while (y2 < h_max && allBlank(table, y2, opts.x, opts.x + opts.colSpan)) {
|
|
1796
|
-
opts.rowSpan++;
|
|
1797
|
-
y2++;
|
|
1798
|
-
}
|
|
1799
|
-
let cell = new Cell(opts);
|
|
1800
|
-
cell.x = opts.x;
|
|
1801
|
-
cell.y = opts.y;
|
|
1802
|
-
warn(`Missing cell at ${cell.y}-${cell.x}.`);
|
|
1803
|
-
insertCell(cell, table[y]);
|
|
1804
|
-
}
|
|
1805
|
-
}
|
|
1806
|
-
}
|
|
1807
|
-
}
|
|
1808
|
-
function generateCells(rows) {
|
|
1809
|
-
return rows.map(function(row) {
|
|
1810
|
-
if (!Array.isArray(row)) {
|
|
1811
|
-
let key = Object.keys(row)[0];
|
|
1812
|
-
row = row[key];
|
|
1813
|
-
if (Array.isArray(row)) {
|
|
1814
|
-
row = row.slice();
|
|
1815
|
-
row.unshift(key);
|
|
1816
|
-
} else {
|
|
1817
|
-
row = [key, row];
|
|
1818
|
-
}
|
|
1819
|
-
}
|
|
1820
|
-
return row.map(function(cell) {
|
|
1821
|
-
return new Cell(cell);
|
|
1822
|
-
});
|
|
1823
|
-
});
|
|
1824
|
-
}
|
|
1825
|
-
function makeTableLayout(rows) {
|
|
1826
|
-
let cellRows = generateCells(rows);
|
|
1827
|
-
layoutTable(cellRows);
|
|
1828
|
-
fillInTable(cellRows);
|
|
1829
|
-
addRowSpanCells(cellRows);
|
|
1830
|
-
addColSpanCells(cellRows);
|
|
1831
|
-
return cellRows;
|
|
1832
|
-
}
|
|
1833
|
-
module.exports = {
|
|
1834
|
-
makeTableLayout,
|
|
1835
|
-
layoutTable,
|
|
1836
|
-
addRowSpanCells,
|
|
1837
|
-
maxWidth,
|
|
1838
|
-
fillInTable,
|
|
1839
|
-
computeWidths: makeComputeWidths("colSpan", "desiredWidth", "x", 1),
|
|
1840
|
-
computeHeights: makeComputeWidths("rowSpan", "desiredHeight", "y", 1)
|
|
1841
|
-
};
|
|
1842
|
-
})();
|
|
1843
|
-
function makeComputeWidths(colSpan, desiredWidth, x, forcedMin) {
|
|
1844
|
-
return function(vals, table) {
|
|
1845
|
-
let result = [];
|
|
1846
|
-
let spanners = [];
|
|
1847
|
-
let auto = {};
|
|
1848
|
-
table.forEach(function(row) {
|
|
1849
|
-
row.forEach(function(cell) {
|
|
1850
|
-
if ((cell[colSpan] || 1) > 1) {
|
|
1851
|
-
spanners.push(cell);
|
|
1852
|
-
} else {
|
|
1853
|
-
result[cell[x]] = Math.max(result[cell[x]] || 0, cell[desiredWidth] || 0, forcedMin);
|
|
1854
|
-
}
|
|
1855
|
-
});
|
|
1856
|
-
});
|
|
1857
|
-
vals.forEach(function(val, index) {
|
|
1858
|
-
if (typeof val === "number") {
|
|
1859
|
-
result[index] = val;
|
|
1860
|
-
}
|
|
1861
|
-
});
|
|
1862
|
-
for (let k = spanners.length - 1;k >= 0; k--) {
|
|
1863
|
-
let cell = spanners[k];
|
|
1864
|
-
let span = cell[colSpan];
|
|
1865
|
-
let col = cell[x];
|
|
1866
|
-
let existingWidth = result[col];
|
|
1867
|
-
let editableCols = typeof vals[col] === "number" ? 0 : 1;
|
|
1868
|
-
if (typeof existingWidth === "number") {
|
|
1869
|
-
for (let i = 1;i < span; i++) {
|
|
1870
|
-
existingWidth += 1 + result[col + i];
|
|
1871
|
-
if (typeof vals[col + i] !== "number") {
|
|
1872
|
-
editableCols++;
|
|
1873
|
-
}
|
|
1874
|
-
}
|
|
1875
|
-
} else {
|
|
1876
|
-
existingWidth = desiredWidth === "desiredWidth" ? cell.desiredWidth - 1 : 1;
|
|
1877
|
-
if (!auto[col] || auto[col] < existingWidth) {
|
|
1878
|
-
auto[col] = existingWidth;
|
|
1879
|
-
}
|
|
1880
|
-
}
|
|
1881
|
-
if (cell[desiredWidth] > existingWidth) {
|
|
1882
|
-
let i = 0;
|
|
1883
|
-
while (editableCols > 0 && cell[desiredWidth] > existingWidth) {
|
|
1884
|
-
if (typeof vals[col + i] !== "number") {
|
|
1885
|
-
let dif = Math.round((cell[desiredWidth] - existingWidth) / editableCols);
|
|
1886
|
-
existingWidth += dif;
|
|
1887
|
-
result[col + i] += dif;
|
|
1888
|
-
editableCols--;
|
|
1889
|
-
}
|
|
1890
|
-
i++;
|
|
1891
|
-
}
|
|
1892
|
-
}
|
|
1893
|
-
}
|
|
1894
|
-
Object.assign(vals, result, auto);
|
|
1895
|
-
for (let j = 0;j < vals.length; j++) {
|
|
1896
|
-
vals[j] = Math.max(forcedMin, vals[j] || 0);
|
|
1897
|
-
}
|
|
1898
|
-
};
|
|
1899
|
-
}
|
|
1900
|
-
});
|
|
1901
|
-
|
|
1902
|
-
// node_modules/cli-table3/src/table.js
|
|
1903
|
-
var require_table = __commonJS((exports, module) => {
|
|
1904
|
-
var debug = require_debug();
|
|
1905
|
-
var utils = require_utils();
|
|
1906
|
-
var tableLayout = require_layout_manager();
|
|
1907
|
-
|
|
1908
|
-
class Table extends Array {
|
|
1909
|
-
constructor(opts) {
|
|
1910
|
-
super();
|
|
1911
|
-
const options = utils.mergeOptions(opts);
|
|
1912
|
-
Object.defineProperty(this, "options", {
|
|
1913
|
-
value: options,
|
|
1914
|
-
enumerable: options.debug
|
|
1915
|
-
});
|
|
1916
|
-
if (options.debug) {
|
|
1917
|
-
switch (typeof options.debug) {
|
|
1918
|
-
case "boolean":
|
|
1919
|
-
debug.setDebugLevel(debug.WARN);
|
|
1920
|
-
break;
|
|
1921
|
-
case "number":
|
|
1922
|
-
debug.setDebugLevel(options.debug);
|
|
1923
|
-
break;
|
|
1924
|
-
case "string":
|
|
1925
|
-
debug.setDebugLevel(parseInt(options.debug, 10));
|
|
1926
|
-
break;
|
|
1927
|
-
default:
|
|
1928
|
-
debug.setDebugLevel(debug.WARN);
|
|
1929
|
-
debug.warn(`Debug option is expected to be boolean, number, or string. Received a ${typeof options.debug}`);
|
|
1930
|
-
}
|
|
1931
|
-
Object.defineProperty(this, "messages", {
|
|
1932
|
-
get() {
|
|
1933
|
-
return debug.debugMessages();
|
|
1934
|
-
}
|
|
1935
|
-
});
|
|
1936
|
-
}
|
|
1937
|
-
}
|
|
1938
|
-
toString() {
|
|
1939
|
-
let array = this;
|
|
1940
|
-
let headersPresent = this.options.head && this.options.head.length;
|
|
1941
|
-
if (headersPresent) {
|
|
1942
|
-
array = [this.options.head];
|
|
1943
|
-
if (this.length) {
|
|
1944
|
-
array.push.apply(array, this);
|
|
1945
|
-
}
|
|
1946
|
-
} else {
|
|
1947
|
-
this.options.style.head = [];
|
|
1948
|
-
}
|
|
1949
|
-
let cells = tableLayout.makeTableLayout(array);
|
|
1950
|
-
cells.forEach(function(row) {
|
|
1951
|
-
row.forEach(function(cell) {
|
|
1952
|
-
cell.mergeTableOptions(this.options, cells);
|
|
1953
|
-
}, this);
|
|
1954
|
-
}, this);
|
|
1955
|
-
tableLayout.computeWidths(this.options.colWidths, cells);
|
|
1956
|
-
tableLayout.computeHeights(this.options.rowHeights, cells);
|
|
1957
|
-
cells.forEach(function(row) {
|
|
1958
|
-
row.forEach(function(cell) {
|
|
1959
|
-
cell.init(this.options);
|
|
1960
|
-
}, this);
|
|
1961
|
-
}, this);
|
|
1962
|
-
let result = [];
|
|
1963
|
-
for (let rowIndex = 0;rowIndex < cells.length; rowIndex++) {
|
|
1964
|
-
let row = cells[rowIndex];
|
|
1965
|
-
let heightOfRow = this.options.rowHeights[rowIndex];
|
|
1966
|
-
if (rowIndex === 0 || !this.options.style.compact || rowIndex == 1 && headersPresent) {
|
|
1967
|
-
doDraw(row, "top", result);
|
|
1968
|
-
}
|
|
1969
|
-
for (let lineNum = 0;lineNum < heightOfRow; lineNum++) {
|
|
1970
|
-
doDraw(row, lineNum, result);
|
|
1971
|
-
}
|
|
1972
|
-
if (rowIndex + 1 == cells.length) {
|
|
1973
|
-
doDraw(row, "bottom", result);
|
|
1974
|
-
}
|
|
1975
|
-
}
|
|
1976
|
-
return result.join(`
|
|
1977
|
-
`);
|
|
1978
|
-
}
|
|
1979
|
-
get width() {
|
|
1980
|
-
let str = this.toString().split(`
|
|
1981
|
-
`);
|
|
1982
|
-
return str[0].length;
|
|
1983
|
-
}
|
|
1984
|
-
}
|
|
1985
|
-
Table.reset = () => debug.reset();
|
|
1986
|
-
function doDraw(row, lineNum, result) {
|
|
1987
|
-
let line = [];
|
|
1988
|
-
row.forEach(function(cell) {
|
|
1989
|
-
line.push(cell.draw(lineNum));
|
|
1990
|
-
});
|
|
1991
|
-
let str = line.join("");
|
|
1992
|
-
if (str.length)
|
|
1993
|
-
result.push(str);
|
|
1994
|
-
}
|
|
1995
|
-
module.exports = Table;
|
|
1996
|
-
});
|
|
1997
|
-
|
|
1998
328
|
// node_modules/cli-spinners/spinners.json
|
|
1999
329
|
var require_spinners = __commonJS((exports, module) => {
|
|
2000
330
|
module.exports = {
|
|
@@ -3636,7 +1966,7 @@ var require_cli_spinners = __commonJS((exports, module) => {
|
|
|
3636
1966
|
});
|
|
3637
1967
|
|
|
3638
1968
|
// node_modules/ora/node_modules/string-width/node_modules/emoji-regex/index.js
|
|
3639
|
-
var
|
|
1969
|
+
var require_emoji_regex3 = __commonJS((exports, module) => {
|
|
3640
1970
|
module.exports = () => {
|
|
3641
1971
|
return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
|
|
3642
1972
|
};
|
|
@@ -3666,13 +1996,14 @@ async function getConnectionInfo() {
|
|
|
3666
1996
|
]);
|
|
3667
1997
|
const localIP = localIPEn0.trim() || localIPEn1.trim() || "Unknown";
|
|
3668
1998
|
const interfaceName = localIPEn0.trim() ? "Wi-Fi (en0)" : localIPEn1.trim() ? "Ethernet (en1)" : "Unknown";
|
|
1999
|
+
const dnsServers = [...new Set(dns.trim().split(`
|
|
2000
|
+
`).filter(Boolean))];
|
|
3669
2001
|
return {
|
|
3670
2002
|
interface: interfaceName,
|
|
3671
2003
|
localIP,
|
|
3672
2004
|
gateway: gateway.trim() || "Unknown",
|
|
3673
2005
|
externalIP: externalIP.trim(),
|
|
3674
|
-
dns:
|
|
3675
|
-
`).filter(Boolean)
|
|
2006
|
+
dns: dnsServers
|
|
3676
2007
|
};
|
|
3677
2008
|
}
|
|
3678
2009
|
|
|
@@ -5220,6 +3551,192 @@ function checkPort(host, port, timeout = 1000) {
|
|
|
5220
3551
|
});
|
|
5221
3552
|
}
|
|
5222
3553
|
|
|
3554
|
+
// src/scanners/wifi.ts
|
|
3555
|
+
async function getWifiInfo() {
|
|
3556
|
+
let output = await exec("/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I");
|
|
3557
|
+
if (output) {
|
|
3558
|
+
return parseAirportOutput(output);
|
|
3559
|
+
}
|
|
3560
|
+
output = await exec("system_profiler SPAirPortDataType");
|
|
3561
|
+
if (output) {
|
|
3562
|
+
return parseSystemProfilerOutput(output);
|
|
3563
|
+
}
|
|
3564
|
+
return null;
|
|
3565
|
+
}
|
|
3566
|
+
function parseAirportOutput(output) {
|
|
3567
|
+
const getValue = (key) => {
|
|
3568
|
+
const match = output.match(new RegExp(`^\\s*${key}:\\s*(.+)$`, "m"));
|
|
3569
|
+
return match ? match[1].trim() : "";
|
|
3570
|
+
};
|
|
3571
|
+
const ssid = getValue("SSID");
|
|
3572
|
+
if (!ssid) {
|
|
3573
|
+
return null;
|
|
3574
|
+
}
|
|
3575
|
+
const channel = parseInt(getValue("channel"), 10) || 0;
|
|
3576
|
+
const signal = parseInt(getValue("agrCtlRSSI"), 10) || 0;
|
|
3577
|
+
const noise = parseInt(getValue("agrCtlNoise"), 10) || 0;
|
|
3578
|
+
const txRate = parseInt(getValue("lastTxRate"), 10) || 0;
|
|
3579
|
+
return {
|
|
3580
|
+
ssid,
|
|
3581
|
+
bssid: getValue("BSSID"),
|
|
3582
|
+
signal,
|
|
3583
|
+
noise,
|
|
3584
|
+
channel,
|
|
3585
|
+
band: getBandFromChannel(channel),
|
|
3586
|
+
txRate,
|
|
3587
|
+
security: getValue("link auth") || "Unknown"
|
|
3588
|
+
};
|
|
3589
|
+
}
|
|
3590
|
+
function parseSystemProfilerOutput(output) {
|
|
3591
|
+
const currentNetMatch = output.match(/Current Network Information:\s*\n\s*(.+?):\s*\n([\s\S]*?)(?=\n\s+Other Local Wi-Fi Networks:|$)/);
|
|
3592
|
+
if (!currentNetMatch) {
|
|
3593
|
+
return null;
|
|
3594
|
+
}
|
|
3595
|
+
const ssid = currentNetMatch[1].trim();
|
|
3596
|
+
const networkInfo = currentNetMatch[2];
|
|
3597
|
+
const getValue = (key) => {
|
|
3598
|
+
const match = networkInfo.match(new RegExp(`${key}:\\s*(.+)`, "i"));
|
|
3599
|
+
return match ? match[1].trim() : "";
|
|
3600
|
+
};
|
|
3601
|
+
const channelStr = getValue("Channel");
|
|
3602
|
+
const channelMatch = channelStr.match(/(\d+)\s*\((\d+)GHz/);
|
|
3603
|
+
const channel = channelMatch ? parseInt(channelMatch[1], 10) : 0;
|
|
3604
|
+
const bandGhz = channelMatch ? channelMatch[2] : "2.4";
|
|
3605
|
+
const signalNoiseStr = getValue("Signal / Noise");
|
|
3606
|
+
const signalMatch = signalNoiseStr.match(/(-?\d+)\s*dBm\s*\/\s*(-?\d+)\s*dBm/);
|
|
3607
|
+
const signal = signalMatch ? parseInt(signalMatch[1], 10) : 0;
|
|
3608
|
+
const noise = signalMatch ? parseInt(signalMatch[2], 10) : 0;
|
|
3609
|
+
const txRate = parseInt(getValue("Transmit Rate"), 10) || 0;
|
|
3610
|
+
return {
|
|
3611
|
+
ssid,
|
|
3612
|
+
bssid: "",
|
|
3613
|
+
signal,
|
|
3614
|
+
noise,
|
|
3615
|
+
channel,
|
|
3616
|
+
band: bandGhz === "5" ? "5 GHz" : bandGhz === "6" ? "6 GHz" : "2.4 GHz",
|
|
3617
|
+
txRate,
|
|
3618
|
+
security: getValue("Security") || "Unknown"
|
|
3619
|
+
};
|
|
3620
|
+
}
|
|
3621
|
+
function getBandFromChannel(channel) {
|
|
3622
|
+
if (channel >= 36 && channel <= 177) {
|
|
3623
|
+
return "5 GHz";
|
|
3624
|
+
} else if (channel > 177) {
|
|
3625
|
+
return "6 GHz";
|
|
3626
|
+
}
|
|
3627
|
+
return "2.4 GHz";
|
|
3628
|
+
}
|
|
3629
|
+
function getSignalQuality(signal) {
|
|
3630
|
+
if (signal >= -50)
|
|
3631
|
+
return "Excellent";
|
|
3632
|
+
if (signal >= -60)
|
|
3633
|
+
return "Good";
|
|
3634
|
+
if (signal >= -70)
|
|
3635
|
+
return "Fair";
|
|
3636
|
+
return "Weak";
|
|
3637
|
+
}
|
|
3638
|
+
|
|
3639
|
+
// src/scanners/isp.ts
|
|
3640
|
+
async function getIspInfo() {
|
|
3641
|
+
try {
|
|
3642
|
+
const response = await fetch("http://ip-api.com/json");
|
|
3643
|
+
if (!response.ok) {
|
|
3644
|
+
return null;
|
|
3645
|
+
}
|
|
3646
|
+
const data = await response.json();
|
|
3647
|
+
const asField = data.as || "";
|
|
3648
|
+
const asnMatch = asField.match(/^(AS\d+)\s+(.+)$/);
|
|
3649
|
+
const asn = asnMatch ? asnMatch[1] : "Unknown";
|
|
3650
|
+
const ispFromAs = asnMatch ? asnMatch[2] : "";
|
|
3651
|
+
const ispName = ispFromAs || data.org || data.isp || "Unknown";
|
|
3652
|
+
return {
|
|
3653
|
+
isp: ispName,
|
|
3654
|
+
asn,
|
|
3655
|
+
country: data.country || "Unknown",
|
|
3656
|
+
city: data.city || "Unknown",
|
|
3657
|
+
lat: data.lat || 0,
|
|
3658
|
+
lon: data.lon || 0
|
|
3659
|
+
};
|
|
3660
|
+
} catch {
|
|
3661
|
+
return null;
|
|
3662
|
+
}
|
|
3663
|
+
}
|
|
3664
|
+
function formatCoordinates(lat, lon) {
|
|
3665
|
+
const latDir = lat >= 0 ? "N" : "S";
|
|
3666
|
+
const lonDir = lon >= 0 ? "E" : "W";
|
|
3667
|
+
return `${Math.abs(lat).toFixed(4)}° ${latDir}, ${Math.abs(lon).toFixed(4)}° ${lonDir}`;
|
|
3668
|
+
}
|
|
3669
|
+
|
|
3670
|
+
// src/scanners/traceroute.ts
|
|
3671
|
+
async function runTraceroute(target = "1.1.1.1") {
|
|
3672
|
+
const output = await exec(`traceroute -n -q 1 -m 15 ${target}`);
|
|
3673
|
+
if (!output) {
|
|
3674
|
+
return [];
|
|
3675
|
+
}
|
|
3676
|
+
const hops = [];
|
|
3677
|
+
const lines = output.split(`
|
|
3678
|
+
`);
|
|
3679
|
+
for (const line of lines) {
|
|
3680
|
+
const match = line.match(/^\s*(\d+)\s+([\d.]+|\*)\s+([\d.]+)\s*ms/);
|
|
3681
|
+
if (match) {
|
|
3682
|
+
const hop = parseInt(match[1], 10);
|
|
3683
|
+
const ip = match[2];
|
|
3684
|
+
const latency = parseFloat(match[3]);
|
|
3685
|
+
if (ip !== "*") {
|
|
3686
|
+
hops.push({
|
|
3687
|
+
hop,
|
|
3688
|
+
ip,
|
|
3689
|
+
latency
|
|
3690
|
+
});
|
|
3691
|
+
}
|
|
3692
|
+
}
|
|
3693
|
+
}
|
|
3694
|
+
return hops;
|
|
3695
|
+
}
|
|
3696
|
+
function getMaxLatency(hops) {
|
|
3697
|
+
if (hops.length === 0)
|
|
3698
|
+
return 0;
|
|
3699
|
+
return Math.max(...hops.map((h) => h.latency));
|
|
3700
|
+
}
|
|
3701
|
+
|
|
3702
|
+
// src/scanners/health.ts
|
|
3703
|
+
var ENDPOINTS = [
|
|
3704
|
+
{ name: "Google", url: "https://www.google.com" },
|
|
3705
|
+
{ name: "Cloudflare", url: "https://1.1.1.1" },
|
|
3706
|
+
{ name: "GitHub", url: "https://github.com" },
|
|
3707
|
+
{ name: "AWS", url: "https://aws.amazon.com" }
|
|
3708
|
+
];
|
|
3709
|
+
async function checkEndpoint(name, url) {
|
|
3710
|
+
const start = Date.now();
|
|
3711
|
+
try {
|
|
3712
|
+
const controller = new AbortController;
|
|
3713
|
+
const timeoutId = setTimeout(() => controller.abort(), 5000);
|
|
3714
|
+
const response = await fetch(url, {
|
|
3715
|
+
method: "HEAD",
|
|
3716
|
+
signal: controller.signal
|
|
3717
|
+
});
|
|
3718
|
+
clearTimeout(timeoutId);
|
|
3719
|
+
const latency = Date.now() - start;
|
|
3720
|
+
return {
|
|
3721
|
+
name,
|
|
3722
|
+
url,
|
|
3723
|
+
status: response.ok ? "up" : "down",
|
|
3724
|
+
latency
|
|
3725
|
+
};
|
|
3726
|
+
} catch {
|
|
3727
|
+
return {
|
|
3728
|
+
name,
|
|
3729
|
+
url,
|
|
3730
|
+
status: "down",
|
|
3731
|
+
latency: Date.now() - start
|
|
3732
|
+
};
|
|
3733
|
+
}
|
|
3734
|
+
}
|
|
3735
|
+
async function checkInternetHealth() {
|
|
3736
|
+
const results = await Promise.all(ENDPOINTS.map(({ name, url }) => checkEndpoint(name, url)));
|
|
3737
|
+
return results;
|
|
3738
|
+
}
|
|
3739
|
+
|
|
5223
3740
|
// node_modules/chalk/source/vendor/ansi-styles/index.js
|
|
5224
3741
|
var ANSI_BACKGROUND_OFFSET = 10;
|
|
5225
3742
|
var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
|
|
@@ -6500,9 +5017,6 @@ function boxen(text, options) {
|
|
|
6500
5017
|
return boxContent(text, options.width, options);
|
|
6501
5018
|
}
|
|
6502
5019
|
|
|
6503
|
-
// src/ui/output.ts
|
|
6504
|
-
var import_cli_table3 = __toESM(require_table(), 1);
|
|
6505
|
-
|
|
6506
5020
|
// src/utils/format.ts
|
|
6507
5021
|
function formatSpeed(mbps) {
|
|
6508
5022
|
if (mbps >= 1000) {
|
|
@@ -6516,11 +5030,14 @@ function formatLatency(ms) {
|
|
|
6516
5030
|
function padRight(str, len) {
|
|
6517
5031
|
return str.length >= len ? str.slice(0, len) : str + " ".repeat(len - str.length);
|
|
6518
5032
|
}
|
|
5033
|
+
function padLeft(str, len) {
|
|
5034
|
+
return str.length >= len ? str.slice(0, len) : " ".repeat(len - str.length) + str;
|
|
5035
|
+
}
|
|
6519
5036
|
|
|
6520
5037
|
// src/ui/output.ts
|
|
6521
5038
|
var BOX_WIDTH = 62;
|
|
6522
5039
|
function header() {
|
|
6523
|
-
console.log(boxen(source_default.bold.cyan("
|
|
5040
|
+
console.log(boxen(source_default.bold.cyan(" NETSWEEP - Network Diagnostics "), {
|
|
6524
5041
|
padding: 0,
|
|
6525
5042
|
margin: { top: 1, bottom: 0, left: 0, right: 0 },
|
|
6526
5043
|
borderStyle: "round",
|
|
@@ -6541,12 +5058,13 @@ function section(title, content) {
|
|
|
6541
5058
|
console.log();
|
|
6542
5059
|
}
|
|
6543
5060
|
function connectionSection(info) {
|
|
5061
|
+
const dnsDisplay = info.dns.length > 2 ? `${info.dns.slice(0, 2).join(", ")} +${info.dns.length - 2} more` : info.dns.join(", ");
|
|
6544
5062
|
section("CONNECTION", [
|
|
6545
5063
|
`${source_default.gray("Interface:")} ${source_default.white(info.interface)}`,
|
|
6546
5064
|
`${source_default.gray("Local IP:")} ${source_default.white(info.localIP)}`,
|
|
6547
5065
|
`${source_default.gray("Gateway:")} ${source_default.white(info.gateway)}`,
|
|
6548
5066
|
`${source_default.gray("External IP:")} ${source_default.white(info.externalIP)}`,
|
|
6549
|
-
`${source_default.gray("DNS:")} ${source_default.white(
|
|
5067
|
+
`${source_default.gray("DNS:")} ${source_default.white(dnsDisplay)}`
|
|
6550
5068
|
]);
|
|
6551
5069
|
}
|
|
6552
5070
|
function speedSection(speed) {
|
|
@@ -6557,43 +5075,21 @@ function speedSection(speed) {
|
|
|
6557
5075
|
]);
|
|
6558
5076
|
}
|
|
6559
5077
|
function devicesSection(devices) {
|
|
6560
|
-
const
|
|
6561
|
-
|
|
6562
|
-
|
|
6563
|
-
|
|
6564
|
-
|
|
6565
|
-
|
|
6566
|
-
chars: {
|
|
6567
|
-
top: "─",
|
|
6568
|
-
"top-mid": "┬",
|
|
6569
|
-
"top-left": "┌",
|
|
6570
|
-
"top-right": "┐",
|
|
6571
|
-
bottom: "─",
|
|
6572
|
-
"bottom-mid": "┴",
|
|
6573
|
-
"bottom-left": "└",
|
|
6574
|
-
"bottom-right": "┘",
|
|
6575
|
-
left: "│",
|
|
6576
|
-
"left-mid": "├",
|
|
6577
|
-
mid: "─",
|
|
6578
|
-
"mid-mid": "┼",
|
|
6579
|
-
right: "│",
|
|
6580
|
-
"right-mid": "┤",
|
|
6581
|
-
middle: "│"
|
|
6582
|
-
},
|
|
6583
|
-
colWidths: [17, 20, 14, 14]
|
|
6584
|
-
});
|
|
5078
|
+
const lines = [];
|
|
5079
|
+
const headerIP = padRight(source_default.cyan("IP"), 16);
|
|
5080
|
+
const headerMAC = padRight(source_default.cyan("MAC"), 19);
|
|
5081
|
+
const headerVendor = padRight(source_default.cyan("Vendor"), 12);
|
|
5082
|
+
const headerName = source_default.cyan("Name");
|
|
5083
|
+
lines.push(`${headerIP} ${headerMAC} ${headerVendor} ${headerName}`);
|
|
6585
5084
|
devices.forEach((d) => {
|
|
6586
|
-
const
|
|
6587
|
-
|
|
6588
|
-
|
|
6589
|
-
|
|
6590
|
-
|
|
6591
|
-
|
|
6592
|
-
]);
|
|
5085
|
+
const ip = padRight(d.ip, 16);
|
|
5086
|
+
const mac = padRight(d.mac, 19);
|
|
5087
|
+
const vendor = d.isCurrentDevice && d.vendor === "Unknown" ? "Apple" : d.vendor;
|
|
5088
|
+
const vendorStr = padRight(truncate(vendor, 12), 12);
|
|
5089
|
+
const name = d.isCurrentDevice ? source_default.green("This Mac") : d.hostname ? truncate(d.hostname, 10) : source_default.gray("-");
|
|
5090
|
+
lines.push(`${source_default.white(ip)} ${source_default.gray(mac)} ${source_default.white(vendorStr)} ${name}`);
|
|
6593
5091
|
});
|
|
6594
|
-
|
|
6595
|
-
console.log(table.toString());
|
|
6596
|
-
console.log();
|
|
5092
|
+
section(`DEVICES (${devices.length} found)`, lines);
|
|
6597
5093
|
}
|
|
6598
5094
|
function portsSection(ports, host) {
|
|
6599
5095
|
if (ports.length === 0) {
|
|
@@ -6617,6 +5113,62 @@ function truncate(str, len) {
|
|
|
6617
5113
|
function stripAnsi2(str) {
|
|
6618
5114
|
return str.replace(/\x1B\[[0-9;]*m/g, "");
|
|
6619
5115
|
}
|
|
5116
|
+
function wifiSection(info) {
|
|
5117
|
+
const quality = getSignalQuality(info.signal);
|
|
5118
|
+
const qualityColor = quality === "Excellent" ? source_default.green : quality === "Good" ? source_default.yellow : source_default.red;
|
|
5119
|
+
section("WIFI", [
|
|
5120
|
+
`${source_default.gray("SSID:")} ${source_default.white(info.ssid)}`,
|
|
5121
|
+
`${source_default.gray("Signal:")} ${source_default.white(`${info.signal} dBm`)} (${qualityColor(quality)})`,
|
|
5122
|
+
`${source_default.gray("Noise:")} ${source_default.white(`${info.noise} dBm`)}`,
|
|
5123
|
+
`${source_default.gray("Channel:")} ${source_default.white(`${info.channel}`)} (${source_default.white(info.band)})`,
|
|
5124
|
+
`${source_default.gray("Tx Rate:")} ${source_default.white(`${info.txRate} Mbps`)}`
|
|
5125
|
+
]);
|
|
5126
|
+
}
|
|
5127
|
+
function ispSection(info) {
|
|
5128
|
+
section("ISP & LOCATION", [
|
|
5129
|
+
`${source_default.gray("ISP:")} ${source_default.white(info.isp)}`,
|
|
5130
|
+
`${source_default.gray("ASN:")} ${source_default.white(info.asn)}`,
|
|
5131
|
+
`${source_default.gray("Location:")} ${source_default.white(`${info.city}, ${info.country}`)}`,
|
|
5132
|
+
`${source_default.gray("Coordinates:")} ${source_default.white(formatCoordinates(info.lat, info.lon))}`
|
|
5133
|
+
]);
|
|
5134
|
+
}
|
|
5135
|
+
function tracerouteSection(hops, target) {
|
|
5136
|
+
if (hops.length === 0) {
|
|
5137
|
+
section(`TRACEROUTE (to ${target})`, [
|
|
5138
|
+
source_default.gray("No hops recorded")
|
|
5139
|
+
]);
|
|
5140
|
+
return;
|
|
5141
|
+
}
|
|
5142
|
+
const maxLatency = getMaxLatency(hops);
|
|
5143
|
+
const maxBarWidth = 30;
|
|
5144
|
+
const lines = hops.map((hop) => {
|
|
5145
|
+
const hopNum = padLeft(String(hop.hop), 3);
|
|
5146
|
+
const ip = padRight(hop.ip, 16);
|
|
5147
|
+
const latency = padLeft(`${hop.latency.toFixed(1)}ms`, 8);
|
|
5148
|
+
const barWidth = Math.ceil(hop.latency / maxLatency * maxBarWidth);
|
|
5149
|
+
const bar = source_default.cyan("█".repeat(Math.max(1, barWidth)));
|
|
5150
|
+
return `${source_default.white(hopNum)} ${source_default.white(ip)}${source_default.white(latency)} ${bar}`;
|
|
5151
|
+
});
|
|
5152
|
+
section(`TRACEROUTE (to ${target})`, lines);
|
|
5153
|
+
}
|
|
5154
|
+
function healthSection(checks) {
|
|
5155
|
+
const lines = checks.map((check) => {
|
|
5156
|
+
const name = padRight(check.name, 14);
|
|
5157
|
+
const status = check.status === "up" ? source_default.green("✓") : source_default.red("✗");
|
|
5158
|
+
let latencyStr;
|
|
5159
|
+
if (check.status !== "up") {
|
|
5160
|
+
latencyStr = source_default.red("timeout");
|
|
5161
|
+
} else if (check.latency < 100) {
|
|
5162
|
+
latencyStr = source_default.green(`${check.latency}ms`);
|
|
5163
|
+
} else if (check.latency < 300) {
|
|
5164
|
+
latencyStr = source_default.yellow(`${check.latency}ms`);
|
|
5165
|
+
} else {
|
|
5166
|
+
latencyStr = source_default.red(`${check.latency}ms`);
|
|
5167
|
+
}
|
|
5168
|
+
return `${source_default.white(name)}${status} ${latencyStr}`;
|
|
5169
|
+
});
|
|
5170
|
+
section("INTERNET HEALTH", lines);
|
|
5171
|
+
}
|
|
6620
5172
|
function outputJson(results) {
|
|
6621
5173
|
console.log(JSON.stringify(results, null, 2));
|
|
6622
5174
|
}
|
|
@@ -7008,7 +5560,7 @@ function eastAsianWidth2(codePoint, { ambiguousAsWide = false } = {}) {
|
|
|
7008
5560
|
}
|
|
7009
5561
|
|
|
7010
5562
|
// node_modules/ora/node_modules/string-width/index.js
|
|
7011
|
-
var import_emoji_regex2 = __toESM(
|
|
5563
|
+
var import_emoji_regex2 = __toESM(require_emoji_regex3(), 1);
|
|
7012
5564
|
var segmenter = new Intl.Segmenter;
|
|
7013
5565
|
var defaultIgnorableCodePointRegex = /^\p{Default_Ignorable_Code_Point}$/u;
|
|
7014
5566
|
function stringWidth2(string, options = {}) {
|
|
@@ -7483,6 +6035,44 @@ async function scan(options) {
|
|
|
7483
6035
|
results.ports = await scanPorts(results.gateway);
|
|
7484
6036
|
} catch {}
|
|
7485
6037
|
}
|
|
6038
|
+
if (options.wifi) {
|
|
6039
|
+
if (!options.json) {
|
|
6040
|
+
updateSpinner("Getting WiFi info...");
|
|
6041
|
+
}
|
|
6042
|
+
try {
|
|
6043
|
+
const wifi = await getWifiInfo();
|
|
6044
|
+
if (wifi) {
|
|
6045
|
+
results.wifi = wifi;
|
|
6046
|
+
}
|
|
6047
|
+
} catch {}
|
|
6048
|
+
}
|
|
6049
|
+
if (options.isp) {
|
|
6050
|
+
if (!options.json) {
|
|
6051
|
+
updateSpinner("Getting ISP info...");
|
|
6052
|
+
}
|
|
6053
|
+
try {
|
|
6054
|
+
const isp = await getIspInfo();
|
|
6055
|
+
if (isp) {
|
|
6056
|
+
results.isp = isp;
|
|
6057
|
+
}
|
|
6058
|
+
} catch {}
|
|
6059
|
+
}
|
|
6060
|
+
if (options.trace) {
|
|
6061
|
+
if (!options.json) {
|
|
6062
|
+
updateSpinner("Running traceroute...");
|
|
6063
|
+
}
|
|
6064
|
+
try {
|
|
6065
|
+
results.traceroute = await runTraceroute();
|
|
6066
|
+
} catch {}
|
|
6067
|
+
}
|
|
6068
|
+
if (options.health) {
|
|
6069
|
+
if (!options.json) {
|
|
6070
|
+
updateSpinner("Checking internet health...");
|
|
6071
|
+
}
|
|
6072
|
+
try {
|
|
6073
|
+
results.health = await checkInternetHealth();
|
|
6074
|
+
} catch {}
|
|
6075
|
+
}
|
|
7486
6076
|
stopSpinner();
|
|
7487
6077
|
if (options.json) {
|
|
7488
6078
|
outputJson(results);
|
|
@@ -7500,33 +6090,53 @@ async function scan(options) {
|
|
|
7500
6090
|
if (results.ports !== undefined && results.gateway) {
|
|
7501
6091
|
portsSection(results.ports, results.gateway);
|
|
7502
6092
|
}
|
|
6093
|
+
if (results.wifi) {
|
|
6094
|
+
wifiSection(results.wifi);
|
|
6095
|
+
}
|
|
6096
|
+
if (results.isp) {
|
|
6097
|
+
ispSection(results.isp);
|
|
6098
|
+
}
|
|
6099
|
+
if (results.traceroute) {
|
|
6100
|
+
tracerouteSection(results.traceroute, "1.1.1.1");
|
|
6101
|
+
}
|
|
6102
|
+
if (results.health) {
|
|
6103
|
+
healthSection(results.health);
|
|
6104
|
+
}
|
|
7503
6105
|
}
|
|
7504
6106
|
}
|
|
7505
6107
|
|
|
7506
6108
|
// src/index.ts
|
|
7507
6109
|
var args = process.argv.slice(2);
|
|
7508
|
-
if (args.includes("--help")
|
|
6110
|
+
if (args.includes("--help")) {
|
|
7509
6111
|
console.log(`
|
|
7510
|
-
${"\x1B[36m"}
|
|
6112
|
+
${"\x1B[36m"}netsweep${"\x1B[0m"} - Network Swiss Army Knife
|
|
7511
6113
|
|
|
7512
|
-
${"\x1B[1m"}Usage:${"\x1B[0m"}
|
|
6114
|
+
${"\x1B[1m"}Usage:${"\x1B[0m"} netsweep [options]
|
|
7513
6115
|
|
|
7514
6116
|
${"\x1B[1m"}Options:${"\x1B[0m"}
|
|
7515
6117
|
--all, -a Run all scans (default)
|
|
7516
6118
|
--devices, -d Only scan for devices
|
|
7517
6119
|
--speed, -s Only run speed test
|
|
7518
6120
|
--ports, -p Only scan gateway ports
|
|
6121
|
+
--wifi, -w Show WiFi info
|
|
6122
|
+
--isp, -i Show ISP & geolocation
|
|
6123
|
+
--trace, -r Run traceroute to 1.1.1.1
|
|
6124
|
+
--health Check internet health
|
|
7519
6125
|
--target, -t <ip> Scan specific IP for ports
|
|
7520
6126
|
--json Output as JSON
|
|
7521
|
-
--help
|
|
6127
|
+
--help Show help
|
|
7522
6128
|
|
|
7523
6129
|
${"\x1B[1m"}Examples:${"\x1B[0m"}
|
|
7524
|
-
|
|
7525
|
-
|
|
7526
|
-
|
|
7527
|
-
|
|
7528
|
-
|
|
7529
|
-
|
|
6130
|
+
netsweep Full network scan
|
|
6131
|
+
netsweep -d List network devices only
|
|
6132
|
+
netsweep -s Speed test only
|
|
6133
|
+
netsweep -p Scan gateway ports
|
|
6134
|
+
netsweep -w Show WiFi signal info
|
|
6135
|
+
netsweep --isp Show ISP and location
|
|
6136
|
+
netsweep --trace Run traceroute
|
|
6137
|
+
netsweep --health Check major services
|
|
6138
|
+
netsweep -p -t 192.168.0.7 Scan ports on specific host
|
|
6139
|
+
netsweep --json Output results as JSON
|
|
7530
6140
|
`);
|
|
7531
6141
|
process.exit(0);
|
|
7532
6142
|
}
|
|
@@ -7535,12 +6145,16 @@ var targetIndex = args.findIndex((a) => a === "-t" || a === "--target");
|
|
|
7535
6145
|
if (targetIndex !== -1 && args[targetIndex + 1]) {
|
|
7536
6146
|
target = args[targetIndex + 1];
|
|
7537
6147
|
}
|
|
7538
|
-
var hasSpecificFlags = args.includes("-d") || args.includes("--devices") || args.includes("-s") || args.includes("--speed") || args.includes("-p") || args.includes("--ports");
|
|
6148
|
+
var hasSpecificFlags = args.includes("-d") || args.includes("--devices") || args.includes("-s") || args.includes("--speed") || args.includes("-p") || args.includes("--ports") || args.includes("-w") || args.includes("--wifi") || args.includes("-i") || args.includes("--isp") || args.includes("-r") || args.includes("--trace") || args.includes("--health");
|
|
7539
6149
|
var runAll = args.includes("-a") || args.includes("--all") || !hasSpecificFlags;
|
|
7540
6150
|
await scan({
|
|
7541
6151
|
devices: runAll || args.includes("-d") || args.includes("--devices"),
|
|
7542
6152
|
speed: runAll || args.includes("-s") || args.includes("--speed"),
|
|
7543
6153
|
ports: runAll || args.includes("-p") || args.includes("--ports"),
|
|
6154
|
+
wifi: runAll || args.includes("-w") || args.includes("--wifi"),
|
|
6155
|
+
isp: runAll || args.includes("-i") || args.includes("--isp"),
|
|
6156
|
+
trace: runAll || args.includes("-r") || args.includes("--trace"),
|
|
6157
|
+
health: runAll || args.includes("--health"),
|
|
7544
6158
|
json: args.includes("--json"),
|
|
7545
6159
|
target
|
|
7546
6160
|
});
|