.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / rules / at-rule-whitelist / index.js
1 "use strict";
2
3 const _ = require("lodash");
4 const postcss = require("postcss");
5 const report = require("../../utils/report");
6 const ruleMessages = require("../../utils/ruleMessages");
7 const validateOptions = require("../../utils/validateOptions");
8
9 const ruleName = "at-rule-whitelist";
10
11 const messages = ruleMessages(ruleName, {
12   rejected: name => `Unexpected at-rule "${name}"`
13 });
14
15 const rule = function(whitelistInput) {
16   // To allow for just a string as a parameter (not only arrays of strings)
17   const whitelist = [].concat(whitelistInput);
18   return (root, result) => {
19     const validOptions = validateOptions(result, ruleName, {
20       actual: whitelist,
21       possible: [_.isString]
22     });
23     if (!validOptions) {
24       return;
25     }
26
27     root.walkAtRules(atRule => {
28       const name = atRule.name;
29
30       if (
31         whitelist.indexOf(postcss.vendor.unprefixed(name).toLowerCase()) !== -1
32       ) {
33         return;
34       }
35
36       report({
37         message: messages.rejected(name),
38         node: atRule,
39         result,
40         ruleName
41       });
42     });
43   };
44 };
45
46 rule.primaryOptionArray = true;
47
48 rule.ruleName = ruleName;
49 rule.messages = messages;
50 module.exports = rule;