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