waft-css-lint
Version:
WAFT Standard shareable config for stylelint
72 lines (71 loc) • 3.17 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const dist_1 = __importDefault(require("waft-afuns/dist"));
const colors_1 = __importDefault(require("colors"));
const table_1 = require("table");
const ruleHandlerMap = {};
const createPropertyValueMessage = function (property, values) {
return `${property} values is [${[...values]}]`;
};
const messages = {
'flex-direction': createPropertyValueMessage('flex-direction', ['column', 'row']),
'font-family': createPropertyValueMessage('font-family', ['sans-serif', 'arial', 'helvetica', 'tahoma', 'verdana', 'sans-serif-condensed', 'serif', 'times', 'times new roman', 'palatino', 'georgia', 'baskerville',
'goudy', 'fantasy', 'ITC Stone Serif', 'monospace', 'sans-serif-monospace', 'monaco', 'serif-monospace', 'courier', 'courier new', 'casual', 'cursive', 'sans-serif-smallcaps',
'sans-serif-smallcaps']),
};
ruleHandlerMap['declaration-property-value-allowed-list'] = function (message) {
const { node } = message;
const msg = node ? messages[node.prop] : message.text;
message.text = msg;
return output(message);
};
function output(message) {
if (message.text.includes('selector')) {
return [`code: ${message.line}:${message.column}`, message.word || '', message.severity, message.text, message.rule];
}
else {
if (message.node) {
return [`code: ${message.line}:${message.column}`, `${message.node.prop}: ${message.node.value}`, message.severity, message.text, message.rule];
}
else {
return [`code: ${message.line}:${message.column}`, message.severity, message.text, message.rule];
}
}
}
const config2 = {
border: (0, table_1.getBorderCharacters)('void'),
columnDefault: {
paddingLeft: 0,
paddingRight: 1
},
drawHorizontalLine: () => false
};
module.exports = function formatter(results, returnValue) {
const outputs = results.map((data) => {
const { errored, source, deprecations, _postcssResult, warnings } = data;
let lines = [];
if (_postcssResult) {
const { messages = [] } = _postcssResult;
lines = messages.map(message => {
const { rule } = message;
const factor = ruleHandlerMap[rule];
return factor ? factor(message) : output(message);
});
}
else if (warnings) {
lines = warnings.map((message) => {
return output(message);
});
}
const deprecationStrs = deprecations.map(deprecation => {
return `${deprecation.text} \n ${deprecation.reference}`;
});
return lines && lines.length > 0
? dist_1.default.format('{0}\n{1}{2}\n', colors_1.default.bold(colors_1.default.red(source)), colors_1.default.blue(deprecationStrs.join('\n')), colors_1.default.yellow((0, table_1.table)(lines, config2)))
: "";
});
return outputs.filter(s => s).join('');
};