diff options
Diffstat (limited to 'cli/proc_state.rs')
-rw-r--r-- | cli/proc_state.rs | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/cli/proc_state.rs b/cli/proc_state.rs index 0ab6b3754..077f32876 100644 --- a/cli/proc_state.rs +++ b/cli/proc_state.rs @@ -28,7 +28,7 @@ use crate::npm::NpmPackageReference; use crate::npm::NpmPackageReq; use crate::npm::NpmPackageResolver; use crate::npm::RealNpmRegistryApi; -use crate::resolver::CliResolver; +use crate::resolver::CliGraphResolver; use crate::tools::check; use crate::util::progress_bar::ProgressBar; use crate::util::progress_bar::ProgressBarStyle; @@ -58,6 +58,7 @@ use deno_runtime::inspector_server::InspectorServer; use deno_runtime::permissions::PermissionsContainer; use import_map::ImportMap; use log::warn; +use std::borrow::Cow; use std::collections::HashMap; use std::collections::HashSet; use std::ops::Deref; @@ -90,7 +91,7 @@ pub struct Inner { pub shared_array_buffer_store: SharedArrayBufferStore, pub compiled_wasm_module_store: CompiledWasmModuleStore, pub parsed_source_cache: ParsedSourceCache, - pub maybe_resolver: Option<Arc<CliResolver>>, + pub resolver: Arc<CliGraphResolver>, maybe_file_watcher_reporter: Option<FileWatcherReporter>, pub node_analysis_cache: NodeAnalysisCache, pub npm_cache: NpmCache, @@ -152,7 +153,7 @@ impl ProcState { shared_array_buffer_store: Default::default(), compiled_wasm_module_store: Default::default(), parsed_source_cache: self.parsed_source_cache.reset_for_file_watcher(), - maybe_resolver: self.maybe_resolver.clone(), + resolver: self.resolver.clone(), maybe_file_watcher_reporter: self.maybe_file_watcher_reporter.clone(), node_analysis_cache: self.node_analysis_cache.clone(), npm_cache: self.npm_cache.clone(), @@ -219,11 +220,10 @@ impl ProcState { let maybe_inspector_server = cli_options.resolve_inspector_server().map(Arc::new); - let maybe_cli_resolver = CliResolver::maybe_new( + let resolver = Arc::new(CliGraphResolver::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 { @@ -286,7 +286,7 @@ impl ProcState { shared_array_buffer_store, compiled_wasm_module_store, parsed_source_cache, - maybe_resolver, + resolver, maybe_file_watcher_reporter, node_analysis_cache, npm_cache, @@ -320,8 +320,7 @@ impl ProcState { dynamic_permissions, ); let maybe_imports = self.options.to_maybe_imports()?; - let maybe_resolver = - self.maybe_resolver.as_ref().map(|r| r.as_graph_resolver()); + let resolver = self.resolver.as_graph_resolver(); let maybe_file_watcher_reporter: Option<&dyn deno_graph::source::Reporter> = if let Some(reporter) = &self.maybe_file_watcher_reporter { Some(reporter) @@ -346,7 +345,7 @@ impl ProcState { deno_graph::BuildOptions { is_dynamic, imports: maybe_imports, - resolver: maybe_resolver, + resolver: Some(resolver), module_analyzer: Some(&*analyzer), reporter: maybe_file_watcher_reporter, }, @@ -589,12 +588,14 @@ impl ProcState { // FIXME(bartlomieju): this is another hack way to provide NPM specifier // support in REPL. This should be fixed. + let resolution = self.resolver.resolve(specifier, &referrer); + if is_repl { - let specifier = self - .maybe_resolver + let specifier = resolution .as_ref() - .and_then(|resolver| resolver.resolve(specifier, &referrer).ok()) - .or_else(|| ModuleSpecifier::parse(specifier).ok()); + .ok() + .map(Cow::Borrowed) + .or_else(|| ModuleSpecifier::parse(specifier).ok().map(Cow::Owned)); if let Some(specifier) = specifier { if let Ok(reference) = NpmPackageReference::from_specifier(&specifier) { return self @@ -609,12 +610,7 @@ impl ProcState { } } - if let Some(resolver) = &self.maybe_resolver { - resolver.resolve(specifier, &referrer) - } else { - deno_core::resolve_import(specifier, referrer.as_str()) - .map_err(|err| err.into()) - } + resolution } pub fn cache_module_emits(&self) -> Result<(), AnyError> { @@ -671,12 +667,11 @@ impl ProcState { ) -> Result<deno_graph::ModuleGraph, AnyError> { let maybe_imports = self.options.to_maybe_imports()?; - let maybe_cli_resolver = CliResolver::maybe_new( + let cli_resolver = CliGraphResolver::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 graph_resolver = cli_resolver.as_graph_resolver(); let analyzer = self.parsed_source_cache.as_analyzer(); let mut graph = ModuleGraph::default(); @@ -687,7 +682,7 @@ impl ProcState { deno_graph::BuildOptions { is_dynamic: false, imports: maybe_imports, - resolver: maybe_graph_resolver, + resolver: Some(graph_resolver), module_analyzer: Some(&*analyzer), reporter: None, }, |