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