@@ -425,6 +425,7 @@ impl<'a> ModuleRunnerTransform<'a> {
425
425
} else {
426
426
// If the source is Some, then we need to import the module first and then export them.
427
427
let import_binding = source. map ( |source| {
428
+ self . deps . push ( source. value . to_string ( ) ) ;
428
429
let binding = self . generate_import_binding ( ctx) ;
429
430
let pattern = binding. create_binding_pattern ( ctx) ;
430
431
let imported_names = ctx. ast . vec_from_iter ( specifiers. iter ( ) . map ( |specifier| {
@@ -487,6 +488,7 @@ impl<'a> ModuleRunnerTransform<'a> {
487
488
ctx : & mut TraverseCtx < ' a > ,
488
489
) {
489
490
let ExportAllDeclaration { span, source, exported, .. } = export. unbox ( ) ;
491
+ self . deps . push ( source. value . to_string ( ) ) ;
490
492
let binding = self . generate_import_binding ( ctx) ;
491
493
let pattern = binding. create_binding_pattern ( ctx) ;
492
494
let arguments =
@@ -815,7 +817,10 @@ mod test {
815
817
816
818
use super :: ModuleRunnerTransform ;
817
819
818
- fn transform ( source_text : & str , is_jsx : bool ) -> Result < String , Vec < OxcDiagnostic > > {
820
+ fn transform (
821
+ source_text : & str ,
822
+ is_jsx : bool ,
823
+ ) -> Result < ( String , Vec < String > , Vec < String > ) , Vec < OxcDiagnostic > > {
819
824
let source_type = SourceType :: default ( ) . with_jsx ( is_jsx) ;
820
825
let allocator = Allocator :: default ( ) ;
821
826
let ret = Parser :: new ( & allocator, source_text, source_type) . parse ( ) ;
@@ -843,7 +848,7 @@ mod test {
843
848
} )
844
849
. build ( & program)
845
850
. code ;
846
- Ok ( code)
851
+ Ok ( ( code, module_runner_transform . deps , module_runner_transform . dynamic_deps ) )
847
852
}
848
853
849
854
fn format_expected_code ( source_text : & str ) -> String {
@@ -863,7 +868,7 @@ mod test {
863
868
864
869
fn test_same ( source_text : & str , expected : & str ) {
865
870
let expected = format_expected_code ( expected) ;
866
- let result = transform ( source_text, false ) . unwrap ( ) ;
871
+ let result = transform ( source_text, false ) . unwrap ( ) . 0 ;
867
872
if result != expected {
868
873
let diff = TextDiff :: from_lines ( & expected, & result) ;
869
874
print_diff_in_terminal ( & diff) ;
@@ -873,7 +878,7 @@ mod test {
873
878
874
879
fn test_same_jsx ( source_text : & str , expected : & str ) {
875
880
let expected = format_expected_code ( expected) ;
876
- let result = transform ( source_text, true ) . unwrap ( ) ;
881
+ let result = transform ( source_text, true ) . unwrap ( ) . 0 ;
877
882
if result != expected {
878
883
let diff = TextDiff :: from_lines ( & expected, & result) ;
879
884
print_diff_in_terminal ( & diff) ;
@@ -2068,4 +2073,18 @@ const c = () => {
2068
2073
};" ,
2069
2074
) ;
2070
2075
}
2076
+
2077
+ #[ test]
2078
+ fn deps ( ) {
2079
+ let code = r#"
2080
+ import a from "a";
2081
+ export { b } from "b";
2082
+ export * from "c";
2083
+ export * as d from "d";
2084
+ import("e")
2085
+ "# ;
2086
+ let result = transform ( code, false ) . unwrap ( ) ;
2087
+ assert_eq ! ( result. 1 , vec![ "a" , "b" , "c" , "d" ] ) ;
2088
+ assert_eq ! ( result. 2 , vec![ "e" ] ) ;
2089
+ }
2071
2090
}
0 commit comments