customFormatter.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.formatResults = formatResults;
  6. exports.MessageSeverity = void 0;
  7. var _chalk = _interopRequireDefault(require("next/dist/compiled/chalk"));
  8. var _path = _interopRequireDefault(require("path"));
  9. function _interopRequireDefault(obj) {
  10. return obj && obj.__esModule ? obj : {
  11. default: obj
  12. };
  13. }
  14. var MessageSeverity;
  15. exports.MessageSeverity = MessageSeverity;
  16. (function(MessageSeverity) {
  17. MessageSeverity[MessageSeverity["Warning"] = 1] = "Warning";
  18. MessageSeverity[MessageSeverity["Error"] = 2] = "Error";
  19. })(MessageSeverity || (exports.MessageSeverity = MessageSeverity = {}));
  20. function pluginCount(messages) {
  21. let nextPluginWarningCount = 0;
  22. let nextPluginErrorCount = 0;
  23. for(let i = 0; i < messages.length; i++){
  24. const { severity , ruleId } = messages[i];
  25. if (ruleId == null ? void 0 : ruleId.includes("@next/next")) {
  26. if (severity === 1) {
  27. nextPluginWarningCount += 1;
  28. } else {
  29. nextPluginErrorCount += 1;
  30. }
  31. }
  32. }
  33. return {
  34. nextPluginErrorCount,
  35. nextPluginWarningCount
  36. };
  37. }
  38. function formatMessage(dir, messages, filePath) {
  39. let fileName = _path.default.posix.normalize(_path.default.relative(dir, filePath).replace(/\\/g, "/"));
  40. if (!fileName.startsWith(".")) {
  41. fileName = "./" + fileName;
  42. }
  43. let output = "\n" + _chalk.default.cyan(fileName);
  44. for(let i = 0; i < messages.length; i++){
  45. const { message , severity , line , column , ruleId } = messages[i];
  46. output = output + "\n";
  47. if (line && column) {
  48. output = output + _chalk.default.yellow(line.toString()) + ":" + _chalk.default.yellow(column.toString()) + " ";
  49. }
  50. if (severity === 1) {
  51. output += _chalk.default.yellow.bold("Warning") + ": ";
  52. } else {
  53. output += _chalk.default.red.bold("Error") + ": ";
  54. }
  55. output += message;
  56. if (ruleId) {
  57. output += " " + _chalk.default.gray.bold(ruleId);
  58. }
  59. }
  60. return output;
  61. }
  62. function formatResults(baseDir, results, format) {
  63. let totalNextPluginErrorCount = 0;
  64. let totalNextPluginWarningCount = 0;
  65. let resultsWithMessages = results.filter(({ messages })=>{
  66. return messages == null ? void 0 : messages.length;
  67. });
  68. // Track number of Next.js plugin errors and warnings
  69. resultsWithMessages.forEach(({ messages })=>{
  70. const res = pluginCount(messages);
  71. totalNextPluginErrorCount += res.nextPluginErrorCount;
  72. totalNextPluginWarningCount += res.nextPluginWarningCount;
  73. });
  74. // Use user defined formatter or Next.js's built-in custom formatter
  75. const output = format ? format(resultsWithMessages) : resultsWithMessages.map(({ messages , filePath })=>formatMessage(baseDir, messages, filePath)).join("\n");
  76. return {
  77. output: output,
  78. outputWithMessages: resultsWithMessages.length > 0 ? output + `\n\n${_chalk.default.cyan("info")} - Need to disable some ESLint rules? Learn more here: https://nextjs.org/docs/basic-features/eslint#disabling-rules` : "",
  79. totalNextPluginErrorCount,
  80. totalNextPluginWarningCount
  81. };
  82. }
  83. //# sourceMappingURL=customFormatter.js.map