fob_graph/analysis/
trace.rs

1use serde::{Deserialize, Serialize};
2
3use crate::{ModuleId, SourceSpan};
4
5#[derive(Debug, Clone, Serialize, Deserialize, Default)]
6pub struct TransformationTrace {
7    pub renames: Vec<RenameEvent>,
8    pub imports: Vec<ImportResolution>,
9    pub warnings: Vec<String>,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct RenameEvent {
14    pub module: ModuleId,
15    pub phase: RenamePhase,
16    pub original: String,
17    pub renamed: String,
18    pub span: SourceSpan,
19}
20
21#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
22pub enum RenamePhase {
23    ScopeHoisting,
24    Deconflicting,
25    Minification,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
29pub struct ImportResolution {
30    pub module: ModuleId,
31    pub specifier: String,
32    pub local: Option<String>,
33    pub renamed: Option<String>,
34    pub outcome: ImportOutcome,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub enum ImportOutcome {
39    Internal(ModuleId),
40    External(String),
41    Missing,
42}