Files
formipay/node_modules/stylelint/lib/validateDisableSettings.js
dwindown e8fbfb14c1 fix: prevent asset conflicts between React and Grid.js versions
Add coexistence checks to all enqueue methods to prevent loading
both React and Grid.js assets simultaneously.

Changes:
- ReactAdmin.php: Only enqueue React assets when ?react=1
- Init.php: Skip Grid.js when React active on admin pages
- Form.php, Coupon.php, Access.php: Restore classic assets when ?react=0
- Customer.php, Product.php, License.php: Add coexistence checks

Now the toggle between Classic and React versions works correctly.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 17:02:14 +07:00

80 lines
2.1 KiB
JavaScript

'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,
];
};