Ignore:
Timestamp:
12/12/24 17:06:06 (5 weeks ago)
Author:
stefan toskovski <stefantoska84@…>
Branches:
main
Parents:
d565449
Message:

Pred finalna verzija

File:
1 edited

Legend:

Unmodified
Added
Removed
  • imaps-frontend/node_modules/eslint-plugin-react/lib/rules/no-access-state-in-setstate.js

    rd565449 r0c6b92a  
    77
    88const docsUrl = require('../util/docsUrl');
     9const astUtil = require('../util/ast');
    910const componentUtil = require('../util/componentUtil');
    1011const report = require('../util/report');
     
    1920};
    2021
     22/** @type {import('eslint').Rule.RuleModule} */
    2123module.exports = {
    2224  meta: {
     
    3335  create(context) {
    3436    function isSetStateCall(node) {
    35       return node.type === 'CallExpression'
     37      return astUtil.isCallExpression(node)
    3638        && node.callee.property
    3739        && node.callee.property.name === 'setState'
     
    7375        // method containing this.state to the methods array
    7476        methods.forEach((method) => {
    75           if (node.callee.name === method.methodName) {
     77          if ('name' in node.callee && node.callee.name === method.methodName) {
    7678            let current = node.parent;
    7779            while (current.type !== 'Program') {
    7880              if (current.type === 'MethodDefinition') {
    7981                methods.push({
    80                   methodName: current.key.name,
     82                  methodName: 'name' in current.key ? current.key.name : undefined,
    8183                  node: method.node,
    8284                });
     
    9395        while (current.type !== 'Program') {
    9496          if (isFirstArgumentInSetStateCall(current, node)) {
    95             const methodName = node.callee.name;
     97            const methodName = 'name' in node.callee ? node.callee.name : undefined;
    9698            methods.forEach((method) => {
    9799              if (method.methodName === methodName) {
     
    110112      MemberExpression(node) {
    111113        if (
    112           node.property.name === 'state'
     114          'name' in node.property
     115          && node.property.name === 'state'
    113116          && node.object.type === 'ThisExpression'
    114117          && isClassComponent(node)
    115118        ) {
     119          /** @type {import("eslint").Rule.Node} */
    116120          let current = node;
    117121          while (current.type !== 'Program') {
     
    127131            if (current.type === 'MethodDefinition') {
    128132              methods.push({
    129                 methodName: current.key.name,
    130                 node,
    131               });
    132               break;
    133             } else if (current.type === 'FunctionExpression' && current.parent.key) {
     133                methodName: 'name' in current.key ? current.key.name : undefined,
     134                node,
     135              });
     136              break;
     137            } else if (
     138              current.type === 'FunctionExpression'
     139              && 'key' in current.parent
     140              && current.parent.key
     141            ) {
    134142              methods.push({
    135                 methodName: current.parent.key.name,
     143                methodName: 'name' in current.parent.key ? current.parent.key.name : undefined,
    136144                node,
    137145              });
     
    144152                node,
    145153                scope: getScope(context, node),
    146                 variableName: current.id.name,
     154                variableName: 'name' in current.id ? current.id.name : undefined,
    147155              });
    148156              break;
     
    156164      Identifier(node) {
    157165        // Checks if the identifier is a variable within an object
     166        /** @type {import("eslint").Rule.Node} */
    158167        let current = node;
    159168        while (current.parent.type === 'BinaryExpression') {
     
    161170        }
    162171        if (
    163           current.parent.value === current
    164           || current.parent.object === current
     172          ('value' in current.parent && current.parent.value === current)
     173          || ('object' in current.parent && current.parent.object === current)
    165174        ) {
    166175          while (current.type !== 'Program') {
     
    180189
    181190      ObjectPattern(node) {
    182         const isDerivedFromThis = node.parent.init && node.parent.init.type === 'ThisExpression';
     191        const isDerivedFromThis = 'init' in node.parent && node.parent.init && node.parent.init.type === 'ThisExpression';
    183192        node.properties.forEach((property) => {
    184           if (property && property.key && property.key.name === 'state' && isDerivedFromThis) {
     193          if (
     194            property
     195            && 'key' in property
     196            && property.key
     197            && 'name' in property.key
     198            && property.key.name === 'state'
     199            && isDerivedFromThis
     200          ) {
    185201            vars.push({
    186202              node: property.key,
Note: See TracChangeset for help on using the changeset viewer.