@vertaaux/cli 0.4.0 → 0.5.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/CHANGELOG.md +116 -0
- package/MIGRATION.md +239 -0
- package/README.md +62 -17
- package/dist/app/interactive-app.d.ts +103 -0
- package/dist/app/interactive-app.d.ts.map +1 -0
- package/dist/app/interactive-app.js +328 -0
- package/dist/app/layout/canvas.d.ts +23 -0
- package/dist/app/layout/canvas.d.ts.map +1 -0
- package/dist/app/layout/canvas.js +36 -0
- package/dist/app/layout/footer.d.ts +31 -0
- package/dist/app/layout/footer.d.ts.map +1 -0
- package/dist/app/layout/footer.js +41 -0
- package/dist/app/layout/header.d.ts +20 -0
- package/dist/app/layout/header.d.ts.map +1 -0
- package/dist/app/layout/header.js +27 -0
- package/dist/app/menu/categories.d.ts +20 -0
- package/dist/app/menu/categories.d.ts.map +1 -0
- package/dist/app/menu/categories.js +166 -0
- package/dist/app/menu/filter.d.ts +17 -0
- package/dist/app/menu/filter.d.ts.map +1 -0
- package/dist/app/menu/filter.js +33 -0
- package/dist/app/menu/menu-view.d.ts +35 -0
- package/dist/app/menu/menu-view.d.ts.map +1 -0
- package/dist/app/menu/menu-view.js +230 -0
- package/dist/app/menu/recent.d.ts +24 -0
- package/dist/app/menu/recent.d.ts.map +1 -0
- package/dist/app/menu/recent.js +49 -0
- package/dist/app/types.d.ts +43 -0
- package/dist/app/types.d.ts.map +1 -0
- package/dist/app/types.js +7 -0
- package/dist/app/views/command-runner.d.ts +36 -0
- package/dist/app/views/command-runner.d.ts.map +1 -0
- package/dist/app/views/command-runner.js +415 -0
- package/dist/app/views/help-overlay.d.ts +21 -0
- package/dist/app/views/help-overlay.d.ts.map +1 -0
- package/dist/app/views/help-overlay.js +46 -0
- package/dist/auth/ci-token.d.ts +8 -2
- package/dist/auth/ci-token.d.ts.map +1 -1
- package/dist/auth/ci-token.js +15 -30
- package/dist/auth/device-flow.d.ts +2 -1
- package/dist/auth/device-flow.d.ts.map +1 -1
- package/dist/auth/device-flow.js +13 -10
- package/dist/auth/token-store.d.ts.map +1 -1
- package/dist/auth/token-store.js +12 -2
- package/dist/baseline/diff.d.ts +2 -2
- package/dist/baseline/diff.d.ts.map +1 -1
- package/dist/baseline/diff.js +15 -34
- package/dist/commands/a11y.d.ts +11 -0
- package/dist/commands/a11y.d.ts.map +1 -0
- package/dist/commands/a11y.js +149 -0
- package/dist/commands/audit/artifacts.d.ts +27 -0
- package/dist/commands/audit/artifacts.d.ts.map +1 -0
- package/dist/commands/audit/artifacts.js +158 -0
- package/dist/commands/audit/ci-detection.d.ts +18 -0
- package/dist/commands/audit/ci-detection.d.ts.map +1 -0
- package/dist/commands/audit/ci-detection.js +71 -0
- package/dist/commands/audit/explain.d.ts +11 -0
- package/dist/commands/audit/explain.d.ts.map +1 -0
- package/dist/commands/audit/explain.js +45 -0
- package/dist/commands/audit/filters.d.ts +17 -0
- package/dist/commands/audit/filters.d.ts.map +1 -0
- package/dist/commands/audit/filters.js +40 -0
- package/dist/commands/audit/index.d.ts +18 -0
- package/dist/commands/audit/index.d.ts.map +1 -0
- package/dist/commands/audit/index.js +589 -0
- package/dist/commands/audit/output.d.ts +32 -0
- package/dist/commands/audit/output.d.ts.map +1 -0
- package/dist/commands/audit/output.js +129 -0
- package/dist/commands/audit/policy.d.ts +27 -0
- package/dist/commands/audit/policy.d.ts.map +1 -0
- package/dist/commands/audit/policy.js +147 -0
- package/dist/commands/audit/scoring.d.ts +23 -0
- package/dist/commands/audit/scoring.d.ts.map +1 -0
- package/dist/commands/audit/scoring.js +70 -0
- package/dist/commands/audit/types.d.ts +89 -0
- package/dist/commands/audit/types.d.ts.map +1 -0
- package/dist/commands/audit/types.js +8 -0
- package/dist/commands/audit.d.ts +2 -60
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +2 -1097
- package/dist/commands/baseline.d.ts +2 -0
- package/dist/commands/baseline.d.ts.map +1 -1
- package/dist/commands/baseline.js +221 -123
- package/dist/commands/comment.d.ts +22 -0
- package/dist/commands/comment.d.ts.map +1 -1
- package/dist/commands/comment.js +127 -62
- package/dist/commands/compare.d.ts +17 -0
- package/dist/commands/compare.d.ts.map +1 -1
- package/dist/commands/compare.js +288 -181
- package/dist/commands/diff.d.ts +7 -0
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +181 -143
- package/dist/commands/doc.d.ts +10 -0
- package/dist/commands/doc.d.ts.map +1 -1
- package/dist/commands/doc.js +135 -77
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +166 -19
- package/dist/commands/download.d.ts +10 -0
- package/dist/commands/download.d.ts.map +1 -1
- package/dist/commands/download.js +169 -112
- package/dist/commands/explain.d.ts +5 -0
- package/dist/commands/explain.d.ts.map +1 -1
- package/dist/commands/explain.js +242 -156
- package/dist/commands/fix-all.d.ts +25 -0
- package/dist/commands/fix-all.d.ts.map +1 -0
- package/dist/commands/fix-all.js +206 -0
- package/dist/commands/fix-plan.d.ts +9 -0
- package/dist/commands/fix-plan.d.ts.map +1 -1
- package/dist/commands/fix-plan.js +154 -90
- package/dist/commands/fix.d.ts +17 -0
- package/dist/commands/fix.d.ts.map +1 -0
- package/dist/commands/fix.js +111 -0
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +94 -42
- package/dist/commands/login.d.ts +18 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +263 -92
- package/dist/commands/patch-review.d.ts +11 -0
- package/dist/commands/patch-review.d.ts.map +1 -1
- package/dist/commands/patch-review.js +160 -98
- package/dist/commands/policy.d.ts +31 -0
- package/dist/commands/policy.d.ts.map +1 -1
- package/dist/commands/policy.js +270 -125
- package/dist/commands/release-notes.d.ts +10 -0
- package/dist/commands/release-notes.d.ts.map +1 -1
- package/dist/commands/release-notes.js +128 -74
- package/dist/commands/scan.d.ts +13 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +133 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +81 -0
- package/dist/commands/suggest.d.ts +10 -0
- package/dist/commands/suggest.d.ts.map +1 -1
- package/dist/commands/suggest.js +180 -83
- package/dist/commands/triage.d.ts +35 -0
- package/dist/commands/triage.d.ts.map +1 -1
- package/dist/commands/triage.js +207 -82
- package/dist/commands/upload.d.ts +9 -0
- package/dist/commands/upload.d.ts.map +1 -1
- package/dist/commands/upload.js +140 -101
- package/dist/commands/verify.d.ts +13 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +118 -0
- package/dist/config/schema.d.ts +4 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +127 -991
- package/dist/interactive/fix-wizard.d.ts +3 -0
- package/dist/interactive/fix-wizard.d.ts.map +1 -1
- package/dist/interactive/fix-wizard.js +130 -112
- package/dist/interactive/init-wizard.d.ts +3 -1
- package/dist/interactive/init-wizard.d.ts.map +1 -1
- package/dist/interactive/init-wizard.js +207 -138
- package/dist/interactive/prompts.d.ts +7 -3
- package/dist/interactive/prompts.d.ts.map +1 -1
- package/dist/interactive/prompts.js +44 -23
- package/dist/output/envelope.d.ts +9 -0
- package/dist/output/envelope.d.ts.map +1 -1
- package/dist/output/envelope.js +37 -3
- package/dist/output/factory.d.ts +2 -1
- package/dist/output/factory.d.ts.map +1 -1
- package/dist/output/html.d.ts +2 -1
- package/dist/output/html.d.ts.map +1 -1
- package/dist/output/html.js +3 -2
- package/dist/output/human.d.ts +2 -1
- package/dist/output/human.d.ts.map +1 -1
- package/dist/output/human.js +3 -2
- package/dist/output/json.d.ts +2 -1
- package/dist/output/json.d.ts.map +1 -1
- package/dist/output/junit.d.ts +2 -1
- package/dist/output/junit.d.ts.map +1 -1
- package/dist/output/sarif.d.ts +2 -1
- package/dist/output/sarif.d.ts.map +1 -1
- package/dist/policy/schema.d.ts +137 -0
- package/dist/policy/schema.d.ts.map +1 -1
- package/dist/policy/schema.js +107 -0
- package/dist/prompts/command-catalog.js +9 -9
- package/dist/types.d.ts +74 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/ui/banner.d.ts +34 -0
- package/dist/ui/banner.d.ts.map +1 -1
- package/dist/ui/banner.js +97 -5
- package/dist/ui/diagnostics.d.ts +9 -4
- package/dist/ui/diagnostics.d.ts.map +1 -1
- package/dist/ui/diagnostics.js +32 -82
- package/dist/ui/strings.d.ts +373 -0
- package/dist/ui/strings.d.ts.map +1 -0
- package/dist/ui/strings.js +499 -0
- package/dist/ui/table.d.ts +0 -2
- package/dist/ui/table.d.ts.map +1 -1
- package/dist/ui/table.js +3 -4
- package/dist/utils/api-client.d.ts +46 -0
- package/dist/utils/api-client.d.ts.map +1 -0
- package/dist/utils/api-client.js +170 -0
- package/dist/utils/client.d.ts +29 -18
- package/dist/utils/client.d.ts.map +1 -1
- package/dist/utils/client.js +104 -12
- package/dist/utils/formatters.d.ts +38 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/formatters.js +277 -0
- package/dist/utils/root-args.d.ts +12 -0
- package/dist/utils/root-args.d.ts.map +1 -0
- package/dist/utils/root-args.js +44 -0
- package/dist/utils/stdin.d.ts +7 -0
- package/dist/utils/stdin.d.ts.map +1 -1
- package/dist/utils/stdin.js +32 -2
- package/dist/utils/url-classify.d.ts.map +1 -1
- package/dist/utils/url-classify.js +24 -3
- package/node_modules/@vertaaux/tui/dist/index.cjs +1216 -27
- package/node_modules/@vertaaux/tui/dist/index.cjs.map +1 -1
- package/node_modules/@vertaaux/tui/dist/index.d.cts +361 -4
- package/node_modules/@vertaaux/tui/dist/index.d.ts +361 -4
- package/node_modules/@vertaaux/tui/dist/index.js +1189 -27
- package/node_modules/@vertaaux/tui/dist/index.js.map +1 -1
- package/node_modules/@vertaaux/tui/package.json +2 -3
- package/node_modules/chalk/license +9 -0
- package/node_modules/chalk/package.json +83 -0
- package/node_modules/chalk/readme.md +297 -0
- package/node_modules/chalk/source/index.d.ts +325 -0
- package/node_modules/chalk/source/index.js +225 -0
- package/node_modules/chalk/source/utilities.js +33 -0
- package/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +236 -0
- package/node_modules/chalk/source/vendor/ansi-styles/index.js +223 -0
- package/node_modules/chalk/source/vendor/supports-color/browser.d.ts +1 -0
- package/node_modules/chalk/source/vendor/supports-color/browser.js +34 -0
- package/node_modules/chalk/source/vendor/supports-color/index.d.ts +55 -0
- package/node_modules/chalk/source/vendor/supports-color/index.js +190 -0
- package/package.json +20 -5
- package/dist/commands/client.d.ts +0 -14
- package/dist/commands/client.d.ts.map +0 -1
- package/dist/commands/client.js +0 -362
- package/dist/commands/drift.d.ts +0 -15
- package/dist/commands/drift.d.ts.map +0 -1
- package/dist/commands/drift.js +0 -309
- package/dist/commands/protect.d.ts +0 -16
- package/dist/commands/protect.d.ts.map +0 -1
- package/dist/commands/protect.js +0 -323
- package/dist/commands/report.d.ts +0 -15
- package/dist/commands/report.d.ts.map +0 -1
- package/dist/commands/report.js +0 -214
- package/dist/policy/sync.d.ts +0 -67
- package/dist/policy/sync.d.ts.map +0 -1
- package/dist/policy/sync.js +0 -147
package/dist/ui/banner.js
CHANGED
|
@@ -3,10 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Displays a compact arrow wedge in teal/mint gradient.
|
|
5
5
|
* Can be suppressed via --quiet, --no-banner, or non-TTY environments.
|
|
6
|
+
*
|
|
7
|
+
* animateBanner() plays a 3-frame entrance animation in TTY+color mode:
|
|
8
|
+
* Frame 1: dim ghost outline (75ms)
|
|
9
|
+
* Frame 2: normal teal/mint colors (75ms)
|
|
10
|
+
* Frame 3: full lime→cyan gradient (100ms hold)
|
|
11
|
+
* Falls back to static showBanner() when --no-color, NO_COLOR, TERM=dumb,
|
|
12
|
+
* or non-TTY.
|
|
6
13
|
*/
|
|
7
|
-
import
|
|
14
|
+
import { colorize, bold, dim, applyGradient, isColorEnabled, isTTY, supportsUnicode, cursor, screen, physicalRows, } from "@vertaaux/tui";
|
|
8
15
|
import { createRequire } from "module";
|
|
9
|
-
import {
|
|
16
|
+
import { shouldUseColor } from "../utils/detect-env.js";
|
|
10
17
|
// For JSON imports in ESM
|
|
11
18
|
const require = createRequire(import.meta.url);
|
|
12
19
|
// Arrow-mark ASCII art (compact 5-line wedge matching brand)
|
|
@@ -19,6 +26,90 @@ const ARROW_MARK = [
|
|
|
19
26
|
];
|
|
20
27
|
const TEAL = "#5EE4C4";
|
|
21
28
|
const MINT = "#90EECE";
|
|
29
|
+
/** Simple sleep helper for animation timing */
|
|
30
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
31
|
+
// ── Frame builders (exported for testability) ────────────────────
|
|
32
|
+
/**
|
|
33
|
+
* Frame 1: ghost/dim outline — all lines wrapped in dim().
|
|
34
|
+
* Structure: 5 content lines + "\n\n"
|
|
35
|
+
*/
|
|
36
|
+
export function buildFrame1(version, cwd) {
|
|
37
|
+
const lines = [
|
|
38
|
+
`${dim(ARROW_MARK[0])} ${dim(`VertaaUX v${version}`)}`,
|
|
39
|
+
`${dim(ARROW_MARK[1])} ${dim(cwd)}`,
|
|
40
|
+
`${dim(ARROW_MARK[2])}`,
|
|
41
|
+
`${dim(ARROW_MARK[3])}`,
|
|
42
|
+
`${dim(ARROW_MARK[4])}`,
|
|
43
|
+
];
|
|
44
|
+
return lines.join("\n") + "\n\n";
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Frame 2: normal colors — identical to current showBanner() color branch.
|
|
48
|
+
* TEAL art, MINT bold VertaaUX, dim cwd.
|
|
49
|
+
* Structure: 5 content lines + "\n\n"
|
|
50
|
+
*/
|
|
51
|
+
export function buildFrame2(version, cwd) {
|
|
52
|
+
const logo = ARROW_MARK.map((line) => colorize(line, TEAL));
|
|
53
|
+
const lines = [
|
|
54
|
+
`${logo[0]} ${bold(colorize("VertaaUX", MINT))} v${version}`,
|
|
55
|
+
`${logo[1]} ${dim(cwd)}`,
|
|
56
|
+
`${logo[2]}`,
|
|
57
|
+
`${logo[3]}`,
|
|
58
|
+
`${logo[4]}`,
|
|
59
|
+
];
|
|
60
|
+
return lines.join("\n") + "\n\n";
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Frame 3: full gradient — ARROW_MARK + "VertaaUX" with applyGradient(), dim cwd.
|
|
64
|
+
* Structure: 5 content lines + "\n\n"
|
|
65
|
+
*/
|
|
66
|
+
export function buildFrame3(version, cwd) {
|
|
67
|
+
const logo = ARROW_MARK.map((line) => applyGradient(line));
|
|
68
|
+
const lines = [
|
|
69
|
+
`${logo[0]} ${bold(applyGradient("VertaaUX"))} v${version}`,
|
|
70
|
+
`${logo[1]} ${dim(cwd)}`,
|
|
71
|
+
`${logo[2]}`,
|
|
72
|
+
`${logo[3]}`,
|
|
73
|
+
`${logo[4]}`,
|
|
74
|
+
];
|
|
75
|
+
return lines.join("\n") + "\n\n";
|
|
76
|
+
}
|
|
77
|
+
// ── Animated banner ──────────────────────────────────────────────
|
|
78
|
+
/**
|
|
79
|
+
* Show the arrow-mark banner with a 3-frame entrance animation.
|
|
80
|
+
*
|
|
81
|
+
* Animation plays only in TTY + color + unicode environments.
|
|
82
|
+
* Falls back to static showBanner() otherwise.
|
|
83
|
+
*
|
|
84
|
+
* All output goes to process.stderr (stdout reserved for --format json).
|
|
85
|
+
*
|
|
86
|
+
* @param options - Banner display options
|
|
87
|
+
*/
|
|
88
|
+
export async function animateBanner(options) {
|
|
89
|
+
const { version, quiet = false, noBanner = false } = options;
|
|
90
|
+
// Static fallback: suppressed modes, non-TTY, no-color, dumb terminal
|
|
91
|
+
if (quiet || noBanner || !isTTY() || !isColorEnabled() || !supportsUnicode()) {
|
|
92
|
+
showBanner(options);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const cwd = process.cwd();
|
|
96
|
+
const termWidth = process.stderr.columns || 80;
|
|
97
|
+
// Frame 1: dim ghost
|
|
98
|
+
const f1 = buildFrame1(version, cwd);
|
|
99
|
+
process.stderr.write(f1);
|
|
100
|
+
await sleep(75);
|
|
101
|
+
// Frame 2: normal colors (overwrite in-place)
|
|
102
|
+
const rows1 = physicalRows(f1, termWidth);
|
|
103
|
+
const f2 = buildFrame2(version, cwd);
|
|
104
|
+
process.stderr.write(cursor.up(rows1) + screen.clearDown + f2);
|
|
105
|
+
await sleep(75);
|
|
106
|
+
// Frame 3: full gradient (overwrite in-place, hold 100ms)
|
|
107
|
+
const rows2 = physicalRows(f2, termWidth);
|
|
108
|
+
const f3 = buildFrame3(version, cwd);
|
|
109
|
+
process.stderr.write(cursor.up(rows2) + screen.clearDown + f3);
|
|
110
|
+
await sleep(100);
|
|
111
|
+
}
|
|
112
|
+
// ── Static banner ────────────────────────────────────────────────
|
|
22
113
|
/**
|
|
23
114
|
* Show the arrow-mark banner with version and working directory.
|
|
24
115
|
*
|
|
@@ -38,10 +129,10 @@ export function showBanner(options) {
|
|
|
38
129
|
const useColor = shouldUseColor();
|
|
39
130
|
const cwd = process.cwd();
|
|
40
131
|
if (useColor) {
|
|
41
|
-
const logo = ARROW_MARK.map((line) =>
|
|
132
|
+
const logo = ARROW_MARK.map((line) => colorize(line, TEAL));
|
|
42
133
|
const lines = [
|
|
43
|
-
`${logo[0]} ${
|
|
44
|
-
`${logo[1]} ${
|
|
134
|
+
`${logo[0]} ${bold(colorize("VertaaUX", MINT))} v${version}`,
|
|
135
|
+
`${logo[1]} ${dim(cwd)}`,
|
|
45
136
|
`${logo[2]}`,
|
|
46
137
|
`${logo[3]}`,
|
|
47
138
|
`${logo[4]}`,
|
|
@@ -59,6 +150,7 @@ export function showBanner(options) {
|
|
|
59
150
|
process.stderr.write(lines.join("\n") + "\n\n");
|
|
60
151
|
}
|
|
61
152
|
}
|
|
153
|
+
// ── Version helper ───────────────────────────────────────────────
|
|
62
154
|
/**
|
|
63
155
|
* Get version from package.json.
|
|
64
156
|
* Falls back to "0.0.0" if unable to read.
|
package/dist/ui/diagnostics.d.ts
CHANGED
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Integrates with Commander's configureOutput({ outputError }) hook
|
|
8
8
|
* to intercept and restyle all validation and argument errors.
|
|
9
|
+
*
|
|
10
|
+
* Delegates to renderError/renderWarning from @vertaaux/tui for
|
|
11
|
+
* consistent branded output across all error surfaces.
|
|
9
12
|
*/
|
|
10
13
|
export interface ValidationErrorOptions {
|
|
11
14
|
flag: string;
|
|
@@ -19,8 +22,10 @@ export interface ValidationErrorOptions {
|
|
|
19
22
|
/**
|
|
20
23
|
* Format a validation error with branded styling.
|
|
21
24
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
25
|
+
* Delegates to renderError() from @vertaaux/tui for the box border,
|
|
26
|
+
* then appends flag/value details as context lines.
|
|
27
|
+
*
|
|
28
|
+
* Plain mode is evaluated at call time (isPlainMode() inside renderError).
|
|
24
29
|
*/
|
|
25
30
|
export declare function formatValidationError(opts: ValidationErrorOptions): string;
|
|
26
31
|
/**
|
|
@@ -28,12 +33,12 @@ export declare function formatValidationError(opts: ValidationErrorOptions): str
|
|
|
28
33
|
*
|
|
29
34
|
* Commander passes raw error strings to configureOutput({ outputError }).
|
|
30
35
|
* This function parses them to extract flag/value information and applies
|
|
31
|
-
* branded formatting.
|
|
36
|
+
* branded formatting via renderError().
|
|
32
37
|
*
|
|
33
38
|
* InvalidArgumentError pattern:
|
|
34
39
|
* "error: option '--flag <arg>' argument 'value' is invalid. Detail"
|
|
35
40
|
*
|
|
36
|
-
* Other Commander errors (missing required, etc.) get
|
|
41
|
+
* Other Commander errors (missing required, etc.) get renderError treatment.
|
|
37
42
|
*/
|
|
38
43
|
export declare function formatCommanderError(rawMessage: string): string;
|
|
39
44
|
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/ui/diagnostics.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/ui/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA8BH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAgC1E;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAsC/D"}
|
package/dist/ui/diagnostics.js
CHANGED
|
@@ -6,96 +6,54 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Integrates with Commander's configureOutput({ outputError }) hook
|
|
8
8
|
* to intercept and restyle all validation and argument errors.
|
|
9
|
+
*
|
|
10
|
+
* Delegates to renderError/renderWarning from @vertaaux/tui for
|
|
11
|
+
* consistent branded output across all error surfaces.
|
|
9
12
|
*/
|
|
10
|
-
import
|
|
11
|
-
import { shouldUseColor, isTTY, getTerminalWidth, } from "../utils/detect-env.js";
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
|
-
// Brand colors (matching banner.ts gradient)
|
|
14
|
-
// ---------------------------------------------------------------------------
|
|
15
|
-
const BRAND_ACCENT = "#78FFB4"; // Lime
|
|
16
|
-
const ERROR_COLOR = "#FF6B6B"; // Red
|
|
17
|
-
const HINT_COLOR = "#78FFB4"; // Brand lime for hints/suggestions
|
|
13
|
+
import { dim, isPlainMode, renderError, } from "@vertaaux/tui";
|
|
18
14
|
// ---------------------------------------------------------------------------
|
|
19
15
|
// Terminal capability detection
|
|
20
16
|
// ---------------------------------------------------------------------------
|
|
21
17
|
/**
|
|
22
18
|
* Determine if box-drawing characters and colors can be used.
|
|
23
|
-
* Returns false
|
|
19
|
+
* Returns false in plain mode (ASCII-only output).
|
|
24
20
|
*/
|
|
25
21
|
function canUseBoxDrawing() {
|
|
26
|
-
|
|
27
|
-
return false;
|
|
28
|
-
if (!shouldUseColor())
|
|
29
|
-
return false;
|
|
30
|
-
if (!isTTY())
|
|
31
|
-
return false;
|
|
32
|
-
return true;
|
|
22
|
+
return !isPlainMode();
|
|
33
23
|
}
|
|
34
24
|
/**
|
|
35
25
|
* Format a validation error with branded styling.
|
|
36
26
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
27
|
+
* Delegates to renderError() from @vertaaux/tui for the box border,
|
|
28
|
+
* then appends flag/value details as context lines.
|
|
29
|
+
*
|
|
30
|
+
* Plain mode is evaluated at call time (isPlainMode() inside renderError).
|
|
39
31
|
*/
|
|
40
32
|
export function formatValidationError(opts) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Rich box-drawn error frame for TTY terminals with color support.
|
|
48
|
-
*/
|
|
49
|
-
function boxDrawnError(opts) {
|
|
50
|
-
const width = Math.min(getTerminalWidth(), 72);
|
|
51
|
-
const prefix = chalk.hex(BRAND_ACCENT).bold("vertaa");
|
|
52
|
-
const border = chalk.dim(" " + "\u2500".repeat(width - 4));
|
|
53
|
-
const pipe = chalk.dim(" \u2502");
|
|
54
|
-
const lines = [
|
|
55
|
-
`${prefix} ${chalk.hex(ERROR_COLOR).bold("error")}: ${opts.message}`,
|
|
56
|
-
border,
|
|
57
|
-
`${pipe} ${chalk.dim("flag:")} --${opts.flag}`,
|
|
58
|
-
`${pipe} ${chalk.dim("value:")} ${chalk.yellow(opts.value)}`,
|
|
33
|
+
// Build a rich context string with flag + value details
|
|
34
|
+
const contextParts = [
|
|
35
|
+
`flag: --${opts.flag}`,
|
|
36
|
+
`value: ${opts.value}`,
|
|
59
37
|
];
|
|
60
38
|
if (opts.suggestion) {
|
|
61
|
-
|
|
62
|
-
lines.push(`${pipe} ${chalk.hex(HINT_COLOR)("hint:")} Did you mean "${opts.suggestion}"?`);
|
|
39
|
+
contextParts.push(`hint: Did you mean "${opts.suggestion}"?`);
|
|
63
40
|
}
|
|
64
41
|
if (opts.validValues && opts.validValues.length > 0) {
|
|
65
|
-
|
|
42
|
+
contextParts.push(`valid: ${opts.validValues.join(", ")}`);
|
|
66
43
|
}
|
|
67
44
|
if (opts.hint) {
|
|
68
|
-
|
|
69
|
-
lines.push(`${pipe} ${chalk.dim(opts.hint)}`);
|
|
45
|
+
contextParts.push(opts.hint);
|
|
70
46
|
}
|
|
71
|
-
|
|
47
|
+
const context = contextParts.join("\n");
|
|
48
|
+
const base = renderError({
|
|
49
|
+
message: opts.message,
|
|
50
|
+
context,
|
|
51
|
+
suggestion: "vertaa <command> --help for all options",
|
|
52
|
+
});
|
|
72
53
|
if (opts.moreIssues && opts.moreIssues > 0) {
|
|
73
|
-
|
|
54
|
+
return base + "\n" + dim(` ...and ${opts.moreIssues} more issues`);
|
|
74
55
|
}
|
|
75
|
-
return
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Plain text error for non-TTY, NO_COLOR, CI, or TERM=dumb environments.
|
|
79
|
-
*/
|
|
80
|
-
function plainTextError(opts) {
|
|
81
|
-
const lines = [
|
|
82
|
-
`error: ${opts.message}`,
|
|
83
|
-
` flag: --${opts.flag}`,
|
|
84
|
-
` value: ${opts.value}`,
|
|
85
|
-
];
|
|
86
|
-
if (opts.suggestion) {
|
|
87
|
-
lines.push(` hint: Did you mean "${opts.suggestion}"?`);
|
|
88
|
-
}
|
|
89
|
-
if (opts.validValues && opts.validValues.length > 0) {
|
|
90
|
-
lines.push(` valid: ${opts.validValues.join(", ")}`);
|
|
91
|
-
}
|
|
92
|
-
if (opts.hint) {
|
|
93
|
-
lines.push(` ${opts.hint}`);
|
|
94
|
-
}
|
|
95
|
-
if (opts.moreIssues && opts.moreIssues > 0) {
|
|
96
|
-
lines.push(` ...and ${opts.moreIssues} more issues`);
|
|
97
|
-
}
|
|
98
|
-
return lines.join("\n");
|
|
56
|
+
return base;
|
|
99
57
|
}
|
|
100
58
|
// ---------------------------------------------------------------------------
|
|
101
59
|
// Commander error formatting
|
|
@@ -105,12 +63,12 @@ function plainTextError(opts) {
|
|
|
105
63
|
*
|
|
106
64
|
* Commander passes raw error strings to configureOutput({ outputError }).
|
|
107
65
|
* This function parses them to extract flag/value information and applies
|
|
108
|
-
* branded formatting.
|
|
66
|
+
* branded formatting via renderError().
|
|
109
67
|
*
|
|
110
68
|
* InvalidArgumentError pattern:
|
|
111
69
|
* "error: option '--flag <arg>' argument 'value' is invalid. Detail"
|
|
112
70
|
*
|
|
113
|
-
* Other Commander errors (missing required, etc.) get
|
|
71
|
+
* Other Commander errors (missing required, etc.) get renderError treatment.
|
|
114
72
|
*/
|
|
115
73
|
export function formatCommanderError(rawMessage) {
|
|
116
74
|
// Strip leading "error: " prefix that Commander adds
|
|
@@ -137,17 +95,9 @@ export function formatCommanderError(rawMessage) {
|
|
|
137
95
|
hint: "Run vertaa <command> --help for all options",
|
|
138
96
|
});
|
|
139
97
|
}
|
|
140
|
-
// For other Commander errors:
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
`${prefix} ${errorLabel}: ${msg}`,
|
|
146
|
-
chalk.dim(" Run vertaa <command> --help for all options"),
|
|
147
|
-
].join("\n");
|
|
148
|
-
}
|
|
149
|
-
return [
|
|
150
|
-
`vertaa error: ${msg}`,
|
|
151
|
-
" Run vertaa <command> --help for all options",
|
|
152
|
-
].join("\n");
|
|
98
|
+
// For other Commander errors: use renderError with a help suggestion
|
|
99
|
+
return renderError({
|
|
100
|
+
message: msg,
|
|
101
|
+
suggestion: "vertaa <command> --help for all options",
|
|
102
|
+
});
|
|
153
103
|
}
|