use std::{path::PathBuf, sync::Arc};
use crate::types;
pub struct File {
pub source: PathBuf,
pub content: Arc<str>, }
pub struct Package {
pub source: PathBuf,
pub path: types::ImportPath,
pub files: Vec<File>,
}
pub struct Module {
pub source: PathBuf,
pub manifest: ModuleManifest,
pub packages: Vec<Package>,
}
pub struct PackageUpdate {
pub source: PathBuf,
pub path: types::ImportPath,
pub files: Vec<File>,
pub update: PackageUpdateKind,
}
pub enum PackageUpdateKind {
PackageAdded,
PackageRemoved,
PackageUpdated,
}
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug)]
pub struct ModuleManifest {
pub module: types::ImportPath,
pub fennec: types::FennecVersion,
}
pub struct ModuleUpdate {
pub source: PathBuf,
pub module: types::ImportPath, pub manifest: Option<ModuleManifest>, pub packages: Vec<PackageUpdate>, pub update: ModuleUpdateKind,
}
pub enum ModuleUpdateKind {
ModuleAdded,
ModuleRemoved,
ModuleUpdated,
}