wasm fixes
This commit is contained in:
parent
87366c7fb2
commit
80c8a62ea1
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -5741,6 +5741,7 @@ dependencies = [
|
|||||||
"async-std",
|
"async-std",
|
||||||
"async_executors",
|
"async_executors",
|
||||||
"cfg-if 1.0.0",
|
"cfg-if 1.0.0",
|
||||||
|
"console_error_panic_hook",
|
||||||
"eyre",
|
"eyre",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"jni",
|
"jni",
|
||||||
@ -5766,6 +5767,7 @@ dependencies = [
|
|||||||
"tokio-util",
|
"tokio-util",
|
||||||
"tracing",
|
"tracing",
|
||||||
"tracing-android",
|
"tracing-android",
|
||||||
|
"tracing-wasm",
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
"wasm-bindgen-futures",
|
"wasm-bindgen-futures",
|
||||||
"wasm-bindgen-test",
|
"wasm-bindgen-test",
|
||||||
|
@ -9,7 +9,7 @@ license = "LGPL-2.0-or-later OR MPL-2.0 OR (MIT AND BSD-3-Clause)"
|
|||||||
crate-type = ["rlib"]
|
crate-type = ["rlib"]
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = [ "rt-tokio", "tracing" ]
|
default = [ "tracing" ]
|
||||||
rt-async-std = [ "async-std", "async_executors/async_std", ]
|
rt-async-std = [ "async-std", "async_executors/async_std", ]
|
||||||
rt-tokio = [ "tokio", "tokio-util", "async_executors/tokio_tp", "async_executors/tokio_io", "async_executors/tokio_timer", ]
|
rt-tokio = [ "tokio", "tokio-util", "async_executors/tokio_tp", "async_executors/tokio_io", "async_executors/tokio_timer", ]
|
||||||
|
|
||||||
@ -54,14 +54,13 @@ async_executors = { version = "^0", default-features = false, features = [ "bind
|
|||||||
async-lock = "^2"
|
async-lock = "^2"
|
||||||
send_wrapper = { version = "^0.6", features = ["futures"] }
|
send_wrapper = { version = "^0.6", features = ["futures"] }
|
||||||
|
|
||||||
|
|
||||||
# Dependencies for Android
|
# Dependencies for Android
|
||||||
[target.'cfg(target_os = "android")'.dependencies]
|
[target.'cfg(target_os = "android")'.dependencies]
|
||||||
jni = "^0"
|
jni = "^0"
|
||||||
jni-sys = "^0"
|
jni-sys = "^0"
|
||||||
ndk = { version = "^0", features = ["trace"] }
|
ndk = { version = "^0", features = ["trace"] }
|
||||||
ndk-glue = { version = "^0", features = ["logger"] }
|
ndk-glue = { version = "^0", features = ["logger"] }
|
||||||
tracing-android = { version = "^0" }
|
tracing-android = { version = "^0", optional = true }
|
||||||
|
|
||||||
# Dependencies for Windows
|
# Dependencies for Windows
|
||||||
# [target.'cfg(target_os = "windows")'.dependencies]
|
# [target.'cfg(target_os = "windows")'.dependencies]
|
||||||
@ -81,9 +80,12 @@ serial_test = "^0"
|
|||||||
simplelog = { version = "^0", features=["test"] }
|
simplelog = { version = "^0", features=["test"] }
|
||||||
|
|
||||||
[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
|
[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
|
||||||
|
console_error_panic_hook = "^0"
|
||||||
wasm-bindgen-test = "^0"
|
wasm-bindgen-test = "^0"
|
||||||
wee_alloc = "^0"
|
wee_alloc = "^0"
|
||||||
wasm-logger = "^0"
|
wasm-logger = "^0"
|
||||||
|
tracing-wasm = { version = "^0" }
|
||||||
|
parking_lot = { version = "^0", features = ["wasm-bindgen"]}
|
||||||
|
|
||||||
### BUILD OPTIONS
|
### BUILD OPTIONS
|
||||||
|
|
||||||
|
@ -28,6 +28,8 @@ impl RngCore for VeilidRng {
|
|||||||
|
|
||||||
cfg_if! {
|
cfg_if! {
|
||||||
if #[cfg(target_arch = "wasm32")] {
|
if #[cfg(target_arch = "wasm32")] {
|
||||||
|
use js_sys::Math;
|
||||||
|
|
||||||
pub fn random_bytes(dest: &mut [u8]) -> EyreResult<()> {
|
pub fn random_bytes(dest: &mut [u8]) -> EyreResult<()> {
|
||||||
let len = dest.len();
|
let len = dest.len();
|
||||||
let u32len = len / 4;
|
let u32len = len / 4;
|
||||||
|
@ -3,7 +3,7 @@ use std::time::Duration;
|
|||||||
|
|
||||||
cfg_if! {
|
cfg_if! {
|
||||||
if #[cfg(target_arch = "wasm32")] {
|
if #[cfg(target_arch = "wasm32")] {
|
||||||
use async_executors::Bindgen;
|
use async_executors::{Bindgen, Timer};
|
||||||
|
|
||||||
pub async fn sleep(millis: u32) {
|
pub async fn sleep(millis: u32) {
|
||||||
Bindgen.sleep(Duration::from_millis(millis.into())).await
|
Bindgen.sleep(Duration::from_millis(millis.into())).await
|
||||||
|
@ -295,7 +295,7 @@ pub async fn test_sleep() {
|
|||||||
if #[cfg(target_arch = "wasm32")] {
|
if #[cfg(target_arch = "wasm32")] {
|
||||||
|
|
||||||
let t1 = Date::now();
|
let t1 = Date::now();
|
||||||
intf::sleep(1000).await;
|
sleep(1000).await;
|
||||||
let t2 = Date::now();
|
let t2 = Date::now();
|
||||||
assert!((t2-t1) >= 1000.0);
|
assert!((t2-t1) >= 1000.0);
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ cfg_if! {
|
|||||||
where
|
where
|
||||||
F: Future<Output = T>,
|
F: Future<Output = T>,
|
||||||
{
|
{
|
||||||
match select(Box::pin(intf::sleep(dur_ms)), Box::pin(f)).await {
|
match select(Box::pin(sleep(dur_ms)), Box::pin(f)).await {
|
||||||
Either::Left((_x, _b)) => Err(TimeoutError()),
|
Either::Left((_x, _b)) => Err(TimeoutError()),
|
||||||
Either::Right((y, _a)) => Ok(y),
|
Either::Right((y, _a)) => Ok(y),
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ cfg_if! {
|
|||||||
use js_sys::Date;
|
use js_sys::Date;
|
||||||
|
|
||||||
pub fn get_timestamp() -> u64 {
|
pub fn get_timestamp() -> u64 {
|
||||||
if utils::is_browser() {
|
if is_browser() {
|
||||||
return (Date::now() * 1000.0f64) as u64;
|
return (Date::now() * 1000.0f64) as u64;
|
||||||
} else {
|
} else {
|
||||||
panic!("WASM requires browser environment");
|
panic!("WASM requires browser environment");
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
use super::*;
|
use super::*;
|
||||||
use core::sync::atomic::{AtomicI8, Ordering};
|
use core::sync::atomic::{AtomicI8, Ordering};
|
||||||
use js_sys::{global, Reflect};
|
use js_sys::{global, Reflect};
|
||||||
|
use wasm_bindgen::prelude::*;
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -27,21 +28,21 @@ pub fn is_browser() -> bool {
|
|||||||
res
|
res
|
||||||
}
|
}
|
||||||
|
|
||||||
// pub fn is_browser_https() -> bool {
|
pub fn is_browser_https() -> bool {
|
||||||
// static CACHE: AtomicI8 = AtomicI8::new(-1);
|
static CACHE: AtomicI8 = AtomicI8::new(-1);
|
||||||
// let cache = CACHE.load(Ordering::Relaxed);
|
let cache = CACHE.load(Ordering::Relaxed);
|
||||||
// if cache != -1 {
|
if cache != -1 {
|
||||||
// return cache != 0;
|
return cache != 0;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// let res = js_sys::eval("window.location.protocol === 'https'")
|
let res = js_sys::eval("window.location.protocol === 'https'")
|
||||||
// .map(|res| res.is_truthy())
|
.map(|res| res.is_truthy())
|
||||||
// .unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
|
||||||
// CACHE.store(res as i8, Ordering::Relaxed);
|
CACHE.store(res as i8, Ordering::Relaxed);
|
||||||
|
|
||||||
// res
|
res
|
||||||
// }
|
}
|
||||||
|
|
||||||
#[derive(ThisError, Debug, Clone, Eq, PartialEq)]
|
#[derive(ThisError, Debug, Clone, Eq, PartialEq)]
|
||||||
#[error("JsValue error")]
|
#[error("JsValue error")]
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#![cfg(target_arch = "wasm32")]
|
#![cfg(target_arch = "wasm32")]
|
||||||
|
|
||||||
use veilid_tools::tests::common::*;
|
use veilid_tools::tests::common::*;
|
||||||
use veilid_tools::xx::*;
|
use veilid_tools::*;
|
||||||
use wasm_bindgen_test::*;
|
use wasm_bindgen_test::*;
|
||||||
|
|
||||||
wasm_bindgen_test_configure!(run_in_browser);
|
wasm_bindgen_test_configure!(run_in_browser);
|
||||||
@ -15,19 +15,16 @@ static SETUP_ONCE: Once = Once::new();
|
|||||||
pub fn setup() -> () {
|
pub fn setup() -> () {
|
||||||
SETUP_ONCE.call_once(|| {
|
SETUP_ONCE.call_once(|| {
|
||||||
console_error_panic_hook::set_once();
|
console_error_panic_hook::set_once();
|
||||||
|
cfg_if! {
|
||||||
|
if #[cfg(feature = "tracing")] {
|
||||||
let mut builder = tracing_wasm::WASMLayerConfigBuilder::new();
|
let mut builder = tracing_wasm::WASMLayerConfigBuilder::new();
|
||||||
builder.set_report_logs_in_timings(false);
|
builder.set_report_logs_in_timings(false);
|
||||||
builder.set_max_level(Level::TRACE);
|
builder.set_max_level(Level::TRACE);
|
||||||
builder.set_console_config(tracing_wasm::ConsoleConfig::ReportWithConsoleColor);
|
builder.set_console_config(tracing_wasm::ConsoleConfig::ReportWithConsoleColor);
|
||||||
tracing_wasm::set_as_global_default_with_config(builder.build());
|
tracing_wasm::set_as_global_default_with_config(builder.build());
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#[wasm_bindgen_test]
|
});
|
||||||
async fn run_test_dht_key() {
|
|
||||||
setup();
|
|
||||||
|
|
||||||
test_dht_key::test_all().await;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen_test]
|
#[wasm_bindgen_test]
|
||||||
@ -37,48 +34,6 @@ async fn run_test_host_interface() {
|
|||||||
test_host_interface::test_all().await;
|
test_host_interface::test_all().await;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen_test]
|
|
||||||
async fn run_test_veilid_tools() {
|
|
||||||
setup();
|
|
||||||
|
|
||||||
test_veilid_tools::test_all().await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[wasm_bindgen_test]
|
|
||||||
async fn run_test_config() {
|
|
||||||
setup();
|
|
||||||
|
|
||||||
test_veilid_config::test_all().await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[wasm_bindgen_test]
|
|
||||||
async fn run_test_connection_table() {
|
|
||||||
setup();
|
|
||||||
|
|
||||||
test_connection_table::test_all().await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[wasm_bindgen_test]
|
|
||||||
async fn run_test_table_store() {
|
|
||||||
setup();
|
|
||||||
|
|
||||||
test_table_store::test_all().await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[wasm_bindgen_test]
|
|
||||||
async fn run_test_crypto() {
|
|
||||||
setup();
|
|
||||||
|
|
||||||
test_crypto::test_all().await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[wasm_bindgen_test]
|
|
||||||
async fn run_test_envelope_receipt() {
|
|
||||||
setup();
|
|
||||||
|
|
||||||
test_envelope_receipt::test_all().await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[wasm_bindgen_test]
|
#[wasm_bindgen_test]
|
||||||
async fn run_test_async_tag_lock() {
|
async fn run_test_async_tag_lock() {
|
||||||
setup();
|
setup();
|
||||||
|
Loading…
Reference in New Issue
Block a user