keyhive_wasm 0.3.0

WebAssembly wrappers for keyhive_core
Documentation
use super::{
    access::JsAccess, agent::JsAgent, change_id::JsChangeId, event_handler::JsEventHandler,
    signed_delegation::JsSignedDelegation, signer::JsSigner,
};
use dupe::Dupe;
use keyhive_core::principal::{agent::Agent, group::delegation::Delegation};
use keyhive_crypto::signed::Signed;
use std::sync::Arc;
use wasm_bindgen::prelude::*;

#[wasm_bindgen]
#[derive(Debug, Clone, Dupe)]
pub struct Capability {
    pub(crate) who: Agent<JsSigner, JsChangeId, JsEventHandler>,
    pub(crate) proof: Arc<Signed<Delegation<JsSigner, JsChangeId, JsEventHandler>>>,
}

#[wasm_bindgen]
impl Capability {
    #[wasm_bindgen(getter)]
    pub fn who(&self) -> JsAgent {
        JsAgent(self.who.dupe())
    }

    #[wasm_bindgen(getter)]
    pub fn can(&self) -> JsAccess {
        JsAccess(self.proof.payload().can())
    }

    #[wasm_bindgen(getter)]
    pub fn proof(&self) -> JsSignedDelegation {
        self.proof.dupe().into()
    }
}