chrome 69 support

This commit is contained in:
Toshit Chawda 2024-09-07 11:42:11 -07:00
parent cc21e6c4a2
commit 07a304e9c6
No known key found for this signature in database
GPG key ID: 91480ED99E2B3D9D
4 changed files with 16 additions and 9 deletions

View file

@ -270,7 +270,7 @@ import initEpoxy, { EpoxyClient, EpoxyClientOptions, EpoxyHandlers, info as epox
console.time();
let resp = await epoxy_client.fetch("https://www.example.com/");
console.timeEnd();
console.log(resp, Object.fromEntries(resp.headers));
console.log(resp, resp.rawHeaders);
log(await resp.text());
}
log("done");

View file

@ -23,9 +23,7 @@ use send_wrapper::SendWrapper;
use stream_provider::{StreamProvider, StreamProviderService};
use thiserror::Error;
use utils::{
asyncread_to_readablestream_stream, convert_body, entries_of_object, is_null_body, is_redirect,
object_get, object_set, object_truthy, IncomingBody, UriExt, WasmExecutor, WispTransportRead,
WispTransportWrite,
asyncread_to_readablestream_stream, convert_body, entries_of_object, from_entries, is_null_body, is_redirect, object_get, object_set, object_truthy, IncomingBody, UriExt, WasmExecutor, WispTransportRead, WispTransportWrite
};
use wasm_bindgen::prelude::*;
use wasm_bindgen_futures::JsFuture;
@ -556,7 +554,7 @@ impl EpoxyClient {
let headers = object_truthy(object_get(&options, "headers")).and_then(|val| {
if web_sys::Headers::instanceof(&val) {
Some(entries_of_object(&Object::from_entries(&val).ok()?))
Some(entries_of_object(&from_entries(&val).ok()?))
} else if val.is_truthy() {
Some(entries_of_object(&Object::from(val)))
} else {
@ -621,7 +619,7 @@ impl EpoxyClient {
))
})
.collect();
let response_headers = Object::from_entries(&response_headers)
let response_headers = from_entries(&response_headers)
.map_err(|_| EpoxyError::ResponseHeadersFromEntriesFailed)?;
let response_headers_raw = response.headers().clone();

View file

@ -339,6 +339,12 @@ export function ws_key() {
crypto.getRandomValues(key);
return btoa(Array.from(key).map(String.fromCharCode).join(''));
}
export function from_entries(entries){
var ret = {};
for(var i = 0; i < entries.length; i++) ret[entries[i][0]] = entries[i][1];
return ret;
}
"#)]
extern "C" {
pub fn object_get(obj: &Object, key: &str) -> JsValue;
@ -350,6 +356,9 @@ extern "C" {
fn entries_of_object_inner(obj: &Object) -> Vec<Array>;
pub fn define_property(obj: &Object, key: &str, val: JsValue);
pub fn ws_key() -> String;
#[wasm_bindgen(catch)]
pub fn from_entries(iterable: &JsValue) -> Result<Object, JsValue>;
}
pub async fn convert_body(val: JsValue) -> Result<(Uint8Array, Option<String>), JsValue> {

View file

@ -16,14 +16,14 @@ use hyper::{
body::Incoming,
upgrade::{self, Upgraded},
};
use js_sys::{ArrayBuffer, Function, Object, Uint8Array};
use js_sys::{ArrayBuffer, Function, Uint8Array};
use tokio::io::WriteHalf;
use wasm_bindgen::{prelude::*, JsError, JsValue};
use wasm_bindgen_futures::spawn_local;
use crate::{
tokioio::TokioIo,
utils::{entries_of_object, ws_key},
utils::{entries_of_object, from_entries, ws_key},
EpoxyClient, EpoxyError, EpoxyHandlers, HttpBody,
};
@ -69,7 +69,7 @@ impl EpoxyWebSocket {
}
if web_sys::Headers::instanceof(&headers)
&& let Ok(entries) = Object::from_entries(&headers)
&& let Ok(entries) = from_entries(&headers)
{
for header in entries_of_object(&entries) {
request = request.header(&header[0], &header[1]);