UNPKG

1.06 kBJavaScriptView Raw
1'use strict';
2
3const isAutoprefixable = require('../../utils/isAutoprefixable');
4const report = require('../../utils/report');
5const ruleMessages = require('../../utils/ruleMessages');
6const validateOptions = require('../../utils/validateOptions');
7
8const ruleName = 'media-feature-name-no-vendor-prefix';
9
10const messages = ruleMessages(ruleName, {
11 rejected: 'Unexpected vendor-prefix',
12});
13
14function rule(actual) {
15 return (root, result) => {
16 const validOptions = validateOptions(result, ruleName, { actual });
17
18 if (!validOptions) {
19 return;
20 }
21
22 root.walkAtRules(/^media$/i, (atRule) => {
23 const params = atRule.params;
24
25 if (!isAutoprefixable.mediaFeatureName(params)) {
26 return;
27 }
28
29 const matches = atRule.toString().match(/[a-z-]+device-pixel-ratio/gi);
30
31 if (!matches) {
32 return;
33 }
34
35 matches.forEach((match) => {
36 report({
37 message: messages.rejected,
38 node: atRule,
39 word: match,
40 result,
41 ruleName,
42 });
43 });
44 });
45 };
46}
47
48rule.ruleName = ruleName;
49rule.messages = messages;
50module.exports = rule;