stylelint
Version:
Modern CSS linter
39 lines (34 loc) • 1.07 kB
JavaScript
import selectorParser from "postcss-selector-parser"
import {
cssRuleHasSelectorEndingWithColon,
report,
ruleMessages,
isAutoprefixable,
validateOptions,
} from "../../utils"
export const ruleName = "selector-no-vendor-prefix"
export const messages = ruleMessages(ruleName, {
rejected: p => `Unexpected vendor-prefixed selector "${p}"`,
})
export default function (actual) {
return (root, result) => {
const validOptions = validateOptions(result, ruleName, { actual })
if (!validOptions) { return }
root.walkRules(rule => {
if (cssRuleHasSelectorEndingWithColon(rule)) { return }
selectorParser(selectorTree => {
selectorTree.eachPseudo(pseudoNode => {
if (isAutoprefixable.selector(pseudoNode.value)) {
report({
result,
ruleName,
message: messages.rejected(pseudoNode.value),
node: rule,
index: rule.raws.before.length + pseudoNode.sourceIndex,
})
}
})
}).process(rule.selector)
})
}
}