UNPKG

@quasar/app-vite

Version:

Quasar Framework App CLI with Vite

130 lines (106 loc) 3.16 kB
import { bgGreen, green, inverse, bgRed, red, bgYellow, yellow, black, white, underline } from 'kolorist' import readline from 'node:readline' /** * Pills */ export const successPill = msg => bgGreen(black(` ${msg} `)) export const infoPill = msg => inverse(` ${msg} `) export const errorPill = msg => bgRed(white(` ${msg} `)) export const warningPill = msg => bgYellow(black(` ${msg} `)) /** * Main approach - App CLI related */ export const dot = '•' const banner = 'App ' + dot const greenBanner = green(banner) const redBanner = red(banner) const yellowBanner = yellow(banner) const tipBanner = `${green('App')} ${dot} ${successPill('TIP')} ${dot} 🚀 ` export const clearConsole = 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) } : () => {} export function tip(msg) { console.log(msg ? ` ${tipBanner} ${msg}` : '') } export function log(msg) { console.log(msg ? ` ${greenBanner} ${msg}` : '') } export function warn(msg, pill) { if (msg !== void 0) { const pillBanner = pill !== void 0 ? warningPill(pill) + ' ' : '' console.warn(` ${yellowBanner} ⚠️ ${pillBanner}${msg}`) } else { console.warn() } } export function fatal(msg, pill) { if (msg !== void 0) { const pillBanner = pill !== void 0 ? errorPill(pill) + ' ' : '' console.error(`\n ${redBanner} ⚠️ ${pillBanner}${msg}\n`) } else { console.error() } process.exit(1) } /** * Extended approach - Compilation status & pills */ export function success(msg, title = 'SUCCESS') { console.log(` ${greenBanner} ${successPill(title)} ${green(dot + ' ' + msg)}`) } export function getSuccess(msg, title) { return ` ${greenBanner} ${successPill(title)} ${green(dot + ' ' + msg)}` } export function info(msg, title = 'INFO') { console.log(` ${greenBanner} ${infoPill(title)} ${green(dot)} ${msg}`) } export function getInfo(msg, title) { return ` ${greenBanner} ${infoPill(title)} ${green(dot)} ${msg}` } export function error(msg, title = 'ERROR') { console.log(` ${redBanner} ${errorPill(title)} ${red(dot + ' ' + msg)}`) } export function getError(msg, title = 'ERROR') { return ` ${redBanner} ${errorPill(title)} ${red(dot + ' ' + msg)}` } export function warning(msg, title = 'WARNING') { console.log( ` ${yellowBanner} ${warningPill(title)} ${yellow(dot + ' ' + msg)}` ) } export function getWarning(msg, title = 'WARNING') { return ` ${yellowBanner} ${warningPill(title)} ${yellow(dot + ' ' + msg)}` } /** * Progress related */ export function progress(msg, token) { const parseMsg = token !== void 0 ? text => text.replace('___', underline(green(token))) : text => text info(parseMsg(msg), 'WAIT') const startTime = Date.now() return progressMessage => { const diffTime = Number(new Date()) - startTime success(`${parseMsg(progressMessage)} ${dot} ${diffTime}ms`, 'DONE') log() } }