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

52 lines
1.7 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const ast_1 = require("../utils/ast");
function isForceOptionEnabled(node) {
const arg = node.arguments[node.arguments.length - 1];
return (arg?.type === 'ObjectExpression' &&
arg.properties.find((property) => property.type === 'Property' &&
(0, ast_1.getStringValue)(property.key) === 'force' &&
(0, ast_1.isBooleanLiteral)(property.value, true)));
}
// https://playwright.dev/docs/api/class-locator
const methodsWithForceOption = new Set([
'check',
'uncheck',
'click',
'dblclick',
'dragTo',
'fill',
'hover',
'selectOption',
'selectText',
'setChecked',
'tap',
]);
exports.default = {
create(context) {
return {
MemberExpression(node) {
if (methodsWithForceOption.has((0, ast_1.getStringValue)(node.property)) &&
node.parent.type === 'CallExpression') {
const reportNode = isForceOptionEnabled(node.parent);
if (reportNode) {
context.report({ messageId: 'noForceOption', node: reportNode });
}
}
},
};
},
meta: {
docs: {
category: 'Best Practices',
description: 'Prevent usage of `{ force: true }` option.',
recommended: true,
url: 'https://github.com/playwright-community/eslint-plugin-playwright/tree/main/docs/rules/no-force-option.md',
},
messages: {
noForceOption: 'Unexpected use of { force: true } option.',
},
type: 'suggestion',
},
};