diff --git a/Cargo.lock b/Cargo.lock index 64a78323c0ef..ec00cea1d0b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3774,8 +3774,11 @@ name = "wasm_test_site" version = "0.1.0" dependencies = [ "console_error_panic_hook", + "hydroflow", "wasm-bindgen", + "wasm-bindgen-futures", "wasm-bindgen-test", + "web-sys", ] [[package]] @@ -3846,7 +3849,6 @@ dependencies = [ "syn 2.0.75", "tokio", "wasm-bindgen", - "wasm-bindgen-futures", "wasm-bindgen-test", "web-sys", ] diff --git a/wasm_test_site/Cargo.toml b/wasm_test_site/Cargo.toml index 201833e0e203..9bf32fb4c69c 100644 --- a/wasm_test_site/Cargo.toml +++ b/wasm_test_site/Cargo.toml @@ -7,17 +7,17 @@ edition = "2018" [lib] crate-type = ["cdylib", "rlib"] -[features] -default = ["console_error_panic_hook"] - [dependencies] +hydroflow = { path = "../hydroflow" } wasm-bindgen = "0.2.84" +wasm-bindgen-futures = "0.4.43" +web-sys = { version = "0.3.51", features = [ "console" ] } # The `console_error_panic_hook` crate provides better debugging of panics by # logging them with `console.error`. This is great for development, but requires # all the `std::fmt` and `std::panicking` infrastructure, so isn't great for # code size when deploying. -console_error_panic_hook = { version = "0.1.7", optional = true } +console_error_panic_hook = "0.1.7" [dev-dependencies] wasm-bindgen-test = "0.3.34" diff --git a/wasm_test_site/README.md b/wasm_test_site/README.md index 6b684085003f..6279fd688ffa 100644 --- a/wasm_test_site/README.md +++ b/wasm_test_site/README.md @@ -1,3 +1,7 @@ +# Go to `www/README.md` + +--- +

wasm-pack-template

diff --git a/wasm_test_site/src/lib.rs b/wasm_test_site/src/lib.rs index 097364b401b7..4ccae8151197 100644 --- a/wasm_test_site/src/lib.rs +++ b/wasm_test_site/src/lib.rs @@ -1,15 +1,31 @@ -mod utils; - -use utils::set_panic_hook; use wasm_bindgen::prelude::*; -#[wasm_bindgen] -extern "C" { - fn alert(s: &str); +fn log(string: impl AsRef) { + web_sys::console::log_1(&JsValue::from_str(string.as_ref())); } #[wasm_bindgen] pub fn greet() { - set_panic_hook(); - alert("Hello, wasm_test_site!"); + console_error_panic_hook::set_once(); + + log("Hello, wasm_test_site!"); +} + +#[wasm_bindgen] +pub fn test_hydroflow() -> web_sys::js_sys::Promise { + console_error_panic_hook::set_once(); + + let mut df = hydroflow::hydroflow_syntax! { + // https://hydro.run/docs/hydroflow/quickstart/example_1_simplest + source_iter(0..10) -> for_each(|n| log(format!("Hello {}", n))); + }; + + wasm_bindgen_futures::future_to_promise(async move { + let work_done = df.run_available_async().await; + Ok(if work_done { + JsValue::TRUE + } else { + JsValue::FALSE + }) + }) } diff --git a/wasm_test_site/src/utils.rs b/wasm_test_site/src/utils.rs deleted file mode 100644 index b1d7929dc9c4..000000000000 --- a/wasm_test_site/src/utils.rs +++ /dev/null @@ -1,10 +0,0 @@ -pub fn set_panic_hook() { - // When the `console_error_panic_hook` feature is enabled, we can call the - // `set_panic_hook` function at least once during initialization, and then - // we will get better error messages if our code ever panics. - // - // For more details see - // https://github.com/rustwasm/console_error_panic_hook#readme - #[cfg(feature = "console_error_panic_hook")] - console_error_panic_hook::set_once(); -} diff --git a/wasm_test_site/www/README.md b/wasm_test_site/www/README.md index d658bb162bf2..e0bb5ed4374b 100644 --- a/wasm_test_site/www/README.md +++ b/wasm_test_site/www/README.md @@ -1,3 +1,15 @@ +Run once to init: +``` +npm ci +``` +Run to rebuild: +``` +npm run wasm +npm run dev +``` + +--- +

create-wasm-app

diff --git a/wasm_test_site/www/index.ts b/wasm_test_site/www/index.ts index 5364de1a1610..31168be73a8a 100644 --- a/wasm_test_site/www/index.ts +++ b/wasm_test_site/www/index.ts @@ -1,3 +1,4 @@ -import init, { greet } from "wasm_test_site"; +import init, { greet, test_hydroflow } from "wasm_test_site"; let { memory } = await init(); greet(); +test_hydroflow(); diff --git a/wasm_test_site/www/package.json b/wasm_test_site/www/package.json index f7b4eea9bea0..0b2a75af9d98 100644 --- a/wasm_test_site/www/package.json +++ b/wasm_test_site/www/package.json @@ -6,7 +6,7 @@ "type": "module", "scripts": { "build": "vite build", - "serve": "vite serve", + "dev": "vite serve", "preview": "vite preview", "wasm": "wasm-pack build ../ --target web" }, diff --git a/website_playground/Cargo.toml b/website_playground/Cargo.toml index 3337bd245d34..b985fd2db4d2 100644 --- a/website_playground/Cargo.toml +++ b/website_playground/Cargo.toml @@ -23,7 +23,6 @@ serde-wasm-bindgen = "0.4.5" syn = { version = "2.0.46", features = [ "parsing", "extra-traits" ] } tokio = { version = "1.29.0", features = [ "sync" ] } wasm-bindgen = "0.2.83" -wasm-bindgen-futures = "0.4.43" web-sys = { version = "0.3.51", features = [ "console" ] } # The `console_error_panic_hook` crate provides better debugging of panics by diff --git a/website_playground/src/lib.rs b/website_playground/src/lib.rs index f276a365ece2..f996c62b618e 100644 --- a/website_playground/src/lib.rs +++ b/website_playground/src/lib.rs @@ -281,20 +281,3 @@ pub fn send_datalog_boolean_demo(instance_name: &str, input: i32) -> Option } }) } - -#[wasm_bindgen] -pub fn test_hydroflow() -> web_sys::js_sys::Promise { - let mut df = hydroflow::hydroflow_syntax! { - // https://hydro.run/docs/hydroflow/quickstart/example_1_simplest - source_iter(0..10) -> for_each(|n| log(&format!("Hello {}", n))); - }; - - wasm_bindgen_futures::future_to_promise(async move { - let work_done = df.run_available_async().await; - Ok(if work_done { - JsValue::TRUE - } else { - JsValue::FALSE - }) - }) -}