(internal_module "namespace" @context name: (_) @name) @item (enum_declaration "enum" @context name: (_) @name) @item (function_declaration "async"? @context "function" @context name: (_) @name parameters: (formal_parameters "(" @context ")" @context)) @item (generator_function_declaration "async"? @context "function" @context "*" @context name: (_) @name parameters: (formal_parameters "(" @context ")" @context)) @item (interface_declaration "interface" @context name: (_) @name) @item (program (export_statement (lexical_declaration [ "let" "const" ] @context (variable_declarator name: (identifier) @name) @item))) ; Exported array destructuring(program (export_statement (lexical_declaration [ "let" "const" ] @context (variable_declarator name: (array_pattern [ (identifier) @name @item (assignment_pattern left: (identifier) @name @item) (rest_pattern (identifier) @name @item) ]))))) ; Exported object destructuring(program (export_statement (lexical_declaration [ "let" "const" ] @context (variable_declarator name: (object_pattern [ (shorthand_property_identifier_pattern) @name @item (pair_pattern value: (identifier) @name @item) (pair_pattern value: (assignment_pattern left: (identifier) @name @item)) (rest_pattern (identifier) @name @item) ]))))) (program (lexical_declaration [ "let" "const" ] @context (variable_declarator name: (identifier) @name) @item)) ; Top-level array destructuring(program (lexical_declaration [ "let" "const" ] @context (variable_declarator name: (array_pattern [ (identifier) @name @item (assignment_pattern left: (identifier) @name @item) (rest_pattern (identifier) @name @item) ])))) ; Top-level object destructuring(program (lexical_declaration [ "let" "const" ] @context (variable_declarator name: (object_pattern [ (shorthand_property_identifier_pattern) @name @item (pair_pattern value: (identifier) @name @item) (pair_pattern value: (assignment_pattern left: (identifier) @name @item)) (rest_pattern (identifier) @name @item) ])))) (class_declaration "class" @context name: (_) @name) @item ; Method definitions in classes (not in object literals)(class_body (method_definition [ "get" "set" "async" "*" "readonly" "static" (override_modifier) (accessibility_modifier) ]* @context name: (_) @name parameters: (formal_parameters "(" @context ")" @context)) @item) ; Object literal methods(variable_declarator value: (object (method_definition [ "get" "set" "async" "*" ]* @context name: (_) @name parameters: (formal_parameters "(" @context ")" @context)) @item)) (public_field_definition [ "declare" "readonly" "abstract" "static" (accessibility_modifier) ]* @context name: (_) @name) @item ; Add support for (node:test, bun:test and Jest) runnable((call_expression function: [ (identifier) @_name (member_expression object: [ (identifier) @_name (member_expression object: (identifier) @_name) ]) ] @context (#any-of? @_name "it" "test" "describe" "context" "suite") arguments: (arguments . [ (string (string_fragment) @name) (identifier) @name ]))) @item ; Add support for parameterized tests((call_expression function: (call_expression function: (member_expression object: [ (identifier) @_name (member_expression object: (identifier) @_name) ] property: (property_identifier) @_property) (#any-of? @_name "it" "test" "describe" "context" "suite") (#eq? @_property "each")) arguments: (arguments . [ (string (string_fragment) @name) (identifier) @name ]))) @item ; Object properties(pair key: [ (property_identifier) @name (string (string_fragment) @name) (number) @name (computed_property_name) @name ]) @item ; Nested variables in function bodies(statement_block (lexical_declaration [ "let" "const" ] @context (variable_declarator name: (identifier) @name) @item)) ; Nested array destructuring in functions(statement_block (lexical_declaration [ "let" "const" ] @context (variable_declarator name: (array_pattern [ (identifier) @name @item (assignment_pattern left: (identifier) @name @item) (rest_pattern (identifier) @name @item) ])))) ; Nested object destructuring in functions(statement_block (lexical_declaration [ "let" "const" ] @context (variable_declarator name: (object_pattern [ (shorthand_property_identifier_pattern) @name @item (pair_pattern value: (identifier) @name @item) (pair_pattern value: (assignment_pattern left: (identifier) @name @item)) (rest_pattern (identifier) @name @item) ])))) (comment) @annotation
(internal_module
"namespace" @context
name: (_) @name) @item
(enum_declaration
"enum" @context
name: (_) @name) @item
(function_declaration
"async"? @context
"function" @context
name: (_) @name
parameters: (formal_parameters
"(" @context
")" @context)) @item
(generator_function_declaration
"async"? @context
"function" @context
"*" @context
name: (_) @name
parameters: (formal_parameters
"(" @context
")" @context)) @item
(interface_declaration
"interface" @context
name: (_) @name) @item
(program
(export_statement
(lexical_declaration
[
"let"
"const"
] @context
(variable_declarator
name: (identifier) @name) @item)))
; Exported array destructuring
(program
(export_statement
(lexical_declaration
[
"let"
"const"
] @context
(variable_declarator
name: (array_pattern
[
(identifier) @name @item
(assignment_pattern
left: (identifier) @name @item)
(rest_pattern
(identifier) @name @item)
])))))
; Exported object destructuring
(program
(export_statement
(lexical_declaration
[
"let"
"const"
] @context
(variable_declarator
name: (object_pattern
[
(shorthand_property_identifier_pattern) @name @item
(pair_pattern
value: (identifier) @name @item)
(pair_pattern
value: (assignment_pattern
left: (identifier) @name @item))
(rest_pattern
(identifier) @name @item)
])))))
(program
(lexical_declaration
[
"let"
"const"
] @context
(variable_declarator
name: (identifier) @name) @item))
; Top-level array destructuring
(program
(lexical_declaration
[
"let"
"const"
] @context
(variable_declarator
name: (array_pattern
[
(identifier) @name @item
(assignment_pattern
left: (identifier) @name @item)
(rest_pattern
(identifier) @name @item)
]))))
; Top-level object destructuring
(program
(lexical_declaration
[
"let"
"const"
] @context
(variable_declarator
name: (object_pattern
[
(shorthand_property_identifier_pattern) @name @item
(pair_pattern
value: (identifier) @name @item)
(pair_pattern
value: (assignment_pattern
left: (identifier) @name @item))
(rest_pattern
(identifier) @name @item)
]))))
(class_declaration
"class" @context
name: (_) @name) @item
; Method definitions in classes (not in object literals)
(class_body
(method_definition
[
"get"
"set"
"async"
"*"
"readonly"
"static"
(override_modifier)
(accessibility_modifier)
]* @context
name: (_) @name
parameters: (formal_parameters
"(" @context
")" @context)) @item)
; Object literal methods
(variable_declarator
value: (object
(method_definition
[
"get"
"set"
"async"
"*"
]* @context
name: (_) @name
parameters: (formal_parameters
"(" @context
")" @context)) @item))
(public_field_definition
[
"declare"
"readonly"
"abstract"
"static"
(accessibility_modifier)
]* @context
name: (_) @name) @item
; Add support for (node:test, bun:test and Jest) runnable
((call_expression
function: [
(identifier) @_name
(member_expression
object: [
(identifier) @_name
(member_expression
object: (identifier) @_name)
])
] @context
(#any-of? @_name "it" "test" "describe" "context" "suite")
arguments: (arguments
.
[
(string
(string_fragment) @name)
(identifier) @name
]))) @item
; Add support for parameterized tests
((call_expression
function: (call_expression
function: (member_expression
object: [
(identifier) @_name
(member_expression
object: (identifier) @_name)
]
property: (property_identifier) @_property)
(#any-of? @_name "it" "test" "describe" "context" "suite")
(#eq? @_property "each"))
arguments: (arguments
.
[
(string
(string_fragment) @name)
(identifier) @name
]))) @item
; Object properties
(pair
key: [
(property_identifier) @name
(string
(string_fragment) @name)
(number) @name
(computed_property_name) @name
]) @item
; Nested variables in function bodies
(statement_block
(lexical_declaration
[
"let"
"const"
] @context
(variable_declarator
name: (identifier) @name) @item))
; Nested array destructuring in functions
(statement_block
(lexical_declaration
[
"let"
"const"
] @context
(variable_declarator
name: (array_pattern
[
(identifier) @name @item
(assignment_pattern
left: (identifier) @name @item)
(rest_pattern
(identifier) @name @item)
]))))
; Nested object destructuring in functions
(statement_block
(lexical_declaration
[
"let"
"const"
] @context
(variable_declarator
name: (object_pattern
[
(shorthand_property_identifier_pattern) @name @item
(pair_pattern
value: (identifier) @name @item)
(pair_pattern
value: (assignment_pattern
left: (identifier) @name @item))
(rest_pattern
(identifier) @name @item)
]))))
(comment) @annotation