stylelint
Version: 
A mighty CSS linter that helps you avoid errors and enforce conventions.
57 lines (44 loc) • 1.71 kB
JavaScript
// NOTICE: This file is generated by Rollup. To modify it,
// please instead edit the ESM counterpart and rebuild with Rollup (npm run build).
;
const constants = require('./constants.cjs');
const optionsMatches = require('./utils/optionsMatches.cjs');
const reportCommentProblem = require('./utils/reportCommentProblem.cjs');
const validateDisableSettings = require('./validateDisableSettings.cjs');
/**
 * @param {import('stylelint').PostcssResult} postcssResult
 * @returns {void}
 */
function descriptionlessDisables(postcssResult) {
	const [enabled, options] = validateDisableSettings(
		postcssResult,
		'reportDescriptionlessDisables',
	);
	if (!options) return;
	/** @type {Set<import('postcss').Node>} */
	const alreadyReported = new Set();
	for (const [rule, ruleRanges] of Object.entries(postcssResult.stylelint.disabledRanges)) {
		for (const range of ruleRanges) {
			if (range.description) continue;
			const node = range.node;
			if (alreadyReported.has(node)) continue;
			if (enabled === optionsMatches(options, 'except', rule)) {
				// An 'all' rule will get copied for each individual rule. If the
				// configuration is `[false, {except: ['specific-rule']}]`, we
				// don't want to report the copies that match except, so we record
				// the comment as already reported.
				if (!enabled && rule === constants.RULE_NAME_ALL) alreadyReported.add(node);
				continue;
			}
			alreadyReported.add(node);
			reportCommentProblem({
				rule: '--report-descriptionless-disables',
				message: `Disable for "${rule}" is missing a description`,
				severity: options.severity,
				node,
				postcssResult,
			});
		}
	}
}
module.exports = descriptionlessDisables;