pub(crate) mod framing;
pub mod installation;
pub(crate) mod process;
pub(crate) mod routing;
pub(crate) fn is_js_whitespace(character: char) -> bool {
matches!(
character,
'\u{0009}'..='\u{000d}'
| '\u{0020}'
| '\u{00a0}'
| '\u{1680}'
| '\u{2000}'..='\u{200a}'
| '\u{2028}'
| '\u{2029}'
| '\u{202f}'
| '\u{205f}'
| '\u{3000}'
| '\u{feff}'
)
}
pub(crate) fn trim_js_whitespace(value: &str) -> &str {
value.trim_matches(is_js_whitespace)
}
use serde_json::Value;
use std::sync::OnceLock;
pub(crate) fn contract() -> &'static Value {
static CONTRACT: OnceLock<Value> = OnceLock::new();
CONTRACT.get_or_init(|| {
serde_json::from_str(crate::generated::CONTRACT_JSON)
.expect("the generated SDK contract must be valid JSON")
})
}
pub(crate) fn policy() -> &'static Value {
&contract()["sdkPolicy"]
}