export const
    REGULAR = 0,
    BOLD = 1,
    RED = 31,
    GREEN = 32,
    YELLOW = 33,
    MAGENTA = 35,
    CYAN = 36,
    WHITE = 38,
    GRAY = 90;

const STYLE_RE = /\u001b\[[0-9]+;[0-9]+m(.*?)\u001b\[0m/gsim;

export const style = (msg = '', bold = 0, color = WHITE) => `\u001b[${bold};${color}m${msg}\u001b\[0m`;
export const raw = (msg = '') => msg.replaceAll(STYLE_RE, '$1');

export const failure = (msg) => style(msg, BOLD, RED);
export const success = (msg) => style(msg, BOLD, GREEN);
export const warning = (msg) => style(msg, BOLD, YELLOW);
export const note    = (msg) => style(msg, BOLD, MAGENTA);
export const entity  = (msg) => style(msg, BOLD, CYAN);
export const dimmed  = (msg) => style(msg, REGULAR, GRAY);
export const header  = (msg) => style(msg, BOLD, WHITE);
