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