99# Tree-sitter
1010import tree_sitter_python as tspython
1111import tree_sitter_javascript as tsjavascript
12- import tree_sitter_typescript as tstypescript
12+ try :
13+ import tree_sitter_typescript as tstypescript
14+ _HAS_TS_PARSER = True
15+ except ModuleNotFoundError :
16+ _HAS_TS_PARSER = False
1317from tree_sitter import Language , Parser
1418
1519from services .observability import logger , metrics
@@ -19,14 +23,24 @@ class DependencyAnalyzer:
1923 """Analyze code dependencies and build dependency graph"""
2024
2125 def __init__ (self ):
22- # Initialize parsers
26+ js_lang = Language (tsjavascript .language ())
27+ # Use proper TS parser if available, fall back to JS parser
28+ if _HAS_TS_PARSER :
29+ ts_lang = Language (tstypescript .language_typescript ())
30+ tsx_lang = Language (tstypescript .language_tsx ())
31+ else :
32+ logger .warning ("tree-sitter-typescript not installed, falling back to JS parser for TS/TSX" )
33+ ts_lang = js_lang
34+ tsx_lang = js_lang
35+
36+ self .has_ts_parser = _HAS_TS_PARSER
2337 self .parsers = {
2438 'python' : Parser (Language (tspython .language ())),
25- 'javascript' : Parser (Language ( tsjavascript . language ()) ),
26- 'typescript' : Parser (Language ( tstypescript . language_typescript ()) ),
27- 'tsx' : Parser (Language ( tstypescript . language_tsx ()) ),
39+ 'javascript' : Parser (js_lang ),
40+ 'typescript' : Parser (ts_lang ),
41+ 'tsx' : Parser (tsx_lang ),
2842 }
29- logger .info ("DependencyAnalyzer initialized" )
43+ logger .info ("DependencyAnalyzer initialized" , ts_parser = self . has_ts_parser )
3044
3145 def _detect_language (self , file_path : str ) -> str :
3246 """Detect language from file extension"""
0 commit comments