|
| 1 | +import * as AST from "@eslint-react/ast"; |
| 2 | +import { dual } from "@eslint-react/eff"; |
| 3 | +import type { RuleContext } from "@eslint-react/shared"; |
| 4 | +import type { TSESTree } from "@typescript-eslint/types"; |
| 5 | +import { AST_NODE_TYPES as T } from "@typescript-eslint/types"; |
| 6 | + |
| 7 | +import { isFromReact, isFromReactMember } from "./is-from-react"; |
| 8 | + |
| 9 | +export declare namespace isCallFromReact { |
| 10 | + type ReturnType = { |
| 11 | + (context: RuleContext): (node: TSESTree.Node) => node is TSESTree.CallExpression; |
| 12 | + (node: TSESTree.Node, context: RuleContext): node is TSESTree.CallExpression; |
| 13 | + }; |
| 14 | +} |
| 15 | + |
| 16 | +export function isCallFromReact(name: string): isCallFromReact.ReturnType { |
| 17 | + return dual(2, (node: TSESTree.Node, context: RuleContext): node is TSESTree.CallExpression => { |
| 18 | + if (node.type !== T.CallExpression) return false; |
| 19 | + if (!AST.isOneOf([T.Identifier, T.MemberExpression])(node.callee)) return false; |
| 20 | + return isFromReact(name)(node.callee, context); |
| 21 | + }); |
| 22 | +} |
| 23 | + |
| 24 | +export declare namespace isCallFromReactMember { |
| 25 | + type ReturnType = { |
| 26 | + (context: RuleContext): (node: TSESTree.Node) => node is |
| 27 | + & TSESTree.CallExpression |
| 28 | + & { callee: TSESTree.MemberExpression }; |
| 29 | + (node: TSESTree.Node, context: RuleContext): node is |
| 30 | + & TSESTree.CallExpression |
| 31 | + & { callee: TSESTree.MemberExpression }; |
| 32 | + }; |
| 33 | +} |
| 34 | + |
| 35 | +export function isCallFromReactMember( |
| 36 | + pragmaMemberName: string, |
| 37 | + name: string, |
| 38 | +): isCallFromReactMember.ReturnType { |
| 39 | + return dual(2, (node: TSESTree.Node, context: RuleContext): node is |
| 40 | + & TSESTree.CallExpression |
| 41 | + & { callee: TSESTree.MemberExpression } => |
| 42 | + { |
| 43 | + if (node.type !== T.CallExpression) return false; |
| 44 | + if (!AST.is(T.MemberExpression)(node.callee)) return false; |
| 45 | + return isFromReactMember(pragmaMemberName, name)(node.callee, context); |
| 46 | + }); |
| 47 | +} |
0 commit comments