UNPKG

1.08 kBJavaScriptView Raw
1'use strict';
2
3const isAutoprefixable = require('../../utils/isAutoprefixable');
4const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
5const report = require('../../utils/report');
6const ruleMessages = require('../../utils/ruleMessages');
7const validateOptions = require('../../utils/validateOptions');
8
9const ruleName = 'at-rule-no-vendor-prefix';
10
11const messages = ruleMessages(ruleName, {
12 rejected: (p) => `Unexpected vendor-prefixed at-rule "@${p}"`,
13});
14
15function rule(actual) {
16 return function (root, result) {
17 const validOptions = validateOptions(result, ruleName, { actual });
18
19 if (!validOptions) {
20 return;
21 }
22
23 root.walkAtRules((atRule) => {
24 if (!isStandardSyntaxAtRule(atRule)) {
25 return;
26 }
27
28 const name = atRule.name;
29
30 if (!name.startsWith('-')) {
31 return;
32 }
33
34 if (!isAutoprefixable.atRuleName(name)) {
35 return;
36 }
37
38 report({
39 message: messages.rejected(name),
40 node: atRule,
41 result,
42 ruleName,
43 });
44 });
45 };
46}
47
48rule.ruleName = ruleName;
49rule.messages = messages;
50module.exports = rule;