stylelint
Version:
A mighty, modern CSS linter.
91 lines (71 loc) • 2.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.messages = exports.ruleName = undefined;
exports.default = function (actual, options) {
return function (root, result) {
var validOptions = (0, _utils.validateOptions)(result, ruleName, { actual: actual }, {
actual: options,
possible: {
ignoreTypes: [_lodash.isString]
},
optional: true
});
if (!validOptions) {
return;
}
root.walkRules(function (rule) {
var selector = rule.selector;
var selectors = rule.selectors;
if (!(0, _utils.isStandardSyntaxRule)(rule)) {
return;
}
if (!(0, _utils.isStandardSyntaxSelector)(selector)) {
return;
}
if (selectors.some(function (s) {
return (0, _utils.isKeyframeSelector)(s);
})) {
return;
}
(0, _utils.parseSelector)(selector, result, rule, function (selectorTree) {
selectorTree.walkTags(function (tagNode) {
if (!(0, _utils.isStandardSyntaxTypeSelector)(tagNode)) {
return;
}
if ((0, _utils.optionsMatches)(options, "ignoreTypes", tagNode.value)) {
return;
}
var tagName = tagNode.value;
var tagNameLowerCase = tagName.toLowerCase();
if (_htmlTags2.default.indexOf(tagNameLowerCase) !== -1 || _svgTags2.default.indexOf(tagNameLowerCase) !== -1 || nonStandardHtmlTags.has(tagNameLowerCase)) {
return;
}
(0, _utils.report)({
message: messages.rejected(tagName),
node: rule,
index: tagNode.sourceIndex,
ruleName: ruleName,
result: result
});
});
});
});
};
};
var _utils = require("../../utils");
var _htmlTags = require("html-tags");
var _htmlTags2 = _interopRequireDefault(_htmlTags);
var _lodash = require("lodash");
var _svgTags = require("svg-tags");
var _svgTags2 = _interopRequireDefault(_svgTags);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var ruleName = exports.ruleName = "selector-type-no-unknown";
var messages = exports.messages = (0, _utils.ruleMessages)(ruleName, {
rejected: function rejected(selector) {
return "Unexpected unknown type selector \"" + selector + "\"";
}
});
// htmlTags includes only "standard" tags. So we augment it with older tags etc.
var nonStandardHtmlTags = new Set(["acronym", "applet", "basefont", "big", "blink", "center", "content", "dir", "font", "frame", "frameset", "hgroup", "isindex", "keygen", "listing", "marquee", "noembed", "plaintext", "spacer", "strike", "tt", "xmp"]);