(&self, call: Node<'t>)
| 634 | } |
| 635 | |
| 636 | fn rtk_endpoint_handler(&self, call: Node<'t>) -> Option<Node<'t>> { |
| 637 | let args = call.child_by_field_name("arguments")?; |
| 638 | for i in 0..args.named_child_count() { |
| 639 | let Some(arg) = args.named_child(i) else { continue }; |
| 640 | if !matches!(arg.kind(), "object" | "object_expression") { |
| 641 | continue; |
| 642 | } |
| 643 | let mut query_fn: Option<Node> = None; |
| 644 | let mut query: Option<Node> = None; |
| 645 | let mut first_fn: Option<Node> = None; |
| 646 | for j in 0..arg.named_child_count() { |
| 647 | let Some(member) = arg.named_child(j) else { continue }; |
| 648 | let mut fn_node: Option<Node> = None; |
| 649 | let mut key_name = ""; |
| 650 | if member.kind() == "pair" { |
| 651 | if let Some(v) = member.child_by_field_name("value") { |
| 652 | if matches!(v.kind(), "arrow_function" | "function_expression") { |
| 653 | fn_node = Some(v); |
| 654 | if let Some(k) = member.child_by_field_name("key") { |
| 655 | key_name = self.text(k); |
| 656 | } |
| 657 | } |
| 658 | } |
| 659 | } else if member.kind() == "method_definition" { |
| 660 | fn_node = Some(member); |
| 661 | if let Some(k) = member.child_by_field_name("name") { |
| 662 | key_name = self.text(k); |
| 663 | } |
| 664 | } |
| 665 | let Some(f) = fn_node else { continue }; |
| 666 | if key_name == "queryFn" { |
| 667 | query_fn = Some(f); |
| 668 | } else if key_name == "query" { |
| 669 | query = Some(f); |
| 670 | } |
| 671 | if first_fn.is_none() { |
| 672 | first_fn = Some(f); |
| 673 | } |
| 674 | } |
| 675 | if let Some(f) = query_fn.or(query).or(first_fn) { |
| 676 | return Some(f); |
| 677 | } |
| 678 | } |
| 679 | None |
| 680 | } |
| 681 | |
| 682 | pub(super) fn looks_like_vue_store_file(&mut self) -> bool { |
| 683 | if let Some(v) = self.vue_store_file { |
no test coverage detected