UNPKG

tiny-colors

Version:

A tiny library providing the basic ANSI colors for the terminal.

59 lines (58 loc) 1.4 kB
/* IMPORT */ import { ENABLED } from './constants.js'; /* HELPERS */ const chain = (modifier) => { return new Proxy(modifier, { get(target, prop) { if (prop in colors) { return chain(string => modifier(colors[prop](string))); } else { return target[prop]; } } }); }; const wrap = (start, end) => { return chain((string) => { if (!ENABLED) return string; return `\u001B[${start}m${string}\u001B[${end}m`; }); }; /* MAIN */ const colors = { /* MODIFIERS */ reset: wrap(0, 0), bold: wrap(1, 22), dim: wrap(2, 22), italic: wrap(3, 23), underline: wrap(4, 24), overline: wrap(53, 55), inverse: wrap(7, 27), hidden: wrap(8, 28), strikethrough: wrap(9, 29), /* FOREGOUND */ black: wrap(30, 39), red: wrap(31, 39), green: wrap(32, 39), yellow: wrap(33, 39), blue: wrap(34, 39), magenta: wrap(35, 39), cyan: wrap(36, 39), white: wrap(37, 39), gray: wrap(90, 39), /* BACKGROUND */ bgBlack: wrap(40, 49), bgRed: wrap(41, 49), bgGreen: wrap(42, 49), bgYellow: wrap(43, 49), bgBlue: wrap(44, 49), bgMagenta: wrap(45, 49), bgCyan: wrap(46, 49), bgWhite: wrap(47, 49), bgGray: wrap(100, 49) }; /* EXPORT */ export default colors; export { ENABLED };