invalidScopeDisables.mjs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { RULE_NAME_ALL } from './constants.mjs';
  2. import optionsMatches from './utils/optionsMatches.mjs';
  3. import reportCommentProblem from './utils/reportCommentProblem.mjs';
  4. import validateDisableSettings from './validateDisableSettings.mjs';
  5. /**
  6. * @param {import('stylelint').PostcssResult} postcssResult
  7. * @returns {void}
  8. */
  9. export default function invalidScopeDisables(postcssResult) {
  10. const [enabled, options] = validateDisableSettings(postcssResult, 'reportInvalidScopeDisables');
  11. if (!options) return;
  12. const configRules = postcssResult.stylelint.config?.rules;
  13. if (!configRules) return;
  14. const usedRules = new Set(Object.keys(configRules));
  15. usedRules.add(RULE_NAME_ALL);
  16. for (const [rule, ruleRanges] of Object.entries(postcssResult.stylelint.disabledRanges)) {
  17. if (usedRules.has(rule)) continue;
  18. if (enabled === optionsMatches(options, 'except', rule)) continue;
  19. for (const range of ruleRanges) {
  20. if (!range.strictStart && !range.strictEnd) continue;
  21. reportCommentProblem({
  22. rule: '--report-invalid-scope-disables',
  23. message: `Rule "${rule}" isn't enabled`,
  24. severity: options.severity,
  25. node: range.node,
  26. postcssResult,
  27. });
  28. }
  29. }
  30. }