@socketsecurity/lib 3.0.2 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -1
- package/dist/abort.js +60 -1
- package/dist/abort.js.map +2 -2
- package/dist/agent.js +289 -1
- package/dist/agent.js.map +2 -2
- package/dist/ansi.js +60 -1
- package/dist/ansi.js.map +2 -2
- package/dist/argv/flags.js +282 -1
- package/dist/argv/flags.js.map +2 -2
- package/dist/argv/parse.js +171 -1
- package/dist/argv/parse.js.map +2 -2
- package/dist/arrays.js +85 -1
- package/dist/arrays.js.map +2 -2
- package/dist/bin.js +419 -5
- package/dist/bin.js.map +2 -2
- package/dist/cacache.js +139 -1
- package/dist/cacache.js.map +2 -2
- package/dist/cache-with-ttl.js +223 -1
- package/dist/cache-with-ttl.js.map +2 -2
- package/dist/constants/agents.js +126 -1
- package/dist/constants/agents.js.map +2 -2
- package/dist/constants/core.js +57 -2
- package/dist/constants/core.js.map +2 -2
- package/dist/constants/encoding.js +48 -1
- package/dist/constants/encoding.js.map +2 -2
- package/dist/constants/github.js +30 -1
- package/dist/constants/github.js.map +2 -2
- package/dist/constants/licenses.js +66 -1
- package/dist/constants/licenses.js.map +2 -2
- package/dist/constants/node.js +185 -1
- package/dist/constants/node.js.map +2 -2
- package/dist/constants/packages.js +128 -1
- package/dist/constants/packages.js.map +2 -2
- package/dist/constants/paths.js +150 -1
- package/dist/constants/paths.js.map +2 -2
- package/dist/constants/platform.js +41 -1
- package/dist/constants/platform.js.map +2 -2
- package/dist/constants/process.js +52 -1
- package/dist/constants/process.js.map +2 -2
- package/dist/constants/socket.js +102 -1
- package/dist/constants/socket.js.map +2 -2
- package/dist/constants/testing.js +36 -1
- package/dist/constants/testing.js.map +2 -2
- package/dist/constants/time.js +39 -1
- package/dist/constants/time.js.map +2 -2
- package/dist/constants/typescript.js +54 -1
- package/dist/constants/typescript.js.map +2 -2
- package/dist/cover/code.js +135 -1
- package/dist/cover/code.js.map +2 -2
- package/dist/cover/formatters.js +101 -11
- package/dist/cover/formatters.js.map +2 -2
- package/dist/cover/type.js +63 -1
- package/dist/cover/type.js.map +2 -2
- package/dist/cover/types.js +15 -1
- package/dist/cover/types.js.map +2 -2
- package/dist/debug.js +337 -2
- package/dist/debug.js.map +2 -2
- package/dist/dlx-binary.js +408 -7
- package/dist/dlx-binary.js.map +2 -2
- package/dist/dlx-package.js +278 -7
- package/dist/dlx-package.js.map +2 -2
- package/dist/dlx.js +214 -7
- package/dist/dlx.js.map +3 -3
- package/dist/effects/pulse-frames.js +64 -1
- package/dist/effects/pulse-frames.js.map +2 -2
- package/dist/effects/text-shimmer.js +174 -1
- package/dist/effects/text-shimmer.js.map +2 -2
- package/dist/effects/types.js +15 -1
- package/dist/effects/types.js.map +2 -2
- package/dist/effects/ultra.js +61 -1
- package/dist/effects/ultra.js.map +2 -2
- package/dist/env/ci.js +31 -1
- package/dist/env/ci.js.map +2 -2
- package/dist/env/debug.js +30 -1
- package/dist/env/debug.js.map +2 -2
- package/dist/env/github.js +65 -1
- package/dist/env/github.js.map +2 -2
- package/dist/env/helpers.js +47 -1
- package/dist/env/helpers.js.map +2 -2
- package/dist/env/home.js +30 -1
- package/dist/env/home.js.map +2 -2
- package/dist/env/locale.js +40 -1
- package/dist/env/locale.js.map +2 -2
- package/dist/env/node-auth-token.js +30 -1
- package/dist/env/node-auth-token.js.map +2 -2
- package/dist/env/node-env.js +30 -1
- package/dist/env/node-env.js.map +2 -2
- package/dist/env/npm.js +50 -1
- package/dist/env/npm.js.map +2 -2
- package/dist/env/package-manager.js +73 -1
- package/dist/env/package-manager.js.map +2 -2
- package/dist/env/path.js +30 -1
- package/dist/env/path.js.map +2 -2
- package/dist/env/pre-commit.js +31 -1
- package/dist/env/pre-commit.js.map +2 -2
- package/dist/env/rewire.js +72 -1
- package/dist/env/rewire.js.map +2 -2
- package/dist/env/shell.js +30 -1
- package/dist/env/shell.js.map +2 -2
- package/dist/env/socket-cli-shadow.js +51 -1
- package/dist/env/socket-cli-shadow.js.map +2 -2
- package/dist/env/socket-cli.js +86 -1
- package/dist/env/socket-cli.js.map +2 -2
- package/dist/env/socket.js +101 -1
- package/dist/env/socket.js.map +2 -2
- package/dist/env/temp-dir.js +40 -1
- package/dist/env/temp-dir.js.map +2 -2
- package/dist/env/term.js +30 -1
- package/dist/env/term.js.map +2 -2
- package/dist/env/test.js +43 -1
- package/dist/env/test.js.map +2 -2
- package/dist/env/windows.js +45 -1
- package/dist/env/windows.js.map +2 -2
- package/dist/env/xdg.js +40 -1
- package/dist/env/xdg.js.map +2 -2
- package/dist/env.js +170 -1
- package/dist/env.js.map +2 -2
- package/dist/external/@socketregistry/packageurl-js.js +12 -2
- package/dist/fs.js +670 -7
- package/dist/fs.js.map +2 -2
- package/dist/functions.js +68 -1
- package/dist/functions.js.map +2 -2
- package/dist/git.js +329 -2
- package/dist/git.js.map +2 -2
- package/dist/github.js +202 -1
- package/dist/github.js.map +2 -2
- package/dist/globs.js +149 -1
- package/dist/globs.js.map +2 -2
- package/dist/http-request.js +335 -3
- package/dist/http-request.js.map +2 -2
- package/dist/index.js +69 -1
- package/dist/index.js.map +2 -2
- package/dist/ipc.js +244 -1
- package/dist/ipc.js.map +2 -2
- package/dist/json.js +73 -1
- package/dist/json.js.map +2 -2
- package/dist/links/index.js +60 -1
- package/dist/links/index.js.map +2 -2
- package/dist/logger.js +1383 -6
- package/dist/logger.js.map +2 -2
- package/dist/maintained-node-versions.js +35 -1
- package/dist/maintained-node-versions.js.map +2 -2
- package/dist/memoization.js +210 -1
- package/dist/memoization.js.map +2 -2
- package/dist/objects.js +311 -1
- package/dist/objects.js.map +3 -3
- package/dist/packages/editable.js +356 -9
- package/dist/packages/editable.js.map +2 -2
- package/dist/packages/exports.js +162 -1
- package/dist/packages/exports.js.map +2 -2
- package/dist/packages/isolation.js +187 -1
- package/dist/packages/isolation.js.map +2 -2
- package/dist/packages/licenses.js +214 -1
- package/dist/packages/licenses.js.map +2 -2
- package/dist/packages/manifest.js +190 -1
- package/dist/packages/manifest.js.map +2 -2
- package/dist/packages/normalize.js +132 -1
- package/dist/packages/normalize.js.map +2 -2
- package/dist/packages/operations.js +320 -1
- package/dist/packages/operations.js.map +2 -2
- package/dist/packages/paths.js +53 -1
- package/dist/packages/paths.js.map +2 -2
- package/dist/packages/provenance.js +178 -1
- package/dist/packages/provenance.js.map +2 -2
- package/dist/packages/specs.js +83 -1
- package/dist/packages/specs.js.map +2 -2
- package/dist/packages/validation.js +51 -1
- package/dist/packages/validation.js.map +2 -2
- package/dist/packages.js +129 -1
- package/dist/packages.js.map +2 -2
- package/dist/path.js +446 -1
- package/dist/path.js.map +2 -2
- package/dist/paths/rewire.js +79 -1
- package/dist/paths/rewire.js.map +2 -2
- package/dist/paths.js +190 -1
- package/dist/paths.js.map +2 -2
- package/dist/performance.js +216 -15
- package/dist/performance.js.map +2 -2
- package/dist/process-lock.js +287 -8
- package/dist/process-lock.js.map +2 -2
- package/dist/promise-queue.js +109 -1
- package/dist/promise-queue.js.map +2 -2
- package/dist/promises.js +267 -1
- package/dist/promises.js.map +2 -2
- package/dist/prompts/index.js +45 -1
- package/dist/prompts/index.js.map +2 -2
- package/dist/prompts.js +58 -1
- package/dist/prompts.js.map +2 -2
- package/dist/regexps.js +30 -1
- package/dist/regexps.js.map +2 -2
- package/dist/sea.js +44 -1
- package/dist/sea.js.map +2 -2
- package/dist/shadow.js +58 -1
- package/dist/shadow.js.map +2 -2
- package/dist/signal-exit.js +248 -1
- package/dist/signal-exit.js.map +2 -2
- package/dist/sorts.js +94 -1
- package/dist/sorts.js.map +2 -2
- package/dist/spawn.js +200 -1
- package/dist/spawn.js.map +2 -2
- package/dist/spinner.js +965 -1
- package/dist/spinner.js.map +3 -3
- package/dist/ssri.js +71 -1
- package/dist/ssri.js.map +2 -2
- package/dist/stdio/clear.js +82 -1
- package/dist/stdio/clear.js.map +2 -2
- package/dist/stdio/divider.js +89 -3
- package/dist/stdio/divider.js.map +2 -2
- package/dist/stdio/footer.js +94 -2
- package/dist/stdio/footer.js.map +2 -2
- package/dist/stdio/header.js +100 -2
- package/dist/stdio/header.js.map +2 -2
- package/dist/stdio/mask.js +207 -5
- package/dist/stdio/mask.js.map +2 -2
- package/dist/stdio/progress.js +209 -2
- package/dist/stdio/progress.js.map +2 -2
- package/dist/stdio/prompts.js +88 -1
- package/dist/stdio/prompts.js.map +2 -2
- package/dist/stdio/stderr.js +89 -2
- package/dist/stdio/stderr.js.map +2 -2
- package/dist/stdio/stdout.js +103 -2
- package/dist/stdio/stdout.js.map +2 -2
- package/dist/streams.js +78 -1
- package/dist/streams.js.map +2 -2
- package/dist/strings.js +251 -3
- package/dist/strings.js.map +2 -2
- package/dist/suppress-warnings.js +98 -1
- package/dist/suppress-warnings.js.map +2 -2
- package/dist/tables.js +128 -3
- package/dist/tables.js.map +2 -2
- package/dist/temporary-executor.js +53 -1
- package/dist/temporary-executor.js.map +2 -2
- package/dist/themes/context.js +71 -1
- package/dist/themes/context.js.map +3 -3
- package/dist/themes/index.d.ts +2 -2
- package/dist/themes/index.js +57 -1
- package/dist/themes/index.js.map +3 -3
- package/dist/themes/themes.d.ts +5 -5
- package/dist/themes/themes.js +204 -1
- package/dist/themes/themes.js.map +3 -3
- package/dist/themes/types.js +15 -1
- package/dist/themes/types.js.map +2 -2
- package/dist/themes/utils.js +116 -1
- package/dist/themes/utils.js.map +2 -2
- package/dist/types.js +59 -1
- package/dist/types.js.map +2 -2
- package/dist/url.js +142 -1
- package/dist/url.js.map +2 -2
- package/dist/utils/get-ipc.js +58 -1
- package/dist/utils/get-ipc.js.map +2 -2
- package/dist/validation/json-parser.js +127 -1
- package/dist/validation/json-parser.js.map +2 -2
- package/dist/validation/types.js +15 -1
- package/dist/validation/types.js.map +2 -2
- package/dist/versions.js +154 -1
- package/dist/versions.js.map +2 -2
- package/dist/words.js +50 -1
- package/dist/words.js.map +2 -2
- package/dist/zod.js +27 -1
- package/dist/zod.js.map +2 -2
- package/package.json +2 -2
package/dist/stdio/divider.js
CHANGED
|
@@ -1,5 +1,91 @@
|
|
|
1
1
|
/* Socket Lib - Built with esbuild */
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var divider_exports = {};
|
|
20
|
+
__export(divider_exports, {
|
|
21
|
+
divider: () => divider,
|
|
22
|
+
dividers: () => dividers,
|
|
23
|
+
printDivider: () => printDivider,
|
|
24
|
+
printDottedDivider: () => printDottedDivider,
|
|
25
|
+
printSectionBreak: () => printSectionBreak,
|
|
26
|
+
printThickDivider: () => printThickDivider,
|
|
27
|
+
printThinDivider: () => printThinDivider,
|
|
28
|
+
sectionBreak: () => sectionBreak
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(divider_exports);
|
|
31
|
+
var import_strings = require("../strings");
|
|
32
|
+
function divider(options) {
|
|
33
|
+
const opts = { __proto__: null, ...options };
|
|
34
|
+
const { char = "\u2550", width = 55 } = opts;
|
|
35
|
+
return (0, import_strings.repeatString)(char, width);
|
|
36
|
+
}
|
|
37
|
+
function printDivider(options) {
|
|
38
|
+
console.log(divider(options));
|
|
39
|
+
}
|
|
40
|
+
const dividers = {
|
|
41
|
+
/** Thick double-line divider using `═` */
|
|
42
|
+
thick: () => divider({ char: "\u2550" }),
|
|
43
|
+
/** Thin single-line divider using `─` */
|
|
44
|
+
thin: () => divider({ char: "\u2500" }),
|
|
45
|
+
/** Double-line divider (alias for thick) */
|
|
46
|
+
double: () => divider({ char: "\u2550" }),
|
|
47
|
+
/** Simple single dash divider using `-` */
|
|
48
|
+
single: () => divider({ char: "-" }),
|
|
49
|
+
/** Dotted divider using `·` */
|
|
50
|
+
dotted: () => divider({ char: "\xB7" }),
|
|
51
|
+
/** Dashed divider using `╌` */
|
|
52
|
+
dashed: () => divider({ char: "\u254C" }),
|
|
53
|
+
/** Wave divider using `~` */
|
|
54
|
+
wave: () => divider({ char: "~" }),
|
|
55
|
+
/** Star divider using `*` */
|
|
56
|
+
star: () => divider({ char: "*" }),
|
|
57
|
+
/** Diamond divider using `◆` */
|
|
58
|
+
diamond: () => divider({ char: "\u25C6" }),
|
|
59
|
+
/** Arrow divider using `→` */
|
|
60
|
+
arrow: () => divider({ char: "\u2192" })
|
|
61
|
+
};
|
|
62
|
+
function printThickDivider() {
|
|
63
|
+
printDivider({ char: "\u2550" });
|
|
64
|
+
}
|
|
65
|
+
function printThinDivider() {
|
|
66
|
+
printDivider({ char: "\u2500" });
|
|
67
|
+
}
|
|
68
|
+
function printDottedDivider() {
|
|
69
|
+
printDivider({ char: "\xB7" });
|
|
70
|
+
}
|
|
71
|
+
function sectionBreak(options) {
|
|
72
|
+
const div = divider(options);
|
|
73
|
+
return `
|
|
74
|
+
${div}
|
|
75
|
+
`;
|
|
76
|
+
}
|
|
77
|
+
function printSectionBreak(options) {
|
|
78
|
+
console.log(sectionBreak(options));
|
|
79
|
+
}
|
|
80
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
81
|
+
0 && (module.exports = {
|
|
82
|
+
divider,
|
|
83
|
+
dividers,
|
|
84
|
+
printDivider,
|
|
85
|
+
printDottedDivider,
|
|
86
|
+
printSectionBreak,
|
|
87
|
+
printThickDivider,
|
|
88
|
+
printThinDivider,
|
|
89
|
+
sectionBreak
|
|
90
|
+
});
|
|
5
91
|
//# sourceMappingURL=divider.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/stdio/divider.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * @fileoverview Console divider and separator utilities.\n * Provides various line styles for visual separation in CLI output.\n */\n\nimport { repeatString } from '../strings'\n\nexport interface DividerOptions {\n /**\n * Width of the divider line in characters.\n * @default 55\n */\n width?: number | undefined\n /**\n * Character to repeat for the divider line.\n * @default '\u2550'\n */\n char?: string | undefined\n /**\n * Optional color function to apply to the divider.\n * Accepts a function from `yoctocolors` or similar.\n */\n color?: ((text: string) => string) | undefined\n}\n\n/**\n * Create a divider line with custom character and width.\n * Returns a string of repeated characters for visual separation.\n *\n * @param options - Divider formatting options\n * @returns Divider string\n *\n * @example\n * ```ts\n * console.log(divider()) // Default: 55 '\u2550' characters\n * console.log(divider({ char: '-', width: 40 }))\n * console.log(divider({ char: '\u00B7', width: 30 }))\n * ```\n */\nexport function divider(options?: DividerOptions): string {\n const opts = { __proto__: null, ...options } as DividerOptions\n const { char = '\u2550', width = 55 } = opts\n return repeatString(char, width)\n}\n\n/**\n * Print a divider line directly to console.\n *\n * @param options - Divider formatting options\n *\n * @example\n * ```ts\n * printDivider() // Prints default divider\n * printDivider({ char: '\u2500', width: 60 })\n * ```\n */\nexport function printDivider(options?: DividerOptions): void {\n console.log(divider(options))\n}\n\n/**\n * Common divider style presets.\n * Provides quick access to popular divider styles.\n *\n * @example\n * ```ts\n * console.log(dividers.thick()) // \u2550\u2550\u2550\u2550\u2550\u2550\u2550...\n * console.log(dividers.thin()) // \u2500\u2500\u2500\u2500\u2500\u2500\u2500...\n * console.log(dividers.dotted()) // \u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7...\n * ```\n */\nexport const dividers = {\n /** Thick double-line divider using `\u2550` */\n thick: () => divider({ char: '\u2550' }),\n /** Thin single-line divider using `\u2500` */\n thin: () => divider({ char: '\u2500' }),\n /** Double-line divider (alias for thick) */\n double: () => divider({ char: '\u2550' }),\n /** Simple single dash divider using `-` */\n single: () => divider({ char: '-' }),\n /** Dotted divider using `\u00B7` */\n dotted: () => divider({ char: '\u00B7' }),\n /** Dashed divider using `\u254C` */\n dashed: () => divider({ char: '\u254C' }),\n /** Wave divider using `~` */\n wave: () => divider({ char: '~' }),\n /** Star divider using `*` */\n star: () => divider({ char: '*' }),\n /** Diamond divider using `\u25C6` */\n diamond: () => divider({ char: '\u25C6' }),\n /** Arrow divider using `\u2192` */\n arrow: () => divider({ char: '\u2192' }),\n} as const\n\n/**\n * Print a thick divider line (default style).\n * Convenience function using `\u2550` character.\n *\n * @example\n * ```ts\n * printThickDivider()\n * // \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n * ```\n */\nexport function printThickDivider(): void {\n printDivider({ char: '\u2550' })\n}\n\n/**\n * Print a thin divider line.\n * Convenience function using `\u2500` character.\n *\n * @example\n * ```ts\n * printThinDivider()\n * // \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n * ```\n */\nexport function printThinDivider(): void {\n printDivider({ char: '\u2500' })\n}\n\n/**\n * Print a dotted divider line.\n * Convenience function using `\u00B7` character.\n *\n * @example\n * ```ts\n * printDottedDivider()\n * // \u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\n * ```\n */\nexport function printDottedDivider(): void {\n printDivider({ char: '\u00B7' })\n}\n\n/**\n * Create a section break with blank lines before and after the divider.\n * Useful for creating visual separation between major sections.\n *\n * @param options - Divider formatting options\n * @returns Section break string with newlines\n *\n * @example\n * ```ts\n * console.log('Previous section')\n * console.log(sectionBreak())\n * console.log('Next section')\n * // Output:\n * // Previous section\n * //\n * // \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n * //\n * // Next section\n * ```\n */\nexport function sectionBreak(options?: DividerOptions): string {\n const div = divider(options)\n return `\\n${div}\\n`\n}\n\n/**\n * Print a section break with spacing directly to console.\n *\n * @param options - Divider formatting options\n *\n * @example\n * ```ts\n * console.log('Previous section')\n * printSectionBreak()\n * console.log('Next section')\n * ```\n */\nexport function printSectionBreak(options?: DividerOptions): void {\n console.log(sectionBreak(options))\n}\n"],
|
|
5
|
-
"mappings": ";
|
|
6
|
-
"names": [
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qBAA6B;AAkCtB,SAAS,QAAQ,SAAkC;AACxD,QAAM,OAAO,EAAE,WAAW,MAAM,GAAG,QAAQ;AAC3C,QAAM,EAAE,OAAO,UAAK,QAAQ,GAAG,IAAI;AACnC,aAAO,6BAAa,MAAM,KAAK;AACjC;AAaO,SAAS,aAAa,SAAgC;AAC3D,UAAQ,IAAI,QAAQ,OAAO,CAAC;AAC9B;AAaO,MAAM,WAAW;AAAA;AAAA,EAEtB,OAAO,MAAM,QAAQ,EAAE,MAAM,SAAI,CAAC;AAAA;AAAA,EAElC,MAAM,MAAM,QAAQ,EAAE,MAAM,SAAI,CAAC;AAAA;AAAA,EAEjC,QAAQ,MAAM,QAAQ,EAAE,MAAM,SAAI,CAAC;AAAA;AAAA,EAEnC,QAAQ,MAAM,QAAQ,EAAE,MAAM,IAAI,CAAC;AAAA;AAAA,EAEnC,QAAQ,MAAM,QAAQ,EAAE,MAAM,OAAI,CAAC;AAAA;AAAA,EAEnC,QAAQ,MAAM,QAAQ,EAAE,MAAM,SAAI,CAAC;AAAA;AAAA,EAEnC,MAAM,MAAM,QAAQ,EAAE,MAAM,IAAI,CAAC;AAAA;AAAA,EAEjC,MAAM,MAAM,QAAQ,EAAE,MAAM,IAAI,CAAC;AAAA;AAAA,EAEjC,SAAS,MAAM,QAAQ,EAAE,MAAM,SAAI,CAAC;AAAA;AAAA,EAEpC,OAAO,MAAM,QAAQ,EAAE,MAAM,SAAI,CAAC;AACpC;AAYO,SAAS,oBAA0B;AACxC,eAAa,EAAE,MAAM,SAAI,CAAC;AAC5B;AAYO,SAAS,mBAAyB;AACvC,eAAa,EAAE,MAAM,SAAI,CAAC;AAC5B;AAYO,SAAS,qBAA2B;AACzC,eAAa,EAAE,MAAM,OAAI,CAAC;AAC5B;AAsBO,SAAS,aAAa,SAAkC;AAC7D,QAAM,MAAM,QAAQ,OAAO;AAC3B,SAAO;AAAA,EAAK,GAAG;AAAA;AACjB;AAcO,SAAS,kBAAkB,SAAgC;AAChE,UAAQ,IAAI,aAAa,OAAO,CAAC;AACnC;",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|
package/dist/stdio/footer.js
CHANGED
|
@@ -1,4 +1,96 @@
|
|
|
1
1
|
/* Socket Lib - Built with esbuild */
|
|
2
|
-
var
|
|
3
|
-
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var footer_exports = {};
|
|
30
|
+
__export(footer_exports, {
|
|
31
|
+
createFooter: () => createFooter,
|
|
32
|
+
createSummaryFooter: () => createSummaryFooter
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(footer_exports);
|
|
35
|
+
var import_yoctocolors_cjs = __toESM(require("../external/yoctocolors-cjs"));
|
|
36
|
+
var import_strings = require("../strings");
|
|
37
|
+
function createFooter(message, options) {
|
|
38
|
+
const {
|
|
39
|
+
borderChar = "=",
|
|
40
|
+
color = "gray",
|
|
41
|
+
showDuration = false,
|
|
42
|
+
showTimestamp = false,
|
|
43
|
+
startTime,
|
|
44
|
+
width = 80
|
|
45
|
+
} = { __proto__: null, ...options };
|
|
46
|
+
const border = (0, import_strings.repeatString)(borderChar, width);
|
|
47
|
+
const lines = [];
|
|
48
|
+
if (message) {
|
|
49
|
+
const colorFn = color && import_yoctocolors_cjs.default[color] ? import_yoctocolors_cjs.default[color] : (s) => s;
|
|
50
|
+
lines.push(colorFn(message));
|
|
51
|
+
}
|
|
52
|
+
if (showTimestamp) {
|
|
53
|
+
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
54
|
+
lines.push(import_yoctocolors_cjs.default.gray(`Completed at: ${timestamp}`));
|
|
55
|
+
}
|
|
56
|
+
if (showDuration && startTime) {
|
|
57
|
+
const duration = Date.now() - startTime;
|
|
58
|
+
const seconds = (duration / 1e3).toFixed(2);
|
|
59
|
+
lines.push(import_yoctocolors_cjs.default.gray(`Duration: ${seconds}s`));
|
|
60
|
+
}
|
|
61
|
+
lines.push(border);
|
|
62
|
+
return lines.join("\n");
|
|
63
|
+
}
|
|
64
|
+
function createSummaryFooter(stats, options) {
|
|
65
|
+
const parts = [];
|
|
66
|
+
if (stats.total !== void 0) {
|
|
67
|
+
parts.push(`Total: ${stats.total}`);
|
|
68
|
+
}
|
|
69
|
+
if (stats.success !== void 0) {
|
|
70
|
+
parts.push(import_yoctocolors_cjs.default.green(`\u2713 ${stats.success} passed`));
|
|
71
|
+
}
|
|
72
|
+
if (stats.failed !== void 0 && stats.failed > 0) {
|
|
73
|
+
parts.push(import_yoctocolors_cjs.default.red(`\u2717 ${stats.failed} failed`));
|
|
74
|
+
}
|
|
75
|
+
if (stats.skipped !== void 0 && stats.skipped > 0) {
|
|
76
|
+
parts.push(import_yoctocolors_cjs.default.yellow(`\u25CB ${stats.skipped} skipped`));
|
|
77
|
+
}
|
|
78
|
+
if (stats.warnings !== void 0 && stats.warnings > 0) {
|
|
79
|
+
parts.push(import_yoctocolors_cjs.default.yellow(`\u26A0 ${stats.warnings} warnings`));
|
|
80
|
+
}
|
|
81
|
+
if (stats.errors !== void 0 && stats.errors > 0) {
|
|
82
|
+
parts.push(import_yoctocolors_cjs.default.red(`\u2717 ${stats.errors} errors`));
|
|
83
|
+
}
|
|
84
|
+
const message = parts.join(" | ");
|
|
85
|
+
return createFooter(message, {
|
|
86
|
+
...options,
|
|
87
|
+
showDuration: stats.duration !== void 0,
|
|
88
|
+
...stats.duration !== void 0 && { startTime: stats.duration }
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
92
|
+
0 && (module.exports = {
|
|
93
|
+
createFooter,
|
|
94
|
+
createSummaryFooter
|
|
95
|
+
});
|
|
4
96
|
//# sourceMappingURL=footer.js.map
|
package/dist/stdio/footer.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/stdio/footer.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * @fileoverview Console footer/summary formatting utilities.\n * Provides consistent footer and summary formatting for CLI applications.\n */\n\nimport colors from '../external/yoctocolors-cjs'\nimport { repeatString } from '../strings'\n\nexport interface FooterOptions {\n /**\n * Width of the footer border in characters.\n * @default 80\n */\n width?: number | undefined\n /**\n * Character to use for the border line.\n * @default '='\n */\n borderChar?: string | undefined\n /**\n * Include ISO timestamp in footer.\n * @default false\n */\n showTimestamp?: boolean | undefined\n /**\n * Show duration since start time.\n * @default false\n */\n showDuration?: boolean | undefined\n /**\n * Start time in milliseconds (from Date.now()).\n * Required when `showDuration` is true.\n */\n startTime?: number | undefined\n /**\n * Color to apply to the footer message.\n * @default 'gray'\n */\n color?:\n | 'cyan'\n | 'green'\n | 'yellow'\n | 'blue'\n | 'magenta'\n | 'red'\n | 'gray'\n | undefined\n}\n\nexport interface SummaryStats {\n /** Total number of items processed */\n total?: number | undefined\n /** Number of successful items */\n success?: number | undefined\n /** Number of failed items */\n failed?: number | undefined\n /** Number of skipped items */\n skipped?: number | undefined\n /** Number of warnings */\n warnings?: number | undefined\n /** Number of errors */\n errors?: number | undefined\n /** Duration in milliseconds (timestamp value, not elapsed time) */\n duration?: number | undefined\n}\n\n/**\n * Create a formatted footer with optional message, timestamp, and duration.\n * Useful for marking the end of CLI output or showing completion status.\n *\n * @param message - Optional message to display in footer\n * @param options - Footer formatting options\n * @returns Formatted footer string with border and optional info\n *\n * @example\n * ```ts\n * const startTime = Date.now()\n * // ... do work\n * console.log(createFooter('Build complete', {\n * width: 60,\n * color: 'green',\n * showDuration: true,\n * startTime\n * }))\n * ```\n */\nexport function createFooter(\n message?: string | undefined,\n options?: FooterOptions,\n): string {\n const {\n borderChar = '=',\n color = 'gray',\n showDuration = false,\n showTimestamp = false,\n startTime,\n width = 80,\n } = { __proto__: null, ...options } as FooterOptions\n\n const border = repeatString(borderChar, width)\n const lines: string[] = []\n\n if (message) {\n const colorFn = color && colors[color] ? colors[color] : (s: string) => s\n lines.push(colorFn(message))\n }\n\n if (showTimestamp) {\n const timestamp = new Date().toISOString()\n lines.push(colors.gray(`Completed at: ${timestamp}`))\n }\n\n if (showDuration && startTime) {\n const duration = Date.now() - startTime\n const seconds = (duration / 1000).toFixed(2)\n lines.push(colors.gray(`Duration: ${seconds}s`))\n }\n\n lines.push(border)\n return lines.join('\\n')\n}\n\n/**\n * Create a summary footer with statistics and colored status indicators.\n * Automatically formats success/failure/warning counts with appropriate colors.\n * Useful for test results, build summaries, or batch operation reports.\n *\n * @param stats - Statistics to display in the summary\n * @param options - Footer formatting options\n * @returns Formatted summary footer string with colored indicators\n *\n * @example\n * ```ts\n * console.log(createSummaryFooter({\n * total: 150,\n * success: 145,\n * failed: 3,\n * skipped: 2,\n * warnings: 5\n * }))\n * // Output: Total: 150 | \u2713 145 passed | \u2717 3 failed | \u25CB 2 skipped | \u26A0 5 warnings\n * // ========================================\n * ```\n */\nexport function createSummaryFooter(\n stats: SummaryStats,\n options?: FooterOptions,\n): string {\n const parts: string[] = []\n\n if (stats.total !== undefined) {\n parts.push(`Total: ${stats.total}`)\n }\n\n if (stats.success !== undefined) {\n parts.push(colors.green(`\u2713 ${stats.success} passed`))\n }\n\n if (stats.failed !== undefined && stats.failed > 0) {\n parts.push(colors.red(`\u2717 ${stats.failed} failed`))\n }\n\n if (stats.skipped !== undefined && stats.skipped > 0) {\n parts.push(colors.yellow(`\u25CB ${stats.skipped} skipped`))\n }\n\n if (stats.warnings !== undefined && stats.warnings > 0) {\n parts.push(colors.yellow(`\u26A0 ${stats.warnings} warnings`))\n }\n\n if (stats.errors !== undefined && stats.errors > 0) {\n parts.push(colors.red(`\u2717 ${stats.errors} errors`))\n }\n\n const message = parts.join(' | ')\n return createFooter(message, {\n ...options,\n showDuration: stats.duration !== undefined,\n ...(stats.duration !== undefined && { startTime: stats.duration }),\n })\n}\n"],
|
|
5
|
-
"mappings": ";
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,6BAAmB;AACnB,qBAA6B;AAgFtB,SAAS,aACd,SACA,SACQ;AACR,QAAM;AAAA,IACJ,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,EACV,IAAI,EAAE,WAAW,MAAM,GAAG,QAAQ;AAElC,QAAM,aAAS,6BAAa,YAAY,KAAK;AAC7C,QAAM,QAAkB,CAAC;AAEzB,MAAI,SAAS;AACX,UAAM,UAAU,SAAS,uBAAAA,QAAO,KAAK,IAAI,uBAAAA,QAAO,KAAK,IAAI,CAAC,MAAc;AACxE,UAAM,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC7B;AAEA,MAAI,eAAe;AACjB,UAAM,aAAY,oBAAI,KAAK,GAAE,YAAY;AACzC,UAAM,KAAK,uBAAAA,QAAO,KAAK,iBAAiB,SAAS,EAAE,CAAC;AAAA,EACtD;AAEA,MAAI,gBAAgB,WAAW;AAC7B,UAAM,WAAW,KAAK,IAAI,IAAI;AAC9B,UAAM,WAAW,WAAW,KAAM,QAAQ,CAAC;AAC3C,UAAM,KAAK,uBAAAA,QAAO,KAAK,aAAa,OAAO,GAAG,CAAC;AAAA,EACjD;AAEA,QAAM,KAAK,MAAM;AACjB,SAAO,MAAM,KAAK,IAAI;AACxB;AAwBO,SAAS,oBACd,OACA,SACQ;AACR,QAAM,QAAkB,CAAC;AAEzB,MAAI,MAAM,UAAU,QAAW;AAC7B,UAAM,KAAK,UAAU,MAAM,KAAK,EAAE;AAAA,EACpC;AAEA,MAAI,MAAM,YAAY,QAAW;AAC/B,UAAM,KAAK,uBAAAA,QAAO,MAAM,UAAK,MAAM,OAAO,SAAS,CAAC;AAAA,EACtD;AAEA,MAAI,MAAM,WAAW,UAAa,MAAM,SAAS,GAAG;AAClD,UAAM,KAAK,uBAAAA,QAAO,IAAI,UAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACnD;AAEA,MAAI,MAAM,YAAY,UAAa,MAAM,UAAU,GAAG;AACpD,UAAM,KAAK,uBAAAA,QAAO,OAAO,UAAK,MAAM,OAAO,UAAU,CAAC;AAAA,EACxD;AAEA,MAAI,MAAM,aAAa,UAAa,MAAM,WAAW,GAAG;AACtD,UAAM,KAAK,uBAAAA,QAAO,OAAO,UAAK,MAAM,QAAQ,WAAW,CAAC;AAAA,EAC1D;AAEA,MAAI,MAAM,WAAW,UAAa,MAAM,SAAS,GAAG;AAClD,UAAM,KAAK,uBAAAA,QAAO,IAAI,UAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACnD;AAEA,QAAM,UAAU,MAAM,KAAK,KAAK;AAChC,SAAO,aAAa,SAAS;AAAA,IAC3B,GAAG;AAAA,IACH,cAAc,MAAM,aAAa;AAAA,IACjC,GAAI,MAAM,aAAa,UAAa,EAAE,WAAW,MAAM,SAAS;AAAA,EAClE,CAAC;AACH;",
|
|
6
|
+
"names": ["colors"]
|
|
7
7
|
}
|
package/dist/stdio/header.js
CHANGED
|
@@ -1,4 +1,102 @@
|
|
|
1
1
|
/* Socket Lib - Built with esbuild */
|
|
2
|
-
var
|
|
3
|
-
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var header_exports = {};
|
|
30
|
+
__export(header_exports, {
|
|
31
|
+
createHeader: () => createHeader,
|
|
32
|
+
createSectionHeader: () => createSectionHeader,
|
|
33
|
+
printFooter: () => printFooter,
|
|
34
|
+
printHeader: () => printHeader
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(header_exports);
|
|
37
|
+
var import_yoctocolors_cjs = __toESM(require("../external/yoctocolors-cjs"));
|
|
38
|
+
var import_strings = require("../strings");
|
|
39
|
+
function createHeader(title, options) {
|
|
40
|
+
const {
|
|
41
|
+
bold = true,
|
|
42
|
+
borderChar = "=",
|
|
43
|
+
color = "cyan",
|
|
44
|
+
padding = 1,
|
|
45
|
+
width = 80
|
|
46
|
+
} = { __proto__: null, ...options };
|
|
47
|
+
const border = (0, import_strings.repeatString)(borderChar, width);
|
|
48
|
+
let formattedTitle = title;
|
|
49
|
+
if (color && import_yoctocolors_cjs.default[color]) {
|
|
50
|
+
formattedTitle = import_yoctocolors_cjs.default[color](formattedTitle);
|
|
51
|
+
}
|
|
52
|
+
if (bold && import_yoctocolors_cjs.default.bold) {
|
|
53
|
+
formattedTitle = import_yoctocolors_cjs.default.bold(formattedTitle);
|
|
54
|
+
}
|
|
55
|
+
const centeredTitle = (0, import_strings.centerText)(formattedTitle, width);
|
|
56
|
+
const paddingLine = (0, import_strings.repeatString)(" ", width);
|
|
57
|
+
const lines = [border];
|
|
58
|
+
for (let i = 0; i < padding; i++) {
|
|
59
|
+
lines.push(paddingLine);
|
|
60
|
+
}
|
|
61
|
+
lines.push(centeredTitle);
|
|
62
|
+
for (let i = 0; i < padding; i++) {
|
|
63
|
+
lines.push(paddingLine);
|
|
64
|
+
}
|
|
65
|
+
lines.push(border);
|
|
66
|
+
return lines.join("\n");
|
|
67
|
+
}
|
|
68
|
+
function createSectionHeader(title, options) {
|
|
69
|
+
const {
|
|
70
|
+
borderChar = "-",
|
|
71
|
+
color = "blue",
|
|
72
|
+
width = 60
|
|
73
|
+
} = { __proto__: null, ...options };
|
|
74
|
+
return createHeader(title, {
|
|
75
|
+
width,
|
|
76
|
+
borderChar,
|
|
77
|
+
padding: 0,
|
|
78
|
+
color,
|
|
79
|
+
bold: false
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function printHeader(title) {
|
|
83
|
+
const border = (0, import_strings.repeatString)("\u2550", 55);
|
|
84
|
+
console.log(border);
|
|
85
|
+
console.log(` ${title}`);
|
|
86
|
+
console.log(border);
|
|
87
|
+
}
|
|
88
|
+
function printFooter(message) {
|
|
89
|
+
const border = (0, import_strings.repeatString)("\u2500", 55);
|
|
90
|
+
console.log(border);
|
|
91
|
+
if (message) {
|
|
92
|
+
console.log(import_yoctocolors_cjs.default.green(message));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
96
|
+
0 && (module.exports = {
|
|
97
|
+
createHeader,
|
|
98
|
+
createSectionHeader,
|
|
99
|
+
printFooter,
|
|
100
|
+
printHeader
|
|
101
|
+
});
|
|
4
102
|
//# sourceMappingURL=header.js.map
|
package/dist/stdio/header.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/stdio/header.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * @fileoverview Console header/banner formatting utilities.\n * Provides consistent header formatting for CLI applications.\n */\n\nimport colors from '../external/yoctocolors-cjs'\nimport { centerText, repeatString } from '../strings'\n\nexport interface HeaderOptions {\n /**\n * Width of the header in characters.\n * @default 80\n */\n width?: number | undefined\n /**\n * Character to use for border lines.\n * @default '='\n */\n borderChar?: string | undefined\n /**\n * Number of blank lines above and below title.\n * @default 1\n */\n padding?: number | undefined\n /**\n * Color to apply to the title text.\n * @default 'cyan'\n */\n color?:\n | 'cyan'\n | 'green'\n | 'yellow'\n | 'blue'\n | 'magenta'\n | 'red'\n | 'gray'\n | undefined\n /**\n * Apply bold styling to title.\n * @default true\n */\n bold?: boolean | undefined\n}\n\n/**\n * Create a formatted header/banner with borders and centered title.\n * Useful for marking the start of CLI output or creating visual sections.\n *\n * @param title - Title text to display in header\n * @param options - Header formatting options\n * @returns Formatted header string with borders and centered title\n *\n * @example\n * ```ts\n * console.log(createHeader('Socket Security Analysis', {\n * width: 70,\n * color: 'cyan',\n * bold: true,\n * padding: 2\n * }))\n * // Output:\n * // ======================================================================\n * //\n * // Socket Security Analysis\n * //\n * // ======================================================================\n * ```\n */\nexport function createHeader(title: string, options?: HeaderOptions): string {\n const {\n bold = true,\n borderChar = '=',\n color = 'cyan',\n padding = 1,\n width = 80,\n } = { __proto__: null, ...options } as HeaderOptions\n\n const border = repeatString(borderChar, width)\n\n // Apply color and bold\n let formattedTitle = title\n if (color && colors[color]) {\n formattedTitle = colors[color](formattedTitle)\n }\n if (bold && colors.bold) {\n formattedTitle = colors.bold(formattedTitle)\n }\n\n const centeredTitle = centerText(formattedTitle, width)\n const paddingLine = repeatString(' ', width)\n\n const lines: string[] = [border]\n\n for (let i = 0; i < padding; i++) {\n lines.push(paddingLine)\n }\n\n lines.push(centeredTitle)\n\n for (let i = 0; i < padding; i++) {\n lines.push(paddingLine)\n }\n\n lines.push(border)\n\n return lines.join('\\n')\n}\n\n/**\n * Create a simple section header without padding.\n * A lighter-weight alternative to `createHeader()` for subsections.\n *\n * @param title - Title text to display in header\n * @param options - Header formatting options\n * @returns Formatted section header string\n *\n * @example\n * ```ts\n * console.log(createSectionHeader('Dependencies', {\n * width: 50,\n * color: 'blue'\n * }))\n * // Output:\n * // --------------------------------------------------\n * // Dependencies\n * // --------------------------------------------------\n * ```\n */\nexport function createSectionHeader(\n title: string,\n options?: HeaderOptions,\n): string {\n const {\n borderChar = '-',\n color = 'blue',\n width = 60,\n } = { __proto__: null, ...options } as HeaderOptions\n\n return createHeader(title, {\n width,\n borderChar,\n padding: 0,\n color,\n bold: false,\n })\n}\n\n/**\n * Print a header directly to stdout with standard formatting.\n * Uses fixed width of 55 characters with `\u2550` borders.\n * Simpler alternative to `createHeader()` for quick headers.\n *\n * @param title - Title text to display\n *\n * @example\n * ```ts\n * printHeader('Package Analysis')\n * // Output:\n * // \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n * // Package Analysis\n * // \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n * ```\n */\nexport function printHeader(title: string): void {\n const border = repeatString('\u2550', 55)\n console.log(border)\n console.log(` ${title}`)\n console.log(border)\n}\n\n/**\n * Print a footer with optional success message.\n * Uses `\u2500` border character for a lighter appearance.\n * Fixed width of 55 characters to match `printHeader()`.\n *\n * @param message - Optional message to display (shown in green)\n *\n * @example\n * ```ts\n * printFooter('Analysis complete')\n * // Output:\n * // \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n * // Analysis complete (in green)\n * ```\n */\nexport function printFooter(message?: string | undefined): void {\n const border = repeatString('\u2500', 55)\n console.log(border)\n if (message) {\n console.log(colors.green(message))\n }\n}\n"],
|
|
5
|
-
"mappings": ";
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,6BAAmB;AACnB,qBAAyC;AA8DlC,SAAS,aAAa,OAAe,SAAiC;AAC3E,QAAM;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,QAAQ;AAAA,EACV,IAAI,EAAE,WAAW,MAAM,GAAG,QAAQ;AAElC,QAAM,aAAS,6BAAa,YAAY,KAAK;AAG7C,MAAI,iBAAiB;AACrB,MAAI,SAAS,uBAAAA,QAAO,KAAK,GAAG;AAC1B,qBAAiB,uBAAAA,QAAO,KAAK,EAAE,cAAc;AAAA,EAC/C;AACA,MAAI,QAAQ,uBAAAA,QAAO,MAAM;AACvB,qBAAiB,uBAAAA,QAAO,KAAK,cAAc;AAAA,EAC7C;AAEA,QAAM,oBAAgB,2BAAW,gBAAgB,KAAK;AACtD,QAAM,kBAAc,6BAAa,KAAK,KAAK;AAE3C,QAAM,QAAkB,CAAC,MAAM;AAE/B,WAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAChC,UAAM,KAAK,WAAW;AAAA,EACxB;AAEA,QAAM,KAAK,aAAa;AAExB,WAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAChC,UAAM,KAAK,WAAW;AAAA,EACxB;AAEA,QAAM,KAAK,MAAM;AAEjB,SAAO,MAAM,KAAK,IAAI;AACxB;AAsBO,SAAS,oBACd,OACA,SACQ;AACR,QAAM;AAAA,IACJ,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,IAAI,EAAE,WAAW,MAAM,GAAG,QAAQ;AAElC,SAAO,aAAa,OAAO;AAAA,IACzB;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AACH;AAkBO,SAAS,YAAY,OAAqB;AAC/C,QAAM,aAAS,6BAAa,UAAK,EAAE;AACnC,UAAQ,IAAI,MAAM;AAClB,UAAQ,IAAI,KAAK,KAAK,EAAE;AACxB,UAAQ,IAAI,MAAM;AACpB;AAiBO,SAAS,YAAY,SAAoC;AAC9D,QAAM,aAAS,6BAAa,UAAK,EAAE;AACnC,UAAQ,IAAI,MAAM;AAClB,MAAI,SAAS;AACX,YAAQ,IAAI,uBAAAA,QAAO,MAAM,OAAO,CAAC;AAAA,EACnC;AACF;",
|
|
6
|
+
"names": ["colors"]
|
|
7
7
|
}
|
package/dist/stdio/mask.js
CHANGED
|
@@ -1,7 +1,209 @@
|
|
|
1
1
|
/* Socket Lib - Built with esbuild */
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var mask_exports = {};
|
|
30
|
+
__export(mask_exports, {
|
|
31
|
+
attachOutputMask: () => attachOutputMask,
|
|
32
|
+
createKeyboardHandler: () => createKeyboardHandler,
|
|
33
|
+
createOutputMask: () => createOutputMask,
|
|
34
|
+
runWithMask: () => runWithMask
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(mask_exports);
|
|
37
|
+
var import_child_process = require("child_process");
|
|
38
|
+
var import_readline = __toESM(require("readline"));
|
|
39
|
+
var import_spinner = require("../spinner.js");
|
|
40
|
+
var import_clear = require("./clear.js");
|
|
41
|
+
var import_stdout = require("./stdout.js");
|
|
42
|
+
function createOutputMask(options = {}) {
|
|
43
|
+
const { showOutput = false } = options;
|
|
44
|
+
return {
|
|
45
|
+
isSpinning: !showOutput,
|
|
46
|
+
outputBuffer: [],
|
|
47
|
+
stderrCapture: "",
|
|
48
|
+
stdoutCapture: "",
|
|
49
|
+
verbose: showOutput
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function createKeyboardHandler(mask, child, options = {}) {
|
|
53
|
+
const { message = "Running\u2026", toggleText = "to see full output" } = options;
|
|
54
|
+
return (_str, key) => {
|
|
55
|
+
if (key?.ctrl && key.name === "o") {
|
|
56
|
+
mask.verbose = !mask.verbose;
|
|
57
|
+
if (mask.verbose) {
|
|
58
|
+
if (mask.isSpinning) {
|
|
59
|
+
(0, import_spinner.getDefaultSpinner)().stop();
|
|
60
|
+
mask.isSpinning = false;
|
|
61
|
+
}
|
|
62
|
+
(0, import_clear.clearLine)();
|
|
63
|
+
if (mask.outputBuffer.length > 0) {
|
|
64
|
+
console.log("--- Output (ctrl+o to hide) ---");
|
|
65
|
+
mask.outputBuffer.forEach((line) => {
|
|
66
|
+
(0, import_stdout.write)(line);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
if (mask.outputBuffer.length > 0) {
|
|
71
|
+
const lineCount = mask.outputBuffer.join("").split("\n").length + 1;
|
|
72
|
+
for (let i = 0; i < lineCount; i += 1) {
|
|
73
|
+
process.stdout.write("\x1B[1A\x1B[2K");
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
(0, import_clear.clearLine)();
|
|
77
|
+
mask.outputBuffer = [];
|
|
78
|
+
if (!mask.isSpinning) {
|
|
79
|
+
(0, import_spinner.getDefaultSpinner)().start(`${message} (ctrl+o ${toggleText})`);
|
|
80
|
+
mask.isSpinning = true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
} else if (key?.ctrl && key.name === "c") {
|
|
84
|
+
child.kill("SIGTERM");
|
|
85
|
+
if (process.stdin.isTTY) {
|
|
86
|
+
process.stdin.setRawMode(false);
|
|
87
|
+
}
|
|
88
|
+
throw new Error("Process cancelled by user");
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function attachOutputMask(child, options = {}) {
|
|
93
|
+
return new Promise((resolve, reject) => {
|
|
94
|
+
const { message = "Running\u2026" } = options;
|
|
95
|
+
const mask = createOutputMask(options);
|
|
96
|
+
if (mask.isSpinning && process.stdout.isTTY) {
|
|
97
|
+
(0, import_spinner.getDefaultSpinner)().start(
|
|
98
|
+
`${message} (ctrl+o ${options.toggleText || "to see full output"})`
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
if (process.stdin.isTTY) {
|
|
102
|
+
import_readline.default.emitKeypressEvents(process.stdin);
|
|
103
|
+
process.stdin.setRawMode(true);
|
|
104
|
+
const keypressHandler = createKeyboardHandler(mask, child, options);
|
|
105
|
+
process.stdin.on("keypress", keypressHandler);
|
|
106
|
+
child.on("exit", () => {
|
|
107
|
+
if (process.stdin.isTTY) {
|
|
108
|
+
process.stdin.setRawMode(false);
|
|
109
|
+
process.stdin.removeListener("keypress", keypressHandler);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (child.stdout) {
|
|
114
|
+
child.stdout.on("data", (data) => {
|
|
115
|
+
const text = data.toString();
|
|
116
|
+
mask.stdoutCapture += text;
|
|
117
|
+
if (options.filterOutput && !options.filterOutput(text, "stdout")) {
|
|
118
|
+
return void 0;
|
|
119
|
+
}
|
|
120
|
+
if (mask.verbose) {
|
|
121
|
+
(0, import_stdout.write)(text);
|
|
122
|
+
} else {
|
|
123
|
+
mask.outputBuffer.push(text);
|
|
124
|
+
const lines = mask.outputBuffer.join("").split("\n");
|
|
125
|
+
if (lines.length > 1e3) {
|
|
126
|
+
mask.outputBuffer = [lines.slice(-1e3).join("\n")];
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return void 0;
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
if (child.stderr) {
|
|
133
|
+
child.stderr.on("data", (data) => {
|
|
134
|
+
const text = data.toString();
|
|
135
|
+
mask.stderrCapture += text;
|
|
136
|
+
if (options.filterOutput && !options.filterOutput(text, "stderr")) {
|
|
137
|
+
return void 0;
|
|
138
|
+
}
|
|
139
|
+
if (mask.verbose) {
|
|
140
|
+
process.stderr.write(text);
|
|
141
|
+
} else {
|
|
142
|
+
mask.outputBuffer.push(text);
|
|
143
|
+
}
|
|
144
|
+
return void 0;
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
child.on("exit", (code) => {
|
|
148
|
+
if (process.stdin.isTTY) {
|
|
149
|
+
process.stdin.setRawMode(false);
|
|
150
|
+
}
|
|
151
|
+
let finalCode = code || 0;
|
|
152
|
+
if (options.overrideExitCode) {
|
|
153
|
+
const overridden = options.overrideExitCode(
|
|
154
|
+
finalCode,
|
|
155
|
+
mask.stdoutCapture,
|
|
156
|
+
mask.stderrCapture
|
|
157
|
+
);
|
|
158
|
+
if (overridden !== void 0) {
|
|
159
|
+
finalCode = overridden;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (mask.isSpinning) {
|
|
163
|
+
const spinner = (0, import_spinner.getDefaultSpinner)();
|
|
164
|
+
if (finalCode === 0) {
|
|
165
|
+
spinner.successAndStop(`${message} completed`);
|
|
166
|
+
} else {
|
|
167
|
+
spinner.failAndStop(`${message} failed`);
|
|
168
|
+
if (mask.outputBuffer.length > 0 && !mask.verbose) {
|
|
169
|
+
console.log("\n--- Output ---");
|
|
170
|
+
mask.outputBuffer.forEach((line) => {
|
|
171
|
+
(0, import_stdout.write)(line);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
resolve(finalCode);
|
|
177
|
+
});
|
|
178
|
+
child.on("error", (error) => {
|
|
179
|
+
if (process.stdin.isTTY) {
|
|
180
|
+
process.stdin.setRawMode(false);
|
|
181
|
+
}
|
|
182
|
+
if (mask.isSpinning) {
|
|
183
|
+
(0, import_spinner.getDefaultSpinner)().failAndStop(`${message} error`);
|
|
184
|
+
}
|
|
185
|
+
reject(error);
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
async function runWithMask(command, args = [], options = {}) {
|
|
190
|
+
const {
|
|
191
|
+
message = "Running\u2026",
|
|
192
|
+
showOutput = false,
|
|
193
|
+
toggleText = "to see output",
|
|
194
|
+
...spawnOptions
|
|
195
|
+
} = options;
|
|
196
|
+
const child = (0, import_child_process.spawn)(command, args, {
|
|
197
|
+
stdio: ["inherit", "pipe", "pipe"],
|
|
198
|
+
...spawnOptions
|
|
199
|
+
});
|
|
200
|
+
return await attachOutputMask(child, { message, showOutput, toggleText });
|
|
201
|
+
}
|
|
202
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
203
|
+
0 && (module.exports = {
|
|
204
|
+
attachOutputMask,
|
|
205
|
+
createKeyboardHandler,
|
|
206
|
+
createOutputMask,
|
|
207
|
+
runWithMask
|
|
208
|
+
});
|
|
7
209
|
//# sourceMappingURL=mask.js.map
|