scope_engine/language/
typescript.rs1use super::{LanguageAdapter, LanguageQueries};
2use tree_sitter::Language;
3
4pub struct TypeScriptAdapter;
5
6impl TypeScriptAdapter {
7 pub fn new() -> Self {
8 Self
9 }
10}
11
12impl LanguageAdapter for TypeScriptAdapter {
13 fn language_name(&self) -> &'static str {
14 "typescript"
15 }
16
17 fn extensions(&self) -> &[&'static str] {
18 &["ts"]
19 }
20
21 fn language(&self) -> Language {
22 tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into()
23 }
24
25 fn queries(&self) -> LanguageQueries {
26 Self::ts_queries()
27 }
28}
29
30pub struct TsxAdapter;
31
32impl TsxAdapter {
33 pub fn new() -> Self {
34 Self
35 }
36}
37
38impl LanguageAdapter for TsxAdapter {
39 fn language_name(&self) -> &'static str {
40 "typescript"
41 }
42
43 fn extensions(&self) -> &[&'static str] {
44 &["tsx"]
45 }
46
47 fn language(&self) -> Language {
48 tree_sitter_typescript::LANGUAGE_TSX.into()
49 }
50
51 fn queries(&self) -> LanguageQueries {
52 TypeScriptAdapter::ts_queries()
53 }
54}
55
56pub struct JavaScriptAdapter;
57
58impl JavaScriptAdapter {
59 pub fn new() -> Self {
60 Self
61 }
62}
63
64impl Default for JavaScriptAdapter {
65 fn default() -> Self {
66 Self::new()
67 }
68}
69
70impl LanguageAdapter for JavaScriptAdapter {
71 fn language_name(&self) -> &'static str {
72 "javascript"
73 }
74
75 fn extensions(&self) -> &[&'static str] {
76 &["js", "jsx"]
77 }
78
79 fn language(&self) -> Language {
80 tree_sitter_typescript::LANGUAGE_TSX.into()
81 }
82
83 fn queries(&self) -> LanguageQueries {
84 TypeScriptAdapter::ts_queries()
85 }
86}
87
88impl TypeScriptAdapter {
89 pub fn ts_queries() -> LanguageQueries {
90 LanguageQueries {
91 definitions: r#"
92 (function_declaration name: (identifier) @name) @def
93 (function_signature name: (identifier) @name) @def
94 (variable_declarator name: (identifier) @name value: (arrow_function)) @def
95 (variable_declarator name: (identifier) @name value: (function_expression)) @def
96 (class_declaration name: (type_identifier) @name) @def
97 (interface_declaration name: (type_identifier) @name) @def
98 (type_alias_declaration name: (type_identifier) @name) @def
99 (enum_declaration name: (identifier) @name) @def
100 (method_definition name: (property_identifier) @name) @def
101 "#,
102 references: r#"
103 (call_expression function: (identifier) @ref) @call
104 (call_expression function: (member_expression property: (property_identifier) @ref)) @call
105 (new_expression constructor: (identifier) @ref) @call
106 (type_identifier) @ref
107 "#,
108 }
109 }
110}
111
112impl Default for TypeScriptAdapter {
113 fn default() -> Self {
114 Self::new()
115 }
116}
117
118impl Default for TsxAdapter {
119 fn default() -> Self {
120 Self::new()
121 }
122}