summaryrefslogtreecommitdiff
path: root/cli/proc_state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/proc_state.rs')
-rw-r--r--cli/proc_state.rs50
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(())
}