index.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // @ts-nocheck
  2. 'use strict';
  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. const ruleName = 'property-blacklist';
  12. const messages = ruleMessages(ruleName, {
  13. rejected: (property) => `Unexpected property "${property}"`,
  14. });
  15. function rule(list) {
  16. return (root, result) => {
  17. const validOptions = validateOptions(result, ruleName, {
  18. actual: list,
  19. possible: [_.isString, _.isRegExp],
  20. });
  21. if (!validOptions) {
  22. return;
  23. }
  24. result.warn(`'${ruleName}' has been deprecated. Instead use 'property-disallowed-list'.`, {
  25. stylelintType: 'deprecation',
  26. stylelintReference: `https://github.com/stylelint/stylelint/blob/13.7.0/lib/rules/${ruleName}/README.md`,
  27. });
  28. root.walkDecls((decl) => {
  29. const prop = decl.prop;
  30. if (!isStandardSyntaxProperty(prop)) {
  31. return;
  32. }
  33. if (isCustomProperty(prop)) {
  34. return;
  35. }
  36. if (!matchesStringOrRegExp(postcss.vendor.unprefixed(prop), list)) {
  37. return;
  38. }
  39. report({
  40. message: messages.rejected(prop),
  41. node: decl,
  42. result,
  43. ruleName,
  44. });
  45. });
  46. };
  47. }
  48. rule.primaryOptionArray = true;
  49. rule.ruleName = ruleName;
  50. rule.messages = messages;
  51. module.exports = rule;