@@ -8,13 +8,15 @@ use std::{cell::RefCell, path::Path, rc::Rc};
88use swc_common:: comments:: SingleThreadedComments ;
99use swc_common:: errors:: { Handler , HandlerFlags } ;
1010use swc_common:: { chain, FileName , Globals , Mark , SourceMap } ;
11+ use swc_ecma_transforms:: pass:: Optional ;
1112use swc_ecma_transforms:: proposals:: decorators;
12- use swc_ecma_transforms:: react;
1313use swc_ecma_transforms:: typescript:: strip;
14- use swc_ecma_transforms:: { fixer, helpers, hygiene, pass :: Optional , resolver_with_mark } ;
14+ use swc_ecma_transforms:: { fixer, helpers, hygiene, react } ;
1515use swc_ecmascript:: ast:: { EsVersion , Module , Program } ;
16- use swc_ecmascript:: codegen:: { text_writer:: JsWriter , Node } ;
17- use swc_ecmascript:: parser:: { lexer:: Lexer , EsConfig , StringInput , Syntax , TsConfig } ;
16+ use swc_ecmascript:: codegen:: text_writer:: JsWriter ;
17+ use swc_ecmascript:: codegen:: Node ;
18+ use swc_ecmascript:: parser:: lexer:: Lexer ;
19+ use swc_ecmascript:: parser:: { EsConfig , StringInput , Syntax , TsConfig } ;
1820use swc_ecmascript:: visit:: { Fold , FoldWith } ;
1921
2022/// Options for transpiling a module.
@@ -106,9 +108,12 @@ impl SWC {
106108 options : & EmitOptions ,
107109 ) -> Result < ( String , Option < String > ) , anyhow:: Error > {
108110 swc_common:: GLOBALS . set ( & Globals :: new ( ) , || {
111+ let unresolved_mark = Mark :: new ( ) ;
109112 let top_level_mark = Mark :: fresh ( Mark :: root ( ) ) ;
110113 let jsx_runtime = resolver. borrow ( ) . jsx_runtime . clone ( ) ;
111114 let specifier_is_remote = resolver. borrow ( ) . specifier_is_remote ;
115+ let is_ts =
116+ self . specifier . ends_with ( ".ts" ) || self . specifier . ends_with ( ".mts" ) || self . specifier . ends_with ( ".tsx" ) ;
112117 let is_jsx = self . specifier . ends_with ( ".tsx" ) || self . specifier . ends_with ( ".jsx" ) ;
113118 let is_dev = resolver. borrow ( ) . is_dev ;
114119 let react_options = if let Some ( jsx_import_source) = & options. jsx_import_source {
@@ -146,7 +151,7 @@ impl SWC {
146151 false
147152 } ;
148153 let passes = chain ! (
149- resolver_with_mark ( top_level_mark) ,
154+ swc_ecma_transforms :: resolver ( unresolved_mark , top_level_mark, is_ts ) ,
150155 Optional :: new( react:: jsx_src( is_dev, self . source_map. clone( ) ) , is_jsx) ,
151156 resolve_fold( resolver. clone( ) , options. strip_data_export, false ) ,
152157 decorators:: decorators( decorators:: Config {
@@ -260,7 +265,7 @@ fn get_es_config(jsx: bool) -> EsConfig {
260265 EsConfig {
261266 fn_bind : true ,
262267 export_default_from : true ,
263- import_assertions : true ,
268+ import_assertions : true ,
264269 private_in_object : true ,
265270 allow_super_outside_method : true ,
266271 jsx,
0 commit comments