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