use std::collections::HashMap;
use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
pub struct PackageManifest {
pub name: String,
pub version: String,
pub description: Option<String>,
pub dist: PackageDist,
pub dependencies: Option<HashMap<String, String>>,
pub keywords: Option<Vec<String>>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct PackageDist {
pub tarball: String,
pub shasum: Option<String>,
pub integrity: Option<String>,
}
#[derive(Debug, Deserialize)]
pub struct RegistryResponse {
pub name: String,
pub description: Option<String>,
pub versions: HashMap<String, PackageManifest>,
#[serde(rename = "dist-tags")]
pub dist_tags: Option<HashMap<String, String>>,
}
#[derive(Debug, Clone)]
pub struct LoaderConfig {
pub registry_url: String,
pub auth_token: Option<String>,
pub timeout_seconds: u64,
pub max_retries: u32,
pub verify_checksums: bool,
pub overwrite_existing: bool,
}
impl Default for LoaderConfig {
fn default() -> Self {
Self {
registry_url: "https://packages.fhir.org".to_string(),
auth_token: None,
timeout_seconds: 30,
max_retries: 3,
verify_checksums: false,
overwrite_existing: false,
}
}
}