64 lines
1.6 KiB
JavaScript
64 lines
1.6 KiB
JavaScript
|
// @ts-check
|
||
|
|
||
|
const colorCodes = {
|
||
|
Reset: "\x1b[0m",
|
||
|
Bright: "\x1b[1m",
|
||
|
Dim: "\x1b[2m",
|
||
|
Underscore: "\x1b[4m",
|
||
|
Blink: "\x1b[5m",
|
||
|
Reverse: "\x1b[7m",
|
||
|
Hidden: "\x1b[8m",
|
||
|
|
||
|
FgBlack: "\x1b[30m",
|
||
|
FgRed: "\x1b[31m",
|
||
|
FgGreen: "\x1b[32m",
|
||
|
FgYellow: "\x1b[33m",
|
||
|
FgBlue: "\x1b[34m",
|
||
|
FgMagenta: "\x1b[35m",
|
||
|
FgCyan: "\x1b[36m",
|
||
|
FgWhite: "\x1b[37m",
|
||
|
FgGray: "\x1b[90m",
|
||
|
|
||
|
BgBlack: "\x1b[40m",
|
||
|
BgRed: "\x1b[41m",
|
||
|
BgGreen: "\x1b[42m",
|
||
|
BgYellow: "\x1b[43m",
|
||
|
BgBlue: "\x1b[44m",
|
||
|
BgMagenta: "\x1b[45m",
|
||
|
BgCyan: "\x1b[46m",
|
||
|
BgWhite: "\x1b[47m",
|
||
|
BgGray: "\x1b[100m",
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* @param {string} text
|
||
|
* @param {"red" | "bright"| "dim"| "underscore" | "blink" | "reverse" | "hidden" | "black" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "gray"} [type]
|
||
|
* @param {boolean} [bg]
|
||
|
* @returns {string}
|
||
|
*/
|
||
|
function colors(text, type, bg) {
|
||
|
let finalText = ``;
|
||
|
|
||
|
switch (type) {
|
||
|
case "red":
|
||
|
finalText += bg ? colorCodes.BgRed : colorCodes.FgRed;
|
||
|
break;
|
||
|
case "green":
|
||
|
finalText += bg ? colorCodes.BgGreen : colorCodes.FgGrBgGreen;
|
||
|
break;
|
||
|
case "blue":
|
||
|
finalText += bg ? colorCodes.BgBlue : colorCodes.FgGrBgBlue;
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
finalText += colorCodes.Bright;
|
||
|
break;
|
||
|
}
|
||
|
finalText += `${text}${colorCodes.Reset}`;
|
||
|
console.log("finalText", finalText);
|
||
|
|
||
|
return finalText;
|
||
|
}
|
||
|
|
||
|
module.exports = colors;
|