diff options
Diffstat (limited to 'cli/proc_state.rs')
-rw-r--r-- | cli/proc_state.rs | 65 |
1 files changed, 19 insertions, 46 deletions
diff --git a/cli/proc_state.rs b/cli/proc_state.rs index d62bf1f5a..3ea4214ab 100644 --- a/cli/proc_state.rs +++ b/cli/proc_state.rs @@ -28,8 +28,7 @@ use crate::npm::NpmPackageReference; use crate::npm::NpmPackageResolver; use crate::npm::NpmRegistryApi; use crate::progress_bar::ProgressBar; -use crate::resolver::ImportMapResolver; -use crate::resolver::JsxResolver; +use crate::resolver::CliResolver; use crate::tools::check; use deno_ast::MediaType; @@ -49,6 +48,7 @@ use deno_graph::create_graph; use deno_graph::source::CacheInfo; use deno_graph::source::LoadFuture; use deno_graph::source::Loader; +use deno_graph::source::Resolver; use deno_graph::ModuleKind; use deno_graph::Resolved; use deno_runtime::deno_broadcast_channel::InMemoryBroadcastChannel; @@ -88,7 +88,7 @@ pub struct Inner { pub shared_array_buffer_store: SharedArrayBufferStore, pub compiled_wasm_module_store: CompiledWasmModuleStore, pub parsed_source_cache: ParsedSourceCache, - maybe_resolver: Option<Arc<dyn deno_graph::source::Resolver + Send + Sync>>, + maybe_resolver: Option<Arc<CliResolver>>, maybe_file_watcher_reporter: Option<FileWatcherReporter>, pub node_analysis_cache: NodeAnalysisCache, pub npm_cache: NpmCache, @@ -193,22 +193,11 @@ impl ProcState { let maybe_inspector_server = cli_options.resolve_inspector_server().map(Arc::new); - let maybe_import_map_resolver = - maybe_import_map.clone().map(ImportMapResolver::new); - let maybe_jsx_resolver = cli_options - .to_maybe_jsx_import_source_config() - .map(|cfg| JsxResolver::new(cfg, maybe_import_map_resolver.clone())); - let maybe_resolver: Option< - Arc<dyn deno_graph::source::Resolver + Send + Sync>, - > = if let Some(jsx_resolver) = maybe_jsx_resolver { - // the JSX resolver offloads to the import map if present, otherwise uses - // the default Deno explicit import resolution. - Some(Arc::new(jsx_resolver)) - } else if let Some(import_map_resolver) = maybe_import_map_resolver { - Some(Arc::new(import_map_resolver)) - } else { - None - }; + let maybe_cli_resolver = CliResolver::maybe_new( + cli_options.to_maybe_jsx_import_source_config(), + maybe_import_map.clone(), + ); + let maybe_resolver = maybe_cli_resolver.map(Arc::new); let maybe_file_watcher_reporter = maybe_sender.map(|sender| FileWatcherReporter { @@ -335,12 +324,8 @@ impl ProcState { ); let maybe_locker = as_maybe_locker(self.lockfile.clone()); let maybe_imports = self.options.to_maybe_imports()?; - let maybe_resolver: Option<&dyn deno_graph::source::Resolver> = - if let Some(resolver) = &self.maybe_resolver { - Some(resolver.as_ref()) - } else { - None - }; + let maybe_resolver = + self.maybe_resolver.as_ref().map(|r| r.as_graph_resolver()); struct ProcStateLoader<'a> { inner: &'a mut cache::FetchCacher, @@ -571,13 +556,7 @@ impl ProcState { deno_core::resolve_url_or_path(referrer).unwrap() }; - let maybe_resolver: Option<&dyn deno_graph::source::Resolver> = - if let Some(resolver) = &self.maybe_resolver { - Some(resolver.as_ref()) - } else { - None - }; - if let Some(resolver) = &maybe_resolver { + if let Some(resolver) = &self.maybe_resolver { resolver.resolve(specifier, &referrer).to_result() } else { deno_core::resolve_import(specifier, referrer.as_str()) @@ -640,20 +619,14 @@ impl ProcState { loader: &mut dyn Loader, ) -> Result<deno_graph::ModuleGraph, AnyError> { let maybe_locker = as_maybe_locker(self.lockfile.clone()); - let maybe_import_map_resolver = - self.maybe_import_map.clone().map(ImportMapResolver::new); let maybe_imports = self.options.to_maybe_imports()?; - let maybe_jsx_resolver = self - .options - .to_maybe_jsx_import_source_config() - .map(|cfg| JsxResolver::new(cfg, maybe_import_map_resolver.clone())); - let maybe_resolver = if maybe_jsx_resolver.is_some() { - maybe_jsx_resolver.as_ref().map(|jr| jr.as_resolver()) - } else { - maybe_import_map_resolver - .as_ref() - .map(|im| im.as_resolver()) - }; + + let maybe_cli_resolver = CliResolver::maybe_new( + self.options.to_maybe_jsx_import_source_config(), + self.maybe_import_map.clone(), + ); + let maybe_graph_resolver = + maybe_cli_resolver.as_ref().map(|r| r.as_graph_resolver()); let analyzer = self.parsed_source_cache.as_analyzer(); let graph = create_graph( @@ -662,7 +635,7 @@ impl ProcState { deno_graph::GraphOptions { is_dynamic: false, imports: maybe_imports, - resolver: maybe_resolver, + resolver: maybe_graph_resolver, locker: maybe_locker, module_analyzer: Some(&*analyzer), reporter: None, |