#[cfg(feature = "git-resolver")]
pub(crate) mod cache;
#[cfg(feature = "git-resolver")]
pub(crate) mod config;
pub(crate) mod error;
#[cfg(feature = "git-resolver")]
pub(crate) mod fetch;
#[cfg(feature = "git-resolver")]
mod git;
#[cfg(feature = "git-resolver")]
pub mod lock;
#[cfg(feature = "git-resolver")]
pub(crate) mod policy;
pub(crate) mod scope;
#[cfg(feature = "git-resolver")]
pub(crate) mod trust;
pub(crate) mod types;
#[cfg(feature = "git-resolver")]
pub(crate) mod verify;
#[cfg(feature = "git-resolver")]
pub(crate) mod versions;
use async_trait::async_trait;
use semver::Version;
use crate::dependency::DependencyName;
use crate::dependency::DependencySource;
use crate::module::Module;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::config::GitPlatform;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::config::LargeFileWarning;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::config::LargeFileWarningError;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::config::ModulesConfig;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::config::TransferLimit;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::config::TransferLimitError;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::config::TrustMode;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::error::GitRefKind;
pub use crate::resolver::error::MissingFileKind;
pub use crate::resolver::error::ResolverError;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::git::CacheCleanStats;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::git::GitResolver;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::git::GitResolverBuilder;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::git::VerifyLockedReport;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::policy::ResolverPolicy;
pub use crate::resolver::scope::DependencyScope;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::trust::TrustStore;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::trust::TrustStoreError;
#[cfg(feature = "git-resolver")]
pub use crate::resolver::trust::TrustedIdentity;
pub use crate::resolver::types::MaterializedFile;
pub use crate::resolver::types::ResolvedDependency;
pub use crate::resolver::types::ResolvedModule;
pub use crate::resolver::types::ResolvedTree;
use crate::symbolic_path::SymbolicPath;
#[async_trait]
pub trait Resolver: std::fmt::Debug + Send + Sync {
async fn materialize(
&self,
consumer: &Module,
path: &SymbolicPath,
) -> Result<MaterializedFile, ResolverError>;
async fn resolve_tree(&self, consumer: &Module) -> Result<ResolvedTree, ResolverError>;
async fn discover_versions(
&self,
name: &DependencyName,
source: &DependencySource,
scope: DependencyScope,
) -> Result<Vec<Version>, ResolverError>;
}