diff options
Diffstat (limited to 'cli/proc_state.rs')
-rw-r--r-- | cli/proc_state.rs | 50 |
1 files changed, 12 insertions, 38 deletions
diff --git a/cli/proc_state.rs b/cli/proc_state.rs index 2612af75b..d161a3334 100644 --- a/cli/proc_state.rs +++ b/cli/proc_state.rs @@ -75,7 +75,7 @@ pub struct ProcState(Arc<Inner>); pub struct Inner { pub dir: DenoDir, - pub file_fetcher: Arc<FileFetcher>, + pub file_fetcher: FileFetcher, pub http_client: HttpClient, pub options: Arc<CliOptions>, pub emit_cache: EmitCache, @@ -145,38 +145,6 @@ impl ProcState { Ok(ps) } - /// Reset all runtime state to its default. This should be used on file - /// watcher restarts. - pub fn reset_for_file_watcher(&mut self) { - self.0 = Arc::new(Inner { - dir: self.dir.clone(), - options: self.options.clone(), - emit_cache: self.emit_cache.clone(), - emit_options_hash: self.emit_options_hash, - emit_options: self.emit_options.clone(), - file_fetcher: self.file_fetcher.clone(), - http_client: self.http_client.clone(), - graph_data: Default::default(), - lockfile: self.lockfile.clone(), - maybe_import_map: self.maybe_import_map.clone(), - maybe_inspector_server: self.maybe_inspector_server.clone(), - root_cert_store: self.root_cert_store.clone(), - blob_store: Default::default(), - broadcast_channel: Default::default(), - 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(), - maybe_file_watcher_reporter: self.maybe_file_watcher_reporter.clone(), - node_analysis_cache: self.node_analysis_cache.clone(), - npm_cache: self.npm_cache.clone(), - npm_resolver: self.npm_resolver.clone(), - cjs_resolutions: Default::default(), - progress_bar: self.progress_bar.clone(), - node_std_graph_prepared: AtomicBool::new(false), - }); - } - async fn build_with_sender( cli_options: Arc<CliOptions>, maybe_sender: Option<tokio::sync::mpsc::UnboundedSender<Vec<PathBuf>>>, @@ -268,7 +236,7 @@ impl ProcState { .write_hashable(&emit_options) .finish(), emit_options, - file_fetcher: Arc::new(file_fetcher), + file_fetcher, http_client, graph_data: Default::default(), lockfile, @@ -303,6 +271,7 @@ impl ProcState { lib: TsTypeLib, root_permissions: PermissionsContainer, dynamic_permissions: PermissionsContainer, + reload_on_watch: bool, ) -> Result<(), AnyError> { log::debug!("Preparing module load."); let _pb_clear_guard = self.progress_bar.clear_guard(); @@ -311,7 +280,7 @@ impl ProcState { r.scheme() == "npm" && NpmPackageReference::from_specifier(r).is_ok() }); - if !has_root_npm_specifier { + if !reload_on_watch && !has_root_npm_specifier { let graph_data = self.graph_data.read(); if self.options.type_check_mode() == TypeCheckMode::None || graph_data.is_type_checked(&roots, &lib) @@ -345,6 +314,7 @@ impl ProcState { struct ProcStateLoader<'a> { inner: &'a mut cache::FetchCacher, graph_data: Arc<RwLock<GraphData>>, + reload: bool, } impl Loader for ProcStateLoader<'_> { fn get_cache_info( @@ -361,7 +331,9 @@ impl ProcState { let graph_data = self.graph_data.read(); let found_specifier = graph_data.follow_redirect(specifier); match graph_data.get(&found_specifier) { - Some(_) => Box::pin(futures::future::ready(Err(anyhow!("")))), + Some(_) if !self.reload => { + Box::pin(futures::future::ready(Err(anyhow!("")))) + } _ => self.inner.load(specifier, is_dynamic), } } @@ -369,6 +341,7 @@ impl ProcState { let mut loader = ProcStateLoader { inner: &mut cache, graph_data: self.graph_data.clone(), + reload: reload_on_watch, }; let maybe_file_watcher_reporter: Option<&dyn deno_graph::source::Reporter> = @@ -407,7 +380,7 @@ impl ProcState { let (npm_package_reqs, has_node_builtin_specifier) = { let mut graph_data = self.graph_data.write(); - graph_data.add_graph(&graph); + graph_data.add_graph(&graph, reload_on_watch); let check_js = self.options.check_js(); graph_data .check( @@ -506,6 +479,7 @@ impl ProcState { lib, PermissionsContainer::allow_all(), PermissionsContainer::allow_all(), + false, ) .await } @@ -519,7 +493,7 @@ impl ProcState { let node_std_graph = self .create_graph(vec![node::MODULE_ALL_URL.clone()]) .await?; - self.graph_data.write().add_graph(&node_std_graph); + self.graph_data.write().add_graph(&node_std_graph, false); self.node_std_graph_prepared.store(true, Ordering::Relaxed); Ok(()) } |