keyhive_wasm 0.3.0

WebAssembly wrappers for keyhive_core
Documentation
use beekem::operation::CgkaOperation;
use derive_more::{From, Into};
use wasm_bindgen::prelude::*;

#[wasm_bindgen(js_name = CgkaOperation)]
#[derive(Debug, Clone, Into, From)]
pub struct JsCgkaOperation(pub(crate) CgkaOperation);

#[wasm_bindgen(js_class = CgkaOperation)]
impl JsCgkaOperation {
    #[wasm_bindgen(getter)]
    pub fn variant(&self) -> String {
        match self.0 {
            CgkaOperation::Add { .. } => JsCgkaOperationVariant::Add,
            CgkaOperation::Remove { .. } => JsCgkaOperationVariant::Remove,
            CgkaOperation::Update { .. } => JsCgkaOperationVariant::Update,
        }
        .to_string()
    }
}

#[derive(Debug, Clone, Copy)]
pub enum JsCgkaOperationVariant {
    Add,
    Remove,
    Update,
}

impl std::fmt::Display for JsCgkaOperationVariant {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            JsCgkaOperationVariant::Add => write!(f, "CGKA_ADD"),
            JsCgkaOperationVariant::Remove => write!(f, "CGKA_REMOVE"),
            JsCgkaOperationVariant::Update => write!(f, "CGKA_UPDATE"),
        }
    }
}