UNPKG

too

Version:

Combine multiple processes' Stdout/Stderr/SIGINT to keep them all foreground

35 lines (34 loc) 1.18 kB
import { RESET, UNDERLINE } from "./colors.js"; export class Logger { maxLabelWidth = 0; } export class DefaultLogger extends Logger { verbose; stdout; stderr; constructor(verbose = true, stdout = process.stdout, stderr = process.stderr) { super(); this.verbose = verbose; this.stdout = stdout; this.stderr = stderr; } stage(stage) { this.stdout.write(`\n✅ ${stage}\n`); } accept(label, color, oneliner) { const padded = label.padEnd(this.maxLabelWidth); this.stdout.write(`${color}[${padded}]${RESET} ${UNDERLINE}${oneliner.trim()}${RESET}\n`); } output(label, color, stdout, stderr) { const padded = label.padEnd(this.maxLabelWidth); if (stdout.length) stdout.toString().trim().split("\n").map((line) => { this.stdout.write(`${color}[${padded}]${RESET} ${line}\n`); }); if (stderr.length) stderr.toString().trim().split("\n").map((line) => { this.stderr.write(`${color}[${padded}]${RESET} ${line}\n`); }); } } // export class JsonRowsLogger implements Logger { }