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