@opendatalabs/connect 0.8.1 → 0.9.0
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 +58 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +15 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/index.d.ts +89 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +3844 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +10 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/mcp-server.d.ts +15 -0
- package/dist/cli/mcp-server.d.ts.map +1 -0
- package/dist/cli/mcp-server.js +199 -0
- package/dist/cli/mcp-server.js.map +1 -0
- package/dist/cli/queries.d.ts +128 -0
- package/dist/cli/queries.d.ts.map +1 -0
- package/dist/cli/queries.js +415 -0
- package/dist/cli/queries.js.map +1 -0
- package/dist/cli/render/capabilities.d.ts +9 -0
- package/dist/cli/render/capabilities.d.ts.map +1 -0
- package/dist/cli/render/capabilities.js +24 -0
- package/dist/cli/render/capabilities.js.map +1 -0
- package/dist/cli/render/connect-renderer.d.ts +18 -0
- package/dist/cli/render/connect-renderer.d.ts.map +1 -0
- package/dist/cli/render/connect-renderer.js +255 -0
- package/dist/cli/render/connect-renderer.js.map +1 -0
- package/dist/cli/render/format.d.ts +27 -0
- package/dist/cli/render/format.d.ts.map +1 -0
- package/dist/cli/render/format.js +111 -0
- package/dist/cli/render/format.js.map +1 -0
- package/dist/cli/render/index.d.ts +7 -0
- package/dist/cli/render/index.d.ts.map +1 -0
- package/dist/cli/render/index.js +7 -0
- package/dist/cli/render/index.js.map +1 -0
- package/dist/cli/render/progress.d.ts +11 -0
- package/dist/cli/render/progress.d.ts.map +1 -0
- package/dist/cli/render/progress.js +56 -0
- package/dist/cli/render/progress.js.map +1 -0
- package/dist/cli/render/symbols.d.ts +11 -0
- package/dist/cli/render/symbols.d.ts.map +1 -0
- package/dist/cli/render/symbols.js +21 -0
- package/dist/cli/render/symbols.js.map +1 -0
- package/dist/cli/render/theme.d.ts +15 -0
- package/dist/cli/render/theme.d.ts.map +1 -0
- package/dist/cli/render/theme.js +41 -0
- package/dist/cli/render/theme.js.map +1 -0
- package/dist/cli/search-select.d.ts +17 -0
- package/dist/cli/search-select.d.ts.map +1 -0
- package/dist/cli/search-select.js +29 -0
- package/dist/cli/search-select.js.map +1 -0
- package/dist/cli/update-check-worker.d.ts +2 -0
- package/dist/cli/update-check-worker.d.ts.map +1 -0
- package/dist/cli/update-check-worker.js +55 -0
- package/dist/cli/update-check-worker.js.map +1 -0
- package/dist/cli/update-check.d.ts +21 -0
- package/dist/cli/update-check.d.ts.map +1 -0
- package/dist/cli/update-check.js +52 -0
- package/dist/cli/update-check.js.map +1 -0
- package/dist/connectors/index.d.ts +2 -0
- package/dist/connectors/index.d.ts.map +1 -0
- package/dist/connectors/index.js +2 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors/registry.d.ts +55 -0
- package/dist/connectors/registry.d.ts.map +1 -0
- package/dist/connectors/registry.js +298 -0
- package/dist/connectors/registry.js.map +1 -0
- package/dist/core/cli-types.d.ts +692 -0
- package/dist/core/cli-types.d.ts.map +1 -0
- package/dist/core/cli-types.js +322 -0
- package/dist/core/cli-types.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/paths.d.ts +28 -0
- package/dist/core/paths.d.ts.map +1 -0
- package/dist/core/paths.js +89 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/state-store.d.ts +39 -0
- package/dist/core/state-store.d.ts.map +1 -0
- package/dist/core/state-store.js +101 -0
- package/dist/core/state-store.js.map +1 -0
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/personal-server/client.d.ts +34 -0
- package/dist/personal-server/client.d.ts.map +1 -0
- package/dist/personal-server/client.js +94 -0
- package/dist/personal-server/client.js.map +1 -0
- package/dist/personal-server/index.d.ts +18 -0
- package/dist/personal-server/index.d.ts.map +1 -0
- package/dist/personal-server/index.js +123 -0
- package/dist/personal-server/index.js.map +1 -0
- package/dist/personal-server/scope-resolver.d.ts +22 -0
- package/dist/personal-server/scope-resolver.d.ts.map +1 -0
- package/dist/personal-server/scope-resolver.js +68 -0
- package/dist/personal-server/scope-resolver.js.map +1 -0
- package/dist/runtime/core/contracts.d.ts +84 -0
- package/dist/runtime/core/contracts.d.ts.map +1 -0
- package/dist/runtime/core/contracts.js +2 -0
- package/dist/runtime/core/contracts.js.map +1 -0
- package/dist/runtime/core/index.d.ts +2 -0
- package/dist/runtime/core/index.d.ts.map +1 -0
- package/dist/runtime/core/index.js +2 -0
- package/dist/runtime/core/index.js.map +1 -0
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +3 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/managed-playwright.d.ts +42 -0
- package/dist/runtime/managed-playwright.d.ts.map +1 -0
- package/dist/runtime/managed-playwright.js +178 -0
- package/dist/runtime/managed-playwright.js.map +1 -0
- package/dist/runtime/playwright/browser.d.ts +12 -0
- package/dist/runtime/playwright/browser.d.ts.map +1 -0
- package/dist/runtime/playwright/browser.js +229 -0
- package/dist/runtime/playwright/browser.js.map +1 -0
- package/dist/runtime/playwright/in-process-run.d.ts +6 -0
- package/dist/runtime/playwright/in-process-run.d.ts.map +1 -0
- package/dist/runtime/playwright/in-process-run.js +628 -0
- package/dist/runtime/playwright/in-process-run.js.map +1 -0
- package/dist/runtime/playwright/index.d.ts +3 -0
- package/dist/runtime/playwright/index.d.ts.map +1 -0
- package/dist/runtime/playwright/index.js +3 -0
- package/dist/runtime/playwright/index.js.map +1 -0
- package/dist/runtime/repo-paths.d.ts +2 -0
- package/dist/runtime/repo-paths.d.ts.map +1 -0
- package/dist/runtime/repo-paths.js +36 -0
- package/dist/runtime/repo-paths.js.map +1 -0
- package/dist/server/config.d.ts +2 -0
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +1 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/connect.d.ts.map +1 -1
- package/dist/server/connect.js +4 -0
- package/dist/server/connect.js.map +1 -1
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +3 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/paths.d.ts +33 -0
- package/dist/skills/paths.d.ts.map +1 -0
- package/dist/skills/paths.js +81 -0
- package/dist/skills/paths.js.map +1 -0
- package/dist/skills/registry.d.ts +48 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +173 -0
- package/dist/skills/registry.js.map +1 -0
- package/package.json +51 -4
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { detectRenderCapabilities } from "./capabilities.js";
|
|
2
|
+
// Vana accent blue
|
|
3
|
+
const ACCENT = [65, 65, 252];
|
|
4
|
+
const ERROR = [231, 0, 11];
|
|
5
|
+
export function createConnectRenderer() {
|
|
6
|
+
const capabilities = detectRenderCapabilities();
|
|
7
|
+
const canAnimate = capabilities.interactive;
|
|
8
|
+
const useColor = capabilities.color;
|
|
9
|
+
// Smooth double-beat with dark pause between cycles
|
|
10
|
+
// dark -> · -> ✧ -> ✦ (first beat) -> ✧ -> · -> ✧ -> ✦ (second beat, holds) -> ✧ -> · -> dark
|
|
11
|
+
const SPINNER_FRAMES = [
|
|
12
|
+
{ char: " ", duration: 180, dim: true },
|
|
13
|
+
{ char: "\u00B7", duration: 150, dim: true },
|
|
14
|
+
{ char: "\u2727", duration: 120, dim: false },
|
|
15
|
+
{ char: "\u2726", duration: 200, dim: false },
|
|
16
|
+
{ char: "\u2727", duration: 100, dim: false },
|
|
17
|
+
{ char: "\u00B7", duration: 80, dim: true },
|
|
18
|
+
{ char: "\u2727", duration: 120, dim: false },
|
|
19
|
+
{ char: "\u2726", duration: 500, dim: false },
|
|
20
|
+
{ char: "\u2727", duration: 120, dim: false },
|
|
21
|
+
{ char: "\u00B7", duration: 150, dim: true },
|
|
22
|
+
{ char: " ", duration: 120, dim: true },
|
|
23
|
+
];
|
|
24
|
+
let titleText = "";
|
|
25
|
+
const scopes = [];
|
|
26
|
+
let successMessage = "";
|
|
27
|
+
const detailLines = [];
|
|
28
|
+
let spinnerFrameIndex = 0;
|
|
29
|
+
let spinnerElapsed = 0;
|
|
30
|
+
let spinnerInterval = null;
|
|
31
|
+
let lastRenderedLineCount = 0;
|
|
32
|
+
let isComplete = false;
|
|
33
|
+
let isFailure = false;
|
|
34
|
+
function rgb(r, g, b, text) {
|
|
35
|
+
if (!useColor)
|
|
36
|
+
return text;
|
|
37
|
+
return `\x1b[38;2;${r};${g};${b}m${text}\x1b[39m`;
|
|
38
|
+
}
|
|
39
|
+
function dim(text) {
|
|
40
|
+
return useColor ? `\x1b[2m${text}\x1b[22m` : text;
|
|
41
|
+
}
|
|
42
|
+
function bold(text) {
|
|
43
|
+
return useColor ? `\x1b[1m${text}\x1b[22m` : text;
|
|
44
|
+
}
|
|
45
|
+
function renderSpinnerChar() {
|
|
46
|
+
const frame = SPINNER_FRAMES[spinnerFrameIndex];
|
|
47
|
+
const char = frame.dim
|
|
48
|
+
? dim(rgb(...ACCENT, frame.char))
|
|
49
|
+
: rgb(...ACCENT, frame.char);
|
|
50
|
+
return char;
|
|
51
|
+
}
|
|
52
|
+
function renderLine(scope) {
|
|
53
|
+
if (scope.state === "done") {
|
|
54
|
+
const check = rgb(...ACCENT, "\u2713");
|
|
55
|
+
const detail = scope.detail ? ` ${dim(`\u2014 ${scope.detail}`)}` : "";
|
|
56
|
+
return ` ${check} ${scope.name}${detail}`;
|
|
57
|
+
}
|
|
58
|
+
if (scope.state === "failed") {
|
|
59
|
+
const x = rgb(...ERROR, "\u2717");
|
|
60
|
+
const detail = scope.detail ? ` ${dim(`\u2014 ${scope.detail}`)}` : "";
|
|
61
|
+
return ` ${x} ${scope.name}${detail}`;
|
|
62
|
+
}
|
|
63
|
+
// active
|
|
64
|
+
const spinner = renderSpinnerChar();
|
|
65
|
+
return ` ${spinner} ${scope.name}`;
|
|
66
|
+
}
|
|
67
|
+
function render() {
|
|
68
|
+
const lines = [];
|
|
69
|
+
// Title
|
|
70
|
+
lines.push(` ${bold(titleText)}`);
|
|
71
|
+
lines.push("");
|
|
72
|
+
// Scope lines
|
|
73
|
+
for (const scope of scopes) {
|
|
74
|
+
lines.push(renderLine(scope));
|
|
75
|
+
}
|
|
76
|
+
// If complete, show success/failure + details
|
|
77
|
+
if (isComplete && successMessage) {
|
|
78
|
+
lines.push("");
|
|
79
|
+
const prefix = isFailure
|
|
80
|
+
? rgb(...ERROR, "\u2717")
|
|
81
|
+
: rgb(...ACCENT, "\u2713");
|
|
82
|
+
lines.push(` ${prefix} ${bold(successMessage)}`);
|
|
83
|
+
for (const line of detailLines) {
|
|
84
|
+
lines.push(` ${dim(line)}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return lines.join("\n");
|
|
88
|
+
}
|
|
89
|
+
function paint() {
|
|
90
|
+
if (!canAnimate)
|
|
91
|
+
return;
|
|
92
|
+
// Clear previous render
|
|
93
|
+
if (lastRenderedLineCount > 0) {
|
|
94
|
+
process.stderr.write(`\x1b[${lastRenderedLineCount}A`);
|
|
95
|
+
for (let i = 0; i < lastRenderedLineCount; i++) {
|
|
96
|
+
process.stderr.write("\x1b[2K\n");
|
|
97
|
+
}
|
|
98
|
+
process.stderr.write(`\x1b[${lastRenderedLineCount}A`);
|
|
99
|
+
}
|
|
100
|
+
const output = render();
|
|
101
|
+
lastRenderedLineCount = output.split("\n").length;
|
|
102
|
+
process.stderr.write(output + "\n");
|
|
103
|
+
}
|
|
104
|
+
function startSpinner() {
|
|
105
|
+
if (!canAnimate || spinnerInterval)
|
|
106
|
+
return;
|
|
107
|
+
spinnerInterval = setInterval(() => {
|
|
108
|
+
spinnerElapsed += 30;
|
|
109
|
+
const frame = SPINNER_FRAMES[spinnerFrameIndex];
|
|
110
|
+
if (spinnerElapsed >= frame.duration) {
|
|
111
|
+
spinnerElapsed = 0;
|
|
112
|
+
spinnerFrameIndex = (spinnerFrameIndex + 1) % SPINNER_FRAMES.length;
|
|
113
|
+
}
|
|
114
|
+
paint();
|
|
115
|
+
}, 30);
|
|
116
|
+
}
|
|
117
|
+
function stopSpinner() {
|
|
118
|
+
if (spinnerInterval) {
|
|
119
|
+
clearInterval(spinnerInterval);
|
|
120
|
+
spinnerInterval = null;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
title(source) {
|
|
125
|
+
titleText = `Connect ${source}`;
|
|
126
|
+
if (!canAnimate) {
|
|
127
|
+
process.stderr.write(` ${bold(titleText)}\n\n`);
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
scopeActive(scope) {
|
|
131
|
+
// Don't add duplicate active scope
|
|
132
|
+
const existing = scopes.find((s) => s.name === scope && s.state === "active");
|
|
133
|
+
if (existing)
|
|
134
|
+
return;
|
|
135
|
+
// Auto-complete any previously active scopes
|
|
136
|
+
for (const s of scopes) {
|
|
137
|
+
if (s.state === "active") {
|
|
138
|
+
s.state = "done";
|
|
139
|
+
if (!canAnimate) {
|
|
140
|
+
const check = rgb(...ACCENT, "\u2713");
|
|
141
|
+
const detailStr = s.detail ? ` ${dim(`\u2014 ${s.detail}`)}` : "";
|
|
142
|
+
process.stderr.write(` ${check} ${s.name}${detailStr}\n`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Reset spinner for new scope
|
|
147
|
+
spinnerFrameIndex = 0;
|
|
148
|
+
spinnerElapsed = 0;
|
|
149
|
+
scopes.push({ name: scope, state: "active" });
|
|
150
|
+
startSpinner();
|
|
151
|
+
paint();
|
|
152
|
+
},
|
|
153
|
+
scopeDone(scope, detail) {
|
|
154
|
+
const existing = scopes.find((s) => s.name === scope && s.state === "active");
|
|
155
|
+
if (existing) {
|
|
156
|
+
existing.state = "done";
|
|
157
|
+
existing.detail = detail;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// Scope appeared and completed immediately
|
|
161
|
+
scopes.push({ name: scope, state: "done", detail });
|
|
162
|
+
}
|
|
163
|
+
// Reset spinner for next active scope
|
|
164
|
+
spinnerFrameIndex = 0;
|
|
165
|
+
spinnerElapsed = 0;
|
|
166
|
+
if (!canAnimate) {
|
|
167
|
+
const check = rgb(...ACCENT, "\u2713");
|
|
168
|
+
const detailStr = detail ? ` ${dim(`\u2014 ${detail}`)}` : "";
|
|
169
|
+
process.stderr.write(` ${check} ${scope}${detailStr}\n`);
|
|
170
|
+
}
|
|
171
|
+
paint();
|
|
172
|
+
},
|
|
173
|
+
scopeFailed(scope, error) {
|
|
174
|
+
const existing = scopes.find((s) => s.name === scope && s.state === "active");
|
|
175
|
+
if (existing) {
|
|
176
|
+
existing.state = "failed";
|
|
177
|
+
existing.detail = error;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
scopes.push({ name: scope, state: "failed", detail: error });
|
|
181
|
+
}
|
|
182
|
+
if (!canAnimate) {
|
|
183
|
+
const x = rgb(...ERROR, "\u2717");
|
|
184
|
+
const detailStr = error ? ` ${dim(`\u2014 ${error}`)}` : "";
|
|
185
|
+
process.stderr.write(` ${x} ${scope}${detailStr}\n`);
|
|
186
|
+
}
|
|
187
|
+
paint();
|
|
188
|
+
},
|
|
189
|
+
success(message) {
|
|
190
|
+
stopSpinner();
|
|
191
|
+
// Resolve any still-active scopes to done
|
|
192
|
+
for (const scope of scopes) {
|
|
193
|
+
if (scope.state === "active") {
|
|
194
|
+
scope.state = "done";
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
isComplete = true;
|
|
198
|
+
successMessage = message;
|
|
199
|
+
if (!canAnimate) {
|
|
200
|
+
const check = rgb(...ACCENT, "\u2713");
|
|
201
|
+
process.stderr.write(`\n ${check} ${bold(message)}\n`);
|
|
202
|
+
}
|
|
203
|
+
paint();
|
|
204
|
+
},
|
|
205
|
+
detail(message) {
|
|
206
|
+
detailLines.push(message);
|
|
207
|
+
if (!canAnimate) {
|
|
208
|
+
process.stderr.write(` ${dim(message)}\n`);
|
|
209
|
+
}
|
|
210
|
+
paint();
|
|
211
|
+
},
|
|
212
|
+
next(command) {
|
|
213
|
+
detailLines.push(`Next: ${command}`);
|
|
214
|
+
if (!canAnimate) {
|
|
215
|
+
process.stderr.write(` ${dim("Next:")} ${bold(command)}\n`);
|
|
216
|
+
}
|
|
217
|
+
paint();
|
|
218
|
+
},
|
|
219
|
+
fail(message) {
|
|
220
|
+
stopSpinner();
|
|
221
|
+
isFailure = true;
|
|
222
|
+
// Resolve any still-active scopes to failed
|
|
223
|
+
for (const scope of scopes) {
|
|
224
|
+
if (scope.state === "active") {
|
|
225
|
+
scope.state = "failed";
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
isComplete = true;
|
|
229
|
+
successMessage = message;
|
|
230
|
+
if (!canAnimate) {
|
|
231
|
+
const x = rgb(...ERROR, "\u2717");
|
|
232
|
+
process.stderr.write(`\n ${x} ${message}\n`);
|
|
233
|
+
}
|
|
234
|
+
paint();
|
|
235
|
+
},
|
|
236
|
+
bell() {
|
|
237
|
+
process.stderr.write("\x07");
|
|
238
|
+
},
|
|
239
|
+
cleanup() {
|
|
240
|
+
stopSpinner();
|
|
241
|
+
},
|
|
242
|
+
pauseForPrompt() {
|
|
243
|
+
stopSpinner();
|
|
244
|
+
// Final paint to show current state
|
|
245
|
+
paint();
|
|
246
|
+
process.stderr.write("\n");
|
|
247
|
+
},
|
|
248
|
+
resumeAfterPrompt() {
|
|
249
|
+
// Reset line count so next paint starts fresh below the prompt
|
|
250
|
+
lastRenderedLineCount = 0;
|
|
251
|
+
startSpinner();
|
|
252
|
+
},
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=connect-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-renderer.js","sourceRoot":"","sources":["../../../src/cli/render/connect-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type RenderCapabilities } from "./capabilities.js";
|
|
2
|
+
import { type RenderSymbols } from "./symbols.js";
|
|
3
|
+
import { type RenderTheme } from "./theme.js";
|
|
4
|
+
type Tone = "accent" | "success" | "warning" | "error" | "muted" | "info";
|
|
5
|
+
export interface HumanRenderer {
|
|
6
|
+
readonly capabilities: RenderCapabilities;
|
|
7
|
+
readonly symbols: RenderSymbols;
|
|
8
|
+
readonly theme: RenderTheme;
|
|
9
|
+
blank(): string;
|
|
10
|
+
title(text: string): string;
|
|
11
|
+
success(text: string): string;
|
|
12
|
+
section(text: string): string;
|
|
13
|
+
keyValue(label: string, value: string, tone?: Tone): string;
|
|
14
|
+
sourceTitle(name: string, badges?: string[]): string;
|
|
15
|
+
detail(text: string): string;
|
|
16
|
+
bullet(text: string): string;
|
|
17
|
+
badge(text: string, tone?: Tone): string;
|
|
18
|
+
}
|
|
19
|
+
export declare function createHumanRenderer(): HumanRenderer;
|
|
20
|
+
export declare function formatDisplayPath(filePath: string, homeDir?: string): string;
|
|
21
|
+
export declare function tableRow(columns: Array<{
|
|
22
|
+
text: string;
|
|
23
|
+
width: number;
|
|
24
|
+
}>): string;
|
|
25
|
+
export declare function formatRelativeTime(iso: string): string;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/cli/render/format.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3D,KAAK,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAG1E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,KAAK,IAAI,MAAM,CAAC;IAChB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC5D,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACrD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CAC1C;AAED,wBAAgB,mBAAmB,IAAI,aAAa,CA6CnD;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,SAAe,GACrB,MAAM,CAUR;AAED,wBAAgB,QAAQ,CACtB,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9C,MAAM,CAMR;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA4BtD"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { detectRenderCapabilities, } from "./capabilities.js";
|
|
4
|
+
import { createSymbols } from "./symbols.js";
|
|
5
|
+
import { createTheme } from "./theme.js";
|
|
6
|
+
const KEY_VALUE_LABEL_WIDTH = 14;
|
|
7
|
+
export function createHumanRenderer() {
|
|
8
|
+
const capabilities = detectRenderCapabilities();
|
|
9
|
+
const theme = createTheme(capabilities);
|
|
10
|
+
const symbols = createSymbols(capabilities);
|
|
11
|
+
return {
|
|
12
|
+
capabilities,
|
|
13
|
+
symbols,
|
|
14
|
+
theme,
|
|
15
|
+
blank() {
|
|
16
|
+
return "";
|
|
17
|
+
},
|
|
18
|
+
title(text) {
|
|
19
|
+
return theme.heading(text);
|
|
20
|
+
},
|
|
21
|
+
success(text) {
|
|
22
|
+
return `${theme.success(symbols.success)} ${theme.heading(text)}`;
|
|
23
|
+
},
|
|
24
|
+
section(text) {
|
|
25
|
+
return `${theme.heading(text)}`;
|
|
26
|
+
},
|
|
27
|
+
keyValue(label, value, tone = "muted") {
|
|
28
|
+
const rawLabel = `${label}:`;
|
|
29
|
+
const paddedLabel = rawLabel.length >= KEY_VALUE_LABEL_WIDTH
|
|
30
|
+
? rawLabel
|
|
31
|
+
: rawLabel.padEnd(KEY_VALUE_LABEL_WIDTH);
|
|
32
|
+
return ` ${theme.label(paddedLabel)} ${applyTone(theme, tone, value)}`;
|
|
33
|
+
},
|
|
34
|
+
sourceTitle(name, badges = []) {
|
|
35
|
+
if (badges.length === 0) {
|
|
36
|
+
return theme.heading(name);
|
|
37
|
+
}
|
|
38
|
+
return `${theme.heading(name)} ${badges.join(" ")}`;
|
|
39
|
+
},
|
|
40
|
+
detail(text) {
|
|
41
|
+
return ` ${theme.muted(text)}`;
|
|
42
|
+
},
|
|
43
|
+
bullet(text) {
|
|
44
|
+
return ` ${theme.muted(symbols.bullet)} ${text}`;
|
|
45
|
+
},
|
|
46
|
+
badge(text, tone = "muted") {
|
|
47
|
+
return applyTone(theme, tone, text);
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function formatDisplayPath(filePath, homeDir = os.homedir()) {
|
|
52
|
+
if (filePath === homeDir) {
|
|
53
|
+
return "~";
|
|
54
|
+
}
|
|
55
|
+
if (filePath.startsWith(`${homeDir}${path.sep}`)) {
|
|
56
|
+
return `~${filePath.slice(homeDir.length)}`;
|
|
57
|
+
}
|
|
58
|
+
return filePath;
|
|
59
|
+
}
|
|
60
|
+
export function tableRow(columns) {
|
|
61
|
+
return columns
|
|
62
|
+
.map((col) => col.text.length >= col.width ? col.text : col.text.padEnd(col.width))
|
|
63
|
+
.join(" ");
|
|
64
|
+
}
|
|
65
|
+
export function formatRelativeTime(iso) {
|
|
66
|
+
const now = Date.now();
|
|
67
|
+
const then = new Date(iso).getTime();
|
|
68
|
+
if (Number.isNaN(then)) {
|
|
69
|
+
return iso;
|
|
70
|
+
}
|
|
71
|
+
const diffMs = now - then;
|
|
72
|
+
if (diffMs < 0) {
|
|
73
|
+
return "just now";
|
|
74
|
+
}
|
|
75
|
+
const seconds = Math.floor(diffMs / 1000);
|
|
76
|
+
if (seconds < 60) {
|
|
77
|
+
return "just now";
|
|
78
|
+
}
|
|
79
|
+
const minutes = Math.floor(seconds / 60);
|
|
80
|
+
if (minutes < 60) {
|
|
81
|
+
return `${minutes}m ago`;
|
|
82
|
+
}
|
|
83
|
+
const hours = Math.floor(minutes / 60);
|
|
84
|
+
if (hours < 24) {
|
|
85
|
+
return `${hours}h ago`;
|
|
86
|
+
}
|
|
87
|
+
const days = Math.floor(hours / 24);
|
|
88
|
+
if (days < 30) {
|
|
89
|
+
return `${days}d ago`;
|
|
90
|
+
}
|
|
91
|
+
const months = Math.floor(days / 30);
|
|
92
|
+
return `${months}mo ago`;
|
|
93
|
+
}
|
|
94
|
+
function applyTone(theme, tone, text) {
|
|
95
|
+
switch (tone) {
|
|
96
|
+
case "accent":
|
|
97
|
+
return theme.accent(text);
|
|
98
|
+
case "success":
|
|
99
|
+
return theme.success(text);
|
|
100
|
+
case "warning":
|
|
101
|
+
return theme.warning(text);
|
|
102
|
+
case "error":
|
|
103
|
+
return theme.error(text);
|
|
104
|
+
case "info":
|
|
105
|
+
return theme.info(text);
|
|
106
|
+
case "muted":
|
|
107
|
+
default:
|
|
108
|
+
return theme.muted(text);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cli/render/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/render/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/render/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ProgressHandle {
|
|
2
|
+
start(text: string): void;
|
|
3
|
+
update(text: string): void;
|
|
4
|
+
succeed(text: string): void;
|
|
5
|
+
fail(text: string): void;
|
|
6
|
+
stop(): void;
|
|
7
|
+
}
|
|
8
|
+
export declare function createProgressHandle(options?: {
|
|
9
|
+
enabled?: boolean;
|
|
10
|
+
}): ProgressHandle;
|
|
11
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/cli/render/progress.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,cAAc,CA6CjB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import ora from "ora";
|
|
2
|
+
import { detectRenderCapabilities } from "./capabilities.js";
|
|
3
|
+
export function createProgressHandle(options) {
|
|
4
|
+
const capabilities = detectRenderCapabilities();
|
|
5
|
+
if (!options?.enabled || !capabilities.interactive) {
|
|
6
|
+
return createNoopHandle();
|
|
7
|
+
}
|
|
8
|
+
let spinner = null;
|
|
9
|
+
return {
|
|
10
|
+
start(text) {
|
|
11
|
+
if (spinner) {
|
|
12
|
+
spinner.stop();
|
|
13
|
+
}
|
|
14
|
+
spinner = ora({
|
|
15
|
+
text,
|
|
16
|
+
isEnabled: true,
|
|
17
|
+
discardStdin: false,
|
|
18
|
+
}).start();
|
|
19
|
+
},
|
|
20
|
+
update(text) {
|
|
21
|
+
if (!spinner) {
|
|
22
|
+
this.start(text);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
spinner.text = text;
|
|
26
|
+
},
|
|
27
|
+
succeed(text) {
|
|
28
|
+
if (!spinner) {
|
|
29
|
+
spinner = ora({ text, isEnabled: true, discardStdin: false });
|
|
30
|
+
}
|
|
31
|
+
spinner.succeed(text);
|
|
32
|
+
spinner = null;
|
|
33
|
+
},
|
|
34
|
+
fail(text) {
|
|
35
|
+
if (!spinner) {
|
|
36
|
+
spinner = ora({ text, isEnabled: true, discardStdin: false });
|
|
37
|
+
}
|
|
38
|
+
spinner.fail(text);
|
|
39
|
+
spinner = null;
|
|
40
|
+
},
|
|
41
|
+
stop() {
|
|
42
|
+
spinner?.stop();
|
|
43
|
+
spinner = null;
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function createNoopHandle() {
|
|
48
|
+
return {
|
|
49
|
+
start() { },
|
|
50
|
+
update() { },
|
|
51
|
+
succeed() { },
|
|
52
|
+
fail() { },
|
|
53
|
+
stop() { },
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/cli/render/progress.ts"],"names":[],"mappings":"AAAA,OAAO,GAAiB,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAU7D,MAAM,UAAU,oBAAoB,CAAC,OAEpC;IACC,MAAM,YAAY,GAAG,wBAAwB,EAAE,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QACnD,OAAO,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO,GAAe,IAAI,CAAC;IAE/B,OAAO;QACL,KAAK,CAAC,IAAY;YAChB,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,CAAC;YACD,OAAO,GAAG,GAAG,CAAC;gBACZ,IAAI;gBACJ,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;QACD,MAAM,CAAC,IAAY;YACjB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,IAAY;YAClB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,IAAY;YACf,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI;YACF,OAAO,EAAE,IAAI,EAAE,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,KAAK,KAAI,CAAC;QACV,MAAM,KAAI,CAAC;QACX,OAAO,KAAI,CAAC;QACZ,IAAI,KAAI,CAAC;QACT,IAAI,KAAI,CAAC;KACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { RenderCapabilities } from "./capabilities.js";
|
|
2
|
+
export interface RenderSymbols {
|
|
3
|
+
readonly success: string;
|
|
4
|
+
readonly error: string;
|
|
5
|
+
readonly warning: string;
|
|
6
|
+
readonly info: string;
|
|
7
|
+
readonly bullet: string;
|
|
8
|
+
readonly arrow: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function createSymbols(capabilities: RenderCapabilities): RenderSymbols;
|
|
11
|
+
//# sourceMappingURL=symbols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../../src/cli/render/symbols.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,aAAa,CAAC,YAAY,EAAE,kBAAkB,GAAG,aAAa,CAoB7E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function createSymbols(capabilities) {
|
|
2
|
+
if (!capabilities.unicode) {
|
|
3
|
+
return {
|
|
4
|
+
success: "OK",
|
|
5
|
+
error: "x",
|
|
6
|
+
warning: "!",
|
|
7
|
+
info: "i",
|
|
8
|
+
bullet: "-",
|
|
9
|
+
arrow: "->",
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
success: "✓",
|
|
14
|
+
error: "✕",
|
|
15
|
+
warning: "!",
|
|
16
|
+
info: "•",
|
|
17
|
+
bullet: "•",
|
|
18
|
+
arrow: "→",
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=symbols.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../../src/cli/render/symbols.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,aAAa,CAAC,YAAgC;IAC5D,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,GAAG;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { RenderCapabilities } from "./capabilities.js";
|
|
2
|
+
export interface RenderTheme {
|
|
3
|
+
readonly accent: (text: string) => string;
|
|
4
|
+
readonly heading: (text: string) => string;
|
|
5
|
+
readonly label: (text: string) => string;
|
|
6
|
+
readonly muted: (text: string) => string;
|
|
7
|
+
readonly dim: (text: string) => string;
|
|
8
|
+
readonly success: (text: string) => string;
|
|
9
|
+
readonly warning: (text: string) => string;
|
|
10
|
+
readonly error: (text: string) => string;
|
|
11
|
+
readonly info: (text: string) => string;
|
|
12
|
+
readonly code: (text: string) => string;
|
|
13
|
+
}
|
|
14
|
+
export declare function createTheme(capabilities: RenderCapabilities): RenderTheme;
|
|
15
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/cli/render/theme.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQ5D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC;AAED,wBAAgB,WAAW,CAAC,YAAY,EAAE,kBAAkB,GAAG,WAAW,CA+BzE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createColors } from "picocolors";
|
|
2
|
+
const VANA_ACCENT = [65, 65, 252];
|
|
3
|
+
const VANA_SUCCESS = [0, 213, 11];
|
|
4
|
+
const VANA_DESTRUCTIVE = [231, 0, 11];
|
|
5
|
+
const VANA_MUTED = [112, 112, 112];
|
|
6
|
+
const VANA_WARNING = [186, 139, 0];
|
|
7
|
+
export function createTheme(capabilities) {
|
|
8
|
+
const colors = createColors(capabilities.color);
|
|
9
|
+
const formatCode = (text) => `\`${text}\``;
|
|
10
|
+
const richMuted = (text) => rgb(...VANA_MUTED, text);
|
|
11
|
+
if (capabilities.tier === "rich") {
|
|
12
|
+
return {
|
|
13
|
+
accent: (text) => rgb(...VANA_ACCENT, text),
|
|
14
|
+
heading: (text) => colors.bold(text),
|
|
15
|
+
label: (text) => richMuted(colors.bold(text)),
|
|
16
|
+
muted: (text) => richMuted(text),
|
|
17
|
+
dim: (text) => colors.dim(text),
|
|
18
|
+
success: (text) => rgb(...VANA_SUCCESS, text),
|
|
19
|
+
warning: (text) => rgb(...VANA_WARNING, text),
|
|
20
|
+
error: (text) => rgb(...VANA_DESTRUCTIVE, text),
|
|
21
|
+
info: (text) => rgb(...VANA_ACCENT, text),
|
|
22
|
+
code: (text) => colors.bold(formatCode(text)),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
accent: (text) => colors.blue(text),
|
|
27
|
+
heading: (text) => colors.bold(text),
|
|
28
|
+
label: (text) => colors.bold(colors.gray(text)),
|
|
29
|
+
muted: (text) => colors.gray(text),
|
|
30
|
+
dim: (text) => colors.dim(text),
|
|
31
|
+
success: (text) => colors.green(text),
|
|
32
|
+
warning: (text) => colors.yellow(text),
|
|
33
|
+
error: (text) => colors.red(text),
|
|
34
|
+
info: (text) => colors.cyan(text),
|
|
35
|
+
code: (text) => colors.bold(formatCode(text)),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function rgb(red, green, blue, text) {
|
|
39
|
+
return `\u001B[38;2;${red};${green};${blue}m${text}\u001B[39m`;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/cli/render/theme.ts"],"names":[],"mappings":"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"}
|