bindings.scm
1 ;; ═════════════════════════════════════════════════════════════════ 2 ;; JavaScript Environment Variable Binding Queries 3 ;; ═════════════════════════════════════════════════════════════════ 4 5 ;; ─────────────────────────────────────────────────────────────────── 6 ;; const/let/var x = process.env.VAR 7 ;; ─────────────────────────────────────────────────────────────────── 8 (variable_declarator 9 name: (identifier) @binding_name 10 value: (member_expression 11 object: (member_expression 12 object: (identifier) @_object 13 property: (property_identifier) @_property) 14 property: (property_identifier) @bound_env_var) 15 (#eq? @_object "process") 16 (#eq? @_property "env")) @env_binding 17 18 ;; ─────────────────────────────────────────────────────────────────── 19 ;; const/let/var x = process.env["VAR"] 20 ;; ─────────────────────────────────────────────────────────────────── 21 (variable_declarator 22 name: (identifier) @binding_name 23 value: (subscript_expression 24 object: (member_expression 25 object: (identifier) @_object 26 property: (property_identifier) @_property) 27 index: (string 28 (string_fragment) @bound_env_var)) 29 (#eq? @_object "process") 30 (#eq? @_property "env")) @env_binding 31 32 ;; ─────────────────────────────────────────────────────────────────── 33 ;; const { VAR } = process.env (destructuring) 34 ;; ─────────────────────────────────────────────────────────────────── 35 (variable_declarator 36 name: (object_pattern 37 (shorthand_property_identifier_pattern) @binding_name @bound_env_var) 38 value: (member_expression 39 object: (identifier) @_object 40 property: (property_identifier) @_property) 41 (#eq? @_object "process") 42 (#eq? @_property "env")) @env_binding 43 44 ;; ─────────────────────────────────────────────────────────────────── 45 ;; const { VAR: myVar } = process.env (renamed destructuring) 46 ;; ─────────────────────────────────────────────────────────────────── 47 (variable_declarator 48 name: (object_pattern 49 (pair_pattern 50 key: (property_identifier) @bound_env_var 51 value: (identifier) @binding_name)) 52 value: (member_expression 53 object: (identifier) @_object 54 property: (property_identifier) @_property) 55 (#eq? @_object "process") 56 (#eq? @_property "env")) @env_binding 57 58 ;; ─────────────────────────────────────────────────────────────────── 59 ;; const { VAR: myVar = "default" } = process.env (with default) 60 ;; ─────────────────────────────────────────────────────────────────── 61 (variable_declarator 62 name: (object_pattern 63 (pair_pattern 64 key: (property_identifier) @bound_env_var 65 value: (assignment_pattern 66 left: (identifier) @binding_name 67 right: (_)))) 68 value: (member_expression 69 object: (identifier) @_object 70 property: (property_identifier) @_property) 71 (#eq? @_object "process") 72 (#eq? @_property "env")) @env_binding 73 74 ;; ─────────────────────────────────────────────────────────────────── 75 ;; const env = process.env (object alias) 76 ;; ─────────────────────────────────────────────────────────────────── 77 (variable_declarator 78 name: (identifier) @binding_name 79 value: (member_expression 80 object: (identifier) @_object 81 property: (property_identifier) @_property) 82 (#eq? @_object "process") 83 (#eq? @_property "env")) @env_object_binding