JSXOpeningElement()

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,
                });
              }
            }
          }
        }
      },