pnp 0.12.7

Resolution primitives for Yarn PnP
Documentation
use std::path::PathBuf;

use thiserror::Error;

use crate::PackageLocator;

#[derive(Debug, Clone, PartialEq, Error)]
pub enum Error {
    #[error(transparent)]
    BadSpecifier(Box<BadSpecifier>),

    #[error(transparent)]
    FailedManifestHydration(Box<FailedManifestHydration>),

    #[error(transparent)]
    MissingPeerDependency(Box<MissingPeerDependency>),

    #[error(transparent)]
    UndeclaredDependency(Box<UndeclaredDependency>),

    #[error(transparent)]
    MissingDependency(Box<MissingDependency>),
}

#[derive(Debug, Clone, PartialEq, Error)]
#[error("{message}")]
pub struct BadSpecifier {
    pub message: String,
    pub specifier: String,
}

#[derive(Debug, Clone, PartialEq, Error)]
#[error("{message}")]
pub struct FailedManifestHydration {
    pub message: String,
    pub manifest_path: PathBuf,
}

#[derive(Debug, Clone, PartialEq, Error)]
#[error("{message}")]
pub struct MissingPeerDependency {
    pub message: String,
    pub request: String,

    pub dependency_name: String,

    pub issuer_locator: PackageLocator,
    pub issuer_path: PathBuf,

    pub broken_ancestors: Vec<PackageLocator>,
}

#[derive(Debug, Clone, PartialEq, Error)]
#[error("{message}")]
pub struct UndeclaredDependency {
    pub message: String,
    pub request: String,

    pub dependency_name: String,

    pub issuer_locator: PackageLocator,
    pub issuer_path: PathBuf,
}

#[derive(Debug, Clone, PartialEq, Error)]
#[error("{message}")]
pub struct MissingDependency {
    pub message: String,
    pub request: String,

    pub dependency_locator: PackageLocator,
    pub dependency_name: String,

    pub issuer_locator: PackageLocator,
    pub issuer_path: PathBuf,
}