canonical
Version:
Canonical code style linter and formatter for JavaScript, SCSS and CSS.
148 lines (112 loc) • 3.38 kB
JavaScript
;
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