superdoc-sdk 2.25.0

Beta Rust SDK for the SuperDoc document runtime
Documentation
//! Process and wire adapters. Protocol policy comes from the generated contract.

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"]
}