| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const truncateArgs = require("../logging/truncateArgs");const util = require("util");const tty = process.stderr.isTTY && process.env.TERM !== "dumb";let currentStatusMessage = undefined;let hasStatusMessage = false;let currentIndent = "";let currentCollapsed = 0;const indent = (str, prefix, colorPrefix, colorSuffix) => {	if (str === "") return str;	prefix = currentIndent + prefix;	if (tty) {		return (			prefix +			colorPrefix +			str.replace(/\n/g, colorSuffix + "\n" + prefix + colorPrefix) +			colorSuffix		);	} else {		return prefix + str.replace(/\n/g, "\n" + prefix);	}};const clearStatusMessage = () => {	if (hasStatusMessage) {		process.stderr.write("\x1b[2K\r");		hasStatusMessage = false;	}};const writeStatusMessage = () => {	if (!currentStatusMessage) return;	const l = process.stderr.columns;	const args = l		? truncateArgs(currentStatusMessage, l - 1)		: currentStatusMessage;	const str = args.join(" ");	const coloredStr = `\u001b[1m${str}\u001b[39m\u001b[22m`;	process.stderr.write(`\x1b[2K\r${coloredStr}`);	hasStatusMessage = true;};const writeColored = (prefix, colorPrefix, colorSuffix) => {	return (...args) => {		if (currentCollapsed > 0) return;		clearStatusMessage();		// @ts-ignore		const str = indent(util.format(...args), prefix, colorPrefix, colorSuffix);		process.stderr.write(str + "\n");		writeStatusMessage();	};};const writeGroupMessage = writeColored(	"<-> ",	"\u001b[1m\u001b[36m",	"\u001b[39m\u001b[22m");const writeGroupCollapsedMessage = writeColored(	"<+> ",	"\u001b[1m\u001b[36m",	"\u001b[39m\u001b[22m");module.exports = {	log: writeColored("    ", "\u001b[1m", "\u001b[22m"),	debug: writeColored("    ", "", ""),	trace: writeColored("    ", "", ""),	info: writeColored("<i> ", "\u001b[1m\u001b[32m", "\u001b[39m\u001b[22m"),	warn: writeColored("<w> ", "\u001b[1m\u001b[33m", "\u001b[39m\u001b[22m"),	error: writeColored("<e> ", "\u001b[1m\u001b[31m", "\u001b[39m\u001b[22m"),	logTime: writeColored("<t> ", "\u001b[1m\u001b[35m", "\u001b[39m\u001b[22m"),	group: (...args) => {		writeGroupMessage(...args);		if (currentCollapsed > 0) {			currentCollapsed++;		} else {			currentIndent += "  ";		}	},	groupCollapsed: (...args) => {		writeGroupCollapsedMessage(...args);		currentCollapsed++;	},	groupEnd: () => {		if (currentCollapsed > 0) currentCollapsed--;		else if (currentIndent.length >= 2)			currentIndent = currentIndent.slice(0, currentIndent.length - 2);	},	// eslint-disable-next-line node/no-unsupported-features/node-builtins	profile: console.profile && (name => console.profile(name)),	// eslint-disable-next-line node/no-unsupported-features/node-builtins	profileEnd: console.profileEnd && (name => console.profileEnd(name)),	clear:		tty &&		// eslint-disable-next-line node/no-unsupported-features/node-builtins		console.clear &&		(() => {			clearStatusMessage();			// eslint-disable-next-line node/no-unsupported-features/node-builtins			console.clear();			writeStatusMessage();		}),	status: tty		? (name, ...args) => {				args = args.filter(Boolean);				if (name === undefined && args.length === 0) {					clearStatusMessage();					currentStatusMessage = undefined;				} else if (					typeof name === "string" &&					name.startsWith("[webpack.Progress] ")				) {					currentStatusMessage = [name.slice(19), ...args];					writeStatusMessage();				} else if (name === "[webpack.Progress]") {					currentStatusMessage = [...args];					writeStatusMessage();				} else {					currentStatusMessage = [name, ...args];					writeStatusMessage();				}		  }		: writeColored("<s> ", "", "")};
 |