From 932730d0e68c7cf28acd96da29f63431de351465 Mon Sep 17 00:00:00 2001 From: Konrad Borowski Date: Mon, 27 Sep 2021 19:58:04 +0200 Subject: [PATCH] wasm: avoid dependency on serde-serialize feature (#1337) Using this feature makes dependency cycles much more likely. --- Cargo.toml | 4 +++- src/wasm/client.rs | 13 +++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6233323ae..bf664a4ad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -149,7 +149,8 @@ winreg = "0.7" [target.'cfg(target_arch = "wasm32")'.dependencies] js-sys = "0.3.45" -wasm-bindgen = { version = "0.2.68", features = ["serde-serialize"] } +serde_json = "1.0" +wasm-bindgen = "0.2.68" wasm-bindgen-futures = "0.4.18" [target.'cfg(target_arch = "wasm32")'.dependencies.web-sys] @@ -169,6 +170,7 @@ features = [ ] [target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen = { version = "0.2.68", features = ["serde-serialize"] } wasm-bindgen-test = "0.3" [[example]] diff --git a/src/wasm/client.rs b/src/wasm/client.rs index bd8d762f3..26cb25338 100644 --- a/src/wasm/client.rs +++ b/src/wasm/client.rs @@ -1,5 +1,5 @@ use http::{HeaderMap, Method}; -use js_sys::Promise; +use js_sys::{Promise, JSON}; use std::{fmt, future::Future, sync::Arc}; use url::Url; use wasm_bindgen::prelude::{wasm_bindgen, UnwrapThrowExt as _}; @@ -238,11 +238,12 @@ async fn fetch(req: Request) -> crate::Result { for item in js_iter { let item = item.expect_throw("headers iterator doesn't throw"); - let v: Vec = item.into_serde().expect_throw("headers into_serde"); - resp = resp.header( - v.get(0).expect_throw("headers name"), - v.get(1).expect_throw("headers value"), - ); + let serialized_headers: String = JSON::stringify(&item) + .expect_throw("serialized headers") + .into(); + let [name, value]: [String; 2] = serde_json::from_str(&serialized_headers) + .expect_throw("deserializable serialized headers"); + resp = resp.header(name, value); } resp.body(js_resp)