@@ -26,7 +26,7 @@ use graph::{AggregatedGraph, AggregatedGraphNodeContent, aggregate};
26
26
use module_options:: { ModuleOptions , ModuleOptionsContext , ModuleRuleEffect , ModuleType } ;
27
27
use tracing:: { Instrument , field:: Empty } ;
28
28
use turbo_rcstr:: { RcStr , rcstr} ;
29
- use turbo_tasks:: { FxIndexSet , ResolvedVc , ValueToString , Vc } ;
29
+ use turbo_tasks:: { ResolvedVc , ValueToString , Vc } ;
30
30
use turbo_tasks_fs:: { FileSystemPath , glob:: Glob } ;
31
31
pub use turbopack_core:: condition;
32
32
use turbopack_core:: {
@@ -55,7 +55,9 @@ use turbopack_core::{
55
55
pub use turbopack_css as css;
56
56
pub use turbopack_ecmascript as ecmascript;
57
57
use turbopack_ecmascript:: {
58
- references:: external_module:: { CachedExternalModule , CachedExternalType } ,
58
+ references:: external_module:: {
59
+ CachedExternalModule , CachedExternalTracingMode , CachedExternalType ,
60
+ } ,
59
61
tree_shake:: asset:: EcmascriptModulePartAsset ,
60
62
} ;
61
63
use turbopack_json:: JsonModuleAsset ;
@@ -789,89 +791,45 @@ impl AssetContext for ModuleAssetContext {
789
791
}
790
792
ResolveResultItem :: External { name, ty, traced } => {
791
793
let replacement = if replace_externals {
792
- let additional_refs: Vec < Vc < Box < dyn ModuleReference > > > = if let (
793
- ExternalTraced :: Traced ,
794
- Some ( tracing_root) ,
795
- ) = (
796
- traced,
797
- self . module_options_context ( )
794
+ let tracing_mode = if traced == ExternalTraced :: Traced
795
+ && let Some ( tracing_root) = self
796
+ . module_options_context ( )
798
797
. await ?
799
798
. enable_externals_tracing
800
- . clone ( ) ,
801
- ) {
802
- let externals_context = externals_tracing_module_context ( ty) ;
803
- let root_origin = tracing_root. join ( "_" ) ?;
804
-
805
- // Normalize reference type, there is no such thing as a
806
- // `ReferenceType::EcmaScriptModules(ImportPart(Evaluation))`
807
- // for externals (and otherwise, this causes duplicate
808
- // CachedExternalModules for both `ImportPart(Evaluation)` and
809
- // `ImportPart(Export("CacheProvider"))`)
810
- let reference_type = match reference_type {
811
- ReferenceType :: EcmaScriptModules ( _) => {
812
- ReferenceType :: EcmaScriptModules ( Default :: default ( ) )
813
- }
814
- ReferenceType :: CommonJs ( _) => {
815
- ReferenceType :: CommonJs ( Default :: default ( ) )
816
- }
817
- ReferenceType :: Css ( _) => {
818
- ReferenceType :: Css ( Default :: default ( ) )
819
- }
820
- ReferenceType :: Url ( _) => {
821
- ReferenceType :: Url ( Default :: default ( ) )
822
- }
823
- _ => ReferenceType :: Undefined ,
824
- } ;
825
-
826
- let external_result = externals_context
827
- . resolve_asset (
828
- root_origin. clone ( ) ,
829
- Request :: parse_string ( name. clone ( ) ) ,
830
- externals_context. resolve_options (
831
- root_origin,
832
- reference_type. clone ( ) ,
833
- ) ,
834
- reference_type,
835
- )
836
- . await ?;
799
+ . clone ( )
800
+ {
801
+ // TODO need to be attatched somewhere
837
802
838
- let modules = affecting_sources
803
+ // These are all files that are need to resolve the external
804
+ // itself, i.e. aliases etc.
805
+ let _modules = affecting_sources
839
806
. iter ( )
840
- . chain ( external_result. affecting_sources . iter ( ) )
841
807
. map ( |s| Vc :: upcast :: < Box < dyn Module > > ( RawModule :: new ( * * s) ) )
842
- . chain (
843
- external_result
844
- . primary_modules_raw_iter ( )
845
- . map ( |rvc| * rvc) ,
846
- )
847
- . collect :: < FxIndexSet < _ > > ( ) ;
848
-
849
- modules
850
- . into_iter ( )
851
808
. map ( |s| {
852
809
Vc :: upcast :: < Box < dyn ModuleReference > > (
853
810
TracedModuleReference :: new ( s) ,
854
811
)
855
- } )
856
- . collect ( )
812
+ } ) ;
813
+
814
+ CachedExternalTracingMode :: Traced {
815
+ externals_context : ResolvedVc :: upcast (
816
+ externals_tracing_module_context ( ty)
817
+ . to_resolved ( )
818
+ . await ?,
819
+ ) ,
820
+ root_origin : tracing_root. join ( "_" ) ?,
821
+ }
857
822
} else {
858
- vec ! [ ]
823
+ CachedExternalTracingMode :: Untraced
859
824
} ;
860
825
861
- replace_external ( & name, ty, additional_refs, import_externals)
862
- . await ?
826
+ replace_external ( & name, ty, import_externals, tracing_mode) . await ?
863
827
} else {
864
828
None
865
829
} ;
866
830
867
- replacement. unwrap_or_else ( || {
868
- ModuleResolveResultItem :: External {
869
- name,
870
- ty,
871
- // TODO(micshnic) remove that field entirely ?
872
- traced : None ,
873
- }
874
- } )
831
+ replacement
832
+ . unwrap_or_else ( || ModuleResolveResultItem :: External { name, ty } )
875
833
}
876
834
ResolveResultItem :: Ignore => ModuleResolveResultItem :: Ignore ,
877
835
ResolveResultItem :: Empty => ModuleResolveResultItem :: Empty ,
@@ -1000,8 +958,8 @@ pub async fn emit_asset_into_dir(
1000
958
pub async fn replace_external (
1001
959
name : & RcStr ,
1002
960
ty : ExternalType ,
1003
- additional_refs : Vec < Vc < Box < dyn ModuleReference > > > ,
1004
961
import_externals : bool ,
962
+ tracing_mode : CachedExternalTracingMode ,
1005
963
) -> Result < Option < ModuleResolveResultItem > > {
1006
964
let external_type = match ty {
1007
965
ExternalType :: CommonJs => CachedExternalType :: CommonJs ,
@@ -1020,7 +978,7 @@ pub async fn replace_external(
1020
978
}
1021
979
} ;
1022
980
1023
- let module = CachedExternalModule :: new ( name. clone ( ) , external_type, additional_refs )
981
+ let module = CachedExternalModule :: new ( name. clone ( ) , external_type, tracing_mode )
1024
982
. to_resolved ( )
1025
983
. await ?;
1026
984
0 commit comments