Files
formipay/node_modules/eslint-plugin-playwright/lib/rules/no-restricted-matchers.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

73 lines
2.9 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const ast_1 = require("../utils/ast");
const parseExpectCall_1 = require("../utils/parseExpectCall");
exports.default = {
create(context) {
const restrictedChains = (context.options?.[0] ?? {});
return {
CallExpression(node) {
const expectCall = (0, parseExpectCall_1.parseExpectCall)(node);
if (!expectCall)
return;
Object.entries(restrictedChains)
.map(([restriction, message]) => {
const chain = expectCall.members;
const restrictionLinks = restriction.split('.').length;
// Find in the full chain, where the restriction chain starts
const startIndex = chain.findIndex((_, i) => {
// Construct the partial chain to compare against the restriction
// chain string.
const partial = chain
.slice(i, i + restrictionLinks)
.map(ast_1.getStringValue)
.join('.');
return partial === restriction;
});
return {
// If the restriction chain was found, return the portion of the
// chain that matches the restriction chain.
chain: startIndex !== -1
? chain.slice(startIndex, startIndex + restrictionLinks)
: [],
message,
restriction,
};
})
.filter(({ chain }) => chain.length)
.forEach(({ chain, message, restriction }) => {
context.report({
data: { message: message ?? '', restriction },
loc: {
end: chain[chain.length - 1].loc.end,
start: chain[0].loc.start,
},
messageId: message ? 'restrictedWithMessage' : 'restricted',
});
});
},
};
},
meta: {
docs: {
category: 'Best Practices',
description: 'Disallow specific matchers & modifiers',
recommended: false,
url: 'https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-matchers.md',
},
messages: {
restricted: 'Use of `{{restriction}}` is disallowed',
restrictedWithMessage: '{{message}}',
},
schema: [
{
additionalProperties: {
type: ['string', 'null'],
},
type: 'object',
},
],
type: 'suggestion',
},
};