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(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; Arrow functions in variable declarations (anywhere in the tree, including nested in functions)
128(lexical_declaration
129    ["let" "const"] @context
130    (variable_declarator
131        name: (_) @name
132        value: (arrow_function)) @item)
133
134; Async arrow functions in variable declarations
135(lexical_declaration
136    ["let" "const"] @context
137    (variable_declarator
138        name: (_) @name
139        value: (arrow_function
140            "async" @context)) @item)
141
142; Named function expressions in variable declarations
143(lexical_declaration
144    ["let" "const"] @context
145    (variable_declarator
146        name: (_) @name
147        value: (function_expression)) @item)
148
149(comment) @annotation