.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / rules / at-rule-no-unknown / index.js
1 "use strict";
2
3 const _ = require("lodash");
4 const keywordSets = require("../../reference/keywordSets");
5 const optionsMatches = require("../../utils/optionsMatches");
6 const postcss = require("postcss");
7 const report = require("../../utils/report");
8 const ruleMessages = require("../../utils/ruleMessages");
9 const validateOptions = require("../../utils/validateOptions");
10
11 const ruleName = "at-rule-no-unknown";
12
13 const messages = ruleMessages(ruleName, {
14   rejected: atRule => `Unexpected unknown at-rule "${atRule}"`
15 });
16
17 const rule = function(actual, options) {
18   return (root, result) => {
19     const validOptions = validateOptions(
20       result,
21       ruleName,
22       { actual },
23       {
24         actual: options,
25         possible: {
26           ignoreAtRules: [_.isString]
27         },
28         optional: true
29       }
30     );
31
32     if (!validOptions) {
33       return;
34     }
35
36     root.walkAtRules(atRule => {
37       const name = atRule.name;
38
39       // Return early if at-rule is to be ignored
40       if (optionsMatches(options, "ignoreAtRules", atRule.name)) {
41         return;
42       }
43
44       if (
45         postcss.vendor.prefix(name) ||
46         keywordSets.atRules.has(name.toLowerCase())
47       ) {
48         return;
49       }
50
51       report({
52         message: messages.rejected(`@${name}`),
53         node: atRule,
54         ruleName,
55         result
56       });
57     });
58   };
59 };
60
61 rule.ruleName = ruleName;
62 rule.messages = messages;
63 module.exports = rule;