language: javascript
queries:
declarations: |
; function declarations
(function_declaration name: (identifier) @name) @decl
; class declarations
(class_declaration name: (identifier) @name) @decl
; class methods
(method_definition name: (property_identifier) @name) @decl
; variable-declared functions (arrow only; function expr omitted for grammar compat)
(variable_declarator name: (identifier) @name value: (arrow_function)) @decl
; exported variable-declared functions (arrow)
(export_statement (variable_declaration (variable_declarator name: (identifier) @name value: (arrow_function)))) @decl
; assignment to exports.* with arrow (supports nested like module.exports.foo)
(assignment_expression left: (member_expression object: (_) property: (property_identifier) @name) right: (arrow_function)) @decl
calls: |
; simple calls: foo()
(call_expression function: (identifier) @name) @call
; member calls: capture full object as qual for nested chains
(call_expression function: (member_expression object: (_) @qual property: (property_identifier) @name)) @call
imports: |
; import from 'mod'
(import_statement (string) @mod)
; require('mod') commonjs
(call_expression function: (identifier) @name arguments: (arguments (string) @mod)) @use
control: |
(if_statement) @ctrl
(for_statement) @ctrl
(while_statement) @ctrl