|
6 | 6 | isArrayExpression, |
7 | 7 | isArrowFunctionExpression, |
8 | 8 | isAssignmentExpression, |
| 9 | + isChainExpression, |
9 | 10 | isBlockStatement, |
10 | 11 | isCallExpression, |
11 | 12 | isExpressionStatement, |
@@ -379,7 +380,7 @@ export function getPropertyIdentifierNode( |
379 | 380 | return getPropertyIdentifierNode(node.callee); |
380 | 381 | } |
381 | 382 |
|
382 | | - if (isExpressionStatement(node)) { |
| 383 | + if (isExpressionStatement(node) || isChainExpression(node)) { |
383 | 384 | return getPropertyIdentifierNode(node.expression); |
384 | 385 | } |
385 | 386 |
|
@@ -407,6 +408,10 @@ export function getDeepestIdentifierNode( |
407 | 408 | return node; |
408 | 409 | } |
409 | 410 |
|
| 411 | + if (isChainExpression(node)) { |
| 412 | + return getDeepestIdentifierNode(node.expression); |
| 413 | + } |
| 414 | + |
410 | 415 | if (isMemberExpression(node) && ASTUtils.isIdentifier(node.property)) { |
411 | 416 | return node.property; |
412 | 417 | } |
@@ -615,48 +620,45 @@ export function hasImportMatch( |
615 | 620 | return importNode.local.name === identifierName; |
616 | 621 | } |
617 | 622 |
|
618 | | -export function getStatementCallExpression( |
619 | | - statement: TSESTree.Statement |
620 | | -): TSESTree.CallExpression | undefined { |
621 | | - if (isExpressionStatement(statement)) { |
622 | | - const { expression } = statement; |
623 | | - if (isCallExpression(expression)) { |
624 | | - return expression; |
625 | | - } |
| 623 | +function getCallExpressionFromNode( |
| 624 | + node: TSESTree.Node | null |
| 625 | +): TSESTree.CallExpression | null { |
| 626 | + if (isCallExpression(node)) { |
| 627 | + return node; |
| 628 | + } |
626 | 629 |
|
627 | | - if ( |
628 | | - ASTUtils.isAwaitExpression(expression) && |
629 | | - isCallExpression(expression.argument) |
630 | | - ) { |
631 | | - return expression.argument; |
632 | | - } |
| 630 | + if (isChainExpression(node)) { |
| 631 | + return getCallExpressionFromNode(node.expression); |
| 632 | + } |
633 | 633 |
|
634 | | - if (isAssignmentExpression(expression)) { |
635 | | - if (isCallExpression(expression.right)) { |
636 | | - return expression.right; |
637 | | - } |
| 634 | + if (ASTUtils.isAwaitExpression(node)) { |
| 635 | + return getCallExpressionFromNode(node.argument); |
| 636 | + } |
638 | 637 |
|
639 | | - if ( |
640 | | - ASTUtils.isAwaitExpression(expression.right) && |
641 | | - isCallExpression(expression.right.argument) |
642 | | - ) { |
643 | | - return expression.right.argument; |
644 | | - } |
645 | | - } |
| 638 | + if (isAssignmentExpression(node)) { |
| 639 | + return getCallExpressionFromNode(node.right); |
646 | 640 | } |
647 | 641 |
|
648 | | - if (isReturnStatement(statement) && isCallExpression(statement.argument)) { |
649 | | - return statement.argument; |
| 642 | + return null; |
| 643 | +} |
| 644 | + |
| 645 | +export function getStatementCallExpression( |
| 646 | + statement: TSESTree.Statement |
| 647 | +): TSESTree.CallExpression | null { |
| 648 | + if (isExpressionStatement(statement)) { |
| 649 | + return getCallExpressionFromNode(statement.expression); |
| 650 | + } |
| 651 | + |
| 652 | + if (isReturnStatement(statement)) { |
| 653 | + return getCallExpressionFromNode(statement.argument); |
650 | 654 | } |
651 | 655 |
|
652 | 656 | if (isVariableDeclaration(statement)) { |
653 | 657 | for (const declaration of statement.declarations) { |
654 | | - if (isCallExpression(declaration.init)) { |
655 | | - return declaration.init; |
656 | | - } |
| 658 | + return getCallExpressionFromNode(declaration.init); |
657 | 659 | } |
658 | 660 | } |
659 | | - return undefined; |
| 661 | + return null; |
660 | 662 | } |
661 | 663 |
|
662 | 664 | /** |
|
0 commit comments