1(internal_module
2 "namespace" @context
3 name: (_) @name) @item
4
5(enum_declaration
6 "enum" @context
7 name: (_) @name) @item
8
9(type_alias_declaration
10 "type" @context
11 name: (_) @name) @item
12
13(function_declaration
14 "async"? @context
15 "function" @context
16 name: (_) @name
17 parameters: (formal_parameters
18 "(" @context
19 ")" @context)) @item
20
21(interface_declaration
22 "interface" @context
23 name: (_) @name) @item
24
25(export_statement
26 (lexical_declaration
27 ["let" "const"] @context
28 (variable_declarator
29 name: (_) @name) @item))
30
31(program
32 (lexical_declaration
33 ["let" "const"] @context
34 (variable_declarator
35 name: (_) @name) @item))
36
37(class_declaration
38 "class" @context
39 name: (_) @name) @item
40
41(abstract_class_declaration
42 "abstract" @context
43 "class" @context
44 name: (_) @name) @item
45
46(method_definition
47 [
48 "get"
49 "set"
50 "async"
51 "*"
52 "readonly"
53 "static"
54 (override_modifier)
55 (accessibility_modifier)
56 ]* @context
57 name: (_) @name
58 parameters: (formal_parameters
59 "(" @context
60 ")" @context)) @item
61
62(public_field_definition
63 [
64 "declare"
65 "readonly"
66 "abstract"
67 "static"
68 (accessibility_modifier)
69 ]* @context
70 name: (_) @name) @item
71
72; Add support for (node:test, bun:test and Jest) runnable
73(
74 (call_expression
75 function: [
76 (identifier) @_name
77 (member_expression
78 object: [
79 (identifier) @_name
80 (member_expression object: (identifier) @_name)
81 ]
82 )
83 ] @context
84 (#any-of? @_name "it" "test" "describe" "context" "suite")
85 arguments: (
86 arguments . [
87 (string (string_fragment) @name)
88 (identifier) @name
89 ]
90 )
91 )
92) @item
93
94; Add support for parameterized tests
95(
96 (call_expression
97 function: (call_expression
98 function: (member_expression
99 object: [(identifier) @_name (member_expression object: (identifier) @_name)]
100 property: (property_identifier) @_property
101 )
102 (#any-of? @_name "it" "test" "describe" "context" "suite")
103 (#any-of? @_property "each")
104 )
105 arguments: (
106 arguments . [
107 (string (string_fragment) @name)
108 (identifier) @name
109 ]
110 )
111 )
112) @item
113
114(comment) @annotation