beautiful-error
Version:
💣 Prettify error messages and stacks 💥
54 lines (41 loc) • 1.05 kB
JavaScript
import{stderr}from"node:process";
import chalkString from"chalk-string";
export const getTheme=(colors,header)=>{
const theme={
bold:getThemeColor("bold",colors),
italic:getThemeColor("italic",colors),
header:header===""?undefined:getThemeColor(header,colors)
};
const useColors=theme.bold("_")!=="_";
return{theme,useColors}
};
const getThemeColor=(style,colors)=>
chalkString(style,{colors,stream:stderr});
export const colorizeLine=(line,useColors,{bold,italic})=>{
if(!useColors){
return line
}
return line.
replaceAll(
DOUBLE_QUOTED_STRING,
colorizeQuotedString.bind(undefined,bold)
).
replaceAll(
SINGLE_QUOTED_STRING,
colorizeQuotedString.bind(undefined,bold)
).
replaceAll(
BACKTICK_QUOTED_STRING,
colorizeQuotedString.bind(undefined,italic)
)
};
const DOUBLE_QUOTED_STRING=/(")([^"]+)(")/gu;
const SINGLE_QUOTED_STRING=/(')([^']+)(')/gu;
const BACKTICK_QUOTED_STRING=/(`)([^`]+)(`)/gu;
const colorizeQuotedString=(
addStyles,
fullString,
startQuote,
quotedString,
endQuote)=>
`${startQuote}${addStyles(quotedString)}${endQuote}`;