From 34b5bc927dead442ae1169fa636f7a739a928515 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Wed, 6 Mar 2024 02:04:56 -0800 Subject: [PATCH 1/3] fix sledgehammer bindings on web --- Cargo.lock | 44 +++++++++---------- Cargo.toml | 2 +- .../interpreter/src/sledgehammer_bindings.rs | 2 +- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1d6e8ce04..81187bf71 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10135,9 +10135,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -10145,9 +10145,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -10160,9 +10160,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-cli-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806a045c4ec4ef7c3ad86dc27bcb641b84d9eeb3846200f56d7ab0885241d654" +checksum = "ca821da8c1ae6c87c5e94493939a206daa8587caff227c6032e0061a3d80817f" dependencies = [ "anyhow", "base64", @@ -10182,9 +10182,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-externref-xform" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ac5fca1d0992d2328147488169ea166bfe899c88f8ad06cf583f4c492fcf" +checksum = "102582726b35a30d53157fbf8de3d0f0fed4c40c0c7951d69a034e9ef01da725" dependencies = [ "anyhow", "walrus", @@ -10204,9 +10204,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -10214,9 +10214,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -10227,9 +10227,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-multi-value-xform" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1e019acde479e2f090fb7f14a51fa0077ec3a7bb12a56e0e888a82be7b5bd3f" +checksum = "3498e4799f43523d780ceff498f04d882a8dbc9719c28020034822e5952f32a4" dependencies = [ "anyhow", "walrus", @@ -10237,9 +10237,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-bindgen-test" @@ -10268,9 +10268,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-threads-xform" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90a2e577034352f9aa9352730fcf2562c68957f2e9b9ee70ab6379510e49e2fe" +checksum = "2d5add359b7f7d09a55299a9d29be54414264f2b8cf84f8c8fda5be9269b5dd9" dependencies = [ "anyhow", "walrus", @@ -10279,9 +10279,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-wasm-conventions" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e6b653f6820409609bda0f176e6949302307af7a7b9479cd4d4b1bdc31eb9cd" +checksum = "8c04e3607b810e76768260db3a5f2e8beb477cb089ef8726da85c8eb9bd3b575" dependencies = [ "anyhow", "walrus", @@ -10289,9 +10289,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-wasm-interpreter" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "682940195a701dbf887f20017418b8cac916a37b3f91ededec33226619e973c1" +checksum = "9ea966593c8243a33eb4d643254eb97a69de04e89462f46cf6b4f506aae89b3a" dependencies = [ "anyhow", "log", diff --git a/Cargo.toml b/Cargo.toml index 41137da2f..c07bd33d4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -94,7 +94,7 @@ slab = "0.4.2" futures-channel = "0.3.21" futures-util = { version = "0.3", default-features = false } rustc-hash = "1.1.0" -wasm-bindgen = "0.2.88" +wasm-bindgen = "0.2.92" html_parser = "0.7.0" thiserror = "1.0.40" prettyplease = { package = "prettier-please", version = "0.2", features = [ diff --git a/packages/interpreter/src/sledgehammer_bindings.rs b/packages/interpreter/src/sledgehammer_bindings.rs index 1fbdc9823..bdba48439 100644 --- a/packages/interpreter/src/sledgehammer_bindings.rs +++ b/packages/interpreter/src/sledgehammer_bindings.rs @@ -226,7 +226,7 @@ mod js { }"# } fn replace_placeholder(ptr: u32, len: u8, n: u16) { - "{els = this.stack.splice(this.stack.length - $n$); let node = this.LoadChild($ptr$, $len$); node.replaceWith(...els);}" + "{let els = this.stack.splice(this.stack.length - $n$); let node = this.LoadChild($ptr$, $len$); node.replaceWith(...els);}" } fn load_template(tmpl_id: u16, index: u16, id: u32) { "{let node = this.templates[$tmpl_id$][$index$].cloneNode(true); this.nodes[$id$] = node; this.stack.push(node);}" From f62c81ea0dff4b8173a1e36d70933154c9c7b5cd Mon Sep 17 00:00:00 2001 From: rtretter <25963632+rtretter@users.noreply.github.com> Date: Wed, 6 Mar 2024 21:16:51 +0100 Subject: [PATCH 2/3] added automatic platform detection to cli if none is passed --- Cargo.lock | 2 +- packages/cli-config/Cargo.toml | 2 +- packages/cli/src/cli/serve.rs | 24 +++++++++++++++++++++--- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 81187bf71..20c877a8a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2326,7 +2326,7 @@ dependencies = [ name = "dioxus-cli-config" version = "0.5.0-alpha.0" dependencies = [ - "cargo_toml 0.16.3", + "cargo_toml 0.18.0", "clap 4.4.18", "once_cell", "serde", diff --git a/packages/cli-config/Cargo.toml b/packages/cli-config/Cargo.toml index aee78d1c2..64992bcb6 100644 --- a/packages/cli-config/Cargo.toml +++ b/packages/cli-config/Cargo.toml @@ -13,7 +13,7 @@ clap = { version = "4.2", features = ["derive"], optional = true } serde = { version = "1.0.136", features = ["derive"] } serde_json = "1.0.79" toml = { workspace = true, optional = true } -cargo_toml = { version = "0.16.0", optional = true } +cargo_toml = { version = "0.18.0", optional = true } once_cell = "1.18.0" tracing = { workspace = true } diff --git a/packages/cli/src/cli/serve.rs b/packages/cli/src/cli/serve.rs index 3ace461ef..05b07c224 100644 --- a/packages/cli/src/cli/serve.rs +++ b/packages/cli/src/cli/serve.rs @@ -3,6 +3,7 @@ use manganis_cli_support::AssetManifest; use super::*; use std::{fs::create_dir_all, io::Write, path::PathBuf}; +use cargo_toml::Dependency::{Simple, Inherited, Detailed}; /// Run the WASM project on dev-server #[derive(Clone, Debug, Parser)] @@ -41,11 +42,28 @@ impl Serve { crate_config.set_cargo_args(self.serve.cargo_args); - let platform = self + let mut platform = self .serve - .platform - .unwrap_or(crate_config.dioxus_config.application.default_platform); + .platform; + if platform.is_none() { + if let Some(dependency) = &crate_config.manifest.dependencies.get("dioxus") { + let features = match dependency { + Inherited(detail) => detail.features.to_vec(), + Detailed(detail) => detail.features.to_vec(), + Simple(_) => vec![] + }; + + platform = features + .iter() + .next() + .and_then(|first_feature| serde_json::from_str(&format!(r#""{}""#, first_feature)).ok()); + } + } + + let platform = platform + .unwrap_or(crate_config.dioxus_config.application.default_platform); + match platform { Platform::Web => { // start the develop server From 3ffb1facf3f0c7635076dbabd95636bbb98b5dee Mon Sep 17 00:00:00 2001 From: rtretter <25963632+rtretter@users.noreply.github.com> Date: Wed, 6 Mar 2024 21:36:33 +0100 Subject: [PATCH 3/3] search for first valid platform in features --- packages/cli/src/cli/serve.rs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/packages/cli/src/cli/serve.rs b/packages/cli/src/cli/serve.rs index 05b07c224..ac60d460e 100644 --- a/packages/cli/src/cli/serve.rs +++ b/packages/cli/src/cli/serve.rs @@ -2,8 +2,8 @@ use dioxus_cli_config::Platform; use manganis_cli_support::AssetManifest; use super::*; +use cargo_toml::Dependency::{Detailed, Inherited, Simple}; use std::{fs::create_dir_all, io::Write, path::PathBuf}; -use cargo_toml::Dependency::{Simple, Inherited, Detailed}; /// Run the WASM project on dev-server #[derive(Clone, Debug, Parser)] @@ -42,28 +42,24 @@ impl Serve { crate_config.set_cargo_args(self.serve.cargo_args); - let mut platform = self - .serve - .platform; + let mut platform = self.serve.platform; if platform.is_none() { if let Some(dependency) = &crate_config.manifest.dependencies.get("dioxus") { let features = match dependency { Inherited(detail) => detail.features.to_vec(), Detailed(detail) => detail.features.to_vec(), - Simple(_) => vec![] + Simple(_) => vec![], }; platform = features .iter() - .next() - .and_then(|first_feature| serde_json::from_str(&format!(r#""{}""#, first_feature)).ok()); + .find_map(|platform| serde_json::from_str(&format!(r#""{}""#, platform)).ok()); } } - let platform = platform - .unwrap_or(crate_config.dioxus_config.application.default_platform); - + let platform = platform.unwrap_or(crate_config.dioxus_config.application.default_platform); + match platform { Platform::Web => { // start the develop server