( (comment)* @doc . (method_definition name: (property_identifier) @name) @definition.method (#not-eq? @name "constructor") (#strip! @doc "^[\\s\\*/]+|^[\\s\\*/]$") (#select-adjacent! @doc @definition.method) ) ( (comment)* @doc . [ (class name: (_) @name) (class_declaration name: (_) @name) ] @definition.class (#strip! @doc "^[\\s\\*/]+|^[\\s\\*/]$") (#select-adjacent! @doc @definition.class) ) ( (comment)* @doc . [ (function_expression name: (identifier) @name) (function_declaration name: (identifier) @name) (generator_function name: (identifier) @name) (generator_function_declaration name: (identifier) @name) ] @definition.function (#strip! @doc "^[\\s\\*/]+|^[\\s\\*/]$") (#select-adjacent! @doc @definition.function) ) ( (comment)* @doc . (lexical_declaration (variable_declarator name: (identifier) @name value: [(arrow_function) (function_expression)]) @definition.function) (#strip! @doc "^[\\s\\*/]+|^[\\s\\*/]$") (#select-adjacent! @doc @definition.function) ) ( (comment)* @doc . (variable_declaration (variable_declarator name: (identifier) @name value: [(arrow_function) (function_expression)]) @definition.function) (#strip! @doc "^[\\s\\*/]+|^[\\s\\*/]$") (#select-adjacent! @doc @definition.function) ) (assignment_expression left: [ (identifier) @name (member_expression property: (property_identifier) @name) ] right: [(arrow_function) (function_expression)] ) @definition.function (pair key: (property_identifier) @name value: [(arrow_function) (function_expression)]) @definition.function ( (call_expression function: (identifier) @name) @reference.call (#not-match? @name "^(require)$") ) (call_expression function: (member_expression property: (property_identifier) @name) arguments: (_) @reference.call) (new_expression constructor: (_) @name) @reference.class (export_statement value: (assignment_expression left: (identifier) @name right: ([ (number) (string) (identifier) (undefined) (null) (new_expression) (binary_expression) (call_expression) ]))) @definition.constant