diff --git a/crates/mako/src/module_graph.rs b/crates/mako/src/module_graph.rs index 2d17ed2cb..15d2f3b45 100644 --- a/crates/mako/src/module_graph.rs +++ b/crates/mako/src/module_graph.rs @@ -7,7 +7,7 @@ use petgraph::prelude::{Dfs, EdgeRef}; use petgraph::stable_graph::{StableDiGraph, WalkNeighbors}; use petgraph::visit::IntoEdgeReferences; use petgraph::Direction; -use tracing::debug; +use tracing::{debug, warn}; use crate::module::{Dependencies, Dependency, Module, ModuleId, ResolveType}; @@ -106,57 +106,78 @@ impl ModuleGraph { } pub fn clear_dependency(&mut self, from: &ModuleId, to: &ModuleId) { - let from_index = self.id_index_map.get(from).unwrap_or_else(|| { - panic!( - r#"from node "{}" does not exist in the module graph when remove edge"#, - from.id - ) - }); - - let to_index = self.id_index_map.get(to).unwrap_or_else(|| { - panic!( - r#"to node "{}" does not exist in the module graph when remove edge"#, - to.id - ) - }); + let from_index = self.id_index_map.get(from).map_or_else( + || { + warn!( + "clear from node {} does not exist in the module graph when remove edge", + from.id + ); + None + }, + Some, + ); - self.graph - .find_edge(*from_index, *to_index) - .and_then(|edge| { - self.graph.remove_edge(edge); - None::<()> - }); + let to_index = self.id_index_map.get(to).map_or_else( + || { + warn!( + "clear to node {} does not exist in the module graph when remove edge", + to.id + ); + None + }, + Some, + ); + if let (Some(from_index), Some(to_index)) = (from_index, to_index) { + self.graph + .find_edge(*from_index, *to_index) + .and_then(|edge| { + self.graph.remove_edge(edge); + None::<()> + }); + } } pub fn remove_dependency(&mut self, from: &ModuleId, to: &ModuleId, dep: &Dependency) { - let from_index = self.id_index_map.get(from).unwrap_or_else(|| { - panic!( - r#"from node "{}" does not exist in the module graph when remove edge"#, - from.id - ) - }); - - let to_index = self.id_index_map.get(to).unwrap_or_else(|| { - panic!( - r#"to node "{}" does not exist in the module graph when remove edge"#, - to.id - ) - }); - - let edge = self - .graph - .find_edge(*from_index, *to_index) - .unwrap_or_else(|| { - panic!( - r#"edge "{}" -> "{}" does not exist in the module graph when remove edge"#, - from.id, to.id - ) - }); - let deps = self.graph.edge_weight_mut(edge).unwrap(); - deps.remove(dep); + let from_index = self.id_index_map.get(from).map_or_else( + || { + warn!( + "remove from node {} does not exist in the module graph when remove edge", + from.id + ); + None + }, + Some, + ); - if deps.is_empty() { - self.graph.remove_edge(edge); + let to_index = self.id_index_map.get(to).map_or_else( + || { + warn!( + "remove to node {} does not exist in the module graph when remove edge", + to.id + ); + None + }, + Some, + ); + if let (Some(from_index), Some(to_index)) = (from_index, to_index) { + let edge = self.graph.find_edge(*from_index, *to_index).map_or_else( + || { + warn!( + "edge {} -> {} does not exist in the module graph when remove edge", + from.id, to.id + ); + None + }, + Some, + ); + if let Some(edge) = edge { + let deps = self.graph.edge_weight_mut(edge).unwrap(); + deps.remove(dep); + + if deps.is_empty() { + self.graph.remove_edge(edge); + } + } } } diff --git a/packages/mako/binding.d.ts b/packages/mako/binding.d.ts index 479963cfd..a9989c8a2 100644 --- a/packages/mako/binding.d.ts +++ b/packages/mako/binding.d.ts @@ -3,10 +3,6 @@ /* auto-generated by NAPI-RS */ -export interface TransformOutput { - code: string; - map?: string; -} export interface JsHooks { name?: string; load?: (