lint-filter
Version:
Lint touched code stricter
77 lines (62 loc) • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.preFormatter = preFormatter;
exports.generateStats = generateStats;
exports.formatOutput = formatOutput;
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _checkstyle = require('./checkstyle');
var _checkstyle2 = _interopRequireDefault(_checkstyle);
var _text = require('./text');
var _text2 = _interopRequireDefault(_text);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var formatters = {
checkstyle: _checkstyle2.default,
text: _text2.default
};
function preFormatter(data) {
return _lodash2.default.filter(_lodash2.default.map(_lodash2.default.groupBy(data, 'file'), function (value, key) {
if (!_lodash2.default.isEmpty(_lodash2.default.filter(value, 'isInDiff'))) {
return {
filename: key,
messages: _lodash2.default.filter(value, 'isInDiff').map(function (item) {
return _lodash2.default.omit(item, ['isInDiff', 'file']);
})
};
}
return null;
}));
}
function generateStats(data) {
return {
errors: {
total: _lodash2.default.filter(data, { severity: 'error' }).length,
in: _lodash2.default.filter(data, { severity: 'error', isInDiff: true }).length,
out: _lodash2.default.filter(data, { severity: 'error', isInDiff: false }).length
},
warnings: {
total: _lodash2.default.filter(data, { severity: 'warning' }).length,
in: _lodash2.default.filter(data, { severity: 'warning', isInDiff: true }).length,
out: _lodash2.default.filter(data, { severity: 'warning', isInDiff: false }).length
}
};
}
function formatOutput(format, data) {
var formatter = void 0;
if (/^require:/.test(format)) {
// $SuppressFlow somehow flow marks the returned of replace as any
formatter = require(format.replace(/^require:/, '')); // eslint-disable-line global-require
if (formatter.default) {
formatter = formatter.default;
}
}
if (_lodash2.default.has(formatters, format)) {
formatter = formatters[format];
}
if (formatter) {
return formatter(preFormatter(data), generateStats(data));
}
throw new Error('Could not find formatter: \'' + format + '\'');
}