in packages/eslint-plugin-baseui/src/no-shorthand-properties.js [58:101]
JSXOpeningElement(node) {
if (importState[node.name.name] && hasProp(node.attributes, 'overrides')) {
const overrides = node.attributes
// JsxSpreadAttribute {...foo} does not have a name parameter
.filter((attr) => attr.name && attr.name.name === 'overrides')
.pop();
if (
!overrides ||
!overrides.value ||
!overrides.value.expression ||
overrides.value.expression.type !== 'ObjectExpression'
) {
return;
}
const expression = overrides.value.expression;
const nodesToScan = [...expression.properties];
while (nodesToScan.length > 0) {
const property = nodesToScan.shift();
if (property.value) {
if (property.value.type === 'ObjectExpression') {
nodesToScan.push(...property.value.properties);
} else if (property.value.type === 'ArrowFunctionExpression') {
nodesToScan.push(...property.value.body.properties);
} else if (property.value.type === 'FunctionExpression') {
const returnArg = property.value.body.body[property.value.body.body.length - 1];
nodesToScan.push(...returnArg.argument.properties);
}
}
if (
property.type === 'Property' &&
property.key &&
property.value &&
property.value.type !== 'ObjectExpression'
) {
if (SHORTHAND_PROPERTIES.includes(property.key.name)) {
context.report({
node: property,
messageId: MESSAGES.noShorthandProperties.id,
});
}
}
}
}
},