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