(node: TSESTree.ClassDeclaration)
| 462 | } |
| 463 | |
| 464 | function isReactComponentSuperclass(node: TSESTree.ClassDeclaration): boolean { |
| 465 | const superClass = node.superClass; |
| 466 | if (!superClass) { |
| 467 | return false; |
| 468 | } |
| 469 | if (superClass.type === 'Identifier') { |
| 470 | return superClass.name === 'Component' || superClass.name === 'PureComponent'; |
| 471 | } |
| 472 | if ( |
| 473 | superClass.type === 'MemberExpression' && |
| 474 | superClass.object.type === 'Identifier' && |
| 475 | superClass.property.type === 'Identifier' |
| 476 | ) { |
| 477 | return ( |
| 478 | superClass.object.name === 'React' && |
| 479 | (superClass.property.name === 'Component' || superClass.property.name === 'PureComponent') |
| 480 | ); |
| 481 | } |
| 482 | return false; |
| 483 | } |
| 484 | |
| 485 | function containsJsx(node: TSESTree.Node | TSESTree.Node[] | null): boolean { |
| 486 | if (!node) { |
no outgoing calls
no test coverage detected