outline.scm

  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      [
 34        "let"
 35        "const"
 36      ] @context
 37      (variable_declarator
 38        name: (identifier) @name) @item)))
 39
 40; Exported array destructuring
 41(program
 42  (export_statement
 43    (lexical_declaration
 44      [
 45        "let"
 46        "const"
 47      ] @context
 48      (variable_declarator
 49        name: (array_pattern
 50          [
 51            (identifier) @name @item
 52            (assignment_pattern
 53              left: (identifier) @name @item)
 54            (rest_pattern
 55              (identifier) @name @item)
 56          ])))))
 57
 58; Exported object destructuring
 59(program
 60  (export_statement
 61    (lexical_declaration
 62      [
 63        "let"
 64        "const"
 65      ] @context
 66      (variable_declarator
 67        name: (object_pattern
 68          [
 69            (shorthand_property_identifier_pattern) @name @item
 70            (pair_pattern
 71              value: (identifier) @name @item)
 72            (pair_pattern
 73              value: (assignment_pattern
 74                left: (identifier) @name @item))
 75            (rest_pattern
 76              (identifier) @name @item)
 77          ])))))
 78
 79(program
 80  (lexical_declaration
 81    [
 82      "let"
 83      "const"
 84    ] @context
 85    (variable_declarator
 86      name: (identifier) @name) @item))
 87
 88; Top-level array destructuring
 89(program
 90  (lexical_declaration
 91    [
 92      "let"
 93      "const"
 94    ] @context
 95    (variable_declarator
 96      name: (array_pattern
 97        [
 98          (identifier) @name @item
 99          (assignment_pattern
100            left: (identifier) @name @item)
101          (rest_pattern
102            (identifier) @name @item)
103        ]))))
104
105; Top-level object destructuring
106(program
107  (lexical_declaration
108    [
109      "let"
110      "const"
111    ] @context
112    (variable_declarator
113      name: (object_pattern
114        [
115          (shorthand_property_identifier_pattern) @name @item
116          (pair_pattern
117            value: (identifier) @name @item)
118          (pair_pattern
119            value: (assignment_pattern
120              left: (identifier) @name @item))
121          (rest_pattern
122            (identifier) @name @item)
123        ]))))
124
125(class_declaration
126  "class" @context
127  name: (_) @name) @item
128
129; Method definitions in classes (not in object literals)
130(class_body
131  (method_definition
132    [
133      "get"
134      "set"
135      "async"
136      "*"
137      "readonly"
138      "static"
139      (override_modifier)
140      (accessibility_modifier)
141    ]* @context
142    name: (_) @name
143    parameters: (formal_parameters
144      "(" @context
145      ")" @context)) @item)
146
147; Object literal methods
148(variable_declarator
149  value: (object
150    (method_definition
151      [
152        "get"
153        "set"
154        "async"
155        "*"
156      ]* @context
157      name: (_) @name
158      parameters: (formal_parameters
159        "(" @context
160        ")" @context)) @item))
161
162(public_field_definition
163  [
164    "declare"
165    "readonly"
166    "abstract"
167    "static"
168    (accessibility_modifier)
169  ]* @context
170  name: (_) @name) @item
171
172; Add support for (node:test, bun:test and Jest) runnable
173((call_expression
174  function: [
175    (identifier) @_name
176    (member_expression
177      object: [
178        (identifier) @_name
179        (member_expression
180          object: (identifier) @_name)
181      ])
182  ] @context
183  (#any-of? @_name "it" "test" "describe" "context" "suite")
184  arguments: (arguments
185    .
186    [
187      (string
188        (string_fragment) @name)
189      (identifier) @name
190    ]))) @item
191
192; Add support for parameterized tests
193((call_expression
194  function: (call_expression
195    function: (member_expression
196      object: [
197        (identifier) @_name
198        (member_expression
199          object: (identifier) @_name)
200      ]
201      property: (property_identifier) @_property)
202    (#any-of? @_name "it" "test" "describe" "context" "suite")
203    (#eq? @_property "each"))
204  arguments: (arguments
205    .
206    [
207      (string
208        (string_fragment) @name)
209      (identifier) @name
210    ]))) @item
211
212; Object properties
213(pair
214  key: [
215    (property_identifier) @name
216    (string
217      (string_fragment) @name)
218    (number) @name
219    (computed_property_name) @name
220  ]) @item
221
222; Nested variables in function bodies
223(statement_block
224  (lexical_declaration
225    [
226      "let"
227      "const"
228    ] @context
229    (variable_declarator
230      name: (identifier) @name) @item))
231
232; Nested array destructuring in functions
233(statement_block
234  (lexical_declaration
235    [
236      "let"
237      "const"
238    ] @context
239    (variable_declarator
240      name: (array_pattern
241        [
242          (identifier) @name @item
243          (assignment_pattern
244            left: (identifier) @name @item)
245          (rest_pattern
246            (identifier) @name @item)
247        ]))))
248
249; Nested object destructuring in functions
250(statement_block
251  (lexical_declaration
252    [
253      "let"
254      "const"
255    ] @context
256    (variable_declarator
257      name: (object_pattern
258        [
259          (shorthand_property_identifier_pattern) @name @item
260          (pair_pattern
261            value: (identifier) @name @item)
262          (pair_pattern
263            value: (assignment_pattern
264              left: (identifier) @name @item))
265          (rest_pattern
266            (identifier) @name @item)
267        ]))))
268
269(comment) @annotation