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