destructures.scm
1 ;; ═════════════════════════════════════════════════════════════════ 2 ;; TypeScript Destructuring Pattern Queries (from identifiers) 3 ;; ═════════════════════════════════════════════════════════════════ 4 ;; These patterns capture destructuring from arbitrary identifiers, 5 ;; allowing tracking like: const env = process.env; const { VAR } = env; 6 ;; 7 ;; Note: Direct destructuring from process.env is handled in bindings.scm 8 9 ;; ─────────────────────────────────────────────────────────────────── 10 ;; const { VAR } = identifier (shorthand destructuring from alias) 11 ;; ─────────────────────────────────────────────────────────────────── 12 (variable_declarator 13 name: (object_pattern 14 (shorthand_property_identifier_pattern) @destructure_target @destructure_key) 15 value: (identifier) @destructure_source) @destructure 16 17 ;; ─────────────────────────────────────────────────────────────────── 18 ;; const { KEY: alias } = identifier (renamed destructuring from alias) 19 ;; ─────────────────────────────────────────────────────────────────── 20 (variable_declarator 21 name: (object_pattern 22 (pair_pattern 23 key: (property_identifier) @destructure_key 24 value: (identifier) @destructure_target)) 25 value: (identifier) @destructure_source) @destructure 26 27 ;; ─────────────────────────────────────────────────────────────────── 28 ;; const { KEY: alias = default } = identifier (with default value) 29 ;; ─────────────────────────────────────────────────────────────────── 30 (variable_declarator 31 name: (object_pattern 32 (pair_pattern 33 key: (property_identifier) @destructure_key 34 value: (assignment_pattern 35 left: (identifier) @destructure_target 36 right: (_)))) 37 value: (identifier) @destructure_source) @destructure 38 39 ;; ─────────────────────────────────────────────────────────────────── 40 ;; const { VAR = default } = identifier (shorthand with default) 41 ;; ─────────────────────────────────────────────────────────────────── 42 (variable_declarator 43 name: (object_pattern 44 (object_assignment_pattern 45 (shorthand_property_identifier_pattern) @destructure_target @destructure_key 46 (_))) 47 value: (identifier) @destructure_source) @destructure 48 49 ;; ─────────────────────────────────────────────────────────────────── 50 ;; TypeScript: const { VAR } = obj as EnvType 51 ;; ─────────────────────────────────────────────────────────────────── 52 (variable_declarator 53 name: (object_pattern 54 (shorthand_property_identifier_pattern) @destructure_target @destructure_key) 55 value: (as_expression 56 (identifier) @destructure_source)) @destructure 57 58 ;; ─────────────────────────────────────────────────────────────────── 59 ;; TypeScript: const { KEY: alias } = obj as EnvType 60 ;; ─────────────────────────────────────────────────────────────────── 61 (variable_declarator 62 name: (object_pattern 63 (pair_pattern 64 key: (property_identifier) @destructure_key 65 value: (identifier) @destructure_target)) 66 value: (as_expression 67 (identifier) @destructure_source)) @destructure 68 69 ;; ─────────────────────────────────────────────────────────────────── 70 ;; TypeScript: const { VAR } = obj! 71 ;; ─────────────────────────────────────────────────────────────────── 72 (variable_declarator 73 name: (object_pattern 74 (shorthand_property_identifier_pattern) @destructure_target @destructure_key) 75 value: (non_null_expression 76 (identifier) @destructure_source)) @destructure