Skip to main content

rspack_core/dependency/
factorize_info.rs

1use rspack_cacheable::cacheable;
2use rspack_error::Diagnostic;
3use rspack_paths::ArcPathSet;
4
5use super::{BoxDependency, DependencyId};
6
7#[cacheable]
8#[derive(Debug, Clone, Default)]
9pub struct FactorizeInfo {
10  related_dep_ids: Vec<DependencyId>,
11  file_dependencies: ArcPathSet,
12  context_dependencies: ArcPathSet,
13  missing_dependencies: ArcPathSet,
14  diagnostics: Vec<Diagnostic>,
15}
16
17impl FactorizeInfo {
18  pub fn new(
19    diagnostics: Vec<Diagnostic>,
20    related_dep_ids: Vec<DependencyId>,
21    file_dependencies: ArcPathSet,
22    context_dependencies: ArcPathSet,
23    missing_dependencies: ArcPathSet,
24  ) -> Self {
25    Self {
26      related_dep_ids,
27      file_dependencies,
28      context_dependencies,
29      missing_dependencies,
30      diagnostics,
31    }
32  }
33
34  pub fn get_from(dep: &BoxDependency) -> Option<&FactorizeInfo> {
35    if let Some(d) = dep.as_context_dependency() {
36      Some(d.factorize_info())
37    } else if let Some(d) = dep.as_module_dependency() {
38      Some(d.factorize_info())
39    } else {
40      None
41    }
42  }
43
44  pub fn revoke(dep: &mut BoxDependency) -> Option<FactorizeInfo> {
45    if let Some(d) = dep.as_context_dependency_mut() {
46      Some(std::mem::take(d.factorize_info_mut()))
47    } else if let Some(d) = dep.as_module_dependency_mut() {
48      Some(std::mem::take(d.factorize_info_mut()))
49    } else {
50      None
51    }
52  }
53
54  pub fn is_success(&self) -> bool {
55    self.diagnostics.is_empty()
56  }
57
58  pub fn related_dep_ids(&self) -> &[DependencyId] {
59    &self.related_dep_ids
60  }
61
62  pub fn file_dependencies(&self) -> &ArcPathSet {
63    &self.file_dependencies
64  }
65
66  pub fn context_dependencies(&self) -> &ArcPathSet {
67    &self.context_dependencies
68  }
69
70  pub fn missing_dependencies(&self) -> &ArcPathSet {
71    &self.missing_dependencies
72  }
73
74  pub fn diagnostics(&self) -> &[Diagnostic] {
75    &self.diagnostics
76  }
77}