@@ -8,13 +8,15 @@ use std::{cell::RefCell, path::Path, rc::Rc};
8
8
use swc_common:: comments:: SingleThreadedComments ;
9
9
use swc_common:: errors:: { Handler , HandlerFlags } ;
10
10
use swc_common:: { chain, FileName , Globals , Mark , SourceMap } ;
11
+ use swc_ecma_transforms:: pass:: Optional ;
11
12
use swc_ecma_transforms:: proposals:: decorators;
12
- use swc_ecma_transforms:: react;
13
13
use 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 } ;
15
15
use 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 } ;
18
20
use swc_ecmascript:: visit:: { Fold , FoldWith } ;
19
21
20
22
/// Options for transpiling a module.
@@ -106,9 +108,12 @@ impl SWC {
106
108
options : & EmitOptions ,
107
109
) -> Result < ( String , Option < String > ) , anyhow:: Error > {
108
110
swc_common:: GLOBALS . set ( & Globals :: new ( ) , || {
111
+ let unresolved_mark = Mark :: new ( ) ;
109
112
let top_level_mark = Mark :: fresh ( Mark :: root ( ) ) ;
110
113
let jsx_runtime = resolver. borrow ( ) . jsx_runtime . clone ( ) ;
111
114
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" ) ;
112
117
let is_jsx = self . specifier . ends_with ( ".tsx" ) || self . specifier . ends_with ( ".jsx" ) ;
113
118
let is_dev = resolver. borrow ( ) . is_dev ;
114
119
let react_options = if let Some ( jsx_import_source) = & options. jsx_import_source {
@@ -146,7 +151,7 @@ impl SWC {
146
151
false
147
152
} ;
148
153
let passes = chain ! (
149
- resolver_with_mark ( top_level_mark) ,
154
+ swc_ecma_transforms :: resolver ( unresolved_mark , top_level_mark, is_ts ) ,
150
155
Optional :: new( react:: jsx_src( is_dev, self . source_map. clone( ) ) , is_jsx) ,
151
156
resolve_fold( resolver. clone( ) , options. strip_data_export, false ) ,
152
157
decorators:: decorators( decorators:: Config {
@@ -260,7 +265,7 @@ fn get_es_config(jsx: bool) -> EsConfig {
260
265
EsConfig {
261
266
fn_bind : true ,
262
267
export_default_from : true ,
263
- import_assertions : true ,
268
+ import_assertions : true ,
264
269
private_in_object : true ,
265
270
allow_super_outside_method : true ,
266
271
jsx,
0 commit comments