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");
9 const ruleName = "at-rule-whitelist";
11 const messages = ruleMessages(ruleName, {
12 rejected: name => `Unexpected at-rule "${name}"`
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, {
21 possible: [_.isString]
27 root.walkAtRules(atRule => {
28 const name = atRule.name;
31 whitelist.indexOf(postcss.vendor.unprefixed(name).toLowerCase()) !== -1
37 message: messages.rejected(name),
46 rule.primaryOptionArray = true;
48 rule.ruleName = ruleName;
49 rule.messages = messages;
50 module.exports = rule;