UNPKG

1.57 kBJavaScriptView Raw
1// @ts-nocheck
2
3'use strict';
4
5const _ = require('lodash');
6const isCustomProperty = require('../../utils/isCustomProperty');
7const isStandardSyntaxProperty = require('../../utils/isStandardSyntaxProperty');
8const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
9const postcss = require('postcss');
10const report = require('../../utils/report');
11const ruleMessages = require('../../utils/ruleMessages');
12const validateOptions = require('../../utils/validateOptions');
13
14const ruleName = 'property-blacklist';
15
16const messages = ruleMessages(ruleName, {
17 rejected: (property) => `Unexpected property "${property}"`,
18});
19
20function rule(list) {
21 return (root, result) => {
22 const validOptions = validateOptions(result, ruleName, {
23 actual: list,
24 possible: [_.isString, _.isRegExp],
25 });
26
27 if (!validOptions) {
28 return;
29 }
30
31 result.warn(`'${ruleName}' has been deprecated. Instead use 'property-disallowed-list'.`, {
32 stylelintType: 'deprecation',
33 stylelintReference: `https://github.com/stylelint/stylelint/blob/13.7.0/lib/rules/${ruleName}/README.md`,
34 });
35
36 root.walkDecls((decl) => {
37 const prop = decl.prop;
38
39 if (!isStandardSyntaxProperty(prop)) {
40 return;
41 }
42
43 if (isCustomProperty(prop)) {
44 return;
45 }
46
47 if (!matchesStringOrRegExp(postcss.vendor.unprefixed(prop), list)) {
48 return;
49 }
50
51 report({
52 message: messages.rejected(prop),
53 node: decl,
54 result,
55 ruleName,
56 });
57 });
58 };
59}
60
61rule.primaryOptionArray = true;
62
63rule.ruleName = ruleName;
64rule.messages = messages;
65module.exports = rule;