60 lines
1.2 KiB
JavaScript
60 lines
1.2 KiB
JavaScript
'use strict'
|
|
|
|
const chalk = require('chalk')
|
|
const readline = require('readline')
|
|
|
|
const colors = {
|
|
success: 'green',
|
|
info: 'blue',
|
|
note: 'white',
|
|
warn: 'yellow',
|
|
error: 'red'
|
|
}
|
|
|
|
const titles = {
|
|
success: 'success',
|
|
info: 'info',
|
|
note: 'note',
|
|
warn: 'warning',
|
|
error: 'error'
|
|
}
|
|
|
|
function bgColor (level) {
|
|
const color = textColor(level)
|
|
return 'bg' + capitalizeFirstLetter(color)
|
|
}
|
|
|
|
function textColor (level) {
|
|
return colors[level.toLowerCase()] || 'red'
|
|
}
|
|
|
|
function capitalizeFirstLetter (string) {
|
|
return string.charAt(0).toUpperCase() + string.slice(1)
|
|
}
|
|
|
|
function formatTitle (severity, title) {
|
|
return chalk[bgColor(severity)].black('', title, '')
|
|
}
|
|
|
|
function formatText (severity, message) {
|
|
return chalk[textColor(severity)](message)
|
|
}
|
|
|
|
function clearConsole () {
|
|
if (process.stdout.isTTY) {
|
|
// Fill screen with blank lines. Then move to 0 (beginning of visible part) and clear it
|
|
const blank = '\n'.repeat(process.stdout.rows)
|
|
console.log(blank)
|
|
readline.cursorTo(process.stdout, 0, 0)
|
|
readline.clearScreenDown(process.stdout)
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
colors,
|
|
titles,
|
|
formatText,
|
|
formatTitle,
|
|
clearConsole
|
|
}
|