Files
cellxgene/client/server/utils.js
2020-05-04 10:26:42 -07:00

81 lines
2.1 KiB
JavaScript

/* eslint-disable */
// jshint esversion: 6
var chalk = require("chalk");
var friendlySyntaxErrorLabel = "Syntax error:";
function isLikelyASyntaxError(message) {
return message.indexOf(friendlySyntaxErrorLabel) !== -1;
}
function formatMessage(message) {
return message
.replace("Module build failed: SyntaxError:", friendlySyntaxErrorLabel)
.replace(
/Module not found: Error: Cannot resolve 'file' or 'directory'/,
"Module not found:"
)
.replace(/^\s*at\s.*:\d+:\d+[\s\)]*\n/gm, "")
.replace("./~/css-loader!./~/postcss-loader!", "");
}
var clearConsole = () => {
process.stdout.write("\x1bc");
};
var formatStats = (stats, port) => {
clearConsole();
var hasErrors = stats.hasErrors();
var hasWarnings = stats.hasWarnings();
if (!hasErrors && !hasWarnings) {
console.log(chalk.green("Compiled successfully!"));
console.log();
console.log("The app is running at http://localhost:" + port + "/");
console.log();
return;
}
var json = stats.toJson();
var formattedErrors = json.errors.map(
(message) => "Error in " + formatMessage(message)
);
var formattedWarnings = json.warnings.map(
(message) => "Warning in " + formatMessage(message)
);
if (hasErrors) {
console.log(chalk.red("Failed to compile."));
console.log();
if (formattedErrors.some(isLikelyASyntaxError)) {
formattedErrors = formattedErrors.filter(isLikelyASyntaxError);
}
formattedErrors.forEach((message) => {
console.log(message);
console.log();
});
return;
}
if (hasWarnings) {
console.log(chalk.yellow("Compiled with warnings."));
console.log();
formattedWarnings.forEach((message) => {
console.log(message);
console.log();
});
console.log("You may use special comments to disable some warnings.");
console.log(
"Use " +
chalk.yellow("// eslint-disable-next-line") +
" to ignore the next line."
);
console.log(
"Use " +
chalk.yellow("/* eslint-disable */") +
" to ignore all warnings in a file."
);
}
};
module.exports = { formatStats: formatStats, clearConsole: clearConsole };