@@ -17,7 +17,6 @@ use deno_ast::EmitOptions;
1717use deno_ast:: MediaType ;
1818use deno_ast:: ModuleSpecifier ;
1919use deno_config:: workspace:: TsTypeLib ;
20- use deno_core:: RequestedModuleType ;
2120use deno_core:: error:: AnyError ;
2221use deno_core:: futures:: FutureExt as _;
2322use deno_core:: resolve_url_or_path;
@@ -31,6 +30,9 @@ use deno_resolver::graph::ResolveWithGraphOptions;
3130use deno_resolver:: loader:: LoadCodeSourceError ;
3231use deno_resolver:: loader:: LoadCodeSourceErrorKind ;
3332use deno_resolver:: loader:: LoadPreparedModuleErrorKind ;
33+ use deno_resolver:: loader:: LoadedModuleOrAsset ;
34+ use deno_resolver:: loader:: LoadedModuleSource ;
35+ use deno_resolver:: loader:: RequestedModuleType ;
3436use deno_resolver:: npm:: managed:: ResolvePkgFolderFromDenoModuleError ;
3537use deno_runtime:: deno_permissions:: PermissionsContainer ;
3638use deno_semver:: npm:: NpmPackageReqReference ;
@@ -52,11 +54,11 @@ use crate::args::Flags;
5254use crate :: args:: PackageHandling ;
5355use crate :: args:: SourceMapType ;
5456use crate :: factory:: CliFactory ;
57+ use crate :: file_fetcher:: CliFileFetcher ;
5558use crate :: graph_container:: MainModuleGraphContainer ;
5659use crate :: graph_container:: ModuleGraphContainer ;
5760use crate :: graph_container:: ModuleGraphUpdatePermit ;
58- use crate :: module_loader:: CliModuleLoader ;
59- use crate :: module_loader:: CliModuleLoaderError ;
61+ use crate :: module_loader:: CliDenoResolverModuleLoader ;
6062use crate :: module_loader:: ModuleLoadPreparer ;
6163use crate :: module_loader:: PrepareModuleLoadOptions ;
6264use crate :: node:: CliNodeResolver ;
@@ -87,10 +89,7 @@ pub async fn bundle(
8789 let npm_resolver = factory. npm_resolver ( ) . await ?;
8890 let node_resolver = factory. node_resolver ( ) . await ?;
8991 let cli_options = factory. cli_options ( ) ?;
90- let module_loader = factory
91- . create_module_loader_factory ( )
92- . await ?
93- . create_cli_module_loader ( root_permissions. clone ( ) ) ;
92+ let module_loader = factory. resolver_factory ( ) ?. module_loader ( ) ?;
9493 let sys = factory. sys ( ) ;
9594 let init_cwd = cli_options. initial_cwd ( ) . to_path_buf ( ) ;
9695 let module_graph_container =
@@ -99,6 +98,7 @@ pub async fn bundle(
9998 let ( on_end_tx, on_end_rx) = tokio:: sync:: mpsc:: channel ( 10 ) ;
10099 #[ allow( clippy:: arc_with_non_send_sync) ]
101100 let plugin_handler = Arc :: new ( DenoPluginHandler {
101+ file_fetcher : factory. file_fetcher ( ) ?. clone ( ) ,
102102 resolver : resolver. clone ( ) ,
103103 module_load_preparer,
104104 module_graph_container,
@@ -470,23 +470,24 @@ enum BundleError {
470470
471471fn requested_type_from_map (
472472 map : & IndexMap < String , String > ,
473- ) -> RequestedModuleType {
473+ ) -> RequestedModuleType < ' _ > {
474474 let type_ = map. get ( "type" ) . map ( |s| s. as_str ( ) ) ;
475475 match type_ {
476476 Some ( "json" ) => RequestedModuleType :: Json ,
477477 Some ( "bytes" ) => RequestedModuleType :: Bytes ,
478478 Some ( "text" ) => RequestedModuleType :: Text ,
479- Some ( other) => RequestedModuleType :: Other ( other. to_string ( ) . into ( ) ) ,
479+ Some ( other) => RequestedModuleType :: Other ( other) ,
480480 None => RequestedModuleType :: None ,
481481 }
482482}
483483
484484pub struct DenoPluginHandler {
485+ file_fetcher : Arc < CliFileFetcher > ,
485486 resolver : Arc < CliResolver > ,
486487 module_load_preparer : Arc < ModuleLoadPreparer > ,
487488 module_graph_container : Arc < MainModuleGraphContainer > ,
488489 permissions : PermissionsContainer ,
489- module_loader : CliModuleLoader < MainModuleGraphContainer > ,
490+ module_loader : Arc < CliDenoResolverModuleLoader > ,
490491 externals_matcher : Option < ExternalsMatcher > ,
491492 on_end_tx : tokio:: sync:: mpsc:: Sender < esbuild_client:: OnEndArgs > ,
492493}
@@ -642,7 +643,10 @@ fn import_kind_to_resolution_mode(
642643pub enum BundleLoadError {
643644 #[ class( inherit) ]
644645 #[ error( transparent) ]
645- CliModuleLoader ( #[ from] CliModuleLoaderError ) ,
646+ Fetch ( #[ from] deno_resolver:: file_fetcher:: FetchError ) ,
647+ #[ class( inherit) ]
648+ #[ error( transparent) ]
649+ LoadCodeSource ( #[ from] LoadCodeSourceError ) ,
646650 #[ class( inherit) ]
647651 #[ error( transparent) ]
648652 ResolveUrlOrPath ( #[ from] deno_path_util:: ResolveUrlOrPathError ) ,
@@ -666,9 +670,7 @@ pub enum BundleLoadError {
666670impl BundleLoadError {
667671 pub fn is_unsupported_media_type ( & self ) -> bool {
668672 match self {
669- BundleLoadError :: CliModuleLoader (
670- CliModuleLoaderError :: LoadCodeSource ( LoadCodeSourceError ( e) ) ,
671- ) => match & * * e {
673+ BundleLoadError :: LoadCodeSource ( e) => match e. as_kind ( ) {
672674 LoadCodeSourceErrorKind :: LoadPreparedModule ( e) => match e. as_kind ( ) {
673675 LoadPreparedModuleErrorKind :: Graph ( e) => matches ! (
674676 e. error. as_kind( ) ,
@@ -808,7 +810,7 @@ impl DenoPluginHandler {
808810 async fn bundle_load (
809811 & self ,
810812 specifier : & str ,
811- requested_type : & RequestedModuleType ,
813+ requested_type : & RequestedModuleType < ' _ > ,
812814 ) -> Result < Option < ( Vec < u8 > , esbuild_client:: BuiltinLoader ) > , BundleLoadError >
813815 {
814816 log:: debug!(
@@ -862,10 +864,24 @@ impl DenoPluginHandler {
862864 }
863865 ( specifier, media_type, media_type_to_loader ( media_type) )
864866 } ;
865- let loaded = self
867+ let graph = self . module_graph_container . graph ( ) ;
868+ let module_or_asset = self
866869 . module_loader
867- . load_module_source ( & specifier, None , requested_type)
870+ . load ( & graph , & specifier, None , requested_type)
868871 . await ?;
872+ let loaded_code = match module_or_asset {
873+ LoadedModuleOrAsset :: Module ( loaded_module) => loaded_module. source ,
874+ LoadedModuleOrAsset :: ExternalAsset {
875+ specifier,
876+ statically_analyzable : _,
877+ } => LoadedModuleSource :: ArcBytes (
878+ self
879+ . file_fetcher
880+ . fetch ( & specifier, & self . permissions )
881+ . await ?
882+ . source ,
883+ ) ,
884+ } ;
869885
870886 if matches ! (
871887 media_type,
@@ -877,20 +893,16 @@ impl DenoPluginHandler {
877893 | MediaType :: Cts
878894 | MediaType :: Jsx
879895 | MediaType :: Tsx
880- ) && !self
881- . module_graph_container
882- . graph ( )
883- . roots
884- . contains ( & specifier)
896+ ) && !graph. roots . contains ( & specifier)
885897 {
886898 let code = self . apply_transform (
887899 & specifier,
888900 media_type,
889- std:: str:: from_utf8 ( loaded . code . as_bytes ( ) ) ?,
901+ std:: str:: from_utf8 ( loaded_code . as_bytes ( ) ) ?,
890902 ) ?;
891903 Ok ( Some ( ( code. into_bytes ( ) , loader) ) )
892904 } else {
893- Ok ( Some ( ( loaded . code . as_bytes ( ) . to_vec ( ) , loader) ) )
905+ Ok ( Some ( ( loaded_code . as_bytes ( ) . to_vec ( ) , loader) ) )
894906 }
895907 }
896908
0 commit comments