@@ -40,8 +40,9 @@ use deno_resolver::file_fetcher::PermissionedFileFetcher;
4040use deno_resolver:: file_fetcher:: PermissionedFileFetcherOptions ;
4141use deno_resolver:: graph:: DefaultDenoResolverRc ;
4242use deno_resolver:: graph:: ResolveWithGraphOptions ;
43- use deno_resolver:: loader:: PreparedModuleLoader ;
44- use deno_resolver:: loader:: PreparedModuleOrAsset ;
43+ use deno_resolver:: loader:: LoadCodeSourceErrorKind ;
44+ use deno_resolver:: loader:: LoadedModuleOrAsset ;
45+ use deno_resolver:: loader:: ModuleLoader ;
4546use deno_resolver:: loader:: RequestedModuleType ;
4647use deno_resolver:: npm:: DenoInNpmPackageChecker ;
4748use deno_semver:: SmallStackString ;
@@ -293,10 +294,7 @@ impl DenoWorkspace {
293294 resolver_factory : self . resolver_factory . clone ( ) ,
294295 npm_installer_factory : self . npm_installer_factory . clone ( ) ,
295296 parsed_source_cache : self . resolver_factory . parsed_source_cache ( ) . clone ( ) ,
296- prepared_module_loader : self
297- . resolver_factory
298- . prepared_module_loader ( ) ?
299- . clone ( ) ,
297+ module_loader : self . resolver_factory . module_loader ( ) ?. clone ( ) ,
300298 task_queue : Default :: default ( ) ,
301299 graph : deno_graph:: ModuleGraph :: new ( deno_graph:: GraphKind :: CodeOnly ) ,
302300 } )
@@ -314,8 +312,7 @@ pub struct DenoLoader {
314312 npm_installer_factory :
315313 Arc < NpmInstallerFactory < WasmHttpClient , ConsoleLogReporter , RealSys > > ,
316314 parsed_source_cache : Arc < ParsedSourceCache > ,
317- prepared_module_loader :
318- Arc < PreparedModuleLoader < DenoInNpmPackageChecker , RealSys > > ,
315+ module_loader : Arc < ModuleLoader < RealSys > > ,
319316 resolver_factory : Arc < ResolverFactory < RealSys > > ,
320317 workspace_factory : Arc < WorkspaceFactory < RealSys > > ,
321318 graph : ModuleGraph ,
@@ -501,67 +498,72 @@ impl DenoLoader {
501498 return Ok ( create_external_repsonse ( & url) ) ;
502499 }
503500
504- let maybe_prepared_module = self
505- . prepared_module_loader
506- . load_prepared_module ( & self . graph , & url, requested_module_type)
507- . await ?;
508-
509- match maybe_prepared_module {
510- Some ( PreparedModuleOrAsset :: Module ( m) ) => {
501+ match self
502+ . module_loader
503+ . load ( & self . graph , & url, None , requested_module_type)
504+ . await
505+ {
506+ Ok ( LoadedModuleOrAsset :: Module ( m) ) => {
511507 self . parsed_source_cache . free ( & m. specifier ) ;
512508 Ok ( create_module_response (
513509 & m. specifier ,
514510 m. media_type ,
515511 m. source . as_bytes ( ) ,
516512 ) )
517513 }
518- Some ( PreparedModuleOrAsset :: ExternalAsset { specifier } ) => {
514+ Ok ( LoadedModuleOrAsset :: ExternalAsset {
515+ specifier,
516+ statically_analyzable : _,
517+ } ) => {
519518 let file = self
520519 . file_fetcher
521- . fetch_bypass_permissions ( specifier)
520+ . fetch_bypass_permissions ( & specifier)
522521 . await ?;
523522 let media_type = MediaType :: from_specifier_and_headers (
524523 & file. url ,
525524 file. maybe_headers . as_ref ( ) ,
526525 ) ;
527526 Ok ( create_module_response ( & file. url , media_type, & file. source ) )
528527 }
529- None => {
530- if url. scheme ( ) == "npm" {
531- bail ! (
532- "Failed resolving '{}'\n \n Resolve the npm: specifier to a file: specifier before providing it to the loader." ,
533- url
534- )
535- }
536- let file = self . file_fetcher . fetch_bypass_permissions ( & url) . await ?;
537- let media_type = MediaType :: from_specifier_and_headers (
538- & url,
539- file. maybe_headers . as_ref ( ) ,
540- ) ;
541- match requested_module_type {
542- RequestedModuleType :: Text | RequestedModuleType :: Bytes => {
543- Ok ( create_module_response ( & file. url , media_type, & file. source ) )
528+ Err ( err) => match err. as_kind ( ) {
529+ LoadCodeSourceErrorKind :: LoadUnpreparedModule ( _) => {
530+ if url. scheme ( ) == "npm" {
531+ bail ! (
532+ "Failed resolving '{}'\n \n Resolve the npm: specifier to a file: specifier before providing it to the loader." ,
533+ url
534+ )
544535 }
545- RequestedModuleType :: Json
546- | RequestedModuleType :: None
547- | RequestedModuleType :: Other ( _) => {
548- if media_type. is_emittable ( ) {
549- let str = String :: from_utf8_lossy ( & file. source ) ;
550- let value = str. into ( ) ;
551- let source = self
552- . maybe_transpile ( & file. url , media_type, & value, None )
553- . await ?;
554- Ok ( create_module_response (
555- & file. url ,
556- media_type,
557- source. as_bytes ( ) ,
558- ) )
559- } else {
536+ let file = self . file_fetcher . fetch_bypass_permissions ( & url) . await ?;
537+ let media_type = MediaType :: from_specifier_and_headers (
538+ & url,
539+ file. maybe_headers . as_ref ( ) ,
540+ ) ;
541+ match requested_module_type {
542+ RequestedModuleType :: Text | RequestedModuleType :: Bytes => {
560543 Ok ( create_module_response ( & file. url , media_type, & file. source ) )
561544 }
545+ RequestedModuleType :: Json
546+ | RequestedModuleType :: None
547+ | RequestedModuleType :: Other ( _) => {
548+ if media_type. is_emittable ( ) {
549+ let str = String :: from_utf8_lossy ( & file. source ) ;
550+ let value = str. into ( ) ;
551+ let source = self
552+ . maybe_transpile ( & file. url , media_type, & value, None )
553+ . await ?;
554+ Ok ( create_module_response (
555+ & file. url ,
556+ media_type,
557+ source. as_bytes ( ) ,
558+ ) )
559+ } else {
560+ Ok ( create_module_response ( & file. url , media_type, & file. source ) )
561+ }
562+ }
562563 }
563564 }
564- }
565+ _ => return Err ( err. into ( ) ) ,
566+ } ,
565567 }
566568 }
567569
0 commit comments