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(generator_function_declaration
22 "async"? @context
23 "function" @context
24 "*" @context
25 name: (_) @name
26 parameters: (formal_parameters
27 "(" @context
28 ")" @context)) @item
29
30(interface_declaration
31 "interface" @context
32 name: (_) @name) @item
33
34(export_statement
35 (lexical_declaration
36 ["let" "const"] @context
37 (variable_declarator
38 name: (_) @name) @item))
39
40(program
41 (lexical_declaration
42 ["let" "const"] @context
43 (variable_declarator
44 name: (_) @name) @item))
45
46(class_declaration
47 "class" @context
48 name: (_) @name) @item
49
50(abstract_class_declaration
51 "abstract" @context
52 "class" @context
53 name: (_) @name) @item
54
55(method_definition
56 [
57 "get"
58 "set"
59 "async"
60 "*"
61 "readonly"
62 "static"
63 (override_modifier)
64 (accessibility_modifier)
65 ]* @context
66 name: (_) @name
67 parameters: (formal_parameters
68 "(" @context
69 ")" @context)) @item
70
71(public_field_definition
72 [
73 "declare"
74 "readonly"
75 "abstract"
76 "static"
77 (accessibility_modifier)
78 ]* @context
79 name: (_) @name) @item
80
81; Add support for (node:test, bun:test and Jest) runnable
82(
83 (call_expression
84 function: [
85 (identifier) @_name
86 (member_expression
87 object: [
88 (identifier) @_name
89 (member_expression object: (identifier) @_name)
90 ]
91 )
92 ] @context
93 (#any-of? @_name "it" "test" "describe" "context" "suite")
94 arguments: (
95 arguments . [
96 (string (string_fragment) @name)
97 (identifier) @name
98 ]
99 )
100 )
101) @item
102
103; Add support for parameterized tests
104(
105 (call_expression
106 function: (call_expression
107 function: (member_expression
108 object: [(identifier) @_name (member_expression object: (identifier) @_name)]
109 property: (property_identifier) @_property
110 )
111 (#any-of? @_name "it" "test" "describe" "context" "suite")
112 (#any-of? @_property "each")
113 )
114 arguments: (
115 arguments . [
116 (string (string_fragment) @name)
117 (identifier) @name
118 ]
119 )
120 )
121) @item
122
123(comment) @annotation