link-common 0.5.2-rc.2

Shared Rust implementation for KalamDB link crates
Documentation
use wasm_bindgen::prelude::*;

use crate::models::FileRef;

fn parse_file_ref(file_ref_json: &str) -> Result<FileRef, JsValue> {
    FileRef::from_json(file_ref_json).ok_or_else(|| JsValue::from_str("invalid FileRef JSON"))
}

#[wasm_bindgen(js_name = fileRefDownloadUrl)]
pub fn file_ref_download_url(
    file_ref_json: &str,
    base_url: &str,
    namespace: &str,
    table: &str,
) -> Result<String, JsValue> {
    Ok(parse_file_ref(file_ref_json)?.download_url(base_url, namespace, table))
}

#[wasm_bindgen(js_name = fileRefRelativeUrl)]
pub fn file_ref_relative_url(
    file_ref_json: &str,
    namespace: &str,
    table: &str,
) -> Result<String, JsValue> {
    Ok(parse_file_ref(file_ref_json)?.relative_url(namespace, table))
}

#[wasm_bindgen(js_name = fileRefStoredName)]
pub fn file_ref_stored_name(file_ref_json: &str) -> Result<String, JsValue> {
    Ok(parse_file_ref(file_ref_json)?.stored_name())
}

#[wasm_bindgen(js_name = fileRefRelativePath)]
pub fn file_ref_relative_path(file_ref_json: &str) -> Result<String, JsValue> {
    Ok(parse_file_ref(file_ref_json)?.relative_path())
}