1use std::{io, path, str};
5
6use thiserror::Error;
7
8#[derive(Debug, Error)]
9#[non_exhaustive]
10pub enum Error {
11 #[error("Dependency {0:?} not found")]
12 DependencyNotFound(String),
13
14 #[error("Unknown yarn.lock version: {0:?}")]
15 UnknownLockfileVersion(u8),
16
17 #[error(".yarn-state.yml package {0:?} not found")]
18 StatePackageNotFound(String),
19
20 #[error("Invalid resolution key: {0:?}")]
21 InvalidResolution(String),
22
23 #[error("Couldn't recognize the resolution to follow to replace {0:?}")]
24 AmbiguousResolution(String),
25
26 #[error("Invalid resolved: {0:?}")]
27 InvalidResolved(String),
28
29 #[error("Ambiguous resolved: {0:?}")]
30 AmbiguousResolved(String),
31
32 #[error("Conflicting descriptors: {0:?} and {1:?}")]
33 ConflictingDescriptors(String, String),
34
35 #[error("Chaste error: {0:?}")]
36 ChasteError(#[from] chaste_types::Error),
37
38 #[error("I/O error: {0:?}")]
39 IoError(#[from] io::Error),
40
41 #[error("I/O error trying to read {1:?}: {0:?}")]
42 IoInWorkspace(io::Error, path::PathBuf),
43
44 #[error("UTF-8 parsing error: {0:?}")]
45 Utf8Error(#[from] str::Utf8Error),
46
47 #[error("Yarn parser error: {0:?}")]
48 YarnParserError(#[from] yarn_lock_parser::YarnLockError),
49
50 #[error("Glob error: {0:?}")]
51 #[cfg(feature = "classic")]
52 GlobreeksError(#[from] globreeks::Error),
53
54 #[error("Walkdir error: {0:?}")]
55 #[cfg(feature = "classic")]
56 WalkdirError(#[from] walkdir::Error),
57
58 #[error("Yarn state parser error: {0:?}")]
59 #[cfg(feature = "berry")]
60 YarnStateError(#[from] yarn_state::error::Error),
61
62 #[error("SSRI error: {0:?}")]
63 SSRIError(#[from] chaste_types::SSRIError),
64
65 #[error("JSON parsing error: {0:?}")]
66 SerdeJsonError(#[from] serde_json::Error),
67}
68
69pub type Result<T, E = Error> = std::result::Result<T, E>;