stylelint-value-list-box-shadow-inset-first
Version:
Stylelint rule for checking if box-shadow inset values are first in list.
68 lines (60 loc) • 2.01 kB
JavaScript
;
var util = require('node:util');
var stylelint = require('stylelint');
var valueParser = require('postcss-value-parser');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var util__default = /*#__PURE__*/_interopDefaultLegacy(util);
var stylelint__default = /*#__PURE__*/_interopDefaultLegacy(stylelint);
var valueParser__default = /*#__PURE__*/_interopDefaultLegacy(valueParser);
const ruleName = 'plugin/value-list-box-shadow-inset-first';
const messages = stylelint__default["default"].utils.ruleMessages(ruleName, {
expected: 'Expected box-shadow inset values to be first in the value list.'
});
/**
* @type {stylelint.RuleBase}
*/
function ruleFunction(/** @type boolean*/bool) {
return function (cssRoot, result) {
const validOptions = stylelint__default["default"].utils.validateOptions(result, ruleName, {
actual: bool
});
if (!validOptions) {
return;
}
cssRoot.walkDecls('box-shadow', decl => {
/** @type {string[]} */
const list = [];
valueParser__default["default"](decl.value).walk(node => {
if (node.type === 'function') {
return false;
}
if (node.value === 'inset' || node.value === ',') {
list.push(node.value);
}
});
const inputOrder = list.map(item => {
if (item === ',') {
return 'normal';
}
return item;
});
const correctOrder = [...inputOrder].sort();
if (!util__default["default"].isDeepStrictEqual(inputOrder, correctOrder)) {
stylelint__default["default"].utils.report({
ruleName: ruleName,
result: result,
node: decl,
message: messages.expected
});
}
});
};
}
// @ts-ignore
const plugin = stylelint__default["default"].createPlugin(ruleName, ruleFunction);
var index = {
...plugin,
messages
};
module.exports = index;
//# sourceMappingURL=index.js.map