3 const isAutoprefixable = require("../../utils/isAutoprefixable");
4 const isStandardSyntaxRule = require("../../utils/isStandardSyntaxRule");
5 const isStandardSyntaxSelector = require("../../utils/isStandardSyntaxSelector");
6 const parseSelector = require("../../utils/parseSelector");
7 const report = require("../../utils/report");
8 const ruleMessages = require("../../utils/ruleMessages");
9 const validateOptions = require("../../utils/validateOptions");
11 const ruleName = "selector-no-vendor-prefix";
13 const messages = ruleMessages(ruleName, {
14 rejected: selector => `Unexpected vendor-prefix "${selector}"`
17 const rule = function(actual) {
18 return (root, result) => {
19 const validOptions = validateOptions(result, ruleName, { actual });
24 root.walkRules(rule => {
25 if (!isStandardSyntaxRule(rule)) {
28 const selector = rule.selector;
30 if (!isStandardSyntaxSelector(selector)) {
33 parseSelector(selector, result, rule, selectorTree => {
34 selectorTree.walkPseudos(pseudoNode => {
35 if (isAutoprefixable.selector(pseudoNode.value)) {
39 message: messages.rejected(pseudoNode.value),
41 index: (rule.raws.before || "").length + pseudoNode.sourceIndex
50 rule.ruleName = ruleName;
51 rule.messages = messages;
52 module.exports = rule;