UNPKG

beautiful-error

Version:

💣 Prettify error messages and stacks 💥

54 lines (41 loc) • 1.05 kB
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}`;