fob_graph/
external_dep.rs

1use serde::{Deserialize, Serialize};
2
3use super::ModuleId;
4
5/// Represents an external dependency (e.g. npm package) and modules that import it.
6#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
7pub struct ExternalDependency {
8    pub specifier: String,
9    pub importers: Vec<ModuleId>,
10}
11
12impl ExternalDependency {
13    pub fn new(specifier: impl Into<String>) -> Self {
14        Self {
15            specifier: specifier.into(),
16            importers: Vec::new(),
17        }
18    }
19
20    pub fn push_importer(&mut self, module_id: ModuleId) {
21        self.importers.push(module_id);
22    }
23
24    pub fn extend_importers<I>(&mut self, iter: I)
25    where
26        I: IntoIterator<Item = ModuleId>,
27    {
28        self.importers.extend(iter);
29    }
30}