baste64 0.1.0

A base64 codec
Documentation
use base64::prelude::*;
use wasm_bindgen::prelude::wasm_bindgen;
use wasm_bindgen::JsValue;

#[wasm_bindgen]
pub fn base64_encode(data: &[u8]) -> Result<String, JsValue> {
    Ok(BASE64_STANDARD.encode(data))
}

#[wasm_bindgen]
pub fn base64_decode(ascii: &[u8]) -> Result<Vec<u8>, JsValue> {
    BASE64_STANDARD
        .decode(ascii)
        .map_err(|e| JsValue::from_str(&e.to_string()))
}

#[cfg(test)]
mod tests {
    use wasm_bindgen_test::wasm_bindgen_test;

    use super::*;

    #[wasm_bindgen_test]
    fn test_hello_world_base64() -> Result<(), JsValue> {
        let encoded_data = b"SGVsbG8gV29ybGQ=";
        let raw_data = b"Hello World";

        let ascii = base64_encode(raw_data)?;
        assert_eq!(ascii.as_bytes(), encoded_data);

        let decoded_raw = base64_decode(ascii.as_bytes())?;
        assert_eq!(decoded_raw, raw_data);

        Ok(())
    }
}