diff --git a/lib/api/src/js/as_js.rs b/lib/api/src/js/as_js.rs index 370be4520b5..8aca92aa918 100644 --- a/lib/api/src/js/as_js.rs +++ b/lib/api/src/js/as_js.rs @@ -36,18 +36,11 @@ pub trait AsJs: Sized { pub fn param_from_js(ty: &Type, js_val: &JsValue) -> Value { match ty { Type::I32 => Value::I32(js_val.as_f64().unwrap() as _), - Type::I64 => { - let number = js_val.as_f64().map(|f| f as i64).unwrap_or_else(|| { - if js_val.is_bigint() { - // To support BigInt - let big_num: u128 = js_sys::BigInt::from(js_val.clone()).try_into().unwrap(); - big_num as i64 - } else { - (js_sys::Number::from(js_val.clone()).as_f64().unwrap()) as i64 - } - }); - Value::I64(number) - } + Type::I64 => Value::I64(if js_val.is_bigint() { + js_val.clone().try_into().unwrap() + } else { + js_val.as_f64().unwrap() as _ + }), Type::F32 => Value::F32(js_val.as_f64().unwrap() as _), Type::F64 => Value::F64(js_val.as_f64().unwrap()), Type::V128 => {