Spaces:
Paused
Paused
File size: 1,814 Bytes
fb4d8fe | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | import { colorize, isRich as isRichTerminal, theme } from "../../terminal/theme.js";
export const isRich = (opts?: { json?: boolean; plain?: boolean }) =>
Boolean(isRichTerminal() && !opts?.json && !opts?.plain);
export const pad = (value: string, size: number) => value.padEnd(size);
export const formatKey = (key: string, rich: boolean) => colorize(rich, theme.warn, key);
export const formatValue = (value: string, rich: boolean) => colorize(rich, theme.info, value);
export const formatKeyValue = (
key: string,
value: string,
rich: boolean,
valueColor: (value: string) => string = theme.info,
) => `${formatKey(key, rich)}=${colorize(rich, valueColor, value)}`;
export const formatSeparator = (rich: boolean) => colorize(rich, theme.muted, " | ");
export const formatTag = (tag: string, rich: boolean) => {
if (!rich) {
return tag;
}
if (tag === "default") {
return theme.success(tag);
}
if (tag === "image") {
return theme.accentBright(tag);
}
if (tag === "configured") {
return theme.accent(tag);
}
if (tag === "missing") {
return theme.error(tag);
}
if (tag.startsWith("fallback#")) {
return theme.warn(tag);
}
if (tag.startsWith("img-fallback#")) {
return theme.warn(tag);
}
if (tag.startsWith("alias:")) {
return theme.accentDim(tag);
}
return theme.muted(tag);
};
export const truncate = (value: string, max: number) => {
if (value.length <= max) {
return value;
}
if (max <= 3) {
return value.slice(0, max);
}
return `${value.slice(0, max - 3)}...`;
};
export const maskApiKey = (value: string): string => {
const trimmed = value.trim();
if (!trimmed) {
return "missing";
}
if (trimmed.length <= 16) {
return trimmed;
}
return `${trimmed.slice(0, 8)}...${trimmed.slice(-8)}`;
};
|