12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 'use strict';
- const validateOptions = require('./utils/validateOptions');
- const { isRegExp, isString } = require('./utils/validateTypes');
- /**
- * @typedef {import('stylelint').PostcssResult} PostcssResult
- * @typedef {import('stylelint').DisableOptions} DisableOptions
- * @typedef {import('stylelint').DisablePropertyName} DisablePropertyName
- * @typedef {import('stylelint').StylelintPostcssResult} StylelintPostcssResult
- */
- /**
- * Validates that the stylelint config for `result` has a valid disable field
- * named `field`, and returns the result in normalized form as well as a
- * `StylelintPostcssResult` for convenience.
- *
- * Returns `null` if no disables should be reported, and automatically reports
- * an invalid configuration. If this returns non-`null`, it guarantees that
- * `result._postcssResult` is defined as well.
- *
- * @param {PostcssResult | undefined} result
- * @param {DisablePropertyName} field
- * @return {[boolean, Required<DisableOptions>, StylelintPostcssResult] | null}
- */
- module.exports = function validateDisableSettings(result, field) {
- // Files with `CssSyntaxError`s don't have `_postcssResult`s.
- if (!result) return null;
- const stylelintResult = result.stylelint;
- // Files with linting errors may not have configs associated with them.
- if (!stylelintResult.config) return null;
- const rawSettings = stylelintResult.config[field];
- /** @type {boolean} */
- let enabled;
- /** @type {DisableOptions} */
- let options;
- if (Array.isArray(rawSettings)) {
- enabled = rawSettings[0];
- options = rawSettings[1] || {};
- } else {
- enabled = rawSettings || false;
- options = {};
- }
- const validOptions = validateOptions(
- result,
- field,
- {
- actual: enabled,
- possible: [true, false],
- },
- {
- actual: options,
- possible: {
- except: [isString, isRegExp],
- },
- },
- );
- if (!validOptions) return null;
- // If the check is disabled with no exceptions, there's no reason to run
- // it at all.
- if (!enabled && !options.except) return null;
- return [
- enabled,
- {
- except: options.except || [],
- severity: options.severity || stylelintResult.config.defaultSeverity || 'error',
- },
- stylelintResult,
- ];
- };
|