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