.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / rules / property-whitelist / index.js
1 "use strict";
2
3 const _ = require("lodash");
4 const isCustomProperty = require("../../utils/isCustomProperty");
5 const isStandardSyntaxProperty = require("../../utils/isStandardSyntaxProperty");
6 const matchesStringOrRegExp = require("../../utils/matchesStringOrRegExp");
7 const postcss = require("postcss");
8 const report = require("../../utils/report");
9 const ruleMessages = require("../../utils/ruleMessages");
10 const validateOptions = require("../../utils/validateOptions");
11
12 const ruleName = "property-whitelist";
13
14 const messages = ruleMessages(ruleName, {
15   rejected: property => `Unexpected property "${property}"`
16 });
17
18 const rule = function(whitelist) {
19   return (root, result) => {
20     const validOptions = validateOptions(result, ruleName, {
21       actual: whitelist,
22       possible: [_.isString]
23     });
24     if (!validOptions) {
25       return;
26     }
27
28     root.walkDecls(decl => {
29       const prop = decl.prop;
30
31       if (!isStandardSyntaxProperty(prop)) {
32         return;
33       }
34       if (isCustomProperty(prop)) {
35         return;
36       }
37       if (matchesStringOrRegExp(postcss.vendor.unprefixed(prop), whitelist)) {
38         return;
39       }
40
41       report({
42         message: messages.rejected(prop),
43         node: decl,
44         result,
45         ruleName
46       });
47     });
48   };
49 };
50
51 rule.primaryOptionArray = true;
52
53 rule.ruleName = ruleName;
54 rule.messages = messages;
55 module.exports = rule;