use serde::de::DeserializeOwned;
use serde::Serialize;
mod options;
use options::options;
pub(crate) fn from_str<T: DeserializeOwned>(raw: &str) -> Result<T, serde_saphyr::Error> {
serde_saphyr::from_str_with_options(raw, options())
}
pub(crate) fn to_string<T: Serialize>(value: &T) -> Result<String, serde_saphyr::SerializeError> {
serde_saphyr::to_string(value)
}
pub(crate) fn convert<T: DeserializeOwned>(value: &serde_json::Value) -> Option<T> {
from_str(&to_string(value).ok()?).ok()
}
pub(crate) fn declared_version(document: &serde_json::Value) -> Option<u64> {
convert(document.get("version")?)
}
#[cfg(test)]
mod tests;