UNPKG

canonical

Version:

Canonical code style linter and formatter for JavaScript, SCSS and CSS.

148 lines (112 loc) 3.38 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _forEach = require('lodash/collection/forEach'); var _forEach2 = _interopRequireDefault(_forEach); var _filter = require('lodash/collection/filter'); var _filter2 = _interopRequireDefault(_filter); var _map = require('lodash/collection/map'); var _map2 = _interopRequireDefault(_map); var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk); var _table = require('table'); var _table2 = _interopRequireDefault(_table); var _pluralize = require('pluralize'); var _pluralize2 = _interopRequireDefault(_pluralize); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } let drawReport, drawTable; /** * @param {Array} results * @returns {string} */ drawReport = results => { let files; files = (0, _map2.default)(results, result => { if (!result.messages.length) { return ''; } return '\n' + result.filePath + '\n\n' + drawTable(result.messages); }); files = (0, _filter2.default)(files); return files.join('\n'); }; /** * @param {Array} messages * @returns {string} */ drawTable = messages => { let rows; rows = []; if (messages.length === 0) { return ''; } rows.push([_chalk2.default.bold('Line'), _chalk2.default.bold('Column'), _chalk2.default.bold('Type'), _chalk2.default.bold('Message'), _chalk2.default.bold('Rule ID')]); (0, _forEach2.default)(messages, message => { let messageType; if (message.fatal || message.severity === 2) { messageType = _chalk2.default.red('error'); } else { messageType = _chalk2.default.yellow('warning'); } rows.push([message.line || 0, message.column || 0, messageType, message.message.replace(/\.$/, ''), message.ruleId || '']); }); return (0, _table2.default)(rows, { columns: { 0: { width: 8, wrapWord: true }, 1: { width: 8, wrapWord: true }, 2: { width: 8, wrapWord: true }, 3: { paddingRight: 5, width: 50, wrapWord: true }, 4: { width: 20, wrapWord: true } }, drawHorizontalLine: index => { return index === 1; } }); }; /** * @typedef {Object} report * @property {number} errorCount * @property {number} warningCount * @property {Object[]} results */ /** * @param {report} report * @returns {string} */ exports.default = report => { let result; result = ''; if (report.errorCount || report.warningCount) { result = drawReport(report.results); } result += '\n' + (0, _table2.default)([[_chalk2.default.red((0, _pluralize2.default)('Error', report.errorCount, true))], [_chalk2.default.yellow((0, _pluralize2.default)('Warning', report.warningCount, true))]], { columns: { 0: { width: 110, wrapWord: true } }, drawHorizontalLine: () => { return true; } }); return result; }; //# sourceMappingURL=table.js.map