native/src/variational_asset/wasm.rs (24 lines of code) (raw):
// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
//
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
use crate::{Metadata, Tag, VariationalAsset};
// simplified versions of methods for the benefit only of wasm_bind
#[wasm_bindgen]
impl VariationalAsset {
/// WASM-friendly version of `from_slice`; remaps its errors as `JsValue`.
pub fn wasm_from_slice(glb: &[u8], tag: Option<Tag>) -> Result<VariationalAsset, JsValue> {
VariationalAsset::from_slice(glb, tag.as_ref(), None).map_err(JsValue::from)
}
/// WASM-friendly version of `meld``; remaps its errors as `JsValue`.
pub fn wasm_meld(
base: &VariationalAsset,
melded: &VariationalAsset,
) -> Result<VariationalAsset, JsValue> {
VariationalAsset::meld(base, melded).map_err(JsValue::from)
}
/// WASM-friendly version of `glb()`; returns an ownable `Vec<u8>` instead of a `&[u8]` slice.
pub fn wasm_glb(&self) -> Vec<u8> {
self.glb.to_owned()
}
/// WASM-friendly version of `default_tag()`; returns a clone of the tag
pub fn wasm_default_tag(&self) -> Tag {
self.default_tag.clone()
}
/// WASM-friendly version of `metadata()`; returns a clone of our metadata
pub fn wasm_metadata(&self) -> Metadata {
self.metadata.clone()
}
}